Refactor fabric.p4 INT support to allow compilation on more P4 targets

Also use constant entries for instruction mask tables to avoid
programming them at runtime.

Change-Id: Ia1ab1ecd42a433daec171f9a30bcdba3b8484061
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index e955159..5fcf0f6 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -59,7 +59,7 @@
     annotations: "@defaultonly()"
   }
   direct_resource_ids: 318787614
-  size: 256
+  size: 511
   idle_timeout_behavior: NO_TIMEOUT
 }
 tables {
@@ -82,7 +82,7 @@
     annotations: "@defaultonly()"
   }
   direct_resource_ids: 318770551
-  size: 256
+  size: 511
   idle_timeout_behavior: NO_TIMEOUT
 }
 tables {
@@ -473,8 +473,8 @@
 }
 tables {
   preamble {
-    id: 33566961
-    name: "FabricEgress.process_int_source.tb_int_source"
+    id: 33612258
+    name: "FabricEgress.process_int_main.process_int_source.tb_int_source"
     alias: "tb_int_source"
   }
   match_fields {
@@ -502,37 +502,36 @@
     match_type: TERNARY
   }
   action_refs {
-    id: 16807851
+    id: 16785857
   }
   action_refs {
     id: 16800567
     annotations: "@defaultonly()"
   }
-  direct_resource_ids: 318776637
+  direct_resource_ids: 318800047
   size: 1024
   idle_timeout_behavior: NO_TIMEOUT
 }
 tables {
   preamble {
-    id: 33602084
-    name: "FabricEgress.process_int_transit.tb_int_insert"
+    id: 33599867
+    name: "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
     alias: "tb_int_insert"
   }
   action_refs {
-    id: 16806530
+    id: 16780783
   }
   action_refs {
     id: 16800567
     annotations: "@defaultonly()"
   }
-  direct_resource_ids: 318794595
-  size: 2
+  size: 1024
   idle_timeout_behavior: NO_TIMEOUT
 }
 tables {
   preamble {
-    id: 33561642
-    name: "FabricEgress.process_int_transit.tb_int_inst_0003"
+    id: 33569467
+    name: "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003"
     alias: "tb_int_inst_0003"
   }
   match_fields {
@@ -542,65 +541,65 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16788439
+    id: 16809886
   }
   action_refs {
-    id: 16792702
+    id: 16783130
   }
   action_refs {
-    id: 16834796
+    id: 16809096
   }
   action_refs {
-    id: 16815381
+    id: 16834117
   }
   action_refs {
-    id: 16824457
+    id: 16825314
   }
   action_refs {
-    id: 16796364
+    id: 16811436
   }
   action_refs {
-    id: 16806322
+    id: 16802199
   }
   action_refs {
-    id: 16819063
+    id: 16796779
   }
   action_refs {
-    id: 16828306
+    id: 16787676
   }
   action_refs {
-    id: 16799786
+    id: 16825351
   }
   action_refs {
-    id: 16796975
+    id: 16793999
   }
   action_refs {
-    id: 16801652
+    id: 16786714
   }
   action_refs {
-    id: 16778440
+    id: 16814203
   }
   action_refs {
-    id: 16790887
+    id: 16807054
   }
   action_refs {
-    id: 16783849
+    id: 16800064
   }
   action_refs {
-    id: 16837726
+    id: 16792997
   }
   action_refs {
     id: 16800567
     annotations: "@defaultonly()"
   }
-  direct_resource_ids: 318777781
   size: 16
   idle_timeout_behavior: NO_TIMEOUT
+  is_const_table: true
 }
 tables {
   preamble {
-    id: 33571998
-    name: "FabricEgress.process_int_transit.tb_int_inst_0407"
+    id: 33595914
+    name: "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
     alias: "tb_int_inst_0407"
   }
   match_fields {
@@ -610,69 +609,69 @@
     match_type: EXACT
   }
   action_refs {
-    id: 16839298
+    id: 16819022
   }
   action_refs {
-    id: 16837018
+    id: 16804144
   }
   action_refs {
-    id: 16827414
+    id: 16829117
   }
   action_refs {
-    id: 16786021
+    id: 16797781
   }
   action_refs {
-    id: 16785131
+    id: 16813543
   }
   action_refs {
-    id: 16808652
+    id: 16824974
   }
   action_refs {
-    id: 16799296
+    id: 16815362
   }
   action_refs {
-    id: 16780668
+    id: 16835399
   }
   action_refs {
-    id: 16805625
+    id: 16834505
   }
   action_refs {
-    id: 16778495
+    id: 16811493
   }
   action_refs {
-    id: 16784981
+    id: 16825476
   }
   action_refs {
-    id: 16806353
+    id: 16799777
   }
   action_refs {
-    id: 16802140
+    id: 16829592
   }
   action_refs {
-    id: 16827601
+    id: 16805877
   }
   action_refs {
-    id: 16820295
+    id: 16780182
   }
   action_refs {
-    id: 16810955
+    id: 16799476
   }
   action_refs {
     id: 16800567
     annotations: "@defaultonly()"
   }
-  direct_resource_ids: 318818305
   size: 16
   idle_timeout_behavior: NO_TIMEOUT
+  is_const_table: true
 }
 tables {
   preamble {
-    id: 33607792
-    name: "FabricEgress.process_int_report.tb_generate_report"
+    id: 33618104
+    name: "FabricEgress.process_int_main.process_int_report.tb_generate_report"
     alias: "tb_generate_report"
   }
   action_refs {
-    id: 16814383
+    id: 16788620
   }
   action_refs {
     id: 16800567
@@ -1160,8 +1159,8 @@
 }
 actions {
   preamble {
-    id: 16807851
-    name: "FabricEgress.process_int_source.int_source_dscp"
+    id: 16785857
+    name: "FabricEgress.process_int_main.process_int_source.int_source_dscp"
     alias: "int_source_dscp"
   }
   params {
@@ -1187,16 +1186,9 @@
 }
 actions {
   preamble {
-    id: 16806280
-    name: "FabricEgress.process_int_transit.int_update_total_hop_cnt"
-    alias: "int_update_total_hop_cnt"
-  }
-}
-actions {
-  preamble {
-    id: 16806530
-    name: "FabricEgress.process_int_transit.int_transit"
-    alias: "int_transit"
+    id: 16780783
+    name: "FabricEgress.process_int_main.process_int_transit.init_metadata"
+    alias: "init_metadata"
   }
   params {
     id: 1
@@ -1206,253 +1198,232 @@
 }
 actions {
   preamble {
-    id: 16788439
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i0"
+    id: 16809886
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0"
     alias: "int_set_header_0003_i0"
   }
 }
 actions {
   preamble {
-    id: 16792702
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i1"
+    id: 16783130
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1"
     alias: "int_set_header_0003_i1"
   }
 }
 actions {
   preamble {
-    id: 16834796
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i2"
+    id: 16809096
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2"
     alias: "int_set_header_0003_i2"
   }
 }
 actions {
   preamble {
-    id: 16815381
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i3"
+    id: 16834117
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3"
     alias: "int_set_header_0003_i3"
   }
 }
 actions {
   preamble {
-    id: 16824457
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i4"
+    id: 16825314
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4"
     alias: "int_set_header_0003_i4"
   }
 }
 actions {
   preamble {
-    id: 16796364
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i5"
+    id: 16811436
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5"
     alias: "int_set_header_0003_i5"
   }
 }
 actions {
   preamble {
-    id: 16806322
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i6"
+    id: 16802199
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6"
     alias: "int_set_header_0003_i6"
   }
 }
 actions {
   preamble {
-    id: 16819063
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i7"
+    id: 16796779
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7"
     alias: "int_set_header_0003_i7"
   }
 }
 actions {
   preamble {
-    id: 16828306
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i8"
+    id: 16787676
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8"
     alias: "int_set_header_0003_i8"
   }
 }
 actions {
   preamble {
-    id: 16799786
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i9"
+    id: 16825351
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9"
     alias: "int_set_header_0003_i9"
   }
 }
 actions {
   preamble {
-    id: 16796975
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i10"
+    id: 16793999
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10"
     alias: "int_set_header_0003_i10"
   }
 }
 actions {
   preamble {
-    id: 16801652
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i11"
+    id: 16786714
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11"
     alias: "int_set_header_0003_i11"
   }
 }
 actions {
   preamble {
-    id: 16778440
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i12"
+    id: 16814203
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12"
     alias: "int_set_header_0003_i12"
   }
 }
 actions {
   preamble {
-    id: 16790887
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i13"
+    id: 16807054
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13"
     alias: "int_set_header_0003_i13"
   }
 }
 actions {
   preamble {
-    id: 16783849
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i14"
+    id: 16800064
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14"
     alias: "int_set_header_0003_i14"
   }
 }
 actions {
   preamble {
-    id: 16837726
-    name: "FabricEgress.process_int_transit.int_set_header_0003_i15"
+    id: 16792997
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15"
     alias: "int_set_header_0003_i15"
   }
 }
 actions {
   preamble {
-    id: 16839298
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i0"
+    id: 16819022
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0"
     alias: "int_set_header_0407_i0"
   }
 }
 actions {
   preamble {
-    id: 16837018
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i1"
+    id: 16804144
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1"
     alias: "int_set_header_0407_i1"
   }
 }
 actions {
   preamble {
-    id: 16827414
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i2"
+    id: 16829117
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2"
     alias: "int_set_header_0407_i2"
   }
 }
 actions {
   preamble {
-    id: 16786021
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i3"
+    id: 16797781
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3"
     alias: "int_set_header_0407_i3"
   }
 }
 actions {
   preamble {
-    id: 16785131
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i4"
+    id: 16813543
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4"
     alias: "int_set_header_0407_i4"
   }
 }
 actions {
   preamble {
-    id: 16808652
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i5"
+    id: 16824974
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5"
     alias: "int_set_header_0407_i5"
   }
 }
 actions {
   preamble {
-    id: 16799296
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i6"
+    id: 16815362
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6"
     alias: "int_set_header_0407_i6"
   }
 }
 actions {
   preamble {
-    id: 16780668
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i7"
+    id: 16835399
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7"
     alias: "int_set_header_0407_i7"
   }
 }
 actions {
   preamble {
-    id: 16805625
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i8"
+    id: 16834505
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8"
     alias: "int_set_header_0407_i8"
   }
 }
 actions {
   preamble {
-    id: 16778495
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i9"
+    id: 16811493
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9"
     alias: "int_set_header_0407_i9"
   }
 }
 actions {
   preamble {
-    id: 16784981
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i10"
+    id: 16825476
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10"
     alias: "int_set_header_0407_i10"
   }
 }
 actions {
   preamble {
-    id: 16806353
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i11"
+    id: 16799777
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11"
     alias: "int_set_header_0407_i11"
   }
 }
 actions {
   preamble {
-    id: 16802140
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i12"
+    id: 16829592
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12"
     alias: "int_set_header_0407_i12"
   }
 }
 actions {
   preamble {
-    id: 16827601
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i13"
+    id: 16805877
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13"
     alias: "int_set_header_0407_i13"
   }
 }
 actions {
   preamble {
-    id: 16820295
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i14"
+    id: 16780182
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14"
     alias: "int_set_header_0407_i14"
   }
 }
 actions {
   preamble {
-    id: 16810955
-    name: "FabricEgress.process_int_transit.int_set_header_0407_i15"
+    id: 16799476
+    name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15"
     alias: "int_set_header_0407_i15"
   }
 }
 actions {
   preamble {
-    id: 16816602
-    name: "FabricEgress.process_int_outer_encap.int_update_ipv4"
-    alias: "int_update_ipv4"
-  }
-}
-actions {
-  preamble {
-    id: 16829666
-    name: "FabricEgress.process_int_outer_encap.int_update_udp"
-    alias: "int_update_udp"
-  }
-}
-actions {
-  preamble {
-    id: 16826978
-    name: "FabricEgress.process_int_outer_encap.int_update_shim"
-    alias: "int_update_shim"
-  }
-}
-actions {
-  preamble {
-    id: 16814383
-    name: "FabricEgress.process_int_report.do_report_encapsulation"
+    id: 16788620
+    name: "FabricEgress.process_int_main.process_int_report.do_report_encapsulation"
     alias: "do_report_encapsulation"
   }
   params {
@@ -1483,15 +1454,15 @@
 }
 actions {
   preamble {
-    id: 16810741
-    name: "FabricEgress.process_int_sink.restore_header"
+    id: 16816369
+    name: "FabricEgress.process_int_main.process_int_sink.restore_header"
     alias: "restore_header"
   }
 }
 actions {
   preamble {
-    id: 16787662
-    name: "FabricEgress.process_int_sink.int_sink"
+    id: 16834566
+    name: "FabricEgress.process_int_main.process_int_sink.int_sink"
     alias: "int_sink"
   }
 }
@@ -1697,47 +1668,14 @@
 }
 direct_counters {
   preamble {
-    id: 318776637
-    name: "FabricEgress.process_int_source.counter_int_source"
+    id: 318800047
+    name: "FabricEgress.process_int_main.process_int_source.counter_int_source"
     alias: "counter_int_source"
   }
   spec {
     unit: BOTH
   }
-  direct_table_id: 33566961
-}
-direct_counters {
-  preamble {
-    id: 318794595
-    name: "FabricEgress.process_int_transit.counter_int_insert"
-    alias: "counter_int_insert"
-  }
-  spec {
-    unit: BOTH
-  }
-  direct_table_id: 33602084
-}
-direct_counters {
-  preamble {
-    id: 318777781
-    name: "FabricEgress.process_int_transit.counter_int_inst_0003"
-    alias: "counter_int_inst_0003"
-  }
-  spec {
-    unit: BOTH
-  }
-  direct_table_id: 33561642
-}
-direct_counters {
-  preamble {
-    id: 318818305
-    name: "FabricEgress.process_int_transit.counter_int_inst_0407"
-    alias: "counter_int_inst_0407"
-  }
-  spec {
-    unit: BOTH
-  }
-  direct_table_id: 33571998
+  direct_table_id: 33612258
 }
 direct_counters {
   preamble {