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-int/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
index 545564c..cc19487 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
@@ -18,30 +18,7 @@
     annotations: "@defaultonly()"
   }
   direct_resource_ids: 318787614
-  size: 256
-  idle_timeout_behavior: NO_TIMEOUT
-}
-tables {
-  preamble {
-    id: 33561619
-    name: "FabricIngress.process_set_source_sink.tb_set_sink"
-    alias: "tb_set_sink"
-  }
-  match_fields {
-    id: 1
-    name: "standard_metadata.egress_spec"
-    bitwidth: 9
-    match_type: EXACT
-  }
-  action_refs {
-    id: 16788951
-  }
-  action_refs {
-    id: 16800567
-    annotations: "@defaultonly()"
-  }
-  direct_resource_ids: 318770551
-  size: 256
+  size: 511
   idle_timeout_behavior: NO_TIMEOUT
 }
 tables {
@@ -409,8 +386,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 {
@@ -438,37 +415,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 {
@@ -478,65 +454,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 {
@@ -546,76 +522,60 @@
     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
-}
-tables {
-  preamble {
-    id: 33607792
-    name: "FabricEgress.process_int_report.tb_generate_report"
-    alias: "tb_generate_report"
-  }
-  action_refs {
-    id: 16814383
-  }
-  action_refs {
-    id: 16800567
-    annotations: "@defaultonly()"
-  }
-  size: 1024
-  idle_timeout_behavior: NO_TIMEOUT
+  is_const_table: true
 }
 tables {
   preamble {
@@ -669,13 +629,6 @@
 }
 actions {
   preamble {
-    id: 16788951
-    name: "FabricIngress.process_set_source_sink.int_set_sink"
-    alias: "int_set_sink"
-  }
-}
-actions {
-  preamble {
     id: 16798734
     name: "FabricIngress.filtering.drop"
     alias: "filtering.drop"
@@ -1048,8 +1001,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 {
@@ -1075,16 +1028,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
@@ -1094,297 +1040,230 @@
 }
 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"
-    alias: "do_report_encapsulation"
-  }
-  params {
-    id: 1
-    name: "src_mac"
-    bitwidth: 48
-  }
-  params {
-    id: 2
-    name: "mon_mac"
-    bitwidth: 48
-  }
-  params {
-    id: 3
-    name: "src_ip"
-    bitwidth: 32
-  }
-  params {
-    id: 4
-    name: "mon_ip"
-    bitwidth: 32
-  }
-  params {
-    id: 5
-    name: "mon_port"
-    bitwidth: 16
-  }
-}
-actions {
-  preamble {
-    id: 16810741
-    name: "FabricEgress.process_int_sink.restore_header"
-    alias: "restore_header"
-  }
-}
-actions {
-  preamble {
-    id: 16787662
-    name: "FabricEgress.process_int_sink.int_sink"
-    alias: "int_sink"
-  }
-}
-actions {
-  preamble {
     id: 16801047
     name: "FabricEgress.pkt_io_egress.pop_vlan"
     alias: "pkt_io_egress.pop_vlan"
@@ -1442,17 +1321,6 @@
 }
 direct_counters {
   preamble {
-    id: 318770551
-    name: "FabricIngress.process_set_source_sink.counter_set_sink"
-    alias: "counter_set_sink"
-  }
-  spec {
-    unit: BOTH
-  }
-  direct_table_id: 33561619
-}
-direct_counters {
-  preamble {
     id: 318815501
     name: "FabricIngress.filtering.ingress_port_vlan_counter"
     alias: "ingress_port_vlan_counter"
@@ -1563,47 +1431,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 {