From 9e0aa6fb54bef289db333efe77c6eca6d10e4ed1 Mon Sep 17 00:00:00 2001 From: "github-merge-queue[bot]" Date: Tue, 19 Nov 2024 20:50:24 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20p4lang/p?= =?UTF-8?q?4c@e66525a5174de1069bb682390e5819d9e23566ca=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- arch_8h_source.html | 2 +- ..._2bmv2_2common_2annotations_8h_source.html | 2 +- checksum_8h_source.html | 2 +- ...1_1_e_b_p_f_1_1_p4_t_c_target-members.html | 2 +- class_p4_1_1_e_b_p_f_1_1_p4_t_c_target.html | 10 +- class_p4_1_1_hierarchical_names-members.html | 107 +- class_p4_1_1_hierarchical_names.html | 103 +- ...1_1_hierarchical_names__inherit__graph.map | 2 +- ...1_1_hierarchical_names__inherit__graph.md5 | 2 +- ...1_1_hierarchical_names__inherit__graph.svg | 6 +- ...hierarchical_names__inherit__graph_org.svg | 6 +- class_p4_1_1_j_s_o_n_generator-members.html | 37 +- class_p4_1_1_j_s_o_n_generator.html | 34 +- class_p4_1_1_modifier__inherit__graph.map | 154 +- class_p4_1_1_modifier__inherit__graph.md5 | 2 +- class_p4_1_1_modifier__inherit__graph.svg | 558 +- class_p4_1_1_modifier__inherit__graph_org.svg | 558 +- class_p4_1_1_transform.html | 2 +- class_p4_1_1_visitor__inherit__graph.map | 32 +- class_p4_1_1_visitor__inherit__graph.md5 | 2 +- class_p4_1_1_visitor__inherit__graph.svg | 128 +- class_p4_1_1_visitor__inherit__graph_org.svg | 128 +- clot_8h_source.html | 4 +- control_8h_source.html | 544 +- converters_8h_source.html | 1011 +- ...e_2bfruntime__arch__handler_8h_source.html | 6 +- ebpf_2target_8h_source.html | 236 +- ebpf_code_gen_8h_source.html | 4 +- ebpf_pipeline_8h_source.html | 2 +- front__end__policy_8h_source.html | 2 +- ...romv1_80_2program_structure_8h_source.html | 4 +- frontends_2p4_2frontend_8h_source.html | 2 +- hash__function_8h_source.html | 4 +- hash__mask__annotations_8h_source.html | 4 +- hierarchical_names_8h_source.html | 68 +- hierarchy.html | 230 +- hierarchy.js | 2 +- inherit_graph_155.map | 6776 +++--- inherit_graph_155.md5 | 2 +- inherit_graph_155.svg | 17806 ++++++++-------- inherits.html | 2 +- intrinsic__metadata_8h_source.html | 6 +- ir-inline_8h_source.html | 359 +- json__generator_8h_source.html | 533 +- json__loader_8h_source.html | 756 +- lib_2bitrange_8h_source.html | 4 +- marshal_8h_source.html | 4 +- match__register_8h_source.html | 4 +- namemap_8h_source.html | 4 +- namespace_p4.html | 3 + node_8h_source.html | 4 +- p4_runtime_annotations_8h_source.html | 4 +- p4_runtime_arch_handler_8h_source.html | 437 +- p4_runtime_arch_standard_8h_source.html | 30 +- p4_runtime_serializer_8h_source.html | 14 +- parse__annotations_8h_source.html | 4 +- parse_annotations_8h_source.html | 288 +- parser__critical__path_8h_source.html | 2 +- phv_8h_source.html | 4 +- protobuf__ir_8h_source.html | 4 +- reachability_8h_source.html | 36 +- resource_8h_source.html | 4 +- solver_8h_source.html | 2 +- targets_2bmv2_2expr__stepper_8h_source.html | 2 +- tc_annotations_8h_source.html | 25 +- ...e_2bfruntime__arch__handler_8h_source.html | 20 +- type_checker_8h_source.html | 2 +- type_spec_converter_8h_source.html | 4 +- unique__id_8h_source.html | 4 +- validate_match_annotations_8h_source.html | 28 +- validate_string_annotations_8h_source.html | 30 +- vector_8h_source.html | 2 +- z3__solver_8h_source.html | 2 +- 73 files changed, 15638 insertions(+), 15575 deletions(-) diff --git a/arch_8h_source.html b/arch_8h_source.html index 56493a78e65..15470ee310c 100644 --- a/arch_8h_source.html +++ b/arch_8h_source.html @@ -231,7 +231,7 @@
131
132 auto *dontTranslate = action->getAnnotation("dont_translate_extern_method"_cs);
133 if (!dontTranslate) return call;
-
134 for (auto *excluded : dontTranslate->expr) {
+
134 for (auto *excluded : dontTranslate->getExpr()) {
135 auto *excludedMethod = excluded->to<IR::StringLiteral>();
136 if (!excludedMethod) {
137 error(
diff --git a/backends_2bmv2_2common_2annotations_8h_source.html b/backends_2bmv2_2common_2annotations_8h_source.html index db499e760a9..f041dfa224a 100644 --- a/backends_2bmv2_2common_2annotations_8h_source.html +++ b/backends_2bmv2_2common_2annotations_8h_source.html @@ -169,7 +169,7 @@
43
44#endif /* BACKENDS_BMV2_COMMON_ANNOTATIONS_H_ */
Parses BMV2-specific annotations.
Definition backends/bmv2/common/annotations.h:28
-
Definition parseAnnotations.h:114
+
Definition parseAnnotations.h:138
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition action.cpp:21
Definition cstring.h:80
diff --git a/checksum_8h_source.html b/checksum_8h_source.html index cce709b2783..71eaec45a7d 100644 --- a/checksum_8h_source.html +++ b/checksum_8h_source.html @@ -260,7 +260,7 @@
148
149 for (auto annot : block->annotations) {
150 if (annot->name.name == pragma) {
-
151 auto &exprs = annot->expr;
+
151 auto &exprs = annot->getExpr();
152 auto gress = exprs[0]->to<IR::StringLiteral>();
153 auto pCall = exprs[1]->to<IR::MethodCallExpression>();
154 if (pCall && !pCall->equiv(*call)) continue;
diff --git a/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target-members.html b/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target-members.html index 9a73df207bd..ff9082af117 100644 --- a/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target-members.html +++ b/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target-members.html @@ -149,7 +149,7 @@ emitUserTableUpdate(Util::SourceCodeBuilder *builder, cstring tblName, cstring key, cstring value) const override (defined in P4::EBPF::KernelSamplesTarget)P4::EBPF::KernelSamplesTargetvirtual forwardReturnCode() const override (defined in P4::EBPF::KernelSamplesTarget)P4::EBPF::KernelSamplesTargetinlinevirtual getByteOrder(P4::TypeMap *typeMap, const IR::P4Action *action, const IR::Expression *exp) const (defined in P4::EBPF::P4TCTarget)P4::EBPF::P4TCTargetinline - getByteOrderFromAnnotation(const IR::Vector< IR::Annotation > &annotations) const (defined in P4::EBPF::P4TCTarget)P4::EBPF::P4TCTargetinline + getByteOrderFromAnnotation(const IR::IAnnotated *node) (defined in P4::EBPF::P4TCTarget)P4::EBPF::P4TCTargetinlinestatic KernelSamplesTarget(bool emitTrace=false, cstring name="Linux kernel"_cs) (defined in P4::EBPF::KernelSamplesTarget)P4::EBPF::KernelSamplesTargetinlineexplicit name (defined in P4::EBPF::Target)P4::EBPF::Target P4TCTarget(bool emitTrace) (defined in P4::EBPF::P4TCTarget)P4::EBPF::P4TCTargetinlineexplicit diff --git a/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target.html b/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target.html index bef9c5eeda2..31a07a5692b 100644 --- a/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target.html +++ b/class_p4_1_1_e_b_p_f_1_1_p4_t_c_target.html @@ -122,6 +122,7 @@
P4::EBPF::P4TCTarget Class Reference
@@ -140,9 +141,6 @@ cstring getByteOrder (P4::TypeMap *typeMap, const IR::P4Action *action, const IR::Expression *exp) const   - -cstring getByteOrderFromAnnotation (const IR::Vector< IR::Annotation > &annotations) const -  - Public Member Functions inherited from P4::EBPF::KernelSamplesTarget  KernelSamplesTarget (bool emitTrace=false, cstring name="Linux kernel"_cs) @@ -197,6 +195,12 @@ virtual void emitTraceMessage (Util::SourceCodeBuilder *builder, const char *format) const   + + + +

+Static Public Member Functions

+static cstring getByteOrderFromAnnotation (const IR::IAnnotated *node)
 
diff --git a/class_p4_1_1_hierarchical_names-members.html b/class_p4_1_1_hierarchical_names-members.html index 054d65c6ecb..67468ae83a6 100644 --- a/class_p4_1_1_hierarchical_names-members.html +++ b/class_p4_1_1_hierarchical_names-members.html @@ -126,7 +126,7 @@

This is the complete list of members for P4::HierarchicalNames, including all inherited members.

Additional Inherited Members

- Public Attributes inherited from P4::EBPF::Target
- + @@ -147,69 +147,66 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
apply_visitor(const IR::Node *, const char *name=0) override (defined in P4::Transform)P4::Transformvirtual
apply_visitor(const IR::Node *n, const char *name=0) override (defined in P4::Modifier)P4::Modifiervirtual
called_by (defined in P4::Visitor)P4::Visitor
check_global(cstring) (defined in P4::Visitor)P4::Visitorinlinevirtual
clear_globals() (defined in P4::Visitor)P4::Visitorinlinevirtual
flow_merge_closure(Visitor &) (defined in P4::Visitor)P4::Visitorinlinevirtual
flow_merge_global_from(cstring) (defined in P4::Visitor)P4::Visitorinlinevirtual
flow_merge_global_to(cstring)P4::Visitorinlinevirtual
forceClone (defined in P4::Transform)P4::Transformprotected
forceClone (defined in P4::Modifier)P4::Modifierprotected
getChildContext() const (defined in P4::Visitor)P4::Visitorinline
getChildrenVisited() const (defined in P4::Visitor)P4::Visitorinline
getContext() const (defined in P4::Visitor)P4::Visitorinline
getContextDepth() const (defined in P4::Visitor)P4::Visitorinline
getCurrentNode() constP4::Visitorinline
getName(const IR::IDeclaration *decl) (defined in P4::HierarchicalNames)P4::HierarchicalNames
getOriginal() const (defined in P4::Visitor)P4::Visitorinline
getParent() const (defined in P4::Visitor)P4::Visitorinline
has_flow_joins() const (defined in P4::Visitor)P4::Visitorinlinevirtual
HierarchicalNames() (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
init_apply(const IR::Node *root) override (defined in P4::Transform)P4::Transformvirtual
init_apply(const IR::Node *root, const Context *parent_context) (defined in P4::Visitor)P4::Visitor
init_join_flows(const IR::Node *) (defined in P4::Visitor)P4::Visitorinlineprotectedvirtual
internalName (defined in P4::Visitor)P4::Visitormutable
isInContext(const IR::Node *n) const (defined in P4::Visitor)P4::Visitorinline
join_flows(const IR::Node *)P4::Visitorinlineprotectedvirtual
joinFlows (defined in P4::Visitor)P4::Visitorprotected
loop_revisit(const IR::Node *) (defined in P4::Transform)P4::Transforminlinevirtual
name() const (defined in P4::Visitor)P4::Visitorinlinevirtual
parallel_visit(IR::Vector< T > &v, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
parallel_visit(const IR::Vector< T > &v, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
parallel_visit(IR::Vector< T > &v, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
parallel_visit(const IR::Vector< T > &v, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
post_join_flows(const IR::Node *, const IR::Node *)P4::Visitorinlineprotectedvirtual
postorder(IR::P4Parser *parser) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
postorder(IR::P4Control *control) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
postorder(IR::Annotation *annotation) override (defined in P4::HierarchicalNames)P4::HierarchicalNames
postorder(IR::Node *n) (defined in P4::Transform)P4::Transforminlinevirtual
preorder(IR::P4Parser *parser) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::P4Control *control) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::P4Table *table) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::Parameter *parameter) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::Node *n) (defined in P4::Transform)P4::Transforminlinevirtual
print_context() const (defined in P4::Visitor)P4::Visitor
prune() (defined in P4::Transform)P4::Transforminline
revisit(const IR::Node *, const IR::Node *) (defined in P4::Transform)P4::Transforminlinevirtual
revisit_visited() (defined in P4::Transform)P4::Transform
getOriginal() const (defined in P4::Visitor)P4::Visitorinline
getParent() const (defined in P4::Visitor)P4::Visitorinline
has_flow_joins() const (defined in P4::Visitor)P4::Visitorinlinevirtual
HierarchicalNames() (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
init_apply(const IR::Node *root) override (defined in P4::Modifier)P4::Modifiervirtual
init_apply(const IR::Node *root, const Context *parent_context) (defined in P4::Visitor)P4::Visitor
init_join_flows(const IR::Node *) (defined in P4::Visitor)P4::Visitorinlineprotectedvirtual
internalName (defined in P4::Visitor)P4::Visitormutable
isInContext(const IR::Node *n) const (defined in P4::Visitor)P4::Visitorinline
join_flows(const IR::Node *)P4::Visitorinlineprotectedvirtual
joinFlows (defined in P4::Visitor)P4::Visitorprotected
loop_revisit(const IR::Node *) (defined in P4::Modifier)P4::Modifierinlinevirtual
name() const (defined in P4::Visitor)P4::Visitorinlinevirtual
parallel_visit(IR::Vector< T > &v, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
parallel_visit(const IR::Vector< T > &v, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
parallel_visit(IR::Vector< T > &v, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
parallel_visit(const IR::Vector< T > &v, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
post_join_flows(const IR::Node *, const IR::Node *)P4::Visitorinlineprotectedvirtual
postorder(IR::P4Parser *) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
postorder(IR::P4Control *) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
postorder(IR::Annotation *annotation) override (defined in P4::HierarchicalNames)P4::HierarchicalNames
postorder(IR::Node *) (defined in P4::Modifier)P4::Modifierinlinevirtual
preorder(IR::P4Parser *parser) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::P4Control *control) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::P4Table *table) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::Parameter *) override (defined in P4::HierarchicalNames)P4::HierarchicalNamesinline
preorder(IR::Node *) (defined in P4::Modifier)P4::Modifierinlinevirtual
print_context() const (defined in P4::Visitor)P4::Visitor
revisit(const IR::Node *, const IR::Node *) (defined in P4::Modifier)P4::Modifierinlinevirtual
revisit_visited() (defined in P4::Modifier)P4::Modifier
setCalledBy(const Visitor *visitor) (defined in P4::Visitor)P4::Visitorinline
setName(const char *name) (defined in P4::Visitor)P4::Visitorinline
split_link (defined in P4::Visitor)P4::Visitor
split_link_mem (defined in P4::Visitor)P4::Visitor
transform_child(const IR::Node *child) (defined in P4::Transform)P4::Transforminlineprotected
visit(const IR::Node *&n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node *const &n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node *&n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node *const &n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit(IR::Node *&, const char *=0, int=0) (defined in P4::Visitor)P4::Visitorinline
visit(IR::Node &n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node &n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(IR::Node &n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node &n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit_children(const IR::Node *, std::function< void()> fn) (defined in P4::Visitor)P4::Visitorinlineprotected
visit_in_progress(const IR::Node *) const (defined in P4::Transform)P4::Transform
visitAgain() const override (defined in P4::Transform)P4::Transformvirtual
visitDagOnce (defined in P4::Visitor)P4::Visitorprotected
visitOnce() const override (defined in P4::Transform)P4::Transformvirtual
Visitor() (defined in P4::Visitor)P4::Visitorinline
warn(const int kind, const char *format, const T *node, Args &&...args) (defined in P4::Visitor)P4::Visitorinline
P4::Transform::warn(const int kind, const char *format, const T &node, Args &&...args)P4::Visitorinline
warning_enabled(int warning_kind) constP4::Visitorinline
P4::Transform::warning_enabled(const Visitor *visitor, int warning_kind)P4::Visitorstatic
~Visitor()=default (defined in P4::Visitor)P4::Visitorvirtual
visit(const IR::Node *&n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node *const &n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node *&n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node *const &n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit(IR::Node *&, const char *=0, int=0) (defined in P4::Visitor)P4::Visitorinline
visit(IR::Node &n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node &n, const char *name=0) (defined in P4::Visitor)P4::Visitorinline
visit(IR::Node &n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit(const IR::Node &n, const char *name, int cidx) (defined in P4::Visitor)P4::Visitorinline
visit_children(const IR::Node *, std::function< void()> fn) (defined in P4::Visitor)P4::Visitorinlineprotected
visit_in_progress(const IR::Node *) const (defined in P4::Modifier)P4::Modifier
visitAgain() const override (defined in P4::Modifier)P4::Modifiervirtual
visitDagOnce (defined in P4::Visitor)P4::Visitorprotected
visitOnce() const override (defined in P4::Modifier)P4::Modifiervirtual
Visitor() (defined in P4::Visitor)P4::Visitorinline
warn(const int kind, const char *format, const T *node, Args &&...args) (defined in P4::Visitor)P4::Visitorinline
P4::Modifier::warn(const int kind, const char *format, const T &node, Args &&...args)P4::Visitorinline
warning_enabled(int warning_kind) constP4::Visitorinline
P4::Modifier::warning_enabled(const Visitor *visitor, int warning_kind)P4::Visitorstatic
~Visitor()=default (defined in P4::Visitor)P4::Visitorvirtual
diff --git a/class_p4_1_1_hierarchical_names.html b/class_p4_1_1_hierarchical_names.html index ca1c70aa80f..ffc1a7aa29d 100644 --- a/class_p4_1_1_hierarchical_names.html +++ b/class_p4_1_1_hierarchical_names.html @@ -134,59 +134,54 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + - - + - - + - - - - - + + + + + @@ -366,10 +361,6 @@ - - - @@ -381,10 +372,10 @@ - - + - + diff --git a/class_p4_1_1_hierarchical_names__inherit__graph.map b/class_p4_1_1_hierarchical_names__inherit__graph.map index 67692fceacd..022b5c9bf5e 100644 --- a/class_p4_1_1_hierarchical_names__inherit__graph.map +++ b/class_p4_1_1_hierarchical_names__inherit__graph.map @@ -1,6 +1,6 @@ - + diff --git a/class_p4_1_1_hierarchical_names__inherit__graph.md5 b/class_p4_1_1_hierarchical_names__inherit__graph.md5 index 7675dca229c..e88a304971e 100644 --- a/class_p4_1_1_hierarchical_names__inherit__graph.md5 +++ b/class_p4_1_1_hierarchical_names__inherit__graph.md5 @@ -1 +1 @@ -8c2964064b0db948cb0bf7c08bf95c4e \ No newline at end of file +a56b56a54a05da782d574458869cfa5f \ No newline at end of file diff --git a/class_p4_1_1_hierarchical_names__inherit__graph.svg b/class_p4_1_1_hierarchical_names__inherit__graph.svg index b9428fecf58..1310e9e0cf4 100644 --- a/class_p4_1_1_hierarchical_names__inherit__graph.svg +++ b/class_p4_1_1_hierarchical_names__inherit__graph.svg @@ -31,9 +31,9 @@ Node2 - - -P4::Transform + + +P4::Modifier diff --git a/class_p4_1_1_hierarchical_names__inherit__graph_org.svg b/class_p4_1_1_hierarchical_names__inherit__graph_org.svg index 405ba171cfa..74a157de7b0 100644 --- a/class_p4_1_1_hierarchical_names__inherit__graph_org.svg +++ b/class_p4_1_1_hierarchical_names__inherit__graph_org.svg @@ -20,9 +20,9 @@ Node2 - - -P4::Transform + + +P4::Modifier diff --git a/class_p4_1_1_j_s_o_n_generator-members.html b/class_p4_1_1_j_s_o_n_generator-members.html index a1f6bed3ebd..eade6791b38 100644 --- a/class_p4_1_1_j_s_o_n_generator-members.html +++ b/class_p4_1_1_j_s_o_n_generator-members.html @@ -134,26 +134,27 @@ - - - - - - - - + + + + - + - - - - - - - - - + + + + + + + + + + + + + +

Public Member Functions

-cstring getName (const IR::IDeclaration *decl)
 
-const IR::Nodepostorder (IR::Annotation *annotation) override
 
-const IR::Nodepostorder (IR::P4Control *control) override
 
-const IR::Nodepostorder (IR::P4Parser *parser) override
 
-const IR::Nodepreorder (IR::P4Control *control) override
 
-const IR::Nodepreorder (IR::P4Parser *parser) override
 
-const IR::Nodepreorder (IR::P4Table *table) override
 
-const IR::Nodepreorder (IR::Parameter *parameter) override
 
- Public Member Functions inherited from P4::Transform
const IR::Nodeapply_visitor (const IR::Node *, const char *name=0) override
 
profile_t init_apply (const IR::Node *root) override
 
+
+void postorder (IR::Annotation *annotation) override
 
+void postorder (IR::P4Control *) override
 
+void postorder (IR::P4Parser *) override
 
+bool preorder (IR::P4Control *control) override
 
+bool preorder (IR::P4Parser *parser) override
 
+bool preorder (IR::P4Table *table) override
 
+bool preorder (IR::Parameter *) override
 
- Public Member Functions inherited from P4::Modifier
const IR::Nodeapply_visitor (const IR::Node *n, const char *name=0) override
 
profile_t init_apply (const IR::Node *root) override
 
virtual void loop_revisit (const IR::Node *)
 
-virtual const IR::Nodepostorder (IR::Node *n)
 
virtual const IR::Nodepreorder (IR::Node *n)
 
-void prune ()
 
+
 
+virtual void postorder (IR::Node *)
 
+virtual bool preorder (IR::Node *)
 
virtual void revisit (const IR::Node *, const IR::Node *)
 
+
 
void revisit_visited ()
 
+
 
bool visit_in_progress (const IR::Node *) const
 
void visitAgain () const override
 
void visitOnce () const override
 
 
void visitAgain () const override
 
void visitOnce () const override
 
- Public Member Functions inherited from P4::Visitor
virtual bool check_global (cstring)
SplitFlowVisit_basesplit_link_mem = nullptr
 
- Protected Member Functions inherited from P4::Transform
-const IR::Nodetransform_child (const IR::Node *child)
 
- Protected Member Functions inherited from P4::Visitor
virtual void init_join_flows (const IR::Node *)
void visit_children (const IR::Node *, std::function< void()> fn)
 
- Protected Attributes inherited from P4::Transform
+
- Protected Attributes inherited from P4::Modifier
bool forceClone = false
 
 
- Protected Attributes inherited from P4::Visitor
bool dontForwardChildrenBeforePreorder = false
generate(const ordered_set< T > &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const std::map< K, V > &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const ordered_map< K, V > &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(bool v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(T v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(double v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const T &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(cstring v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(T v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const bitvec &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const match_t &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const std::variant< Types... > &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(bool v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(T v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(double v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const T &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const IR::Node &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(cstring v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(T v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const T(&v)[N]) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
indent (defined in P4::JSONGenerator)P4::JSONGenerator
JSONGenerator(std::ostream &out, bool dumpSourceInfo=false) (defined in P4::JSONGenerator)P4::JSONGeneratorinlineexplicit
operator<<(char ch) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(const char *s) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(indent_t i) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(std::ostream &(*fn)(std::ostream &)) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(const T &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
toJSON(const std::pair< T, U > &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const bitvec &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const match_t &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const T &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const IR::Node &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(T v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
generate(const T(&v)[N]) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
indent (defined in P4::JSONGenerator)P4::JSONGenerator
JSONGenerator(std::ostream &out, bool dumpSourceInfo=false) (defined in P4::JSONGenerator)P4::JSONGeneratorinlineexplicit
operator<<(char ch) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(const char *s) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(indent_t i) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(std::ostream &(*fn)(std::ostream &)) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
operator<<(const T &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
toJSON(const std::pair< T, U > &v) (defined in P4::JSONGenerator)P4::JSONGeneratorinline
diff --git a/class_p4_1_1_j_s_o_n_generator.html b/class_p4_1_1_j_s_o_n_generator.html index da4fc88997e..b6b852f406d 100644 --- a/class_p4_1_1_j_s_o_n_generator.html +++ b/class_p4_1_1_j_s_o_n_generator.html @@ -173,18 +173,22 @@ template<typename T > void generate (const std::set< T > &v)   + +template<class... Types> +void generate (const std::variant< Types... > &v) +  template<typename T > void generate (const std::vector< T > &v)   - + template<typename T > -std::enable_if< std::is_same< T, big_int >::value >::type generate (const T &v) -  - +std::enable_if_t< std::is_same_v< T, big_int > > generate (const T &v) +  + template<typename T > -std::enable_if< has_toJSON< T >::value &&!std::is_base_of< IR::Node, T >::value >::type generate (const T &v) -  +std::enable_if_t< has_toJSON< T >::value &&!std::is_base_of_v< IR::Node, T > > generate (const T &v) +  template<typename T , size_t N> void generate (const T(&v)[N]) @@ -195,18 +199,18 @@ void generate (double v)   - + template<typename T > -std::enable_if< std::is_integral< T >::value >::type generate (T v) -  - +std::enable_if_t< std::is_integral_v< T > > generate (T v) +  + template<typename T > -std::enable_if< std::is_same< T, LTBitMatrix >::value||std::is_enum< T >::value >::type generate (T v) -  - +std::enable_if_t< std::is_same_v< T, LTBitMatrix >||std::is_enum_v< T > > generate (T v) +  + template<typename T > -std::enable_if< std::is_pointer< T >::value &&has_toJSON< typenamestd::remove_pointer< T >::type >::value >::type generate (T v) -  +std::enable_if_t< std::is_pointer_v< T > &&has_toJSON< std::remove_pointer_t< T > >::value > generate (T v) +  JSONGeneratoroperator<< (char ch)   diff --git a/class_p4_1_1_modifier__inherit__graph.map b/class_p4_1_1_modifier__inherit__graph.map index c9e0366bab3..f7fcea1c49c 100644 --- a/class_p4_1_1_modifier__inherit__graph.map +++ b/class_p4_1_1_modifier__inherit__graph.map @@ -1,99 +1,99 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/class_p4_1_1_modifier__inherit__graph.md5 b/class_p4_1_1_modifier__inherit__graph.md5 index a4d3500c8ac..3c46584bffe 100644 --- a/class_p4_1_1_modifier__inherit__graph.md5 +++ b/class_p4_1_1_modifier__inherit__graph.md5 @@ -1 +1 @@ -ee7785811abd702698550b2d7e2a08f7 \ No newline at end of file +eebdf0747f51532e8a57c2c93a170d6c \ No newline at end of file diff --git a/class_p4_1_1_modifier__inherit__graph.svg b/class_p4_1_1_modifier__inherit__graph.svg index 314e3cf8e25..f85651ad0ad 100644 --- a/class_p4_1_1_modifier__inherit__graph.svg +++ b/class_p4_1_1_modifier__inherit__graph.svg @@ -4,7 +4,7 @@ - + @@ -47,8 +47,8 @@ @@ -59,8 +59,8 @@ var sectionId = 'dynsection-0'; Node1 - -P4::Modifier + +P4::Modifier @@ -68,8 +68,8 @@ var sectionId = 'dynsection-0'; Node3 - -AddParserMatchDefs + +AddParserMatchDefs @@ -77,8 +77,8 @@ var sectionId = 'dynsection-0'; Node1->Node3 - - + + @@ -86,9 +86,9 @@ var sectionId = 'dynsection-0'; Node4 - -AllocateParserState -::ResetHeaderStackExtraction + +AllocateParserState +::ResetHeaderStackExtraction @@ -96,8 +96,8 @@ var sectionId = 'dynsection-0'; Node1->Node4 - - + + @@ -105,8 +105,8 @@ var sectionId = 'dynsection-0'; Node5 - -BFN::AddAdjustByteCount + +BFN::AddAdjustByteCount @@ -114,8 +114,8 @@ var sectionId = 'dynsection-0'; Node1->Node5 - - + + @@ -123,9 +123,9 @@ var sectionId = 'dynsection-0'; Node6 - -BFN::AddHardwareConstrained -Fields + +BFN::AddHardwareConstrained +Fields @@ -133,8 +133,8 @@ var sectionId = 'dynsection-0'; Node1->Node6 - - + + @@ -142,8 +142,8 @@ var sectionId = 'dynsection-0'; Node7 - -BFN::AddParserPad + +BFN::AddParserPad @@ -151,8 +151,8 @@ var sectionId = 'dynsection-0'; Node1->Node7 - - + + @@ -160,8 +160,8 @@ var sectionId = 'dynsection-0'; Node8 - -BFN::AddT2naMeta + +BFN::AddT2naMeta @@ -169,8 +169,8 @@ var sectionId = 'dynsection-0'; Node1->Node8 - - + + @@ -178,9 +178,9 @@ var sectionId = 'dynsection-0'; Node9 - -BFN::CheckDirectExternsOn -Tables + +BFN::CheckDirectExternsOn +Tables @@ -188,8 +188,8 @@ var sectionId = 'dynsection-0'; Node1->Node9 - - + + @@ -197,8 +197,8 @@ var sectionId = 'dynsection-0'; Node10 - -BFN::FlattenHeader + +BFN::FlattenHeader @@ -206,8 +206,8 @@ var sectionId = 'dynsection-0'; Node1->Node10 - - + + @@ -215,8 +215,8 @@ var sectionId = 'dynsection-0'; Node11 - -BFN::RemoveZeroVarbitExtract + +BFN::RemoveZeroVarbitExtract @@ -224,8 +224,8 @@ var sectionId = 'dynsection-0'; Node1->Node11 - - + + @@ -233,8 +233,8 @@ var sectionId = 'dynsection-0'; Node12 - -BFN::RewriteActionNames + +BFN::RewriteActionNames @@ -242,8 +242,8 @@ var sectionId = 'dynsection-0'; Node1->Node12 - - + + @@ -251,8 +251,8 @@ var sectionId = 'dynsection-0'; Node13 - -BFN::RewritePathToStartState + +BFN::RewritePathToStartState @@ -260,8 +260,8 @@ var sectionId = 'dynsection-0'; Node1->Node13 - - + + @@ -269,8 +269,8 @@ var sectionId = 'dynsection-0'; Node14 - -BFN::RewriteVarbitTypes + +BFN::RewriteVarbitTypes @@ -278,8 +278,8 @@ var sectionId = 'dynsection-0'; Node1->Node14 - - + + @@ -287,8 +287,8 @@ var sectionId = 'dynsection-0'; Node15 - -BFN::RewriteVarbitUses + +BFN::RewriteVarbitUses @@ -296,8 +296,8 @@ var sectionId = 'dynsection-0'; Node1->Node15 - - + + @@ -305,8 +305,8 @@ var sectionId = 'dynsection-0'; Node16 - -BFN::SetDefaultSize + +BFN::SetDefaultSize @@ -314,8 +314,8 @@ var sectionId = 'dynsection-0'; Node1->Node16 - - + + @@ -323,8 +323,8 @@ var sectionId = 'dynsection-0'; Node17 - -CollectHeaderStackInfo + +CollectHeaderStackInfo @@ -332,8 +332,8 @@ var sectionId = 'dynsection-0'; Node1->Node17 - - + + @@ -341,8 +341,8 @@ var sectionId = 'dynsection-0'; Node18 - -MauModifier + +MauModifier @@ -350,8 +350,8 @@ var sectionId = 'dynsection-0'; Node1->Node18 - - + + @@ -359,17 +359,17 @@ var sectionId = 'dynsection-0'; Node32 - -P4::CheckHeaderTypes + +P4::CheckHeaderTypes - + Node1->Node32 - - - + + + @@ -377,17 +377,17 @@ var sectionId = 'dynsection-0'; Node33 - -P4::CheckTableSize + +P4::CheckTableSize - + Node1->Node33 - - - + + + @@ -395,17 +395,17 @@ var sectionId = 'dynsection-0'; Node34 - -P4::DoSingleArgumentSelect + +P4::DoSingleArgumentSelect - + Node1->Node34 - - - + + + @@ -413,278 +413,296 @@ var sectionId = 'dynsection-0'; Node35 - -P4::HeaderTypeMaxLengthCalculator + +P4::HeaderTypeMaxLengthCalculator - + Node1->Node35 - - - + + + Node36 - - -P4::MoveToElseAfterBranch + + +P4::HierarchicalNames - + Node1->Node36 - - - + + + Node37 - - -P4::P4V1::ModifyParserFor -Checksum + + +P4::MoveToElseAfterBranch - + Node1->Node37 - - - + + + Node38 - - -P4::P4V1::RemoveBuiltins + + +P4::P4V1::ModifyParserFor +Checksum - + Node1->Node38 - - - + + + Node39 - - -P4::ParseAnnotations + + +P4::P4V1::RemoveBuiltins - + Node1->Node39 - - - + + + - - -Node44 - - -P4::SwitchAddDefault + + +Node40 + + +P4::ParseAnnotations - - -Node1->Node44 - - - + + +Node1->Node40 + + + Node45 - - -P4::TypeCheck::AssignAction -ArgTypes + + +P4::SwitchAddDefault - + Node1->Node45 - - - + + + Node46 - - -P4::TypeCheck::InferExpressions -BottomUp + + +P4::TypeCheck::AssignAction +ArgTypes - + Node1->Node46 - - - + + + Node47 - - -P4::TypeCheck::InferExpressions -TopDown + + +P4::TypeCheck::InferExpressions +BottomUp - + Node1->Node47 - - - + + + Node48 - - -Parde::Lowered::ClearLowered -ParserMatch + + +P4::TypeCheck::InferExpressions +TopDown - + Node1->Node48 - - - + + + Node49 - - -Parde::Lowered::MergeLowered -ParserStates::RightShiftCsumMask + + +Parde::Lowered::ClearLowered +ParserMatch - + Node1->Node49 - - - + + + Node50 - - -Parde::Lowered::MergeLowered -ParserStates::RightShiftPacketRVal + + +Parde::Lowered::MergeLowered +ParserStates::RightShiftCsumMask - + Node1->Node50 - - - + + + Node51 - - -Parde::Lowered::RightShift -CsumMask + + +Parde::Lowered::MergeLowered +ParserStates::RightShiftPacketRVal - + Node1->Node51 - - - + + + Node52 - - -Parde::Lowered::RightShift -PacketRVal + + +Parde::Lowered::RightShift +CsumMask - + Node1->Node52 - - - + + + Node53 - - -ResolveExtractSaves + + +Parde::Lowered::RightShift +PacketRVal - + Node1->Node53 - - - + + + + + + + + +Node54 + + +ResolveExtractSaves + + + + + +Node1->Node54 + + + @@ -692,8 +710,8 @@ var sectionId = 'dynsection-0'; Node2 - -P4::Visitor + +P4::Visitor @@ -701,8 +719,8 @@ var sectionId = 'dynsection-0'; Node2->Node1 - - + + @@ -710,8 +728,8 @@ var sectionId = 'dynsection-0'; Node19 - -AddEmptyTableSeqs + +AddEmptyTableSeqs @@ -719,8 +737,8 @@ var sectionId = 'dynsection-0'; Node18->Node19 - - + + @@ -728,8 +746,8 @@ var sectionId = 'dynsection-0'; Node20 - -AdjustIXBarExpression + +AdjustIXBarExpression @@ -737,8 +755,8 @@ var sectionId = 'dynsection-0'; Node18->Node20 - - + + @@ -746,9 +764,9 @@ var sectionId = 'dynsection-0'; Node21 - -AssignCounterLRTValues -::ComputeLRT + +AssignCounterLRTValues +::ComputeLRT @@ -756,8 +774,8 @@ var sectionId = 'dynsection-0'; Node18->Node21 - - + + @@ -765,8 +783,8 @@ var sectionId = 'dynsection-0'; Node22 - -BFN::SetupActionProperties + +BFN::SetupActionProperties @@ -774,8 +792,8 @@ var sectionId = 'dynsection-0'; Node18->Node22 - - + + @@ -783,8 +801,8 @@ var sectionId = 'dynsection-0'; Node23 - -CheckStatefulAlu + +CheckStatefulAlu @@ -792,8 +810,8 @@ var sectionId = 'dynsection-0'; Node18->Node23 - - + + @@ -801,8 +819,8 @@ var sectionId = 'dynsection-0'; Node24 - -DoTableLayout + +DoTableLayout @@ -810,8 +828,8 @@ var sectionId = 'dynsection-0'; Node18->Node24 - - + + @@ -819,8 +837,8 @@ var sectionId = 'dynsection-0'; Node25 - -GatewayRangeMatch + +GatewayRangeMatch @@ -828,8 +846,8 @@ var sectionId = 'dynsection-0'; Node18->Node25 - - + + @@ -837,8 +855,8 @@ var sectionId = 'dynsection-0'; Node26 - -IXBarVerify + +IXBarVerify @@ -846,8 +864,8 @@ var sectionId = 'dynsection-0'; Node18->Node26 - - + + @@ -855,8 +873,8 @@ var sectionId = 'dynsection-0'; Node27 - -NullifyAllStatefulCallPrim + +NullifyAllStatefulCallPrim @@ -864,8 +882,8 @@ var sectionId = 'dynsection-0'; Node18->Node27 - - + + @@ -873,8 +891,8 @@ var sectionId = 'dynsection-0'; Node28 - -RewriteReductionOr + +RewriteReductionOr @@ -882,8 +900,8 @@ var sectionId = 'dynsection-0'; Node18->Node28 - - + + @@ -891,8 +909,8 @@ var sectionId = 'dynsection-0'; Node29 - -StaticEntriesConstProp + +StaticEntriesConstProp @@ -900,8 +918,8 @@ var sectionId = 'dynsection-0'; Node18->Node29 - - + + @@ -909,8 +927,8 @@ var sectionId = 'dynsection-0'; Node30 - -TableFindSeqDependencies + +TableFindSeqDependencies @@ -918,26 +936,8 @@ var sectionId = 'dynsection-0'; Node18->Node30 - - - - - - - -Node31 - - -TernaryMatchKeyConstraints - - - - - -Node18->Node31 - - - + + diff --git a/class_p4_1_1_modifier__inherit__graph_org.svg b/class_p4_1_1_modifier__inherit__graph_org.svg index edfc816013b..dd67554373b 100644 --- a/class_p4_1_1_modifier__inherit__graph_org.svg +++ b/class_p4_1_1_modifier__inherit__graph_org.svg @@ -4,16 +4,16 @@ - - + + P4::Modifier Node1 - -P4::Modifier + +P4::Modifier @@ -21,8 +21,8 @@ Node3 - -AddParserMatchDefs + +AddParserMatchDefs @@ -30,8 +30,8 @@ Node1->Node3 - - + + @@ -39,9 +39,9 @@ Node4 - -AllocateParserState -::ResetHeaderStackExtraction + +AllocateParserState +::ResetHeaderStackExtraction @@ -49,8 +49,8 @@ Node1->Node4 - - + + @@ -58,8 +58,8 @@ Node5 - -BFN::AddAdjustByteCount + +BFN::AddAdjustByteCount @@ -67,8 +67,8 @@ Node1->Node5 - - + + @@ -76,9 +76,9 @@ Node6 - -BFN::AddHardwareConstrained -Fields + +BFN::AddHardwareConstrained +Fields @@ -86,8 +86,8 @@ Node1->Node6 - - + + @@ -95,8 +95,8 @@ Node7 - -BFN::AddParserPad + +BFN::AddParserPad @@ -104,8 +104,8 @@ Node1->Node7 - - + + @@ -113,8 +113,8 @@ Node8 - -BFN::AddT2naMeta + +BFN::AddT2naMeta @@ -122,8 +122,8 @@ Node1->Node8 - - + + @@ -131,9 +131,9 @@ Node9 - -BFN::CheckDirectExternsOn -Tables + +BFN::CheckDirectExternsOn +Tables @@ -141,8 +141,8 @@ Node1->Node9 - - + + @@ -150,8 +150,8 @@ Node10 - -BFN::FlattenHeader + +BFN::FlattenHeader @@ -159,8 +159,8 @@ Node1->Node10 - - + + @@ -168,8 +168,8 @@ Node11 - -BFN::RemoveZeroVarbitExtract + +BFN::RemoveZeroVarbitExtract @@ -177,8 +177,8 @@ Node1->Node11 - - + + @@ -186,8 +186,8 @@ Node12 - -BFN::RewriteActionNames + +BFN::RewriteActionNames @@ -195,8 +195,8 @@ Node1->Node12 - - + + @@ -204,8 +204,8 @@ Node13 - -BFN::RewritePathToStartState + +BFN::RewritePathToStartState @@ -213,8 +213,8 @@ Node1->Node13 - - + + @@ -222,8 +222,8 @@ Node14 - -BFN::RewriteVarbitTypes + +BFN::RewriteVarbitTypes @@ -231,8 +231,8 @@ Node1->Node14 - - + + @@ -240,8 +240,8 @@ Node15 - -BFN::RewriteVarbitUses + +BFN::RewriteVarbitUses @@ -249,8 +249,8 @@ Node1->Node15 - - + + @@ -258,8 +258,8 @@ Node16 - -BFN::SetDefaultSize + +BFN::SetDefaultSize @@ -267,8 +267,8 @@ Node1->Node16 - - + + @@ -276,8 +276,8 @@ Node17 - -CollectHeaderStackInfo + +CollectHeaderStackInfo @@ -285,8 +285,8 @@ Node1->Node17 - - + + @@ -294,8 +294,8 @@ Node18 - -MauModifier + +MauModifier @@ -303,8 +303,8 @@ Node1->Node18 - - + + @@ -312,17 +312,17 @@ Node32 - -P4::CheckHeaderTypes + +P4::CheckHeaderTypes - + Node1->Node32 - - - + + + @@ -330,17 +330,17 @@ Node33 - -P4::CheckTableSize + +P4::CheckTableSize - + Node1->Node33 - - - + + + @@ -348,17 +348,17 @@ Node34 - -P4::DoSingleArgumentSelect + +P4::DoSingleArgumentSelect - + Node1->Node34 - - - + + + @@ -366,278 +366,296 @@ Node35 - -P4::HeaderTypeMaxLengthCalculator + +P4::HeaderTypeMaxLengthCalculator - + Node1->Node35 - - - + + + Node36 - - -P4::MoveToElseAfterBranch + + +P4::HierarchicalNames - + Node1->Node36 - - - + + + Node37 - - -P4::P4V1::ModifyParserFor -Checksum + + +P4::MoveToElseAfterBranch - + Node1->Node37 - - - + + + Node38 - - -P4::P4V1::RemoveBuiltins + + +P4::P4V1::ModifyParserFor +Checksum - + Node1->Node38 - - - + + + Node39 - - -P4::ParseAnnotations + + +P4::P4V1::RemoveBuiltins - + Node1->Node39 - - - + + + - - -Node44 - - -P4::SwitchAddDefault + + +Node40 + + +P4::ParseAnnotations - - -Node1->Node44 - - - + + +Node1->Node40 + + + Node45 - - -P4::TypeCheck::AssignAction -ArgTypes + + +P4::SwitchAddDefault - + Node1->Node45 - - - + + + Node46 - - -P4::TypeCheck::InferExpressions -BottomUp + + +P4::TypeCheck::AssignAction +ArgTypes - + Node1->Node46 - - - + + + Node47 - - -P4::TypeCheck::InferExpressions -TopDown + + +P4::TypeCheck::InferExpressions +BottomUp - + Node1->Node47 - - - + + + Node48 - - -Parde::Lowered::ClearLowered -ParserMatch + + +P4::TypeCheck::InferExpressions +TopDown - + Node1->Node48 - - - + + + Node49 - - -Parde::Lowered::MergeLowered -ParserStates::RightShiftCsumMask + + +Parde::Lowered::ClearLowered +ParserMatch - + Node1->Node49 - - - + + + Node50 - - -Parde::Lowered::MergeLowered -ParserStates::RightShiftPacketRVal + + +Parde::Lowered::MergeLowered +ParserStates::RightShiftCsumMask - + Node1->Node50 - - - + + + Node51 - - -Parde::Lowered::RightShift -CsumMask + + +Parde::Lowered::MergeLowered +ParserStates::RightShiftPacketRVal - + Node1->Node51 - - - + + + Node52 - - -Parde::Lowered::RightShift -PacketRVal + + +Parde::Lowered::RightShift +CsumMask - + Node1->Node52 - - - + + + Node53 - - -ResolveExtractSaves + + +Parde::Lowered::RightShift +PacketRVal - + Node1->Node53 - - - + + + + + + + + +Node54 + + +ResolveExtractSaves + + + + + +Node1->Node54 + + + @@ -645,8 +663,8 @@ Node2 - -P4::Visitor + +P4::Visitor @@ -654,8 +672,8 @@ Node2->Node1 - - + + @@ -663,8 +681,8 @@ Node19 - -AddEmptyTableSeqs + +AddEmptyTableSeqs @@ -672,8 +690,8 @@ Node18->Node19 - - + + @@ -681,8 +699,8 @@ Node20 - -AdjustIXBarExpression + +AdjustIXBarExpression @@ -690,8 +708,8 @@ Node18->Node20 - - + + @@ -699,9 +717,9 @@ Node21 - -AssignCounterLRTValues -::ComputeLRT + +AssignCounterLRTValues +::ComputeLRT @@ -709,8 +727,8 @@ Node18->Node21 - - + + @@ -718,8 +736,8 @@ Node22 - -BFN::SetupActionProperties + +BFN::SetupActionProperties @@ -727,8 +745,8 @@ Node18->Node22 - - + + @@ -736,8 +754,8 @@ Node23 - -CheckStatefulAlu + +CheckStatefulAlu @@ -745,8 +763,8 @@ Node18->Node23 - - + + @@ -754,8 +772,8 @@ Node24 - -DoTableLayout + +DoTableLayout @@ -763,8 +781,8 @@ Node18->Node24 - - + + @@ -772,8 +790,8 @@ Node25 - -GatewayRangeMatch + +GatewayRangeMatch @@ -781,8 +799,8 @@ Node18->Node25 - - + + @@ -790,8 +808,8 @@ Node26 - -IXBarVerify + +IXBarVerify @@ -799,8 +817,8 @@ Node18->Node26 - - + + @@ -808,8 +826,8 @@ Node27 - -NullifyAllStatefulCallPrim + +NullifyAllStatefulCallPrim @@ -817,8 +835,8 @@ Node18->Node27 - - + + @@ -826,8 +844,8 @@ Node28 - -RewriteReductionOr + +RewriteReductionOr @@ -835,8 +853,8 @@ Node18->Node28 - - + + @@ -844,8 +862,8 @@ Node29 - -StaticEntriesConstProp + +StaticEntriesConstProp @@ -853,8 +871,8 @@ Node18->Node29 - - + + @@ -862,8 +880,8 @@ Node30 - -TableFindSeqDependencies + +TableFindSeqDependencies @@ -871,26 +889,8 @@ Node18->Node30 - - - - - - - -Node31 - - -TernaryMatchKeyConstraints - - - - - -Node18->Node31 - - - + + diff --git a/class_p4_1_1_transform.html b/class_p4_1_1_transform.html index af3de0c4e6b..be4f62327f1 100644 --- a/class_p4_1_1_transform.html +++ b/class_p4_1_1_transform.html @@ -131,7 +131,7 @@

Inherits P4::Visitor.

-

Inherited by P4::AbstractInliner< ActionsInlineList, AInlineWorkList >, P4::AbstractInliner< FunctionsInlineList, FunctionsInlineWorkList >, P4::AbstractInliner< InlineList, InlineSummary >, P4::AbstractInliner< P4::InlineList, InlineWorkList >, AbstractElimUnusedInstructions, AddDarkInitialization, AddInitTable, AddMetadataInitialization, AddMetadataPOV, AddValidityBitSets, BFN::AddMetadataFields, BFN::AddPaddingFields, BFN::AnnotateVarbitExtractStates, BFN::BackendConstantFolding, BFN::BackendStrengthReduction, BFN::CloneConstants, BFN::ConvertPhase0AssignToExtract, BFN::ConvertSizeOfToConstant, BFN::DoAnnotateWithInHash, BFN::DoInitializeMirrorIOSelect, BFN::DoRewriteControlAndParserBlocks, BFN::DropPacketWithMirrorEngine_, BFN::ElimUnusedMetadataStates, BFN::EliminateHeaders, BFN::EvaluateForVar::SubstituteVar, BFN::FindBridgeMetadataAssignment, BFN::GenerateTofinoProgram, BFN::IgnoreKeyElementTransform, BFN::InjectTmpVar::DoInject, BFN::InsertHashStructExpression, BFN::LoweringType, BFN::MoveBridgeMetadataAssignment, BFN::OptionalToTernaryMatchTypeConverter, BFN::PSA::AddParserStates, BFN::PSA::ControlConverter, BFN::PSA::CreateErrorStates, BFN::PSA::ExpressionConverter, BFN::PSA::ExternConverter, BFN::PSA::MeterColorTypeTo8Bits, BFN::PSA::MoveAssignment, BFN::PSA::PacketPath, BFN::PSA::ParserConverter, BFN::PSA::StatementConverter, BFN::PSA::TranslatePacketPathIfStatement, BFN::PSA::TypeNameConverter, BFN::PingPongGeneration::ApplyMCSChanger, BFN::PingPongGeneration::DeclarationChanger, BFN::PsaBridgeIngressToEgress, BFN::RemoveExternMethodCallsExcludedByAnnotation, BFN::RemoveSetMetadata, BFN::RenameP4StartState, BFN::ResetHeaderStackIndex, BFN::ResolveHeaderStackIndex, BFN::RestoreParams, BFN::RewriteActionSelector, BFN::RewriteHeader, BFN::RewriteParserChecksums, BFN::RewriteParserStatements, BFN::RewriteParserVerify, BFN::RewriteTypeArguments, BFN::SearchAndReplaceExpr, BFN::SplitAlpm, BFN::TransformResubmitHeaders, BFN::UpdatePhase0Header, BFN::UpdatePhase0NodeInParser, BFN::UpdatePovBits, BFN::V1::ControlConverter, BFN::V1::ExpressionConverter, BFN::V1::ExternConverter, BFN::V1::FixupBackwardCompatibility, BFN::V1::InsertChecksumDeposit, BFN::V1::InsertChecksumError::InsertBeforeAccept, BFN::V1::InsertChecksumError::InsertEndStates, BFN::V1::LoweringType, BFN::V1::NormalizeProgram, BFN::V1::ParserConverter, BFN::V1::ParserCounterSelectCaseConverter, BFN::V1::ParserCounterSelectCaseConverter::RewriteSelectCase, BFN::V1::ParserCounterSelectExprConverter, BFN::V1::RemoveNodesWithNoMapping, BFN::V1::StatementConverter, DisableAutoInitMetadata, DoInstructionSelection::SplitInstructions, DoRemoveActionTables, GatewayRangeMatch::SetupRanges, ImplementDeparserZero, MarkDarkInitTables, MauTransform, P4::AbstractInliner< InlineList, InlineWorkList >, P4::ApplyTypesToExpressions, P4::BMV2::ArithmeticFixup, P4::BMV2::LowerExpressions, P4::BMV2::RenameUserMetadata, P4::CastBooleanTableKeys, P4::CloneConstants, P4::CloneExpressions, P4::CloneVariableDeclarations, P4::ConstantTypeSubstitution, P4::CopySrcInfo, P4::CreateBuiltins, P4::CreateSpecializedTypes, P4::CreateStructInitializers, P4::DPDK::AddFieldsToPseudoHeader, P4::DPDK::AlignHdrMetaField, P4::DPDK::BreakLogicalExpressionParenthesis, P4::DPDK::CollectLocalVariables, P4::DPDK::CollectStructLocalVariables, P4::DPDK::ConvertBinaryOperationTo2Params, P4::DPDK::ConvertLookahead::Replace, P4::DPDK::ConvertToDpdkArch, P4::DPDK::ConvertToDpdkProgram, P4::DPDK::CopyPropagationAndElimination, P4::DPDK::DirectionToRegRead, P4::DPDK::DismantleMuxExpressions, P4::DPDK::DpdkAddPseudoHeaderDecl, P4::DPDK::ElimHeaderCopy, P4::DPDK::ElimUnusedActions, P4::DPDK::IfStatementUnroll, P4::DPDK::InjectFixedMetadataField, P4::DPDK::InjectInternetChecksumIntermediateValue, P4::DPDK::InjectJumboStruct, P4::DPDK::InsertReqDeclForIPSec, P4::DPDK::MoveCollectedStructLocalVariableToMetadata, P4::DPDK::MoveNonHeaderFieldsToPseudoHeader, P4::DPDK::PrependPDotToActionArgs, P4::DPDK::PrependPassRecircId, P4::DPDK::RemoveConsecutiveJmpAndLabel, P4::DPDK::RemoveLabelAfterLabel, P4::DPDK::RemoveRedundantLabel, P4::DPDK::RemoveUnusedMetadataFields, P4::DPDK::ReplaceHdrMetaField, P4::DPDK::ShortenTokenLength, P4::DPDK::SplitP4TableCommon, P4::DPDK::StatementUnroll, P4::DPDK::SwapSimpleExpressionToFrontOfLogicalExpression, P4::DPDK::ThreadJumps, P4::DPDK::UpdateActionForSwitch, P4::DoBindTypeVariables, P4::DoConstantFolding, P4::DoConvertEnums, P4::DoConvertErrors, P4::DoCopyStructures, P4::DoDefaultArguments, P4::DoDefaultValues, P4::DoEliminateInvalidHeaders, P4::DoEliminateSerEnums, P4::DoEliminateSwitch, P4::DoExpandEmit, P4::DoExpandLookahead, P4::DoFlattenHeaderUnion, P4::DoGlobalCopyPropagation, P4::DoLocalCopyPropagation [private], P4::DoLocalCopyPropagation::ElimDead, P4::DoLocalCopyPropagation::RewriteTableKeys, P4::DoMoveActionsToTables, P4::DoOrderArguments, P4::DoRemoveActionParameters, P4::DoRemoveAssertAssume, P4::DoRemoveLeftSlices, P4::DoRemoveMiss, P4::DoRemoveParserControlFlow, P4::DoRemoveReturns, P4::DoRemoveSelectBooleans, P4::DoReplaceNewtype, P4::DoReplaceTuples, P4::DoReplaceTypedef, P4::DoResetHeaders, P4::DoSetHeaders, P4::DoSimplifyComplexCondition, P4::DoSimplifyControlFlow, P4::DoSimplifyDefUse, P4::DoSimplifyExpressions, P4::DoSimplifyKey, P4::DoSimplifyNestedIf, P4::DoSimplifySelectCases, P4::DoSimplifySwitch, P4::DoStaticAssert, P4::DoStrengthReduction, P4::DoSynthesizeActions, P4::DoTableHit, P4::DoTableKeyNames, P4::DontcareArgs, P4::DuplicateActions, P4::EBPF::ConvertToEbpfPSA, P4::EBPF::LowerExpressions, P4::ElimCallExprInIfCond, P4::EliminateSubparserCalls, P4::EntryPriorities, P4::FillEnumMap, P4::HSIndexContretizer, P4::HSIndexTransform, P4::HandleNoMatch, P4::HandleValidityHeaderUnion, P4::HierarchicalNames, P4::InlineControlFlow, P4::InstantiateDirectCalls, P4::KeySideEffect, P4::LocalizeActions, P4::MissingIdAssigner, P4::MoveConstructors, P4::MoveDeclarations, P4::MoveInitializers, P4::NameGateways, P4::P4Tools::ConvertStructExpr, P4::P4Tools::ConvertVarbits, P4::P4Tools::HSIndexToMember, P4::P4Tools::MaskBuilder, P4::P4Tools::P4Testgen::Bmv2::AssertsParser, P4::P4Tools::P4Testgen::Bmv2::PropagateP4RuntimeTranslation, P4::P4Tools::P4Testgen::VariableSubstitution, P4::P4Tools::TaintPropagator, P4::P4Tools::Test::ArithmTest::SaturationTransform, P4::P4Tools::Test::SymbolicConverter, P4::P4V1::AdjustLengths, P4::P4V1::ConvertConcreteHeaderRefToPathExpression, P4::P4V1::ConvertMetadata, P4::P4V1::ExpressionConverter, P4::P4V1::FixApplyStatement, P4::P4V1::FixDuplicatePathExpression, P4::P4V1::FixEgressParserDuplicateReference, P4::P4V1::FixExtracts, P4::P4V1::FixIdleTimeout, P4::P4V1::FixParamType, P4::P4V1::FixParserPriority, P4::P4V1::InsertChecksumDeposit, P4::P4V1::InsertChecksumError::InsertBeforeAccept, P4::P4V1::InsertChecksumError::InsertEndStates, P4::P4V1::InsertCompilerGeneratedStartState, P4::P4V1::MoveIntrinsicMetadata, P4::P4V1::ParserCounterSelectCaseConverter, P4::P4V1::ParserCounterSelectCaseConverter::RewriteSelectCase, P4::P4V1::ParserCounterSelectCaseConverter::StrengthReduction, P4::P4V1::ParserCounterSelectExprConverter, P4::P4V1::RenameFieldPath, P4::P4V1::Rewriter, P4::P4_14::InlineActions, P4::ParserStructureImpl::ParserStateRewriter, P4::Predication, P4::Reassociation, P4::RemoveAliases, P4::RemoveBreakContinue, P4::RemoveComplexComparisons, P4::RemoveComplexExpressions, P4::RemoveGenericTypes, P4::RemoveHidden, P4::RemoveNestedStructs, P4::RemoveUnusedActionParameters, P4::RemoveUnusedDeclarations, P4::RemoveUnusedHUDeclarations, P4::RemoveUselessCasts, P4::RenameSymbols, P4::ReplaceHeaders, P4::ReplaceIndexRefs, P4::ReplaceLogMsg, P4::ReplaceSelectRange, P4::ReplaceStructs, P4::ReplaceTypeUses, P4::RewriteAllParsers, P4::SimplifyBitwise, P4::SimplifyParsers, P4::Specialize, P4::SpecializeFunctions, P4::SubstituteStructures, P4::TC::ConvertToEbpfPNA, P4::TagGlobalActions, P4::TypeCheck::AssignInitialTypes, P4::TypeCheck::MakeImplicitCastsExplicit, P4::TypeInference [virtual], P4::TypeVariableSubstitutionVisitor, P4::UnnestSelectList, P4::UnrollLoops, PHV::v2::TableReplayFriendlyPhvConstraints, Parde::Lowered::ReplaceParserIR, Parde::Lowered::SplitGreedyParserStates, ReinstateAliasSources, RemovePushInitialization, ReplaceAllAliases, ReplaceFlexibleType, ReplaceMember, Shift, SplitComplexGateways, TablePlacement::RewriteForSplitAttached, and ValidToStkvalid.

+

Inherited by P4::AbstractInliner< ActionsInlineList, AInlineWorkList >, P4::AbstractInliner< FunctionsInlineList, FunctionsInlineWorkList >, P4::AbstractInliner< InlineList, InlineSummary >, P4::AbstractInliner< P4::InlineList, InlineWorkList >, AbstractElimUnusedInstructions, AddDarkInitialization, AddInitTable, AddMetadataInitialization, AddMetadataPOV, AddValidityBitSets, BFN::AddMetadataFields, BFN::AddPaddingFields, BFN::AnnotateVarbitExtractStates, BFN::BackendConstantFolding, BFN::BackendStrengthReduction, BFN::CloneConstants, BFN::ConvertPhase0AssignToExtract, BFN::ConvertSizeOfToConstant, BFN::DoAnnotateWithInHash, BFN::DoInitializeMirrorIOSelect, BFN::DoRewriteControlAndParserBlocks, BFN::DropPacketWithMirrorEngine_, BFN::ElimUnusedMetadataStates, BFN::EliminateHeaders, BFN::EvaluateForVar::SubstituteVar, BFN::FindBridgeMetadataAssignment, BFN::GenerateTofinoProgram, BFN::IgnoreKeyElementTransform, BFN::InjectTmpVar::DoInject, BFN::InsertHashStructExpression, BFN::LoweringType, BFN::MoveBridgeMetadataAssignment, BFN::OptionalToTernaryMatchTypeConverter, BFN::PSA::AddParserStates, BFN::PSA::ControlConverter, BFN::PSA::CreateErrorStates, BFN::PSA::ExpressionConverter, BFN::PSA::ExternConverter, BFN::PSA::MeterColorTypeTo8Bits, BFN::PSA::MoveAssignment, BFN::PSA::PacketPath, BFN::PSA::ParserConverter, BFN::PSA::StatementConverter, BFN::PSA::TranslatePacketPathIfStatement, BFN::PSA::TypeNameConverter, BFN::PingPongGeneration::ApplyMCSChanger, BFN::PingPongGeneration::DeclarationChanger, BFN::PsaBridgeIngressToEgress, BFN::RemoveExternMethodCallsExcludedByAnnotation, BFN::RemoveSetMetadata, BFN::RenameP4StartState, BFN::ResetHeaderStackIndex, BFN::ResolveHeaderStackIndex, BFN::RestoreParams, BFN::RewriteActionSelector, BFN::RewriteHeader, BFN::RewriteParserChecksums, BFN::RewriteParserStatements, BFN::RewriteParserVerify, BFN::RewriteTypeArguments, BFN::SearchAndReplaceExpr, BFN::SplitAlpm, BFN::TransformResubmitHeaders, BFN::UpdatePhase0Header, BFN::UpdatePhase0NodeInParser, BFN::UpdatePovBits, BFN::V1::ControlConverter, BFN::V1::ExpressionConverter, BFN::V1::ExternConverter, BFN::V1::FixupBackwardCompatibility, BFN::V1::InsertChecksumDeposit, BFN::V1::InsertChecksumError::InsertBeforeAccept, BFN::V1::InsertChecksumError::InsertEndStates, BFN::V1::LoweringType, BFN::V1::NormalizeProgram, BFN::V1::ParserConverter, BFN::V1::ParserCounterSelectCaseConverter, BFN::V1::ParserCounterSelectCaseConverter::RewriteSelectCase, BFN::V1::ParserCounterSelectExprConverter, BFN::V1::RemoveNodesWithNoMapping, BFN::V1::StatementConverter, DisableAutoInitMetadata, DoInstructionSelection::SplitInstructions, DoRemoveActionTables, GatewayRangeMatch::SetupRanges, ImplementDeparserZero, MarkDarkInitTables, MauTransform, P4::AbstractInliner< InlineList, InlineWorkList >, P4::ApplyTypesToExpressions, P4::BMV2::ArithmeticFixup, P4::BMV2::LowerExpressions, P4::BMV2::RenameUserMetadata, P4::CastBooleanTableKeys, P4::CloneConstants, P4::CloneExpressions, P4::CloneVariableDeclarations, P4::ConstantTypeSubstitution, P4::CopySrcInfo, P4::CreateBuiltins, P4::CreateSpecializedTypes, P4::CreateStructInitializers, P4::DPDK::AddFieldsToPseudoHeader, P4::DPDK::AlignHdrMetaField, P4::DPDK::BreakLogicalExpressionParenthesis, P4::DPDK::CollectLocalVariables, P4::DPDK::CollectStructLocalVariables, P4::DPDK::ConvertBinaryOperationTo2Params, P4::DPDK::ConvertLookahead::Replace, P4::DPDK::ConvertToDpdkArch, P4::DPDK::ConvertToDpdkProgram, P4::DPDK::CopyPropagationAndElimination, P4::DPDK::DirectionToRegRead, P4::DPDK::DismantleMuxExpressions, P4::DPDK::DpdkAddPseudoHeaderDecl, P4::DPDK::ElimHeaderCopy, P4::DPDK::ElimUnusedActions, P4::DPDK::IfStatementUnroll, P4::DPDK::InjectFixedMetadataField, P4::DPDK::InjectInternetChecksumIntermediateValue, P4::DPDK::InjectJumboStruct, P4::DPDK::InsertReqDeclForIPSec, P4::DPDK::MoveCollectedStructLocalVariableToMetadata, P4::DPDK::MoveNonHeaderFieldsToPseudoHeader, P4::DPDK::PrependPDotToActionArgs, P4::DPDK::PrependPassRecircId, P4::DPDK::RemoveConsecutiveJmpAndLabel, P4::DPDK::RemoveLabelAfterLabel, P4::DPDK::RemoveRedundantLabel, P4::DPDK::RemoveUnusedMetadataFields, P4::DPDK::ReplaceHdrMetaField, P4::DPDK::ShortenTokenLength, P4::DPDK::SplitP4TableCommon, P4::DPDK::StatementUnroll, P4::DPDK::SwapSimpleExpressionToFrontOfLogicalExpression, P4::DPDK::ThreadJumps, P4::DPDK::UpdateActionForSwitch, P4::DoBindTypeVariables, P4::DoConstantFolding, P4::DoConvertEnums, P4::DoConvertErrors, P4::DoCopyStructures, P4::DoDefaultArguments, P4::DoDefaultValues, P4::DoEliminateInvalidHeaders, P4::DoEliminateSerEnums, P4::DoEliminateSwitch, P4::DoExpandEmit, P4::DoExpandLookahead, P4::DoFlattenHeaderUnion, P4::DoGlobalCopyPropagation, P4::DoLocalCopyPropagation [private], P4::DoLocalCopyPropagation::ElimDead, P4::DoLocalCopyPropagation::RewriteTableKeys, P4::DoMoveActionsToTables, P4::DoOrderArguments, P4::DoRemoveActionParameters, P4::DoRemoveAssertAssume, P4::DoRemoveLeftSlices, P4::DoRemoveMiss, P4::DoRemoveParserControlFlow, P4::DoRemoveReturns, P4::DoRemoveSelectBooleans, P4::DoReplaceNewtype, P4::DoReplaceTuples, P4::DoReplaceTypedef, P4::DoResetHeaders, P4::DoSetHeaders, P4::DoSimplifyComplexCondition, P4::DoSimplifyControlFlow, P4::DoSimplifyDefUse, P4::DoSimplifyExpressions, P4::DoSimplifyKey, P4::DoSimplifyNestedIf, P4::DoSimplifySelectCases, P4::DoSimplifySwitch, P4::DoStaticAssert, P4::DoStrengthReduction, P4::DoSynthesizeActions, P4::DoTableHit, P4::DoTableKeyNames, P4::DontcareArgs, P4::DuplicateActions, P4::EBPF::ConvertToEbpfPSA, P4::EBPF::LowerExpressions, P4::ElimCallExprInIfCond, P4::EliminateSubparserCalls, P4::EntryPriorities, P4::FillEnumMap, P4::HSIndexContretizer, P4::HSIndexTransform, P4::HandleNoMatch, P4::HandleValidityHeaderUnion, P4::InlineControlFlow, P4::InstantiateDirectCalls, P4::KeySideEffect, P4::LocalizeActions, P4::MissingIdAssigner, P4::MoveConstructors, P4::MoveDeclarations, P4::MoveInitializers, P4::NameGateways, P4::P4Tools::ConvertStructExpr, P4::P4Tools::ConvertVarbits, P4::P4Tools::HSIndexToMember, P4::P4Tools::MaskBuilder, P4::P4Tools::P4Testgen::Bmv2::AssertsParser, P4::P4Tools::P4Testgen::Bmv2::PropagateP4RuntimeTranslation, P4::P4Tools::P4Testgen::VariableSubstitution, P4::P4Tools::TaintPropagator, P4::P4Tools::Test::ArithmTest::SaturationTransform, P4::P4Tools::Test::SymbolicConverter, P4::P4V1::AdjustLengths, P4::P4V1::ConvertConcreteHeaderRefToPathExpression, P4::P4V1::ConvertMetadata, P4::P4V1::ExpressionConverter, P4::P4V1::FixApplyStatement, P4::P4V1::FixDuplicatePathExpression, P4::P4V1::FixEgressParserDuplicateReference, P4::P4V1::FixExtracts, P4::P4V1::FixIdleTimeout, P4::P4V1::FixParamType, P4::P4V1::FixParserPriority, P4::P4V1::InsertChecksumDeposit, P4::P4V1::InsertChecksumError::InsertBeforeAccept, P4::P4V1::InsertChecksumError::InsertEndStates, P4::P4V1::InsertCompilerGeneratedStartState, P4::P4V1::MoveIntrinsicMetadata, P4::P4V1::ParserCounterSelectCaseConverter, P4::P4V1::ParserCounterSelectCaseConverter::RewriteSelectCase, P4::P4V1::ParserCounterSelectCaseConverter::StrengthReduction, P4::P4V1::ParserCounterSelectExprConverter, P4::P4V1::RenameFieldPath, P4::P4V1::Rewriter, P4::P4_14::InlineActions, P4::ParserStructureImpl::ParserStateRewriter, P4::Predication, P4::Reassociation, P4::RemoveAliases, P4::RemoveBreakContinue, P4::RemoveComplexComparisons, P4::RemoveComplexExpressions, P4::RemoveGenericTypes, P4::RemoveHidden, P4::RemoveNestedStructs, P4::RemoveUnusedActionParameters, P4::RemoveUnusedDeclarations, P4::RemoveUnusedHUDeclarations, P4::RemoveUselessCasts, P4::RenameSymbols, P4::ReplaceHeaders, P4::ReplaceIndexRefs, P4::ReplaceLogMsg, P4::ReplaceSelectRange, P4::ReplaceStructs, P4::ReplaceTypeUses, P4::RewriteAllParsers, P4::SimplifyBitwise, P4::SimplifyParsers, P4::Specialize, P4::SpecializeFunctions, P4::SubstituteStructures, P4::TC::ConvertToEbpfPNA, P4::TagGlobalActions, P4::TypeCheck::AssignInitialTypes, P4::TypeCheck::MakeImplicitCastsExplicit, P4::TypeInference [virtual], P4::TypeVariableSubstitutionVisitor, P4::UnnestSelectList, P4::UnrollLoops, PHV::v2::TableReplayFriendlyPhvConstraints, Parde::Lowered::ReplaceParserIR, Parde::Lowered::SplitGreedyParserStates, ReinstateAliasSources, RemovePushInitialization, ReplaceAllAliases, ReplaceFlexibleType, ReplaceMember, Shift, SplitComplexGateways, TablePlacement::RewriteForSplitAttached, and ValidToStkvalid.

diff --git a/class_p4_1_1_visitor__inherit__graph.map b/class_p4_1_1_visitor__inherit__graph.map index 2f582a6ae3a..4fdd02d810b 100644 --- a/class_p4_1_1_visitor__inherit__graph.map +++ b/class_p4_1_1_visitor__inherit__graph.map @@ -36,14 +36,14 @@ - - - - - - - - + + + + + + + + @@ -105,12 +105,12 @@ - - - - - - - - + + + + + + + + diff --git a/class_p4_1_1_visitor__inherit__graph.md5 b/class_p4_1_1_visitor__inherit__graph.md5 index 35b4fea703f..971375bced8 100644 --- a/class_p4_1_1_visitor__inherit__graph.md5 +++ b/class_p4_1_1_visitor__inherit__graph.md5 @@ -1 +1 @@ -f4d060572342dc298a11f64d66271b65 \ No newline at end of file +6563ebc2f3e7768a64869bfb0fc29479 \ No newline at end of file diff --git a/class_p4_1_1_visitor__inherit__graph.svg b/class_p4_1_1_visitor__inherit__graph.svg index e2c527b6c4f..1cef2f06ed7 100644 --- a/class_p4_1_1_visitor__inherit__graph.svg +++ b/class_p4_1_1_visitor__inherit__graph.svg @@ -390,73 +390,73 @@ var sectionId = 'dynsection-0'; - - -Node809 - + + +Node810 + P4::P4WriteContext - - -Node1->Node809 - + + +Node1->Node810 + - - -Node816 - + + +Node817 + P4::ResolutionContext - - -Node1->Node816 - + + +Node1->Node817 + - - -Node855 - + + +Node856 + P4::TypeInferenceBase - - -Node1->Node855 - + + +Node1->Node856 + - - -Node860 - + + +Node861 + P4::Transform - - -Node1->Node860 - + + +Node1->Node861 + @@ -1011,73 +1011,73 @@ var sectionId = 'dynsection-0'; - - -Node809->Node284 - + + +Node810->Node284 + - - -Node809->Node296 - + + +Node810->Node296 + - - -Node809->Node297 - + + +Node810->Node297 + - - -Node816->Node285 - + + +Node817->Node285 + - - -Node816->Node296 - + + +Node817->Node296 + - - -Node816->Node297 - + + +Node817->Node297 + - - -Node816->Node855 - + + +Node817->Node856 + - - -Node860->Node297 - + + +Node861->Node297 + diff --git a/class_p4_1_1_visitor__inherit__graph_org.svg b/class_p4_1_1_visitor__inherit__graph_org.svg index a8c7a0b1d24..6214b8fdb06 100644 --- a/class_p4_1_1_visitor__inherit__graph_org.svg +++ b/class_p4_1_1_visitor__inherit__graph_org.svg @@ -343,73 +343,73 @@ - - -Node809 - + + +Node810 + P4::P4WriteContext - - -Node1->Node809 - + + +Node1->Node810 + - - -Node816 - + + +Node817 + P4::ResolutionContext - - -Node1->Node816 - + + +Node1->Node817 + - - -Node855 - + + +Node856 + P4::TypeInferenceBase - - -Node1->Node855 - + + +Node1->Node856 + - - -Node860 - + + +Node861 + P4::Transform - - -Node1->Node860 - + + +Node1->Node861 + @@ -964,73 +964,73 @@ - - -Node809->Node284 - + + +Node810->Node284 + - - -Node809->Node296 - + + +Node810->Node296 + - - -Node809->Node297 - + + +Node810->Node297 + - - -Node816->Node285 - + + +Node817->Node285 + - - -Node816->Node296 - + + +Node817->Node296 + - - -Node816->Node297 - + + +Node817->Node297 + - - -Node816->Node855 - + + +Node817->Node856 + - - -Node860->Node297 - + + +Node861->Node297 + diff --git a/clot_8h_source.html b/clot_8h_source.html index b603c275f91..5ee4ea60061 100644 --- a/clot_8h_source.html +++ b/clot_8h_source.html @@ -295,8 +295,8 @@
bool is_first_field_in_clot(const PHV::Field *field) const
Definition parde/clot/clot.cpp:137
Definition clot_info.h:41
Definition cmp.h:84
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition cstring.h:85
Definition ordered_map.h:32
Definition phv_fields.h:154
diff --git a/control_8h_source.html b/control_8h_source.html index dcbe780fa09..89338f36a4a 100644 --- a/control_8h_source.html +++ b/control_8h_source.html @@ -246,8 +246,8 @@
120 keyelement->emplace("match_type", match_type);
121 }
122 if (auto na = ke->getAnnotation(IR::Annotation::nameAnnotation)) {
-
123 BUG_CHECK(na->expr.size() == 1, "%1%: expected 1 name", na);
-
124 auto name = na->expr[0]->to<IR::StringLiteral>();
+
123 BUG_CHECK(na->getExpr().size() == 1, "%1%: expected 1 name", na);
+
124 auto name = na->getExpr(0)->to<IR::StringLiteral>();
125 BUG_CHECK(name != nullptr, "%1%: expected a string", na);
126 // This is a BMv2 JSON extension: specify a
127 // control-plane name for this key
@@ -704,286 +704,284 @@
578 }
579 entry->emplace("action_entry", action);
580
-
581 auto priorityAnnotation = e->getAnnotation("priority"_cs);
-
582 if (priorityAnnotation != nullptr) {
-
583 if (priorityAnnotation->expr.size() > 1)
-
584 ::P4::error(ErrorType::ERR_INVALID, "Invalid priority value %1%",
-
585 priorityAnnotation->expr);
-
586 auto priValue = priorityAnnotation->expr.front();
-
587 if (!priValue->is<IR::Constant>())
-
588 ::P4::error(ErrorType::ERR_INVALID,
-
589 "Invalid priority value %1%; must be constant.",
-
590 priorityAnnotation->expr);
-
591 entry->emplace("priority", priValue->to<IR::Constant>()->value);
-
592 } else {
-
593 entry->emplace("priority", entryPriority);
-
594 }
-
595 entryPriority += 1;
-
596
-
597 entries->append(entry);
-
598 }
-
599 }
-
600 cstring getKeyMatchType(const IR::KeyElement *ke) {
-
601 auto path = ke->matchType->path;
-
602 auto mt = ctxt->refMap->getDeclaration(path, true)->to<IR::Declaration_ID>();
-
603 BUG_CHECK(mt != nullptr, "%1%: could not find declaration", ke->matchType);
-
604
-
605 if (mt->name.name == corelib.exactMatch.name ||
-
606 mt->name.name == corelib.ternaryMatch.name || mt->name.name == corelib.lpmMatch.name ||
-
607 ctxt->structure->match_kinds.count(mt->name.name)) {
-
608 return mt->name.name;
-
609 }
-
610
-
611 ::P4::error(ErrorType::ERR_UNSUPPORTED, "%1%: match type not supported on this target", mt);
-
612 return "invalid"_cs;
-
613 }
-
-
615 bool handleTableImplementation(const IR::Property *implementation, const IR::Key *key,
-
616 Util::JsonObject *table, Util::JsonArray *action_profiles,
- -
618 if (implementation == nullptr) {
-
619 table->emplace("type", "simple");
-
620 return true;
-
621 }
-
622
-
623 if (!implementation->value->is<IR::ExpressionValue>()) {
-
624 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected expression for property",
-
625 implementation);
-
626 return false;
-
627 }
-
628 auto propv = implementation->value->to<IR::ExpressionValue>();
-
629
-
630 bool isSimpleTable = true;
-
631 Util::JsonObject *action_profile;
-
632 cstring apname;
-
633
-
634 if (propv->expression->is<IR::ConstructorCallExpression>()) {
-
635 auto cc =
-
636 P4::ConstructorCall::resolve(propv->expression->to<IR::ConstructorCallExpression>(),
-
637 ctxt->refMap, ctxt->typeMap);
-
638 if (!cc->is<P4::ExternConstructorCall>()) {
-
639 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected extern object for property",
-
640 implementation);
-
641 return false;
-
642 }
-
643 auto ecc = cc->to<P4::ExternConstructorCall>();
-
644 auto implementationType = ecc->type;
-
645 auto arguments = ecc->cce->arguments;
-
646 apname = implementation->controlPlaneName(ctxt->refMap->newName("action_profile"));
-
647 action_profile = new Util::JsonObject();
-
648 action_profiles->append(action_profile);
-
649 action_profile->emplace("name", apname);
-
650 action_profile->emplace("id", nextId("action_profiles"_cs));
-
651 action_profile->emplace_non_null("source_info"_cs,
-
652 propv->expression->sourceInfoJsonObj());
-
653 // TODO(jafingerhut) - add line/col here?
-
654 // TBD what about the else if cases below?
-
655
-
656 auto add_size = [&action_profile, &arguments](size_t arg_index) {
-
657 auto size_expr = arguments->at(arg_index)->expression;
-
658 int size;
-
659 if (!size_expr->is<IR::Constant>()) {
-
660 ::P4::error(ErrorType::ERR_EXPECTED, "%1% must be a constant", size_expr);
-
661 size = 0;
-
662 } else {
-
663 size = size_expr->to<IR::Constant>()->asInt();
-
664 }
-
665 action_profile->emplace("max_size", size);
-
666 };
-
667
-
668 auto actionSelectorName = Standard::ActionSelectorTraits<arch>::typeName();
-
669 if (implementationType->name == actionSelectorName) {
-
670 BUG_CHECK(arguments->size() == 3, "%1%: expected 3 arguments", arguments);
-
671 isSimpleTable = false;
-
672 auto selector = new Util::JsonObject();
-
673 table->emplace("type", "indirect_ws");
-
674 action_profile->emplace("selector"_cs, selector);
-
675 add_size(1);
-
676 auto hash = arguments->at(0)->expression;
-
677 auto ei = P4::EnumInstance::resolve(hash, ctxt->typeMap);
-
678 if (ei == nullptr) {
-
679 ::P4::error(ErrorType::ERR_EXPECTED,
-
680 "%1%: hash must be a constant on this target", hash);
-
681 } else {
-
682 cstring algo = ei->name;
-
683 selector->emplace("algo", algo);
-
684 }
-
685 auto input = mkArrayField(selector, "input"_cs);
-
686 for (auto ke : key->keyElements) {
-
687 auto mt = ctxt->refMap->getDeclaration(ke->matchType->path, true)
-
688 ->to<IR::Declaration_ID>();
-
689 BUG_CHECK(mt != nullptr, "%1%: could not find declaration", ke->matchType);
-
690 if (mt->name.name != BMV2::MatchImplementation::selectorMatchTypeName) continue;
-
691
-
692 auto expr = ke->expression;
-
693 auto jk = ctxt->conv->convert(expr);
-
694 input->append(jk);
-
695 }
-
696 } else if (implementationType->name ==
- -
698 isSimpleTable = false;
-
699 table->emplace("type", "indirect");
-
700 add_size(0);
-
701 } else {
-
702 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: expected value for property", propv);
-
703 }
-
704 } else if (propv->expression->is<IR::PathExpression>()) {
-
705 auto pathe = propv->expression->to<IR::PathExpression>();
-
706 auto decl = ctxt->refMap->getDeclaration(pathe->path, true);
-
707 if (!decl->is<IR::Declaration_Instance>()) {
-
708 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected a reference to an instance",
-
709 pathe);
-
710 return false;
-
711 }
-
712 apname = decl->controlPlaneName();
-
713 auto dcltype = ctxt->typeMap->getType(pathe, true);
-
714 if (!dcltype->is<IR::Type_Extern>()) {
-
715 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: unexpected type for implementation",
-
716 dcltype);
-
717 return false;
-
718 }
-
719 auto type_extern_name = dcltype->to<IR::Type_Extern>()->name;
-
720 auto actionProfileName = Standard::ActionProfileTraits<arch>::typeName();
-
721 auto actionSelectorName = Standard::ActionSelectorTraits<arch>::typeName();
-
722 if (type_extern_name == actionProfileName) {
-
723 table->emplace("type", "indirect");
-
724 } else if (type_extern_name == actionSelectorName) {
-
725 table->emplace("type", "indirect_ws");
-
726 } else {
-
727 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: unexpected type for implementation",
-
728 dcltype);
-
729 return false;
-
730 }
-
731 isSimpleTable = false;
-
732 if (ctxt->toplevel->hasValue(decl->getNode())) {
-
733 auto eb = ctxt->toplevel->getValue(decl->getNode());
-
734 BUG_CHECK(eb->is<IR::ExternBlock>(), "Not an extern block?");
-
735 ExternConverter::cvtExternInstance(ctxt, decl->to<IR::Declaration>(),
-
736 eb->to<IR::ExternBlock>(), emitExterns);
-
737 }
-
738 } else {
-
739 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: unexpected value for property", propv);
-
740 return false;
-
741 }
-
742 table->emplace("action_profile", apname);
-
743 return isSimpleTable;
-
744 }
+
581 if (auto priorityAnnotation = e->getAnnotation("priority"_cs)) {
+
582 const auto &expr = priorityAnnotation->getExpr();
+
583 if (expr.size() > 1)
+
584 ::P4::error(ErrorType::ERR_INVALID, "Invalid priority value %1%", expr);
+
585 auto priValue = expr.front();
+
586 if (!priValue->is<IR::Constant>())
+
587 ::P4::error(ErrorType::ERR_INVALID,
+
588 "Invalid priority value %1%; must be constant.", expr);
+
589 entry->emplace("priority", priValue->to<IR::Constant>()->value);
+
590 } else {
+
591 entry->emplace("priority", entryPriority);
+
592 }
+
593 entryPriority += 1;
+
594
+
595 entries->append(entry);
+
596 }
+
597 }
+
598 cstring getKeyMatchType(const IR::KeyElement *ke) {
+
599 auto path = ke->matchType->path;
+
600 auto mt = ctxt->refMap->getDeclaration(path, true)->to<IR::Declaration_ID>();
+
601 BUG_CHECK(mt != nullptr, "%1%: could not find declaration", ke->matchType);
+
602
+
603 if (mt->name.name == corelib.exactMatch.name ||
+
604 mt->name.name == corelib.ternaryMatch.name || mt->name.name == corelib.lpmMatch.name ||
+
605 ctxt->structure->match_kinds.count(mt->name.name)) {
+
606 return mt->name.name;
+
607 }
+
608
+
609 ::P4::error(ErrorType::ERR_UNSUPPORTED, "%1%: match type not supported on this target", mt);
+
610 return "invalid"_cs;
+
611 }
+
+
613 bool handleTableImplementation(const IR::Property *implementation, const IR::Key *key,
+
614 Util::JsonObject *table, Util::JsonArray *action_profiles,
+ +
616 if (implementation == nullptr) {
+
617 table->emplace("type", "simple");
+
618 return true;
+
619 }
+
620
+
621 if (!implementation->value->is<IR::ExpressionValue>()) {
+
622 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected expression for property",
+
623 implementation);
+
624 return false;
+
625 }
+
626 auto propv = implementation->value->to<IR::ExpressionValue>();
+
627
+
628 bool isSimpleTable = true;
+
629 Util::JsonObject *action_profile;
+
630 cstring apname;
+
631
+
632 if (propv->expression->is<IR::ConstructorCallExpression>()) {
+
633 auto cc =
+
634 P4::ConstructorCall::resolve(propv->expression->to<IR::ConstructorCallExpression>(),
+
635 ctxt->refMap, ctxt->typeMap);
+
636 if (!cc->is<P4::ExternConstructorCall>()) {
+
637 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected extern object for property",
+
638 implementation);
+
639 return false;
+
640 }
+
641 auto ecc = cc->to<P4::ExternConstructorCall>();
+
642 auto implementationType = ecc->type;
+
643 auto arguments = ecc->cce->arguments;
+
644 apname = implementation->controlPlaneName(ctxt->refMap->newName("action_profile"));
+
645 action_profile = new Util::JsonObject();
+
646 action_profiles->append(action_profile);
+
647 action_profile->emplace("name", apname);
+
648 action_profile->emplace("id", nextId("action_profiles"_cs));
+
649 action_profile->emplace_non_null("source_info"_cs,
+
650 propv->expression->sourceInfoJsonObj());
+
651 // TODO(jafingerhut) - add line/col here?
+
652 // TBD what about the else if cases below?
+
653
+
654 auto add_size = [&action_profile, &arguments](size_t arg_index) {
+
655 auto size_expr = arguments->at(arg_index)->expression;
+
656 int size;
+
657 if (!size_expr->is<IR::Constant>()) {
+
658 ::P4::error(ErrorType::ERR_EXPECTED, "%1% must be a constant", size_expr);
+
659 size = 0;
+
660 } else {
+
661 size = size_expr->to<IR::Constant>()->asInt();
+
662 }
+
663 action_profile->emplace("max_size", size);
+
664 };
+
665
+
666 auto actionSelectorName = Standard::ActionSelectorTraits<arch>::typeName();
+
667 if (implementationType->name == actionSelectorName) {
+
668 BUG_CHECK(arguments->size() == 3, "%1%: expected 3 arguments", arguments);
+
669 isSimpleTable = false;
+
670 auto selector = new Util::JsonObject();
+
671 table->emplace("type", "indirect_ws");
+
672 action_profile->emplace("selector"_cs, selector);
+
673 add_size(1);
+
674 auto hash = arguments->at(0)->expression;
+
675 auto ei = P4::EnumInstance::resolve(hash, ctxt->typeMap);
+
676 if (ei == nullptr) {
+
677 ::P4::error(ErrorType::ERR_EXPECTED,
+
678 "%1%: hash must be a constant on this target", hash);
+
679 } else {
+
680 cstring algo = ei->name;
+
681 selector->emplace("algo", algo);
+
682 }
+
683 auto input = mkArrayField(selector, "input"_cs);
+
684 for (auto ke : key->keyElements) {
+
685 auto mt = ctxt->refMap->getDeclaration(ke->matchType->path, true)
+
686 ->to<IR::Declaration_ID>();
+
687 BUG_CHECK(mt != nullptr, "%1%: could not find declaration", ke->matchType);
+
688 if (mt->name.name != BMV2::MatchImplementation::selectorMatchTypeName) continue;
+
689
+
690 auto expr = ke->expression;
+
691 auto jk = ctxt->conv->convert(expr);
+
692 input->append(jk);
+
693 }
+
694 } else if (implementationType->name ==
+ +
696 isSimpleTable = false;
+
697 table->emplace("type", "indirect");
+
698 add_size(0);
+
699 } else {
+
700 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: expected value for property", propv);
+
701 }
+
702 } else if (propv->expression->is<IR::PathExpression>()) {
+
703 auto pathe = propv->expression->to<IR::PathExpression>();
+
704 auto decl = ctxt->refMap->getDeclaration(pathe->path, true);
+
705 if (!decl->is<IR::Declaration_Instance>()) {
+
706 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected a reference to an instance",
+
707 pathe);
+
708 return false;
+
709 }
+
710 apname = decl->controlPlaneName();
+
711 auto dcltype = ctxt->typeMap->getType(pathe, true);
+
712 if (!dcltype->is<IR::Type_Extern>()) {
+
713 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: unexpected type for implementation",
+
714 dcltype);
+
715 return false;
+
716 }
+
717 auto type_extern_name = dcltype->to<IR::Type_Extern>()->name;
+
718 auto actionProfileName = Standard::ActionProfileTraits<arch>::typeName();
+
719 auto actionSelectorName = Standard::ActionSelectorTraits<arch>::typeName();
+
720 if (type_extern_name == actionProfileName) {
+
721 table->emplace("type", "indirect");
+
722 } else if (type_extern_name == actionSelectorName) {
+
723 table->emplace("type", "indirect_ws");
+
724 } else {
+
725 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: unexpected type for implementation",
+
726 dcltype);
+
727 return false;
+
728 }
+
729 isSimpleTable = false;
+
730 if (ctxt->toplevel->hasValue(decl->getNode())) {
+
731 auto eb = ctxt->toplevel->getValue(decl->getNode());
+
732 BUG_CHECK(eb->is<IR::ExternBlock>(), "Not an extern block?");
+
733 ExternConverter::cvtExternInstance(ctxt, decl->to<IR::Declaration>(),
+
734 eb->to<IR::ExternBlock>(), emitExterns);
+
735 }
+
736 } else {
+
737 ::P4::error(ErrorType::ERR_UNEXPECTED, "%1%: unexpected value for property", propv);
+
738 return false;
+
739 }
+
740 table->emplace("action_profile", apname);
+
741 return isSimpleTable;
+
742 }
-
745
-
746 Util::IJson *convertIf(const CFG::IfNode *node, cstring prefix) {
-
747 (void)prefix;
-
748 auto result = new Util::JsonObject();
-
749 result->emplace("name", node->name);
-
750 result->emplace("id", nextId("conditionals"_cs));
-
751 result->emplace_non_null("source_info"_cs, node->statement->condition->sourceInfoJsonObj());
-
752 auto j = ctxt->conv->convert(node->statement->condition, true, false);
-
753 CHECK_NULL(j);
-
754 result->emplace("expression"_cs, j);
-
755 for (auto e : node->successors.edges) {
-
756 Util::IJson *dest = nodeName(e->endpoint);
-
757 cstring label = Util::toString(e->getBool());
-
758 label += "_next";
-
759 result->emplace(label, dest);
-
760 }
-
761 return result;
-
762 }
-
763
-
764 public:
-
765 const bool emitExterns;
-
766 bool preorder(const IR::P4Control *cont) override {
-
767 auto result = new Util::JsonObject();
-
768
-
769 result->emplace("name", name);
-
770 result->emplace("id", nextId("control"_cs));
-
771 result->emplace_non_null("source_info"_cs, cont->sourceInfoJsonObj());
-
772
-
773 auto cfg = new CFG();
-
774 cfg->build(cont, ctxt->refMap, ctxt->typeMap);
-
775 bool success = cfg->checkImplementable();
-
776 if (!success) return false;
-
777
-
778 if (cfg->entryPoint->successors.size() == 0) {
-
779 result->emplace("init_table", Util::JsonValue::null);
-
780 } else {
-
781 BUG_CHECK(cfg->entryPoint->successors.size() == 1, "Expected 1 start node for %1%",
-
782 cont);
-
783 auto start = (*(cfg->entryPoint->successors.edges.begin()))->endpoint;
-
784 result->emplace("init_table", nodeName(start));
-
785 }
-
786
-
787 auto tables = mkArrayField(result, "tables"_cs);
-
788 auto action_profiles = mkArrayField(result, "action_profiles"_cs);
-
789 auto conditionals = mkArrayField(result, "conditionals"_cs);
-
790 ctxt->action_profiles = action_profiles;
-
791
-
792 auto selector_check = new BMV2::SharedActionSelectorCheck<arch>(ctxt);
-
793 cont->apply(*selector_check);
+
743
+
744 Util::IJson *convertIf(const CFG::IfNode *node, cstring prefix) {
+
745 (void)prefix;
+
746 auto result = new Util::JsonObject();
+
747 result->emplace("name", node->name);
+
748 result->emplace("id", nextId("conditionals"_cs));
+
749 result->emplace_non_null("source_info"_cs, node->statement->condition->sourceInfoJsonObj());
+
750 auto j = ctxt->conv->convert(node->statement->condition, true, false);
+
751 CHECK_NULL(j);
+
752 result->emplace("expression"_cs, j);
+
753 for (auto e : node->successors.edges) {
+
754 Util::IJson *dest = nodeName(e->endpoint);
+
755 cstring label = Util::toString(e->getBool());
+
756 label += "_next";
+
757 result->emplace(label, dest);
+
758 }
+
759 return result;
+
760 }
+
761
+
762 public:
+
763 const bool emitExterns;
+
764 bool preorder(const IR::P4Control *cont) override {
+
765 auto result = new Util::JsonObject();
+
766
+
767 result->emplace("name", name);
+
768 result->emplace("id", nextId("control"_cs));
+
769 result->emplace_non_null("source_info"_cs, cont->sourceInfoJsonObj());
+
770
+
771 auto cfg = new CFG();
+
772 cfg->build(cont, ctxt->refMap, ctxt->typeMap);
+
773 bool success = cfg->checkImplementable();
+
774 if (!success) return false;
+
775
+
776 if (cfg->entryPoint->successors.size() == 0) {
+
777 result->emplace("init_table", Util::JsonValue::null);
+
778 } else {
+
779 BUG_CHECK(cfg->entryPoint->successors.size() == 1, "Expected 1 start node for %1%",
+
780 cont);
+
781 auto start = (*(cfg->entryPoint->successors.edges.begin()))->endpoint;
+
782 result->emplace("init_table", nodeName(start));
+
783 }
+
784
+
785 auto tables = mkArrayField(result, "tables"_cs);
+
786 auto action_profiles = mkArrayField(result, "action_profiles"_cs);
+
787 auto conditionals = mkArrayField(result, "conditionals"_cs);
+
788 ctxt->action_profiles = action_profiles;
+
789
+
790 auto selector_check = new BMV2::SharedActionSelectorCheck<arch>(ctxt);
+
791 cont->apply(*selector_check);
+
792
+
793 std::set<const IR::P4Table *> done;
794
-
795 std::set<const IR::P4Table *> done;
-
796
-
797 // Tables are created prior to the other local declarations
-
798 for (auto node : cfg->allNodes) {
-
799 auto tn = node->to<CFG::TableNode>();
-
800 if (tn != nullptr) {
-
801 if (done.find(tn->table) != done.end())
-
802 // The same table may appear in multiple nodes in the CFG.
-
803 // We emit it only once. Other checks should ensure that
-
804 // the CFG is implementable.
-
805 continue;
-
806 done.emplace(tn->table);
-
807 auto j = convertTable(tn, action_profiles, selector_check);
-
808 if (::P4::errorCount() > 0) return false;
-
809 tables->append(j);
-
810 } else if (node->is<CFG::IfNode>()) {
-
811 auto j = convertIf(node->to<CFG::IfNode>(), cont->name);
-
812 if (::P4::errorCount() > 0) return false;
-
813 conditionals->append(j);
-
814 }
-
815 }
-
816
-
817 for (auto c : cont->controlLocals) {
-
818 if (c->is<IR::Declaration_Constant>() || c->is<IR::Declaration_Variable>() ||
-
819 c->is<IR::P4Action>() || c->is<IR::P4Table>())
-
820 continue;
-
821 if (c->is<IR::Declaration_Instance>()) {
-
822 auto bl = ctxt->structure->resourceMap.at(c);
-
823 CHECK_NULL(bl);
-
824 if (bl->is<IR::ControlBlock>() || bl->is<IR::ParserBlock>())
-
825 // Since this block has not been inlined, it is probably unused
-
826 // So we don't do anything.
-
827 continue;
-
828 if (bl->is<IR::ExternBlock>()) {
-
829 auto eb = bl->to<IR::ExternBlock>();
-
830 ExternConverter::cvtExternInstance(ctxt, c, eb, emitExterns);
-
831 continue;
-
832 }
-
833 }
-
834 P4C_UNIMPLEMENTED("%1%: not yet handled", c);
-
835 }
-
836
-
837 ctxt->json->pipelines->append(result);
-
838 return false;
-
839 }
-
840
-
841 explicit ControlConverter(ConversionContext *ctxt, cstring name, const bool &emitExterns_)
-
842 : ctxt(ctxt),
-
843 name(name),
-
844 corelib(P4::P4CoreLibrary::instance()),
-
845 emitExterns(emitExterns_) {
-
846 setName("ControlConverter");
-
847 }
-
848};
+
795 // Tables are created prior to the other local declarations
+
796 for (auto node : cfg->allNodes) {
+
797 auto tn = node->to<CFG::TableNode>();
+
798 if (tn != nullptr) {
+
799 if (done.find(tn->table) != done.end())
+
800 // The same table may appear in multiple nodes in the CFG.
+
801 // We emit it only once. Other checks should ensure that
+
802 // the CFG is implementable.
+
803 continue;
+
804 done.emplace(tn->table);
+
805 auto j = convertTable(tn, action_profiles, selector_check);
+
806 if (::P4::errorCount() > 0) return false;
+
807 tables->append(j);
+
808 } else if (node->is<CFG::IfNode>()) {
+
809 auto j = convertIf(node->to<CFG::IfNode>(), cont->name);
+
810 if (::P4::errorCount() > 0) return false;
+
811 conditionals->append(j);
+
812 }
+
813 }
+
814
+
815 for (auto c : cont->controlLocals) {
+
816 if (c->is<IR::Declaration_Constant>() || c->is<IR::Declaration_Variable>() ||
+
817 c->is<IR::P4Action>() || c->is<IR::P4Table>())
+
818 continue;
+
819 if (c->is<IR::Declaration_Instance>()) {
+
820 auto bl = ctxt->structure->resourceMap.at(c);
+
821 CHECK_NULL(bl);
+
822 if (bl->is<IR::ControlBlock>() || bl->is<IR::ParserBlock>())
+
823 // Since this block has not been inlined, it is probably unused
+
824 // So we don't do anything.
+
825 continue;
+
826 if (bl->is<IR::ExternBlock>()) {
+
827 auto eb = bl->to<IR::ExternBlock>();
+
828 ExternConverter::cvtExternInstance(ctxt, c, eb, emitExterns);
+
829 continue;
+
830 }
+
831 }
+
832 P4C_UNIMPLEMENTED("%1%: not yet handled", c);
+
833 }
+
834
+
835 ctxt->json->pipelines->append(result);
+
836 return false;
+
837 }
+
838
+
839 explicit ControlConverter(ConversionContext *ctxt, cstring name, const bool &emitExterns_)
+
840 : ctxt(ctxt),
+
841 name(name),
+
842 corelib(P4::P4CoreLibrary::instance()),
+
843 emitExterns(emitExterns_) {
+
844 setName("ControlConverter");
+
845 }
+
846};
+
847
+
848} // namespace P4::BMV2
849
-
850} // namespace P4::BMV2
-
851
-
852#endif /* BACKENDS_BMV2_COMMON_CONTROL_H_ */
+
850#endif /* BACKENDS_BMV2_COMMON_CONTROL_H_ */
Definition methodInstance.h:209
Definition controlFlowGraph.h:97
Definition controlFlowGraph.h:60
Definition controlFlowGraph.h:84
Definition control.h:39
-
bool handleTableImplementation(const IR::Property *implementation, const IR::Key *key, Util::JsonObject *table, Util::JsonArray *action_profiles, BMV2::SharedActionSelectorCheck< arch > *)
Return 'true' if the table is 'simple'.
Definition control.h:615
+
bool handleTableImplementation(const IR::Property *implementation, const IR::Key *key, Util::JsonObject *table, Util::JsonArray *action_profiles, BMV2::SharedActionSelectorCheck< arch > *)
Return 'true' if the table is 'simple'.
Definition control.h:613
bool simpleExpressionsOnly
Definition expression.h:82
Util::IJson * convert(const IR::Expression *e, bool doFixup=true, bool wrap=true, bool convertBool=false)
Definition backends/bmv2/common/expression.cpp:768
static const cstring selectorMatchTypeName
constant definition for bmv2
Definition bmv2/common/helpers.h:41
diff --git a/converters_8h_source.html b/converters_8h_source.html index 30ab33d99c0..1ea010b5da9 100644 --- a/converters_8h_source.html +++ b/converters_8h_source.html @@ -636,532 +636,533 @@
549 // extract length from annotation
550 auto anno = f->getAnnotation(IR::Annotation::lengthAnnotation);
551 BUG_CHECK(anno != nullptr, "No length annotation on varbit field", f);
-
552 BUG_CHECK(anno->expr.size() == 1, "Expected exactly 1 argument", anno->expr);
-
553 headerLength = anno->expr.at(0);
-
554 // We keep going through the loop just to check whether there is another
-
555 // varbit field in the header.
-
556 } else if (fixedHeaderType == nullptr) {
-
557 // We only keep the fields prior to the varbit field
-
558 fields.push_back(f);
-
559 }
-
560 }
-
561 if (fixedHeaderType != nullptr) {
-
562 LOG3("Extracted fixed-size header type from " << type << " into " << fixedHeaderType);
-
563 fixed = new HeaderSplit;
-
564 fixed->fixedHeaderType = fixedHeaderType;
-
565 fixed->headerLength = headerLength;
-
566 fixedPart.emplace(type->name.name, fixed);
-
567 allTypeDecls.push_back(fixedHeaderType);
-
568 return fixed;
-
569 }
-
570 return nullptr;
-
571 }
-
572
-
580 class RewriteLength final : public Transform {
-
581 const IR::Type_Header *header;
-
582 const IR::Declaration *var;
-
583
-
584 public:
-
585 explicit RewriteLength(const IR::Type_Header *header, const IR::Declaration *var)
-
586 : header(header), var(var) {
-
587 setName("RewriteLength");
-
588 }
-
589
-
590 const IR::Node *postorder(IR::PathExpression *expression) override {
-
591 if (expression->path->absolute) return expression;
-
592 for (auto f : header->fields) {
-
593 if (f->name == expression->path->name)
-
594 return new IR::Member(expression->srcInfo, new IR::PathExpression(var->name),
-
595 f->name);
-
596 }
-
597 return expression;
-
598 }
-
599 };
-
600
-
601 public:
-
602 explicit FixExtracts(ProgramStructure *structure) : structure(structure) {
-
603 CHECK_NULL(structure);
-
604 setName("FixExtracts");
-
605 }
-
606
-
607 const IR::Node *postorder(IR::P4Program *program) override {
-
608 // P4-14 headers cannot refer to other types, so it is safe
-
609 // to prepend them to the list of declarations.
-
610 allTypeDecls.append(program->objects);
-
611 program->objects = allTypeDecls;
-
612 return program;
-
613 }
-
614
-
615 const IR::Node *postorder(IR::P4Parser *parser) override {
-
616 if (!varDecls.empty()) {
-
617 parser->parserLocals.append(varDecls);
-
618 varDecls.clear();
-
619 }
-
620 return parser;
-
621 }
-
622
-
623 const IR::Node *postorder(IR::MethodCallStatement *statement) override {
-
624 auto mce = getOriginal<IR::MethodCallStatement>()->methodCall;
-
625 LOG3("Looking up in extracts " << dbp(mce));
-
626 auto ht = ::P4::get(structure->extractsSynthesized, mce);
-
627 if (ht == nullptr)
-
628 // not an extract
-
629 return statement;
-
630
-
631 // This is an extract method invocation
-
632 BUG_CHECK(mce->arguments->size() == 1, "%1%: expected 1 argument", mce);
-
633 auto arg = mce->arguments->at(0);
-
634
-
635 auto fixed = splitHeaderType(ht);
-
636 if (fixed == nullptr) return statement;
-
637 CHECK_NULL(fixed->headerLength);
-
638 CHECK_NULL(fixed->fixedHeaderType);
-
639
-
640 auto result = new IR::IndexedVector<IR::StatOrDecl>();
-
641 cstring varName = structure->makeUniqueName("tmp_hdr"_cs);
-
642 auto var =
-
643 new IR::Declaration_Variable(IR::ID(varName), fixed->fixedHeaderType->to<IR::Type>());
-
644 varDecls.push_back(var);
-
645
-
646 // Create lookahead
-
647 auto member = mce->method->to<IR::Member>(); // should be packet_in.extract
-
648 CHECK_NULL(member);
-
649 auto typeArgs = new IR::Vector<IR::Type>();
-
650 typeArgs->push_back(fixed->fixedHeaderType->getP4Type());
-
651 auto lookaheadMethod =
-
652 new IR::Member(member->expr, P4::P4CoreLibrary::instance().packetIn.lookahead.name);
-
653 auto lookahead = new IR::MethodCallExpression(mce->srcInfo, lookaheadMethod, typeArgs,
- -
655 auto assign =
-
656 new IR::AssignmentStatement(mce->srcInfo, new IR::PathExpression(varName), lookahead);
-
657 result->push_back(assign);
-
658 LOG3("Created lookahead " << assign);
-
659
-
660 // Create actual extract
-
661 RewriteLength rewrite(fixed->fixedHeaderType, var);
-
662 rewrite.setCalledBy(this);
-
663 auto length = fixed->headerLength->apply(rewrite);
-
664 auto args = new IR::Vector<IR::Argument>();
-
665 args->push_back(arg->clone());
-
666 auto type = IR::Type_Bits::get(P4::P4CoreLibrary::instance().packetIn.extractSecondArgSize);
-
667 auto cast = new IR::Cast(Util::SourceInfo(), type, length);
-
668 args->push_back(new IR::Argument(cast));
-
669 auto expression = new IR::MethodCallExpression(mce->srcInfo, mce->method->clone(), args);
-
670 result->push_back(new IR::MethodCallStatement(expression));
-
671 return result;
-
672 }
-
673};
+
552 BUG_CHECK(anno->getExpr().size() == 1, "Expected exactly 1 argument",
+
553 anno->getExpr());
+
554 headerLength = anno->getExpr(0);
+
555 // We keep going through the loop just to check whether there is another
+
556 // varbit field in the header.
+
557 } else if (fixedHeaderType == nullptr) {
+
558 // We only keep the fields prior to the varbit field
+
559 fields.push_back(f);
+
560 }
+
561 }
+
562 if (fixedHeaderType != nullptr) {
+
563 LOG3("Extracted fixed-size header type from " << type << " into " << fixedHeaderType);
+
564 fixed = new HeaderSplit;
+
565 fixed->fixedHeaderType = fixedHeaderType;
+
566 fixed->headerLength = headerLength;
+
567 fixedPart.emplace(type->name.name, fixed);
+
568 allTypeDecls.push_back(fixedHeaderType);
+
569 return fixed;
+
570 }
+
571 return nullptr;
+
572 }
+
573
+
581 class RewriteLength final : public Transform {
+
582 const IR::Type_Header *header;
+
583 const IR::Declaration *var;
+
584
+
585 public:
+
586 explicit RewriteLength(const IR::Type_Header *header, const IR::Declaration *var)
+
587 : header(header), var(var) {
+
588 setName("RewriteLength");
+
589 }
+
590
+
591 const IR::Node *postorder(IR::PathExpression *expression) override {
+
592 if (expression->path->absolute) return expression;
+
593 for (auto f : header->fields) {
+
594 if (f->name == expression->path->name)
+
595 return new IR::Member(expression->srcInfo, new IR::PathExpression(var->name),
+
596 f->name);
+
597 }
+
598 return expression;
+
599 }
+
600 };
+
601
+
602 public:
+
603 explicit FixExtracts(ProgramStructure *structure) : structure(structure) {
+
604 CHECK_NULL(structure);
+
605 setName("FixExtracts");
+
606 }
+
607
+
608 const IR::Node *postorder(IR::P4Program *program) override {
+
609 // P4-14 headers cannot refer to other types, so it is safe
+
610 // to prepend them to the list of declarations.
+
611 allTypeDecls.append(program->objects);
+
612 program->objects = allTypeDecls;
+
613 return program;
+
614 }
+
615
+
616 const IR::Node *postorder(IR::P4Parser *parser) override {
+
617 if (!varDecls.empty()) {
+
618 parser->parserLocals.append(varDecls);
+
619 varDecls.clear();
+
620 }
+
621 return parser;
+
622 }
+
623
+
624 const IR::Node *postorder(IR::MethodCallStatement *statement) override {
+
625 auto mce = getOriginal<IR::MethodCallStatement>()->methodCall;
+
626 LOG3("Looking up in extracts " << dbp(mce));
+
627 auto ht = ::P4::get(structure->extractsSynthesized, mce);
+
628 if (ht == nullptr)
+
629 // not an extract
+
630 return statement;
+
631
+
632 // This is an extract method invocation
+
633 BUG_CHECK(mce->arguments->size() == 1, "%1%: expected 1 argument", mce);
+
634 auto arg = mce->arguments->at(0);
+
635
+
636 auto fixed = splitHeaderType(ht);
+
637 if (fixed == nullptr) return statement;
+
638 CHECK_NULL(fixed->headerLength);
+
639 CHECK_NULL(fixed->fixedHeaderType);
+
640
+
641 auto result = new IR::IndexedVector<IR::StatOrDecl>();
+
642 cstring varName = structure->makeUniqueName("tmp_hdr"_cs);
+
643 auto var =
+
644 new IR::Declaration_Variable(IR::ID(varName), fixed->fixedHeaderType->to<IR::Type>());
+
645 varDecls.push_back(var);
+
646
+
647 // Create lookahead
+
648 auto member = mce->method->to<IR::Member>(); // should be packet_in.extract
+
649 CHECK_NULL(member);
+
650 auto typeArgs = new IR::Vector<IR::Type>();
+
651 typeArgs->push_back(fixed->fixedHeaderType->getP4Type());
+
652 auto lookaheadMethod =
+
653 new IR::Member(member->expr, P4::P4CoreLibrary::instance().packetIn.lookahead.name);
+
654 auto lookahead = new IR::MethodCallExpression(mce->srcInfo, lookaheadMethod, typeArgs,
+ +
656 auto assign =
+
657 new IR::AssignmentStatement(mce->srcInfo, new IR::PathExpression(varName), lookahead);
+
658 result->push_back(assign);
+
659 LOG3("Created lookahead " << assign);
+
660
+
661 // Create actual extract
+
662 RewriteLength rewrite(fixed->fixedHeaderType, var);
+
663 rewrite.setCalledBy(this);
+
664 auto length = fixed->headerLength->apply(rewrite);
+
665 auto args = new IR::Vector<IR::Argument>();
+
666 args->push_back(arg->clone());
+
667 auto type = IR::Type_Bits::get(P4::P4CoreLibrary::instance().packetIn.extractSecondArgSize);
+
668 auto cast = new IR::Cast(Util::SourceInfo(), type, length);
+
669 args->push_back(new IR::Argument(cast));
+
670 auto expression = new IR::MethodCallExpression(mce->srcInfo, mce->method->clone(), args);
+
671 result->push_back(new IR::MethodCallStatement(expression));
+
672 return result;
+
673 }
+
674};
-
674
-
675/*
-
676 This class is used to adjust the expressions in a @length
-
677 annotation on a varbit field. The P4-14 to P4-16 converter inserts
-
678 these annotations on the unique varbit field in a header; the
-
679 annotations are created from the header max_length and length
-
680 fields. The length annotation contains an expression which is used
-
681 to compute the length of the varbit field. The problem that we are
-
682 solving here is that expression semantics is different in P4-14 and
-
683 P4-16. Consider the canonical case of an IPv4 header:
-
684
-
685 header_type ipv4_t {
-
686 fields {
-
687 version : 4;
-
688 ihl : 4;
-
689 // lots of other fields...
-
690 options: *;
-
691 }
-
692 length : ihl*4;
-
693 max_length : 64;
-
694 }
-
695
-
696 This generates the following P4-16 structure:
-
697 struct ipv4_t {
-
698 bit<4> version;
-
699 bit<4> ihl;
-
700 @length((ihl*4) * 8 - 20) // 20 is the size of the fixed part of the header
-
701 varbit<(64 - 20) * 8> options;
-
702 }
-
703
-
704 When such a header is used in an extract statement, the @length
-
705 annotation is used to compute the second argument of the extract
-
706 method. The problem we are solving here is the fact that ihl is
-
707 only represented on 4 bits, so the evaluation ihl*4 will actually
-
708 overflow. This is not a problem in P4-14, but it is a problem in
-
709 P4-16. Unfortunately there is no easy way to guess how many bits
-
710 are required to evaluate this computation. So what we do is to cast
-
711 all PathExpressions to 32-bits. This is really just a heuristic,
-
712 but since the semantics of P4-14 expressions is unclear, we cannot
-
713 do much better than this.
-
714*/
-
-
715class AdjustLengths : public Transform {
-
716 public:
-
717 AdjustLengths() { setName("AdjustLengths"); }
-
718 const IR::Node *postorder(IR::PathExpression *expression) override {
-
719 auto anno = findContext<IR::Annotation>();
-
720 if (anno == nullptr) return expression;
-
721 if (anno->name != "length") return expression;
-
722
-
723 LOG3("Inserting cast in length annotation");
-
724 auto type = IR::Type_Bits::get(32);
-
725 auto cast = new IR::Cast(expression->srcInfo, type, expression);
-
726 return cast;
-
727 }
-
728};
+
675
+
676/*
+
677 This class is used to adjust the expressions in a @length
+
678 annotation on a varbit field. The P4-14 to P4-16 converter inserts
+
679 these annotations on the unique varbit field in a header; the
+
680 annotations are created from the header max_length and length
+
681 fields. The length annotation contains an expression which is used
+
682 to compute the length of the varbit field. The problem that we are
+
683 solving here is that expression semantics is different in P4-14 and
+
684 P4-16. Consider the canonical case of an IPv4 header:
+
685
+
686 header_type ipv4_t {
+
687 fields {
+
688 version : 4;
+
689 ihl : 4;
+
690 // lots of other fields...
+
691 options: *;
+
692 }
+
693 length : ihl*4;
+
694 max_length : 64;
+
695 }
+
696
+
697 This generates the following P4-16 structure:
+
698 struct ipv4_t {
+
699 bit<4> version;
+
700 bit<4> ihl;
+
701 @length((ihl*4) * 8 - 20) // 20 is the size of the fixed part of the header
+
702 varbit<(64 - 20) * 8> options;
+
703 }
+
704
+
705 When such a header is used in an extract statement, the @length
+
706 annotation is used to compute the second argument of the extract
+
707 method. The problem we are solving here is the fact that ihl is
+
708 only represented on 4 bits, so the evaluation ihl*4 will actually
+
709 overflow. This is not a problem in P4-14, but it is a problem in
+
710 P4-16. Unfortunately there is no easy way to guess how many bits
+
711 are required to evaluate this computation. So what we do is to cast
+
712 all PathExpressions to 32-bits. This is really just a heuristic,
+
713 but since the semantics of P4-14 expressions is unclear, we cannot
+
714 do much better than this.
+
715*/
+
+
716class AdjustLengths : public Transform {
+
717 public:
+
718 AdjustLengths() { setName("AdjustLengths"); }
+
719 const IR::Node *postorder(IR::PathExpression *expression) override {
+
720 auto anno = findContext<IR::Annotation>();
+
721 if (anno == nullptr) return expression;
+
722 if (anno->name != "length") return expression;
+
723
+
724 LOG3("Inserting cast in length annotation");
+
725 auto type = IR::Type_Bits::get(32);
+
726 auto cast = new IR::Cast(expression->srcInfo, type, expression);
+
727 return cast;
+
728 }
+
729};
-
729
-
- -
733 public:
-
734 DetectDuplicates() { setName("DetectDuplicates"); }
-
735
-
736 bool preorder(const IR::V1Program *program) override {
-
737 auto &map = program->scope;
-
738 auto firstWithKey = map.begin();
-
739 while (firstWithKey != map.end()) {
-
740 auto key = firstWithKey->first;
-
741 auto range = map.equal_range(key);
-
742 for (auto s = range.first; s != range.second; s++) {
-
743 auto n = s;
-
744 for (n++; n != range.second; n++) {
-
745 auto e1 = s->second;
-
746 auto e2 = n->second;
-
747 if (e1->node_type_name() == e2->node_type_name()) {
-
748 if (e1->srcInfo.getStart().isValid())
-
749 ::P4::error(ErrorType::ERR_DUPLICATE, "%1%: same name as %2%", e1, e2);
-
750 else
-
751 // This name is probably standard_metadata_t, a built-in declaration
-
752 ::P4::error(ErrorType::ERR_INVALID,
-
753 "%1% is invalid; name %2% is reserved", e2, key);
-
754 }
-
755 }
-
756 }
-
757 firstWithKey = range.second;
-
758 }
-
759 // prune; we're done; everything is top-level
-
760 return false;
-
761 }
-
762};
+
730
+
+ +
734 public:
+
735 DetectDuplicates() { setName("DetectDuplicates"); }
+
736
+
737 bool preorder(const IR::V1Program *program) override {
+
738 auto &map = program->scope;
+
739 auto firstWithKey = map.begin();
+
740 while (firstWithKey != map.end()) {
+
741 auto key = firstWithKey->first;
+
742 auto range = map.equal_range(key);
+
743 for (auto s = range.first; s != range.second; s++) {
+
744 auto n = s;
+
745 for (n++; n != range.second; n++) {
+
746 auto e1 = s->second;
+
747 auto e2 = n->second;
+
748 if (e1->node_type_name() == e2->node_type_name()) {
+
749 if (e1->srcInfo.getStart().isValid())
+
750 ::P4::error(ErrorType::ERR_DUPLICATE, "%1%: same name as %2%", e1, e2);
+
751 else
+
752 // This name is probably standard_metadata_t, a built-in declaration
+
753 ::P4::error(ErrorType::ERR_INVALID,
+
754 "%1% is invalid; name %2% is reserved", e2, key);
+
755 }
+
756 }
+
757 }
+
758 firstWithKey = range.second;
+
759 }
+
760 // prune; we're done; everything is top-level
+
761 return false;
+
762 }
+
763};
-
763
-
764// If a parser state has a pragma @packet_entry, it is treated as a new entry
-
765// point to the parser.
-
- -
767 ProgramStructure *structure;
-
768
-
769 public:
-
770 explicit CheckIfMultiEntryPoint(ProgramStructure *structure) : structure(structure) {
-
771 setName("CheckIfMultiEntryPoint");
-
772 }
-
773 bool preorder(const IR::ParserState *state) {
-
774 for (const auto *anno : state->getAnnotations()) {
-
775 if (anno->name == "packet_entry") {
-
776 structure->parserEntryPoints.emplace(state->name, state);
-
777 }
-
778 }
-
779 return false;
-
780 }
-
781};
+
764
+
765// If a parser state has a pragma @packet_entry, it is treated as a new entry
+
766// point to the parser.
+
+ +
768 ProgramStructure *structure;
+
769
+
770 public:
+
771 explicit CheckIfMultiEntryPoint(ProgramStructure *structure) : structure(structure) {
+
772 setName("CheckIfMultiEntryPoint");
+
773 }
+
774 bool preorder(const IR::ParserState *state) {
+
775 for (const auto *anno : state->getAnnotations()) {
+
776 if (anno->name == "packet_entry") {
+
777 structure->parserEntryPoints.emplace(state->name, state);
+
778 }
+
779 }
+
780 return false;
+
781 }
+
782};
-
782
-
783// Generate a new start state that selects on the meta variable,
-
784// standard_metadata.instance_type and branches into one of the entry points.
-
785// The backend is responsible for removing the use of the meta variable and
-
786// eliminate the new start state. The new start state is not added if the user
-
787// does not use the @packet_entry pragma.
-
- -
789 ProgramStructure *structure;
-
790 IR::Vector<IR::Node> allTypeDecls;
- - -
793 cstring newStartState;
-
794 cstring newInstanceType;
-
795
-
796 public:
-
797 explicit InsertCompilerGeneratedStartState(ProgramStructure *structure) : structure(structure) {
-
798 setName("InsertCompilerGeneratedStartState");
-
799 structure->allNames.insert({IR::ParserState::start, 0});
-
800 structure->allNames.insert({"InstanceType"_cs, 0});
-
801 newStartState = structure->makeUniqueName(IR::ParserState::start);
-
802 newInstanceType = structure->makeUniqueName("InstanceType"_cs);
-
803 }
-
804
-
805 const IR::Node *postorder(IR::P4Program *program) override {
-
806 allTypeDecls.append(program->objects);
-
807 program->objects = allTypeDecls;
-
808 return program;
-
809 }
-
810
-
811 // rename original start state
-
812 const IR::Node *postorder(IR::ParserState *state) override {
-
813 if (structure->parserEntryPoints.empty()) return state;
-
814 if (state->name == IR::ParserState::start) {
-
815 state->name = newStartState;
-
816 }
-
817 return state;
-
818 }
-
819
-
820 // Rename any path refering to original start state
-
821 const IR::Node *postorder(IR::Path *path) override {
-
822 if (structure->parserEntryPoints.empty()) return path;
-
823 // At this point any identifier called start should have been renamed
-
824 // to unique name (e.g. start_1) => we can safely assume that any
-
825 // "start" refers to the parser state
-
826 if (path->name.name != IR::ParserState::start) return path;
-
827 // Just to make sure we can also check it explicitly
-
828 auto pe = getContext()->node->to<IR::PathExpression>();
-
829 auto sc = findContext<IR::SelectCase>();
-
830 auto ps = findContext<IR::ParserState>();
-
831 // Either the path is within SelectCase->state<PathExpression>->path
-
832 if (pe && ((sc && pe->equiv(*sc->state->to<IR::PathExpression>())) ||
-
833 // Or just within ParserState->selectExpression<PathExpression>->path
-
834 (ps && pe->equiv(*ps->selectExpression->to<IR::PathExpression>()))))
-
835 path->name = newStartState;
-
836 return path;
-
837 }
-
838
-
839 const IR::Node *postorder(IR::P4Parser *parser) override {
-
840 if (structure->parserEntryPoints.empty()) return parser;
- -
842 // transition to original start state
-
843 members.push_back(new IR::SerEnumMember("START", new IR::Constant(0)));
-
844 selCases.push_back(new IR::SelectCase(
-
845 new IR::Member(new IR::TypeNameExpression(new IR::Type_Name(newInstanceType)),
-
846 "START"_cs),
-
847 new IR::PathExpression(new IR::Path(newStartState))));
-
848
-
849 // transition to addtional entry points
-
850 unsigned idx = 1;
-
851 for (auto p : structure->parserEntryPoints) {
-
852 members.push_back(new IR::SerEnumMember(p.first, new IR::Constant(idx++)));
-
853 selCases.push_back(new IR::SelectCase(
-
854 new IR::Member(new IR::TypeNameExpression(new IR::Type_Name(newInstanceType)),
-
855 p.first),
-
856 new IR::PathExpression(new IR::Path(p.second->name))));
-
857 }
-
858 auto instEnum = new IR::Type_SerEnum(
-
859 newInstanceType,
-
860 {new IR::Annotation(IR::Annotation::nameAnnotation, ".$InstanceType"_cs)},
-
861 IR::Type_Bits::get(32), members);
-
862 allTypeDecls.push_back(instEnum);
-
863
- -
865 selExpr.push_back(new IR::Cast(
-
866 new IR::Type_Name(newInstanceType),
-
867 new IR::Member(new IR::PathExpression(new IR::Path("standard_metadata"_cs)),
-
868 "instance_type"_cs)));
-
869 auto selects = new IR::SelectExpression(new IR::ListExpression(selExpr), selCases);
-
870 auto startState = new IR::ParserState(
-
871 IR::ParserState::start,
-
872 {new IR::Annotation(IR::Annotation::nameAnnotation, ".$start"_cs)}, selects);
-
873 parserStates.push_back(startState);
-
874
-
875 if (!parserStates.empty()) {
-
876 parser->states.append(parserStates);
-
877 parserStates.clear();
-
878 }
-
879 return parser;
-
880 }
-
881};
+
783
+
784// Generate a new start state that selects on the meta variable,
+
785// standard_metadata.instance_type and branches into one of the entry points.
+
786// The backend is responsible for removing the use of the meta variable and
+
787// eliminate the new start state. The new start state is not added if the user
+
788// does not use the @packet_entry pragma.
+
+ +
790 ProgramStructure *structure;
+
791 IR::Vector<IR::Node> allTypeDecls;
+ + +
794 cstring newStartState;
+
795 cstring newInstanceType;
+
796
+
797 public:
+
798 explicit InsertCompilerGeneratedStartState(ProgramStructure *structure) : structure(structure) {
+
799 setName("InsertCompilerGeneratedStartState");
+
800 structure->allNames.insert({IR::ParserState::start, 0});
+
801 structure->allNames.insert({"InstanceType"_cs, 0});
+
802 newStartState = structure->makeUniqueName(IR::ParserState::start);
+
803 newInstanceType = structure->makeUniqueName("InstanceType"_cs);
+
804 }
+
805
+
806 const IR::Node *postorder(IR::P4Program *program) override {
+
807 allTypeDecls.append(program->objects);
+
808 program->objects = allTypeDecls;
+
809 return program;
+
810 }
+
811
+
812 // rename original start state
+
813 const IR::Node *postorder(IR::ParserState *state) override {
+
814 if (structure->parserEntryPoints.empty()) return state;
+
815 if (state->name == IR::ParserState::start) {
+
816 state->name = newStartState;
+
817 }
+
818 return state;
+
819 }
+
820
+
821 // Rename any path refering to original start state
+
822 const IR::Node *postorder(IR::Path *path) override {
+
823 if (structure->parserEntryPoints.empty()) return path;
+
824 // At this point any identifier called start should have been renamed
+
825 // to unique name (e.g. start_1) => we can safely assume that any
+
826 // "start" refers to the parser state
+
827 if (path->name.name != IR::ParserState::start) return path;
+
828 // Just to make sure we can also check it explicitly
+
829 auto pe = getContext()->node->to<IR::PathExpression>();
+
830 auto sc = findContext<IR::SelectCase>();
+
831 auto ps = findContext<IR::ParserState>();
+
832 // Either the path is within SelectCase->state<PathExpression>->path
+
833 if (pe && ((sc && pe->equiv(*sc->state->to<IR::PathExpression>())) ||
+
834 // Or just within ParserState->selectExpression<PathExpression>->path
+
835 (ps && pe->equiv(*ps->selectExpression->to<IR::PathExpression>()))))
+
836 path->name = newStartState;
+
837 return path;
+
838 }
+
839
+
840 const IR::Node *postorder(IR::P4Parser *parser) override {
+
841 if (structure->parserEntryPoints.empty()) return parser;
+ +
843 // transition to original start state
+
844 members.push_back(new IR::SerEnumMember("START", new IR::Constant(0)));
+
845 selCases.push_back(new IR::SelectCase(
+
846 new IR::Member(new IR::TypeNameExpression(new IR::Type_Name(newInstanceType)),
+
847 "START"_cs),
+
848 new IR::PathExpression(new IR::Path(newStartState))));
+
849
+
850 // transition to addtional entry points
+
851 unsigned idx = 1;
+
852 for (auto p : structure->parserEntryPoints) {
+
853 members.push_back(new IR::SerEnumMember(p.first, new IR::Constant(idx++)));
+
854 selCases.push_back(new IR::SelectCase(
+
855 new IR::Member(new IR::TypeNameExpression(new IR::Type_Name(newInstanceType)),
+
856 p.first),
+
857 new IR::PathExpression(new IR::Path(p.second->name))));
+
858 }
+
859 auto instEnum = new IR::Type_SerEnum(
+
860 newInstanceType,
+
861 {new IR::Annotation(IR::Annotation::nameAnnotation, ".$InstanceType"_cs)},
+
862 IR::Type_Bits::get(32), members);
+
863 allTypeDecls.push_back(instEnum);
+
864
+ +
866 selExpr.push_back(new IR::Cast(
+
867 new IR::Type_Name(newInstanceType),
+
868 new IR::Member(new IR::PathExpression(new IR::Path("standard_metadata"_cs)),
+
869 "instance_type"_cs)));
+
870 auto selects = new IR::SelectExpression(new IR::ListExpression(selExpr), selCases);
+
871 auto startState = new IR::ParserState(
+
872 IR::ParserState::start,
+
873 {new IR::Annotation(IR::Annotation::nameAnnotation, ".$start"_cs)}, selects);
+
874 parserStates.push_back(startState);
+
875
+
876 if (!parserStates.empty()) {
+
877 parser->states.append(parserStates);
+
878 parserStates.clear();
+
879 }
+
880 return parser;
+
881 }
+
882};
-
882
-
- -
887 public:
-
888 explicit FixMultiEntryPoint(ProgramStructure *structure) {
-
889 setName("FixMultiEntryPoint");
-
890 passes.emplace_back(new CheckIfMultiEntryPoint(structure));
-
891 passes.emplace_back(new InsertCompilerGeneratedStartState(structure));
-
892 }
-
893};
+
883
+
+ +
888 public:
+
889 explicit FixMultiEntryPoint(ProgramStructure *structure) {
+
890 setName("FixMultiEntryPoint");
+
891 passes.emplace_back(new CheckIfMultiEntryPoint(structure));
+
892 passes.emplace_back(new InsertCompilerGeneratedStartState(structure));
+
893 }
+
894};
-
894
-
- -
904 ProgramStructure *structure;
-
905 const IR::Type_Struct *stdType = nullptr;
-
906 const IR::Type_Struct *userType = nullptr;
-
907 const IR::Type_Struct *intrType = nullptr;
-
908 const IR::Type_Struct *queueType = nullptr;
-
909 const IR::StructField *intrField = nullptr;
-
910 const IR::StructField *queueField = nullptr;
-
911
-
912 public:
-
913 explicit MoveIntrinsicMetadata(ProgramStructure *structure) : structure(structure) {
-
914 CHECK_NULL(structure);
-
915 setName("MoveIntrinsicMetadata");
-
916 }
-
917 const IR::Node *preorder(IR::P4Program *program) override {
-
918 stdType = program->getDeclsByName(structure->v1model.standardMetadataType.name)
-
919 ->single()
-
920 ->to<IR::Type_Struct>();
-
921 userType = program->getDeclsByName(structure->v1model.metadataType.name)
-
922 ->single()
-
923 ->to<IR::Type_Struct>();
-
924 CHECK_NULL(stdType);
-
925 CHECK_NULL(userType);
-
926 intrField = userType->getField(structure->v1model.intrinsicMetadata.name);
-
927 if (intrField != nullptr) {
-
928 auto intrTypeName = intrField->type;
-
929 auto tn = intrTypeName->to<IR::Type_Name>();
-
930 BUG_CHECK(tn, "%1%: expected a Type_Name", intrTypeName);
-
931 auto nt = program->getDeclsByName(tn->path->name)->nextOrDefault();
-
932 if (nt == nullptr || !nt->is<IR::Type_Struct>()) {
-
933 ::P4::error(ErrorType::ERR_INVALID, "%1%: expected a structure", tn);
-
934 return program;
-
935 }
-
936 intrType = nt->to<IR::Type_Struct>();
-
937 LOG2("Intrinsic metadata type " << intrType);
-
938 }
-
939
-
940 queueField = userType->getField(structure->v1model.queueingMetadata.name);
-
941 if (queueField != nullptr) {
-
942 auto queueTypeName = queueField->type;
-
943 auto tn = queueTypeName->to<IR::Type_Name>();
-
944 BUG_CHECK(tn, "%1%: expected a Type_Name", queueTypeName);
-
945 auto nt = program->getDeclsByName(tn->path->name)->nextOrDefault();
-
946 if (nt == nullptr || !nt->is<IR::Type_Struct>()) {
-
947 ::P4::error(ErrorType::ERR_INVALID, "%1%: expected a structure", tn);
-
948 return program;
-
949 }
-
950 queueType = nt->to<IR::Type_Struct>();
-
951 LOG2("Queueing metadata type " << queueType);
-
952 }
-
953 return program;
-
954 }
-
955
-
956 const IR::Node *postorder(IR::Type_Struct *type) override {
-
957 if (getOriginal() == stdType) {
-
958 if (intrType != nullptr) {
-
959 for (auto f : intrType->fields) {
-
960 if (type->fields.getDeclaration(f->name) == nullptr) {
-
961 ::P4::error(ErrorType::ERR_NOT_FOUND,
-
962 "%1%: no such field in standard_metadata", f->name);
-
963 LOG2("standard_metadata: " << type);
-
964 }
-
965 }
-
966 }
-
967 if (queueType != nullptr) {
-
968 for (auto f : queueType->fields) {
-
969 if (type->fields.getDeclaration(f->name) == nullptr) {
-
970 ::P4::error(ErrorType::ERR_NOT_FOUND,
-
971 "%1%: no such field in standard_metadata", f->name);
-
972 LOG2("standard_metadata: " << type);
-
973 }
-
974 }
-
975 }
-
976 }
-
977 return type;
-
978 }
-
979
-
980 const IR::Node *postorder(IR::StructField *field) override {
-
981 if (getOriginal() == intrField || getOriginal() == queueField)
-
982 // delete it from its parent
-
983 return nullptr;
-
984 return field;
-
985 }
-
986
-
987 const IR::Node *postorder(IR::Member *member) override {
-
988 // We rewrite expressions like meta.intrinsic_metadata.x as
-
989 // standard_metadata.x. We know that these parameter names
-
990 // are always the same.
-
991 if (member->member != structure->v1model.intrinsicMetadata.name &&
-
992 member->member != structure->v1model.queueingMetadata.name)
-
993 return member;
-
994 auto pe = member->expr->to<IR::PathExpression>();
-
995 if (pe == nullptr || pe->path->absolute) return member;
-
996 if (pe->path->name == structure->v1model.parser.metadataParam.name) {
-
997 LOG2("Renaming reference " << member);
-
998 return new IR::PathExpression(new IR::Path(
-
999 member->expr->srcInfo,
-
1000 IR::ID(pe->path->name.srcInfo, structure->v1model.standardMetadata.name)));
-
1001 }
-
1002 return member;
-
1003 }
-
1004};
+
895
+
+ +
905 ProgramStructure *structure;
+
906 const IR::Type_Struct *stdType = nullptr;
+
907 const IR::Type_Struct *userType = nullptr;
+
908 const IR::Type_Struct *intrType = nullptr;
+
909 const IR::Type_Struct *queueType = nullptr;
+
910 const IR::StructField *intrField = nullptr;
+
911 const IR::StructField *queueField = nullptr;
+
912
+
913 public:
+
914 explicit MoveIntrinsicMetadata(ProgramStructure *structure) : structure(structure) {
+
915 CHECK_NULL(structure);
+
916 setName("MoveIntrinsicMetadata");
+
917 }
+
918 const IR::Node *preorder(IR::P4Program *program) override {
+
919 stdType = program->getDeclsByName(structure->v1model.standardMetadataType.name)
+
920 ->single()
+
921 ->to<IR::Type_Struct>();
+
922 userType = program->getDeclsByName(structure->v1model.metadataType.name)
+
923 ->single()
+
924 ->to<IR::Type_Struct>();
+
925 CHECK_NULL(stdType);
+
926 CHECK_NULL(userType);
+
927 intrField = userType->getField(structure->v1model.intrinsicMetadata.name);
+
928 if (intrField != nullptr) {
+
929 auto intrTypeName = intrField->type;
+
930 auto tn = intrTypeName->to<IR::Type_Name>();
+
931 BUG_CHECK(tn, "%1%: expected a Type_Name", intrTypeName);
+
932 auto nt = program->getDeclsByName(tn->path->name)->nextOrDefault();
+
933 if (nt == nullptr || !nt->is<IR::Type_Struct>()) {
+
934 ::P4::error(ErrorType::ERR_INVALID, "%1%: expected a structure", tn);
+
935 return program;
+
936 }
+
937 intrType = nt->to<IR::Type_Struct>();
+
938 LOG2("Intrinsic metadata type " << intrType);
+
939 }
+
940
+
941 queueField = userType->getField(structure->v1model.queueingMetadata.name);
+
942 if (queueField != nullptr) {
+
943 auto queueTypeName = queueField->type;
+
944 auto tn = queueTypeName->to<IR::Type_Name>();
+
945 BUG_CHECK(tn, "%1%: expected a Type_Name", queueTypeName);
+
946 auto nt = program->getDeclsByName(tn->path->name)->nextOrDefault();
+
947 if (nt == nullptr || !nt->is<IR::Type_Struct>()) {
+
948 ::P4::error(ErrorType::ERR_INVALID, "%1%: expected a structure", tn);
+
949 return program;
+
950 }
+
951 queueType = nt->to<IR::Type_Struct>();
+
952 LOG2("Queueing metadata type " << queueType);
+
953 }
+
954 return program;
+
955 }
+
956
+
957 const IR::Node *postorder(IR::Type_Struct *type) override {
+
958 if (getOriginal() == stdType) {
+
959 if (intrType != nullptr) {
+
960 for (auto f : intrType->fields) {
+
961 if (type->fields.getDeclaration(f->name) == nullptr) {
+
962 ::P4::error(ErrorType::ERR_NOT_FOUND,
+
963 "%1%: no such field in standard_metadata", f->name);
+
964 LOG2("standard_metadata: " << type);
+
965 }
+
966 }
+
967 }
+
968 if (queueType != nullptr) {
+
969 for (auto f : queueType->fields) {
+
970 if (type->fields.getDeclaration(f->name) == nullptr) {
+
971 ::P4::error(ErrorType::ERR_NOT_FOUND,
+
972 "%1%: no such field in standard_metadata", f->name);
+
973 LOG2("standard_metadata: " << type);
+
974 }
+
975 }
+
976 }
+
977 }
+
978 return type;
+
979 }
+
980
+
981 const IR::Node *postorder(IR::StructField *field) override {
+
982 if (getOriginal() == intrField || getOriginal() == queueField)
+
983 // delete it from its parent
+
984 return nullptr;
+
985 return field;
+
986 }
+
987
+
988 const IR::Node *postorder(IR::Member *member) override {
+
989 // We rewrite expressions like meta.intrinsic_metadata.x as
+
990 // standard_metadata.x. We know that these parameter names
+
991 // are always the same.
+
992 if (member->member != structure->v1model.intrinsicMetadata.name &&
+
993 member->member != structure->v1model.queueingMetadata.name)
+
994 return member;
+
995 auto pe = member->expr->to<IR::PathExpression>();
+
996 if (pe == nullptr || pe->path->absolute) return member;
+
997 if (pe->path->name == structure->v1model.parser.metadataParam.name) {
+
998 LOG2("Renaming reference " << member);
+
999 return new IR::PathExpression(new IR::Path(
+
1000 member->expr->srcInfo,
+
1001 IR::ID(pe->path->name.srcInfo, structure->v1model.standardMetadata.name)));
+
1002 }
+
1003 return member;
+
1004 }
+
1005};
-
1005
-
- -
1009 ProgramStructure *structure;
-
1010
-
1011 void add(const IR::Primitive *primitive, unsigned operand) {
-
1012 if (primitive->operands.size() <= operand) {
-
1013 // not enough arguments, do nothing.
-
1014 // resubmit and recirculate have optional arguments
-
1015 return;
-
1016 }
-
1017 auto expression = primitive->operands.at(operand);
-
1018 if (!expression->is<IR::PathExpression>()) {
-
1019 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected a field list", expression);
-
1020 return;
-
1021 }
-
1022 auto nr = expression->to<IR::PathExpression>();
-
1023 auto fl = structure->field_lists.get(nr->path->name);
-
1024 if (fl == nullptr) {
-
1025 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: Expected a field list", expression);
-
1026 return;
-
1027 }
-
1028 LOG3("Recirculated " << nr->path->name);
-
1029 structure->allFieldLists.emplace(fl);
-
1030 }
-
1031
-
1032 public:
-
1033 explicit FindRecirculated(ProgramStructure *structure) : structure(structure) {
-
1034 CHECK_NULL(structure);
-
1035 setName("FindRecirculated");
-
1036 }
-
1037
-
1038 void postorder(const IR::Primitive *primitive) override {
-
1039 if (primitive->name == "recirculate" || primitive->name == "resubmit") {
-
1040 add(primitive, 0);
-
1041 } else if (primitive->name.startsWith("clone") && primitive->operands.size() == 2) {
-
1042 add(primitive, 1);
-
1043 }
-
1044 }
-
1045};
+
1006
+
+ +
1010 ProgramStructure *structure;
+
1011
+
1012 void add(const IR::Primitive *primitive, unsigned operand) {
+
1013 if (primitive->operands.size() <= operand) {
+
1014 // not enough arguments, do nothing.
+
1015 // resubmit and recirculate have optional arguments
+
1016 return;
+
1017 }
+
1018 auto expression = primitive->operands.at(operand);
+
1019 if (!expression->is<IR::PathExpression>()) {
+
1020 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: expected a field list", expression);
+
1021 return;
+
1022 }
+
1023 auto nr = expression->to<IR::PathExpression>();
+
1024 auto fl = structure->field_lists.get(nr->path->name);
+
1025 if (fl == nullptr) {
+
1026 ::P4::error(ErrorType::ERR_EXPECTED, "%1%: Expected a field list", expression);
+
1027 return;
+
1028 }
+
1029 LOG3("Recirculated " << nr->path->name);
+
1030 structure->allFieldLists.emplace(fl);
+
1031 }
+
1032
+
1033 public:
+
1034 explicit FindRecirculated(ProgramStructure *structure) : structure(structure) {
+
1035 CHECK_NULL(structure);
+
1036 setName("FindRecirculated");
+
1037 }
+
1038
+
1039 void postorder(const IR::Primitive *primitive) override {
+
1040 if (primitive->name == "recirculate" || primitive->name == "resubmit") {
+
1041 add(primitive, 0);
+
1042 } else if (primitive->name.startsWith("clone") && primitive->operands.size() == 2) {
+
1043 add(primitive, 1);
+
1044 }
+
1045 }
+
1046};
-
1046
-
1048
-
1049// Is fed a P4-14 program and outputs an equivalent P4-16 program in v1model
-
-
1050class Converter : public PassManager {
-
1051 public:
-
1052 ProgramStructure *structure;
-
1053 static ProgramStructure *(*createProgramStructure)();
-
1054 static ConversionContext *(*createConversionContext)();
-
1055 Converter();
-
1056 void loadModel() { structure->loadModel(); }
-
1057 Visitor::profile_t init_apply(const IR::Node *node) override;
-
1058};
+
1047
+
1049
+
1050// Is fed a P4-14 program and outputs an equivalent P4-16 program in v1model
+
+
1051class Converter : public PassManager {
+
1052 public:
+
1053 ProgramStructure *structure;
+
1054 static ProgramStructure *(*createProgramStructure)();
+
1055 static ConversionContext *(*createConversionContext)();
+
1056 Converter();
+
1057 void loadModel() { structure->loadModel(); }
+
1058 Visitor::profile_t init_apply(const IR::Node *node) override;
+
1059};
-
1059
-
1060} // namespace P4::P4V1
-
1061
-
1062#endif /* FRONTENDS_P4_14_FROMV1_0_CONVERTERS_H_ */
+
1060
+
1061} // namespace P4::P4V1
+
1062
+
1063#endif /* FRONTENDS_P4_14_FROMV1_0_CONVERTERS_H_ */
Definition node.h:52
Definition node.h:94
Definition vector.h:59
Definition visitor.h:400
Definition coreLibrary.h:103
-
Definition converters.h:715
-
Definition converters.h:766
+
Definition converters.h:716
+
Definition converters.h:767
Definition converters.h:282
Definition converters.h:406
Definition frontends/p4-14/fromv1.0/programStructure.h:32
-
Definition converters.h:1050
-
Definition converters.h:732
+
Definition converters.h:1051
+
Definition converters.h:733
Definition converters.h:177
Definition converters.h:34
Definition converters.h:97
-
static void addConverter(cstring type, ExternConverter *)
Definition converters.cpp:582
-
Definition converters.h:1008
+
static void addConverter(cstring type, ExternConverter *)
Definition converters.cpp:583
+
Definition converters.h:1009
Definition converters.h:507
-
Definition converters.h:886
- -
Definition converters.h:903
+
Definition converters.h:887
+ +
Definition converters.h:904
Definition converters.h:140
Information about the structure of a P4-14 program, used to convert it to a P4-16 program.
Definition frontends/p4-14/fromv1.0/programStructure.h:45
ordered_set< const IR::FieldList * > allFieldLists
Field lists that appear in the program.
Definition frontends/p4-14/fromv1.0/programStructure.h:165
diff --git a/dpdk_2control-plane_2bfruntime__arch__handler_8h_source.html b/dpdk_2control-plane_2bfruntime__arch__handler_8h_source.html index cc53666f9e7..bfc8209a60b 100644 --- a/dpdk_2control-plane_2bfruntime__arch__handler_8h_source.html +++ b/dpdk_2control-plane_2bfruntime__arch__handler_8h_source.html @@ -551,14 +551,14 @@
void collectExternInstance(P4RuntimeSymbolTableIface *symbols, const IR::ExternBlock *externBlock) override
Collects architecture-specific @externBlock instance in @symbols table.
Definition p4RuntimeArchStandard.h:593
Extends P4RuntimeSymbolType for the DPDK extern types.
Definition dpdk/control-plane/bfruntime_arch_handler.h:60
Definition p4RuntimeArchStandard.h:277
-
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:389
+
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:390
The Declaration interface, representing objects with names.
Definition declaration.h:26
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition typeMap.h:41
Definition cstring.h:85
void forAllEvaluatedBlocks(const IR::Block *block, Func function)
Definition p4RuntimeArchHandler.h:234
-
void addDocumentation(Message *message, const IR::IAnnotated *annotated)
' and '@description' annotations if present.
Definition p4RuntimeArchHandler.h:307
-
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:368
+
void addDocumentation(Message *message, const IR::IAnnotated *annotated)
' and '@description' annotations if present.
Definition p4RuntimeArchHandler.h:308
+
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:369
Definition p4RuntimeArchStandard.h:348
Definition p4RuntimeArchStandard.h:50
Definition p4RuntimeArchStandard.h:423
diff --git a/ebpf_2target_8h_source.html b/ebpf_2target_8h_source.html index b0c1ab4d01a..03a6567612f 100644 --- a/ebpf_2target_8h_source.html +++ b/ebpf_2target_8h_source.html @@ -318,125 +318,126 @@
204 public:
205 explicit P4TCTarget(bool emitTrace) : KernelSamplesTarget(emitTrace, "P4TC"_cs) {}
-
206 cstring getByteOrderFromAnnotation(const IR::Vector<IR::Annotation> &annotations) const {
-
207 for (const auto *anno : annotations) {
-
208 if (anno->name != "tc_type") continue;
-
209 for (const auto *annoVal : anno->body) {
-
210 if (annoVal->text == "macaddr" || annoVal->text == "ipv4" ||
-
211 annoVal->text == "ipv6" || annoVal->text == "be16" || annoVal->text == "be32" ||
-
212 annoVal->text == "be64") {
-
213 return "NETWORK"_cs;
-
214 }
-
215 }
-
216 }
-
217 return "HOST"_cs;
-
218 }
-
219
-
220 cstring getByteOrder(P4::TypeMap *typeMap, const IR::P4Action *action,
-
221 const IR::Expression *exp) const {
-
222 if (auto mem = exp->to<IR::Member>()) {
-
223 auto type = typeMap->getType(mem->expr, true);
-
224 if (type->is<IR::Type_StructLike>()) {
-
225 auto field = type->to<IR::Type_StructLike>()->getField(mem->member);
-
226 return getByteOrderFromAnnotation(field->getAnnotations());
-
227 }
-
228 } else if (action) {
-
229 auto paramList = action->getParameters();
-
230 if (paramList != nullptr && !paramList->empty()) {
-
231 for (auto param : paramList->parameters) {
-
232 if (param->name.originalName == exp->toString()) {
-
233 return getByteOrderFromAnnotation(param->getAnnotations());
-
234 }
-
235 }
-
236 }
-
237 }
-
238 return "HOST"_cs;
-
239 }
-
240};
+
206 // FIXME: The code is terrible broken: the function is called on both
+
207 // *parsed* and *unparsed* annotations (!!!!)
+
208 static cstring getByteOrderFromAnnotation(const IR::IAnnotated *node) {
+
209 if (const auto *anno = node->getAnnotation("tc_type"_cs)) {
+
210 cstring value = anno->needsParsing()
+
211 ? anno->getUnparsed().at(0)->text
+
212 : anno->getExpr().at(0)->checkedTo<IR::StringLiteral>()->value;
+
213 if (value == "macaddr" || value == "ipv4" || value == "ipv6" || value == "be16" ||
+
214 value == "be32" || value == "be64") {
+
215 return "NETWORK"_cs;
+
216 }
+
217 }
+
218 return "HOST"_cs;
+
219 }
+
220
+
221 cstring getByteOrder(P4::TypeMap *typeMap, const IR::P4Action *action,
+
222 const IR::Expression *exp) const {
+
223 if (auto mem = exp->to<IR::Member>()) {
+
224 auto type = typeMap->getType(mem->expr, true);
+
225 if (type->is<IR::Type_StructLike>()) {
+
226 auto field = type->to<IR::Type_StructLike>()->getField(mem->member);
+
227 return getByteOrderFromAnnotation(field);
+
228 }
+
229 } else if (action) {
+
230 auto paramList = action->getParameters();
+
231 if (paramList != nullptr && !paramList->empty()) {
+
232 for (auto param : paramList->parameters) {
+
233 if (param->name.originalName == exp->toString()) {
+
234 return getByteOrderFromAnnotation(param);
+
235 }
+
236 }
+
237 }
+
238 }
+
239 return "HOST"_cs;
+
240 }
+
241};
-
241
-
- -
244 public:
-
245 explicit XdpTarget(bool emitTrace) : KernelSamplesTarget(emitTrace, "XDP"_cs) {}
-
246
-
247 cstring forwardReturnCode() const override { return "XDP_PASS"_cs; }
-
248 cstring dropReturnCode() const override { return "XDP_DROP"_cs; }
-
249 cstring abortReturnCode() const override { return "XDP_ABORTED"_cs; }
-
250 cstring redirectReturnCode() const { return "XDP_REDIRECT"_cs; }
-
251 cstring sysMapPath() const override { return "/sys/fs/bpf/xdp/globals"_cs; }
-
252 cstring packetDescriptorType() const override { return "struct xdp_md"_cs; }
-
253
-
254 cstring dataLength(cstring base) const override {
-
255 return cstring("(") + base + "->data_end - " + base + "->data)";
-
256 }
-
257 void emitResizeBuffer(Util::SourceCodeBuilder *builder, cstring buffer,
-
258 cstring offsetVar) const override;
-
259 void emitMain(Util::SourceCodeBuilder *builder, cstring functionName,
-
260 cstring argName) const override {
-
261 builder->appendFormat("int %v(%v *%v)", functionName, packetDescriptorType(), argName);
-
262 }
-
263};
+
242
+
+ +
245 public:
+
246 explicit XdpTarget(bool emitTrace) : KernelSamplesTarget(emitTrace, "XDP"_cs) {}
+
247
+
248 cstring forwardReturnCode() const override { return "XDP_PASS"_cs; }
+
249 cstring dropReturnCode() const override { return "XDP_DROP"_cs; }
+
250 cstring abortReturnCode() const override { return "XDP_ABORTED"_cs; }
+
251 cstring redirectReturnCode() const { return "XDP_REDIRECT"_cs; }
+
252 cstring sysMapPath() const override { return "/sys/fs/bpf/xdp/globals"_cs; }
+
253 cstring packetDescriptorType() const override { return "struct xdp_md"_cs; }
+
254
+
255 cstring dataLength(cstring base) const override {
+
256 return cstring("(") + base + "->data_end - " + base + "->data)";
+
257 }
+
258 void emitResizeBuffer(Util::SourceCodeBuilder *builder, cstring buffer,
+
259 cstring offsetVar) const override;
+
260 void emitMain(Util::SourceCodeBuilder *builder, cstring functionName,
+
261 cstring argName) const override {
+
262 builder->appendFormat("int %v(%v *%v)", functionName, packetDescriptorType(), argName);
+
263 }
+
264};
-
264
-
-
266class BccTarget : public Target {
-
267 public:
-
268 BccTarget() : Target("BCC"_cs) {}
-
269 void emitLicense(Util::SourceCodeBuilder *, cstring) const override {}
-
270 void emitCodeSection(Util::SourceCodeBuilder *, cstring) const override {}
-
271 void emitIncludes(Util::SourceCodeBuilder *builder) const override;
-
272 void emitResizeBuffer(Util::SourceCodeBuilder *, cstring, cstring) const override {}
-
273 void emitTableLookup(Util::SourceCodeBuilder *builder, cstring tblName, cstring key,
-
274 cstring value) const override;
-
275 void emitTableUpdate(Util::SourceCodeBuilder *builder, cstring tblName, cstring key,
-
276 cstring value) const override;
-
277 void emitUserTableUpdate(Util::SourceCodeBuilder *builder, cstring tblName, cstring key,
-
278 cstring value) const override;
-
279 void emitTableDecl(Util::SourceCodeBuilder *builder, cstring tblName, TableKind tableKind,
-
280 cstring keyType, cstring valueType, unsigned size) const override;
-
281 void emitMain(Util::SourceCodeBuilder *builder, cstring functionName,
-
282 cstring argName) const override;
-
283 cstring dataOffset(cstring base) const override { return base; }
-
284 cstring dataEnd(cstring base) const override {
-
285 return cstring("(") + base + " + " + base + "->len)";
-
286 }
-
287 cstring dataLength(cstring base) const override { return cstring(base) + "->len"; }
-
288 cstring forwardReturnCode() const override { return "0"_cs; }
-
289 cstring dropReturnCode() const override { return "1"_cs; }
-
290 cstring abortReturnCode() const override { return "1"_cs; }
-
291 cstring sysMapPath() const override { return "/sys/fs/bpf"_cs; }
-
292 cstring packetDescriptorType() const override { return "struct __sk_buff"_cs; }
-
293};
+
265
+
+
267class BccTarget : public Target {
+
268 public:
+
269 BccTarget() : Target("BCC"_cs) {}
+
270 void emitLicense(Util::SourceCodeBuilder *, cstring) const override {}
+
271 void emitCodeSection(Util::SourceCodeBuilder *, cstring) const override {}
+
272 void emitIncludes(Util::SourceCodeBuilder *builder) const override;
+
273 void emitResizeBuffer(Util::SourceCodeBuilder *, cstring, cstring) const override {}
+
274 void emitTableLookup(Util::SourceCodeBuilder *builder, cstring tblName, cstring key,
+
275 cstring value) const override;
+
276 void emitTableUpdate(Util::SourceCodeBuilder *builder, cstring tblName, cstring key,
+
277 cstring value) const override;
+
278 void emitUserTableUpdate(Util::SourceCodeBuilder *builder, cstring tblName, cstring key,
+
279 cstring value) const override;
+
280 void emitTableDecl(Util::SourceCodeBuilder *builder, cstring tblName, TableKind tableKind,
+
281 cstring keyType, cstring valueType, unsigned size) const override;
+
282 void emitMain(Util::SourceCodeBuilder *builder, cstring functionName,
+
283 cstring argName) const override;
+
284 cstring dataOffset(cstring base) const override { return base; }
+
285 cstring dataEnd(cstring base) const override {
+
286 return cstring("(") + base + " + " + base + "->len)";
+
287 }
+
288 cstring dataLength(cstring base) const override { return cstring(base) + "->len"; }
+
289 cstring forwardReturnCode() const override { return "0"_cs; }
+
290 cstring dropReturnCode() const override { return "1"_cs; }
+
291 cstring abortReturnCode() const override { return "1"_cs; }
+
292 cstring sysMapPath() const override { return "/sys/fs/bpf"_cs; }
+
293 cstring packetDescriptorType() const override { return "struct __sk_buff"_cs; }
+
294};
-
294
-
- -
298 public:
-
299 TestTarget() : KernelSamplesTarget(false, "Userspace Test"_cs) {}
-
300
-
301 void emitResizeBuffer(Util::SourceCodeBuilder *, cstring, cstring) const override {}
-
302 void emitIncludes(Util::SourceCodeBuilder *builder) const override;
-
303 void emitTableDecl(Util::SourceCodeBuilder *builder, cstring tblName, TableKind tableKind,
-
304 cstring keyType, cstring valueType, unsigned size) const override;
-
305 cstring dataOffset(cstring base) const override {
-
306 return cstring("((void*)(long)") + base + "->data)";
-
307 }
-
308 cstring dataEnd(cstring base) const override {
-
309 return cstring("((void*)(long)(") + base + "->data + " + base + "->len))";
-
310 }
-
311 cstring forwardReturnCode() const override { return "true"_cs; }
-
312 cstring dropReturnCode() const override { return "false"_cs; }
-
313 cstring abortReturnCode() const override { return "false"_cs; }
-
314 cstring sysMapPath() const override { return "/sys/fs/bpf"_cs; }
-
315 cstring packetDescriptorType() const override { return "struct __sk_buff"_cs; }
-
316};
+
295
+
+ +
299 public:
+
300 TestTarget() : KernelSamplesTarget(false, "Userspace Test"_cs) {}
+
301
+
302 void emitResizeBuffer(Util::SourceCodeBuilder *, cstring, cstring) const override {}
+
303 void emitIncludes(Util::SourceCodeBuilder *builder) const override;
+
304 void emitTableDecl(Util::SourceCodeBuilder *builder, cstring tblName, TableKind tableKind,
+
305 cstring keyType, cstring valueType, unsigned size) const override;
+
306 cstring dataOffset(cstring base) const override {
+
307 return cstring("((void*)(long)") + base + "->data)";
+
308 }
+
309 cstring dataEnd(cstring base) const override {
+
310 return cstring("((void*)(long)(") + base + "->data + " + base + "->len))";
+
311 }
+
312 cstring forwardReturnCode() const override { return "true"_cs; }
+
313 cstring dropReturnCode() const override { return "false"_cs; }
+
314 cstring abortReturnCode() const override { return "false"_cs; }
+
315 cstring sysMapPath() const override { return "/sys/fs/bpf"_cs; }
+
316 cstring packetDescriptorType() const override { return "struct __sk_buff"_cs; }
+
317};
-
317
-
318} // namespace P4::EBPF
-
319
-
320#endif /* BACKENDS_EBPF_TARGET_H_ */
-
Represents a target compiled by bcc that uses the TC.
Definition ebpf/target.h:266
+
318
+
319} // namespace P4::EBPF
+
320
+
321#endif /* BACKENDS_EBPF_TARGET_H_ */
+
Represents a target compiled by bcc that uses the TC.
Definition ebpf/target.h:267
Definition ebpf/target.h:130
void emitTraceMessage(Util::SourceCodeBuilder *builder, const char *format, int argc=0,...) const override
Definition ebpf/target.cpp:179
void emitMapInMapDecl(Util::SourceCodeBuilder *builder, cstring innerName, TableKind innerTableKind, cstring innerKeyType, cstring innerValueType, unsigned innerSize, cstring outerName, TableKind outerTableKind, cstring outerKeyType, unsigned outerSize) const override
Definition ebpf/target.cpp:114
@@ -444,9 +445,8 @@
Definition ebpf/target.h:44
virtual void emitTraceMessage(Util::SourceCodeBuilder *builder, const char *format, int argc,...) const
Definition ebpf/target.cpp:25
virtual void emitMapInMapDecl(Util::SourceCodeBuilder *builder, cstring innerName, TableKind innerTableKind, cstring innerKeyType, cstring innerValueType, unsigned innerSize, cstring outerName, TableKind outerTableKind, cstring outerKeyType, unsigned outerSize) const
Definition ebpf/target.h:81
-
Definition ebpf/target.h:297
-
Target XDP.
Definition ebpf/target.h:243
-
Definition vector.h:59
+
Definition ebpf/target.h:298
+
Target XDP.
Definition ebpf/target.h:244
Definition typeMap.h:41
Definition sourceCodeBuilder.h:29
Definition cstring.h:85
diff --git a/ebpf_code_gen_8h_source.html b/ebpf_code_gen_8h_source.html index b0faf4de727..49a0fecbda7 100644 --- a/ebpf_code_gen_8h_source.html +++ b/ebpf_code_gen_8h_source.html @@ -639,9 +639,9 @@
Definition ebpfCodeGen.h:138
Definition tcExterns.h:53
Definition ebpfCodeGen.h:149
-
void validateKeys() const override
Definition ebpfCodeGen.cpp:2161
+
void validateKeys() const override
Definition ebpfCodeGen.cpp:2155
Definition ebpfCodeGen.h:188
-
void emitPreDeparser(EBPF::CodeBuilder *builder) override
Definition ebpfCodeGen.cpp:1185
+
void emitPreDeparser(EBPF::CodeBuilder *builder) override
Definition ebpfCodeGen.cpp:1179
Definition ebpfCodeGen.h:95
void emit(EBPF::CodeBuilder *builder) const override
Definition ebpfCodeGen.cpp:169
void emitParser(EBPF::CodeBuilder *builder) const override
Definition ebpfCodeGen.cpp:215
diff --git a/ebpf_pipeline_8h_source.html b/ebpf_pipeline_8h_source.html index 5137523c52a..8e8f9c0d4e0 100644 --- a/ebpf_pipeline_8h_source.html +++ b/ebpf_pipeline_8h_source.html @@ -428,7 +428,7 @@
void emitGlobalMetadataInitializer(CodeBuilder *builder) override
Definition ebpfPipeline.cpp:706
Definition ebpfPipeline.h:228
void emitGlobalMetadataInitializer(CodeBuilder *builder) override
Definition ebpfPipeline.cpp:682
-
Target XDP.
Definition ebpf/target.h:243
+
Target XDP.
Definition ebpf/target.h:244
Definition ebpfOptions.h:26
bool emitTraceMessages
tracing eBPF code execution
Definition ebpfOptions.h:35
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
diff --git a/front__end__policy_8h_source.html b/front__end__policy_8h_source.html index a1587ee786c..9d410179084 100644 --- a/front__end__policy_8h_source.html +++ b/front__end__policy_8h_source.html @@ -153,7 +153,7 @@
43
44#endif /* BACKENDS_TOFINO_BF_P4C_COMMON_FRONT_END_POLICY_H_ */
Definition frontends/p4/frontend.h:32
-
Definition parseAnnotations.h:114
+
Definition parseAnnotations.h:138
The namespace encapsulating Barefoot/Intel-specific stuff.
Definition add_t2na_meta.cpp:21
P4::ParseAnnotations * getParseAnnotations() const override
Definition front_end_policy.h:27
bool skipSideEffectOrdering() const override
Definition front_end_policy.h:29
diff --git a/frontends_2p4-14_2fromv1_80_2program_structure_8h_source.html b/frontends_2p4-14_2fromv1_80_2program_structure_8h_source.html index 1d52028a468..ab67bd09693 100644 --- a/frontends_2p4-14_2fromv1_80_2program_structure_8h_source.html +++ b/frontends_2p4-14_2fromv1_80_2program_structure_8h_source.html @@ -426,9 +426,9 @@
const IR::Expression * latest
Represents 'latest' P4-14 construct.
Definition frontends/p4-14/fromv1.0/programStructure.h:302
std::map< cstring, const IR::Type * > finalHeaderType
Definition frontends/p4-14/fromv1.0/programStructure.h:173
static IR::Vector< IR::Annotation > addGlobalNameAnnotation(cstring name, const IR::Vector< IR::Annotation > &annos)
Definition frontends/p4-14/fromv1.0/programStructure.cpp:85
-
virtual void createControls()
Definition frontends/p4-14/fromv1.0/programStructure.cpp:2324
+
virtual void createControls()
Definition frontends/p4-14/fromv1.0/programStructure.cpp:2325
const IR::Expression * listIndex(const IR::Expression *fl) const
Definition frontends/p4-14/fromv1.0/programStructure.cpp:160
-
void populateOutputNames()
Definition frontends/p4-14/fromv1.0/programStructure.cpp:2624
+
void populateOutputNames()
Definition frontends/p4-14/fromv1.0/programStructure.cpp:2627
std::map< cstring, cstring > registerLayoutType
Definition frontends/p4-14/fromv1.0/programStructure.h:176
ordered_set< const IR::FieldList * > allFieldLists
Field lists that appear in the program.
Definition frontends/p4-14/fromv1.0/programStructure.h:165
Definition frontends/p4-14/fromv1.0/v1model.h:262
diff --git a/frontends_2p4_2frontend_8h_source.html b/frontends_2p4_2frontend_8h_source.html index eaa26f7ffbb..3a797636928 100644 --- a/frontends_2p4_2frontend_8h_source.html +++ b/frontends_2p4_2frontend_8h_source.html @@ -204,7 +204,7 @@
virtual ParseAnnotations * getParseAnnotations() const
Definition frontends/p4/frontend.h:44
virtual bool enableSubConstToAddTransform() const
Definition frontends/p4/frontend.h:53
virtual bool optimize(const CompilerOptions &options) const
Definition frontends/p4/frontend.h:59
-
Definition parseAnnotations.h:114
+
Definition parseAnnotations.h:138
Definition unusedDeclarations.h:48
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
std::function< void(const char *manager, unsigned seqNo, const char *pass, const IR::Node *node)> DebugHook
Definition ir/pass_manager.h:38
diff --git a/hash__function_8h_source.html b/hash__function_8h_source.html index cd7792b8cf9..4dda1e9c0a7 100644 --- a/hash__function_8h_source.html +++ b/hash__function_8h_source.html @@ -251,8 +251,8 @@
141} // end namespace P4
142
143#endif /* BF_P4C_MAU_HASH_FUNCTION_H_ */
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition source_file.h:131
The namespace encapsulating IR node classes.
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/hash__mask__annotations_8h_source.html b/hash__mask__annotations_8h_source.html index 30b0de59464..63d075aa652 100644 --- a/hash__mask__annotations_8h_source.html +++ b/hash__mask__annotations_8h_source.html @@ -170,11 +170,11 @@
62 private:
63 bitvec getBitvec(const IR::Annotation *annotation) {
64 bitvec rv;
-
65 if (annotation->expr.size() != 1) {
+
65 if (annotation->getExpr().size() != 1) {
66 error("%1% should contain a constant", annotation);
67 return rv;
68 }
-
69 auto constant = annotation->expr[0]->to<IR::Constant>();
+
69 auto constant = annotation->getExpr(0)->to<IR::Constant>();
70 if (constant == nullptr) {
71 error("%1% should contain a constant", annotation);
72 return rv;
diff --git a/hierarchical_names_8h_source.html b/hierarchical_names_8h_source.html index f50c92013ca..24c501a620d 100644 --- a/hierarchical_names_8h_source.html +++ b/hierarchical_names_8h_source.html @@ -148,56 +148,46 @@
23namespace P4 {
24
- +
59 std::vector<cstring> stack;
60
-
61 public:
-
62 cstring getName(const IR::IDeclaration *decl);
-
63
+
61 cstring getName(const IR::IDeclaration *decl) const { return decl->getName(); }
+
62
+
63 public:
65 setName("HierarchicalNames");
66 visitDagOnce = false;
67 }
-
68 const IR::Node *preorder(IR::P4Parser *parser) override {
+
68 bool preorder(IR::P4Parser *parser) override {
69 stack.push_back(getName(parser));
-
70 return parser;
+
70 return true;
71 }
-
72 const IR::Node *postorder(IR::P4Parser *parser) override {
-
73 stack.pop_back();
-
74 return parser;
-
75 }
-
76
-
77 const IR::Node *preorder(IR::P4Control *control) override {
-
78 stack.push_back(getName(control));
-
79 return control;
-
80 }
-
81 const IR::Node *postorder(IR::P4Control *control) override {
-
82 stack.pop_back();
-
83 return control;
-
84 }
-
85
-
86 const IR::Node *preorder(IR::P4Table *table) override {
-
87 visit(table->annotations);
-
88 prune();
-
89 return table;
-
90 }
-
91
-
92 const IR::Node *postorder(IR::Annotation *annotation) override;
-
93 // Do not change name annotations on parameters
-
94 const IR::Node *preorder(IR::Parameter *parameter) override {
-
95 prune();
-
96 return parameter;
-
97 }
-
98};
+
72 void postorder(IR::P4Parser *) override { stack.pop_back(); }
+
73
+
74 bool preorder(IR::P4Control *control) override {
+
75 stack.push_back(getName(control));
+
76 return true;
+
77 }
+
78 void postorder(IR::P4Control *) override { stack.pop_back(); }
+
79
+
80 bool preorder(IR::P4Table *table) override {
+
81 visit(table->annotations);
+
82 return false;
+
83 }
+
84
+
85 void postorder(IR::Annotation *annotation) override;
+
86 // Do not change name annotations on parameters
+
87 bool preorder(IR::Parameter *) override { return false; }
+
88};
-
99
-
100} // namespace P4
-
101
-
102#endif /* FRONTENDS_P4_HIERARCHICALNAMES_H_ */
+
89
+
90} // namespace P4
+
91
+
92#endif /* FRONTENDS_P4_HIERARCHICALNAMES_H_ */
Definition hierarchicalNames.h:58
The Declaration interface, representing objects with names.
Definition declaration.h:26
-
Definition node.h:94
-
Definition visitor.h:424
+
virtual ID getName() const =0
+
Definition visitor.h:372
Definition cstring.h:85
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/hierarchy.html b/hierarchy.html index e1e72fba1b6..ff0addc0c0b 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -3033,24 +3033,25 @@
- - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -3325,103 +3326,102 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/hierarchy.js b/hierarchy.js index b988f99e001..4ea82db77f2 100644 --- a/hierarchy.js +++ b/hierarchy.js @@ -3292,6 +3292,7 @@ var hierarchy = [ "P4::CheckTableSize", "class_p4_1_1_check_table_size.html", null ], [ "P4::DoSingleArgumentSelect", "class_p4_1_1_do_single_argument_select.html", null ], [ "P4::HeaderTypeMaxLengthCalculator", "class_p4_1_1_header_type_max_length_calculator.html", null ], + [ "P4::HierarchicalNames", "class_p4_1_1_hierarchical_names.html", null ], [ "P4::MoveToElseAfterBranch", "class_p4_1_1_move_to_else_after_branch.html", null ], [ "P4::P4V1::ModifyParserForChecksum", "class_p4_1_1_p4_v1_1_1_modify_parser_for_checksum.html", null ], [ "P4::P4V1::RemoveBuiltins", "class_p4_1_1_p4_v1_1_1_remove_builtins.html", null ], @@ -3604,7 +3605,6 @@ var hierarchy = [ "P4::HSIndexTransform", "class_p4_1_1_h_s_index_transform.html", null ], [ "P4::HandleNoMatch", "class_p4_1_1_handle_no_match.html", null ], [ "P4::HandleValidityHeaderUnion", "class_p4_1_1_handle_validity_header_union.html", null ], - [ "P4::HierarchicalNames", "class_p4_1_1_hierarchical_names.html", null ], [ "P4::InlineControlFlow", "class_p4_1_1_inline_control_flow.html", null ], [ "P4::InstantiateDirectCalls", "class_p4_1_1_instantiate_direct_calls.html", null ], [ "P4::KeySideEffect", "class_p4_1_1_key_side_effect.html", null ], diff --git a/inherit_graph_155.map b/inherit_graph_155.map index d7cb844c63b..706fcfdf637 100644 --- a/inherit_graph_155.map +++ b/inherit_graph_155.map @@ -1,19 +1,19 @@ - - + + - - - - - - - - + + + + + + + + - + @@ -59,8 +59,8 @@ - - + + @@ -95,3395 +95,3395 @@ - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inherit_graph_155.md5 b/inherit_graph_155.md5 index d763286d4d8..d8a1602b5eb 100644 --- a/inherit_graph_155.md5 +++ b/inherit_graph_155.md5 @@ -1 +1 @@ -48c9504706e203abf7274845845de0ec \ No newline at end of file +189e33d4720cb64ecfa3ef5fb1db826a \ No newline at end of file diff --git a/inherit_graph_155.svg b/inherit_graph_155.svg index eaa2ccf8321..032725c085a 100644 --- a/inherit_graph_155.svg +++ b/inherit_graph_155.svg @@ -4,16 +4,16 @@ - - + + Graphical Class Hierarchy Node0 - -ControlFlowVisitor + +ControlFlowVisitor @@ -21,8 +21,8 @@ Node1 - -ComputeDefUse + +ComputeDefUse @@ -30,8 +30,8 @@ Node0->Node1 - - + + @@ -39,8 +39,8 @@ Node908 - -TableMutex + +TableMutex @@ -48,8 +48,8 @@ Node0->Node908 - - + + @@ -57,9 +57,9 @@ Node871 - -ControlFlowVisitor -::SetupJoinPoints + +ControlFlowVisitor +::SetupJoinPoints @@ -67,9 +67,9 @@ Node870 - -ComputeDefUse::SetupJoin -Points + +ComputeDefUse::SetupJoin +Points @@ -77,53 +77,53 @@ Node871->Node870 - - + + - - -Node492 - - -DotDumper + + +Node493 + + +DotDumper - - -Node491 - - -DumpParser + + +Node492 + + +DumpParser - - -Node492->Node491 - - - + + +Node493->Node492 + + + - - -Node493 - - -DumpSplitStates + + +Node494 + + +DumpSplitStates - - -Node492->Node493 - - - + + +Node493->Node494 + + + @@ -131,8 +131,8 @@ Node2 - -Inspector + +Inspector @@ -140,8 +140,8 @@ Node2->Node1 - - + + @@ -149,8 +149,8 @@ Node2->Node908 - - + + @@ -158,8 +158,8 @@ Node3 - -CheckForNamePrefix + +CheckForNamePrefix @@ -167,8 +167,8 @@ Node2->Node3 - - + + @@ -176,8 +176,8 @@ Node4 - -CheckOperations + +CheckOperations @@ -185,8 +185,8 @@ Node2->Node4 - - + + @@ -194,8 +194,8 @@ Node5 - -CollectSourceInfoLogging + +CollectSourceInfoLogging @@ -203,8 +203,8 @@ Node2->Node5 - - + + @@ -212,9 +212,9 @@ Node6 - -CopyBlockPragmas::FindPragmas -FromApply + +CopyBlockPragmas::FindPragmas +FromApply @@ -222,8 +222,8 @@ Node2->Node6 - - + + @@ -231,8 +231,8 @@ Node7 - -DeparserInspector + +DeparserInspector @@ -240,8 +240,8 @@ Node2->Node7 - - + + @@ -249,8 +249,8 @@ Node14 - -MapTablesToIDs + +MapTablesToIDs @@ -258,8 +258,8 @@ Node2->Node14 - - + + @@ -267,8 +267,8 @@ Node15 - -MirrorEgressParseEval + +MirrorEgressParseEval @@ -276,8 +276,8 @@ Node2->Node15 - - + + @@ -285,8 +285,8 @@ Node16 - -PacketLengthEgressUseEval + +PacketLengthEgressUseEval @@ -294,8 +294,8 @@ Node2->Node16 - - + + @@ -303,8 +303,8 @@ Node17 - -ParamBinding + +ParamBinding @@ -312,8 +312,8 @@ Node2->Node17 - - + + @@ -321,8 +321,8 @@ Node18 - -PardeInspector + +PardeInspector @@ -330,8 +330,8 @@ Node2->Node18 - - + + @@ -339,8 +339,8 @@ Node1653 - -ParserInspector + +ParserInspector @@ -348,8 +348,8 @@ Node2->Node1653 - - + + @@ -357,8 +357,8 @@ Node1672 - -SourceInfoLogging + +SourceInfoLogging @@ -366,8 +366,8 @@ Node2->Node1672 - - + + @@ -375,9 +375,9 @@ Node8 - -BFN::AssignmentStmtError -Check + +BFN::AssignmentStmtError +Check @@ -385,8 +385,8 @@ Node7->Node8 - - + + @@ -394,8 +394,8 @@ Node9 - -BFN::ExtractDeparser + +BFN::ExtractDeparser @@ -403,8 +403,8 @@ Node7->Node9 - - + + @@ -412,8 +412,8 @@ Node10 - -CheckClotGroups + +CheckClotGroups @@ -421,8 +421,8 @@ Node7->Node10 - - + + @@ -430,8 +430,8 @@ Node11 - -CollectPovBitToFields + +CollectPovBitToFields @@ -439,8 +439,8 @@ Node7->Node11 - - + + @@ -448,9 +448,9 @@ Node12 - -InsertParserClotChecksums -::CollectClotChecksumFields + +InsertParserClotChecksums +::CollectClotChecksumFields @@ -458,8 +458,8 @@ Node7->Node12 - - + + @@ -467,9 +467,9 @@ Node13 - -Parde::Lowered::ComputeLowered -DeparserIR + +Parde::Lowered::ComputeLowered +DeparserIR @@ -477,8 +477,8 @@ Node7->Node13 - - + + @@ -486,11 +486,11 @@ Node19 - -CollectParserInfoImpl -< IR::BFN::Parser, IR -::BFN::ParserState, IR -::BFN::Transition > + +CollectParserInfoImpl +< IR::BFN::Parser, IR +::BFN::ParserState, IR +::BFN::Transition > @@ -498,8 +498,8 @@ Node18->Node19 - - + + @@ -507,11 +507,11 @@ Node20 - -CollectParserInfoImpl -< IR::BFN::LoweredParser, - IR::BFN::LoweredParserState, - IR::BFN::LoweredParserMatch > + +CollectParserInfoImpl +< IR::BFN::LoweredParser, + IR::BFN::LoweredParserState, + IR::BFN::LoweredParserMatch > @@ -519,8 +519,8 @@ Node18->Node20 - - + + @@ -528,9 +528,9 @@ Node21 - -CollectParserInfoImpl -< Parser, State, Transition > + +CollectParserInfoImpl +< Parser, State, Transition > @@ -538,8 +538,8 @@ Node18->Node21 - - + + @@ -547,8 +547,8 @@ Node22 - -ParserDominatorBuilder + +ParserDominatorBuilder @@ -556,8 +556,8 @@ Node18->Node22 - - + + @@ -565,8 +565,8 @@ Node24 - -ParserHeaderSequences + +ParserHeaderSequences @@ -574,8 +574,8 @@ Node18->Node24 - - + + @@ -583,8 +583,8 @@ Node23 - -FindParserHeaderEncounterInfo + +FindParserHeaderEncounterInfo @@ -592,8 +592,8 @@ Node22->Node23 - - + + @@ -601,8 +601,8 @@ Node1654 - -BFN::ClotResourcesLogging + +BFN::ClotResourcesLogging @@ -610,8 +610,8 @@ Node1653->Node1654 - - + + @@ -619,8 +619,8 @@ Node1655 - -BFN::ExtractParser + +BFN::ExtractParser @@ -628,8 +628,8 @@ Node1653->Node1655 - - + + @@ -637,8 +637,8 @@ Node1656 - -BFN::IdentifyPovMergeTargets + +BFN::IdentifyPovMergeTargets @@ -646,8 +646,8 @@ Node1653->Node1656 - - + + @@ -655,8 +655,8 @@ Node1657 - -BFN::ParserResourcesLogging + +BFN::ParserResourcesLogging @@ -664,8 +664,8 @@ Node1653->Node1657 - - + + @@ -673,8 +673,8 @@ Node1658 - -CheckOutOfBufferExtracts + +CheckOutOfBufferExtracts @@ -682,8 +682,8 @@ Node1653->Node1658 - - + + @@ -691,8 +691,8 @@ Node1659 - -CheckUnresolvedExtractSource + +CheckUnresolvedExtractSource @@ -700,8 +700,8 @@ Node1653->Node1659 - - + + @@ -709,8 +709,8 @@ Node1660 - -CollectParserChecksums + +CollectParserChecksums @@ -718,8 +718,8 @@ Node1653->Node1660 - - + + @@ -727,9 +727,9 @@ Node1661 - -CollectParserUseDef -::CollectDefs + +CollectParserUseDef +::CollectDefs @@ -737,8 +737,8 @@ Node1653->Node1661 - - + + @@ -746,9 +746,9 @@ Node1662 - -CollectParserUseDef -::MapToUse + +CollectParserUseDef +::MapToUse @@ -756,8 +756,8 @@ Node1653->Node1662 - - + + @@ -765,8 +765,8 @@ Node1663 - -ComputeDeadParserChecksums + +ComputeDeadParserChecksums @@ -774,8 +774,8 @@ Node1653->Node1663 - - + + @@ -783,8 +783,8 @@ Node1664 - -CreateAliasesForVarbitHeaders + +CreateAliasesForVarbitHeaders @@ -792,8 +792,8 @@ Node1653->Node1664 - - + + @@ -801,8 +801,8 @@ Node1665 - -FindParsingFrontier + +FindParsingFrontier @@ -810,8 +810,8 @@ Node1653->Node1665 - - + + @@ -819,9 +819,9 @@ Node1666 - -FixupMirroredIntrinsicMetadata -::FindMirroredIntrinsicMetadata + +FixupMirroredIntrinsicMetadata +::FindMirroredIntrinsicMetadata @@ -829,8 +829,8 @@ Node1653->Node1666 - - + + @@ -838,9 +838,9 @@ Node1667 - -InsertParserClotChecksums -::CreateParserPrimitives + +InsertParserClotChecksums +::CreateParserPrimitives @@ -848,8 +848,8 @@ Node1653->Node1667 - - + + @@ -857,9 +857,9 @@ Node1668 - -Parde::Lowered::ComputeLowered -ParserIR + +Parde::Lowered::ComputeLowered +ParserIR @@ -867,8 +867,8 @@ Node1653->Node1668 - - + + @@ -876,9 +876,9 @@ Node1669 - -Parde::Lowered::FindNegative -Deposits + +Parde::Lowered::FindNegative +Deposits @@ -886,8 +886,8 @@ Node1653->Node1669 - - + + @@ -895,8 +895,8 @@ Node1652 - -ParserCriticalPath + +ParserCriticalPath @@ -904,8 +904,8 @@ Node1653->Node1652 - - + + @@ -913,10 +913,10 @@ Node1670 - -ResolveNegativeExtract -::CollectNegativeExtractOutOf -BufferStates + +ResolveNegativeExtract +::CollectNegativeExtractOutOf +BufferStates @@ -924,8 +924,8 @@ Node1653->Node1670 - - + + @@ -933,9 +933,9 @@ Node1671 - -ResolveNegativeExtract -::CollectNegativeExtractStates + +ResolveNegativeExtract +::CollectNegativeExtractStates @@ -943,8 +943,8 @@ Node1653->Node1671 - - + + @@ -952,8 +952,8 @@ Node909 - -P4::DeclarationLookup + +P4::DeclarationLookup @@ -961,8 +961,8 @@ Node910 - -P4::ReferenceMap + +P4::ReferenceMap @@ -970,132 +970,132 @@ Node909->Node910 - - + + - - -Node503 - - -P4::ResolutionContext + + +Node504 + + +P4::ResolutionContext - - -Node909->Node503 - - - + + +Node909->Node504 + + + - - -Node503->Node1 - - - + + +Node504->Node1 + + + - - -Node503->Node908 - - - + + +Node504->Node908 + + + - - -Node503->Node870 - - - + + +Node504->Node870 + + + - - -Node504 - - -P4::AbstractInliner -< ActionsInlineList, - AInlineWorkList > + + +Node505 + + +P4::AbstractInliner +< ActionsInlineList, + AInlineWorkList > - - -Node503->Node504 - - - + + +Node504->Node505 + + + - - -Node507 - - -P4::AbstractInliner -< FunctionsInlineList, - FunctionsInlineWorkList > + + +Node508 + + +P4::AbstractInliner +< FunctionsInlineList, + FunctionsInlineWorkList > - - -Node503->Node507 - - - + + +Node504->Node508 + + + - - -Node509 - - -P4::AbstractInliner -< InlineList, InlineSummary > + + +Node510 + + +P4::AbstractInliner +< InlineList, InlineSummary > - - -Node503->Node509 - - - + + +Node504->Node510 + + + - - -Node511 - - -P4::AbstractInliner -< P4::InlineList, InlineWork -List > + + +Node512 + + +P4::AbstractInliner +< P4::InlineList, InlineWork +List > - - -Node503->Node511 - - - + + +Node504->Node512 + + + @@ -1103,36 +1103,36 @@ Node869 - -BFN::ControlFlowVisitor + +BFN::ControlFlowVisitor - - -Node503->Node869 - - - + + +Node504->Node869 + + + - - -Node657 - - -P4::AbstractInliner -< InlineList, InlineWorkList > + + +Node658 + + +P4::AbstractInliner +< InlineList, InlineWorkList > - - -Node503->Node657 - - - + + +Node504->Node658 + + + @@ -1140,18 +1140,18 @@ Node872 - -P4::CheckExternInvocation -Common + +P4::CheckExternInvocation +Common - - -Node503->Node872 - - - + + +Node504->Node872 + + + @@ -1159,35 +1159,35 @@ Node877 - -P4::CollectUsedDeclarations + +P4::CollectUsedDeclarations - - -Node503->Node877 - - - + + +Node504->Node877 + + + - - -Node502 - - -P4::ComputeDefUse + + +Node503 + + +P4::ComputeDefUse - - -Node503->Node502 - - - + + +Node504->Node503 + + + @@ -1195,18 +1195,18 @@ Node878 - -P4::ComputeDefUse:: -SetupJoinPoints + +P4::ComputeDefUse:: +SetupJoinPoints - - -Node503->Node878 - - - + + +Node504->Node878 + + + @@ -1214,53 +1214,53 @@ Node880 - -P4::ComputeParserCG + +P4::ComputeParserCG - - -Node503->Node880 - - - + + +Node504->Node880 + + + - - -Node666 - - -P4::ConstantTypeSubstitution + + +Node667 + + +P4::ConstantTypeSubstitution - - -Node503->Node666 - - - + + +Node504->Node667 + + + - - -Node670 - - -P4::CreateStructInitializers + + +Node671 + + +P4::CreateStructInitializers - - -Node503->Node670 - - - + + +Node504->Node671 + + + @@ -1268,17 +1268,17 @@ Node881 - -P4::Deprecated + +P4::Deprecated - - -Node503->Node881 - - - + + +Node504->Node881 + + + @@ -1286,17 +1286,17 @@ Node882 - -P4::DiscoverActionsInlining + +P4::DiscoverActionsInlining - - -Node503->Node882 - - - + + +Node504->Node882 + + + @@ -1304,17 +1304,17 @@ Node883 - -P4::DiscoverFunctionsInlining + +P4::DiscoverFunctionsInlining - - -Node503->Node883 - - - + + +Node504->Node883 + + + @@ -1322,17 +1322,17 @@ Node884 - -P4::DoCheckConstants + +P4::DoCheckConstants - - -Node503->Node884 - - - + + +Node504->Node884 + + + @@ -1340,323 +1340,323 @@ Node885 - -P4::DoCheckCoreMethods - - - - - -Node503->Node885 - - - - - - - - -Node709 - - -P4::DoConstantFolding + +P4::DoCheckCoreMethods - - -Node503->Node709 - - - + + +Node504->Node885 + + + - - -Node713 - - -P4::DoDefaultArguments + + +Node710 + + +P4::DoConstantFolding - - -Node503->Node713 - - - + + +Node504->Node710 + + + - - -Node718 - - -P4::DoExpandEmit + + +Node714 + + +P4::DoDefaultArguments - - -Node503->Node718 - - - + + +Node504->Node714 + + + Node719 - - -P4::DoExpandLookahead + + +P4::DoExpandEmit - - -Node503->Node719 - - - + + +Node504->Node719 + + + - - -Node723 - - -P4::DoLocalCopyPropagation + + +Node720 + + +P4::DoExpandLookahead - - -Node503->Node723 - - - + + +Node504->Node720 + + + - - -Node727 - - -P4::DoOrderArguments + + +Node724 + + +P4::DoLocalCopyPropagation - - -Node503->Node727 - - - + + +Node504->Node724 + + + - - -Node730 - - -P4::DoRemoveAssertAssume + + +Node728 + + +P4::DoOrderArguments - - -Node503->Node730 - - - + + +Node504->Node728 + + + - - -Node735 - - -P4::DoRemoveExits + + +Node731 + + +P4::DoRemoveAssertAssume - - -Node503->Node735 - - - + + +Node504->Node731 + + + - - -Node732 - - -P4::DoRemoveMiss + + +Node736 + + +P4::DoRemoveExits - - -Node503->Node732 - - - + + +Node504->Node736 + + + - - -Node739 - - -P4::DoReplaceTypedef + + +Node733 + + +P4::DoRemoveMiss - - -Node503->Node739 - - - + + +Node504->Node733 + + + - - -Node743 - - -P4::DoSimplifyControlFlow + + +Node740 + + +P4::DoReplaceTypedef - - -Node503->Node743 - - - + + +Node504->Node740 + + + - - -Node745 - - -P4::DoSimplifyExpressions + + +Node744 + + +P4::DoSimplifyControlFlow - - -Node503->Node745 - - - + + +Node504->Node744 + + + - - -Node750 - - -P4::DoStaticAssert + + +Node746 + + +P4::DoSimplifyExpressions - - -Node503->Node750 - - - + + +Node504->Node746 + + + - - -Node753 - - -P4::DoTableHit + + +Node751 + + +P4::DoStaticAssert - - -Node503->Node753 - - - + + +Node504->Node751 + + + - - -Node755 - - -P4::DontcareArgs + + +Node754 + + +P4::DoTableHit - - -Node503->Node755 - - - + + +Node504->Node754 + + + - - -Node760 - - -P4::EliminateSubparserCalls + + +Node756 + + +P4::DontcareArgs - - -Node503->Node760 - - - + + +Node504->Node756 + + + Node761 - - -P4::EntryPriorities + + +P4::EliminateSubparserCalls + + + + + +Node504->Node761 + + + + + + + + +Node762 + + +P4::EntryPriorities - - -Node503->Node761 - - - + + +Node504->Node762 + + + @@ -1664,17 +1664,17 @@ Node886 - -P4::FindActionParameters + +P4::FindActionParameters - - -Node503->Node886 - - - + + +Node504->Node886 + + + @@ -1682,17 +1682,17 @@ Node887 - -P4::FindFunctionSpecializations + +P4::FindFunctionSpecializations - - -Node503->Node887 - - - + + +Node504->Node887 + + + @@ -1700,17 +1700,17 @@ Node888 - -P4::FindGlobalActionUses + +P4::FindGlobalActionUses - - -Node503->Node888 - - - + + +Node504->Node888 + + + @@ -1718,17 +1718,17 @@ Node889 - -P4::FindRepeatedActionUses + +P4::FindRepeatedActionUses - - -Node503->Node889 - - - + + +Node504->Node889 + + + @@ -1736,17 +1736,17 @@ Node890 - -P4::FindSpecializations + +P4::FindSpecializations - - -Node503->Node890 - - - + + +Node504->Node890 + + + @@ -1754,18 +1754,18 @@ Node891 - -P4::FunctionsInliner -::isLocalExpression + +P4::FunctionsInliner +::isLocalExpression - - -Node503->Node891 - - - + + +Node504->Node891 + + + @@ -1773,17 +1773,17 @@ Node892 - -P4::HasTableApply + +P4::HasTableApply - - -Node503->Node892 - - - + + +Node504->Node892 + + + @@ -1791,17 +1791,17 @@ Node769 - -P4::InstantiateDirectCalls + +P4::InstantiateDirectCalls - - -Node503->Node769 - - - + + +Node504->Node769 + + + @@ -1809,17 +1809,17 @@ Node893 - -P4::IsValid + +P4::IsValid - - -Node503->Node893 - - - + + +Node504->Node893 + + + @@ -1827,17 +1827,17 @@ Node770 - -P4::KeySideEffect + +P4::KeySideEffect - - -Node503->Node770 - - - + + +Node504->Node770 + + + @@ -1845,17 +1845,17 @@ Node772 - -P4::LocalizeActions + +P4::LocalizeActions - - -Node503->Node772 - - - + + +Node504->Node772 + + + @@ -1863,17 +1863,17 @@ Node776 - -P4::MoveInitializers + +P4::MoveInitializers - - -Node503->Node776 - - - + + +Node504->Node776 + + + @@ -1881,17 +1881,17 @@ Node902 - -P4::P4Fmt::P4Formatter + +P4::P4Fmt::P4Formatter - - -Node503->Node902 - - - + + +Node504->Node902 + + + @@ -1899,17 +1899,17 @@ Node903 - -P4::P4Tools::P4ProgramDCGCreator + +P4::P4Tools::P4ProgramDCGCreator - - -Node503->Node903 - - - + + +Node504->Node903 + + + @@ -1917,17 +1917,17 @@ Node904 - -P4::ReadsWrites + +P4::ReadsWrites - - -Node503->Node904 - - - + + +Node504->Node904 + + + @@ -1935,17 +1935,17 @@ Node821 - -P4::RemoveComplexExpressions + +P4::RemoveComplexExpressions - - -Node503->Node821 - - - + + +Node504->Node821 + + + @@ -1953,17 +1953,17 @@ Node825 - -P4::RemoveNestedStructs + +P4::RemoveNestedStructs - - -Node503->Node825 - - - + + +Node504->Node825 + + + @@ -1971,17 +1971,17 @@ Node827 - -P4::RemoveUnusedDeclarations + +P4::RemoveUnusedDeclarations - - -Node503->Node827 - - - + + +Node504->Node827 + + + @@ -1989,17 +1989,17 @@ Node830 - -P4::RenameSymbols + +P4::RenameSymbols - - -Node503->Node830 - - - + + +Node504->Node830 + + + @@ -2007,17 +2007,17 @@ Node835 - -P4::ReplaceStructs + +P4::ReplaceStructs - - -Node503->Node835 - - - + + +Node504->Node835 + + + @@ -2025,17 +2025,17 @@ Node905 - -P4::ResolveReferences + +P4::ResolveReferences - - -Node503->Node905 - - - + + +Node504->Node905 + + + @@ -2043,17 +2043,17 @@ Node852 - -P4::SubstituteParameters + +P4::SubstituteParameters - - -Node503->Node852 - - - + + +Node504->Node852 + + + @@ -2061,17 +2061,17 @@ Node906 - -P4::ToP4 + +P4::ToP4 - - -Node503->Node906 - - - + + +Node504->Node906 + + + @@ -2079,17 +2079,17 @@ Node849 - -P4::TypeInferenceBase + +P4::TypeInferenceBase - - -Node503->Node849 - - - + + +Node504->Node849 + + + @@ -2097,17 +2097,17 @@ Node855 - -P4::UnrollLoops + +P4::UnrollLoops - - -Node503->Node855 - - - + + +Node504->Node855 + + + @@ -2115,71 +2115,71 @@ Node907 - -P4::hasSideEffects + +P4::hasSideEffects - - -Node503->Node907 - - - + + +Node504->Node907 + + + - - -Node505 - - -P4::ActionsInliner + + +Node506 + + +P4::ActionsInliner - - -Node504->Node505 - - - + + +Node505->Node506 + + + - - -Node508 - - -P4::FunctionsInliner + + +Node509 + + +P4::FunctionsInliner - - -Node507->Node508 - - - + + +Node508->Node509 + + + - - -Node510 - - -P4::GeneralInliner + + +Node511 + + +P4::GeneralInliner - - -Node509->Node510 - - - + + +Node510->Node511 + + + @@ -2187,9 +2187,9 @@ Node873 - -BFN::CheckExternInvocation -Common + +BFN::CheckExternInvocation +Common @@ -2197,8 +2197,8 @@ Node872->Node873 - - + + @@ -2206,8 +2206,8 @@ Node874 - -BFN::CheckT2NAExternInvocation + +BFN::CheckT2NAExternInvocation @@ -2215,8 +2215,8 @@ Node872->Node874 - - + + @@ -2224,8 +2224,8 @@ Node875 - -BFN::CheckTNAExternInvocation + +BFN::CheckTNAExternInvocation @@ -2233,8 +2233,8 @@ Node872->Node875 - - + + @@ -2242,9 +2242,9 @@ Node876 - -P4::DPDK::CheckPNAExtern -Invocation + +P4::DPDK::CheckPNAExtern +Invocation @@ -2252,8 +2252,8 @@ Node872->Node876 - - + + @@ -2261,9 +2261,9 @@ Node771 - -P4::DPDK::CopyMatchKeysTo -SingleStruct + +P4::DPDK::CopyMatchKeysTo +SingleStruct @@ -2271,8 +2271,8 @@ Node770->Node771 - - + + @@ -2280,8 +2280,8 @@ Node822 - -P4::BMV2::RemoveComplexExpressions + +P4::BMV2::RemoveComplexExpressions @@ -2289,8 +2289,8 @@ Node821->Node822 - - + + @@ -2298,8 +2298,8 @@ Node850 - -P4::ReadOnlyTypeInference + +P4::ReadOnlyTypeInference @@ -2307,8 +2307,8 @@ Node849->Node850 - - + + @@ -2316,8 +2316,8 @@ Node847 - -P4::TypeInference + +P4::TypeInference @@ -2325,8 +2325,8 @@ Node849->Node847 - - + + @@ -2334,8 +2334,8 @@ Node848 - -BFN::TypeInference + +BFN::TypeInference @@ -2343,8 +2343,8 @@ Node847->Node848 - - + + @@ -2352,8 +2352,8 @@ Node212 - -P4::IHasBlock + +P4::IHasBlock @@ -2361,8 +2361,8 @@ Node211 - -BFN::EvaluatorPass + +BFN::EvaluatorPass @@ -2370,8 +2370,8 @@ Node212->Node211 - - + + @@ -2379,8 +2379,8 @@ Node213 - -P4::Evaluator + +P4::Evaluator @@ -2388,8 +2388,8 @@ Node212->Node213 - - + + @@ -2397,8 +2397,8 @@ Node214 - -P4::EvaluatorPass + +P4::EvaluatorPass @@ -2406,8 +2406,8 @@ Node212->Node214 - - + + @@ -2415,8 +2415,8 @@ Node116 - -P4::IHasDbPrint + +P4::IHasDbPrint @@ -2424,9 +2424,9 @@ Node117 - -P4::StructTypeReplacement -< IR::Type_Struct > + +P4::StructTypeReplacement +< IR::Type_Struct > @@ -2434,8 +2434,8 @@ Node116->Node117 - - + + @@ -2443,9 +2443,9 @@ Node118 - -P4::TypeSubstitution -< const IR::ITypeVar * > + +P4::TypeSubstitution +< const IR::ITypeVar * > @@ -2453,8 +2453,8 @@ Node116->Node118 - - + + @@ -2462,8 +2462,8 @@ Node120 - -ActionData::Parameter + +ActionData::Parameter @@ -2471,8 +2471,8 @@ Node116->Node120 - - + + @@ -2480,8 +2480,8 @@ Node128 - -ActionDataBus::Loc + +ActionDataBus::Loc @@ -2489,8 +2489,8 @@ Node116->Node128 - - + + @@ -2498,8 +2498,8 @@ Node129 - -ByteInfo + +ByteInfo @@ -2507,8 +2507,8 @@ Node116->Node129 - - + + @@ -2516,8 +2516,8 @@ Node130 - -ByteInfo::InterleaveInfo + +ByteInfo::InterleaveInfo @@ -2525,8 +2525,8 @@ Node116->Node130 - - + + @@ -2534,8 +2534,8 @@ Node131 - -CollectHeaderValidity + +CollectHeaderValidity @@ -2543,8 +2543,8 @@ Node116->Node131 - - + + @@ -2552,8 +2552,8 @@ Node115 - -CollectWeakFields + +CollectWeakFields @@ -2561,8 +2561,8 @@ Node116->Node115 - - + + @@ -2570,8 +2570,8 @@ Node132 - -CreateConstants + +CreateConstants @@ -2579,8 +2579,8 @@ Node116->Node132 - - + + @@ -2588,8 +2588,8 @@ Node163 - -DynamicNextTable + +DynamicNextTable @@ -2597,8 +2597,8 @@ Node116->Node163 - - + + @@ -2606,8 +2606,8 @@ Node923 - -IXBar + +IXBar @@ -2615,8 +2615,8 @@ Node116->Node923 - - + + @@ -2624,8 +2624,8 @@ Node925 - -IXBar::Use::GroupInfo + +IXBar::Use::GroupInfo @@ -2633,8 +2633,8 @@ Node116->Node925 - - + + @@ -2642,8 +2642,8 @@ Node166 - -JbayNextTable + +JbayNextTable @@ -2651,8 +2651,8 @@ Node116->Node166 - - + + @@ -2660,8 +2660,8 @@ Node926 - -MauPower::SimplePowerGraph + +MauPower::SimplePowerGraph @@ -2669,8 +2669,8 @@ Node116->Node926 - - + + @@ -2678,8 +2678,8 @@ Node927 - -P4::AllDefinitions + +P4::AllDefinitions @@ -2687,8 +2687,8 @@ Node116->Node927 - - + + @@ -2696,8 +2696,8 @@ Node928 - -P4::BMV2::CFG + +P4::BMV2::CFG @@ -2705,8 +2705,8 @@ Node116->Node928 - - + + @@ -2714,8 +2714,8 @@ Node929 - -P4::BMV2::CFG::EdgeSet + +P4::BMV2::CFG::EdgeSet @@ -2723,8 +2723,8 @@ Node116->Node929 - - + + @@ -2732,8 +2732,8 @@ Node930 - -P4::BMV2::CFG::Node + +P4::BMV2::CFG::Node @@ -2741,8 +2741,8 @@ Node116->Node930 - - + + @@ -2750,8 +2750,8 @@ Node1286 - -P4::CallInfo + +P4::CallInfo @@ -2759,8 +2759,8 @@ Node116->Node1286 - - + + @@ -2768,9 +2768,9 @@ Node1287 - -P4::ComplexValues:: -Component + +P4::ComplexValues:: +Component @@ -2778,8 +2778,8 @@ Node116->Node1287 - - + + @@ -2787,8 +2787,8 @@ Node1290 - -P4::ComputeWriteSet + +P4::ComputeWriteSet @@ -2796,8 +2796,8 @@ Node116->Node1290 - - + + @@ -2805,8 +2805,8 @@ Node1291 - -P4::Definitions + +P4::Definitions @@ -2814,8 +2814,8 @@ Node116->Node1291 - - + + @@ -2823,8 +2823,8 @@ Node1071 - -P4::IR::ID + +P4::IR::ID @@ -2832,8 +2832,8 @@ Node116->Node1071 - - + + @@ -2841,8 +2841,8 @@ Node1028 - -P4::IR::INode + +P4::IR::INode @@ -2850,8 +2850,8 @@ Node116->Node1028 - - + + @@ -2859,8 +2859,8 @@ Node1292 - -P4::InlineSummary + +P4::InlineSummary @@ -2868,8 +2868,8 @@ Node116->Node1292 - - + + @@ -2877,8 +2877,8 @@ Node1293 - -P4::LocationPath + +P4::LocationPath @@ -2886,8 +2886,8 @@ Node116->Node1293 - - + + @@ -2895,8 +2895,8 @@ Node1294 - -P4::LocationSet + +P4::LocationSet @@ -2904,8 +2904,8 @@ Node116->Node1294 - - + + @@ -2913,8 +2913,8 @@ Node1295 - -P4::ParameterSubstitution + +P4::ParameterSubstitution @@ -2922,8 +2922,8 @@ Node116->Node1295 - - + + @@ -2931,8 +2931,8 @@ Node911 - -P4::ProgramMap + +P4::ProgramMap @@ -2940,8 +2940,8 @@ Node116->Node911 - - + + @@ -2949,8 +2949,8 @@ Node1296 - -P4::ProgramPoint + +P4::ProgramPoint @@ -2958,8 +2958,8 @@ Node116->Node1296 - - + + @@ -2967,8 +2967,8 @@ Node1297 - -P4::ProgramPoints + +P4::ProgramPoints @@ -2976,8 +2976,8 @@ Node116->Node1297 - - + + @@ -2985,8 +2985,8 @@ Node1298 - -P4::SetOfLocations + +P4::SetOfLocations @@ -2994,8 +2994,8 @@ Node116->Node1298 - - + + @@ -3003,10 +3003,10 @@ Node1299 - -P4::SimpleCallInfo -< CallableT, CallNodeT, - CallExpressionT > + +P4::SimpleCallInfo +< CallableT, CallNodeT, + CallExpressionT > @@ -3014,8 +3014,8 @@ Node116->Node1299 - - + + @@ -3023,9 +3023,9 @@ Node1300 - -P4::SimpleInlineWorkList -< CallInfo > + +P4::SimpleInlineWorkList +< CallInfo > @@ -3033,8 +3033,8 @@ Node116->Node1300 - - + + @@ -3042,8 +3042,8 @@ Node1250 - -P4::StorageLocation + +P4::StorageLocation @@ -3051,8 +3051,8 @@ Node116->Node1250 - - + + @@ -3060,8 +3060,8 @@ Node1301 - -P4::StorageMap + +P4::StorageMap @@ -3069,8 +3069,8 @@ Node116->Node1301 - - + + @@ -3078,8 +3078,8 @@ Node1302 - -P4::StructTypeReplacement< T > + +P4::StructTypeReplacement< T > @@ -3087,8 +3087,8 @@ Node116->Node1302 - - + + @@ -3096,8 +3096,8 @@ Node1257 - -P4::SymbolicValue + +P4::SymbolicValue @@ -3105,8 +3105,8 @@ Node116->Node1257 - - + + @@ -3114,8 +3114,8 @@ Node1276 - -P4::TypeConstraint + +P4::TypeConstraint @@ -3123,8 +3123,8 @@ Node116->Node1276 - - + + @@ -3132,8 +3132,8 @@ Node1303 - -P4::TypeConstraints + +P4::TypeConstraints @@ -3141,8 +3141,8 @@ Node116->Node1303 - - + + @@ -3150,8 +3150,8 @@ Node1304 - -P4::TypeSpecialization + +P4::TypeSpecialization @@ -3159,8 +3159,8 @@ Node116->Node1304 - - + + @@ -3168,8 +3168,8 @@ Node1305 - -P4::TypeSpecializationMap + +P4::TypeSpecializationMap @@ -3177,8 +3177,8 @@ Node116->Node1305 - - + + @@ -3186,8 +3186,8 @@ Node1306 - -P4::TypeSubstitution< T > + +P4::TypeSubstitution< T > @@ -3195,8 +3195,8 @@ Node116->Node1306 - - + + @@ -3204,8 +3204,8 @@ Node1307 - -P4::UsedDeclSet + +P4::UsedDeclSet @@ -3213,8 +3213,8 @@ Node116->Node1307 - - + + @@ -3222,8 +3222,8 @@ Node1072 - -P4::Util::Comment + +P4::Util::Comment @@ -3231,8 +3231,8 @@ Node116->Node1072 - - + + @@ -3240,8 +3240,8 @@ Node1308 - -P4::ValueMap + +P4::ValueMap @@ -3249,8 +3249,8 @@ Node116->Node1308 - - + + @@ -3258,8 +3258,8 @@ Node1309 - -P4HashFunction + +P4HashFunction @@ -3267,26 +3267,26 @@ Node116->Node1309 - - + + - - -Node654 - - -SynthesizePovEncoder + + +Node655 + + +SynthesizePovEncoder - - -Node116->Node654 - - - + + +Node116->Node655 + + + @@ -3294,8 +3294,8 @@ Node119 - -P4::TypeVariableSubstitution + +P4::TypeVariableSubstitution @@ -3303,8 +3303,8 @@ Node118->Node119 - - + + @@ -3312,8 +3312,8 @@ Node121 - -ActionData::Argument + +ActionData::Argument @@ -3321,8 +3321,8 @@ Node120->Node121 - - + + @@ -3330,8 +3330,8 @@ Node122 - -ActionData::Constant + +ActionData::Constant @@ -3339,8 +3339,8 @@ Node120->Node122 - - + + @@ -3348,8 +3348,8 @@ Node123 - -ActionData::Hash + +ActionData::Hash @@ -3357,8 +3357,8 @@ Node120->Node123 - - + + @@ -3366,8 +3366,8 @@ Node124 - -ActionData::MeterALU + +ActionData::MeterALU @@ -3375,8 +3375,8 @@ Node120->Node124 - - + + @@ -3384,8 +3384,8 @@ Node125 - -ActionData::MeterColor + +ActionData::MeterColor @@ -3393,8 +3393,8 @@ Node120->Node125 - - + + @@ -3402,8 +3402,8 @@ Node126 - -ActionData::RandomNumber + +ActionData::RandomNumber @@ -3411,8 +3411,8 @@ Node120->Node126 - - + + @@ -3420,8 +3420,8 @@ Node127 - -ActionData::RandomPadding + +ActionData::RandomPadding @@ -3429,8 +3429,8 @@ Node120->Node127 - - + + @@ -3438,8 +3438,8 @@ Node924 - -Tofino::IXBar + +Tofino::IXBar @@ -3447,8 +3447,8 @@ Node923->Node924 - - + + @@ -3465,8 +3465,8 @@ Node930->Node931 - - + + @@ -3483,8 +3483,8 @@ Node930->Node932 - - + + @@ -3501,8 +3501,8 @@ Node930->Node933 - - + + @@ -3510,9 +3510,9 @@ Node1288 - -P4::ComplexValues:: -FieldsMap + +P4::ComplexValues:: +FieldsMap @@ -3520,8 +3520,8 @@ Node1287->Node1288 - - + + @@ -3529,9 +3529,9 @@ Node1289 - -P4::ComplexValues:: -FinalName + +P4::ComplexValues:: +FinalName @@ -3539,8 +3539,8 @@ Node1287->Node1289 - - + + @@ -3557,8 +3557,8 @@ Node1028->Node1029 - - + + @@ -3566,8 +3566,8 @@ Node1030 - -P4::IR::Node + +P4::IR::Node @@ -3575,8 +3575,8 @@ Node1028->Node1030 - - + + @@ -3584,9 +3584,9 @@ Node1031 - -P4::IR::NameMap< T, - MAP, COMP, ALLOC > + +P4::IR::NameMap< T, + MAP, COMP, ALLOC > @@ -3594,8 +3594,8 @@ Node1030->Node1031 - - + + @@ -3603,9 +3603,9 @@ Node1032 - -P4::IR::NodeMap< KEY, - VALUE, MAP, COMP, ALLOC > + +P4::IR::NodeMap< KEY, + VALUE, MAP, COMP, ALLOC > @@ -3613,8 +3613,8 @@ Node1030->Node1032 - - + + @@ -3622,8 +3622,8 @@ Node1033 - -P4::IR::VectorBase + +P4::IR::VectorBase @@ -3631,8 +3631,8 @@ Node1030->Node1033 - - + + @@ -3640,9 +3640,9 @@ Node1034 - -P4::IR::Vector< IR -::BFN::Pipe > + +P4::IR::Vector< IR +::BFN::Pipe > @@ -3650,8 +3650,8 @@ Node1033->Node1034 - - + + @@ -3659,9 +3659,9 @@ Node1035 - -P4::IR::Vector< IR -::NamedExpression > + +P4::IR::Vector< IR +::NamedExpression > @@ -3669,8 +3669,8 @@ Node1033->Node1035 - - + + @@ -3678,9 +3678,9 @@ Node1037 - -P4::IR::Vector< IR -::Annotation > + +P4::IR::Vector< IR +::Annotation > @@ -3688,8 +3688,8 @@ Node1033->Node1037 - - + + @@ -3697,9 +3697,9 @@ Node1038 - -P4::IR::Vector< IR -::Expression > + +P4::IR::Vector< IR +::Expression > @@ -3707,8 +3707,8 @@ Node1033->Node1038 - - + + @@ -3716,9 +3716,9 @@ Node1039 - -P4::IR::Vector< P4 -::IR::Node > + +P4::IR::Vector< P4 +::IR::Node > @@ -3726,8 +3726,8 @@ Node1033->Node1039 - - + + @@ -3735,9 +3735,9 @@ Node1041 - -P4::IR::Vector< IR -::StructField > + +P4::IR::Vector< IR +::StructField > @@ -3745,8 +3745,8 @@ Node1033->Node1041 - - + + @@ -3754,9 +3754,9 @@ Node1043 - -P4::IR::Vector< IR -::MAU::Table > + +P4::IR::Vector< IR +::MAU::Table > @@ -3764,8 +3764,8 @@ Node1033->Node1043 - - + + @@ -3773,9 +3773,9 @@ Node1044 - -P4::IR::Vector< IR -::Type > + +P4::IR::Vector< IR +::Type > @@ -3783,8 +3783,8 @@ Node1033->Node1044 - - + + @@ -3792,9 +3792,9 @@ Node1045 - -P4::IR::Vector< IR -::Argument > + +P4::IR::Vector< IR +::Argument > @@ -3802,8 +3802,8 @@ Node1033->Node1045 - - + + @@ -3811,9 +3811,9 @@ Node1046 - -P4::IR::Vector< IR -::Declaration > + +P4::IR::Vector< IR +::Declaration > @@ -3821,8 +3821,8 @@ Node1033->Node1046 - - + + @@ -3830,9 +3830,9 @@ Node1048 - -P4::IR::Vector< IR -::StatOrDecl > + +P4::IR::Vector< IR +::StatOrDecl > @@ -3840,8 +3840,8 @@ Node1033->Node1048 - - + + @@ -3849,9 +3849,9 @@ Node1050 - -P4::IR::Vector< IR -::DpdkAsmStatement > + +P4::IR::Vector< IR +::DpdkAsmStatement > @@ -3859,8 +3859,8 @@ Node1033->Node1050 - - + + @@ -3868,9 +3868,9 @@ Node1052 - -P4::IR::Vector< IR -::DpdkTable > + +P4::IR::Vector< IR +::DpdkTable > @@ -3878,8 +3878,8 @@ Node1033->Node1052 - - + + @@ -3887,9 +3887,9 @@ Node1054 - -P4::IR::Vector< IR -::DpdkSelector > + +P4::IR::Vector< IR +::DpdkSelector > @@ -3897,8 +3897,8 @@ Node1033->Node1054 - - + + @@ -3906,9 +3906,9 @@ Node1056 - -P4::IR::Vector< IR -::DpdkLearner > + +P4::IR::Vector< IR +::DpdkLearner > @@ -3916,8 +3916,8 @@ Node1033->Node1056 - - + + @@ -3925,9 +3925,9 @@ Node1058 - -P4::IR::Vector< IR -::DpdkAction > + +P4::IR::Vector< IR +::DpdkAction > @@ -3935,8 +3935,8 @@ Node1033->Node1058 - - + + @@ -3944,9 +3944,9 @@ Node1060 - -P4::IR::Vector< IR -::Parameter > + +P4::IR::Vector< IR +::Parameter > @@ -3954,8 +3954,8 @@ Node1033->Node1060 - - + + @@ -3963,9 +3963,9 @@ Node1062 - -P4::IR::Vector< IR -::DpdkDeclaration > + +P4::IR::Vector< IR +::DpdkDeclaration > @@ -3973,8 +3973,8 @@ Node1033->Node1062 - - + + @@ -3982,9 +3982,9 @@ Node1064 - -P4::IR::Vector< IR -::ParserState > + +P4::IR::Vector< IR +::ParserState > @@ -3992,8 +3992,8 @@ Node1033->Node1064 - - + + @@ -4001,9 +4001,9 @@ Node1066 - -P4::IR::Vector< IR -::SelectCase > + +P4::IR::Vector< IR +::SelectCase > @@ -4011,8 +4011,8 @@ Node1033->Node1066 - - + + @@ -4020,8 +4020,8 @@ Node1067 - -P4::IR::Vector< N > + +P4::IR::Vector< N > @@ -4029,8 +4029,8 @@ Node1033->Node1067 - - + + @@ -4038,8 +4038,8 @@ Node1068 - -P4::IR::Vector< T > + +P4::IR::Vector< T > @@ -4047,8 +4047,8 @@ Node1033->Node1068 - - + + @@ -4056,9 +4056,9 @@ Node1036 - -P4::IR::IndexedVector -< IR::NamedExpression > + +P4::IR::IndexedVector +< IR::NamedExpression > @@ -4066,8 +4066,8 @@ Node1035->Node1036 - - + + @@ -4075,9 +4075,9 @@ Node1040 - -P4::IR::IndexedVector -< P4::IR::Node > + +P4::IR::IndexedVector +< P4::IR::Node > @@ -4085,8 +4085,8 @@ Node1039->Node1040 - - + + @@ -4094,9 +4094,9 @@ Node1042 - -P4::IR::IndexedVector -< IR::StructField > + +P4::IR::IndexedVector +< IR::StructField > @@ -4104,8 +4104,8 @@ Node1041->Node1042 - - + + @@ -4113,9 +4113,9 @@ Node1047 - -P4::IR::IndexedVector -< IR::Declaration > + +P4::IR::IndexedVector +< IR::Declaration > @@ -4123,8 +4123,8 @@ Node1046->Node1047 - - + + @@ -4132,9 +4132,9 @@ Node1049 - -P4::IR::IndexedVector -< IR::StatOrDecl > + +P4::IR::IndexedVector +< IR::StatOrDecl > @@ -4142,8 +4142,8 @@ Node1048->Node1049 - - + + @@ -4151,9 +4151,9 @@ Node1051 - -P4::IR::IndexedVector -< IR::DpdkAsmStatement > + +P4::IR::IndexedVector +< IR::DpdkAsmStatement > @@ -4161,8 +4161,8 @@ Node1050->Node1051 - - + + @@ -4170,9 +4170,9 @@ Node1053 - -P4::IR::IndexedVector -< IR::DpdkTable > + +P4::IR::IndexedVector +< IR::DpdkTable > @@ -4180,8 +4180,8 @@ Node1052->Node1053 - - + + @@ -4189,9 +4189,9 @@ Node1055 - -P4::IR::IndexedVector -< IR::DpdkSelector > + +P4::IR::IndexedVector +< IR::DpdkSelector > @@ -4199,8 +4199,8 @@ Node1054->Node1055 - - + + @@ -4208,9 +4208,9 @@ Node1057 - -P4::IR::IndexedVector -< IR::DpdkLearner > + +P4::IR::IndexedVector +< IR::DpdkLearner > @@ -4218,8 +4218,8 @@ Node1056->Node1057 - - + + @@ -4227,9 +4227,9 @@ Node1059 - -P4::IR::IndexedVector -< IR::DpdkAction > + +P4::IR::IndexedVector +< IR::DpdkAction > @@ -4237,8 +4237,8 @@ Node1058->Node1059 - - + + @@ -4246,9 +4246,9 @@ Node1061 - -P4::IR::IndexedVector -< IR::Parameter > + +P4::IR::IndexedVector +< IR::Parameter > @@ -4256,8 +4256,8 @@ Node1060->Node1061 - - + + @@ -4265,9 +4265,9 @@ Node1063 - -P4::IR::IndexedVector -< IR::DpdkDeclaration > + +P4::IR::IndexedVector +< IR::DpdkDeclaration > @@ -4275,8 +4275,8 @@ Node1062->Node1063 - - + + @@ -4284,9 +4284,9 @@ Node1065 - -P4::IR::IndexedVector -< IR::ParserState > + +P4::IR::IndexedVector +< IR::ParserState > @@ -4294,8 +4294,8 @@ Node1064->Node1065 - - + + @@ -4303,8 +4303,8 @@ Node1069 - -P4::IR::IndexedVector< T > + +P4::IR::IndexedVector< T > @@ -4312,8 +4312,8 @@ Node1068->Node1069 - - + + @@ -4321,8 +4321,8 @@ Node911->Node910 - - + + @@ -4330,8 +4330,8 @@ Node912 - -P4::TypeMap + +P4::TypeMap @@ -4339,8 +4339,8 @@ Node911->Node912 - - + + @@ -4357,8 +4357,8 @@ Node1250->Node1251 - - + + @@ -4375,8 +4375,8 @@ Node1250->Node1252 - - + + @@ -4393,8 +4393,8 @@ Node1250->Node1255 - - + + @@ -4402,8 +4402,8 @@ Node1253 - -P4::ArrayLocation + +P4::ArrayLocation @@ -4411,8 +4411,8 @@ Node1252->Node1253 - - + + @@ -4420,8 +4420,8 @@ Node1254 - -P4::TupleLocation + +P4::TupleLocation @@ -4429,8 +4429,8 @@ Node1252->Node1254 - - + + @@ -4438,8 +4438,8 @@ Node1256 - -P4::StructLocation + +P4::StructLocation @@ -4447,8 +4447,8 @@ Node1255->Node1256 - - + + @@ -4465,8 +4465,8 @@ Node1257->Node1258 - - + + @@ -4483,8 +4483,8 @@ Node1257->Node1264 - - + + @@ -4501,8 +4501,8 @@ Node1257->Node1265 - - + + @@ -4519,8 +4519,8 @@ Node1257->Node1268 - - + + @@ -4537,8 +4537,8 @@ Node1257->Node1270 - - + + @@ -4555,8 +4555,8 @@ Node1257->Node1274 - - + + @@ -4573,8 +4573,8 @@ Node1257->Node1275 - - + + @@ -4582,8 +4582,8 @@ Node1259 - -P4::SymbolicBool + +P4::SymbolicBool @@ -4591,8 +4591,8 @@ Node1258->Node1259 - - + + @@ -4600,8 +4600,8 @@ Node1260 - -P4::SymbolicEnum + +P4::SymbolicEnum @@ -4609,8 +4609,8 @@ Node1258->Node1260 - - + + @@ -4618,8 +4618,8 @@ Node1261 - -P4::SymbolicInteger + +P4::SymbolicInteger @@ -4627,8 +4627,8 @@ Node1258->Node1261 - - + + @@ -4636,8 +4636,8 @@ Node1262 - -P4::SymbolicString + +P4::SymbolicString @@ -4645,8 +4645,8 @@ Node1258->Node1262 - - + + @@ -4654,8 +4654,8 @@ Node1263 - -P4::SymbolicVarbit + +P4::SymbolicVarbit @@ -4663,8 +4663,8 @@ Node1258->Node1263 - - + + @@ -4672,8 +4672,8 @@ Node1266 - -P4::SymbolicException + +P4::SymbolicException @@ -4681,8 +4681,8 @@ Node1265->Node1266 - - + + @@ -4690,8 +4690,8 @@ Node1267 - -P4::SymbolicStaticError + +P4::SymbolicStaticError @@ -4699,8 +4699,8 @@ Node1265->Node1267 - - + + @@ -4708,8 +4708,8 @@ Node1269 - -P4::SymbolicPacketIn + +P4::SymbolicPacketIn @@ -4717,8 +4717,8 @@ Node1268->Node1269 - - + + @@ -4726,8 +4726,8 @@ Node1271 - -P4::SymbolicHeader + +P4::SymbolicHeader @@ -4735,8 +4735,8 @@ Node1270->Node1271 - - + + @@ -4744,8 +4744,8 @@ Node1273 - -P4::SymbolicHeaderUnion + +P4::SymbolicHeaderUnion @@ -4753,8 +4753,8 @@ Node1270->Node1273 - - + + @@ -4762,8 +4762,8 @@ Node1272 - -P4::AnyElement + +P4::AnyElement @@ -4771,8 +4771,8 @@ Node1271->Node1272 - - + + @@ -4789,8 +4789,8 @@ Node1276->Node1277 - - + + @@ -4798,8 +4798,8 @@ Node1278 - -P4::CanBeImplicitlyCastConstraint + +P4::CanBeImplicitlyCastConstraint @@ -4807,8 +4807,8 @@ Node1277->Node1278 - - + + @@ -4816,8 +4816,8 @@ Node1279 - -P4::EqualityConstraint + +P4::EqualityConstraint @@ -4825,8 +4825,8 @@ Node1277->Node1279 - - + + @@ -4834,8 +4834,8 @@ Node894 - -P4::KeyIsSimple + +P4::KeyIsSimple @@ -4843,8 +4843,8 @@ Node894->Node893 - - + + @@ -4852,8 +4852,8 @@ Node895 - -BFN::IsPhase0 + +BFN::IsPhase0 @@ -4861,8 +4861,8 @@ Node894->Node895 - - + + @@ -4870,8 +4870,8 @@ Node896 - -BFN::IsSlice + +BFN::IsSlice @@ -4879,8 +4879,8 @@ Node894->Node896 - - + + @@ -4888,8 +4888,8 @@ Node897 - -P4::IsLikeLeftValue + +P4::IsLikeLeftValue @@ -4897,8 +4897,8 @@ Node894->Node897 - - + + @@ -4906,8 +4906,8 @@ Node900 - -P4::IsNonConstantArrayIndex + +P4::IsNonConstantArrayIndex @@ -4915,8 +4915,8 @@ Node894->Node900 - - + + @@ -4924,8 +4924,8 @@ Node901 - -P4::OrPolicy + +P4::OrPolicy @@ -4933,8 +4933,8 @@ Node894->Node901 - - + + @@ -4942,8 +4942,8 @@ Node898 - -P4::IsMask + +P4::IsMask @@ -4951,8 +4951,8 @@ Node897->Node898 - - + + @@ -4960,8 +4960,8 @@ Node899 - -BFN::IsSliceMask + +BFN::IsSliceMask @@ -4969,8 +4969,8 @@ Node898->Node899 - - + + @@ -4978,8 +4978,8 @@ Node913 - -P4::NameGenerator + +P4::NameGenerator @@ -4987,8 +4987,8 @@ Node913->Node910 - - + + @@ -4996,8 +4996,8 @@ Node914 - -P4::MinimalNameGenerator + +P4::MinimalNameGenerator @@ -5005,8 +5005,8 @@ Node913->Node914 - - + + @@ -5042,8 +5042,8 @@ Node1285 - -P4::RTTI::Base + +P4::RTTI::Base @@ -5051,8 +5051,8 @@ Node934 - -P4::ICastable + +P4::ICastable @@ -5060,8 +5060,8 @@ Node1285->Node934 - - + + @@ -5069,8 +5069,8 @@ Node934->Node930 - - + + @@ -5078,8 +5078,8 @@ Node934->Node1028 - - + + @@ -5087,8 +5087,8 @@ Node934->Node1250 - - + + @@ -5096,8 +5096,8 @@ Node934->Node1257 - - + + @@ -5105,8 +5105,8 @@ Node934->Node1276 - - + + @@ -5114,8 +5114,8 @@ Node935 - -P4::AbstractSolver + +P4::AbstractSolver @@ -5123,8 +5123,8 @@ Node934->Node935 - - + + @@ -5141,8 +5141,8 @@ Node934->Node937 - - + + @@ -5150,8 +5150,8 @@ Node943 - -P4::EBPF::EBPFObject + +P4::EBPF::EBPFObject @@ -5159,8 +5159,8 @@ Node934->Node943 - - + + @@ -5177,8 +5177,8 @@ Node934->Node1011 - - + + @@ -5186,8 +5186,8 @@ Node1073 - -P4::InstanceBase + +P4::InstanceBase @@ -5195,8 +5195,8 @@ Node934->Node1073 - - + + @@ -5213,8 +5213,8 @@ Node934->Node1093 - - + + @@ -5222,9 +5222,9 @@ Node1197 - -P4::P4Tools::AbstractRep -CheckedNode< Self, Node > + +P4::P4Tools::AbstractRep +CheckedNode< Self, Node > @@ -5232,8 +5232,8 @@ Node934->Node1197 - - + + @@ -5241,8 +5241,8 @@ Node1198 - -P4::P4Tools::CompilerResult + +P4::P4Tools::CompilerResult @@ -5250,8 +5250,8 @@ Node934->Node1198 - - + + @@ -5269,8 +5269,8 @@ Node934->Node1201 - - + + @@ -5288,8 +5288,8 @@ Node934->Node1204 - - + + @@ -5307,8 +5307,8 @@ Node934->Node1209 - - + + @@ -5325,8 +5325,8 @@ Node934->Node1237 - - + + @@ -5334,8 +5334,8 @@ Node1191 - -P4::Util::IJson + +P4::Util::IJson @@ -5343,8 +5343,8 @@ Node934->Node1191 - - + + @@ -5352,8 +5352,8 @@ Node1280 - -P4::Util::NamedSymbol + +P4::Util::NamedSymbol @@ -5361,8 +5361,8 @@ Node934->Node1280 - - + + @@ -5379,8 +5379,8 @@ Node935->Node936 - - + + @@ -5489,8 +5489,8 @@ Node943->Node944 - - + + @@ -5507,8 +5507,8 @@ Node943->Node950 - - + + @@ -5516,8 +5516,8 @@ Node964 - -P4::EBPF::EBPFDigestPSA + +P4::EBPF::EBPFDigestPSA @@ -5525,8 +5525,8 @@ Node943->Node964 - - + + @@ -5534,8 +5534,8 @@ Node966 - -P4::EBPF::EBPFHashAlgorithmPSA + +P4::EBPF::EBPFHashAlgorithmPSA @@ -5543,8 +5543,8 @@ Node943->Node966 - - + + @@ -5552,8 +5552,8 @@ Node973 - -P4::EBPF::EBPFMethodDeclaration + +P4::EBPF::EBPFMethodDeclaration @@ -5561,8 +5561,8 @@ Node943->Node973 - - + + @@ -5570,8 +5570,8 @@ Node974 - -P4::EBPF::EBPFParser + +P4::EBPF::EBPFParser @@ -5579,8 +5579,8 @@ Node943->Node974 - - + + @@ -5588,8 +5588,8 @@ Node978 - -P4::EBPF::EBPFParserState + +P4::EBPF::EBPFParserState @@ -5597,8 +5597,8 @@ Node943->Node978 - - + + @@ -5606,8 +5606,8 @@ Node980 - -P4::EBPF::EBPFProgram + +P4::EBPF::EBPFProgram @@ -5615,8 +5615,8 @@ Node943->Node980 - - + + @@ -5633,8 +5633,8 @@ Node943->Node992 - - + + @@ -5651,8 +5651,8 @@ Node943->Node993 - - + + @@ -5669,8 +5669,8 @@ Node943->Node1008 - - + + @@ -5687,8 +5687,8 @@ Node943->Node1024 - - + + @@ -5705,8 +5705,8 @@ Node943->Node1025 - - + + @@ -6048,8 +6048,8 @@ Node964->Node965 - - + + @@ -6066,8 +6066,8 @@ Node966->Node967 - - + + @@ -6085,8 +6085,8 @@ Node966->Node971 - - + + @@ -6104,8 +6104,8 @@ Node966->Node972 - - + + @@ -6176,8 +6176,8 @@ Node974->Node975 - - + + @@ -6194,8 +6194,8 @@ Node974->Node977 - - + + @@ -6230,8 +6230,8 @@ Node978->Node979 - - + + @@ -6248,8 +6248,8 @@ Node980->Node981 - - + + @@ -6266,8 +6266,8 @@ Node980->Node990 - - + + @@ -6284,8 +6284,8 @@ Node980->Node991 - - + + @@ -6293,8 +6293,8 @@ Node982 - -P4::EBPF::EBPFEgressPipeline + +P4::EBPF::EBPFEgressPipeline @@ -6302,8 +6302,8 @@ Node981->Node982 - - + + @@ -6311,8 +6311,8 @@ Node985 - -P4::EBPF::EBPFIngressPipeline + +P4::EBPF::EBPFIngressPipeline @@ -6320,8 +6320,8 @@ Node981->Node985 - - + + @@ -6329,8 +6329,8 @@ Node983 - -P4::EBPF::TCEgressPipeline + +P4::EBPF::TCEgressPipeline @@ -6338,8 +6338,8 @@ Node982->Node983 - - + + @@ -6347,8 +6347,8 @@ Node984 - -P4::EBPF::XDPEgressPipeline + +P4::EBPF::XDPEgressPipeline @@ -6356,8 +6356,8 @@ Node982->Node984 - - + + @@ -6365,8 +6365,8 @@ Node986 - -P4::EBPF::TCIngressPipeline + +P4::EBPF::TCIngressPipeline @@ -6374,8 +6374,8 @@ Node985->Node986 - - + + @@ -6383,8 +6383,8 @@ Node989 - -P4::EBPF::XDPIngressPipeline + +P4::EBPF::XDPIngressPipeline @@ -6392,8 +6392,8 @@ Node985->Node989 - - + + @@ -6401,9 +6401,9 @@ Node987 - -P4::EBPF::TCTrafficManager -ForXDP + +P4::EBPF::TCTrafficManager +ForXDP @@ -6411,8 +6411,8 @@ Node986->Node987 - - + + @@ -6420,8 +6420,8 @@ Node988 - -P4::TC::TCIngressPipelinePNA + +P4::TC::TCIngressPipelinePNA @@ -6429,8 +6429,8 @@ Node986->Node988 - - + + @@ -6618,8 +6618,8 @@ Node1002 - -P4::EBPF::EBPFTableImplementationPSA + +P4::EBPF::EBPFTableImplementationPSA @@ -6627,8 +6627,8 @@ Node1001->Node1002 - - + + @@ -6636,8 +6636,8 @@ Node1005 - -P4::TC::EBPFTablePNA + +P4::TC::EBPFTablePNA @@ -6645,8 +6645,8 @@ Node1001->Node1005 - - + + @@ -6654,8 +6654,8 @@ Node1003 - -P4::EBPF::EBPFActionProfilePSA + +P4::EBPF::EBPFActionProfilePSA @@ -6663,8 +6663,8 @@ Node1002->Node1003 - - + + @@ -6672,8 +6672,8 @@ Node1004 - -P4::EBPF::EBPFActionSelectorPSA + +P4::EBPF::EBPFActionSelectorPSA @@ -6681,8 +6681,8 @@ Node1002->Node1004 - - + + @@ -6690,8 +6690,8 @@ Node1009 - -P4::EBPF::EBPFBoolType + +P4::EBPF::EBPFBoolType @@ -6699,8 +6699,8 @@ Node1008->Node1009 - - + + @@ -6708,8 +6708,8 @@ Node1012 - -P4::EBPF::EBPFEnumType + +P4::EBPF::EBPFEnumType @@ -6717,8 +6717,8 @@ Node1008->Node1012 - - + + @@ -6726,8 +6726,8 @@ Node1014 - -P4::EBPF::EBPFErrorType + +P4::EBPF::EBPFErrorType @@ -6735,8 +6735,8 @@ Node1008->Node1014 - - + + @@ -6744,8 +6744,8 @@ Node1016 - -P4::EBPF::EBPFScalarType + +P4::EBPF::EBPFScalarType @@ -6753,8 +6753,8 @@ Node1008->Node1016 - - + + @@ -6762,8 +6762,8 @@ Node1019 - -P4::EBPF::EBPFStackType + +P4::EBPF::EBPFStackType @@ -6771,8 +6771,8 @@ Node1008->Node1019 - - + + @@ -6780,8 +6780,8 @@ Node1020 - -P4::EBPF::EBPFStructType + +P4::EBPF::EBPFStructType @@ -6789,8 +6789,8 @@ Node1008->Node1020 - - + + @@ -6798,8 +6798,8 @@ Node1022 - -P4::EBPF::EBPFTypeName + +P4::EBPF::EBPFTypeName @@ -6807,8 +6807,8 @@ Node1008->Node1022 - - + + @@ -6816,8 +6816,8 @@ Node1023 - -P4::UBPF::UBPFListType + +P4::UBPF::UBPFListType @@ -6825,8 +6825,8 @@ Node1008->Node1023 - - + + @@ -6834,8 +6834,8 @@ Node1010 - -P4::UBPF::UBPFBoolType + +P4::UBPF::UBPFBoolType @@ -6843,8 +6843,8 @@ Node1009->Node1010 - - + + @@ -6852,8 +6852,8 @@ Node1013 - -P4::UBPF::UBPFEnumType + +P4::UBPF::UBPFEnumType @@ -6861,8 +6861,8 @@ Node1012->Node1013 - - + + @@ -6870,8 +6870,8 @@ Node1015 - -P4::UBPF::UBPFErrorType + +P4::UBPF::UBPFErrorType @@ -6879,8 +6879,8 @@ Node1014->Node1015 - - + + @@ -6888,8 +6888,8 @@ Node1017 - -P4::UBPF::UBPFExternType + +P4::UBPF::UBPFExternType @@ -6897,8 +6897,8 @@ Node1016->Node1017 - - + + @@ -6906,8 +6906,8 @@ Node1018 - -P4::UBPF::UBPFScalarType + +P4::UBPF::UBPFScalarType @@ -6915,8 +6915,8 @@ Node1016->Node1018 - - + + @@ -6924,8 +6924,8 @@ Node1021 - -P4::UBPF::UBPFStructType + +P4::UBPF::UBPFStructType @@ -6933,8 +6933,8 @@ Node1020->Node1021 - - + + @@ -6978,8 +6978,8 @@ Node1011->Node1009 - - + + @@ -6987,8 +6987,8 @@ Node1011->Node1012 - - + + @@ -6996,8 +6996,8 @@ Node1011->Node1014 - - + + @@ -7005,8 +7005,8 @@ Node1011->Node1016 - - + + @@ -7014,8 +7014,8 @@ Node1011->Node1019 - - + + @@ -7023,17 +7023,17 @@ Node1011->Node1020 - - - + + + Node1011->Node1022 - - + + @@ -7041,8 +7041,8 @@ Node1011->Node1023 - - + + @@ -7050,8 +7050,8 @@ Node1074 - -P4::ConstructorCall + +P4::ConstructorCall @@ -7059,8 +7059,8 @@ Node1073->Node1074 - - + + @@ -7068,8 +7068,8 @@ Node1077 - -P4::EnumInstance + +P4::EnumInstance @@ -7077,8 +7077,8 @@ Node1073->Node1077 - - + + @@ -7086,8 +7086,8 @@ Node1080 - -P4::Instantiation + +P4::Instantiation @@ -7095,8 +7095,8 @@ Node1073->Node1080 - - + + @@ -7104,8 +7104,8 @@ Node1085 - -P4::MethodInstance + +P4::MethodInstance @@ -7113,8 +7113,8 @@ Node1073->Node1085 - - + + @@ -7122,8 +7122,8 @@ Node1075 - -P4::ContainerConstructorCall + +P4::ContainerConstructorCall @@ -7131,8 +7131,8 @@ Node1074->Node1075 - - + + @@ -7140,8 +7140,8 @@ Node1076 - -P4::ExternConstructorCall + +P4::ExternConstructorCall @@ -7149,8 +7149,8 @@ Node1074->Node1076 - - + + @@ -7158,8 +7158,8 @@ Node1078 - -P4::SerEnumInstance + +P4::SerEnumInstance @@ -7167,8 +7167,8 @@ Node1077->Node1078 - - + + @@ -7176,8 +7176,8 @@ Node1079 - -P4::SimpleEnumInstance + +P4::SimpleEnumInstance @@ -7185,8 +7185,8 @@ Node1077->Node1079 - - + + @@ -7194,8 +7194,8 @@ Node1081 - -P4::ControlInstantiation + +P4::ControlInstantiation @@ -7203,8 +7203,8 @@ Node1080->Node1081 - - + + @@ -7212,8 +7212,8 @@ Node1082 - -P4::ExternInstantiation + +P4::ExternInstantiation @@ -7221,8 +7221,8 @@ Node1080->Node1082 - - + + @@ -7230,8 +7230,8 @@ Node1083 - -P4::PackageInstantiation + +P4::PackageInstantiation @@ -7239,8 +7239,8 @@ Node1080->Node1083 - - + + @@ -7248,8 +7248,8 @@ Node1084 - -P4::ParserInstantiation + +P4::ParserInstantiation @@ -7257,8 +7257,8 @@ Node1080->Node1084 - - + + @@ -7266,8 +7266,8 @@ Node1086 - -P4::ActionCall + +P4::ActionCall @@ -7275,8 +7275,8 @@ Node1085->Node1086 - - + + @@ -7284,8 +7284,8 @@ Node1087 - -P4::ApplyMethod + +P4::ApplyMethod @@ -7293,8 +7293,8 @@ Node1085->Node1087 - - + + @@ -7302,8 +7302,8 @@ Node1088 - -P4::BuiltInMethod + +P4::BuiltInMethod @@ -7311,8 +7311,8 @@ Node1085->Node1088 - - + + @@ -7320,8 +7320,8 @@ Node1089 - -P4::ExternCall + +P4::ExternCall @@ -7329,8 +7329,8 @@ Node1085->Node1089 - - + + @@ -7338,8 +7338,8 @@ Node1092 - -P4::FunctionCall + +P4::FunctionCall @@ -7347,8 +7347,8 @@ Node1085->Node1092 - - + + @@ -7356,8 +7356,8 @@ Node1090 - -P4::ExternFunction + +P4::ExternFunction @@ -7365,8 +7365,8 @@ Node1089->Node1090 - - + + @@ -7374,8 +7374,8 @@ Node1091 - -P4::ExternMethod + +P4::ExternMethod @@ -7383,8 +7383,8 @@ Node1089->Node1091 - - + + @@ -7401,8 +7401,8 @@ Node1094 - -P4::JsonBoolean + +P4::JsonBoolean @@ -7410,8 +7410,8 @@ Node1093->Node1094 - - + + @@ -7455,8 +7455,8 @@ Node1099 - -P4::JsonString + +P4::JsonString @@ -7464,8 +7464,8 @@ Node1093->Node1099 - - + + @@ -7501,8 +7501,8 @@ Node1198->Node1199 - - + + @@ -7510,9 +7510,9 @@ Node1200 - -P4::P4Tools::P4Testgen -::Bmv2::BMv2V1ModelCompilerResult + +P4::P4Tools::P4Testgen +::Bmv2::BMv2V1ModelCompilerResult @@ -7520,8 +7520,8 @@ Node1199->Node1200 - - + + @@ -8383,8 +8383,8 @@ Node1190 - -P4::Util::JsonArray + +P4::Util::JsonArray @@ -8392,8 +8392,8 @@ Node1191->Node1190 - - + + @@ -8410,8 +8410,8 @@ Node1191->Node1192 - - + + @@ -8428,8 +8428,8 @@ Node1191->Node1194 - - + + @@ -8446,8 +8446,8 @@ Node1280->Node1281 - - + + @@ -8464,8 +8464,8 @@ Node1280->Node1283 - - + + @@ -8482,8 +8482,8 @@ Node1280->Node1284 - - + + @@ -8509,8 +8509,8 @@ Node1193 - -P4::string_map< IJson * > + +P4::string_map< IJson * > @@ -8518,8 +8518,8 @@ Node1193->Node1192 - - + + @@ -8527,8 +8527,8 @@ Node1070 - -P4::Util::IHasSourceInfo + +P4::Util::IHasSourceInfo @@ -8536,8 +8536,8 @@ Node1070->Node1071 - - + + @@ -8545,8 +8545,8 @@ Node1070->Node1028 - - + + @@ -8554,189 +8554,189 @@ Node1070->Node1072 - - + + - - -Node486 - - -P4::Visitor - - - - - -Node486->Node491 - - - - - - - - -Node486->Node503 - - - + + +Node487 + + +P4::Visitor - - -Node486->Node849 - - - + + +Node487->Node492 + + + - - -Node487 - - -AllocatePHV + + +Node487->Node504 + + + - - -Node486->Node487 - - - + + +Node487->Node849 + + + Node488 - - -ApplyGlobalPragmas + + +AllocatePHV - - -Node486->Node488 - - - + + +Node487->Node488 + + + Node489 - - -ClotAdjuster + + +ApplyGlobalPragmas - - -Node486->Node489 - - - + + +Node487->Node489 + + + Node490 - - -ComputeFieldsRequiringInit + + +ClotAdjuster - - -Node486->Node490 - - - + + +Node487->Node490 + + + - - -Node494 - - -DumpTableFlowGraph + + +Node491 + + +ComputeFieldsRequiringInit - - -Node486->Node494 - - - + + +Node487->Node491 + + + Node495 - - -ExcludeParserLoopReachable -Fields + + +DumpTableFlowGraph - - -Node486->Node495 - - - + + +Node487->Node495 + + + Node496 - - -GreedyClotAllocator + + +ExcludeParserLoopReachable +Fields - - -Node486->Node496 - - - + + +Node487->Node496 + + + Node497 - - -IncrementalPHVAllocation + + +GreedyClotAllocator + + + + + +Node487->Node497 + + + - - -Node486->Node497 - - - + + +Node498 + + +IncrementalPHVAllocation + + + + + +Node487->Node498 + + + @@ -8744,17 +8744,17 @@ Node164 - -NextTable + +NextTable - - -Node486->Node164 - - - + + +Node487->Node164 + + + @@ -8762,35 +8762,35 @@ Node432 - -P4::Backtrack + +P4::Backtrack - - -Node486->Node432 - - - + + +Node487->Node432 + + + - - -Node500 - - -P4::OnBacktrack< T > + + +Node501 + + +P4::OnBacktrack< T > - - -Node486->Node500 - - - + + +Node487->Node501 + + + @@ -8798,17 +8798,17 @@ Node178 - -P4::PassManager + +P4::PassManager - - -Node486->Node178 - - - + + +Node487->Node178 + + + @@ -8816,54 +8816,54 @@ Node25 - -P4::ControlFlowVisitor + +P4::ControlFlowVisitor - - -Node486->Node25 - - - + + +Node487->Node25 + + + - - -Node498 - - -P4::DynamicVisitor + + +Node499 + + +P4::DynamicVisitor - - -Node486->Node498 - - - + + +Node487->Node499 + + + - - -Node499 - - -P4::InlineDriver< Inline -List, InlineWorkList > + + +Node500 + + +P4::InlineDriver< Inline +List, InlineWorkList > - - -Node486->Node499 - - - + + +Node487->Node500 + + + @@ -8871,17 +8871,17 @@ Node27 - -P4::Inspector + +P4::Inspector - - -Node486->Node27 - - - + + +Node487->Node27 + + + @@ -8889,53 +8889,53 @@ Node448 - -P4::Modifier + +P4::Modifier - - -Node486->Node448 - - - + + +Node487->Node448 + + + - - -Node501 - - -P4::P4WriteContext + + +Node502 + + +P4::P4WriteContext - - -Node486->Node501 - - - + + +Node487->Node502 + + + - - -Node506 - - -P4::Transform + + +Node507 + + +P4::Transform - - -Node486->Node506 - - - + + +Node487->Node507 + + + @@ -8943,17 +8943,17 @@ Node916 - -P4::VisitFunctor + +P4::VisitFunctor - - -Node486->Node916 - - - + + +Node487->Node916 + + + @@ -8961,17 +8961,17 @@ Node917 - -PHV::LiveRangeSplitOrFail + +PHV::LiveRangeSplitOrFail - - -Node486->Node917 - - - + + +Node487->Node917 + + + @@ -8979,17 +8979,17 @@ Node918 - -PHV::v2::PhvAllocation + +PHV::v2::PhvAllocation - - -Node486->Node918 - - - + + +Node487->Node918 + + + @@ -8997,17 +8997,17 @@ Node919 - -ParserChecksumAllocator + +ParserChecksumAllocator - - -Node486->Node919 - - - + + +Node487->Node919 + + + @@ -9015,17 +9015,17 @@ Node920 - -PhvInfo::DumpPhvFields + +PhvInfo::DumpPhvFields - - -Node486->Node920 - - - + + +Node487->Node920 + + + @@ -9033,17 +9033,17 @@ Node921 - -PhvLogging::CollectDefUseInfo + +PhvLogging::CollectDefUseInfo - - -Node486->Node921 - - - + + +Node487->Node921 + + + @@ -9051,8 +9051,8 @@ Node164->Node163 - - + + @@ -9060,8 +9060,8 @@ Node164->Node166 - - + + @@ -9069,8 +9069,8 @@ Node165 - -DefaultNext + +DefaultNext @@ -9078,8 +9078,8 @@ Node164->Node165 - - + + @@ -9087,8 +9087,8 @@ Node433 - -CatchBacktrack< BT > + +CatchBacktrack< BT > @@ -9096,8 +9096,8 @@ Node432->Node433 - - + + @@ -9105,8 +9105,8 @@ Node434 - -DoTableLayout + +DoTableLayout @@ -9114,8 +9114,8 @@ Node432->Node434 - - + + @@ -9123,8 +9123,8 @@ Node922 - -MauBacktracker + +MauBacktracker @@ -9132,17 +9132,17 @@ Node432->Node922 - - + + - - -Node432->Node500 - - - + + +Node432->Node501 + + + @@ -9150,26 +9150,26 @@ Node432->Node178 - - + + - - -Node652 - - -SpreadGatewayAcrossSeq + + +Node653 + + +SpreadGatewayAcrossSeq - - -Node432->Node652 - - - + + +Node432->Node653 + + + @@ -9177,8 +9177,8 @@ Node178->Node211 - - + + @@ -9186,8 +9186,8 @@ Node178->Node214 - - + + @@ -9195,8 +9195,8 @@ Node179 - -AddAlwaysRun + +AddAlwaysRun @@ -9204,8 +9204,8 @@ Node178->Node179 - - + + @@ -9213,8 +9213,8 @@ Node180 - -AddInitsInMAU + +AddInitsInMAU @@ -9222,8 +9222,8 @@ Node178->Node180 - - + + @@ -9231,8 +9231,8 @@ Node181 - -AddSelectorSalu + +AddSelectorSalu @@ -9240,8 +9240,8 @@ Node178->Node181 - - + + @@ -9249,8 +9249,8 @@ Node182 - -AddSliceInitialization + +AddSliceInitialization @@ -9258,8 +9258,8 @@ Node178->Node182 - - + + @@ -9267,8 +9267,8 @@ Node183 - -AllocateClot + +AllocateClot @@ -9276,8 +9276,8 @@ Node178->Node183 - - + + @@ -9285,8 +9285,8 @@ Node184 - -ArithCompareAdjustment + +ArithCompareAdjustment @@ -9294,8 +9294,8 @@ Node178->Node184 - - + + @@ -9303,8 +9303,8 @@ Node185 - -AssignActionHandle + +AssignActionHandle @@ -9312,8 +9312,8 @@ Node178->Node185 - - + + @@ -9321,8 +9321,8 @@ Node186 - -AssignCounterLRTValues + +AssignCounterLRTValues @@ -9330,8 +9330,8 @@ Node178->Node186 - - + + @@ -9339,8 +9339,8 @@ Node187 - -AutoAlias + +AutoAlias @@ -9348,8 +9348,8 @@ Node178->Node187 - - + + @@ -9357,8 +9357,8 @@ Node188 - -BFN::ActionFunctionSetup + +BFN::ActionFunctionSetup @@ -9366,8 +9366,8 @@ Node178->Node188 - - + + @@ -9375,8 +9375,8 @@ Node189 - -BFN::AddIntrinsicMetadata + +BFN::AddIntrinsicMetadata @@ -9384,8 +9384,8 @@ Node178->Node189 - - + + @@ -9393,8 +9393,8 @@ Node190 - -BFN::AddMetadataParserStates + +BFN::AddMetadataParserStates @@ -9402,8 +9402,8 @@ Node178->Node190 - - + + @@ -9411,8 +9411,8 @@ Node191 - -BFN::AddPsaBridgeMetadata + +BFN::AddPsaBridgeMetadata @@ -9420,8 +9420,8 @@ Node178->Node191 - - + + @@ -9429,8 +9429,8 @@ Node192 - -BFN::AddTnaBridgeMetadata + +BFN::AddTnaBridgeMetadata @@ -9438,8 +9438,8 @@ Node178->Node192 - - + + @@ -9447,8 +9447,8 @@ Node193 - -BFN::AdjustByteCountSetup + +BFN::AdjustByteCountSetup @@ -9456,8 +9456,8 @@ Node178->Node193 - - + + @@ -9465,8 +9465,8 @@ Node194 - -BFN::AlpmImplementation + +BFN::AlpmImplementation @@ -9474,8 +9474,8 @@ Node178->Node194 - - + + @@ -9483,8 +9483,8 @@ Node195 - -BFN::AnnotateWithInHash + +BFN::AnnotateWithInHash @@ -9492,8 +9492,8 @@ Node178->Node195 - - + + @@ -9501,8 +9501,8 @@ Node196 - -BFN::ApplyEvaluator + +BFN::ApplyEvaluator @@ -9510,8 +9510,8 @@ Node178->Node196 - - + + @@ -9519,8 +9519,8 @@ Node197 - -BFN::ArchTranslation + +BFN::ArchTranslation @@ -9528,8 +9528,8 @@ Node178->Node197 - - + + @@ -9537,8 +9537,8 @@ Node198 - -BFN::AttachTables + +BFN::AttachTables @@ -9546,8 +9546,8 @@ Node178->Node198 - - + + @@ -9555,8 +9555,8 @@ Node199 - -BFN::Backend + +BFN::Backend @@ -9564,8 +9564,8 @@ Node178->Node199 - - + + @@ -9573,8 +9573,8 @@ Node200 - -BFN::CheckDesignPattern + +BFN::CheckDesignPattern @@ -9582,8 +9582,8 @@ Node178->Node200 - - + + @@ -9591,9 +9591,9 @@ Node201 - -BFN::CheckDirectResource -Invocation + +BFN::CheckDirectResource +Invocation @@ -9601,8 +9601,8 @@ Node178->Node201 - - + + @@ -9610,8 +9610,8 @@ Node202 - -BFN::CheckVarbitAccess + +BFN::CheckVarbitAccess @@ -9619,8 +9619,8 @@ Node178->Node202 - - + + @@ -9628,9 +9628,9 @@ Node203 - -BFN::CollectHardwareConstrained -Fields + +BFN::CollectHardwareConstrained +Fields @@ -9638,8 +9638,8 @@ Node178->Node203 - - + + @@ -9647,8 +9647,8 @@ Node204 - -BFN::ConvertPhase0 + +BFN::ConvertPhase0 @@ -9656,8 +9656,8 @@ Node178->Node204 - - + + @@ -9665,8 +9665,8 @@ Node205 - -BFN::DesugarVarbitExtract + +BFN::DesugarVarbitExtract @@ -9674,8 +9674,8 @@ Node178->Node205 - - + + @@ -9683,9 +9683,9 @@ Node206 - -BFN::DropPacketWithMirror -Engine + +BFN::DropPacketWithMirror +Engine @@ -9693,8 +9693,8 @@ Node178->Node206 - - + + @@ -9702,8 +9702,8 @@ Node207 - -BFN::DynamicHashJson + +BFN::DynamicHashJson @@ -9711,8 +9711,8 @@ Node178->Node207 - - + + @@ -9720,8 +9720,8 @@ Node208 - -BFN::ElimCasts + +BFN::ElimCasts @@ -9729,8 +9729,8 @@ Node178->Node208 - - + + @@ -9738,8 +9738,8 @@ Node209 - -BFN::EliminateTuples + +BFN::EliminateTuples @@ -9747,8 +9747,8 @@ Node178->Node209 - - + + @@ -9756,8 +9756,8 @@ Node210 - -BFN::EvaluateForVar + +BFN::EvaluateForVar @@ -9765,8 +9765,8 @@ Node178->Node210 - - + + @@ -9774,8 +9774,8 @@ Node215 - -BFN::FindArchitecture + +BFN::FindArchitecture @@ -9783,8 +9783,8 @@ Node178->Node215 - - + + @@ -9792,8 +9792,8 @@ Node216 - -BFN::FixupMirrorMetadata + +BFN::FixupMirrorMetadata @@ -9801,8 +9801,8 @@ Node178->Node216 - - + + @@ -9810,8 +9810,8 @@ Node217 - -BFN::FixupResubmitMetadata + +BFN::FixupResubmitMetadata @@ -9819,8 +9819,8 @@ Node178->Node217 - - + + @@ -9828,8 +9828,8 @@ Node218 - -BFN::FoldConstantHashes + +BFN::FoldConstantHashes @@ -9837,8 +9837,8 @@ Node178->Node218 - - + + @@ -9846,8 +9846,8 @@ Node219 - -BFN::InitializeMirrorIOSelect + +BFN::InitializeMirrorIOSelect @@ -9855,8 +9855,8 @@ Node178->Node219 - - + + @@ -9864,8 +9864,8 @@ Node220 - -BFN::InjectTmpVar + +BFN::InjectTmpVar @@ -9873,8 +9873,8 @@ Node178->Node220 - - + + @@ -9882,8 +9882,8 @@ Node221 - -BFN::MergePovBits + +BFN::MergePovBits @@ -9891,8 +9891,8 @@ Node178->Node221 - - + + @@ -9900,8 +9900,8 @@ Node222 - -BFN::MidEnd + +BFN::MidEnd @@ -9909,8 +9909,8 @@ Node178->Node222 - - + + @@ -9918,8 +9918,8 @@ Node223 - -BFN::MidEndLast + +BFN::MidEndLast @@ -9927,8 +9927,8 @@ Node178->Node223 - - + + @@ -9936,8 +9936,8 @@ Node224 - -BFN::NormalizeNativeProgram + +BFN::NormalizeNativeProgram @@ -9945,8 +9945,8 @@ Node178->Node224 - - + + @@ -9954,8 +9954,8 @@ Node225 - -BFN::PSA::ConvertNames + +BFN::PSA::ConvertNames @@ -9963,8 +9963,8 @@ Node178->Node225 - - + + @@ -9972,8 +9972,8 @@ Node226 - -BFN::PSA::RewritePacketPath + +BFN::PSA::RewritePacketPath @@ -9981,8 +9981,8 @@ Node178->Node226 - - + + @@ -9990,8 +9990,8 @@ Node227 - -BFN::PSA::RewriteParserVerify + +BFN::PSA::RewriteParserVerify @@ -9999,8 +9999,8 @@ Node178->Node227 - - + + @@ -10008,8 +10008,8 @@ Node228 - -BFN::PadFlexibleField + +BFN::PadFlexibleField @@ -10017,8 +10017,8 @@ Node178->Node228 - - + + @@ -10026,8 +10026,8 @@ Node229 - -BFN::ParserEnforceDepthReq + +BFN::ParserEnforceDepthReq @@ -10035,8 +10035,8 @@ Node178->Node229 - - + + @@ -10044,8 +10044,8 @@ Node230 - -BFN::PingPongGeneration + +BFN::PingPongGeneration @@ -10053,8 +10053,8 @@ Node178->Node230 - - + + @@ -10062,8 +10062,8 @@ Node231 - -BFN::PortableSwitchTranslation + +BFN::PortableSwitchTranslation @@ -10071,8 +10071,8 @@ Node178->Node231 - - + + @@ -10080,8 +10080,8 @@ Node232 - -BFN::ProcessBackendPipe + +BFN::ProcessBackendPipe @@ -10089,8 +10089,8 @@ Node178->Node232 - - + + @@ -10098,8 +10098,8 @@ Node233 - -BFN::RegisterReadWrite + +BFN::RegisterReadWrite @@ -10107,8 +10107,8 @@ Node178->Node233 - - + + @@ -10116,8 +10116,8 @@ Node234 - -BFN::RemoveActionParameters + +BFN::RemoveActionParameters @@ -10125,8 +10125,8 @@ Node178->Node234 - - + + @@ -10134,8 +10134,8 @@ Node235 - -BFN::RemoveSelectBooleans + +BFN::RemoveSelectBooleans @@ -10143,8 +10143,8 @@ Node178->Node235 - - + + @@ -10152,8 +10152,8 @@ Node236 - -BFN::ResolveSizeOfOperator + +BFN::ResolveSizeOfOperator @@ -10161,8 +10161,8 @@ Node178->Node236 - - + + @@ -10170,9 +10170,9 @@ Node237 - -BFN::RewriteControlAndParser -Blocks + +BFN::RewriteControlAndParser +Blocks @@ -10180,8 +10180,8 @@ Node178->Node237 - - + + @@ -10189,9 +10189,9 @@ Node238 - -BFN::RewriteEgressIntrinsic -MetadataHeader + +BFN::RewriteEgressIntrinsic +MetadataHeader @@ -10199,8 +10199,8 @@ Node178->Node238 - - + + @@ -10208,8 +10208,8 @@ Node239 - -BFN::RewriteFlexibleStruct + +BFN::RewriteFlexibleStruct @@ -10217,8 +10217,8 @@ Node178->Node239 - - + + @@ -10226,8 +10226,8 @@ Node240 - -BFN::SimpleSwitchTranslation + +BFN::SimpleSwitchTranslation @@ -10235,8 +10235,8 @@ Node178->Node240 - - + + @@ -10244,8 +10244,8 @@ Node241 - -BFN::SimplifyEmitArgs + +BFN::SimplifyEmitArgs @@ -10253,8 +10253,8 @@ Node178->Node241 - - + + @@ -10262,8 +10262,8 @@ Node242 - -BFN::StrengthReduction + +BFN::StrengthReduction @@ -10271,8 +10271,8 @@ Node178->Node242 - - + + @@ -10280,8 +10280,8 @@ Node243 - -BFN::T2naArchTranslation + +BFN::T2naArchTranslation @@ -10289,8 +10289,8 @@ Node178->Node243 - - + + @@ -10298,8 +10298,8 @@ Node244 - -BFN::TnaArchTranslation + +BFN::TnaArchTranslation @@ -10307,8 +10307,8 @@ Node178->Node244 - - + + @@ -10316,8 +10316,8 @@ Node245 - -BFN::TranslatePhase0 + +BFN::TranslatePhase0 @@ -10325,8 +10325,8 @@ Node178->Node245 - - + + @@ -10334,8 +10334,8 @@ Node246 - -BFN::TranslationFirst + +BFN::TranslationFirst @@ -10343,8 +10343,8 @@ Node178->Node246 - - + + @@ -10352,8 +10352,8 @@ Node247 - -BFN::TranslationLast + +BFN::TranslationLast @@ -10361,8 +10361,8 @@ Node178->Node247 - - + + @@ -10370,8 +10370,8 @@ Node248 - -BFN::V1::ConvertNames + +BFN::V1::ConvertNames @@ -10379,8 +10379,8 @@ Node178->Node248 - - + + @@ -10388,8 +10388,8 @@ Node249 - -BFN::V1::InsertChecksumError + +BFN::V1::InsertChecksumError @@ -10397,8 +10397,8 @@ Node178->Node249 - - + + @@ -10406,9 +10406,9 @@ Node250 - -BFN::V1::ParserCounterSelection -Converter + +BFN::V1::ParserCounterSelection +Converter @@ -10416,8 +10416,8 @@ Node178->Node250 - - + + @@ -10425,9 +10425,9 @@ Node251 - -BFN::V1::TranslateParser -Checksums + +BFN::V1::TranslateParser +Checksums @@ -10435,8 +10435,8 @@ Node178->Node251 - - + + @@ -10444,8 +10444,8 @@ Node252 - -BridgedPacking + +BridgedPacking @@ -10453,8 +10453,8 @@ Node178->Node252 - - + + @@ -10462,8 +10462,8 @@ Node253 - -BuildP4HashFunction + +BuildP4HashFunction @@ -10471,8 +10471,8 @@ Node178->Node253 - - + + @@ -10480,8 +10480,8 @@ Node254 - -CalcParserCriticalPath + +CalcParserCriticalPath @@ -10489,8 +10489,8 @@ Node178->Node254 - - + + @@ -10498,8 +10498,8 @@ Node255 - -CheckForUnallocatedTemps + +CheckForUnallocatedTemps @@ -10507,8 +10507,8 @@ Node178->Node255 - - + + @@ -10516,8 +10516,8 @@ Node256 - -CheckParserMultiWrite + +CheckParserMultiWrite @@ -10525,8 +10525,8 @@ Node178->Node256 - - + + @@ -10534,9 +10534,9 @@ Node257 - -CheckUninitializedAndOverlayed -Reads + +CheckUninitializedAndOverlayed +Reads @@ -10544,8 +10544,8 @@ Node178->Node257 - - + + @@ -10553,8 +10553,8 @@ Node258 - -Clustering + +Clustering @@ -10562,8 +10562,8 @@ Node178->Node258 - - + + @@ -10571,8 +10571,8 @@ Node259 - -CollectDarkCandidates + +CollectDarkCandidates @@ -10580,8 +10580,8 @@ Node178->Node259 - - + + @@ -10589,8 +10589,8 @@ Node260 - -CollectParserUseDef + +CollectParserUseDef @@ -10598,8 +10598,8 @@ Node178->Node260 - - + + @@ -10607,8 +10607,8 @@ Node261 - -CollectPhvInfo + +CollectPhvInfo @@ -10616,8 +10616,8 @@ Node178->Node261 - - + + @@ -10625,8 +10625,8 @@ Node262 - -DarkOverlay + +DarkOverlay @@ -10634,8 +10634,8 @@ Node178->Node262 - - + + @@ -10643,8 +10643,8 @@ Node263 - -DeparserZeroOptimization + +DeparserZeroOptimization @@ -10652,8 +10652,8 @@ Node178->Node263 - - + + @@ -10661,8 +10661,8 @@ Node264 - -DumpJsonGraph + +DumpJsonGraph @@ -10670,8 +10670,8 @@ Node178->Node264 - - + + @@ -10679,8 +10679,8 @@ Node265 - -ElimUnused + +ElimUnused @@ -10688,8 +10688,8 @@ Node178->Node265 - - + + @@ -10697,8 +10697,8 @@ Node266 - -ElimUnusedHeaderStackInfo + +ElimUnusedHeaderStackInfo @@ -10706,8 +10706,8 @@ Node178->Node266 - - + + @@ -10715,8 +10715,8 @@ Node267 - -EliminateAllButLastWrite + +EliminateAllButLastWrite @@ -10724,8 +10724,8 @@ Node178->Node267 - - + + @@ -10733,8 +10733,8 @@ Node268 - -FinalizeStageAllocation + +FinalizeStageAllocation @@ -10742,8 +10742,8 @@ Node178->Node268 - - + + @@ -10751,8 +10751,8 @@ Node269 - -FixupMirroredIntrinsicMetadata + +FixupMirroredIntrinsicMetadata @@ -10760,8 +10760,8 @@ Node178->Node269 - - + + @@ -10769,8 +10769,8 @@ Node270 - -FixupStatefulAlu + +FixupStatefulAlu @@ -10778,8 +10778,8 @@ Node178->Node270 - - + + @@ -10787,8 +10787,8 @@ Node271 - -GTestTablePlacement + +GTestTablePlacement @@ -10796,8 +10796,8 @@ Node178->Node271 - - + + @@ -10805,8 +10805,8 @@ Node272 - -GatewayOpt + +GatewayOpt @@ -10814,8 +10814,8 @@ Node178->Node272 - - + + @@ -10823,8 +10823,8 @@ Node273 - -GatherAlignmentConstraints + +GatherAlignmentConstraints @@ -10832,8 +10832,8 @@ Node178->Node273 - - + + @@ -10841,9 +10841,9 @@ Node274 - -GatherPackingConstraintFrom -SinglePipeline + +GatherPackingConstraintFrom +SinglePipeline @@ -10851,8 +10851,8 @@ Node178->Node274 - - + + @@ -10860,8 +10860,8 @@ Node275 - -GenerateOutputs + +GenerateOutputs @@ -10869,8 +10869,8 @@ Node178->Node275 - - + + @@ -10878,8 +10878,8 @@ Node276 - -GuaranteeHashDistSize + +GuaranteeHashDistSize @@ -10887,8 +10887,8 @@ Node178->Node276 - - + + @@ -10896,8 +10896,8 @@ Node277 - -HashGenSetup + +HashGenSetup @@ -10905,8 +10905,8 @@ Node178->Node277 - - + + @@ -10914,8 +10914,8 @@ Node278 - -HeaderMutex + +HeaderMutex @@ -10923,8 +10923,8 @@ Node178->Node278 - - + + @@ -10932,8 +10932,8 @@ Node279 - -InferPayloadOffset + +InferPayloadOffset @@ -10941,8 +10941,8 @@ Node178->Node279 - - + + @@ -10950,8 +10950,8 @@ Node280 - -InsertParserClotChecksums + +InsertParserClotChecksums @@ -10959,8 +10959,8 @@ Node178->Node280 - - + + @@ -10968,8 +10968,8 @@ Node281 - -InstructionAdjustment + +InstructionAdjustment @@ -10977,8 +10977,8 @@ Node178->Node281 - - + + @@ -10986,8 +10986,8 @@ Node282 - -InstructionSelection + +InstructionSelection @@ -10995,8 +10995,8 @@ Node178->Node282 - - + + @@ -11004,8 +11004,8 @@ Node283 - -LiveRangeShrinking + +LiveRangeShrinking @@ -11013,8 +11013,8 @@ Node178->Node283 - - + + @@ -11022,8 +11022,8 @@ Node284 - -Logging::PassManager + +Logging::PassManager @@ -11031,8 +11031,8 @@ Node178->Node284 - - + + @@ -11040,9 +11040,9 @@ Node295 - -MauPower::FinalizeMauPred -DepsPower + +MauPower::FinalizeMauPred +DepsPower @@ -11050,8 +11050,8 @@ Node178->Node295 - - + + @@ -11059,8 +11059,8 @@ Node296 - -MergeAlwaysRunActions + +MergeAlwaysRunActions @@ -11068,8 +11068,8 @@ Node178->Node296 - - + + @@ -11077,8 +11077,8 @@ Node297 - -MergeDesugaredVarbitValids + +MergeDesugaredVarbitValids @@ -11086,8 +11086,8 @@ Node178->Node297 - - + + @@ -11095,8 +11095,8 @@ Node298 - -MeterColorMapramAddress + +MeterColorMapramAddress @@ -11104,8 +11104,8 @@ Node178->Node298 - - + + @@ -11113,8 +11113,8 @@ Node299 - -MeterSetup + +MeterSetup @@ -11122,8 +11122,8 @@ Node178->Node299 - - + + @@ -11131,8 +11131,8 @@ Node300 - -MultipleApply + +MultipleApply @@ -11140,8 +11140,8 @@ Node178->Node300 - - + + @@ -11149,8 +11149,8 @@ Node301 - -MutexOverlay + +MutexOverlay @@ -11158,8 +11158,8 @@ Node178->Node301 - - + + @@ -11167,8 +11167,8 @@ Node302 - -P4::AddMissingIdAnnotations + +P4::AddMissingIdAnnotations @@ -11176,8 +11176,8 @@ Node178->Node302 - - + + @@ -11185,8 +11185,8 @@ Node303 - -P4::BMV2::MidEnd + +P4::BMV2::MidEnd @@ -11194,8 +11194,8 @@ Node178->Node303 - - + + @@ -11203,8 +11203,8 @@ Node308 - -P4::BindTypeVariables + +P4::BindTypeVariables @@ -11212,8 +11212,8 @@ Node178->Node308 - - + + @@ -11221,8 +11221,8 @@ Node309 - -P4::CheckConstants + +P4::CheckConstants @@ -11230,8 +11230,8 @@ Node178->Node309 - - + + @@ -11239,8 +11239,8 @@ Node310 - -P4::CheckCoreMethods + +P4::CheckCoreMethods @@ -11248,8 +11248,8 @@ Node178->Node310 - - + + @@ -11257,8 +11257,8 @@ Node311 - -P4::CheckShadowing + +P4::CheckShadowing @@ -11266,8 +11266,8 @@ Node178->Node311 - - + + @@ -11275,8 +11275,8 @@ Node312 - -P4::ConstantFolding + +P4::ConstantFolding @@ -11284,8 +11284,8 @@ Node178->Node312 - - + + @@ -11293,8 +11293,8 @@ Node313 - -P4::ConvertEnums + +P4::ConvertEnums @@ -11302,8 +11302,8 @@ Node178->Node313 - - + + @@ -11311,8 +11311,8 @@ Node314 - -P4::ConvertErrors + +P4::ConvertErrors @@ -11320,8 +11320,8 @@ Node178->Node314 - - + + @@ -11329,8 +11329,8 @@ Node315 - -P4::DPDK::ByteAlignment + +P4::DPDK::ByteAlignment @@ -11338,8 +11338,8 @@ Node178->Node315 - - + + @@ -11347,9 +11347,9 @@ Node316 - -P4::DPDK::CollectLocalStruct -AndFlatten + +P4::DPDK::CollectLocalStruct +AndFlatten @@ -11357,8 +11357,8 @@ Node178->Node316 - - + + @@ -11366,9 +11366,9 @@ Node317 - -P4::DPDK::CollectProgram -Structure + +P4::DPDK::CollectProgram +Structure @@ -11376,8 +11376,8 @@ Node178->Node317 - - + + @@ -11385,9 +11385,9 @@ Node318 - -P4::DPDK::ConvertActionSelector -AndProfile + +P4::DPDK::ConvertActionSelector +AndProfile @@ -11395,8 +11395,8 @@ Node178->Node318 - - + + @@ -11404,9 +11404,9 @@ Node319 - -P4::DPDK::ConvertInternet -Checksum + +P4::DPDK::ConvertInternet +Checksum @@ -11414,8 +11414,8 @@ Node178->Node319 - - + + @@ -11423,9 +11423,9 @@ Node320 - -P4::DPDK::ConvertLogical -Expression + +P4::DPDK::ConvertLogical +Expression @@ -11433,8 +11433,8 @@ Node178->Node320 - - + + @@ -11442,8 +11442,8 @@ Node321 - -P4::DPDK::ConvertLookahead + +P4::DPDK::ConvertLookahead @@ -11451,8 +11451,8 @@ Node178->Node321 - - + + @@ -11460,8 +11460,8 @@ Node322 - -P4::DPDK::DpdkAddPseudoHeader + +P4::DPDK::DpdkAddPseudoHeader @@ -11469,8 +11469,8 @@ Node178->Node322 - - + + @@ -11478,8 +11478,8 @@ Node323 - -P4::DPDK::DpdkArchFirst + +P4::DPDK::DpdkArchFirst @@ -11487,8 +11487,8 @@ Node178->Node323 - - + + @@ -11496,8 +11496,8 @@ Node324 - -P4::DPDK::DpdkArchLast + +P4::DPDK::DpdkArchLast @@ -11505,8 +11505,8 @@ Node178->Node324 - - + + @@ -11514,8 +11514,8 @@ Node325 - -P4::DPDK::DpdkHandleIPSec + +P4::DPDK::DpdkHandleIPSec @@ -11523,8 +11523,8 @@ Node178->Node325 - - + + @@ -11532,8 +11532,8 @@ Node326 - -P4::DPDK::DpdkMidEnd + +P4::DPDK::DpdkMidEnd @@ -11541,8 +11541,8 @@ Node178->Node326 - - + + @@ -11550,8 +11550,8 @@ Node327 - -P4::DPDK::EliminateHeaderCopy + +P4::DPDK::EliminateHeaderCopy @@ -11559,8 +11559,8 @@ Node178->Node327 - - + + @@ -11568,9 +11568,9 @@ Node328 - -P4::DPDK::EliminateUnused -Action + +P4::DPDK::EliminateUnused +Action @@ -11578,8 +11578,8 @@ Node178->Node328 - - + + @@ -11587,8 +11587,8 @@ Node329 - -P4::DefaultArguments + +P4::DefaultArguments @@ -11596,8 +11596,8 @@ Node178->Node329 - - + + @@ -11605,8 +11605,8 @@ Node330 - -P4::DefaultValues + +P4::DefaultValues @@ -11614,8 +11614,8 @@ Node178->Node330 - - + + @@ -11623,8 +11623,8 @@ Node331 - -P4::EBPF::Lower + +P4::EBPF::Lower @@ -11632,8 +11632,8 @@ Node178->Node331 - - + + @@ -11641,8 +11641,8 @@ Node332 - -P4::EliminateInvalidHeaders + +P4::EliminateInvalidHeaders @@ -11650,8 +11650,8 @@ Node178->Node332 - - + + @@ -11659,8 +11659,8 @@ Node333 - -P4::EliminateNewtype + +P4::EliminateNewtype @@ -11668,8 +11668,8 @@ Node178->Node333 - - + + @@ -11677,8 +11677,8 @@ Node334 - -P4::EliminateSerEnums + +P4::EliminateSerEnums @@ -11686,8 +11686,8 @@ Node178->Node334 - - + + @@ -11695,8 +11695,8 @@ Node335 - -P4::EliminateSwitch + +P4::EliminateSwitch @@ -11704,8 +11704,8 @@ Node178->Node335 - - + + @@ -11713,8 +11713,8 @@ Node336 - -P4::EliminateTuples + +P4::EliminateTuples @@ -11722,8 +11722,8 @@ Node178->Node336 - - + + @@ -11731,8 +11731,8 @@ Node337 - -P4::EliminateTypedef + +P4::EliminateTypedef @@ -11740,8 +11740,8 @@ Node178->Node337 - - + + @@ -11749,8 +11749,8 @@ Node338 - -P4::ExpandEmit + +P4::ExpandEmit @@ -11758,8 +11758,8 @@ Node178->Node338 - - + + @@ -11767,8 +11767,8 @@ Node339 - -P4::ExpandLookahead + +P4::ExpandLookahead @@ -11776,8 +11776,8 @@ Node178->Node339 - - + + @@ -11785,8 +11785,8 @@ Node340 - -P4::FlattenHeaderUnion + +P4::FlattenHeaderUnion @@ -11794,8 +11794,8 @@ Node178->Node340 - - + + @@ -11803,8 +11803,8 @@ Node341 - -P4::FlattenHeaders + +P4::FlattenHeaders @@ -11812,8 +11812,8 @@ Node178->Node341 - - + + @@ -11821,8 +11821,8 @@ Node342 - -P4::FlattenInterfaceStructs + +P4::FlattenInterfaceStructs @@ -11830,8 +11830,8 @@ Node178->Node342 - - + + @@ -11839,8 +11839,8 @@ Node343 - -P4::FlattenLogMsg + +P4::FlattenLogMsg @@ -11848,8 +11848,8 @@ Node178->Node343 - - + + @@ -11857,8 +11857,8 @@ Node344 - -P4::GlobalCopyPropagation + +P4::GlobalCopyPropagation @@ -11866,8 +11866,8 @@ Node178->Node344 - - + + @@ -11875,8 +11875,8 @@ Node345 - -P4::HSIndexSimplifier + +P4::HSIndexSimplifier @@ -11884,8 +11884,8 @@ Node178->Node345 - - + + @@ -11893,8 +11893,8 @@ Node346 - -P4::Inline + +P4::Inline @@ -11902,8 +11902,8 @@ Node178->Node346 - - + + @@ -11911,8 +11911,8 @@ Node347 - -P4::InlineActions + +P4::InlineActions @@ -11920,8 +11920,8 @@ Node178->Node347 - - + + @@ -11929,8 +11929,8 @@ Node348 - -P4::InlineFunctions + +P4::InlineFunctions @@ -11938,8 +11938,8 @@ Node178->Node348 - - + + @@ -11947,8 +11947,8 @@ Node349 - -P4::InlinePass + +P4::InlinePass @@ -11956,8 +11956,8 @@ Node178->Node349 - - + + @@ -11965,8 +11965,8 @@ Node350 - -P4::LocalCopyPropagation + +P4::LocalCopyPropagation @@ -11974,8 +11974,8 @@ Node178->Node350 - - + + @@ -11983,8 +11983,8 @@ Node351 - -P4::LocalizeAllActions + +P4::LocalizeAllActions @@ -11992,8 +11992,8 @@ Node178->Node351 - - + + @@ -12001,8 +12001,8 @@ Node352 - -P4::MoveActionsToTables + +P4::MoveActionsToTables @@ -12010,8 +12010,8 @@ Node178->Node352 - - + + @@ -12019,8 +12019,8 @@ Node353 - -P4::NestedStructs + +P4::NestedStructs @@ -12028,8 +12028,8 @@ Node178->Node353 - - + + @@ -12037,8 +12037,8 @@ Node354 - -P4::OrderArguments + +P4::OrderArguments @@ -12046,8 +12046,8 @@ Node178->Node354 - - + + @@ -12055,8 +12055,8 @@ Node355 - -P4::P4Test::MidEnd + +P4::P4Test::MidEnd @@ -12064,8 +12064,8 @@ Node178->Node355 - - + + @@ -12073,8 +12073,8 @@ Node356 - -P4::P4Tools::MidEnd + +P4::P4Tools::MidEnd @@ -12082,8 +12082,8 @@ Node178->Node356 - - + + @@ -12091,8 +12091,8 @@ Node357 - -P4::P4V1::Converter + +P4::P4V1::Converter @@ -12100,8 +12100,8 @@ Node178->Node357 - - + + @@ -12109,8 +12109,8 @@ Node359 - -P4::P4V1::FixChecksum + +P4::P4V1::FixChecksum @@ -12118,8 +12118,8 @@ Node178->Node359 - - + + @@ -12127,8 +12127,8 @@ Node360 - -P4::P4V1::FixMultiEntryPoint + +P4::P4V1::FixMultiEntryPoint @@ -12136,8 +12136,8 @@ Node178->Node360 - - + + @@ -12145,8 +12145,8 @@ Node361 - -P4::P4V1::FixParserCounter + +P4::P4V1::FixParserCounter @@ -12154,8 +12154,8 @@ Node178->Node361 - - + + @@ -12163,9 +12163,9 @@ Node362 - -P4::P4V1::InsertChecksum -Error + +P4::P4V1::InsertChecksum +Error @@ -12173,8 +12173,8 @@ Node178->Node362 - - + + @@ -12182,8 +12182,8 @@ Node363 - -P4::P4V1::PostTranslationFix + +P4::P4V1::PostTranslationFix @@ -12191,8 +12191,8 @@ Node178->Node363 - - + + @@ -12200,8 +12200,8 @@ Node364 - -P4::P4V1::TnaConverter + +P4::P4V1::TnaConverter @@ -12209,8 +12209,8 @@ Node178->Node364 - - + + @@ -12218,8 +12218,8 @@ Node365 - -P4::ParseAnnotationBodies + +P4::ParseAnnotationBodies @@ -12227,8 +12227,8 @@ Node178->Node365 - - + + @@ -12236,8 +12236,8 @@ Node366 - -P4::ParserRewriter + +P4::ParserRewriter @@ -12245,8 +12245,8 @@ Node178->Node366 - - + + @@ -12254,8 +12254,8 @@ Node367 - -P4::ParsersUnroll + +P4::ParsersUnroll @@ -12263,8 +12263,8 @@ Node178->Node367 - - + + @@ -12272,8 +12272,8 @@ Node368 - -P4::PassIf + +P4::PassIf @@ -12281,8 +12281,8 @@ Node178->Node368 - - + + @@ -12290,8 +12290,8 @@ Node369 - -P4::PassRepeatUntil + +P4::PassRepeatUntil @@ -12299,8 +12299,8 @@ Node178->Node369 - - + + @@ -12308,8 +12308,8 @@ Node167 - -P4::PassRepeated + +P4::PassRepeated @@ -12317,8 +12317,8 @@ Node178->Node167 - - + + @@ -12326,8 +12326,8 @@ Node370 - -P4::RemoveActionParameters + +P4::RemoveActionParameters @@ -12335,8 +12335,8 @@ Node178->Node370 - - + + @@ -12344,8 +12344,8 @@ Node371 - -P4::RemoveAllUnusedHUDDeclarations + +P4::RemoveAllUnusedHUDDeclarations @@ -12353,8 +12353,8 @@ Node178->Node371 - - + + @@ -12362,8 +12362,8 @@ Node372 - -P4::RemoveAssertAssume + +P4::RemoveAssertAssume @@ -12371,8 +12371,8 @@ Node178->Node372 - - + + @@ -12380,8 +12380,8 @@ Node373 - -P4::RemoveDontcareArgs + +P4::RemoveDontcareArgs @@ -12389,8 +12389,8 @@ Node178->Node373 - - + + @@ -12398,8 +12398,8 @@ Node374 - -P4::RemoveExits + +P4::RemoveExits @@ -12407,8 +12407,8 @@ Node178->Node374 - - + + @@ -12416,8 +12416,8 @@ Node375 - -P4::RemoveLeftSlices + +P4::RemoveLeftSlices @@ -12425,8 +12425,8 @@ Node178->Node375 - - + + @@ -12434,8 +12434,8 @@ Node376 - -P4::RemoveMiss + +P4::RemoveMiss @@ -12443,8 +12443,8 @@ Node178->Node376 - - + + @@ -12452,8 +12452,8 @@ Node377 - -P4::RemoveParserIfs + +P4::RemoveParserIfs @@ -12461,8 +12461,8 @@ Node178->Node377 - - + + @@ -12470,8 +12470,8 @@ Node378 - -P4::RemoveRedundantParsers + +P4::RemoveRedundantParsers @@ -12479,8 +12479,8 @@ Node178->Node378 - - + + @@ -12488,8 +12488,8 @@ Node379 - -P4::RemoveReturns + +P4::RemoveReturns @@ -12497,8 +12497,8 @@ Node178->Node379 - - + + @@ -12506,8 +12506,8 @@ Node380 - -P4::RemoveSelectBooleans + +P4::RemoveSelectBooleans @@ -12515,8 +12515,8 @@ Node178->Node380 - - + + @@ -12524,8 +12524,8 @@ Node381 - -P4::ResetHeaders + +P4::ResetHeaders @@ -12533,8 +12533,8 @@ Node178->Node381 - - + + @@ -12542,8 +12542,8 @@ Node382 - -P4::SetHeaders + +P4::SetHeaders @@ -12551,8 +12551,8 @@ Node178->Node382 - - + + @@ -12560,8 +12560,8 @@ Node383 - -P4::SimplifyComparisons + +P4::SimplifyComparisons @@ -12569,8 +12569,8 @@ Node178->Node383 - - + + @@ -12578,8 +12578,8 @@ Node384 - -P4::SimplifyDefUse + +P4::SimplifyDefUse @@ -12587,8 +12587,8 @@ Node178->Node384 - - + + @@ -12596,8 +12596,8 @@ Node385 - -P4::SimplifyIfStatement + +P4::SimplifyIfStatement @@ -12605,8 +12605,8 @@ Node178->Node385 - - + + @@ -12614,8 +12614,8 @@ Node386 - -P4::SimplifyKey + +P4::SimplifyKey @@ -12623,8 +12623,8 @@ Node178->Node386 - - + + @@ -12632,8 +12632,8 @@ Node387 - -P4::SimplifyNestedIf + +P4::SimplifyNestedIf @@ -12641,8 +12641,8 @@ Node178->Node387 - - + + @@ -12650,8 +12650,8 @@ Node388 - -P4::SimplifySelectCases + +P4::SimplifySelectCases @@ -12659,8 +12659,8 @@ Node178->Node388 - - + + @@ -12668,8 +12668,8 @@ Node389 - -P4::SimplifySelectList + +P4::SimplifySelectList @@ -12677,8 +12677,8 @@ Node178->Node389 - - + + @@ -12686,8 +12686,8 @@ Node390 - -P4::SimplifySwitch + +P4::SimplifySwitch @@ -12695,8 +12695,8 @@ Node178->Node390 - - + + @@ -12704,8 +12704,8 @@ Node391 - -P4::SingleArgumentSelect + +P4::SingleArgumentSelect @@ -12713,8 +12713,8 @@ Node178->Node391 - - + + @@ -12722,8 +12722,8 @@ Node392 - -P4::SpecializeGenericFunctions + +P4::SpecializeGenericFunctions @@ -12731,8 +12731,8 @@ Node178->Node392 - - + + @@ -12740,8 +12740,8 @@ Node393 - -P4::StaticAssert + +P4::StaticAssert @@ -12749,8 +12749,8 @@ Node178->Node393 - - + + @@ -12758,8 +12758,8 @@ Node394 - -P4::StrengthReduction + +P4::StrengthReduction @@ -12767,8 +12767,8 @@ Node178->Node394 - - + + @@ -12776,8 +12776,8 @@ Node395 - -P4::StructInitializers + +P4::StructInitializers @@ -12785,8 +12785,8 @@ Node178->Node395 - - + + @@ -12794,8 +12794,8 @@ Node396 - -P4::SynthesizeActions + +P4::SynthesizeActions @@ -12803,8 +12803,8 @@ Node178->Node396 - - + + @@ -12812,8 +12812,8 @@ Node397 - -P4::TC::Backend + +P4::TC::Backend @@ -12821,8 +12821,8 @@ Node178->Node397 - - + + @@ -12830,8 +12830,8 @@ Node398 - -P4::TableHit + +P4::TableHit @@ -12839,8 +12839,8 @@ Node178->Node398 - - + + @@ -12848,8 +12848,8 @@ Node399 - -P4::TableKeyNames + +P4::TableKeyNames @@ -12857,8 +12857,8 @@ Node178->Node399 - - + + @@ -12866,8 +12866,8 @@ Node400 - -P4::TypeCheck + +P4::TypeCheck @@ -12875,8 +12875,8 @@ Node178->Node400 - - + + @@ -12884,8 +12884,8 @@ Node401 - -P4::TypeChecking + +P4::TypeChecking @@ -12893,8 +12893,8 @@ Node178->Node401 - - + + @@ -12902,8 +12902,8 @@ Node403 - -P4::UniqueNames + +P4::UniqueNames @@ -12911,8 +12911,8 @@ Node178->Node403 - - + + @@ -12920,8 +12920,8 @@ Node404 - -P4::UniqueParameters + +P4::UniqueParameters @@ -12929,8 +12929,8 @@ Node178->Node404 - - + + @@ -12938,8 +12938,8 @@ Node405 - -P4::UselessCasts + +P4::UselessCasts @@ -12947,8 +12947,8 @@ Node178->Node405 - - + + @@ -12956,8 +12956,8 @@ Node406 - -P4::graphs::MidEnd + +P4::graphs::MidEnd @@ -12965,8 +12965,8 @@ Node178->Node406 - - + + @@ -12974,9 +12974,9 @@ Node407 - -PHV::AllocateTempsAndFinalize -Liverange + +PHV::AllocateTempsAndFinalize +Liverange @@ -12984,8 +12984,8 @@ Node178->Node407 - - + + @@ -12993,8 +12993,8 @@ Node408 - -PHV::FieldSliceLiveRangeDB + +PHV::FieldSliceLiveRangeDB @@ -13002,8 +13002,8 @@ Node178->Node408 - - + + @@ -13011,8 +13011,8 @@ Node410 - -PHV::Pragmas + +PHV::Pragmas @@ -13020,8 +13020,8 @@ Node178->Node410 - - + + @@ -13029,8 +13029,8 @@ Node411 - -PHV::v2::MetadataInitialization + +PHV::v2::MetadataInitialization @@ -13038,8 +13038,8 @@ Node178->Node411 - - + + @@ -13047,8 +13047,8 @@ Node412 - -PackConflicts + +PackConflicts @@ -13056,8 +13056,8 @@ Node178->Node412 - - + + @@ -13065,8 +13065,8 @@ Node413 - -PackFlexibleHeaders + +PackFlexibleHeaders @@ -13074,8 +13074,8 @@ Node178->Node413 - - + + @@ -13083,8 +13083,8 @@ Node414 - -Parde::Lowered::LowerDeparserIR + +Parde::Lowered::LowerDeparserIR @@ -13092,8 +13092,8 @@ Node178->Node414 - - + + @@ -13101,8 +13101,8 @@ Node415 - -Parde::Lowered::LowerParserIR + +Parde::Lowered::LowerParserIR @@ -13110,8 +13110,8 @@ Node178->Node415 - - + + @@ -13119,8 +13119,8 @@ Node416 - -ParserCopyProp + +ParserCopyProp @@ -13128,8 +13128,8 @@ Node178->Node416 - - + + @@ -13137,8 +13137,8 @@ Node417 - -PostMidEndLast + +PostMidEndLast @@ -13146,8 +13146,8 @@ Node178->Node417 - - + + @@ -13155,8 +13155,8 @@ Node418 - -RemoveActionTables + +RemoveActionTables @@ -13164,8 +13164,8 @@ Node178->Node418 - - + + @@ -13173,9 +13173,9 @@ Node419 - -ResetInvalidatedChecksum -Headers + +ResetInvalidatedChecksum +Headers @@ -13183,8 +13183,8 @@ Node178->Node419 - - + + @@ -13192,8 +13192,8 @@ Node420 - -ResolveNegativeExtract + +ResolveNegativeExtract @@ -13201,8 +13201,8 @@ Node178->Node420 - - + + @@ -13210,8 +13210,8 @@ Node421 - -RewriteParserMatchDefs + +RewriteParserMatchDefs @@ -13219,8 +13219,8 @@ Node178->Node421 - - + + @@ -13228,8 +13228,8 @@ Node422 - -SetupAttachedAddressing + +SetupAttachedAddressing @@ -13237,8 +13237,8 @@ Node178->Node422 - - + + @@ -13246,8 +13246,8 @@ Node423 - -SplitAttachedInfo + +SplitAttachedInfo @@ -13255,8 +13255,8 @@ Node178->Node423 - - + + @@ -13264,8 +13264,8 @@ Node424 - -SplitParserState + +SplitParserState @@ -13273,8 +13273,8 @@ Node178->Node424 - - + + @@ -13282,8 +13282,8 @@ Node425 - -StatefulAttachmentSetup + +StatefulAttachmentSetup @@ -13291,8 +13291,8 @@ Node178->Node425 - - + + @@ -13300,8 +13300,8 @@ Node426 - -SubstitutePackedHeaders + +SubstitutePackedHeaders @@ -13309,8 +13309,8 @@ Node178->Node426 - - + + @@ -13318,8 +13318,8 @@ Node427 - -TableFindInjectedDependencies + +TableFindInjectedDependencies @@ -13327,8 +13327,8 @@ Node178->Node427 - - + + @@ -13336,8 +13336,8 @@ Node428 - -TableLayout + +TableLayout @@ -13345,8 +13345,8 @@ Node178->Node428 - - + + @@ -13354,8 +13354,8 @@ Node429 - -TablePhvConstraints + +TablePhvConstraints @@ -13363,8 +13363,8 @@ Node178->Node429 - - + + @@ -13372,8 +13372,8 @@ Node430 - -TablePlacement + +TablePlacement @@ -13381,8 +13381,8 @@ Node178->Node430 - - + + @@ -13390,8 +13390,8 @@ Node431 - -UpdateParserWriteMode + +UpdateParserWriteMode @@ -13399,8 +13399,8 @@ Node178->Node431 - - + + @@ -13408,8 +13408,8 @@ Node285 - -Alias + +Alias @@ -13417,8 +13417,8 @@ Node284->Node285 - - + + @@ -13426,8 +13426,8 @@ Node286 - -AllocateParserChecksums + +AllocateParserChecksums @@ -13435,8 +13435,8 @@ Node284->Node286 - - + + @@ -13444,8 +13444,8 @@ Node287 - -BFN::ProcessParde + +BFN::ProcessParde @@ -13453,8 +13453,8 @@ Node284->Node287 - - + + @@ -13462,8 +13462,8 @@ Node288 - -DeparserCopyOpt + +DeparserCopyOpt @@ -13471,8 +13471,8 @@ Node284->Node288 - - + + @@ -13480,8 +13480,8 @@ Node289 - -FindDependencyGraph + +FindDependencyGraph @@ -13489,8 +13489,8 @@ Node284->Node289 - - + + @@ -13498,8 +13498,8 @@ Node290 - -LogFlexiblePacking + +LogFlexiblePacking @@ -13507,8 +13507,8 @@ Node284->Node290 - - + + @@ -13516,8 +13516,8 @@ Node291 - -LowerParser + +LowerParser @@ -13525,8 +13525,8 @@ Node284->Node291 - - + + @@ -13534,8 +13534,8 @@ Node292 - -PHV_AnalysisPass + +PHV_AnalysisPass @@ -13543,8 +13543,8 @@ Node284->Node292 - - + + @@ -13552,8 +13552,8 @@ Node293 - -TableAllocPass + +TableAllocPass @@ -13561,8 +13561,8 @@ Node284->Node293 - - + + @@ -13570,8 +13570,8 @@ Node294 - -TableDependencyGraphSummary + +TableDependencyGraphSummary @@ -13579,8 +13579,8 @@ Node284->Node294 - - + + @@ -13588,8 +13588,8 @@ Node304 - -P4::BMV2::PortableMidEnd + +P4::BMV2::PortableMidEnd @@ -13597,8 +13597,8 @@ Node303->Node304 - - + + @@ -13606,8 +13606,8 @@ Node307 - -P4::BMV2::SimpleSwitchMidEnd + +P4::BMV2::SimpleSwitchMidEnd @@ -13615,8 +13615,8 @@ Node303->Node307 - - + + @@ -13624,8 +13624,8 @@ Node305 - -P4::BMV2::PnaNicMidEnd + +P4::BMV2::PnaNicMidEnd @@ -13633,8 +13633,8 @@ Node304->Node305 - - + + @@ -13642,8 +13642,8 @@ Node306 - -P4::BMV2::PsaSwitchMidEnd + +P4::BMV2::PsaSwitchMidEnd @@ -13651,8 +13651,8 @@ Node304->Node306 - - + + @@ -13660,8 +13660,8 @@ Node358 - -ConverterAllowingRecirculate + +ConverterAllowingRecirculate @@ -13669,8 +13669,8 @@ Node357->Node358 - - + + @@ -13678,8 +13678,8 @@ Node167->Node166 - - + + @@ -13687,8 +13687,8 @@ Node168 - -BFN::CopyHeaders + +BFN::CopyHeaders @@ -13696,8 +13696,8 @@ Node167->Node168 - - + + @@ -13705,8 +13705,8 @@ Node169 - -P4::CopyStructures + +P4::CopyStructures @@ -13714,8 +13714,8 @@ Node167->Node169 - - + + @@ -13723,8 +13723,8 @@ Node170 - -P4::DPDK::DpdkAsmOptimization + +P4::DPDK::DpdkAsmOptimization @@ -13732,8 +13732,8 @@ Node167->Node170 - - + + @@ -13741,8 +13741,8 @@ Node171 - -P4::RemoveAllUnusedDeclarations + +P4::RemoveAllUnusedDeclarations @@ -13750,8 +13750,8 @@ Node167->Node171 - - + + @@ -13759,8 +13759,8 @@ Node172 - -P4::RemoveParserControlFlow + +P4::RemoveParserControlFlow @@ -13768,8 +13768,8 @@ Node167->Node172 - - + + @@ -13777,8 +13777,8 @@ Node173 - -P4::SideEffectOrdering + +P4::SideEffectOrdering @@ -13786,8 +13786,8 @@ Node167->Node173 - - + + @@ -13795,8 +13795,8 @@ Node174 - -P4::SimplifyControlFlow + +P4::SimplifyControlFlow @@ -13804,8 +13804,8 @@ Node167->Node174 - - + + @@ -13813,8 +13813,8 @@ Node175 - -P4::SpecializeAll + +P4::SpecializeAll @@ -13822,8 +13822,8 @@ Node167->Node175 - - + + @@ -13831,8 +13831,8 @@ Node176 - -P4::SpecializeGenericTypes + +P4::SpecializeGenericTypes @@ -13840,8 +13840,8 @@ Node167->Node176 - - + + @@ -13849,8 +13849,8 @@ Node177 - -PropagateExtractConst + +PropagateExtractConst @@ -13858,8 +13858,8 @@ Node167->Node177 - - + + @@ -13867,8 +13867,8 @@ Node402 - -BFN::TypeChecking + +BFN::TypeChecking @@ -13876,8 +13876,8 @@ Node401->Node402 - - + + @@ -13885,8 +13885,8 @@ Node25->Node24 - - + + @@ -13894,8 +13894,8 @@ Node25->Node1652 - - + + @@ -13903,26 +13903,26 @@ Node25->Node869 - - + + - - -Node25->Node502 - - - + + +Node25->Node503 + + + - - -Node25->Node723 - - - + + +Node25->Node724 + + + @@ -13930,8 +13930,8 @@ Node25->Node115 - - + + @@ -13939,8 +13939,8 @@ Node25->Node165 - - + + @@ -13948,8 +13948,8 @@ Node26 - -BFN::CollectBridgedFields + +BFN::CollectBridgedFields @@ -13957,8 +13957,8 @@ Node25->Node26 - - + + @@ -13966,8 +13966,8 @@ Node1314 - -BFN::GatewayControlFlow + +BFN::GatewayControlFlow @@ -13975,8 +13975,8 @@ Node25->Node1314 - - + + @@ -13984,8 +13984,8 @@ Node83 - -BuildMutex + +BuildMutex @@ -13993,8 +13993,8 @@ Node25->Node83 - - + + @@ -14002,8 +14002,8 @@ Node1368 - -FieldDefUse + +FieldDefUse @@ -14011,8 +14011,8 @@ Node25->Node1368 - - + + @@ -14020,8 +14020,8 @@ Node1319 - -FindDataDependencyGraph + +FindDataDependencyGraph @@ -14029,8 +14029,8 @@ Node25->Node1319 - - + + @@ -14038,8 +14038,8 @@ Node1339 - -MauPower::BuildPowerGraph + +MauPower::BuildPowerGraph @@ -14047,8 +14047,8 @@ Node25->Node1339 - - + + @@ -14056,8 +14056,8 @@ Node1313 - -ExcludeMAUNotMutexHeaders + +ExcludeMAUNotMutexHeaders @@ -14065,8 +14065,8 @@ Node1314->Node1313 - - + + @@ -14074,9 +14074,9 @@ Node84 - -AddParserHeadersToHeader -MutexMatrix + +AddParserHeadersToHeader +MutexMatrix @@ -14084,8 +14084,8 @@ Node83->Node84 - - + + @@ -14093,8 +14093,8 @@ Node85 - -BuildMetadataOverlay + +BuildMetadataOverlay @@ -14102,8 +14102,8 @@ Node83->Node85 - - + + @@ -14111,8 +14111,8 @@ Node86 - -BuildParserOverlay + +BuildParserOverlay @@ -14120,17 +14120,17 @@ Node83->Node86 - - + + - - -Node498->Node163 - - - + + +Node499->Node163 + + + @@ -14138,8 +14138,8 @@ Node27->Node872 - - + + @@ -14147,17 +14147,17 @@ Node27->Node877 - - + + - - -Node27->Node502 - - - + + +Node27->Node503 + + + @@ -14165,8 +14165,8 @@ Node27->Node880 - - + + @@ -14174,8 +14174,8 @@ Node27->Node881 - - + + @@ -14183,8 +14183,8 @@ Node27->Node882 - - + + @@ -14192,8 +14192,8 @@ Node27->Node883 - - + + @@ -14201,8 +14201,8 @@ Node27->Node884 - - + + @@ -14210,8 +14210,8 @@ Node27->Node885 - - + + @@ -14219,8 +14219,8 @@ Node27->Node886 - - + + @@ -14228,8 +14228,8 @@ Node27->Node887 - - + + @@ -14237,8 +14237,8 @@ Node27->Node888 - - + + @@ -14246,8 +14246,8 @@ Node27->Node889 - - + + @@ -14255,8 +14255,8 @@ Node27->Node890 - - + + @@ -14264,8 +14264,8 @@ Node27->Node891 - - + + @@ -14273,8 +14273,8 @@ Node27->Node892 - - + + @@ -14282,8 +14282,8 @@ Node27->Node893 - - + + @@ -14291,8 +14291,8 @@ Node27->Node902 - - + + @@ -14300,8 +14300,8 @@ Node27->Node903 - - + + @@ -14309,8 +14309,8 @@ Node27->Node904 - - + + @@ -14318,8 +14318,8 @@ Node27->Node905 - - + + @@ -14327,8 +14327,8 @@ Node27->Node906 - - + + @@ -14336,8 +14336,8 @@ Node27->Node850 - - + + @@ -14345,8 +14345,8 @@ Node27->Node907 - - + + @@ -14354,8 +14354,8 @@ Node27->Node213 - - + + @@ -14363,8 +14363,8 @@ Node27->Node131 - - + + @@ -14372,8 +14372,8 @@ Node27->Node1290 - - + + @@ -14381,8 +14381,8 @@ Node27->Node897 - - + + @@ -14390,8 +14390,8 @@ Node27->Node900 - - + + @@ -14399,8 +14399,8 @@ Node27->Node914 - - + + @@ -14408,8 +14408,8 @@ Node27->Node26 - - + + @@ -14417,8 +14417,8 @@ Node27->Node83 - - + + @@ -14426,8 +14426,8 @@ Node27->Node1368 - - + + @@ -14435,8 +14435,8 @@ Node28 - -MapFieldToExpr + +MapFieldToExpr @@ -14444,8 +14444,8 @@ Node27->Node28 - - + + @@ -14453,8 +14453,8 @@ Node29 - -ActionPhvConstraints + +ActionPhvConstraints @@ -14462,8 +14462,8 @@ Node27->Node29 - - + + @@ -14471,8 +14471,8 @@ Node30 - -AddIntrinsicConstraints + +AddIntrinsicConstraints @@ -14480,8 +14480,8 @@ Node27->Node30 - - + + @@ -14489,9 +14489,9 @@ Node31 - -AddMauHeadersToHeaderMutex -Matrix + +AddMauHeadersToHeaderMutex +Matrix @@ -14499,8 +14499,8 @@ Node27->Node31 - - + + @@ -14508,8 +14508,8 @@ Node32 - -AddSpecialConstraints + +AddSpecialConstraints @@ -14517,8 +14517,8 @@ Node27->Node32 - - + + @@ -14526,8 +14526,8 @@ Node33 - -AllocatePOVBits + +AllocatePOVBits @@ -14535,8 +14535,8 @@ Node27->Node33 - - + + @@ -14544,10 +14544,10 @@ Node34 - -AllocateParserState -::ParserStateAllocator -::ChecksumAllocator::GetPacketRVal + +AllocateParserState +::ParserStateAllocator +::ChecksumAllocator::GetPacketRVal @@ -14555,8 +14555,8 @@ Node27->Node34 - - + + @@ -14564,8 +14564,8 @@ Node35 - -BFN::ActionBodySetup + +BFN::ActionBodySetup @@ -14573,8 +14573,8 @@ Node27->Node35 - - + + @@ -14582,8 +14582,8 @@ Node36 - -BFN::Architecture + +BFN::Architecture @@ -14591,8 +14591,8 @@ Node27->Node36 - - + + @@ -14600,8 +14600,8 @@ Node37 - -BFN::AsmOutput + +BFN::AsmOutput @@ -14609,8 +14609,8 @@ Node27->Node37 - - + + @@ -14618,8 +14618,8 @@ Node38 - -BFN::BackendConverter + +BFN::BackendConverter @@ -14627,8 +14627,8 @@ Node27->Node38 - - + + @@ -14636,8 +14636,8 @@ Node39 - -BFN::CheckExternValidity + +BFN::CheckExternValidity @@ -14645,8 +14645,8 @@ Node27->Node39 - - + + @@ -14654,8 +14654,8 @@ Node40 - -BFN::CheckHeaderAlignment + +BFN::CheckHeaderAlignment @@ -14663,8 +14663,8 @@ Node27->Node40 - - + + @@ -14672,8 +14672,8 @@ Node41 - -BFN::CheckPadAssignment + +BFN::CheckPadAssignment @@ -14681,8 +14681,8 @@ Node27->Node41 - - + + @@ -14690,8 +14690,8 @@ Node42 - -BFN::CheckPhaseZeroExtern + +BFN::CheckPhaseZeroExtern @@ -14699,8 +14699,8 @@ Node27->Node42 - - + + @@ -14708,8 +14708,8 @@ Node43 - -BFN::CheckRegisterActions + +BFN::CheckRegisterActions @@ -14717,8 +14717,8 @@ Node27->Node43 - - + + @@ -14726,8 +14726,8 @@ Node44 - -BFN::CheckReservedNames + +BFN::CheckReservedNames @@ -14735,8 +14735,8 @@ Node27->Node44 - - + + @@ -14744,8 +14744,8 @@ Node45 - -BFN::CheckTableConstEntries + +BFN::CheckTableConstEntries @@ -14753,8 +14753,8 @@ Node27->Node45 - - + + @@ -14762,8 +14762,8 @@ Node46 - -BFN::CheckUnimplementedFeatures + +BFN::CheckUnimplementedFeatures @@ -14771,8 +14771,8 @@ Node27->Node46 - - + + @@ -14780,8 +14780,8 @@ Node47 - -BFN::CheckUnsupported + +BFN::CheckUnsupported @@ -14789,8 +14789,8 @@ Node27->Node47 - - + + @@ -14798,8 +14798,8 @@ Node48 - -BFN::CollectAlpmInfo + +BFN::CollectAlpmInfo @@ -14807,8 +14807,8 @@ Node27->Node48 - - + + @@ -14816,8 +14816,8 @@ Node49 - -BFN::CollectPhase0Annotation + +BFN::CollectPhase0Annotation @@ -14825,8 +14825,8 @@ Node27->Node49 - - + + @@ -14834,8 +14834,8 @@ Node50 - -BFN::CollectPipelines + +BFN::CollectPipelines @@ -14843,8 +14843,8 @@ Node27->Node50 - - + + @@ -14852,8 +14852,8 @@ Node51 - -BFN::CollectVarbitExtract + +BFN::CollectVarbitExtract @@ -14861,8 +14861,8 @@ Node27->Node51 - - + + @@ -14870,8 +14870,8 @@ Node52 - -BFN::CollectVariables + +BFN::CollectVariables @@ -14879,8 +14879,8 @@ Node27->Node52 - - + + @@ -14888,8 +14888,8 @@ Node53 - -BFN::DetectMultiplePipelines + +BFN::DetectMultiplePipelines @@ -14897,8 +14897,8 @@ Node27->Node53 - - + + @@ -14906,9 +14906,9 @@ Node54 - -BFN::EnumOn32Bits:: -FindStatefulEnumOutputs + +BFN::EnumOn32Bits:: +FindStatefulEnumOutputs @@ -14916,8 +14916,8 @@ Node27->Node54 - - + + @@ -14925,8 +14925,8 @@ Node55 - -BFN::ErrorOnUnsupportedVarbitUse + +BFN::ErrorOnUnsupportedVarbitUse @@ -14934,8 +14934,8 @@ Node27->Node55 - - + + @@ -14943,8 +14943,8 @@ Node56 - -BFN::ExtractChecksum + +BFN::ExtractChecksum @@ -14952,8 +14952,8 @@ Node27->Node56 - - + + @@ -14961,8 +14961,8 @@ Node57 - -BFN::ExtractMetadata + +BFN::ExtractMetadata @@ -14970,8 +14970,8 @@ Node27->Node57 - - + + @@ -14979,8 +14979,8 @@ Node58 - -BFN::FindDirectExterns + +BFN::FindDirectExterns @@ -14988,8 +14988,8 @@ Node27->Node58 - - + + @@ -14997,8 +14997,8 @@ Node59 - -BFN::FindPaddingCandidate + +BFN::FindPaddingCandidate @@ -15006,8 +15006,8 @@ Node27->Node59 - - + + @@ -15015,8 +15015,8 @@ Node60 - -BFN::FixP4Table + +BFN::FixP4Table @@ -15024,8 +15024,8 @@ Node27->Node60 - - + + @@ -15033,8 +15033,8 @@ Node61 - -BFN::GetHeaderStackIndex + +BFN::GetHeaderStackIndex @@ -15042,8 +15042,8 @@ Node27->Node61 - - + + @@ -15051,8 +15051,8 @@ Node62 - -BFN::HasTableApply + +BFN::HasTableApply @@ -15060,8 +15060,8 @@ Node27->Node62 - - + + @@ -15069,8 +15069,8 @@ Node63 - -BFN::IdentifyPadRequirements + +BFN::IdentifyPadRequirements @@ -15078,8 +15078,8 @@ Node27->Node63 - - + + @@ -15087,8 +15087,8 @@ Node64 - -BFN::PSA::AnalyzeProgram + +BFN::PSA::AnalyzeProgram @@ -15096,8 +15096,8 @@ Node27->Node64 - - + + @@ -15105,8 +15105,8 @@ Node65 - -BFN::PSA::FindPacketPath + +BFN::PSA::FindPacketPath @@ -15114,8 +15114,8 @@ Node27->Node65 - - + + @@ -15123,8 +15123,8 @@ Node66 - -BFN::PSA::LoadTargetArchitecture + +BFN::PSA::LoadTargetArchitecture @@ -15132,8 +15132,8 @@ Node27->Node66 - - + + @@ -15141,8 +15141,8 @@ Node67 - -BFN::PSA::TranslateProgram + +BFN::PSA::TranslateProgram @@ -15150,8 +15150,8 @@ Node27->Node67 - - + + @@ -15159,8 +15159,8 @@ Node68 - -BFN::ParseTna + +BFN::ParseTna @@ -15168,8 +15168,8 @@ Node27->Node68 - - + + @@ -15177,9 +15177,9 @@ Node69 - -BFN::ParserLoopsInfo -::GetMaxLoopDepth + +BFN::ParserLoopsInfo +::GetMaxLoopDepth @@ -15187,8 +15187,8 @@ Node27->Node69 - - + + @@ -15196,8 +15196,8 @@ Node70 - -BFN::ParserPragmas + +BFN::ParserPragmas @@ -15205,8 +15205,8 @@ Node27->Node70 - - + + @@ -15214,8 +15214,8 @@ Node71 - -BFN::PathLinearizer + +BFN::PathLinearizer @@ -15223,8 +15223,8 @@ Node27->Node71 - - + + @@ -15232,9 +15232,9 @@ Node72 - -BFN::PingPongGeneration -::PingPongFieldFinder + +BFN::PingPongGeneration +::PingPongFieldFinder @@ -15242,8 +15242,8 @@ Node27->Node72 - - + + @@ -15251,8 +15251,8 @@ Node73 - -BFN::ResourcesLogging + +BFN::ResourcesLogging @@ -15260,8 +15260,8 @@ Node27->Node73 - - + + @@ -15269,8 +15269,8 @@ Node74 - -BFN::SaveHashListExpression + +BFN::SaveHashListExpression @@ -15278,8 +15278,8 @@ Node27->Node74 - - + + @@ -15287,8 +15287,8 @@ Node75 - -BFN::SnapshotFieldFinder + +BFN::SnapshotFieldFinder @@ -15296,8 +15296,8 @@ Node27->Node75 - - + + @@ -15305,8 +15305,8 @@ Node76 - -BFN::V1::AnalyzeProgram + +BFN::V1::AnalyzeProgram @@ -15314,8 +15314,8 @@ Node27->Node76 - - + + @@ -15323,8 +15323,8 @@ Node77 - -BFN::V1::CollectParserChecksums + +BFN::V1::CollectParserChecksums @@ -15332,8 +15332,8 @@ Node27->Node77 - - + + @@ -15341,9 +15341,9 @@ Node78 - -BFN::V1::ConstructSymbol -Table + +BFN::V1::ConstructSymbol +Table @@ -15351,8 +15351,8 @@ Node27->Node78 - - + + @@ -15360,9 +15360,9 @@ Node79 - -BFN::V1::InsertChecksumError -::ComputeEndStates + +BFN::V1::InsertChecksumError +::ComputeEndStates @@ -15370,8 +15370,8 @@ Node27->Node79 - - + + @@ -15379,8 +15379,8 @@ Node80 - -BFN::V1::InsertParserChecksums + +BFN::V1::InsertParserChecksums @@ -15388,8 +15388,8 @@ Node27->Node80 - - + + @@ -15397,8 +15397,8 @@ Node81 - -BFN::V1::LoadTargetArchitecture + +BFN::V1::LoadTargetArchitecture @@ -15406,8 +15406,8 @@ Node27->Node81 - - + + @@ -15415,8 +15415,8 @@ Node82 - -BuildGatewayMatch + +BuildGatewayMatch @@ -15424,8 +15424,8 @@ Node27->Node82 - - + + @@ -15433,8 +15433,8 @@ Node87 - -CalcCriticalPathClusters + +CalcCriticalPathClusters @@ -15442,8 +15442,8 @@ Node27->Node87 - - + + @@ -15451,8 +15451,8 @@ Node88 - -CalcMaxPhysicalStages + +CalcMaxPhysicalStages @@ -15460,8 +15460,8 @@ Node27->Node88 - - + + @@ -15469,8 +15469,8 @@ Node89 - -CanBeIXBarExpr + +CanBeIXBarExpr @@ -15478,8 +15478,8 @@ Node27->Node89 - - + + @@ -15487,8 +15487,8 @@ Node90 - -CanonGatewayExpr::NeedNegate + +CanonGatewayExpr::NeedNegate @@ -15496,8 +15496,8 @@ Node27->Node90 - - + + @@ -15505,8 +15505,8 @@ Node91 - -CharacterizeParser + +CharacterizeParser @@ -15514,8 +15514,8 @@ Node27->Node91 - - + + @@ -15523,8 +15523,8 @@ Node92 - -CheckDuplicateAttached + +CheckDuplicateAttached @@ -15532,8 +15532,8 @@ Node27->Node92 - - + + @@ -15541,8 +15541,8 @@ Node93 - -CheckFieldCorruption + +CheckFieldCorruption @@ -15550,8 +15550,8 @@ Node27->Node93 - - + + @@ -15559,8 +15559,8 @@ Node1377 - -CheckForHeaders + +CheckForHeaders @@ -15568,8 +15568,8 @@ Node27->Node1377 - - + + @@ -15577,8 +15577,8 @@ Node1378 - -CheckInvalidate + +CheckInvalidate @@ -15586,8 +15586,8 @@ Node27->Node1378 - - + + @@ -15595,8 +15595,8 @@ Node1379 - -ClearPhvInfo + +ClearPhvInfo @@ -15604,8 +15604,8 @@ Node27->Node1379 - - + + @@ -15613,8 +15613,8 @@ Node1380 - -CollectBridgedFieldsUse + +CollectBridgedFieldsUse @@ -15622,8 +15622,8 @@ Node27->Node1380 - - + + @@ -15631,8 +15631,8 @@ Node1381 - -CollectClotInfo + +CollectClotInfo @@ -15640,8 +15640,8 @@ Node27->Node1381 - - + + @@ -15649,8 +15649,8 @@ Node1382 - -CollectConstraints + +CollectConstraints @@ -15658,8 +15658,8 @@ Node27->Node1382 - - + + @@ -15667,8 +15667,8 @@ Node1383 - -CollectEgressBridgedFields + +CollectEgressBridgedFields @@ -15676,8 +15676,8 @@ Node27->Node1383 - - + + @@ -15685,9 +15685,9 @@ Node1384 - -CollectExtractedTogether -Fields + +CollectExtractedTogether +Fields @@ -15695,8 +15695,8 @@ Node27->Node1384 - - + + @@ -15704,8 +15704,8 @@ Node1385 - -CollectGatewayFields + +CollectGatewayFields @@ -15713,8 +15713,8 @@ Node27->Node1385 - - + + @@ -15722,8 +15722,8 @@ Node1387 - -CollectGlobalPragma + +CollectGlobalPragma @@ -15731,8 +15731,8 @@ Node27->Node1387 - - + + @@ -15740,8 +15740,8 @@ Node1388 - -CollectIngressBridgedFields + +CollectIngressBridgedFields @@ -15749,8 +15749,8 @@ Node27->Node1388 - - + + @@ -15758,8 +15758,8 @@ Node1389 - -CollectInvalidatedHeaders + +CollectInvalidatedHeaders @@ -15767,8 +15767,8 @@ Node27->Node1389 - - + + @@ -15776,8 +15776,8 @@ Node1390 - -CollectMochaCandidates + +CollectMochaCandidates @@ -15785,8 +15785,8 @@ Node27->Node1390 - - + + @@ -15794,8 +15794,8 @@ Node1391 - -CollectPardeConstraints + +CollectPardeConstraints @@ -15803,8 +15803,8 @@ Node27->Node1391 - - + + @@ -15812,8 +15812,8 @@ Node1392 - -CollectPhvFields + +CollectPhvFields @@ -15821,8 +15821,8 @@ Node27->Node1392 - - + + @@ -15830,8 +15830,8 @@ Node1393 - -CollectStridedHeaders + +CollectStridedHeaders @@ -15839,8 +15839,8 @@ Node27->Node1393 - - + + @@ -15848,9 +15848,9 @@ Node1394 - -CollectUserSpecifiedCritical -States + +CollectUserSpecifiedCritical +States @@ -15858,8 +15858,8 @@ Node27->Node1394 - - + + @@ -15867,8 +15867,8 @@ Node1395 - -ComputeDarkInitialization + +ComputeDarkInitialization @@ -15876,8 +15876,8 @@ Node27->Node1395 - - + + @@ -15885,8 +15885,8 @@ Node1396 - -ComputeDependencies + +ComputeDependencies @@ -15894,8 +15894,8 @@ Node27->Node1396 - - + + @@ -15903,8 +15903,8 @@ Node1397 - -ComputeFieldAlignments + +ComputeFieldAlignments @@ -15912,8 +15912,8 @@ Node27->Node1397 - - + + @@ -15921,8 +15921,8 @@ Node1398 - -ComputeValuesAtDeparser + +ComputeValuesAtDeparser @@ -15930,8 +15930,8 @@ Node27->Node1398 - - + + @@ -15939,8 +15939,8 @@ Node1399 - -ConstantLogicValue + +ConstantLogicValue @@ -15948,8 +15948,8 @@ Node27->Node1399 - - + + @@ -15957,8 +15957,8 @@ Node1400 - -ConstrainSatAddResultTempVars + +ConstrainSatAddResultTempVars @@ -15966,8 +15966,8 @@ Node27->Node1400 - - + + @@ -15975,8 +15975,8 @@ Node1401 - -CountStridedHeaderRefs + +CountStridedHeaderRefs @@ -15984,8 +15984,8 @@ Node27->Node1401 - - + + @@ -15993,8 +15993,8 @@ Node1402 - -CreateMathUnit + +CreateMathUnit @@ -16002,8 +16002,8 @@ Node27->Node1402 - - + + @@ -16011,8 +16011,8 @@ Node1403 - -CreateSaluApplyFunction + +CreateSaluApplyFunction @@ -16020,8 +16020,8 @@ Node27->Node1403 - - + + @@ -16029,8 +16029,8 @@ Node1404 - -CreateSaluInstruction + +CreateSaluInstruction @@ -16038,8 +16038,8 @@ Node27->Node1404 - - + + @@ -16047,8 +16047,8 @@ Node1405 - -DarkLiveRange + +DarkLiveRange @@ -16056,8 +16056,8 @@ Node27->Node1405 - - + + @@ -16065,8 +16065,8 @@ Node1406 - -DetermineCandidateFields + +DetermineCandidateFields @@ -16074,8 +16074,8 @@ Node27->Node1406 - - + + @@ -16083,8 +16083,8 @@ Node1407 - -DetermineCandidateHeaders + +DetermineCandidateHeaders @@ -16092,8 +16092,8 @@ Node27->Node1407 - - + + @@ -16101,8 +16101,8 @@ Node1408 - -DumpPipe + +DumpPipe @@ -16110,8 +16110,8 @@ Node27->Node1408 - - + + @@ -16119,9 +16119,9 @@ Node1409 - -DumpTableFlowGraph -::CollectPhvReadsAndWrites + +DumpTableFlowGraph +::CollectPhvReadsAndWrites @@ -16129,8 +16129,8 @@ Node27->Node1409 - - + + @@ -16138,8 +16138,8 @@ Node1410 - -EmitHashExpression + +EmitHashExpression @@ -16147,8 +16147,8 @@ Node27->Node1410 - - + + @@ -16156,8 +16156,8 @@ Node1411 - -ExcludeAliasedHeaderFields + +ExcludeAliasedHeaderFields @@ -16165,8 +16165,8 @@ Node27->Node1411 - - + + @@ -16174,8 +16174,8 @@ Node1412 - -ExcludeCsumOverlays + +ExcludeCsumOverlays @@ -16183,8 +16183,8 @@ Node27->Node1412 - - + + @@ -16192,8 +16192,8 @@ Node1413 - -ExcludeCsumOverlaysPOV + +ExcludeCsumOverlaysPOV @@ -16201,8 +16201,8 @@ Node27->Node1413 - - + + @@ -16210,9 +16210,9 @@ Node1414 - -ExcludeDeparsedIntrinsic -Metadata + +ExcludeDeparsedIntrinsic +Metadata @@ -16220,8 +16220,8 @@ Node27->Node1414 - - + + @@ -16229,8 +16229,8 @@ Node1415 - -ExcludeDeparserOverlays + +ExcludeDeparserOverlays @@ -16238,8 +16238,8 @@ Node27->Node1415 - - + + @@ -16247,8 +16247,8 @@ Node1416 - -ExcludePragmaNoOverlayFields + +ExcludePragmaNoOverlayFields @@ -16256,8 +16256,8 @@ Node27->Node1416 - - + + @@ -16265,8 +16265,8 @@ Node1417 - -ExtractBridgeInfo + +ExtractBridgeInfo @@ -16274,8 +16274,8 @@ Node27->Node1417 - - + + @@ -16283,9 +16283,9 @@ Node1369 - -FieldDefUse::ClearBefore -Egress + +FieldDefUse::ClearBefore +Egress @@ -16293,8 +16293,8 @@ Node27->Node1369 - - + + @@ -16302,9 +16302,9 @@ Node1418 - -FieldDefUse::CollectAlias -Destinations + +FieldDefUse::CollectAlias +Destinations @@ -16312,8 +16312,8 @@ Node27->Node1418 - - + + @@ -16321,8 +16321,8 @@ Node1419 - -FieldLevelOptimisation + +FieldLevelOptimisation @@ -16330,8 +16330,8 @@ Node27->Node1419 - - + + @@ -16339,8 +16339,8 @@ Node1420 - -FieldPovAnalysis + +FieldPovAnalysis @@ -16348,8 +16348,8 @@ Node27->Node1420 - - + + @@ -16357,8 +16357,8 @@ Node1421 - -FindExpressionsForFields + +FindExpressionsForFields @@ -16366,8 +16366,8 @@ Node27->Node1421 - - + + @@ -16375,8 +16375,8 @@ Node1422 - -FindInitializationNode + +FindInitializationNode @@ -16384,8 +16384,8 @@ Node27->Node1422 - - + + @@ -16393,8 +16393,8 @@ Node1423 - -FindRecirculatedAllowingPort + +FindRecirculatedAllowingPort @@ -16402,8 +16402,8 @@ Node27->Node1423 - - + + @@ -16411,9 +16411,9 @@ Node1424 - -FindUninitializedAndOverlayed -Reads + +FindUninitializedAndOverlayed +Reads @@ -16421,8 +16421,8 @@ Node27->Node1424 - - + + @@ -16430,8 +16430,8 @@ Node1425 - -FormatHash::Output + +FormatHash::Output @@ -16439,8 +16439,8 @@ Node27->Node1425 - - + + @@ -16448,8 +16448,8 @@ Node1426 - -FormatHash::SliceWidth + +FormatHash::SliceWidth @@ -16457,8 +16457,8 @@ Node27->Node1426 - - + + @@ -16466,8 +16466,8 @@ Node1427 - -FormatHash::ZeroHash + +FormatHash::ZeroHash @@ -16475,8 +16475,8 @@ Node27->Node1427 - - + + @@ -16484,8 +16484,8 @@ Node1428 - -GatherDeparserParameters + +GatherDeparserParameters @@ -16493,8 +16493,8 @@ Node27->Node1428 - - + + @@ -16502,8 +16502,8 @@ Node1429 - -GatherDigestFields + +GatherDigestFields @@ -16511,8 +16511,8 @@ Node27->Node1429 - - + + @@ -16520,8 +16520,8 @@ Node1430 - -GatherParserExtracts + +GatherParserExtracts @@ -16529,8 +16529,8 @@ Node27->Node1430 - - + + @@ -16538,8 +16538,8 @@ Node1431 - -GatherPhase0Fields + +GatherPhase0Fields @@ -16547,8 +16547,8 @@ Node27->Node1431 - - + + @@ -16556,8 +16556,8 @@ Node1432 - -GetAllChecksumDest + +GetAllChecksumDest @@ -16565,8 +16565,8 @@ Node27->Node1432 - - + + @@ -16574,8 +16574,8 @@ Node1433 - -GetMaxBufferPos + +GetMaxBufferPos @@ -16583,8 +16583,8 @@ Node27->Node1433 - - + + @@ -16592,8 +16592,8 @@ Node1434 - -GetMinBufferPos + +GetMinBufferPos @@ -16601,8 +16601,8 @@ Node27->Node1434 - - + + @@ -16610,8 +16610,8 @@ Node1435 - -GetSelectFieldInfo + +GetSelectFieldInfo @@ -16619,8 +16619,8 @@ Node27->Node1435 - - + + @@ -16628,8 +16628,8 @@ Node1436 - -IXBar::FieldManagement + +IXBar::FieldManagement @@ -16637,8 +16637,8 @@ Node27->Node1436 - - + + @@ -16646,8 +16646,8 @@ Node1437 - -IXBarExprSeed + +IXBarExprSeed @@ -16655,8 +16655,8 @@ Node27->Node1437 - - + + @@ -16664,8 +16664,8 @@ Node1438 - -IdentifyDeparserZeroCandidates + +IdentifyDeparserZeroCandidates @@ -16673,8 +16673,8 @@ Node27->Node1438 - - + + @@ -16682,8 +16682,8 @@ Node1439 - -JbayPhvAnalysis + +JbayPhvAnalysis @@ -16691,8 +16691,8 @@ Node27->Node1439 - - + + @@ -16700,8 +16700,8 @@ Node1440 - -LiveRangeReport + +LiveRangeReport @@ -16709,8 +16709,8 @@ Node27->Node1440 - - + + @@ -16718,8 +16718,8 @@ Node1441 - -LogRepackedHeaders + +LogRepackedHeaders @@ -16727,8 +16727,8 @@ Node27->Node1441 - - + + @@ -16736,8 +16736,8 @@ Node1442 - -Logging::Manifest + +Logging::Manifest @@ -16745,8 +16745,8 @@ Node27->Node1442 - - + + @@ -16754,8 +16754,8 @@ Node1443 - -MapDestToInstruction + +MapDestToInstruction @@ -16763,8 +16763,8 @@ Node27->Node1443 - - + + @@ -16772,8 +16772,8 @@ Node1444 - -MapFieldToParserStates + +MapFieldToParserStates @@ -16781,8 +16781,8 @@ Node27->Node1444 - - + + @@ -16790,8 +16790,8 @@ Node1445 - -MapTablesToActions + +MapTablesToActions @@ -16799,8 +16799,8 @@ Node27->Node1445 - - + + @@ -16808,8 +16808,8 @@ Node1446 - -MarkDarkCandidates + +MarkDarkCandidates @@ -16817,8 +16817,8 @@ Node27->Node1446 - - + + @@ -16826,8 +16826,8 @@ Node1447 - -MarkFieldAsBridged + +MarkFieldAsBridged @@ -16835,8 +16835,8 @@ Node27->Node1447 - - + + @@ -16844,8 +16844,8 @@ Node1448 - -MarkMutexPragmaFields + +MarkMutexPragmaFields @@ -16853,8 +16853,8 @@ Node27->Node1448 - - + + @@ -16862,8 +16862,8 @@ Node1449 - -MarkPaddingAsDeparsed + +MarkPaddingAsDeparsed @@ -16871,8 +16871,8 @@ Node27->Node1449 - - + + @@ -16880,8 +16880,8 @@ Node1450 - -MarkTimestampAndVersion + +MarkTimestampAndVersion @@ -16889,8 +16889,8 @@ Node27->Node1450 - - + + @@ -16898,8 +16898,8 @@ Node1370 - -MauAsmOutput::EmitAction + +MauAsmOutput::EmitAction @@ -16907,8 +16907,8 @@ Node27->Node1370 - - + + @@ -16916,8 +16916,8 @@ Node1451 - -MauAsmOutput::EmitAttached + +MauAsmOutput::EmitAttached @@ -16925,8 +16925,8 @@ Node27->Node1451 - - + + @@ -16934,8 +16934,8 @@ Node96 - -MauInspector + +MauInspector @@ -16943,8 +16943,8 @@ Node27->Node96 - - + + @@ -16952,8 +16952,8 @@ Node1452 - -MemoizeStage + +MemoizeStage @@ -16961,8 +16961,8 @@ Node27->Node1452 - - + + @@ -16970,8 +16970,8 @@ Node1453 - -MetadataLiveRange + +MetadataLiveRange @@ -16979,8 +16979,8 @@ Node27->Node1453 - - + + @@ -16988,8 +16988,8 @@ Node1454 - -NonMochaDarkFields + +NonMochaDarkFields @@ -16997,8 +16997,8 @@ Node27->Node1454 - - + + @@ -17006,8 +17006,8 @@ Node1455 - -P4::AnalyzeParser + +P4::AnalyzeParser @@ -17015,8 +17015,8 @@ Node27->Node1455 - - + + @@ -17024,8 +17024,8 @@ Node1456 - -P4::ApplyOptionsPragmas + +P4::ApplyOptionsPragmas @@ -17033,8 +17033,8 @@ Node27->Node1456 - - + + @@ -17042,8 +17042,8 @@ Node1457 - -P4::BMV2::ActionConverter + +P4::BMV2::ActionConverter @@ -17051,8 +17051,8 @@ Node27->Node1457 - - + + @@ -17060,8 +17060,8 @@ Node1458 - -P4::BMV2::CheckUnsupported + +P4::BMV2::CheckUnsupported @@ -17069,8 +17069,8 @@ Node27->Node1458 - - + + @@ -17078,9 +17078,9 @@ Node1459 - -P4::BMV2::ControlConverter -< arch > + +P4::BMV2::ControlConverter +< arch > @@ -17088,8 +17088,8 @@ Node27->Node1459 - - + + @@ -17097,8 +17097,8 @@ Node1460 - -P4::BMV2::ConvertGlobals + +P4::BMV2::ConvertGlobals @@ -17106,8 +17106,8 @@ Node27->Node1460 - - + + @@ -17115,8 +17115,8 @@ Node1461 - -P4::BMV2::ConvertPnaToJson + +P4::BMV2::ConvertPnaToJson @@ -17124,8 +17124,8 @@ Node27->Node1461 - - + + @@ -17133,8 +17133,8 @@ Node1462 - -P4::BMV2::ConvertPsaToJson + +P4::BMV2::ConvertPsaToJson @@ -17142,8 +17142,8 @@ Node27->Node1462 - - + + @@ -17151,8 +17151,8 @@ Node1463 - -P4::BMV2::DeparserConverter + +P4::BMV2::DeparserConverter @@ -17160,8 +17160,8 @@ Node27->Node1463 - - + + @@ -17169,8 +17169,8 @@ Node1464 - -P4::BMV2::ExpressionConverter + +P4::BMV2::ExpressionConverter @@ -17178,8 +17178,8 @@ Node27->Node1464 - - + + @@ -17187,8 +17187,8 @@ Node1468 - -P4::BMV2::HeaderConverter + +P4::BMV2::HeaderConverter @@ -17196,8 +17196,8 @@ Node27->Node1468 - - + + @@ -17205,8 +17205,8 @@ Node1469 - -P4::BMV2::ParseV1Architecture + +P4::BMV2::ParseV1Architecture @@ -17214,8 +17214,8 @@ Node27->Node1469 - - + + @@ -17223,8 +17223,8 @@ Node1470 - -P4::BMV2::ParserConverter + +P4::BMV2::ParserConverter @@ -17232,8 +17232,8 @@ Node27->Node1470 - - + + @@ -17241,9 +17241,9 @@ Node1471 - -P4::BMV2::SharedActionSelector -Check< arch > + +P4::BMV2::SharedActionSelector +Check< arch > @@ -17251,8 +17251,8 @@ Node27->Node1471 - - + + @@ -17260,8 +17260,8 @@ Node1472 - -P4::BuildResourceMap + +P4::BuildResourceMap @@ -17269,8 +17269,8 @@ Node27->Node1472 - - + + @@ -17278,8 +17278,8 @@ Node1473 - -P4::CheckNamedArgs + +P4::CheckNamedArgs @@ -17287,8 +17287,8 @@ Node27->Node1473 - - + + @@ -17296,8 +17296,8 @@ Node1474 - -P4::ClearTypeMap + +P4::ClearTypeMap @@ -17305,8 +17305,8 @@ Node27->Node1474 - - + + @@ -17314,8 +17314,8 @@ Node1475 - -P4::CompileTimeOperations + +P4::CompileTimeOperations @@ -17323,8 +17323,8 @@ Node27->Node1475 - - + + @@ -17332,8 +17332,8 @@ Node1477 - -P4::ContainsType + +P4::ContainsType @@ -17341,8 +17341,8 @@ Node27->Node1477 - - + + @@ -17350,9 +17350,9 @@ Node879 - -P4::ControlFlowVisitor -::SetupJoinPoints + +P4::ControlFlowVisitor +::SetupJoinPoints @@ -17360,8 +17360,8 @@ Node27->Node879 - - + + @@ -17369,9 +17369,9 @@ Node1478 - -P4::ControlPlaneAPI -::TypeSpecConverter + +P4::ControlPlaneAPI +::TypeSpecConverter @@ -17379,8 +17379,8 @@ Node27->Node1478 - - + + @@ -17388,8 +17388,8 @@ Node1479 - -P4::Coverage::CollectNodes + +P4::Coverage::CollectNodes @@ -17397,8 +17397,8 @@ Node27->Node1479 - - + + @@ -17406,8 +17406,8 @@ Node1480 - -P4::DPDK::CheckExternInvocation + +P4::DPDK::CheckExternInvocation @@ -17415,8 +17415,8 @@ Node27->Node1480 - - + + @@ -17424,8 +17424,8 @@ Node1481 - -P4::DPDK::CollectActionUses + +P4::DPDK::CollectActionUses @@ -17433,8 +17433,8 @@ Node27->Node1481 - - + + @@ -17442,9 +17442,9 @@ Node1482 - -P4::DPDK::CollectAddOnMiss -Table + +P4::DPDK::CollectAddOnMiss +Table @@ -17452,8 +17452,8 @@ Node27->Node1482 - - + + @@ -17461,9 +17461,9 @@ Node1483 - -P4::DPDK::CollectDirectCounter -Meter + +P4::DPDK::CollectDirectCounter +Meter @@ -17471,8 +17471,8 @@ Node27->Node1483 - - + + @@ -17480,8 +17480,8 @@ Node1484 - -P4::DPDK::CollectErrors + +P4::DPDK::CollectErrors @@ -17489,8 +17489,8 @@ Node27->Node1484 - - + + @@ -17498,8 +17498,8 @@ Node1485 - -P4::DPDK::CollectExternDeclaration + +P4::DPDK::CollectExternDeclaration @@ -17507,8 +17507,8 @@ Node27->Node1485 - - + + @@ -17516,8 +17516,8 @@ Node1486 - -P4::DPDK::CollectIPSecInfo + +P4::DPDK::CollectIPSecInfo @@ -17525,8 +17525,8 @@ Node27->Node1486 - - + + @@ -17534,9 +17534,9 @@ Node1487 - -P4::DPDK::CollectInternet -ChecksumInstance + +P4::DPDK::CollectInternet +ChecksumInstance @@ -17544,8 +17544,8 @@ Node27->Node1487 - - + + @@ -17553,9 +17553,9 @@ Node1488 - -P4::DPDK::CollectMetadata -HeaderInfo + +P4::DPDK::CollectMetadata +HeaderInfo @@ -17563,8 +17563,8 @@ Node27->Node1488 - - + + @@ -17572,8 +17572,8 @@ Node1489 - -P4::DPDK::CollectTableInfo + +P4::DPDK::CollectTableInfo @@ -17581,8 +17581,8 @@ Node27->Node1489 - - + + @@ -17590,8 +17590,8 @@ Node1490 - -P4::DPDK::CollectUseDefInfo + +P4::DPDK::CollectUseDefInfo @@ -17599,8 +17599,8 @@ Node27->Node1490 - - + + @@ -17608,9 +17608,9 @@ Node1491 - -P4::DPDK::CollectUsedMetadata -Field + +P4::DPDK::CollectUsedMetadata +Field @@ -17618,8 +17618,8 @@ Node27->Node1491 - - + + @@ -17627,9 +17627,9 @@ Node1492 - -P4::DPDK::ConvertLookahead -::Collect + +P4::DPDK::ConvertLookahead +::Collect @@ -17637,8 +17637,8 @@ Node27->Node1492 - - + + @@ -17646,9 +17646,9 @@ Node1493 - -P4::DPDK::ConvertStatement -ToDpdk + +P4::DPDK::ConvertStatement +ToDpdk @@ -17656,8 +17656,8 @@ Node27->Node1493 - - + + @@ -17665,8 +17665,8 @@ Node1494 - -P4::DPDK::ConvertToDpdkControl + +P4::DPDK::ConvertToDpdkControl @@ -17674,8 +17674,8 @@ Node27->Node1494 - - + + @@ -17683,8 +17683,8 @@ Node1495 - -P4::DPDK::ConvertToDpdkParser + +P4::DPDK::ConvertToDpdkParser @@ -17692,8 +17692,8 @@ Node27->Node1495 - - + + @@ -17701,8 +17701,8 @@ Node1496 - -P4::DPDK::ConvertToString + +P4::DPDK::ConvertToString @@ -17710,8 +17710,8 @@ Node27->Node1496 - - + + @@ -17719,8 +17719,8 @@ Node1497 - -P4::DPDK::DefActionValue + +P4::DPDK::DefActionValue @@ -17728,8 +17728,8 @@ Node27->Node1497 - - + + @@ -17737,8 +17737,8 @@ Node1498 - -P4::DPDK::DpdkContextGenerator + +P4::DPDK::DpdkContextGenerator @@ -17746,8 +17746,8 @@ Node27->Node1498 - - + + @@ -17755,8 +17755,8 @@ Node1499 - -P4::DPDK::EmitDpdkTableConfig + +P4::DPDK::EmitDpdkTableConfig @@ -17764,8 +17764,8 @@ Node27->Node1499 - - + + @@ -17773,8 +17773,8 @@ Node1500 - -P4::DPDK::ExpressionUnroll + +P4::DPDK::ExpressionUnroll @@ -17782,8 +17782,8 @@ Node27->Node1500 - - + + @@ -17791,8 +17791,8 @@ Node1501 - -P4::DPDK::HaveNonHeaderChecksumArgs + +P4::DPDK::HaveNonHeaderChecksumArgs @@ -17800,8 +17800,8 @@ Node27->Node1501 - - + + @@ -17809,9 +17809,9 @@ Node1502 - -P4::DPDK::HaveNonHeaderLarge -OperandAssignment + +P4::DPDK::HaveNonHeaderLarge +OperandAssignment @@ -17819,8 +17819,8 @@ Node27->Node1502 - - + + @@ -17828,8 +17828,8 @@ Node1503 - -P4::DPDK::IsDirectionMetadataUsed + +P4::DPDK::IsDirectionMetadataUsed @@ -17837,8 +17837,8 @@ Node27->Node1503 - - + + @@ -17846,9 +17846,9 @@ Node1504 - -P4::DPDK::LogicalExpression -Unroll + +P4::DPDK::LogicalExpression +Unroll @@ -17856,8 +17856,8 @@ Node27->Node1504 - - + + @@ -17865,8 +17865,8 @@ Node1505 - -P4::DPDK::TypeWidthValidator + +P4::DPDK::TypeWidthValidator @@ -17874,8 +17874,8 @@ Node27->Node1505 - - + + @@ -17883,9 +17883,9 @@ Node1506 - -P4::DPDK::ValidateAddOnMiss -Externs + +P4::DPDK::ValidateAddOnMiss +Externs @@ -17893,8 +17893,8 @@ Node27->Node1506 - - + + @@ -17902,9 +17902,9 @@ Node1507 - -P4::DPDK::ValidateDirect -CounterMeter + +P4::DPDK::ValidateDirect +CounterMeter @@ -17912,8 +17912,8 @@ Node27->Node1507 - - + + @@ -17921,8 +17921,8 @@ Node1508 - -P4::DPDK::ValidateOperandSize + +P4::DPDK::ValidateOperandSize @@ -17930,8 +17930,8 @@ Node27->Node1508 - - + + @@ -17939,8 +17939,8 @@ Node1509 - -P4::DiscoverInlining + +P4::DiscoverInlining @@ -17948,8 +17948,8 @@ Node27->Node1509 - - + + @@ -17957,8 +17957,8 @@ Node1510 - -P4::DiscoverStructure + +P4::DiscoverStructure @@ -17966,8 +17966,8 @@ Node27->Node1510 - - + + @@ -17975,8 +17975,8 @@ Node1511 - -P4::EBPF::CodeGenInspector + +P4::EBPF::CodeGenInspector @@ -17984,8 +17984,8 @@ Node27->Node1511 - - + + @@ -17993,8 +17993,8 @@ Node1532 - -P4::EBPF::ConvertToEBPFControlPSA + +P4::EBPF::ConvertToEBPFControlPSA @@ -18002,8 +18002,8 @@ Node27->Node1532 - - + + @@ -18011,8 +18011,8 @@ Node1533 - -P4::EBPF::ConvertToEBPFDeparserPSA + +P4::EBPF::ConvertToEBPFDeparserPSA @@ -18020,8 +18020,8 @@ Node27->Node1533 - - + + @@ -18029,8 +18029,8 @@ Node1534 - -P4::EBPF::ConvertToEBPFParserPSA + +P4::EBPF::ConvertToEBPFParserPSA @@ -18038,8 +18038,8 @@ Node27->Node1534 - - + + @@ -18047,8 +18047,8 @@ Node1535 - -P4::EBPF::ConvertToEbpfPipeline + +P4::EBPF::ConvertToEbpfPipeline @@ -18056,8 +18056,8 @@ Node27->Node1535 - - + + @@ -18065,9 +18065,9 @@ Node1536 - -P4::EBPF::EBPFTablePSATernary -TableMaskGenerator + +P4::EBPF::EBPFTablePSATernary +TableMaskGenerator @@ -18075,8 +18075,8 @@ Node27->Node1536 - - + + @@ -18084,9 +18084,9 @@ Node1537 - -P4::EBPF::EBPFTablePsaProperty -Visitor + +P4::EBPF::EBPFTablePsaProperty +Visitor @@ -18094,8 +18094,8 @@ Node27->Node1537 - - + + @@ -18103,8 +18103,8 @@ Node1543 - -P4::EBPF::PSAErrorCodesGen + +P4::EBPF::PSAErrorCodesGen @@ -18112,8 +18112,8 @@ Node27->Node1543 - - + + @@ -18121,8 +18121,8 @@ Node1544 - -P4::Explain + +P4::Explain @@ -18130,8 +18130,8 @@ Node27->Node1544 - - + + @@ -18139,8 +18139,8 @@ Node1545 - -P4::ExpressionEvaluator + +P4::ExpressionEvaluator @@ -18148,8 +18148,8 @@ Node27->Node1545 - - + + @@ -18157,8 +18157,8 @@ Node1546 - -P4::FindHeaderTypesToReplace + +P4::FindHeaderTypesToReplace @@ -18166,8 +18166,8 @@ Node27->Node1546 - - + + @@ -18175,8 +18175,8 @@ Node1547 - -P4::FindParameters + +P4::FindParameters @@ -18184,8 +18184,8 @@ Node27->Node1547 - - + + @@ -18193,8 +18193,8 @@ Node1548 - -P4::FindRedundantParsers + +P4::FindRedundantParsers @@ -18202,8 +18202,8 @@ Node27->Node1548 - - + + @@ -18211,8 +18211,8 @@ Node1549 - -P4::FindSymbols + +P4::FindSymbols @@ -18220,8 +18220,8 @@ Node27->Node1549 - - + + @@ -18229,8 +18229,8 @@ Node1550 - -P4::FindTypeSpecializations + +P4::FindTypeSpecializations @@ -18238,8 +18238,8 @@ Node27->Node1550 - - + + @@ -18247,9 +18247,9 @@ Node1551 - -P4::FindTypesInLogMsgInvocation -ToReplace + +P4::FindTypesInLogMsgInvocation +ToReplace @@ -18257,8 +18257,8 @@ Node27->Node1551 - - + + @@ -18266,8 +18266,8 @@ Node1552 - -P4::FindTypesToReplace + +P4::FindTypesToReplace @@ -18275,8 +18275,8 @@ Node27->Node1552 - - + + @@ -18284,8 +18284,8 @@ Node1553 - -P4::FindVariableValues + +P4::FindVariableValues @@ -18293,8 +18293,8 @@ Node27->Node1553 - - + + @@ -18302,8 +18302,8 @@ Node1554 - -P4::HSIndexFinder + +P4::HSIndexFinder @@ -18311,8 +18311,8 @@ Node27->Node1554 - - + + @@ -18320,8 +18320,8 @@ Node1555 - -P4::HasExits + +P4::HasExits @@ -18329,8 +18329,8 @@ Node27->Node1555 - - + + @@ -18338,8 +18338,8 @@ Node1556 - -P4::IfInParser + +P4::IfInParser @@ -18347,8 +18347,8 @@ Node27->Node1556 - - + + @@ -18356,8 +18356,8 @@ Node1557 - -P4::InspectDpdkProgram + +P4::InspectDpdkProgram @@ -18365,8 +18365,8 @@ Node27->Node1557 - - + + @@ -18374,8 +18374,8 @@ Node1558 - -P4::InspectPortableProgram + +P4::InspectPortableProgram @@ -18383,8 +18383,8 @@ Node27->Node1558 - - + + @@ -18392,8 +18392,8 @@ Node1561 - -P4::KeyNameGenerator + +P4::KeyNameGenerator @@ -18401,8 +18401,8 @@ Node27->Node1561 - - + + @@ -18410,8 +18410,8 @@ Node1562 - -P4::MidEndLast + +P4::MidEndLast @@ -18419,8 +18419,8 @@ Node27->Node1562 - - + + @@ -18428,8 +18428,8 @@ Node1563 - -P4::P4Fmt::Attach + +P4::P4Fmt::Attach @@ -18437,8 +18437,8 @@ Node27->Node1563 - - + + @@ -18446,9 +18446,9 @@ Node1564 - -P4::P4Tools::P4Testgen -::AbstractStepper + +P4::P4Tools::P4Testgen +::AbstractStepper @@ -18456,8 +18456,8 @@ Node27->Node1564 - - + + @@ -18465,9 +18465,9 @@ Node1575 - -P4::P4Tools::P4Testgen -::Bmv2::MapDirectExterns + +P4::P4Tools::P4Testgen +::Bmv2::MapDirectExterns @@ -18475,8 +18475,8 @@ Node27->Node1575 - - + + @@ -18484,9 +18484,9 @@ Node1576 - -P4::P4Tools::P4Testgen -::Bmv2::RefersToParser + +P4::P4Tools::P4Testgen +::Bmv2::RefersToParser @@ -18494,8 +18494,8 @@ Node27->Node1576 - - + + @@ -18503,9 +18503,9 @@ Node1577 - -P4::P4Tools::P4Testgen -::ConcolicResolver + +P4::P4Tools::P4Testgen +::ConcolicResolver @@ -18513,8 +18513,8 @@ Node27->Node1577 - - + + @@ -18522,9 +18522,9 @@ Node1578 - -P4::P4Tools::P4Testgen -::CoverableNodesScanner + +P4::P4Tools::P4Testgen +::CoverableNodesScanner @@ -18532,8 +18532,8 @@ Node27->Node1578 - - + + @@ -18541,9 +18541,9 @@ Node1579 - -P4::P4Tools::Test:: -NodeFinder< T > + +P4::P4Tools::Test:: +NodeFinder< T > @@ -18551,8 +18551,8 @@ Node27->Node1579 - - + + @@ -18560,8 +18560,8 @@ Node1580 - -P4::P4Tools::Z3Translator + +P4::P4Tools::Z3Translator @@ -18569,8 +18569,8 @@ Node27->Node1580 - - + + @@ -18578,9 +18578,9 @@ Node1581 - -P4::P4V1::CheckIfMultiEntry -Point + +P4::P4V1::CheckIfMultiEntry +Point @@ -18588,8 +18588,8 @@ Node27->Node1581 - - + + @@ -18597,9 +18597,9 @@ Node915 - -P4::P4V1::CollectBridged -Fields + +P4::P4V1::CollectBridged +Fields @@ -18607,8 +18607,8 @@ Node27->Node915 - - + + @@ -18616,8 +18616,8 @@ Node1582 - -P4::P4V1::CollectDigestFields + +P4::P4V1::CollectDigestFields @@ -18625,8 +18625,8 @@ Node27->Node1582 - - + + @@ -18634,8 +18634,8 @@ Node1583 - -P4::P4V1::ComputeCallGraph + +P4::P4V1::ComputeCallGraph @@ -18643,8 +18643,8 @@ Node27->Node1583 - - + + @@ -18652,9 +18652,9 @@ Node1584 - -P4::P4V1::ComputeTableCall -Graph + +P4::P4V1::ComputeTableCall +Graph @@ -18662,8 +18662,8 @@ Node27->Node1584 - - + + @@ -18671,8 +18671,8 @@ Node1585 - -P4::P4V1::DetectDuplicates + +P4::P4V1::DetectDuplicates @@ -18680,8 +18680,8 @@ Node27->Node1585 - - + + @@ -18689,8 +18689,8 @@ Node1586 - -P4::P4V1::DiscoverStructure + +P4::P4V1::DiscoverStructure @@ -18698,8 +18698,8 @@ Node27->Node1586 - - + + @@ -18707,8 +18707,8 @@ Node1587 - -P4::P4V1::FindHeaderReference + +P4::P4V1::FindHeaderReference @@ -18716,8 +18716,8 @@ Node27->Node1587 - - + + @@ -18725,8 +18725,8 @@ Node1588 - -P4::P4V1::FindRecirculated + +P4::P4V1::FindRecirculated @@ -18734,8 +18734,8 @@ Node27->Node1588 - - + + @@ -18743,8 +18743,8 @@ Node1589 - -P4::P4V1::GetV1ModelVersion + +P4::P4V1::GetV1ModelVersion @@ -18752,8 +18752,8 @@ Node27->Node1589 - - + + @@ -18761,9 +18761,9 @@ Node1590 - -P4::P4V1::InsertChecksum -Error::ComputeEndStates + +P4::P4V1::InsertChecksum +Error::ComputeEndStates @@ -18771,8 +18771,8 @@ Node27->Node1590 - - + + @@ -18780,8 +18780,8 @@ Node1591 - -P4::ParseDpdkArchitecture + +P4::ParseDpdkArchitecture @@ -18789,8 +18789,8 @@ Node27->Node1591 - - + + @@ -18798,8 +18798,8 @@ Node1592 - -P4::ParsePortableArchitecture + +P4::ParsePortableArchitecture @@ -18807,8 +18807,8 @@ Node27->Node1592 - - + + @@ -18816,8 +18816,8 @@ Node1595 - -P4::RemoveModifiedValues + +P4::RemoveModifiedValues @@ -18825,8 +18825,8 @@ Node27->Node1595 - - + + @@ -18834,8 +18834,8 @@ Node1596 - -P4::SideEffects + +P4::SideEffects @@ -18843,8 +18843,8 @@ Node27->Node1596 - - + + @@ -18852,8 +18852,8 @@ Node1597 - -P4::TC::ConvertToBackendIR + +P4::TC::ConvertToBackendIR @@ -18861,8 +18861,8 @@ Node27->Node1597 - - + + @@ -18870,8 +18870,8 @@ Node1598 - -P4::TC::ConvertToEBPFControlPNA + +P4::TC::ConvertToEBPFControlPNA @@ -18879,8 +18879,8 @@ Node27->Node1598 - - + + @@ -18888,8 +18888,8 @@ Node1599 - -P4::TC::ConvertToEBPFDeparserPNA + +P4::TC::ConvertToEBPFDeparserPNA @@ -18897,8 +18897,8 @@ Node27->Node1599 - - + + @@ -18906,8 +18906,8 @@ Node1600 - -P4::TC::ConvertToEBPFParserPNA + +P4::TC::ConvertToEBPFParserPNA @@ -18915,8 +18915,8 @@ Node27->Node1600 - - + + @@ -18924,8 +18924,8 @@ Node1601 - -P4::TC::ConvertToEbpfPipelineTC + +P4::TC::ConvertToEbpfPipelineTC @@ -18933,8 +18933,8 @@ Node27->Node1601 - - + + @@ -18942,8 +18942,8 @@ Node1602 - -P4::TC::InspectPnaProgram + +P4::TC::InspectPnaProgram @@ -18951,8 +18951,8 @@ Node27->Node1602 - - + + @@ -18960,8 +18960,8 @@ Node1603 - -P4::TC::IntrospectionGenerator + +P4::TC::IntrospectionGenerator @@ -18969,8 +18969,8 @@ Node27->Node1603 - - + + @@ -18978,8 +18978,8 @@ Node1604 - -P4::TC::PNAErrorCodesGen + +P4::TC::PNAErrorCodesGen @@ -18987,8 +18987,8 @@ Node27->Node1604 - - + + @@ -18996,8 +18996,8 @@ Node1605 - -P4::TC::ParsePnaArchitecture + +P4::TC::ParsePnaArchitecture @@ -19005,8 +19005,8 @@ Node27->Node1605 - - + + @@ -19014,8 +19014,8 @@ Node1606 - -P4::TablesInActions + +P4::TablesInActions @@ -19023,8 +19023,8 @@ Node27->Node1606 - - + + @@ -19032,8 +19032,8 @@ Node1607 - -P4::TablesInKeys + +P4::TablesInKeys @@ -19041,8 +19041,8 @@ Node27->Node1607 - - + + @@ -19050,8 +19050,8 @@ Node1372 - -P4::Test::TestWrite + +P4::Test::TestWrite @@ -19059,8 +19059,8 @@ Node27->Node1372 - - + + @@ -19068,9 +19068,9 @@ Node1608 - -P4::TypeCheck::InferAction -ArgsBottomUp + +P4::TypeCheck::InferAction +ArgsBottomUp @@ -19078,8 +19078,8 @@ Node27->Node1608 - - + + @@ -19087,9 +19087,9 @@ Node1609 - -P4::TypeCheck::InferAction -ArgsTopDown + +P4::TypeCheck::InferAction +ArgsTopDown @@ -19097,8 +19097,8 @@ Node27->Node1609 - - + + @@ -19106,8 +19106,8 @@ Node1610 - -P4::TypeOccursVisitor + +P4::TypeOccursVisitor @@ -19115,8 +19115,8 @@ Node27->Node1610 - - + + @@ -19124,9 +19124,9 @@ Node1611 - -P4::UBPF::UBPFModel -::getUBPFModelVersion + +P4::UBPF::UBPFModel +::getUBPFModelVersion @@ -19134,8 +19134,8 @@ Node27->Node1611 - - + + @@ -19143,8 +19143,8 @@ Node1612 - -P4::ValidateMatchAnnotations + +P4::ValidateMatchAnnotations @@ -19152,8 +19152,8 @@ Node27->Node1612 - - + + @@ -19161,8 +19161,8 @@ Node1613 - -P4::ValidateParsedProgram + +P4::ValidateParsedProgram @@ -19170,8 +19170,8 @@ Node27->Node1613 - - + + @@ -19179,8 +19179,8 @@ Node1614 - -P4::ValidateStringAnnotations + +P4::ValidateStringAnnotations @@ -19188,8 +19188,8 @@ Node27->Node1614 - - + + @@ -19197,8 +19197,8 @@ Node1615 - -P4::ValidateTableProperties + +P4::ValidateTableProperties @@ -19206,8 +19206,8 @@ Node27->Node1615 - - + + @@ -19215,8 +19215,8 @@ Node1616 - -P4::ValidateValueSets + +P4::ValidateValueSets @@ -19224,8 +19224,8 @@ Node27->Node1616 - - + + @@ -19233,8 +19233,8 @@ Node1617 - -P4::exprUses + +P4::exprUses @@ -19242,8 +19242,8 @@ Node27->Node1617 - - + + @@ -19251,8 +19251,8 @@ Node1618 - -P4::graphs::Graphs + +P4::graphs::Graphs @@ -19260,8 +19260,8 @@ Node27->Node1618 - - + + @@ -19269,8 +19269,8 @@ Node1622 - -PHV::ActionSourceTracker + +PHV::ActionSourceTracker @@ -19278,8 +19278,8 @@ Node27->Node1622 - - + + @@ -19287,8 +19287,8 @@ Node1623 - -PHV::AddAliasAllocation + +PHV::AddAliasAllocation @@ -19296,8 +19296,8 @@ Node27->Node1623 - - + + @@ -19305,8 +19305,8 @@ Node1373 - -PHV::FinalizePhysicalLiverange + +PHV::FinalizePhysicalLiverange @@ -19314,8 +19314,8 @@ Node27->Node1373 - - + + @@ -19323,8 +19323,8 @@ Node1624 - -PHV::UpdateDeparserStage + +PHV::UpdateDeparserStage @@ -19332,8 +19332,8 @@ Node27->Node1624 - - + + @@ -19341,8 +19341,8 @@ Node1625 - -PHV::ValidateAllocation + +PHV::ValidateAllocation @@ -19350,8 +19350,8 @@ Node27->Node1625 - - + + @@ -19359,9 +19359,9 @@ Node1626 - -PHV::v2::CollectPHVAllocation -Result + +PHV::v2::CollectPHVAllocation +Result @@ -19369,8 +19369,8 @@ Node27->Node1626 - - + + @@ -19378,8 +19378,8 @@ Node1627 - -PHV_Field_Operations + +PHV_Field_Operations @@ -19387,8 +19387,8 @@ Node27->Node1627 - - + + @@ -19396,8 +19396,8 @@ Node1628 - -PackWithConstraintSolver + +PackWithConstraintSolver @@ -19405,8 +19405,8 @@ Node27->Node1628 - - + + @@ -19414,8 +19414,8 @@ Node1629 - -PadFixedSizeHeaders + +PadFixedSizeHeaders @@ -19423,8 +19423,8 @@ Node27->Node1629 - - + + @@ -19432,8 +19432,8 @@ Node1630 - -PardePhvConstraints + +PardePhvConstraints @@ -19441,8 +19441,8 @@ Node27->Node1630 - - + + @@ -19450,8 +19450,8 @@ Node1374 - -Phv_Parde_Mau_Use + +Phv_Parde_Mau_Use @@ -19459,8 +19459,8 @@ Node27->Node1374 - - + + @@ -19468,8 +19468,8 @@ Node1631 - -PragmaAlias + +PragmaAlias @@ -19477,8 +19477,8 @@ Node27->Node1631 - - + + @@ -19486,8 +19486,8 @@ Node1633 - -PragmaAtomic + +PragmaAtomic @@ -19495,8 +19495,8 @@ Node27->Node1633 - - + + @@ -19504,8 +19504,8 @@ Node1634 - -PragmaBytePack + +PragmaBytePack @@ -19513,8 +19513,8 @@ Node27->Node1634 - - + + @@ -19522,8 +19522,8 @@ Node1635 - -PragmaContainerSize + +PragmaContainerSize @@ -19531,8 +19531,8 @@ Node27->Node1635 - - + + @@ -19540,8 +19540,8 @@ Node1636 - -PragmaContainerType + +PragmaContainerType @@ -19549,8 +19549,8 @@ Node27->Node1636 - - + + @@ -19558,8 +19558,8 @@ Node1637 - -PragmaDeparserZero + +PragmaDeparserZero @@ -19567,8 +19567,8 @@ Node27->Node1637 - - + + @@ -19576,8 +19576,8 @@ Node1638 - -PragmaDoNotUseClot + +PragmaDoNotUseClot @@ -19585,8 +19585,8 @@ Node27->Node1638 - - + + @@ -19594,8 +19594,8 @@ Node1639 - -PragmaMutuallyExclusive + +PragmaMutuallyExclusive @@ -19603,8 +19603,8 @@ Node27->Node1639 - - + + @@ -19612,8 +19612,8 @@ Node1640 - -PragmaNoInit + +PragmaNoInit @@ -19621,8 +19621,8 @@ Node27->Node1640 - - + + @@ -19630,8 +19630,8 @@ Node1641 - -PragmaNoOverlay + +PragmaNoOverlay @@ -19639,8 +19639,8 @@ Node27->Node1641 - - + + @@ -19648,8 +19648,8 @@ Node1642 - -PragmaNoPack + +PragmaNoPack @@ -19657,8 +19657,8 @@ Node27->Node1642 - - + + @@ -19666,8 +19666,8 @@ Node1643 - -PragmaSolitary + +PragmaSolitary @@ -19675,8 +19675,8 @@ Node27->Node1643 - - + + @@ -19684,8 +19684,8 @@ Node1644 - -PrintDependencyGraph + +PrintDependencyGraph @@ -19693,8 +19693,8 @@ Node27->Node1644 - - + + @@ -19702,9 +19702,9 @@ Node1645 - -RemoveHeaderMutexesIfAll -FieldsNotMutex + +RemoveHeaderMutexesIfAll +FieldsNotMutex @@ -19712,8 +19712,8 @@ Node27->Node1645 - - + + @@ -19721,9 +19721,9 @@ Node1646 - -ResolveExtractSaves -::FindRVal + +ResolveExtractSaves +::FindRVal @@ -19731,8 +19731,8 @@ Node27->Node1646 - - + + @@ -19740,9 +19740,9 @@ Node1647 - -ResolveOutOfBufferSaves -::GetMaxSavedRVal + +ResolveOutOfBufferSaves +::GetMaxSavedRVal @@ -19750,8 +19750,8 @@ Node27->Node1647 - - + + @@ -19759,8 +19759,8 @@ Node1648 - -SaluOredIf + +SaluOredIf @@ -19768,8 +19768,8 @@ Node27->Node1648 - - + + @@ -19777,8 +19777,8 @@ Node1649 - -TablePlacement::SetupInfo + +TablePlacement::SetupInfo @@ -19786,8 +19786,8 @@ Node27->Node1649 - - + + @@ -19795,8 +19795,8 @@ Node1650 - -TofinoParserConstantExtract + +TofinoParserConstantExtract @@ -19804,8 +19804,8 @@ Node27->Node1650 - - + + @@ -19813,8 +19813,8 @@ Node1651 - -UpdateFieldAllocation + +UpdateFieldAllocation @@ -19822,8 +19822,8 @@ Node27->Node1651 - - + + @@ -19831,8 +19831,8 @@ Node1386 - -CollectMatchFieldsAsGateway + +CollectMatchFieldsAsGateway @@ -19840,8 +19840,8 @@ Node1385->Node1386 - - + + @@ -19849,9 +19849,9 @@ Node1371 - -MauAsmOutput::EmitAlways -RunAction + +MauAsmOutput::EmitAlways +RunAction @@ -19859,8 +19859,8 @@ Node1370->Node1371 - - + + @@ -19868,8 +19868,8 @@ Node96->Node115 - - + + @@ -19877,8 +19877,8 @@ Node96->Node165 - - + + @@ -19886,8 +19886,8 @@ Node96->Node1313 - - + + @@ -19895,8 +19895,8 @@ Node96->Node1319 - - + + @@ -19904,8 +19904,8 @@ Node96->Node1339 - - + + @@ -19913,8 +19913,8 @@ Node97 - -AbstractDependencyInjector + +AbstractDependencyInjector @@ -19922,8 +19922,8 @@ Node96->Node97 - - + + @@ -19931,8 +19931,8 @@ Node95 - -ActionAnalysis + +ActionAnalysis @@ -19940,8 +19940,8 @@ Node96->Node95 - - + + @@ -19949,8 +19949,8 @@ Node102 - -ActionMutuallyExclusive + +ActionMutuallyExclusive @@ -19958,8 +19958,8 @@ Node96->Node102 - - + + @@ -19967,9 +19967,9 @@ Node103 - -AssignCounterLRTValues -::FindCounterRams + +AssignCounterLRTValues +::FindCounterRams @@ -19977,8 +19977,8 @@ Node96->Node103 - - + + @@ -19986,8 +19986,8 @@ Node104 - -BFN::CollectIXBarInfo + +BFN::CollectIXBarInfo @@ -19995,8 +19995,8 @@ Node96->Node104 - - + + @@ -20004,8 +20004,8 @@ Node105 - -BFN::GenerateDynamicHashJson + +BFN::GenerateDynamicHashJson @@ -20013,8 +20013,8 @@ Node96->Node105 - - + + @@ -20022,8 +20022,8 @@ Node106 - -BFN::GetBackendTables + +BFN::GetBackendTables @@ -20031,8 +20031,8 @@ Node96->Node106 - - + + @@ -20040,8 +20040,8 @@ Node107 - -BuildDominatorTree + +BuildDominatorTree @@ -20049,8 +20049,8 @@ Node96->Node107 - - + + @@ -20058,8 +20058,8 @@ Node108 - -CalculateNextTableProp + +CalculateNextTableProp @@ -20067,8 +20067,8 @@ Node96->Node108 - - + + @@ -20076,8 +20076,8 @@ Node109 - -CheckGatewayExpr + +CheckGatewayExpr @@ -20085,8 +20085,8 @@ Node96->Node109 - - + + @@ -20094,8 +20094,8 @@ Node110 - -CheckPlacementPriorities + +CheckPlacementPriorities @@ -20103,8 +20103,8 @@ Node96->Node110 - - + + @@ -20112,8 +20112,8 @@ Node111 - -CheckTableNameDuplicate + +CheckTableNameDuplicate @@ -20121,8 +20121,8 @@ Node96->Node111 - - + + @@ -20130,8 +20130,8 @@ Node112 - -CollectForceImmediateFields + +CollectForceImmediateFields @@ -20139,8 +20139,8 @@ Node96->Node112 - - + + @@ -20148,8 +20148,8 @@ Node113 - -CollectNonDarkUses + +CollectNonDarkUses @@ -20157,8 +20157,8 @@ Node96->Node113 - - + + @@ -20166,8 +20166,8 @@ Node114 - -CollectPhvLoggingInfo + +CollectPhvLoggingInfo @@ -20175,8 +20175,8 @@ Node96->Node114 - - + + @@ -20184,8 +20184,8 @@ Node1310 - -ControlPathwaysToTable + +ControlPathwaysToTable @@ -20193,8 +20193,8 @@ Node96->Node1310 - - + + @@ -20202,8 +20202,8 @@ Node1311 - -DecidePlacement + +DecidePlacement @@ -20211,8 +20211,8 @@ Node96->Node1311 - - + + @@ -20220,8 +20220,8 @@ Node1312 - -DepStagesThruDomFrontier + +DepStagesThruDomFrontier @@ -20229,8 +20229,8 @@ Node96->Node1312 - - + + @@ -20238,8 +20238,8 @@ Node1315 - -ExcludeMAUOverlays + +ExcludeMAUOverlays @@ -20247,8 +20247,8 @@ Node96->Node1315 - - + + @@ -20256,8 +20256,8 @@ Node1316 - -FieldUse + +FieldUse @@ -20265,8 +20265,8 @@ Node96->Node1316 - - + + @@ -20274,8 +20274,8 @@ Node1317 - -FindAddedHeaderFields + +FindAddedHeaderFields @@ -20283,8 +20283,8 @@ Node96->Node1317 - - + + @@ -20292,8 +20292,8 @@ Node1318 - -FindCtrlDependencyGraph + +FindCtrlDependencyGraph @@ -20301,8 +20301,8 @@ Node96->Node1318 - - + + @@ -20310,9 +20310,9 @@ Node1320 - -FindDataDependencyGraph -::AddDependencies + +FindDataDependencyGraph +::AddDependencies @@ -20320,8 +20320,8 @@ Node96->Node1320 - - + + @@ -20329,9 +20329,9 @@ Node1321 - -FindDataDependencyGraph -::UpdateAccess + +FindDataDependencyGraph +::UpdateAccess @@ -20339,8 +20339,8 @@ Node96->Node1321 - - + + @@ -20348,8 +20348,8 @@ Node1322 - -FindFlowGraph + +FindFlowGraph @@ -20357,8 +20357,8 @@ Node96->Node1322 - - + + @@ -20366,8 +20366,8 @@ Node1323 - -FindFlowGraphs + +FindFlowGraphs @@ -20375,8 +20375,8 @@ Node96->Node1323 - - + + @@ -20384,8 +20384,8 @@ Node1324 - -GatewayLayout + +GatewayLayout @@ -20393,8 +20393,8 @@ Node96->Node1324 - - + + @@ -20402,8 +20402,8 @@ Node1325 - -GatherDynamicHashAlloc + +GatherDynamicHashAlloc @@ -20411,8 +20411,8 @@ Node96->Node1325 - - + + @@ -20420,8 +20420,8 @@ Node1326 - -GatherReductionOrReqs + +GatherReductionOrReqs @@ -20429,8 +20429,8 @@ Node96->Node1326 - - + + @@ -20438,8 +20438,8 @@ Node1327 - -GeneratePrimitiveInfo + +GeneratePrimitiveInfo @@ -20447,8 +20447,8 @@ Node96->Node1327 - - + + @@ -20456,8 +20456,8 @@ Node1328 - -GetActionRequirements + +GetActionRequirements @@ -20465,8 +20465,8 @@ Node96->Node1328 - - + + @@ -20474,8 +20474,8 @@ Node1329 - -HasAttachedMemory + +HasAttachedMemory @@ -20483,8 +20483,8 @@ Node96->Node1329 - - + + @@ -20492,8 +20492,8 @@ Node1330 - -HeaderNameMauInspector + +HeaderNameMauInspector @@ -20501,8 +20501,8 @@ Node96->Node1330 - - + + @@ -20510,8 +20510,8 @@ Node1333 - -HeaderValidityAnalysis + +HeaderValidityAnalysis @@ -20519,8 +20519,8 @@ Node96->Node1333 - - + + @@ -20528,8 +20528,8 @@ Node1334 - -IXBarVerify::GetCurrentUse + +IXBarVerify::GetCurrentUse @@ -20537,8 +20537,8 @@ Node96->Node1334 - - + + @@ -20546,8 +20546,8 @@ Node1335 - -InjectControlDependencies + +InjectControlDependencies @@ -20555,8 +20555,8 @@ Node96->Node1335 - - + + @@ -20564,8 +20564,8 @@ Node1336 - -InjectDepForAltPhvAlloc + +InjectDepForAltPhvAlloc @@ -20573,8 +20573,8 @@ Node96->Node1336 - - + + @@ -20582,8 +20582,8 @@ Node1337 - -MauAsmOutput + +MauAsmOutput @@ -20591,8 +20591,8 @@ Node96->Node1337 - - + + @@ -20600,9 +20600,9 @@ Node1340 - -MauPower::DeterminePower -Usage + +MauPower::DeterminePower +Usage @@ -20610,8 +20610,8 @@ Node96->Node1340 - - + + @@ -20619,8 +20619,8 @@ Node1341 - -MauPower::WalkPowerGraph + +MauPower::WalkPowerGraph @@ -20628,8 +20628,8 @@ Node96->Node1341 - - + + @@ -20637,8 +20637,8 @@ Node1342 - -MauTableInspector + +MauTableInspector @@ -20646,8 +20646,8 @@ Node96->Node1342 - - + + @@ -20655,8 +20655,8 @@ Node1347 - -MeterALU::Format + +MeterALU::Format @@ -20664,8 +20664,8 @@ Node96->Node1347 - - + + @@ -20673,8 +20673,8 @@ Node1348 - -NameToTableMapBuilder + +NameToTableMapBuilder @@ -20682,8 +20682,8 @@ Node96->Node1348 - - + + @@ -20691,8 +20691,8 @@ Node1349 - -PHV::CollectTableKeys + +PHV::CollectTableKeys @@ -20700,8 +20700,8 @@ Node96->Node1349 - - + + @@ -20709,9 +20709,9 @@ Node1350 - -Parde::Lowered::WarnTernary -MatchFields + +Parde::Lowered::WarnTernary +MatchFields @@ -20719,8 +20719,8 @@ Node96->Node1350 - - + + @@ -20728,8 +20728,8 @@ Node1351 - -PhvLogging + +PhvLogging @@ -20737,8 +20737,8 @@ Node96->Node1351 - - + + @@ -20746,8 +20746,8 @@ Node1352 - -PredicationBasedControlEdges + +PredicationBasedControlEdges @@ -20755,8 +20755,8 @@ Node96->Node1352 - - + + @@ -20764,8 +20764,8 @@ Node1353 - -PrintPipe + +PrintPipe @@ -20773,8 +20773,8 @@ Node96->Node1353 - - + + @@ -20782,8 +20782,8 @@ Node1354 - -ProhibitAtcamWideSelectors + +ProhibitAtcamWideSelectors @@ -20791,8 +20791,8 @@ Node96->Node1354 - - + + @@ -20800,8 +20800,8 @@ Node1355 - -RandomExternUsedOncePerAction + +RandomExternUsedOncePerAction @@ -20809,8 +20809,8 @@ Node96->Node1355 - - + + @@ -20818,8 +20818,8 @@ Node1356 - -RangeEntries + +RangeEntries @@ -20827,8 +20827,8 @@ Node96->Node1356 - - + + @@ -20836,8 +20836,8 @@ Node1357 - -SharedIndirectAttachedAnalysis + +SharedIndirectAttachedAnalysis @@ -20845,8 +20845,8 @@ Node96->Node1357 - - + + @@ -20854,8 +20854,8 @@ Node1358 - -TableFieldPackOptimization + +TableFieldPackOptimization @@ -20863,8 +20863,8 @@ Node96->Node1358 - - + + @@ -20872,8 +20872,8 @@ Node1359 - -TableSummary + +TableSummary @@ -20881,8 +20881,8 @@ Node96->Node1359 - - + + @@ -20890,8 +20890,8 @@ Node1360 - -Tofino::SetupAttachedTables + +Tofino::SetupAttachedTables @@ -20899,8 +20899,8 @@ Node96->Node1360 - - + + @@ -20908,9 +20908,9 @@ Node1361 - -UnimplementedRegisterMethod -Calls + +UnimplementedRegisterMethod +Calls @@ -20918,8 +20918,8 @@ Node96->Node1361 - - + + @@ -20927,8 +20927,8 @@ Node1362 - -ValidateActionProfileFormat + +ValidateActionProfileFormat @@ -20936,8 +20936,8 @@ Node96->Node1362 - - + + @@ -20945,8 +20945,8 @@ Node1363 - -ValidateActions + +ValidateActions @@ -20954,8 +20954,8 @@ Node96->Node1363 - - + + @@ -20963,9 +20963,9 @@ Node1364 - -ValidateAttachedOfSingle -Table + +ValidateAttachedOfSingle +Table @@ -20973,8 +20973,8 @@ Node96->Node1364 - - + + @@ -20982,8 +20982,8 @@ Node1365 - -ValidateTableSize + +ValidateTableSize @@ -20991,8 +20991,8 @@ Node96->Node1365 - - + + @@ -21000,8 +21000,8 @@ Node1366 - -VerifyParallelWritesAndReads + +VerifyParallelWritesAndReads @@ -21009,8 +21009,8 @@ Node96->Node1366 - - + + @@ -21018,8 +21018,8 @@ Node1367 - -VerifyUniqueDynamicHash + +VerifyUniqueDynamicHash @@ -21027,8 +21027,8 @@ Node96->Node1367 - - + + @@ -21036,8 +21036,8 @@ Node98 - -InjectActionExitAntiDependencies + +InjectActionExitAntiDependencies @@ -21045,8 +21045,8 @@ Node97->Node98 - - + + @@ -21054,8 +21054,8 @@ Node99 - -InjectControlExitDependencies + +InjectControlExitDependencies @@ -21063,8 +21063,8 @@ Node97->Node99 - - + + @@ -21072,8 +21072,8 @@ Node100 - -InjectDarkAntiDependencies + +InjectDarkAntiDependencies @@ -21081,8 +21081,8 @@ Node97->Node100 - - + + @@ -21090,8 +21090,8 @@ Node101 - -InjectMetadataControlDependencies + +InjectMetadataControlDependencies @@ -21099,8 +21099,8 @@ Node97->Node101 - - + + @@ -21108,8 +21108,8 @@ Node1331 - -FindConstEntryTables + +FindConstEntryTables @@ -21117,8 +21117,8 @@ Node1330->Node1331 - - + + @@ -21126,8 +21126,8 @@ Node1332 - -FindPovAndParserErrorInMau + +FindPovAndParserErrorInMau @@ -21135,8 +21135,8 @@ Node1330->Node1332 - - + + @@ -21144,8 +21144,8 @@ Node1338 - -Tofino::MauAsmOutput + +Tofino::MauAsmOutput @@ -21153,8 +21153,8 @@ Node1337->Node1338 - - + + @@ -21162,8 +21162,8 @@ Node1343 - -IgnoreTableDeps + +IgnoreTableDeps @@ -21171,8 +21171,8 @@ Node1342->Node1343 - - + + @@ -21180,8 +21180,8 @@ Node1344 - -JbayNextTable::FindNextTableUse + +JbayNextTable::FindNextTableUse @@ -21189,8 +21189,8 @@ Node1342->Node1344 - - + + @@ -21198,8 +21198,8 @@ Node1345 - -TableControlDeps + +TableControlDeps @@ -21207,8 +21207,8 @@ Node1342->Node1345 - - + + @@ -21216,8 +21216,8 @@ Node1346 - -TablesMutuallyExclusive + +TablesMutuallyExclusive @@ -21225,8 +21225,8 @@ Node1342->Node1346 - - + + @@ -21234,9 +21234,9 @@ Node1465 - -P4::BMV2::PnaNicExpression -Converter + +P4::BMV2::PnaNicExpression +Converter @@ -21244,8 +21244,8 @@ Node1464->Node1465 - - + + @@ -21253,9 +21253,9 @@ Node1466 - -P4::BMV2::PsaSwitchExpression -Converter + +P4::BMV2::PsaSwitchExpression +Converter @@ -21263,8 +21263,8 @@ Node1464->Node1466 - - + + @@ -21272,9 +21272,9 @@ Node1467 - -P4::BMV2::SimpleSwitchExpression -Converter + +P4::BMV2::SimpleSwitchExpression +Converter @@ -21282,8 +21282,8 @@ Node1464->Node1467 - - + + @@ -21291,8 +21291,8 @@ Node1476 - -BFN::CompileTimeOperations + +BFN::CompileTimeOperations @@ -21300,8 +21300,8 @@ Node1475->Node1476 - - + + @@ -21309,8 +21309,8 @@ Node879->Node878 - - + + @@ -21318,9 +21318,9 @@ Node1512 - -P4::EBPF::ActionTranslation -Visitor + +P4::EBPF::ActionTranslation +Visitor @@ -21328,8 +21328,8 @@ Node1511->Node1512 - - + + @@ -21337,8 +21337,8 @@ Node1515 - -P4::EBPF::ControlBodyTranslator + +P4::EBPF::ControlBodyTranslator @@ -21346,8 +21346,8 @@ Node1511->Node1515 - - + + @@ -21355,9 +21355,9 @@ Node1524 - -P4::EBPF::EBPFDigestPSAValue -Visitor + +P4::EBPF::EBPFDigestPSAValue +Visitor @@ -21365,8 +21365,8 @@ Node1511->Node1524 - - + + @@ -21374,9 +21374,9 @@ Node1525 - -P4::EBPF::EBPFTablePSAInitializer -CodeGen + +P4::EBPF::EBPFTablePSAInitializer +CodeGen @@ -21384,8 +21384,8 @@ Node1511->Node1525 - - + + @@ -21393,9 +21393,9 @@ Node1527 - -P4::EBPF::StateTranslation -Visitor + +P4::EBPF::StateTranslation +Visitor @@ -21403,8 +21403,8 @@ Node1511->Node1527 - - + + @@ -21412,8 +21412,8 @@ Node1530 - -P4::UBPF::OutHeaderSize + +P4::UBPF::OutHeaderSize @@ -21421,8 +21421,8 @@ Node1511->Node1530 - - + + @@ -21430,9 +21430,9 @@ Node1531 - -P4::UBPF::UBPFDeparserTranslation -Visitor + +P4::UBPF::UBPFDeparserTranslation +Visitor @@ -21440,8 +21440,8 @@ Node1511->Node1531 - - + + @@ -21449,9 +21449,9 @@ Node1513 - -P4::EBPF::ActionTranslation -VisitorPSA + +P4::EBPF::ActionTranslation +VisitorPSA @@ -21459,8 +21459,8 @@ Node1512->Node1513 - - + + @@ -21468,9 +21468,9 @@ Node1522 - -P4::TC::ActionTranslation -VisitorPNA + +P4::TC::ActionTranslation +VisitorPNA @@ -21478,8 +21478,8 @@ Node1512->Node1522 - - + + @@ -21487,8 +21487,8 @@ Node1514 - -P4::EBPF::ControlBodyTranslatorPSA + +P4::EBPF::ControlBodyTranslatorPSA @@ -21496,8 +21496,8 @@ Node1515->Node1514 - - + + @@ -21505,8 +21505,8 @@ Node1516 - -P4::EBPF::DeparserBodyTranslator + +P4::EBPF::DeparserBodyTranslator @@ -21514,8 +21514,8 @@ Node1515->Node1516 - - + + @@ -21523,9 +21523,9 @@ Node1518 - -P4::EBPF::DeparserPrepare -BufferTranslator + +P4::EBPF::DeparserPrepare +BufferTranslator @@ -21533,8 +21533,8 @@ Node1515->Node1518 - - + + @@ -21542,8 +21542,8 @@ Node1521 - -P4::TC::ControlBodyTranslatorPNA + +P4::TC::ControlBodyTranslatorPNA @@ -21551,8 +21551,8 @@ Node1515->Node1521 - - + + @@ -21560,9 +21560,9 @@ Node1523 - -P4::UBPF::UBPFControlBody -Translator + +P4::UBPF::UBPFControlBody +Translator @@ -21570,8 +21570,8 @@ Node1515->Node1523 - - + + @@ -21579,8 +21579,8 @@ Node1514->Node1513 - - + + @@ -21588,8 +21588,8 @@ Node1517 - -P4::EBPF::DeparserBodyTranslatorPSA + +P4::EBPF::DeparserBodyTranslatorPSA @@ -21597,8 +21597,8 @@ Node1516->Node1517 - - + + @@ -21606,9 +21606,9 @@ Node1519 - -P4::EBPF::DeparserHdrEmit -Translator + +P4::EBPF::DeparserHdrEmit +Translator @@ -21616,8 +21616,8 @@ Node1518->Node1519 - - + + @@ -21625,8 +21625,8 @@ Node1520 - -P4::TC::DeparserHdrEmitTranslatorPNA + +P4::TC::DeparserHdrEmitTranslatorPNA @@ -21634,8 +21634,8 @@ Node1518->Node1520 - - + + @@ -21643,8 +21643,8 @@ Node1521->Node1522 - - + + @@ -21652,9 +21652,9 @@ Node1526 - -P4::EBPF::EBPFTablePSATernary -KeyMaskGenerator + +P4::EBPF::EBPFTablePSATernary +KeyMaskGenerator @@ -21662,8 +21662,8 @@ Node1525->Node1526 - - + + @@ -21671,9 +21671,9 @@ Node1528 - -P4::EBPF::PsaStateTranslation -Visitor + +P4::EBPF::PsaStateTranslation +Visitor @@ -21681,8 +21681,8 @@ Node1527->Node1528 - - + + @@ -21690,9 +21690,9 @@ Node1529 - -P4::TC::PnaStateTranslation -Visitor + +P4::TC::PnaStateTranslation +Visitor @@ -21700,8 +21700,8 @@ Node1528->Node1529 - - + + @@ -21709,9 +21709,9 @@ Node1538 - -P4::EBPF::EBPFTablePSADirect -CounterPropertyVisitor + +P4::EBPF::EBPFTablePSADirect +CounterPropertyVisitor @@ -21719,8 +21719,8 @@ Node1537->Node1538 - - + + @@ -21728,9 +21728,9 @@ Node1539 - -P4::EBPF::EBPFTablePSADirect -MeterPropertyVisitor + +P4::EBPF::EBPFTablePSADirect +MeterPropertyVisitor @@ -21738,8 +21738,8 @@ Node1537->Node1539 - - + + @@ -21747,9 +21747,9 @@ Node1540 - -P4::EBPF::EBPFTablePSAImplementation -PropertyVisitor + +P4::EBPF::EBPFTablePSAImplementation +PropertyVisitor @@ -21757,8 +21757,8 @@ Node1537->Node1540 - - + + @@ -21766,9 +21766,9 @@ Node1541 - -P4::TC::EBPFTablePNADirect -CounterPropertyVisitor + +P4::TC::EBPFTablePNADirect +CounterPropertyVisitor @@ -21776,8 +21776,8 @@ Node1537->Node1541 - - + + @@ -21785,9 +21785,9 @@ Node1542 - -P4::TC::EBPFTablePNADirect -MeterPropertyVisitor + +P4::TC::EBPFTablePNADirect +MeterPropertyVisitor @@ -21795,8 +21795,8 @@ Node1537->Node1542 - - + + @@ -21804,8 +21804,8 @@ Node1559 - -P4::BMV2::InspectPnaProgram + +P4::BMV2::InspectPnaProgram @@ -21813,8 +21813,8 @@ Node1558->Node1559 - - + + @@ -21822,8 +21822,8 @@ Node1560 - -P4::InspectPsaProgram + +P4::InspectPsaProgram @@ -21831,8 +21831,8 @@ Node1558->Node1560 - - + + @@ -21840,9 +21840,9 @@ Node1565 - -P4::P4Tools::P4Testgen -::CmdStepper + +P4::P4Tools::P4Testgen +::CmdStepper @@ -21850,8 +21850,8 @@ Node1564->Node1565 - - + + @@ -21859,9 +21859,9 @@ Node1570 - -P4::P4Tools::P4Testgen -::ExprStepper + +P4::P4Tools::P4Testgen +::ExprStepper @@ -21869,8 +21869,8 @@ Node1564->Node1570 - - + + @@ -21878,9 +21878,9 @@ Node1566 - -P4::P4Tools::P4Testgen -::Bmv2::Bmv2V1ModelCmdStepper + +P4::P4Tools::P4Testgen +::Bmv2::Bmv2V1ModelCmdStepper @@ -21888,8 +21888,8 @@ Node1565->Node1566 - - + + @@ -21897,9 +21897,9 @@ Node1567 - -P4::P4Tools::P4Testgen -::EBPF::EBPFCmdStepper + +P4::P4Tools::P4Testgen +::EBPF::EBPFCmdStepper @@ -21907,8 +21907,8 @@ Node1565->Node1567 - - + + @@ -21916,9 +21916,9 @@ Node1568 - -P4::P4Tools::P4Testgen -::Pna::SharedPnaCmdStepper + +P4::P4Tools::P4Testgen +::Pna::SharedPnaCmdStepper @@ -21926,8 +21926,8 @@ Node1565->Node1568 - - + + @@ -21935,9 +21935,9 @@ Node1569 - -P4::P4Tools::P4Testgen -::Pna::PnaDpdkCmdStepper + +P4::P4Tools::P4Testgen +::Pna::PnaDpdkCmdStepper @@ -21945,8 +21945,8 @@ Node1568->Node1569 - - + + @@ -21954,9 +21954,9 @@ Node1571 - -P4::P4Tools::P4Testgen -::Bmv2::Bmv2V1ModelExprStepper + +P4::P4Tools::P4Testgen +::Bmv2::Bmv2V1ModelExprStepper @@ -21964,8 +21964,8 @@ Node1570->Node1571 - - + + @@ -21973,9 +21973,9 @@ Node1572 - -P4::P4Tools::P4Testgen -::EBPF::EBPFExprStepper + +P4::P4Tools::P4Testgen +::EBPF::EBPFExprStepper @@ -21983,8 +21983,8 @@ Node1570->Node1572 - - + + @@ -21992,9 +21992,9 @@ Node1573 - -P4::P4Tools::P4Testgen -::Pna::SharedPnaExprStepper + +P4::P4Tools::P4Testgen +::Pna::SharedPnaExprStepper @@ -22002,8 +22002,8 @@ Node1570->Node1573 - - + + @@ -22011,9 +22011,9 @@ Node1574 - -P4::P4Tools::P4Testgen -::Pna::PnaDpdkExprStepper + +P4::P4Tools::P4Testgen +::Pna::PnaDpdkExprStepper @@ -22021,8 +22021,8 @@ Node1573->Node1574 - - + + @@ -22030,8 +22030,8 @@ Node1593 - -P4::BMV2::ParsePnaArchitecture + +P4::BMV2::ParsePnaArchitecture @@ -22039,8 +22039,8 @@ Node1592->Node1593 - - + + @@ -22048,8 +22048,8 @@ Node1594 - -P4::ParsePsaArchitecture + +P4::ParsePsaArchitecture @@ -22057,8 +22057,8 @@ Node1592->Node1594 - - + + @@ -22066,8 +22066,8 @@ Node1619 - -P4::graphs::ControlGraphs + +P4::graphs::ControlGraphs @@ -22075,8 +22075,8 @@ Node1618->Node1619 - - + + @@ -22084,8 +22084,8 @@ Node1620 - -P4::graphs::Graph_visitor + +P4::graphs::Graph_visitor @@ -22093,8 +22093,8 @@ Node1618->Node1620 - - + + @@ -22102,8 +22102,8 @@ Node1621 - -P4::graphs::ParserGraphs + +P4::graphs::ParserGraphs @@ -22111,8 +22111,8 @@ Node1618->Node1621 - - + + @@ -22120,8 +22120,8 @@ Node1375 - -PhvUse + +PhvUse @@ -22129,8 +22129,8 @@ Node1374->Node1375 - - + + @@ -22138,8 +22138,8 @@ Node449 - -AddParserMatchDefs + +AddParserMatchDefs @@ -22147,8 +22147,8 @@ Node448->Node449 - - + + @@ -22156,9 +22156,9 @@ Node450 - -AllocateParserState -::ResetHeaderStackExtraction + +AllocateParserState +::ResetHeaderStackExtraction @@ -22166,8 +22166,8 @@ Node448->Node450 - - + + @@ -22175,8 +22175,8 @@ Node451 - -BFN::AddAdjustByteCount + +BFN::AddAdjustByteCount @@ -22184,8 +22184,8 @@ Node448->Node451 - - + + @@ -22193,9 +22193,9 @@ Node452 - -BFN::AddHardwareConstrained -Fields + +BFN::AddHardwareConstrained +Fields @@ -22203,8 +22203,8 @@ Node448->Node452 - - + + @@ -22212,8 +22212,8 @@ Node453 - -BFN::AddParserPad + +BFN::AddParserPad @@ -22221,8 +22221,8 @@ Node448->Node453 - - + + @@ -22230,8 +22230,8 @@ Node454 - -BFN::AddT2naMeta + +BFN::AddT2naMeta @@ -22239,8 +22239,8 @@ Node448->Node454 - - + + @@ -22248,9 +22248,9 @@ Node455 - -BFN::CheckDirectExternsOn -Tables + +BFN::CheckDirectExternsOn +Tables @@ -22258,8 +22258,8 @@ Node448->Node455 - - + + @@ -22267,8 +22267,8 @@ Node456 - -BFN::FlattenHeader + +BFN::FlattenHeader @@ -22276,8 +22276,8 @@ Node448->Node456 - - + + @@ -22285,8 +22285,8 @@ Node457 - -BFN::RemoveZeroVarbitExtract + +BFN::RemoveZeroVarbitExtract @@ -22294,8 +22294,8 @@ Node448->Node457 - - + + @@ -22303,8 +22303,8 @@ Node458 - -BFN::RewriteActionNames + +BFN::RewriteActionNames @@ -22312,8 +22312,8 @@ Node448->Node458 - - + + @@ -22321,8 +22321,8 @@ Node459 - -BFN::RewritePathToStartState + +BFN::RewritePathToStartState @@ -22330,8 +22330,8 @@ Node448->Node459 - - + + @@ -22339,8 +22339,8 @@ Node460 - -BFN::RewriteVarbitTypes + +BFN::RewriteVarbitTypes @@ -22348,8 +22348,8 @@ Node448->Node460 - - + + @@ -22357,8 +22357,8 @@ Node461 - -BFN::RewriteVarbitUses + +BFN::RewriteVarbitUses @@ -22366,8 +22366,8 @@ Node448->Node461 - - + + @@ -22375,8 +22375,8 @@ Node462 - -BFN::SetDefaultSize + +BFN::SetDefaultSize @@ -22384,8 +22384,8 @@ Node448->Node462 - - + + @@ -22393,8 +22393,8 @@ Node463 - -CollectHeaderStackInfo + +CollectHeaderStackInfo @@ -22402,8 +22402,8 @@ Node448->Node463 - - + + @@ -22411,8 +22411,8 @@ Node435 - -MauModifier + +MauModifier @@ -22420,8 +22420,8 @@ Node448->Node435 - - + + @@ -22429,8 +22429,8 @@ Node464 - -P4::CheckHeaderTypes + +P4::CheckHeaderTypes @@ -22438,8 +22438,8 @@ Node448->Node464 - - + + @@ -22447,8 +22447,8 @@ Node465 - -P4::CheckTableSize + +P4::CheckTableSize @@ -22456,8 +22456,8 @@ Node448->Node465 - - + + @@ -22465,8 +22465,8 @@ Node466 - -P4::DoSingleArgumentSelect + +P4::DoSingleArgumentSelect @@ -22474,8 +22474,8 @@ Node448->Node466 - - + + @@ -22483,8 +22483,8 @@ Node467 - -P4::HeaderTypeMaxLengthCalculator + +P4::HeaderTypeMaxLengthCalculator @@ -22492,17 +22492,17 @@ Node448->Node467 - - + + Node468 - - -P4::MoveToElseAfterBranch + + +P4::HierarchicalNames @@ -22510,18 +22510,17 @@ Node448->Node468 - - + + Node469 - - -P4::P4V1::ModifyParserFor -Checksum + + +P4::MoveToElseAfterBranch @@ -22529,17 +22528,18 @@ Node448->Node469 - - + + Node470 - - -P4::P4V1::RemoveBuiltins + + +P4::P4V1::ModifyParserFor +Checksum @@ -22547,17 +22547,17 @@ Node448->Node470 - - + + Node471 - - -P4::ParseAnnotations + + +P4::P4V1::RemoveBuiltins @@ -22565,36 +22565,35 @@ Node448->Node471 - - + + - - -Node476 - - -P4::SwitchAddDefault + + +Node472 + + +P4::ParseAnnotations - - -Node448->Node476 - - - + + +Node448->Node472 + + + Node477 - - -P4::TypeCheck::AssignAction -ArgTypes + + +P4::SwitchAddDefault @@ -22602,18 +22601,18 @@ Node448->Node477 - - + + Node478 - - -P4::TypeCheck::InferExpressions -BottomUp + + +P4::TypeCheck::AssignAction +ArgTypes @@ -22621,18 +22620,18 @@ Node448->Node478 - - + + Node479 - - -P4::TypeCheck::InferExpressions -TopDown + + +P4::TypeCheck::InferExpressions +BottomUp @@ -22640,18 +22639,18 @@ Node448->Node479 - - + + Node480 - - -Parde::Lowered::ClearLowered -ParserMatch + + +P4::TypeCheck::InferExpressions +TopDown @@ -22659,18 +22658,18 @@ Node448->Node480 - - + + Node481 - - -Parde::Lowered::MergeLowered -ParserStates::RightShiftCsumMask + + +Parde::Lowered::ClearLowered +ParserMatch @@ -22678,18 +22677,18 @@ Node448->Node481 - - + + Node482 - - -Parde::Lowered::MergeLowered -ParserStates::RightShiftPacketRVal + + +Parde::Lowered::MergeLowered +ParserStates::RightShiftCsumMask @@ -22697,18 +22696,18 @@ Node448->Node482 - - + + Node483 - - -Parde::Lowered::RightShift -CsumMask + + +Parde::Lowered::MergeLowered +ParserStates::RightShiftPacketRVal @@ -22716,18 +22715,18 @@ Node448->Node483 - - + + Node484 - - -Parde::Lowered::RightShift -PacketRVal + + +Parde::Lowered::RightShift +CsumMask @@ -22735,17 +22734,18 @@ Node448->Node484 - - + + Node485 - - -ResolveExtractSaves + + +Parde::Lowered::RightShift +PacketRVal @@ -22753,8 +22753,26 @@ Node448->Node485 - - + + + + + + + +Node486 + + +ResolveExtractSaves + + + + + +Node448->Node486 + + + @@ -22762,8 +22780,8 @@ Node435->Node434 - - + + @@ -22771,8 +22789,8 @@ Node436 - -AddEmptyTableSeqs + +AddEmptyTableSeqs @@ -22780,8 +22798,8 @@ Node435->Node436 - - + + @@ -22789,8 +22807,8 @@ Node437 - -AdjustIXBarExpression + +AdjustIXBarExpression @@ -22798,8 +22816,8 @@ Node435->Node437 - - + + @@ -22807,9 +22825,9 @@ Node438 - -AssignCounterLRTValues -::ComputeLRT + +AssignCounterLRTValues +::ComputeLRT @@ -22817,8 +22835,8 @@ Node435->Node438 - - + + @@ -22826,8 +22844,8 @@ Node439 - -BFN::SetupActionProperties + +BFN::SetupActionProperties @@ -22835,8 +22853,8 @@ Node435->Node439 - - + + @@ -22844,8 +22862,8 @@ Node440 - -CheckStatefulAlu + +CheckStatefulAlu @@ -22853,8 +22871,8 @@ Node435->Node440 - - + + @@ -22862,8 +22880,8 @@ Node441 - -GatewayRangeMatch + +GatewayRangeMatch @@ -22871,8 +22889,8 @@ Node435->Node441 - - + + @@ -22880,8 +22898,8 @@ Node442 - -IXBarVerify + +IXBarVerify @@ -22889,8 +22907,8 @@ Node435->Node442 - - + + @@ -22898,8 +22916,8 @@ Node443 - -NullifyAllStatefulCallPrim + +NullifyAllStatefulCallPrim @@ -22907,8 +22925,8 @@ Node435->Node443 - - + + @@ -22916,8 +22934,8 @@ Node444 - -RewriteReductionOr + +RewriteReductionOr @@ -22925,8 +22943,8 @@ Node435->Node444 - - + + @@ -22934,8 +22952,8 @@ Node445 - -StaticEntriesConstProp + +StaticEntriesConstProp @@ -22943,8 +22961,8 @@ Node435->Node445 - - + + @@ -22952,8 +22970,8 @@ Node446 - -TableFindSeqDependencies + +TableFindSeqDependencies @@ -22961,8 +22979,8 @@ Node435->Node446 - - + + @@ -22970,8 +22988,8 @@ Node447 - -TernaryMatchKeyConstraints + +TernaryMatchKeyConstraints @@ -22979,135 +22997,135 @@ Node435->Node447 - - - - - - - -Node472 - - -BFN::ParseAnnotations - - - - - -Node471->Node472 - - - + + Node473 - - -P4::BMV2::ParseAnnotations + + +BFN::ParseAnnotations - - -Node471->Node473 - - - + + +Node472->Node473 + + + Node474 - - -P4::ControlPlaneAPI -::ParseP4RuntimeAnnotations + + +P4::BMV2::ParseAnnotations - - -Node471->Node474 - - - + + +Node472->Node474 + + + Node475 - - -P4::TC::ParseTCAnnotations + + +P4::ControlPlaneAPI +::ParseP4RuntimeAnnotations + + + + + +Node472->Node475 + + + + + + + + +Node476 + + +P4::TC::ParseTCAnnotations - - -Node471->Node475 - - - + + +Node472->Node476 + + + - - -Node501->Node502 - - - + + +Node502->Node503 + + + - - -Node501->Node723 - - - + + +Node502->Node724 + + + - - -Node501->Node745 - - - + + +Node502->Node746 + + + - - -Node501->Node835 - - - + + +Node502->Node835 + + + - - -Node501->Node26 - - - + + +Node502->Node26 + + + - - -Node501->Node915 - - - + + +Node502->Node915 + + + @@ -23115,17 +23133,17 @@ Node831 - -P4::ReplaceHeaders + +P4::ReplaceHeaders - - -Node501->Node831 - - - + + +Node502->Node831 + + + @@ -23133,17 +23151,17 @@ Node832 - -P4::ReplaceIndexRefs + +P4::ReplaceIndexRefs - - -Node501->Node832 - - - + + +Node502->Node832 + + + @@ -23151,17 +23169,17 @@ Node833 - -P4::ReplaceLogMsg + +P4::ReplaceLogMsg - - -Node501->Node833 - - - + + +Node502->Node833 + + + @@ -23169,3479 +23187,3461 @@ Node846 - -P4::TypeCheck::MakeImplicit -CastsExplicit - - - - - -Node501->Node846 - - - - - - - - -Node506->Node504 - - - + +P4::TypeCheck::MakeImplicit +CastsExplicit - - -Node506->Node507 - - - + + +Node502->Node846 + + + - - -Node506->Node509 - - - + + +Node507->Node505 + + + - - -Node506->Node511 - - - + + +Node507->Node508 + + + - - -Node506->Node657 - - - + + +Node507->Node510 + + + - - -Node506->Node666 - - - + + +Node507->Node512 + + + - - -Node506->Node670 - - - + + +Node507->Node658 + + + - - -Node506->Node709 - - - + + +Node507->Node667 + + + - - -Node506->Node713 - - - + + +Node507->Node671 + + + - - -Node506->Node718 - - - + + +Node507->Node710 + + + - - -Node506->Node719 - - - + + +Node507->Node714 + + + - - -Node506->Node723 - - - + + +Node507->Node719 + + + - - -Node506->Node727 - - - + + +Node507->Node720 + + + - - -Node506->Node730 - - - + + +Node507->Node724 + + + - - -Node506->Node732 - - - + + +Node507->Node728 + + + - - -Node506->Node739 - - - + + +Node507->Node731 + + + - - -Node506->Node743 - - - + + +Node507->Node733 + + + - - -Node506->Node745 - - - + + +Node507->Node740 + + + - - -Node506->Node750 - - - + + +Node507->Node744 + + + - - -Node506->Node753 - - - + + +Node507->Node746 + + + - - -Node506->Node755 - - - + + +Node507->Node751 + + + - - -Node506->Node760 - - - + + +Node507->Node754 + + + - - -Node506->Node761 - - - + + +Node507->Node756 + + + - - -Node506->Node769 - - - + + +Node507->Node761 + + + - - -Node506->Node770 - - - + + +Node507->Node762 + + + - - -Node506->Node772 - - - + + +Node507->Node769 + + + - - -Node506->Node776 - - - + + +Node507->Node770 + + + - - -Node506->Node821 - - - + + +Node507->Node772 + + + - - -Node506->Node825 - - - + + +Node507->Node776 + + + - - -Node506->Node827 - - - + + +Node507->Node821 + + + - - -Node506->Node830 - - - + + +Node507->Node825 + + + - - -Node506->Node835 - - - + + +Node507->Node827 + + + - - -Node506->Node847 - - - + + +Node507->Node830 + + + - - -Node506->Node855 - - - + + +Node507->Node835 + + + - - -Node506->Node831 - - - + + +Node507->Node847 + + + - - -Node506->Node832 - - - + + +Node507->Node855 + + + - - -Node506->Node833 - - - + + +Node507->Node831 + + + - - -Node506->Node846 - - - + + +Node507->Node832 + + + - - -Node512 - - -AbstractElimUnusedInstructions + + +Node507->Node833 + + + - - -Node506->Node512 - - - + + +Node507->Node846 + + + - - -Node515 - - -AddDarkInitialization + + +Node513 + + +AbstractElimUnusedInstructions - - -Node506->Node515 - - - + + +Node507->Node513 + + + Node516 - - -AddInitTable + + +AddDarkInitialization - - -Node506->Node516 - - - + + +Node507->Node516 + + + Node517 - - -AddMetadataInitialization + + +AddInitTable - - -Node506->Node517 - - - + + +Node507->Node517 + + + Node518 - - -AddMetadataPOV + + +AddMetadataInitialization - - -Node506->Node518 - - - + + +Node507->Node518 + + + Node519 - - -AddValidityBitSets + + +AddMetadataPOV - - -Node506->Node519 - - - + + +Node507->Node519 + + + Node520 - - -BFN::AddMetadataFields + + +AddValidityBitSets - - -Node506->Node520 - - - + + +Node507->Node520 + + + Node521 - - -BFN::AddPaddingFields + + +BFN::AddMetadataFields - - -Node506->Node521 - - - + + +Node507->Node521 + + + Node522 - - -BFN::AnnotateVarbitExtract -States + + +BFN::AddPaddingFields - - -Node506->Node522 - - - + + +Node507->Node522 + + + Node523 - - -BFN::BackendConstantFolding + + +BFN::AnnotateVarbitExtract +States - - -Node506->Node523 - - - + + +Node507->Node523 + + + Node524 - - -BFN::BackendStrengthReduction + + +BFN::BackendConstantFolding - - -Node506->Node524 - - - + + +Node507->Node524 + + + Node525 - - -BFN::CloneConstants + + +BFN::BackendStrengthReduction - - -Node506->Node525 - - - + + +Node507->Node525 + + + Node526 - - -BFN::ConvertPhase0Assign -ToExtract + + +BFN::CloneConstants - - -Node506->Node526 - - - + + +Node507->Node526 + + + Node527 - - -BFN::ConvertSizeOfToConstant + + +BFN::ConvertPhase0Assign +ToExtract - - -Node506->Node527 - - - + + +Node507->Node527 + + + Node528 - - -BFN::DoAnnotateWithInHash + + +BFN::ConvertSizeOfToConstant - - -Node506->Node528 - - - + + +Node507->Node528 + + + Node529 - - -BFN::DoInitializeMirrorIOSelect + + +BFN::DoAnnotateWithInHash - - -Node506->Node529 - - - + + +Node507->Node529 + + + Node530 - - -BFN::DoRewriteControlAnd -ParserBlocks + + +BFN::DoInitializeMirrorIOSelect - - -Node506->Node530 - - - + + +Node507->Node530 + + + Node531 - - -BFN::DropPacketWithMirror -Engine_ + + +BFN::DoRewriteControlAnd +ParserBlocks - - -Node506->Node531 - - - + + +Node507->Node531 + + + Node532 - - -BFN::ElimUnusedMetadataStates + + +BFN::DropPacketWithMirror +Engine_ - - -Node506->Node532 - - - + + +Node507->Node532 + + + Node533 - - -BFN::EliminateHeaders + + +BFN::ElimUnusedMetadataStates - - -Node506->Node533 - - - + + +Node507->Node533 + + + Node534 - - -BFN::EvaluateForVar -::SubstituteVar + + +BFN::EliminateHeaders - - -Node506->Node534 - - - + + +Node507->Node534 + + + Node535 - - -BFN::FindBridgeMetadataAssignment + + +BFN::EvaluateForVar +::SubstituteVar - - -Node506->Node535 - - - + + +Node507->Node535 + + + Node536 - - -BFN::GenerateTofinoProgram + + +BFN::FindBridgeMetadataAssignment - - -Node506->Node536 - - - + + +Node507->Node536 + + + Node537 - - -BFN::IgnoreKeyElementTransform + + +BFN::GenerateTofinoProgram - - -Node506->Node537 - - - + + +Node507->Node537 + + + - - -Node544 - - -BFN::InjectTmpVar:: -DoInject + + +Node538 + + +BFN::IgnoreKeyElementTransform - - -Node506->Node544 - - - + + +Node507->Node538 + + + Node545 - - -BFN::InsertHashStructExpression + + +BFN::InjectTmpVar:: +DoInject - - -Node506->Node545 - - - + + +Node507->Node545 + + + Node546 - - -BFN::LoweringType + + +BFN::InsertHashStructExpression - - -Node506->Node546 - - - + + +Node507->Node546 + + + Node547 - - -BFN::MoveBridgeMetadataAssignment + + +BFN::LoweringType - - -Node506->Node547 - - - + + +Node507->Node547 + + + Node548 - - -BFN::OptionalToTernaryMatch -TypeConverter + + +BFN::MoveBridgeMetadataAssignment - - -Node506->Node548 - - - + + +Node507->Node548 + + + Node549 - - -BFN::PSA::AddParserStates + + +BFN::OptionalToTernaryMatch +TypeConverter - - -Node506->Node549 - - - + + +Node507->Node549 + + + Node550 - - -BFN::PSA::ControlConverter + + +BFN::PSA::AddParserStates - - -Node506->Node550 - - - + + +Node507->Node550 + + + - - -Node555 - - -BFN::PSA::CreateErrorStates + + +Node551 + + +BFN::PSA::ControlConverter - - -Node506->Node555 - - - + + +Node507->Node551 + + + Node556 - - -BFN::PSA::ExpressionConverter + + +BFN::PSA::CreateErrorStates - - -Node506->Node556 - - - + + +Node507->Node556 + + + - - -Node559 - - -BFN::PSA::ExternConverter + + +Node557 + + +BFN::PSA::ExpressionConverter - - -Node506->Node559 - - - + + +Node507->Node557 + + + - - -Node563 - - -BFN::PSA::MeterColorType -To8Bits + + +Node560 + + +BFN::PSA::ExternConverter - - -Node506->Node563 - - - + + +Node507->Node560 + + + Node564 - - -BFN::PSA::MoveAssignment + + +BFN::PSA::MeterColorType +To8Bits - - -Node506->Node564 - - - + + +Node507->Node564 + + + Node565 - - -BFN::PSA::PacketPath + + +BFN::PSA::MoveAssignment - - -Node506->Node565 - - - + + +Node507->Node565 + + + Node566 - - -BFN::PSA::ParserConverter + + +BFN::PSA::PacketPath - - -Node506->Node566 - - - + + +Node507->Node566 + + + - - -Node569 - - -BFN::PSA::StatementConverter + + +Node567 + + +BFN::PSA::ParserConverter - - -Node506->Node569 - - - + + +Node507->Node567 + + + Node570 - - -BFN::PSA::TranslatePacket -PathIfStatement + + +BFN::PSA::StatementConverter - - -Node506->Node570 - - - + + +Node507->Node570 + + + Node571 - - -BFN::PSA::TypeNameConverter + + +BFN::PSA::TranslatePacket +PathIfStatement - - -Node506->Node571 - - - + + +Node507->Node571 + + + Node572 - - -BFN::PingPongGeneration -::ApplyMCSChanger + + +BFN::PSA::TypeNameConverter - - -Node506->Node572 - - - + + +Node507->Node572 + + + Node573 - - -BFN::PingPongGeneration -::DeclarationChanger + + +BFN::PingPongGeneration +::ApplyMCSChanger - - -Node506->Node573 - - - + + +Node507->Node573 + + + - - -Node577 - - -BFN::PsaBridgeIngressToEgress + + +Node574 + + +BFN::PingPongGeneration +::DeclarationChanger - - -Node506->Node577 - - - + + +Node507->Node574 + + + Node578 - - -BFN::RemoveExternMethodCalls -ExcludedByAnnotation + + +BFN::PsaBridgeIngressToEgress - - -Node506->Node578 - - - + + +Node507->Node578 + + + Node579 - - -BFN::RemoveSetMetadata + + +BFN::RemoveExternMethodCalls +ExcludedByAnnotation - - -Node506->Node579 - - - + + +Node507->Node579 + + + Node580 - - -BFN::RenameP4StartState + + +BFN::RemoveSetMetadata - - -Node506->Node580 - - - + + +Node507->Node580 + + + Node581 - - -BFN::ResetHeaderStackIndex + + +BFN::RenameP4StartState - - -Node506->Node581 - - - + + +Node507->Node581 + + + Node582 - - -BFN::ResolveHeaderStackIndex + + +BFN::ResetHeaderStackIndex - - -Node506->Node582 - - - + + +Node507->Node582 + + + Node583 - - -BFN::RestoreParams + + +BFN::ResolveHeaderStackIndex - - -Node506->Node583 - - - + + +Node507->Node583 + + + Node584 - - -BFN::RewriteActionSelector + + +BFN::RestoreParams - - -Node506->Node584 - - - + + +Node507->Node584 + + + Node585 - - -BFN::RewriteHeader + + +BFN::RewriteActionSelector - - -Node506->Node585 - - - + + +Node507->Node585 + + + Node586 - - -BFN::RewriteParserChecksums + + +BFN::RewriteHeader - - -Node506->Node586 - - - + + +Node507->Node586 + + + Node587 - - -BFN::RewriteParserStatements + + +BFN::RewriteParserChecksums - - -Node506->Node587 - - - + + +Node507->Node587 + + + Node588 - - -BFN::RewriteParserVerify + + +BFN::RewriteParserStatements - - -Node506->Node588 - - - + + +Node507->Node588 + + + Node589 - - -BFN::RewriteTypeArguments + + +BFN::RewriteParserVerify - - -Node506->Node589 - - - + + +Node507->Node589 + + + Node590 - - -BFN::SearchAndReplaceExpr + + +BFN::RewriteTypeArguments - - -Node506->Node590 - - - + + +Node507->Node590 + + + Node591 - - -BFN::SplitAlpm + + +BFN::SearchAndReplaceExpr - - -Node506->Node591 - - - + + +Node507->Node591 + + + Node592 - - -BFN::TransformResubmitHeaders + + +BFN::SplitAlpm - - -Node506->Node592 - - - + + +Node507->Node592 + + + Node593 - - -BFN::UpdatePhase0Header + + +BFN::TransformResubmitHeaders - - -Node506->Node593 - - - + + +Node507->Node593 + + + Node594 - - -BFN::UpdatePhase0NodeInParser + + +BFN::UpdatePhase0Header - - -Node506->Node594 - - - + + +Node507->Node594 + + + Node595 - - -BFN::UpdatePovBits + + +BFN::UpdatePhase0NodeInParser - - -Node506->Node595 - - - + + +Node507->Node595 + + + Node596 - - -BFN::V1::ControlConverter + + +BFN::UpdatePovBits - - -Node506->Node596 - - - + + +Node507->Node596 + + + - - -Node601 - - -BFN::V1::ExpressionConverter + + +Node597 + + +BFN::V1::ControlConverter - - -Node506->Node601 - - - + + +Node507->Node597 + + + - - -Node604 - - -BFN::V1::ExternConverter + + +Node602 + + +BFN::V1::ExpressionConverter - - -Node506->Node604 - - - + + +Node507->Node602 + + + - - -Node607 - - -BFN::V1::FixupBackwardCompatibility + + +Node605 + + +BFN::V1::ExternConverter - - -Node506->Node607 - - - + + +Node507->Node605 + + + Node608 - - -BFN::V1::InsertChecksumDeposit + + +BFN::V1::FixupBackwardCompatibility - - -Node506->Node608 - - - + + +Node507->Node608 + + + Node609 - - -BFN::V1::InsertChecksumError -::InsertBeforeAccept + + +BFN::V1::InsertChecksumDeposit - - -Node506->Node609 - - - + + +Node507->Node609 + + + Node610 - - -BFN::V1::InsertChecksumError -::InsertEndStates + + +BFN::V1::InsertChecksumError +::InsertBeforeAccept - - -Node506->Node610 - - - + + +Node507->Node610 + + + Node611 - - -BFN::V1::LoweringType + + +BFN::V1::InsertChecksumError +::InsertEndStates - - -Node506->Node611 - - - + + +Node507->Node611 + + + Node612 - - -BFN::V1::NormalizeProgram + + +BFN::V1::LoweringType - - -Node506->Node612 - - - + + +Node507->Node612 + + + Node613 - - -BFN::V1::ParserConverter + + +BFN::V1::NormalizeProgram - - -Node506->Node613 - - - + + +Node507->Node613 + + + - - -Node616 - - -BFN::V1::ParserCounterSelect -CaseConverter + + +Node614 + + +BFN::V1::ParserConverter - - -Node506->Node616 - - - + + +Node507->Node614 + + + Node617 - - -BFN::V1::ParserCounterSelect -CaseConverter::RewriteSelectCase + + +BFN::V1::ParserCounterSelect +CaseConverter - - -Node506->Node617 - - - + + +Node507->Node617 + + + Node618 - - -BFN::V1::ParserCounterSelect -ExprConverter + + +BFN::V1::ParserCounterSelect +CaseConverter::RewriteSelectCase - - -Node506->Node618 - - - + + +Node507->Node618 + + + Node619 - - -BFN::V1::RemoveNodesWith -NoMapping + + +BFN::V1::ParserCounterSelect +ExprConverter - - -Node506->Node619 - - - + + +Node507->Node619 + + + Node620 - - -BFN::V1::StatementConverter + + +BFN::V1::RemoveNodesWith +NoMapping - - -Node506->Node620 - - - + + +Node507->Node620 + + + - - -Node623 - - -DisableAutoInitMetadata + + +Node621 + + +BFN::V1::StatementConverter - - -Node506->Node623 - - - + + +Node507->Node621 + + + Node624 - - -DoInstructionSelection -::SplitInstructions + + +DisableAutoInitMetadata - - -Node506->Node624 - - - + + +Node507->Node624 + + + Node625 - - -DoRemoveActionTables + + +DoInstructionSelection +::SplitInstructions - - -Node506->Node625 - - - + + +Node507->Node625 + + + Node626 - - -GatewayRangeMatch:: -SetupRanges + + +DoRemoveActionTables - - -Node506->Node626 - - - + + +Node507->Node626 + + + Node627 - - -ImplementDeparserZero + + +GatewayRangeMatch:: +SetupRanges - - -Node506->Node627 - - - + + +Node507->Node627 + + + Node628 - - -MarkDarkInitTables + + +ImplementDeparserZero - - -Node506->Node628 - - - + + +Node507->Node628 + + + Node629 - - -MauTransform + + +MarkDarkInitTables - - -Node506->Node629 - - - + + +Node507->Node629 + + + - - -Node658 - - -P4::ApplyTypesToExpressions + + +Node630 + + +MauTransform - - -Node506->Node658 - - - + + +Node507->Node630 + + + Node659 - - -P4::BMV2::ArithmeticFixup + + +P4::ApplyTypesToExpressions - - -Node506->Node659 - - - + + +Node507->Node659 + + + Node660 - - -P4::BMV2::LowerExpressions + + +P4::BMV2::ArithmeticFixup - - -Node506->Node660 - - - + + +Node507->Node660 + + + Node661 - - -P4::BMV2::RenameUserMetadata + + +P4::BMV2::LowerExpressions - - -Node506->Node661 - - - + + +Node507->Node661 + + + Node662 - - -P4::CastBooleanTableKeys + + +P4::BMV2::RenameUserMetadata - - -Node506->Node662 - - - + + +Node507->Node662 + + + Node663 - - -P4::CloneConstants + + +P4::CastBooleanTableKeys - - -Node506->Node663 - - - + + +Node507->Node663 + + + Node664 - - -P4::CloneExpressions + + +P4::CloneConstants - - -Node506->Node664 - - - + + +Node507->Node664 + + + Node665 - - -P4::CloneVariableDeclarations + + +P4::CloneExpressions - - -Node506->Node665 - - - + + +Node507->Node665 + + + - - -Node667 - - -P4::CopySrcInfo + + +Node666 + + +P4::CloneVariableDeclarations - - -Node506->Node667 - - - + + +Node507->Node666 + + + Node668 - - -P4::CreateBuiltins + + +P4::CopySrcInfo - - -Node506->Node668 - - - + + +Node507->Node668 + + + Node669 - - -P4::CreateSpecializedTypes + + +P4::CreateBuiltins - - -Node506->Node669 - - - + + +Node507->Node669 + + + - - -Node671 - - -P4::DPDK::AddFieldsToPseudo -Header + + +Node670 + + +P4::CreateSpecializedTypes - - -Node506->Node671 - - - + + +Node507->Node670 + + + Node672 - - -P4::DPDK::AlignHdrMetaField + + +P4::DPDK::AddFieldsToPseudo +Header - - -Node506->Node672 - - - + + +Node507->Node672 + + + Node673 - - -P4::DPDK::BreakLogicalExpression -Parenthesis + + +P4::DPDK::AlignHdrMetaField - - -Node506->Node673 - - - + + +Node507->Node673 + + + Node674 - - -P4::DPDK::CollectLocalVariables + + +P4::DPDK::BreakLogicalExpression +Parenthesis - - -Node506->Node674 - - - + + +Node507->Node674 + + + Node675 - - -P4::DPDK::CollectStructLocal -Variables + + +P4::DPDK::CollectLocalVariables - - -Node506->Node675 - - - + + +Node507->Node675 + + + Node676 - - -P4::DPDK::ConvertBinaryOperation -To2Params + + +P4::DPDK::CollectStructLocal +Variables - - -Node506->Node676 - - - + + +Node507->Node676 + + + Node677 - - -P4::DPDK::ConvertLookahead -::Replace + + +P4::DPDK::ConvertBinaryOperation +To2Params - - -Node506->Node677 - - - + + +Node507->Node677 + + + Node678 - - -P4::DPDK::ConvertToDpdkArch + + +P4::DPDK::ConvertLookahead +::Replace - - -Node506->Node678 - - - + + +Node507->Node678 + + + Node679 - - -P4::DPDK::ConvertToDpdkProgram + + +P4::DPDK::ConvertToDpdkArch - - -Node506->Node679 - - - + + +Node507->Node679 + + + Node680 - - -P4::DPDK::CopyPropagation -AndElimination + + +P4::DPDK::ConvertToDpdkProgram - - -Node506->Node680 - - - + + +Node507->Node680 + + + Node681 - - -P4::DPDK::DirectionToRegRead + + +P4::DPDK::CopyPropagation +AndElimination - - -Node506->Node681 - - - + + +Node507->Node681 + + + Node682 - - -P4::DPDK::DismantleMuxExpressions + + +P4::DPDK::DirectionToRegRead - - -Node506->Node682 - - - + + +Node507->Node682 + + + Node683 - - -P4::DPDK::DpdkAddPseudoHeaderDecl + + +P4::DPDK::DismantleMuxExpressions - - -Node506->Node683 - - - + + +Node507->Node683 + + + Node684 - - -P4::DPDK::ElimHeaderCopy + + +P4::DPDK::DpdkAddPseudoHeaderDecl - - -Node506->Node684 - - - + + +Node507->Node684 + + + Node685 - - -P4::DPDK::ElimUnusedActions + + +P4::DPDK::ElimHeaderCopy - - -Node506->Node685 - - - + + +Node507->Node685 + + + Node686 - - -P4::DPDK::IfStatementUnroll + + +P4::DPDK::ElimUnusedActions - - -Node506->Node686 - - - + + +Node507->Node686 + + + Node687 - - -P4::DPDK::InjectFixedMetadata -Field + + +P4::DPDK::IfStatementUnroll - - -Node506->Node687 - - - + + +Node507->Node687 + + + Node688 - - -P4::DPDK::InjectInternet -ChecksumIntermediateValue + + +P4::DPDK::InjectFixedMetadata +Field - - -Node506->Node688 - - - + + +Node507->Node688 + + + Node689 - - -P4::DPDK::InjectJumboStruct + + +P4::DPDK::InjectInternet +ChecksumIntermediateValue - - -Node506->Node689 - - - + + +Node507->Node689 + + + Node690 - - -P4::DPDK::InsertReqDeclFor -IPSec + + +P4::DPDK::InjectJumboStruct - - -Node506->Node690 - - - + + +Node507->Node690 + + + Node691 - - -P4::DPDK::MoveCollectedStruct -LocalVariableToMetadata + + +P4::DPDK::InsertReqDeclFor +IPSec - - -Node506->Node691 - - - + + +Node507->Node691 + + + Node692 - - -P4::DPDK::MoveNonHeaderFields -ToPseudoHeader + + +P4::DPDK::MoveCollectedStruct +LocalVariableToMetadata - - -Node506->Node692 - - - + + +Node507->Node692 + + + Node693 - - -P4::DPDK::PrependPDotToActionArgs + + +P4::DPDK::MoveNonHeaderFields +ToPseudoHeader - - -Node506->Node693 - - - + + +Node507->Node693 + + + Node694 - - -P4::DPDK::PrependPassRecircId + + +P4::DPDK::PrependPDotToActionArgs - - -Node506->Node694 - - - + + +Node507->Node694 + + + Node695 - - -P4::DPDK::RemoveConsecutive -JmpAndLabel + + +P4::DPDK::PrependPassRecircId - - -Node506->Node695 - - - + + +Node507->Node695 + + + Node696 - - -P4::DPDK::RemoveLabelAfter -Label + + +P4::DPDK::RemoveConsecutive +JmpAndLabel - - -Node506->Node696 - - - + + +Node507->Node696 + + + Node697 - - -P4::DPDK::RemoveRedundant -Label + + +P4::DPDK::RemoveLabelAfter +Label - - -Node506->Node697 - - - + + +Node507->Node697 + + + Node698 - - -P4::DPDK::RemoveUnusedMetadata -Fields + + +P4::DPDK::RemoveRedundant +Label - - -Node506->Node698 - - - + + +Node507->Node698 + + + Node699 - - -P4::DPDK::ReplaceHdrMeta -Field + + +P4::DPDK::RemoveUnusedMetadata +Fields - - -Node506->Node699 - - - + + +Node507->Node699 + + + Node700 - - -P4::DPDK::ShortenTokenLength + + +P4::DPDK::ReplaceHdrMeta +Field - - -Node506->Node700 - - - + + +Node507->Node700 + + + Node701 - - -P4::DPDK::SplitP4TableCommon + + +P4::DPDK::ShortenTokenLength - - -Node506->Node701 - - - + + +Node507->Node701 + + + - - -Node704 - - -P4::DPDK::StatementUnroll + + +Node702 + + +P4::DPDK::SplitP4TableCommon - - -Node506->Node704 - - - + + +Node507->Node702 + + + Node705 - - -P4::DPDK::SwapSimpleExpression -ToFrontOfLogicalExpression + + +P4::DPDK::StatementUnroll - - -Node506->Node705 - - - + + +Node507->Node705 + + + Node706 - - -P4::DPDK::ThreadJumps + + +P4::DPDK::SwapSimpleExpression +ToFrontOfLogicalExpression - - -Node506->Node706 - - - + + +Node507->Node706 + + + Node707 - - -P4::DPDK::UpdateActionFor -Switch + + +P4::DPDK::ThreadJumps - - -Node506->Node707 - - - + + +Node507->Node707 + + + Node708 - - -P4::DoBindTypeVariables + + +P4::DPDK::UpdateActionFor +Switch - - -Node506->Node708 - - - + + +Node507->Node708 + + + - - -Node710 - - -P4::DoConvertEnums + + +Node709 + + +P4::DoBindTypeVariables - - -Node506->Node710 - - - + + +Node507->Node709 + + + Node711 - - -P4::DoConvertErrors + + +P4::DoConvertEnums - - -Node506->Node711 - - - + + +Node507->Node711 + + + Node712 - - -P4::DoCopyStructures + + +P4::DoConvertErrors - - -Node506->Node712 - - - + + +Node507->Node712 + + + - - -Node714 - - -P4::DoDefaultValues + + +Node713 + + +P4::DoCopyStructures - - -Node506->Node714 - - - + + +Node507->Node713 + + + Node715 - - -P4::DoEliminateInvalidHeaders + + +P4::DoDefaultValues - - -Node506->Node715 - - - + + +Node507->Node715 + + + Node716 - - -P4::DoEliminateSerEnums + + +P4::DoEliminateInvalidHeaders - - -Node506->Node716 - - - + + +Node507->Node716 + + + Node717 - - -P4::DoEliminateSwitch + + +P4::DoEliminateSerEnums - - -Node506->Node717 - - - + + +Node507->Node717 + + + - - -Node720 - - -P4::DoFlattenHeaderUnion + + +Node718 + + +P4::DoEliminateSwitch - - -Node506->Node720 - - - + + +Node507->Node718 + + + - - -Node722 - - -P4::DoGlobalCopyPropagation + + +Node721 + + +P4::DoFlattenHeaderUnion - - -Node506->Node722 - - - + + +Node507->Node721 + + + - - -Node724 - - -P4::DoLocalCopyPropagation -::ElimDead + + +Node723 + + +P4::DoGlobalCopyPropagation - - -Node506->Node724 - - - + + +Node507->Node723 + + + Node725 - - -P4::DoLocalCopyPropagation -::RewriteTableKeys + + +P4::DoLocalCopyPropagation +::ElimDead - - -Node506->Node725 - - - + + +Node507->Node725 + + + Node726 - - -P4::DoMoveActionsToTables + + +P4::DoLocalCopyPropagation +::RewriteTableKeys - - -Node506->Node726 - - - + + +Node507->Node726 + + + - - -Node728 - - -P4::DoRemoveActionParameters + + +Node727 + + +P4::DoMoveActionsToTables - - -Node506->Node728 - - - + + +Node507->Node727 + + + - - -Node731 - - -P4::DoRemoveLeftSlices + + +Node729 + + +P4::DoRemoveActionParameters - - -Node506->Node731 - - - + + +Node507->Node729 + + + - - -Node733 - - -P4::DoRemoveParserControlFlow + + +Node732 + + +P4::DoRemoveLeftSlices - - -Node506->Node733 - - - + + +Node507->Node732 + + + Node734 - - -P4::DoRemoveReturns + + +P4::DoRemoveParserControlFlow - - -Node506->Node734 - - - + + +Node507->Node734 + + + - - -Node736 - - -P4::DoRemoveSelectBooleans + + +Node735 + + +P4::DoRemoveReturns - - -Node506->Node736 - - - + + +Node507->Node735 + + + Node737 - - -P4::DoReplaceNewtype + + +P4::DoRemoveSelectBooleans - - -Node506->Node737 - - - + + +Node507->Node737 + + + Node738 - - -P4::DoReplaceTuples + + +P4::DoReplaceNewtype - - -Node506->Node738 - - - + + +Node507->Node738 + + + - - -Node740 - - -P4::DoResetHeaders + + +Node739 + + +P4::DoReplaceTuples - - -Node506->Node740 - - - + + +Node507->Node739 + + + Node741 - - -P4::DoSetHeaders + + +P4::DoResetHeaders - - -Node506->Node741 - - - + + +Node507->Node741 + + + Node742 - - -P4::DoSimplifyComplexCondition + + +P4::DoSetHeaders - - -Node506->Node742 - - - + + +Node507->Node742 + + + - - -Node744 - - -P4::DoSimplifyDefUse + + +Node743 + + +P4::DoSimplifyComplexCondition - - -Node506->Node744 - - - + + +Node507->Node743 + + + - - -Node746 - - -P4::DoSimplifyKey + + +Node745 + + +P4::DoSimplifyDefUse - - -Node506->Node746 - - - + + +Node507->Node745 + + + Node747 - - -P4::DoSimplifyNestedIf + + +P4::DoSimplifyKey - - -Node506->Node747 - - - + + +Node507->Node747 + + + Node748 - - -P4::DoSimplifySelectCases + + +P4::DoSimplifyNestedIf - - -Node506->Node748 - - - + + +Node507->Node748 + + + Node749 - - -P4::DoSimplifySwitch + + +P4::DoSimplifySelectCases - - -Node506->Node749 - - - + + +Node507->Node749 + + + - - -Node751 - - -P4::DoStrengthReduction + + +Node750 + + +P4::DoSimplifySwitch - - -Node506->Node751 - - - + + +Node507->Node750 + + + Node752 - - -P4::DoSynthesizeActions + + +P4::DoStrengthReduction - - -Node506->Node752 - - - + + +Node507->Node752 + + + - - -Node754 - - -P4::DoTableKeyNames + + +Node753 + + +P4::DoSynthesizeActions - - -Node506->Node754 - - - + + +Node507->Node753 + + + - - -Node756 - - -P4::DuplicateActions + + +Node755 + + +P4::DoTableKeyNames - - -Node506->Node756 - - - + + +Node507->Node755 + + + Node757 - - -P4::EBPF::ConvertToEbpfPSA + + +P4::DuplicateActions - - -Node506->Node757 - - - + + +Node507->Node757 + + + Node758 - - -P4::EBPF::LowerExpressions + + +P4::EBPF::ConvertToEbpfPSA - - -Node506->Node758 - - - + + +Node507->Node758 + + + Node759 - - -P4::ElimCallExprInIfCond + + +P4::EBPF::LowerExpressions - - -Node506->Node759 - - - + + +Node507->Node759 + + + - - -Node762 - - -P4::FillEnumMap + + +Node760 + + +P4::ElimCallExprInIfCond - - -Node506->Node762 - - - + + +Node507->Node760 + + + Node763 - - -P4::HSIndexContretizer + + +P4::FillEnumMap - - -Node506->Node763 - - - + + +Node507->Node763 + + + Node764 - - -P4::HSIndexTransform + + +P4::HSIndexContretizer - - -Node506->Node764 - - - + + +Node507->Node764 + + + Node765 - - -P4::HandleNoMatch + + +P4::HSIndexTransform - - -Node506->Node765 - - - + + +Node507->Node765 + + + Node766 - - -P4::HandleValidityHeader -Union + + +P4::HandleNoMatch - - -Node506->Node766 - - - + + +Node507->Node766 + + + Node767 - - -P4::HierarchicalNames + + +P4::HandleValidityHeader +Union - - -Node506->Node767 - - - + + +Node507->Node767 + + + @@ -26649,17 +26649,17 @@ Node768 - -P4::InlineControlFlow + +P4::InlineControlFlow - - -Node506->Node768 - - - + + +Node507->Node768 + + + @@ -26667,17 +26667,17 @@ Node773 - -P4::MissingIdAssigner + +P4::MissingIdAssigner - - -Node506->Node773 - - - + + +Node507->Node773 + + + @@ -26685,17 +26685,17 @@ Node774 - -P4::MoveConstructors + +P4::MoveConstructors - - -Node506->Node774 - - - + + +Node507->Node774 + + + @@ -26703,17 +26703,17 @@ Node775 - -P4::MoveDeclarations + +P4::MoveDeclarations - - -Node506->Node775 - - - + + +Node507->Node775 + + + @@ -26721,17 +26721,17 @@ Node777 - -P4::NameGateways + +P4::NameGateways - - -Node506->Node777 - - - + + +Node507->Node777 + + + @@ -26739,17 +26739,17 @@ Node778 - -P4::P4Tools::ConvertStructExpr + +P4::P4Tools::ConvertStructExpr - - -Node506->Node778 - - - + + +Node507->Node778 + + + @@ -26757,17 +26757,17 @@ Node779 - -P4::P4Tools::ConvertVarbits + +P4::P4Tools::ConvertVarbits - - -Node506->Node779 - - - + + +Node507->Node779 + + + @@ -26775,17 +26775,17 @@ Node780 - -P4::P4Tools::HSIndexToMember + +P4::P4Tools::HSIndexToMember - - -Node506->Node780 - - - + + +Node507->Node780 + + + @@ -26793,17 +26793,17 @@ Node781 - -P4::P4Tools::MaskBuilder + +P4::P4Tools::MaskBuilder - - -Node506->Node781 - - - + + +Node507->Node781 + + + @@ -26811,18 +26811,18 @@ Node782 - -P4::P4Tools::P4Testgen -::Bmv2::AssertsParser + +P4::P4Tools::P4Testgen +::Bmv2::AssertsParser - - -Node506->Node782 - - - + + +Node507->Node782 + + + @@ -26830,18 +26830,18 @@ Node783 - -P4::P4Tools::P4Testgen -::Bmv2::PropagateP4RuntimeTranslation + +P4::P4Tools::P4Testgen +::Bmv2::PropagateP4RuntimeTranslation - - -Node506->Node783 - - - + + +Node507->Node783 + + + @@ -26849,18 +26849,18 @@ Node784 - -P4::P4Tools::P4Testgen -::VariableSubstitution + +P4::P4Tools::P4Testgen +::VariableSubstitution - - -Node506->Node784 - - - + + +Node507->Node784 + + + @@ -26868,17 +26868,17 @@ Node785 - -P4::P4Tools::TaintPropagator + +P4::P4Tools::TaintPropagator - - -Node506->Node785 - - - + + +Node507->Node785 + + + @@ -26886,18 +26886,18 @@ Node786 - -P4::P4Tools::Test:: -ArithmTest::SaturationTransform + +P4::P4Tools::Test:: +ArithmTest::SaturationTransform - - -Node506->Node786 - - - + + +Node507->Node786 + + + @@ -26905,18 +26905,18 @@ Node787 - -P4::P4Tools::Test:: -SymbolicConverter + +P4::P4Tools::Test:: +SymbolicConverter - - -Node506->Node787 - - - + + +Node507->Node787 + + + @@ -26924,17 +26924,17 @@ Node788 - -P4::P4V1::AdjustLengths + +P4::P4V1::AdjustLengths - - -Node506->Node788 - - - + + +Node507->Node788 + + + @@ -26942,18 +26942,18 @@ Node789 - -P4::P4V1::ConvertConcrete -HeaderRefToPathExpression + +P4::P4V1::ConvertConcrete +HeaderRefToPathExpression - - -Node506->Node789 - - - + + +Node507->Node789 + + + @@ -26961,17 +26961,17 @@ Node790 - -P4::P4V1::ConvertMetadata + +P4::P4V1::ConvertMetadata - - -Node506->Node790 - - - + + +Node507->Node790 + + + @@ -26979,17 +26979,17 @@ Node791 - -P4::P4V1::ExpressionConverter + +P4::P4V1::ExpressionConverter - - -Node506->Node791 - - - + + +Node507->Node791 + + + @@ -26997,17 +26997,17 @@ Node794 - -P4::P4V1::FixApplyStatement + +P4::P4V1::FixApplyStatement - - -Node506->Node794 - - - + + +Node507->Node794 + + + @@ -27015,18 +27015,18 @@ Node795 - -P4::P4V1::FixDuplicatePath -Expression + +P4::P4V1::FixDuplicatePath +Expression - - -Node506->Node795 - - - + + +Node507->Node795 + + + @@ -27034,18 +27034,18 @@ Node796 - -P4::P4V1::FixEgressParser -DuplicateReference + +P4::P4V1::FixEgressParser +DuplicateReference - - -Node506->Node796 - - - + + +Node507->Node796 + + + @@ -27053,17 +27053,17 @@ Node797 - -P4::P4V1::FixExtracts + +P4::P4V1::FixExtracts - - -Node506->Node797 - - - + + +Node507->Node797 + + + @@ -27071,17 +27071,17 @@ Node798 - -P4::P4V1::FixIdleTimeout + +P4::P4V1::FixIdleTimeout - - -Node506->Node798 - - - + + +Node507->Node798 + + + @@ -27089,17 +27089,17 @@ Node799 - -P4::P4V1::FixParamType + +P4::P4V1::FixParamType - - -Node506->Node799 - - - + + +Node507->Node799 + + + @@ -27107,17 +27107,17 @@ Node800 - -P4::P4V1::FixParserPriority + +P4::P4V1::FixParserPriority - - -Node506->Node800 - - - + + +Node507->Node800 + + + @@ -27125,18 +27125,18 @@ Node801 - -P4::P4V1::InsertChecksum -Deposit + +P4::P4V1::InsertChecksum +Deposit - - -Node506->Node801 - - - + + +Node507->Node801 + + + @@ -27144,18 +27144,18 @@ Node802 - -P4::P4V1::InsertChecksum -Error::InsertBeforeAccept + +P4::P4V1::InsertChecksum +Error::InsertBeforeAccept - - -Node506->Node802 - - - + + +Node507->Node802 + + + @@ -27163,18 +27163,18 @@ Node803 - -P4::P4V1::InsertChecksum -Error::InsertEndStates + +P4::P4V1::InsertChecksum +Error::InsertEndStates - - -Node506->Node803 - - - + + +Node507->Node803 + + + @@ -27182,18 +27182,18 @@ Node804 - -P4::P4V1::InsertCompiler -GeneratedStartState + +P4::P4V1::InsertCompiler +GeneratedStartState - - -Node506->Node804 - - - + + +Node507->Node804 + + + @@ -27201,17 +27201,17 @@ Node805 - -P4::P4V1::MoveIntrinsicMetadata + +P4::P4V1::MoveIntrinsicMetadata - - -Node506->Node805 - - - + + +Node507->Node805 + + + @@ -27219,18 +27219,18 @@ Node806 - -P4::P4V1::ParserCounterSelect -CaseConverter + +P4::P4V1::ParserCounterSelect +CaseConverter - - -Node506->Node806 - - - + + +Node507->Node806 + + + @@ -27238,18 +27238,18 @@ Node807 - -P4::P4V1::ParserCounterSelect -CaseConverter::RewriteSelectCase + +P4::P4V1::ParserCounterSelect +CaseConverter::RewriteSelectCase - - -Node506->Node807 - - - + + +Node507->Node807 + + + @@ -27257,18 +27257,18 @@ Node808 - -P4::P4V1::ParserCounterSelect -CaseConverter::StrengthReduction + +P4::P4V1::ParserCounterSelect +CaseConverter::StrengthReduction - - -Node506->Node808 - - - + + +Node507->Node808 + + + @@ -27276,18 +27276,18 @@ Node809 - -P4::P4V1::ParserCounterSelect -ExprConverter + +P4::P4V1::ParserCounterSelect +ExprConverter - - -Node506->Node809 - - - + + +Node507->Node809 + + + @@ -27295,17 +27295,17 @@ Node810 - -P4::P4V1::RenameFieldPath + +P4::P4V1::RenameFieldPath - - -Node506->Node810 - - - + + +Node507->Node810 + + + @@ -27313,17 +27313,17 @@ Node813 - -P4::P4V1::Rewriter + +P4::P4V1::Rewriter - - -Node506->Node813 - - - + + +Node507->Node813 + + + @@ -27331,17 +27331,17 @@ Node814 - -P4::P4_14::InlineActions + +P4::P4_14::InlineActions - - -Node506->Node814 - - - + + +Node507->Node814 + + + @@ -27349,18 +27349,18 @@ Node815 - -P4::ParserStructureImpl -::ParserStateRewriter + +P4::ParserStructureImpl +::ParserStateRewriter - - -Node506->Node815 - - - + + +Node507->Node815 + + + @@ -27368,17 +27368,17 @@ Node816 - -P4::Predication + +P4::Predication - - -Node506->Node816 - - - + + +Node507->Node816 + + + @@ -27386,17 +27386,17 @@ Node817 - -P4::Reassociation + +P4::Reassociation - - -Node506->Node817 - - - + + +Node507->Node817 + + + @@ -27404,17 +27404,17 @@ Node818 - -P4::RemoveAliases + +P4::RemoveAliases - - -Node506->Node818 - - - + + +Node507->Node818 + + + @@ -27422,17 +27422,17 @@ Node819 - -P4::RemoveBreakContinue + +P4::RemoveBreakContinue - - -Node506->Node819 - - - + + +Node507->Node819 + + + @@ -27440,17 +27440,17 @@ Node820 - -P4::RemoveComplexComparisons + +P4::RemoveComplexComparisons - - -Node506->Node820 - - - + + +Node507->Node820 + + + @@ -27458,17 +27458,17 @@ Node823 - -P4::RemoveGenericTypes + +P4::RemoveGenericTypes - - -Node506->Node823 - - - + + +Node507->Node823 + + + @@ -27476,17 +27476,17 @@ Node824 - -P4::RemoveHidden + +P4::RemoveHidden - - -Node506->Node824 - - - + + +Node507->Node824 + + + @@ -27494,17 +27494,17 @@ Node826 - -P4::RemoveUnusedActionParameters + +P4::RemoveUnusedActionParameters - - -Node506->Node826 - - - + + +Node507->Node826 + + + @@ -27512,17 +27512,17 @@ Node828 - -P4::RemoveUnusedHUDeclarations + +P4::RemoveUnusedHUDeclarations - - -Node506->Node828 - - - + + +Node507->Node828 + + + @@ -27530,17 +27530,17 @@ Node829 - -P4::RemoveUselessCasts + +P4::RemoveUselessCasts - - -Node506->Node829 - - - + + +Node507->Node829 + + + @@ -27548,17 +27548,17 @@ Node834 - -P4::ReplaceSelectRange + +P4::ReplaceSelectRange - - -Node506->Node834 - - - + + +Node507->Node834 + + + @@ -27566,17 +27566,17 @@ Node836 - -P4::ReplaceTypeUses + +P4::ReplaceTypeUses - - -Node506->Node836 - - - + + +Node507->Node836 + + + @@ -27584,17 +27584,17 @@ Node837 - -P4::RewriteAllParsers + +P4::RewriteAllParsers - - -Node506->Node837 - - - + + +Node507->Node837 + + + @@ -27602,17 +27602,17 @@ Node838 - -P4::SimplifyBitwise + +P4::SimplifyBitwise - - -Node506->Node838 - - - + + +Node507->Node838 + + + @@ -27620,17 +27620,17 @@ Node839 - -P4::SimplifyParsers + +P4::SimplifyParsers - - -Node506->Node839 - - - + + +Node507->Node839 + + + @@ -27638,17 +27638,17 @@ Node840 - -P4::Specialize + +P4::Specialize - - -Node506->Node840 - - - + + +Node507->Node840 + + + @@ -27656,17 +27656,17 @@ Node841 - -P4::SpecializeFunctions + +P4::SpecializeFunctions - - -Node506->Node841 - - - + + +Node507->Node841 + + + @@ -27674,17 +27674,17 @@ Node842 - -P4::SubstituteStructures + +P4::SubstituteStructures - - -Node506->Node842 - - - + + +Node507->Node842 + + + @@ -27692,17 +27692,17 @@ Node843 - -P4::TC::ConvertToEbpfPNA + +P4::TC::ConvertToEbpfPNA - - -Node506->Node843 - - - + + +Node507->Node843 + + + @@ -27710,17 +27710,17 @@ Node844 - -P4::TagGlobalActions + +P4::TagGlobalActions - - -Node506->Node844 - - - + + +Node507->Node844 + + + @@ -27728,18 +27728,18 @@ Node845 - -P4::TypeCheck::AssignInitial -Types + +P4::TypeCheck::AssignInitial +Types - - -Node506->Node845 - - - + + +Node507->Node845 + + + @@ -27747,18 +27747,18 @@ Node851 - -P4::TypeVariableSubstitution -Visitor + +P4::TypeVariableSubstitution +Visitor - - -Node506->Node851 - - - + + +Node507->Node851 + + + @@ -27766,17 +27766,17 @@ Node854 - -P4::UnnestSelectList + +P4::UnnestSelectList - - -Node506->Node854 - - - + + +Node507->Node854 + + + @@ -27784,18 +27784,18 @@ Node856 - -PHV::v2::TableReplayFriendly -PhvConstraints + +PHV::v2::TableReplayFriendly +PhvConstraints - - -Node506->Node856 - - - + + +Node507->Node856 + + + @@ -27803,17 +27803,17 @@ Node857 - -Parde::Lowered::ReplaceParserIR + +Parde::Lowered::ReplaceParserIR - - -Node506->Node857 - - - + + +Node507->Node857 + + + @@ -27821,18 +27821,18 @@ Node858 - -Parde::Lowered::SplitGreedy -ParserStates + +Parde::Lowered::SplitGreedy +ParserStates - - -Node506->Node858 - - - + + +Node507->Node858 + + + @@ -27840,17 +27840,17 @@ Node859 - -ReinstateAliasSources + +ReinstateAliasSources - - -Node506->Node859 - - - + + +Node507->Node859 + + + @@ -27858,17 +27858,17 @@ Node860 - -RemovePushInitialization + +RemovePushInitialization - - -Node506->Node860 - - - + + +Node507->Node860 + + + @@ -27876,17 +27876,17 @@ Node861 - -ReplaceAllAliases + +ReplaceAllAliases - - -Node506->Node861 - - - + + +Node507->Node861 + + + @@ -27894,17 +27894,17 @@ Node862 - -ReplaceFlexibleType + +ReplaceFlexibleType - - -Node506->Node862 - - - + + +Node507->Node862 + + + @@ -27912,17 +27912,17 @@ Node863 - -ReplaceMember + +ReplaceMember - - -Node506->Node863 - - - + + +Node507->Node863 + + + @@ -27930,17 +27930,17 @@ Node864 - -Shift + +Shift - - -Node506->Node864 - - - + + +Node507->Node864 + + + @@ -27948,17 +27948,17 @@ Node866 - -SplitComplexGateways + +SplitComplexGateways - - -Node506->Node866 - - - + + +Node507->Node866 + + + @@ -27966,18 +27966,18 @@ Node867 - -TablePlacement::RewriteFor -SplitAttached + +TablePlacement::RewriteFor +SplitAttached - - -Node506->Node867 - - - + + +Node507->Node867 + + + @@ -27985,1194 +27985,1194 @@ Node868 - -ValidToStkvalid - - - - - -Node506->Node868 - - - + +ValidToStkvalid - - -Node513 - - -ElimUnused::Instructions - - - - - -Node512->Node513 - - - + + +Node507->Node868 + + + Node514 - - -RemoveMetadataInits + + +ElimUnused::Instructions - - -Node512->Node514 - - - + + +Node513->Node514 + + + - - -Node538 - - -BFN::EliminateWidthCasts + + +Node515 + + +RemoveMetadataInits - - -Node537->Node538 - - - + + +Node513->Node515 + + + Node539 - - -BFN::RewriteCastToReinterpretCast + + +BFN::EliminateWidthCasts - - -Node537->Node539 - - - + + +Node538->Node539 + + + Node540 - - -BFN::RewriteConcatToSlices + + +BFN::RewriteCastToReinterpretCast - - -Node537->Node540 - - - + + +Node538->Node540 + + + Node541 - - -BFN::SimplifyNestedCasts + + +BFN::RewriteConcatToSlices - - -Node537->Node541 - - - + + +Node538->Node541 + + + Node542 - - -BFN::SimplifyOperationBinary + + +BFN::SimplifyNestedCasts - - -Node537->Node542 - - - + + +Node538->Node542 + + + Node543 - - -BFN::SimplifyRedundantCasts + + +BFN::SimplifyOperationBinary - - -Node537->Node543 - - - + + +Node538->Node543 + + + - - -Node551 - - -BFN::PSA::EgressControlConverter + + +Node544 + + +BFN::SimplifyRedundantCasts - - -Node550->Node551 - - - + + +Node538->Node544 + + + Node552 - - -BFN::PSA::EgressDeparser -Converter + + +BFN::PSA::EgressControlConverter - - -Node550->Node552 - - - + + +Node551->Node552 + + + Node553 - - -BFN::PSA::IngressControl -Converter + + +BFN::PSA::EgressDeparser +Converter - - -Node550->Node553 - - - + + +Node551->Node553 + + + Node554 - - -BFN::PSA::IngressDeparser -Converter + + +BFN::PSA::IngressControl +Converter - - -Node550->Node554 - - - + + +Node551->Node554 + + + - - -Node557 - - -BFN::PSA::PathExpression -Converter + + +Node555 + + +BFN::PSA::IngressDeparser +Converter - - -Node556->Node557 - - - + + +Node551->Node555 + + + Node558 - - -BFN::PSA::TypeNameExpression -Converter + + +BFN::PSA::PathExpression +Converter - - -Node556->Node558 - - - + + +Node557->Node558 + + + - - -Node560 - - -BFN::PSA::HashConverter + + +Node559 + + +BFN::PSA::TypeNameExpression +Converter - - -Node559->Node560 - - - + + +Node557->Node559 + + + Node561 - - -BFN::PSA::MeterConverter + + +BFN::PSA::HashConverter - - -Node559->Node561 - - - + + +Node560->Node561 + + + Node562 - - -BFN::PSA::RandomConverter + + +BFN::PSA::MeterConverter - - -Node559->Node562 - - - + + +Node560->Node562 + + + - - -Node567 - - -BFN::PSA::EgressParserConverter + + +Node563 + + +BFN::PSA::RandomConverter - - -Node566->Node567 - - - + + +Node560->Node563 + + + Node568 - - -BFN::PSA::IngressParserConverter + + +BFN::PSA::EgressParserConverter - - -Node566->Node568 - - - + + +Node567->Node568 + + + - - -Node574 - - -BFN::PingPongGeneration -::P4ActionChanger + + +Node569 + + +BFN::PSA::IngressParserConverter - - -Node573->Node574 - - - + + +Node567->Node569 + + + Node575 - - -BFN::PingPongGeneration -::P4TableChanger + + +BFN::PingPongGeneration +::P4ActionChanger - - -Node573->Node575 - - - + + +Node574->Node575 + + + Node576 - - -BFN::PingPongGeneration -::RegActionChanger + + +BFN::PingPongGeneration +::P4TableChanger - - -Node573->Node576 - - - + + +Node574->Node576 + + + - - -Node597 - - -BFN::V1::EgressControlConverter + + +Node577 + + +BFN::PingPongGeneration +::RegActionChanger - - -Node596->Node597 - - - + + +Node574->Node577 + + + Node598 - - -BFN::V1::EgressDeparserConverter + + +BFN::V1::EgressControlConverter - - -Node596->Node598 - - - + + +Node597->Node598 + + + Node599 - - -BFN::V1::IngressControlConverter + + +BFN::V1::EgressDeparserConverter - - -Node596->Node599 - - - + + +Node597->Node599 + + + Node600 - - -BFN::V1::IngressDeparser -Converter + + +BFN::V1::IngressControlConverter - - -Node596->Node600 - - - + + +Node597->Node600 + + + - - -Node602 - - -BFN::V1::PathExpressionConverter + + +Node601 + + +BFN::V1::IngressDeparser +Converter - - -Node601->Node602 - - - + + +Node597->Node601 + + + Node603 - - -BFN::V1::TypeNameExpression -Converter + + +BFN::V1::PathExpressionConverter - - -Node601->Node603 - - - + + +Node602->Node603 + + + - - -Node605 - - -BFN::V1::MeterConverter + + +Node604 + + +BFN::V1::TypeNameExpression +Converter - - -Node604->Node605 - - - + + +Node602->Node604 + + + Node606 - - -BFN::V1::RegisterConverter + + +BFN::V1::MeterConverter - - -Node604->Node606 - - - + + +Node605->Node606 + + + - - -Node614 - - -BFN::V1::EgressParserConverter + + +Node607 + + +BFN::V1::RegisterConverter - - -Node613->Node614 - - - + + +Node605->Node607 + + + Node615 - - -BFN::V1::IngressParserConverter + + +BFN::V1::EgressParserConverter - - -Node613->Node615 - - - + + +Node614->Node615 + + + - - -Node621 - - -BFN::V1::ParserCounterConverter + + +Node616 + + +BFN::V1::IngressParserConverter - - -Node620->Node621 - - - + + +Node614->Node616 + + + Node622 - - -BFN::V1::ParserPriorityConverter + + +BFN::V1::ParserCounterConverter - - -Node620->Node622 - - - + + +Node621->Node622 + + + - - -Node629->Node654 - - - + + +Node623 + + +BFN::V1::ParserPriorityConverter - - -Node629->Node652 - - - + + +Node621->Node623 + + + - - -Node630 - - -AdjustShiftInstructions + + +Node630->Node655 + + + - - -Node629->Node630 - - - + + +Node630->Node653 + + + Node631 - - -AdjustStatefulInstructions + + +AdjustShiftInstructions - - -Node629->Node631 - - - + + +Node630->Node631 + + + Node632 - - -BFN::ActionArgSetup + + +AdjustStatefulInstructions - - -Node629->Node632 - - - + + +Node630->Node632 + + + Node633 - - -BFN::ConvertMethodCalls + + +BFN::ActionArgSetup - - -Node629->Node633 - - - + + +Node630->Node633 + + + Node634 - - -BackendCopyPropagation + + +BFN::ConvertMethodCalls - - -Node629->Node634 - - - + + +Node630->Node634 + + + Node635 - - -CanonGatewayExpr + + +BackendCopyPropagation - - -Node629->Node635 - - - + + +Node630->Node635 + + + Node636 - - -ConstantsToActionData + + +CanonGatewayExpr - - -Node629->Node636 - - - + + +Node630->Node636 + + + Node637 - - -ConvertFunnelShiftExtern + + +ConstantsToActionData - - -Node629->Node637 - - - + + +Node630->Node637 + + + Node638 - - -DoInstructionSelection + + +ConvertFunnelShiftExtern - - -Node629->Node638 - - - + + +Node630->Node638 + + + Node639 - - -ElimUnused::Tables + + +DoInstructionSelection - - -Node629->Node639 - - - + + +Node630->Node639 + + + Node640 - - -EliminateNoopInstructions + + +ElimUnused::Tables - - -Node629->Node640 - - - + + +Node630->Node640 + + + Node641 - - -ExpandInstructions + + +EliminateNoopInstructions - - -Node629->Node641 - - - + + +Node630->Node641 + + + Node642 - - -ExpressionsToHash + + +ExpandInstructions - - -Node629->Node642 - - - + + +Node630->Node642 + + + Node643 - - -HeaderPushPop + + +ExpressionsToHash - - -Node629->Node643 - - - + + +Node630->Node643 + + + Node644 - - -InsertTableToResetInvalidated -Headers + + +HeaderPushPop - - -Node629->Node644 - - - + + +Node630->Node644 + + + Node645 - - -MergeInstructions + + +InsertTableToResetInvalidated +Headers - - -Node629->Node645 - - - + + +Node630->Node645 + + + Node646 - - -RemoveEmptyControls + + +MergeInstructions - - -Node629->Node646 - - - + + +Node630->Node646 + + + Node647 - - -RemoveNoopGateway + + +RemoveEmptyControls - - -Node629->Node647 - - - + + +Node630->Node647 + + + Node648 - - -RemoveUnnecessaryActionArg -Slice + + +RemoveNoopGateway - - -Node629->Node648 - - - + + +Node630->Node648 + + + Node649 - - -RewriteWeakFieldWrites + + +RemoveUnnecessaryActionArg +Slice - - -Node629->Node649 - - - + + +Node630->Node649 + + + Node650 - - -SimplifyConditionalActionArg + + +RewriteWeakFieldWrites - - -Node629->Node650 - - - + + +Node630->Node650 + + + Node651 - - -SplitInstructions + + +SimplifyConditionalActionArg - - -Node629->Node651 - - - + + +Node630->Node651 + + + - - -Node653 - - -Synth2PortSetup + + +Node652 + + +SplitInstructions - - -Node629->Node653 - - - + + +Node630->Node652 + + + - - -Node655 - - -ToFunnelShiftInstruction + + +Node654 + + +Synth2PortSetup - - -Node629->Node655 - - - + + +Node630->Node654 + + + Node656 - - -TransformTables + + +ToFunnelShiftInstruction - - -Node629->Node656 - - - + + +Node630->Node656 + + + - - -Node702 - - -P4::DPDK::SplitActionProfile -Table + + +Node657 + + +TransformTables - - -Node701->Node702 - - - + + +Node630->Node657 + + + Node703 - - -P4::DPDK::SplitActionSelector -Table + + +P4::DPDK::SplitActionProfile +Table - - -Node701->Node703 - - - + + +Node702->Node703 + + + - - -Node721 - - -P4::DoFlattenHeaderUnion -Stack + + +Node704 + + +P4::DPDK::SplitActionSelector +Table - - -Node720->Node721 - - - + + +Node702->Node704 + + + - - -Node729 - - -BFN::DoRemoveActionParameters -Tofino + + +Node722 + + +P4::DoFlattenHeaderUnion +Stack + + + + + +Node721->Node722 + + + + + + + + +Node730 + + +BFN::DoRemoveActionParameters +Tofino - - -Node728->Node729 - - - + + +Node729->Node730 + + + - - -Node734->Node735 - - - + + +Node735->Node736 + + + @@ -29180,8 +29180,8 @@ Node792 - -P4::P4V1::StatementConverter + +P4::P4V1::StatementConverter @@ -29189,8 +29189,8 @@ Node791->Node792 - - + + @@ -29198,8 +29198,8 @@ Node793 - -P4::P4V1::TypeConverter + +P4::P4V1::TypeConverter @@ -29207,8 +29207,8 @@ Node791->Node793 - - + + @@ -29216,9 +29216,9 @@ Node811 - -P4::P4V1::FixBridgedIntrinsic -Metadata + +P4::P4V1::FixBridgedIntrinsic +Metadata @@ -29226,8 +29226,8 @@ Node810->Node811 - - + + @@ -29235,8 +29235,8 @@ Node812 - -P4::P4V1::FixPktgenHeaderPath + +P4::P4V1::FixPktgenHeaderPath @@ -29244,8 +29244,8 @@ Node810->Node812 - - + + @@ -29253,8 +29253,8 @@ Node851->Node852 - - + + @@ -29262,8 +29262,8 @@ Node853 - -P4::TypeSubstitutionVisitor + +P4::TypeSubstitutionVisitor @@ -29271,8 +29271,8 @@ Node851->Node853 - - + + @@ -29280,8 +29280,8 @@ Node865 - -ShiftPacketRVal + +ShiftPacketRVal @@ -29289,8 +29289,8 @@ Node864->Node865 - - + + @@ -29298,8 +29298,8 @@ Node1376 - -P4WriteContext + +P4WriteContext @@ -29307,8 +29307,8 @@ Node1376->Node1 - - + + @@ -29316,8 +29316,8 @@ Node94 - -TofinoWriteContext + +TofinoWriteContext @@ -29325,8 +29325,8 @@ Node1376->Node94 - - + + @@ -29334,8 +29334,8 @@ Node94->Node1313 - - + + @@ -29343,8 +29343,8 @@ Node94->Node1368 - - + + @@ -29352,8 +29352,8 @@ Node94->Node93 - - + + @@ -29361,8 +29361,8 @@ Node94->Node1369 - - + + @@ -29370,8 +29370,8 @@ Node94->Node1370 - - + + @@ -29379,8 +29379,8 @@ Node94->Node95 - - + + @@ -29388,8 +29388,8 @@ Node94->Node1316 - - + + @@ -29397,8 +29397,8 @@ Node94->Node1320 - - + + @@ -29406,8 +29406,8 @@ Node94->Node1321 - - + + @@ -29415,8 +29415,8 @@ Node94->Node1330 - - + + @@ -29424,8 +29424,8 @@ Node94->Node1366 - - + + @@ -29433,8 +29433,8 @@ Node94->Node1372 - - + + @@ -29442,8 +29442,8 @@ Node94->Node1373 - - + + @@ -29451,62 +29451,62 @@ Node94->Node1374 - - + + - - -Node94->Node630 - - - + + +Node94->Node631 + + + - - -Node94->Node634 - - - + + +Node94->Node635 + + + - - -Node94->Node636 - - - + + +Node94->Node637 + + + - - -Node94->Node638 - - - + + +Node94->Node639 + + + - - -Node94->Node645 - - - + + +Node94->Node646 + + + - - -Node94->Node651 - - - + + +Node94->Node652 + + + @@ -29514,8 +29514,8 @@ Node409 - -PHV::IFieldSliceLiveRangeDB + +PHV::IFieldSliceLiveRangeDB @@ -29523,8 +29523,8 @@ Node409->Node408 - - + + @@ -29532,8 +29532,8 @@ Node1632 - -Pragma::PrettyPrint + +Pragma::PrettyPrint @@ -29541,8 +29541,8 @@ Node1632->Node1631 - - + + @@ -29578,8 +29578,8 @@ Node1100->Node1099 - - + + @@ -29605,8 +29605,8 @@ Node1103->Node1190 - - + + @@ -30276,9 +30276,9 @@ Node1139 - -P4::safe_vector< const - IR::Argument * > + +P4::safe_vector< const + IR::Argument * > @@ -30286,8 +30286,8 @@ Node1103->Node1139 - - + + @@ -30295,9 +30295,9 @@ Node1140 - -P4::safe_vector< const - IR::Declaration * > + +P4::safe_vector< const + IR::Declaration * > @@ -30305,8 +30305,8 @@ Node1103->Node1140 - - + + @@ -30314,9 +30314,9 @@ Node1141 - -P4::safe_vector< const - IR::StatOrDecl * > + +P4::safe_vector< const + IR::StatOrDecl * > @@ -30324,8 +30324,8 @@ Node1103->Node1141 - - + + @@ -30333,9 +30333,9 @@ Node1142 - -P4::safe_vector< const - IR::DpdkAsmStatement * > + +P4::safe_vector< const + IR::DpdkAsmStatement * > @@ -30343,8 +30343,8 @@ Node1103->Node1142 - - + + @@ -31278,8 +31278,8 @@ Node136 - -Transform + +Transform @@ -31287,8 +31287,8 @@ Node137 - -DeparserTransform + +DeparserTransform @@ -31296,8 +31296,8 @@ Node136->Node137 - - + + @@ -31305,8 +31305,8 @@ Node140 - -EgressPacketLengthAdjust + +EgressPacketLengthAdjust @@ -31314,8 +31314,8 @@ Node136->Node140 - - + + @@ -31323,8 +31323,8 @@ Node141 - -FillFromBlockMap + +FillFromBlockMap @@ -31332,8 +31332,8 @@ Node136->Node141 - - + + @@ -31341,8 +31341,8 @@ Node133 - -PardeTransform + +PardeTransform @@ -31350,8 +31350,8 @@ Node136->Node133 - - + + @@ -31368,8 +31368,8 @@ Node136->Node142 - - + + @@ -31377,8 +31377,8 @@ Node162 - -SplitPadding + +SplitPadding @@ -31386,8 +31386,8 @@ Node136->Node162 - - + + @@ -31395,8 +31395,8 @@ Node138 - -ConstMirrorSessionOpt + +ConstMirrorSessionOpt @@ -31404,8 +31404,8 @@ Node137->Node138 - - + + @@ -31413,8 +31413,8 @@ Node139 - -Parde::Lowered::ReplaceDeparserIR + +Parde::Lowered::ReplaceDeparserIR @@ -31422,8 +31422,8 @@ Node137->Node139 - - + + @@ -31431,8 +31431,8 @@ Node133->Node132 - - + + @@ -31440,8 +31440,8 @@ Node134 - -ElimUnused::Headers + +ElimUnused::Headers @@ -31449,8 +31449,8 @@ Node133->Node134 - - + + @@ -31458,8 +31458,8 @@ Node135 - -RewriteParde + +RewriteParde @@ -31467,8 +31467,8 @@ Node133->Node135 - - + + diff --git a/inherits.html b/inherits.html index a8b292b65ea..acadd981bef 100644 --- a/inherits.html +++ b/inherits.html @@ -281,7 +281,7 @@

This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.

- + diff --git a/intrinsic__metadata_8h_source.html b/intrinsic__metadata_8h_source.html index b18f2958ebe..7fb099eb5fe 100644 --- a/intrinsic__metadata_8h_source.html +++ b/intrinsic__metadata_8h_source.html @@ -300,7 +300,7 @@
198 IR::ParserState *preorder(IR::ParserState *state) override {
199 auto anno = state->getAnnotation("name"_cs);
200 if (!anno) return state;
-
201 auto name = anno->expr.at(0)->to<IR::StringLiteral>();
+
201 auto name = anno->getExpr(0)->to<IR::StringLiteral>();
202 // We want to check if the .start was found, which indicates that
203 // the p4c indeed added start_0 and .$start and we should
204 // therefore rename the generated start state
@@ -342,7 +342,7 @@
238 auto anno = state->getAnnotation("packet_entry"_cs);
239 if (!anno) return state;
240 anno = state->getAnnotation("name"_cs);
-
241 auto name = anno->expr.at(0)->to<IR::StringLiteral>();
+
241 auto name = anno->getExpr(0)->to<IR::StringLiteral>();
242 if (name->value == ".start_i2e_mirrored") {
243 start_i2e_mirrored = state;
244 } else if (name->value == ".start_e2e_mirrored") {
@@ -359,7 +359,7 @@
255 IR::ParserState *postorder(IR::ParserState *state) override {
256 auto anno = state->getAnnotation("name"_cs);
257 if (!anno) return state;
-
258 auto name = anno->expr.at(0)->to<IR::StringLiteral>();
+
258 auto name = anno->getExpr(0)->to<IR::StringLiteral>();
259 if (name->value == ".start") {
260 LOG1("found start state ");
261 // Frontend renames 'start' to 'start_0' if the '@packet_entry' pragma is used.
diff --git a/ir-inline_8h_source.html b/ir-inline_8h_source.html index 3b5f9b60529..3f0e6cb601f 100644 --- a/ir-inline_8h_source.html +++ b/ir-inline_8h_source.html @@ -278,185 +278,186 @@
153}
154
155std::ostream &operator<<(std::ostream &out, const IR::Vector<IR::Expression> &v);
-
156
-
157template <class T>
-
158void IR::IndexedVector<T>::visit_children(Visitor &v) {
-
159 for (auto i = begin(); i != end();) {
-
160 auto n = v.apply_visitor(*i);
-
161 if (!n && *i) {
-
162 i = erase(i);
-
163 continue;
-
164 }
-
165 CHECK_NULL(n);
-
166 if (n == *i) {
-
167 i++;
-
168 continue;
-
169 }
-
170 if (auto l = n->template to<Vector<T>>()) {
-
171 i = erase(i);
-
172 i = insert(i, l->begin(), l->end());
-
173 i += l->Vector<T>::size();
-
174 continue;
-
175 }
-
176 if (auto e = n->template to<T>()) {
-
177 i = replace(i, e);
-
178 continue;
-
179 }
-
180 BUG("visitor returned invalid type %s for IndexedVector<%s>", n->node_type_name(),
-
181 T::static_type_name());
-
182 }
-
183}
-
184template <class T>
-
185void IR::IndexedVector<T>::visit_children(Visitor &v) const {
-
186 for (auto &a : *this) v.visit(a);
-
187}
-
188template <class T>
-
189void IR::IndexedVector<T>::toJSON(JSONGenerator &json) const {
-
190 const char *sep = "";
-
191 Vector<T>::toJSON(json);
-
192 json << "," << std::endl << json.indent++ << "\"declarations\" : {";
-
193 for (const auto &k : declarations) {
-
194 json << sep << std::endl << json.indent << k.first << " : " << k.second;
-
195 sep = ",";
-
196 }
-
197 --json.indent;
-
198 if (*sep != 0) {
-
199 json << std::endl << json.indent;
-
200 }
-
201 json << "}";
-
202}
-
203IRNODE_DEFINE_APPLY_OVERLOAD(IndexedVector, template <class T>, <T>)
-
204
-
205template <class MAP>
-
206static inline void namemap_insert_helper(typename MAP::iterator, typename MAP::key_type k,
-
207 typename MAP::mapped_type v, MAP &, MAP &new_symbols) {
-
208 new_symbols.emplace(std::move(k), std::move(v));
-
209}
-
210
-
211template <class MAP, class InputIterator>
-
212static inline void namemap_insert_helper(typename MAP::iterator, InputIterator b, InputIterator e,
-
213 MAP &, MAP &new_symbols) {
-
214 new_symbols.insert(b, e);
-
215}
-
216
-
217template <class T>
-
218static inline void namemap_insert_helper(typename ordered_map<cstring, T>::iterator it, cstring k,
-
219 T v, ordered_map<cstring, T> &symbols,
-
220 ordered_map<cstring, T> &) {
-
221 symbols.emplace_hint(it, std::move(k), std::move(v));
-
222}
-
223
-
224template <class T, class InputIterator>
-
225static inline void namemap_insert_helper(typename ordered_map<cstring, T>::iterator it,
-
226 InputIterator b, InputIterator e,
-
227 ordered_map<cstring, T> &symbols,
-
228 ordered_map<cstring, T> &) {
-
229 symbols.insert(it, b, e);
-
230}
-
231
-
232template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
233 class COMP /*= std::less<cstring>*/,
-
234 class ALLOC /*= std::allocator<std::pair<const cstring, const T*>>*/>
-
235void IR::NameMap<T, MAP, COMP, ALLOC>::visit_children(Visitor &v) {
-
236 map_t new_symbols;
-
237 for (auto i = symbols.begin(); i != symbols.end();) {
-
238 const IR::Node *n = v.apply_visitor(i->second, i->first.c_str());
-
239 if (!n && i->second) {
-
240 i = symbols.erase(i);
-
241 continue;
-
242 }
-
243 CHECK_NULL(n);
-
244 if (n == i->second) {
-
245 i++;
-
246 continue;
-
247 }
-
248 if (auto m = n->to<NameMap>()) {
-
249 namemap_insert_helper(i, m->symbols.begin(), m->symbols.end(), symbols, new_symbols);
-
250 i = symbols.erase(i);
-
251 continue;
-
252 }
-
253 if (auto s = n->to<T>()) {
-
254 if (match_name(i->first, s)) {
-
255 i->second = s;
-
256 i++;
-
257 } else {
-
258 namemap_insert_helper(i, cstring(obj_name(s)), std::move(s), symbols, new_symbols);
-
259 i = symbols.erase(i);
-
260 }
-
261 continue;
-
262 }
-
263 BUG("visitor returned invalid type %s for NameMap<%s>", n->node_type_name(),
-
264 T::static_type_name());
-
265 }
-
266 symbols.insert(new_symbols.begin(), new_symbols.end());
-
267}
-
268template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
269 class COMP /*= std::less<cstring>*/,
-
270 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
-
271void IR::NameMap<T, MAP, COMP, ALLOC>::visit_children(Visitor &v) const {
-
272 for (auto &k : symbols) {
-
273 v.visit(k.second, k.first.c_str());
-
274 }
-
275}
-
276template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
277 class COMP /*= std::less<cstring>*/,
-
278 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
-
279void IR::NameMap<T, MAP, COMP, ALLOC>::toJSON(JSONGenerator &json) const {
-
280 const char *sep = "";
-
281 Node::toJSON(json);
-
282 json << "," << std::endl << json.indent++ << "\"symbols\" : {";
-
283 for (auto &k : symbols) {
-
284 json << sep << std::endl << json.indent << k.first << " : " << k.second;
-
285 sep = ",";
-
286 }
-
287 --json.indent;
-
288 if (*sep) {
-
289 json << std::endl << json.indent;
-
290 }
-
291 json << "}";
-
292}
-
293
-
294template <class KEY, class VALUE,
-
295 template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
296 class COMP /*= std::less<cstring>*/,
-
297 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
-
298void IR::NodeMap<KEY, VALUE, MAP, COMP, ALLOC>::visit_children(Visitor &v) {
-
299 map_t new_symbols;
-
300 for (auto i = symbols.begin(); i != symbols.end();) {
-
301 auto nk = i->first;
-
302 v.visit(nk);
-
303 if (!nk && i->first) {
-
304 i = symbols.erase(i);
-
305 } else if (nk == i->first) {
-
306 v.visit(i->second);
-
307 if (i->second) {
-
308 ++i;
-
309 } else {
-
310 i = symbols.erase(i);
-
311 }
-
312 } else {
-
313 auto nv = i->second;
-
314 v.visit(nv);
-
315 if (nv) new_symbols.emplace(nk, nv);
-
316 i = symbols.erase(i);
-
317 }
-
318 }
-
319 symbols.insert(new_symbols.begin(), new_symbols.end());
-
320}
-
321template <class KEY, class VALUE,
-
322 template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
323 class COMP /*= std::less<cstring>*/,
-
324 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
-
325void IR::NodeMap<KEY, VALUE, MAP, COMP, ALLOC>::visit_children(Visitor &v) const {
-
326 for (auto &k : symbols) {
-
327 v.visit(k.first);
-
328 v.visit(k.second);
-
329 }
-
330}
-
331
-
332} // namespace P4
-
333
-
334#endif /* IR_IR_INLINE_H_ */
+
156std::ostream &operator<<(std::ostream &out, const IR::Vector<IR::Annotation> &v);
+
157
+
158template <class T>
+
159void IR::IndexedVector<T>::visit_children(Visitor &v) {
+
160 for (auto i = begin(); i != end();) {
+
161 auto n = v.apply_visitor(*i);
+
162 if (!n && *i) {
+
163 i = erase(i);
+
164 continue;
+
165 }
+
166 CHECK_NULL(n);
+
167 if (n == *i) {
+
168 i++;
+
169 continue;
+
170 }
+
171 if (auto l = n->template to<Vector<T>>()) {
+
172 i = erase(i);
+
173 i = insert(i, l->begin(), l->end());
+
174 i += l->Vector<T>::size();
+
175 continue;
+
176 }
+
177 if (auto e = n->template to<T>()) {
+
178 i = replace(i, e);
+
179 continue;
+
180 }
+
181 BUG("visitor returned invalid type %s for IndexedVector<%s>", n->node_type_name(),
+
182 T::static_type_name());
+
183 }
+
184}
+
185template <class T>
+
186void IR::IndexedVector<T>::visit_children(Visitor &v) const {
+
187 for (auto &a : *this) v.visit(a);
+
188}
+
189template <class T>
+
190void IR::IndexedVector<T>::toJSON(JSONGenerator &json) const {
+
191 const char *sep = "";
+
192 Vector<T>::toJSON(json);
+
193 json << "," << std::endl << json.indent++ << "\"declarations\" : {";
+
194 for (const auto &k : declarations) {
+
195 json << sep << std::endl << json.indent << k.first << " : " << k.second;
+
196 sep = ",";
+
197 }
+
198 --json.indent;
+
199 if (*sep != 0) {
+
200 json << std::endl << json.indent;
+
201 }
+
202 json << "}";
+
203}
+
204IRNODE_DEFINE_APPLY_OVERLOAD(IndexedVector, template <class T>, <T>)
+
205
+
206template <class MAP>
+
207static inline void namemap_insert_helper(typename MAP::iterator, typename MAP::key_type k,
+
208 typename MAP::mapped_type v, MAP &, MAP &new_symbols) {
+
209 new_symbols.emplace(std::move(k), std::move(v));
+
210}
+
211
+
212template <class MAP, class InputIterator>
+
213static inline void namemap_insert_helper(typename MAP::iterator, InputIterator b, InputIterator e,
+
214 MAP &, MAP &new_symbols) {
+
215 new_symbols.insert(b, e);
+
216}
+
217
+
218template <class T>
+
219static inline void namemap_insert_helper(typename ordered_map<cstring, T>::iterator it, cstring k,
+
220 T v, ordered_map<cstring, T> &symbols,
+
221 ordered_map<cstring, T> &) {
+
222 symbols.emplace_hint(it, std::move(k), std::move(v));
+
223}
+
224
+
225template <class T, class InputIterator>
+
226static inline void namemap_insert_helper(typename ordered_map<cstring, T>::iterator it,
+
227 InputIterator b, InputIterator e,
+
228 ordered_map<cstring, T> &symbols,
+
229 ordered_map<cstring, T> &) {
+
230 symbols.insert(it, b, e);
+
231}
+
232
+
233template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
234 class COMP /*= std::less<cstring>*/,
+
235 class ALLOC /*= std::allocator<std::pair<const cstring, const T*>>*/>
+
236void IR::NameMap<T, MAP, COMP, ALLOC>::visit_children(Visitor &v) {
+
237 map_t new_symbols;
+
238 for (auto i = symbols.begin(); i != symbols.end();) {
+
239 const IR::Node *n = v.apply_visitor(i->second, i->first.c_str());
+
240 if (!n && i->second) {
+
241 i = symbols.erase(i);
+
242 continue;
+
243 }
+
244 CHECK_NULL(n);
+
245 if (n == i->second) {
+
246 i++;
+
247 continue;
+
248 }
+
249 if (auto m = n->to<NameMap>()) {
+
250 namemap_insert_helper(i, m->symbols.begin(), m->symbols.end(), symbols, new_symbols);
+
251 i = symbols.erase(i);
+
252 continue;
+
253 }
+
254 if (auto s = n->to<T>()) {
+
255 if (match_name(i->first, s)) {
+
256 i->second = s;
+
257 i++;
+
258 } else {
+
259 namemap_insert_helper(i, cstring(obj_name(s)), std::move(s), symbols, new_symbols);
+
260 i = symbols.erase(i);
+
261 }
+
262 continue;
+
263 }
+
264 BUG("visitor returned invalid type %s for NameMap<%s>", n->node_type_name(),
+
265 T::static_type_name());
+
266 }
+
267 symbols.insert(new_symbols.begin(), new_symbols.end());
+
268}
+
269template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
270 class COMP /*= std::less<cstring>*/,
+
271 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
+
272void IR::NameMap<T, MAP, COMP, ALLOC>::visit_children(Visitor &v) const {
+
273 for (auto &k : symbols) {
+
274 v.visit(k.second, k.first.c_str());
+
275 }
+
276}
+
277template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
278 class COMP /*= std::less<cstring>*/,
+
279 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
+
280void IR::NameMap<T, MAP, COMP, ALLOC>::toJSON(JSONGenerator &json) const {
+
281 const char *sep = "";
+
282 Node::toJSON(json);
+
283 json << "," << std::endl << json.indent++ << "\"symbols\" : {";
+
284 for (auto &k : symbols) {
+
285 json << sep << std::endl << json.indent << k.first << " : " << k.second;
+
286 sep = ",";
+
287 }
+
288 --json.indent;
+
289 if (*sep) {
+
290 json << std::endl << json.indent;
+
291 }
+
292 json << "}";
+
293}
+
294
+
295template <class KEY, class VALUE,
+
296 template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
297 class COMP /*= std::less<cstring>*/,
+
298 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
+
299void IR::NodeMap<KEY, VALUE, MAP, COMP, ALLOC>::visit_children(Visitor &v) {
+
300 map_t new_symbols;
+
301 for (auto i = symbols.begin(); i != symbols.end();) {
+
302 auto nk = i->first;
+
303 v.visit(nk);
+
304 if (!nk && i->first) {
+
305 i = symbols.erase(i);
+
306 } else if (nk == i->first) {
+
307 v.visit(i->second);
+
308 if (i->second) {
+
309 ++i;
+
310 } else {
+
311 i = symbols.erase(i);
+
312 }
+
313 } else {
+
314 auto nv = i->second;
+
315 v.visit(nv);
+
316 if (nv) new_symbols.emplace(nk, nv);
+
317 i = symbols.erase(i);
+
318 }
+
319 }
+
320 symbols.insert(new_symbols.begin(), new_symbols.end());
+
321}
+
322template <class KEY, class VALUE,
+
323 template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
324 class COMP /*= std::less<cstring>*/,
+
325 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
+
326void IR::NodeMap<KEY, VALUE, MAP, COMP, ALLOC>::visit_children(Visitor &v) const {
+
327 for (auto &k : symbols) {
+
328 v.visit(k.first);
+
329 v.visit(k.second);
+
330 }
+
331}
+
332
+
333} // namespace P4
+
334
+
335#endif /* IR_IR_INLINE_H_ */
The namespace encapsulating IR node classes.
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/json__generator_8h_source.html b/json__generator_8h_source.html index 41ecd1cedca..9defdaea0fd 100644 --- a/json__generator_8h_source.html +++ b/json__generator_8h_source.html @@ -145,64 +145,64 @@
20#include <optional>
21#include <string>
22#include <unordered_set>
-
23
-
24#include "ir/node.h"
-
25#include "lib/bitvec.h"
-
26#include "lib/cstring.h"
-
27#include "lib/indent.h"
-
28#include "lib/ltbitmatrix.h"
-
29#include "lib/match.h"
-
30#include "lib/ordered_map.h"
-
31#include "lib/ordered_set.h"
-
32#include "lib/safe_vector.h"
-
33
-
34namespace P4 {
-
35
-
- -
37 std::unordered_set<int> node_refs;
-
38 std::ostream &out;
-
39 bool dumpSourceInfo;
-
40
-
41 template <typename T>
-
42 class has_toJSON {
-
43 typedef char small;
-
44 typedef struct {
-
45 char c[2];
-
46 } big;
-
47
-
48 template <typename C>
-
49 static small test(decltype(&C::toJSON));
-
50 template <typename C>
-
51 static big test(...);
-
52
-
53 public:
-
54 static const bool value = sizeof(test<T>(0)) == sizeof(char);
-
55 };
-
56
-
57 public:
-
58 indent_t indent;
-
59
-
60 explicit JSONGenerator(std::ostream &out, bool dumpSourceInfo = false)
-
61 : out(out), dumpSourceInfo(dumpSourceInfo) {}
-
62
-
63 template <typename T>
-
64 void generate(const safe_vector<T> &v) {
-
65 out << "[";
-
66 if (v.size() > 0) {
-
67 out << std::endl << ++indent;
-
68 generate(v[0]);
-
69 for (size_t i = 1; i < v.size(); i++) {
-
70 out << "," << std::endl << indent;
-
71 generate(v[i]);
-
72 }
-
73 out << std::endl << --indent;
-
74 }
-
75 out << "]";
-
76 }
+
23#include <variant>
+
24
+
25#include "ir/node.h"
+
26#include "lib/bitvec.h"
+
27#include "lib/cstring.h"
+
28#include "lib/indent.h"
+
29#include "lib/ltbitmatrix.h"
+
30#include "lib/match.h"
+
31#include "lib/ordered_map.h"
+
32#include "lib/ordered_set.h"
+
33#include "lib/safe_vector.h"
+
34
+
35namespace P4 {
+
36
+
+ +
38 std::unordered_set<int> node_refs;
+
39 std::ostream &out;
+
40 bool dumpSourceInfo;
+
41
+
42 template <typename T>
+
43 class has_toJSON {
+
44 typedef char small;
+
45 typedef struct {
+
46 char c[2];
+
47 } big;
+
48
+
49 template <typename C>
+
50 static small test(decltype(&C::toJSON));
+
51 template <typename C>
+
52 static big test(...);
+
53
+
54 public:
+
55 static const bool value = sizeof(test<T>(0)) == sizeof(char);
+
56 };
+
57
+
58 struct variant_generator {
+
59 std::ostream &out;
+
60 JSONGenerator &generator;
+
61
+
62 variant_generator(std::ostream &out, JSONGenerator &generator)
+
63 : out(out), generator(generator) {}
+
64
+
65 template <class T>
+
66 void operator()(const T &value) const {
+
67 out << R"("value" : )";
+
68 generator.generate(value);
+
69 }
+
70 };
+
71
+
72 public:
+
73 indent_t indent;
+
74
+
75 explicit JSONGenerator(std::ostream &out, bool dumpSourceInfo = false)
+
76 : out(out), dumpSourceInfo(dumpSourceInfo) {}
77
78 template <typename T>
-
79 void generate(const std::vector<T> &v) {
+
79 void generate(const safe_vector<T> &v) {
80 out << "[";
81 if (v.size() > 0) {
82 out << std::endl << ++indent;
@@ -216,210 +216,231 @@
90 out << "]";
91 }
92
-
93 template <typename T, typename U>
-
94 void generate(const std::pair<T, U> &v) {
-
95 ++indent;
-
96 out << "{" << std::endl;
-
97 toJSON(v);
-
98 out << std::endl << --indent << "}";
-
99 }
-
100
-
101 template <typename T, typename U>
-
102 void toJSON(const std::pair<T, U> &v) {
-
103 out << indent << "\"first\" : ";
-
104 generate(v.first);
-
105 out << "," << std::endl << indent << "\"second\" : ";
-
106 generate(v.second);
-
107 }
-
108
-
109 template <typename T>
-
110 void generate(const std::optional<T> &v) {
-
111 if (!v) {
-
112 out << "{ \"valid\" : false }";
-
113 return;
-
114 }
-
115 out << "{" << std::endl << ++indent;
-
116 out << "\"valid\" : true," << std::endl;
-
117 out << "\"value\" : ";
-
118 generate(*v);
-
119 out << std::endl << --indent << "}";
-
120 }
-
121
-
122 template <typename T>
-
123 void generate(const std::set<T> &v) {
-
124 out << "[" << std::endl;
-
125 if (v.size() > 0) {
-
126 auto it = v.begin();
-
127 out << ++indent;
-
128 generate(*it);
-
129 for (it++; it != v.end(); ++it) {
-
130 out << "," << std::endl << indent;
-
131 generate(*it);
-
132 }
-
133 out << std::endl << --indent;
-
134 }
-
135 out << "]";
-
136 }
-
137
-
138 template <typename T>
-
139 void generate(const ordered_set<T> &v) {
-
140 out << "[" << std::endl;
-
141 if (v.size() > 0) {
-
142 auto it = v.begin();
-
143 out << ++indent;
-
144 generate(*it);
-
145 for (it++; it != v.end(); ++it) {
-
146 out << "," << std::endl << indent;
-
147 generate(*it);
-
148 }
-
149 out << std::endl << --indent;
-
150 }
-
151 out << "]";
-
152 }
-
153
-
154 template <typename K, typename V>
-
155 void generate(const std::map<K, V> &v) {
-
156 out << "[" << std::endl;
-
157 if (v.size() > 0) {
-
158 auto it = v.begin();
-
159 out << ++indent;
-
160 generate(*it);
-
161 for (it++; it != v.end(); ++it) {
-
162 out << "," << std::endl << indent;
-
163 generate(*it);
-
164 }
-
165 out << std::endl << --indent;
-
166 }
-
167 out << "]";
-
168 }
-
169
-
170 template <typename K, typename V>
-
171 void generate(const ordered_map<K, V> &v) {
-
172 out << "[" << std::endl;
-
173 if (v.size() > 0) {
-
174 auto it = v.begin();
-
175 out << ++indent;
-
176 generate(*it);
-
177 for (it++; it != v.end(); ++it) {
-
178 out << "," << std::endl << indent;
-
179 generate(*it);
-
180 }
-
181 out << std::endl << --indent;
-
182 }
-
183 out << "]";
-
184 }
-
185
-
186 void generate(bool v) { out << (v ? "true" : "false"); }
-
187 template <typename T>
-
188 typename std::enable_if<std::is_integral<T>::value>::type generate(T v) {
-
189 out << std::to_string(v);
-
190 }
-
191 void generate(double v) { out << std::to_string(v); }
-
192 template <typename T>
-
193 typename std::enable_if<std::is_same<T, big_int>::value>::type generate(const T &v) {
-
194 out << v;
-
195 }
-
196
-
197 void generate(cstring v) {
-
198 if (v) {
-
199 out << "\"" << v.escapeJson() << "\"";
-
200 } else {
-
201 out << "null";
-
202 }
-
203 }
-
204 template <typename T>
-
205 typename std::enable_if<std::is_same<T, LTBitMatrix>::value || std::is_enum<T>::value>::type
-
206 generate(T v) {
-
207 out << "\"" << v << "\"";
+
93 template <typename T>
+
94 void generate(const std::vector<T> &v) {
+
95 out << "[";
+
96 if (v.size() > 0) {
+
97 out << std::endl << ++indent;
+
98 generate(v[0]);
+
99 for (size_t i = 1; i < v.size(); i++) {
+
100 out << "," << std::endl << indent;
+
101 generate(v[i]);
+
102 }
+
103 out << std::endl << --indent;
+
104 }
+
105 out << "]";
+
106 }
+
107
+
108 template <typename T, typename U>
+
109 void generate(const std::pair<T, U> &v) {
+
110 ++indent;
+
111 out << "{" << std::endl;
+
112 toJSON(v);
+
113 out << std::endl << --indent << "}";
+
114 }
+
115
+
116 template <typename T, typename U>
+
117 void toJSON(const std::pair<T, U> &v) {
+
118 out << indent << "\"first\" : ";
+
119 generate(v.first);
+
120 out << "," << std::endl << indent << "\"second\" : ";
+
121 generate(v.second);
+
122 }
+
123
+
124 template <typename T>
+
125 void generate(const std::optional<T> &v) {
+
126 if (!v) {
+
127 out << "{ \"valid\" : false }";
+
128 return;
+
129 }
+
130 out << "{" << std::endl << ++indent;
+
131 out << "\"valid\" : true," << std::endl;
+
132 out << "\"value\" : ";
+
133 generate(*v);
+
134 out << std::endl << --indent << "}";
+
135 }
+
136
+
137 template <typename T>
+
138 void generate(const std::set<T> &v) {
+
139 out << "[" << std::endl;
+
140 if (v.size() > 0) {
+
141 auto it = v.begin();
+
142 out << ++indent;
+
143 generate(*it);
+
144 for (it++; it != v.end(); ++it) {
+
145 out << "," << std::endl << indent;
+
146 generate(*it);
+
147 }
+
148 out << std::endl << --indent;
+
149 }
+
150 out << "]";
+
151 }
+
152
+
153 template <typename T>
+
154 void generate(const ordered_set<T> &v) {
+
155 out << "[" << std::endl;
+
156 if (v.size() > 0) {
+
157 auto it = v.begin();
+
158 out << ++indent;
+
159 generate(*it);
+
160 for (it++; it != v.end(); ++it) {
+
161 out << "," << std::endl << indent;
+
162 generate(*it);
+
163 }
+
164 out << std::endl << --indent;
+
165 }
+
166 out << "]";
+
167 }
+
168
+
169 template <typename K, typename V>
+
170 void generate(const std::map<K, V> &v) {
+
171 out << "[" << std::endl;
+
172 if (v.size() > 0) {
+
173 auto it = v.begin();
+
174 out << ++indent;
+
175 generate(*it);
+
176 for (it++; it != v.end(); ++it) {
+
177 out << "," << std::endl << indent;
+
178 generate(*it);
+
179 }
+
180 out << std::endl << --indent;
+
181 }
+
182 out << "]";
+
183 }
+
184
+
185 template <typename K, typename V>
+
186 void generate(const ordered_map<K, V> &v) {
+
187 out << "[" << std::endl;
+
188 if (v.size() > 0) {
+
189 auto it = v.begin();
+
190 out << ++indent;
+
191 generate(*it);
+
192 for (it++; it != v.end(); ++it) {
+
193 out << "," << std::endl << indent;
+
194 generate(*it);
+
195 }
+
196 out << std::endl << --indent;
+
197 }
+
198 out << "]";
+
199 }
+
200
+
201 template <class... Types>
+
202 void generate(const std::variant<Types...> &v) {
+
203 out << "{" << std::endl << ++indent;
+
204 out << R"("variant_index" : )" << v.index() << "," << std::endl << indent;
+
205 variant_generator generator(out, *this);
+
206 std::visit(generator, v);
+
207 out << std::endl << --indent << "}";
208 }
209
-
210 void generate(const bitvec &v) { out << "\"" << v << "\""; }
-
211
-
212 void generate(const match_t &v) {
-
213 out << "{" << std::endl
-
214 << (indent + 1) << "\"word0\" : " << v.word0 << "," << std::endl
-
215 << (indent + 1) << "\"word1\" : " << v.word1 << std::endl
-
216 << indent << "}";
-
217 }
-
218
-
219 template <typename T>
-
220 typename std::enable_if<has_toJSON<T>::value && !std::is_base_of<IR::Node, T>::value>::type
-
221 generate(const T &v) {
-
222 ++indent;
-
223 out << "{" << std::endl;
-
224 v.toJSON(*this);
-
225 out << std::endl << --indent << "}";
-
226 }
-
227
-
228 void generate(const IR::Node &v) {
-
229 out << "{" << std::endl;
-
230 ++indent;
-
231 if (node_refs.find(v.id) != node_refs.end()) {
-
232 out << indent << "\"Node_ID\" : " << v.id;
-
233 } else {
-
234 node_refs.insert(v.id);
-
235 v.toJSON(*this);
-
236 if (dumpSourceInfo) {
-
237 v.sourceInfoToJSON(*this);
-
238 }
-
239 }
-
240 out << std::endl << --indent << "}";
-
241 }
-
242
-
243 template <typename T>
-
244 typename std::enable_if<std::is_pointer<T>::value &&
-
245 has_toJSON<typename std::remove_pointer<T>::type>::value>::type
-
246 generate(T v) {
-
247 if (v)
-
248 generate(*v);
-
249 else
-
250 out << "null";
-
251 }
-
252
-
253 template <typename T, size_t N>
-
254 void generate(const T (&v)[N]) {
-
255 out << "[";
-
256 if (N > 0) {
-
257 out << std::endl << ++indent;
-
258 generate(v[0]);
-
259 for (size_t i = 1; i < N; i++) {
-
260 out << "," << std::endl << indent;
-
261 generate(v[i]);
-
262 }
-
263 out << std::endl << --indent;
-
264 }
-
265 out << "]";
-
266 }
-
267
-
268 JSONGenerator &operator<<(char ch) {
-
269 out << ch;
-
270 return *this;
-
271 }
-
272 JSONGenerator &operator<<(const char *s) {
-
273 out << s;
-
274 return *this;
-
275 }
-
276 JSONGenerator &operator<<(indent_t i) {
-
277 out << i;
-
278 return *this;
-
279 }
-
280 JSONGenerator &operator<<(std::ostream &(*fn)(std::ostream &)) {
-
281 out << fn;
-
282 return *this;
-
283 }
-
284 template <typename T>
-
285 JSONGenerator &operator<<(const T &v) {
-
286 generate(v);
-
287 return *this;
-
288 }
-
289};
+
210 void generate(bool v) { out << (v ? "true" : "false"); }
+
211 template <typename T>
+
212 std::enable_if_t<std::is_integral_v<T>> generate(T v) {
+
213 out << std::to_string(v);
+
214 }
+
215 void generate(double v) { out << std::to_string(v); }
+
216 template <typename T>
+
217 std::enable_if_t<std::is_same_v<T, big_int>> generate(const T &v) {
+
218 out << v;
+
219 }
+
220
+
221 void generate(cstring v) {
+
222 if (v) {
+
223 out << "\"" << v.escapeJson() << "\"";
+
224 } else {
+
225 out << "null";
+
226 }
+
227 }
+
228 template <typename T>
+
229 std::enable_if_t<std::is_same_v<T, LTBitMatrix> || std::is_enum_v<T>> generate(T v) {
+
230 out << "\"" << v << "\"";
+
231 }
+
232
+
233 void generate(const bitvec &v) { out << "\"" << v << "\""; }
+
234
+
235 void generate(const match_t &v) {
+
236 out << "{" << std::endl
+
237 << (indent + 1) << "\"word0\" : " << v.word0 << "," << std::endl
+
238 << (indent + 1) << "\"word1\" : " << v.word1 << std::endl
+
239 << indent << "}";
+
240 }
+
241
+
242 template <typename T>
+
243 std::enable_if_t<has_toJSON<T>::value && !std::is_base_of_v<IR::Node, T>> generate(const T &v) {
+
244 ++indent;
+
245 out << "{" << std::endl;
+
246 v.toJSON(*this);
+
247 out << std::endl << --indent << "}";
+
248 }
+
249
+
250 void generate(const IR::Node &v) {
+
251 out << "{" << std::endl;
+
252 ++indent;
+
253 if (node_refs.find(v.id) != node_refs.end()) {
+
254 out << indent << "\"Node_ID\" : " << v.id;
+
255 } else {
+
256 node_refs.insert(v.id);
+
257 v.toJSON(*this);
+
258 if (dumpSourceInfo) {
+
259 v.sourceInfoToJSON(*this);
+
260 }
+
261 }
+
262 out << std::endl << --indent << "}";
+
263 }
+
264
+
265 template <typename T>
+
266 std::enable_if_t<std::is_pointer_v<T> && has_toJSON<std::remove_pointer_t<T>>::value> generate(
+
267 T v) {
+
268 if (v)
+
269 generate(*v);
+
270 else
+
271 out << "null";
+
272 }
+
273
+
274 template <typename T, size_t N>
+
275 void generate(const T (&v)[N]) {
+
276 out << "[";
+
277 if (N > 0) {
+
278 out << std::endl << ++indent;
+
279 generate(v[0]);
+
280 for (size_t i = 1; i < N; i++) {
+
281 out << "," << std::endl << indent;
+
282 generate(v[i]);
+
283 }
+
284 out << std::endl << --indent;
+
285 }
+
286 out << "]";
+
287 }
+
288
+
289 JSONGenerator &operator<<(char ch) {
+
290 out << ch;
+
291 return *this;
+
292 }
+
293 JSONGenerator &operator<<(const char *s) {
+
294 out << s;
+
295 return *this;
+
296 }
+
297 JSONGenerator &operator<<(indent_t i) {
+
298 out << i;
+
299 return *this;
+
300 }
+
301 JSONGenerator &operator<<(std::ostream &(*fn)(std::ostream &)) {
+
302 out << fn;
+
303 return *this;
+
304 }
+
305 template <typename T>
+
306 JSONGenerator &operator<<(const T &v) {
+
307 generate(v);
+
308 return *this;
+
309 }
+
310};
-
290
-
291} // namespace P4
-
292
-
293#endif /* IR_JSON_GENERATOR_H_ */
+
311
+
312} // namespace P4
+
313
+
314#endif /* IR_JSON_GENERATOR_H_ */
Definition node.h:94
-
Definition json_generator.h:36
+
Definition json_generator.h:37
Definition bitvec.h:120
Definition cstring.h:85
cstring escapeJson() const
Definition cstring.cpp:272
diff --git a/json__loader_8h_source.html b/json__loader_8h_source.html index a7dd39383c4..dfc804acc31 100644 --- a/json__loader_8h_source.html +++ b/json__loader_8h_source.html @@ -147,383 +147,407 @@
22#include <string>
23#include <unordered_map>
24#include <utility>
-
25
-
26#include "ir.h"
-
27#include "json_parser.h"
-
28#include "lib/bitvec.h"
-
29#include "lib/cstring.h"
-
30#include "lib/ltbitmatrix.h"
-
31#include "lib/match.h"
-
32#include "lib/ordered_map.h"
-
33#include "lib/ordered_set.h"
-
34#include "lib/safe_vector.h"
-
35
-
36namespace P4 {
-
37
-
- -
39 template <typename T>
-
40 class has_fromJSON {
-
41 typedef char small;
-
42 typedef struct {
-
43 char c[2];
-
44 } big;
-
45
-
46 template <typename C>
-
47 static small test(decltype(&C::fromJSON));
-
48 template <typename C>
-
49 static big test(...);
-
50
-
51 public:
-
52 static const bool value = sizeof(test<T>(0)) == sizeof(char);
-
53 };
-
54
-
55 public:
-
56 std::unordered_map<int, IR::Node *> &node_refs;
-
57 JsonData *json = nullptr;
-
58
-
59 explicit JSONLoader(std::istream &in)
-
60 : node_refs(*(new std::unordered_map<int, IR::Node *>())) {
-
61 in >> json;
-
62 }
-
63
-
64 explicit JSONLoader(JsonData *json)
-
65 : node_refs(*(new std::unordered_map<int, IR::Node *>())), json(json) {}
-
66
-
67 JSONLoader(JsonData *json, std::unordered_map<int, IR::Node *> &refs)
-
68 : node_refs(refs), json(json) {}
-
69
-
70 JSONLoader(const JSONLoader &unpacker, const std::string &field)
-
71 : node_refs(unpacker.node_refs), json(nullptr) {
-
72 if (auto *obj = unpacker.json->to<JsonObject>()) json = get(obj, field);
-
73 }
-
74
-
75 private:
-
76 const IR::Node *get_node() {
-
77 if (!json || !json->is<JsonObject>()) return nullptr; // invalid json exception?
-
78 int id = json->as<JsonObject>().get_id();
-
79 if (id >= 0) {
-
80 if (node_refs.find(id) == node_refs.end()) {
-
81 if (auto fn = get(IR::unpacker_table, json->as<JsonObject>().get_type())) {
-
82 node_refs[id] = fn(*this);
-
83 // Creating JsonObject from source_info read from jsonFile
-
84 // and setting SourceInfo for each node
-
85 // when "--fromJSON" flag is used
-
86 JsonObject *obj = new JsonObject(json->as<JsonObject>().get_sourceJson());
-
87 if (obj->hasSrcInfo() == true) {
-
88 node_refs[id]->srcInfo =
-
89 Util::SourceInfo(obj->get_filename(), obj->get_line(),
-
90 obj->get_column(), obj->get_sourceFragment());
-
91 }
-
92 } else {
-
93 return nullptr;
-
94 } // invalid json exception?
-
95 }
-
96 return node_refs[id];
-
97 }
-
98 return nullptr; // invalid json exception?
-
99 }
-
100
-
101 template <typename T>
-
102 void unpack_json(safe_vector<T> &v) {
-
103 T temp;
-
104 for (auto e : json->as<JsonVector>()) {
-
105 load(e, temp);
-
106 v.push_back(temp);
-
107 }
-
108 }
-
109
-
110 template <typename T>
-
111 void unpack_json(std::set<T> &v) {
-
112 T temp;
-
113 for (auto e : json->as<JsonVector>()) {
-
114 load(e, temp);
-
115 v.insert(temp);
-
116 }
-
117 }
-
118
-
119 template <typename T>
-
120 void unpack_json(ordered_set<T> &v) {
-
121 T temp;
-
122 for (auto e : json->as<JsonVector>()) {
-
123 load(e, temp);
-
124 v.insert(temp);
-
125 }
-
126 }
-
127
-
128 template <typename T>
-
129 void unpack_json(IR::Vector<T> &v) {
-
130 v = *IR::Vector<T>::fromJSON(*this);
-
131 }
-
132 template <typename T>
-
133 void unpack_json(const IR::Vector<T> *&v) {
-
134 v = IR::Vector<T>::fromJSON(*this);
-
135 }
-
136 template <typename T>
-
137 void unpack_json(IR::IndexedVector<T> &v) {
- -
139 }
-
140 template <typename T>
-
141 void unpack_json(const IR::IndexedVector<T> *&v) {
- -
143 }
-
144 template <class T, template <class K, class V, class COMP, class ALLOC> class MAP, class COMP,
-
145 class ALLOC>
-
146 void unpack_json(IR::NameMap<T, MAP, COMP, ALLOC> &m) {
- -
148 }
-
149 template <class T, template <class K, class V, class COMP, class ALLOC> class MAP, class COMP,
-
150 class ALLOC>
-
151 void unpack_json(const IR::NameMap<T, MAP, COMP, ALLOC> *&m) {
- -
153 }
-
154
-
155 template <typename K, typename V>
-
156 void unpack_json(std::map<K, V> &v) {
-
157 std::pair<K, V> temp;
-
158 for (auto e : json->as<JsonObject>()) {
-
159 JsonString *k = new JsonString(e.first);
-
160 load(k, temp.first);
-
161 load(e.second, temp.second);
-
162 v.insert(temp);
-
163 }
-
164 }
-
165 template <typename K, typename V>
-
166 void unpack_json(ordered_map<K, V> &v) {
-
167 std::pair<K, V> temp;
-
168 for (auto e : json->as<JsonObject>()) {
-
169 JsonString *k = new JsonString(e.first);
-
170 load(k, temp.first);
-
171 load(e.second, temp.second);
-
172 v.insert(temp);
-
173 }
-
174 }
-
175 template <typename V>
-
176 void unpack_json(string_map<V> &v) {
-
177 std::pair<cstring, V> temp;
-
178 for (auto e : json->as<JsonObject>()) {
-
179 JsonString *k = new JsonString(e.first);
-
180 load(k, temp.first);
-
181 load(e.second, temp.second);
-
182 v.insert(temp);
-
183 }
-
184 }
-
185
-
186 template <typename K, typename V>
-
187 void unpack_json(std::multimap<K, V> &v) {
-
188 std::pair<K, V> temp;
-
189 for (auto e : json->as<JsonObject>()) {
-
190 JsonString *k = new JsonString(e.first);
-
191 load(k, temp.first);
-
192 load(e.second, temp.second);
-
193 v.insert(temp);
-
194 }
-
195 }
-
196
-
197 template <typename T>
-
198 void unpack_json(std::vector<T> &v) {
-
199 T temp;
-
200 for (auto e : json->as<JsonVector>()) {
-
201 load(e, temp);
-
202 v.push_back(temp);
-
203 }
-
204 }
-
205
-
206 template <typename T, typename U>
-
207 void unpack_json(std::pair<T, U> &v) {
-
208 const JsonObject *obj = json->checkedTo<JsonObject>();
-
209 load(::P4::get(obj, "first"), v.first);
-
210 load(::P4::get(obj, "second"), v.second);
-
211 }
-
212
-
213 template <typename T>
-
214 void unpack_json(std::optional<T> &v) {
-
215 const JsonObject *obj = json->checkedTo<JsonObject>();
-
216 bool isValid = false;
-
217 load(::P4::get(obj, "valid"), isValid);
-
218 if (!isValid) {
-
219 v = std::nullopt;
-
220 return;
-
221 }
-
222 T value;
-
223 load(::P4::get(obj, "value"), value), v = std::move(value);
-
224 }
-
225
-
226 void unpack_json(bool &v) { v = json->as<JsonBoolean>(); }
-
227
-
228 template <typename T>
-
229 typename std::enable_if<std::is_integral<T>::value>::type unpack_json(T &v) {
-
230 v = json->as<JsonNumber>();
-
231 }
-
232 void unpack_json(big_int &v) { v = json->as<JsonNumber>().val; }
-
233 void unpack_json(cstring &v) {
-
234 std::string tmp = json->as<JsonString>();
-
235 std::string::size_type p = 0;
-
236 while ((p = tmp.find('\\', p)) != std::string::npos) {
-
237 tmp.erase(p, 1);
-
238 switch (tmp[p]) {
-
239 case 'n':
-
240 tmp[p] = '\n';
-
241 break;
-
242 case 'r':
-
243 tmp[p] = '\r';
-
244 break;
-
245 case 't':
-
246 tmp[p] = '\t';
-
247 break;
-
248 }
-
249 p++;
-
250 }
-
251 if (!json->is<JsonNull>()) v = tmp;
-
252 }
-
253 void unpack_json(IR::ID &v) {
-
254 if (!json->is<JsonNull>()) v.name = json->as<JsonString>();
-
255 }
-
256
-
257 void unpack_json(LTBitMatrix &m) {
-
258 if (auto *s = json->to<JsonString>()) s->c_str() >> m;
-
259 }
-
260
-
261 void unpack_json(bitvec &v) {
-
262 if (auto *s = json->to<JsonString>()) s->c_str() >> v;
-
263 }
-
264
-
265 template <typename T>
-
266 typename std::enable_if<std::is_enum<T>::value>::type unpack_json(T &v) {
-
267 if (auto *s = json->to<JsonString>()) *s >> v;
-
268 }
-
269
-
270 void unpack_json(match_t &v) {
-
271 if (auto *s = json->to<JsonString>()) s->c_str() >> v;
-
272 }
-
273
-
274 void unpack_json(UnparsedConstant *&v) {
-
275 cstring text("");
-
276 unsigned skip = 0;
-
277 unsigned base = 0;
-
278 bool hasWidth = false;
-
279
-
280 load("text", text);
-
281 load("skip", skip);
-
282 load("base", base);
-
283 load("hasWidth", hasWidth);
-
284
-
285 v = new UnparsedConstant({text, skip, base, hasWidth});
+
25#include <variant>
+
26
+
27#include "ir.h"
+
28#include "json_parser.h"
+
29#include "lib/bitvec.h"
+
30#include "lib/cstring.h"
+
31#include "lib/ltbitmatrix.h"
+
32#include "lib/match.h"
+
33#include "lib/ordered_map.h"
+
34#include "lib/ordered_set.h"
+
35#include "lib/safe_vector.h"
+
36
+
37namespace P4 {
+
38
+
+ +
40 template <typename T>
+
41 class has_fromJSON {
+
42 typedef char small;
+
43 typedef struct {
+
44 char c[2];
+
45 } big;
+
46
+
47 template <typename C>
+
48 static small test(decltype(&C::fromJSON));
+
49 template <typename C>
+
50 static big test(...);
+
51
+
52 public:
+
53 static const bool value = sizeof(test<T>(0)) == sizeof(char);
+
54 };
+
55
+
56 public:
+
57 std::unordered_map<int, IR::Node *> &node_refs;
+
58 JsonData *json = nullptr;
+
59
+
60 explicit JSONLoader(std::istream &in)
+
61 : node_refs(*(new std::unordered_map<int, IR::Node *>())) {
+
62 in >> json;
+
63 }
+
64
+
65 explicit JSONLoader(JsonData *json)
+
66 : node_refs(*(new std::unordered_map<int, IR::Node *>())), json(json) {}
+
67
+
68 JSONLoader(JsonData *json, std::unordered_map<int, IR::Node *> &refs)
+
69 : node_refs(refs), json(json) {}
+
70
+
71 JSONLoader(const JSONLoader &unpacker, const std::string &field)
+
72 : node_refs(unpacker.node_refs), json(nullptr) {
+
73 if (auto *obj = unpacker.json->to<JsonObject>()) json = get(obj, field);
+
74 }
+
75
+
76 private:
+
77 const IR::Node *get_node() {
+
78 if (!json || !json->is<JsonObject>()) return nullptr; // invalid json exception?
+
79 int id = json->as<JsonObject>().get_id();
+
80 if (id >= 0) {
+
81 if (node_refs.find(id) == node_refs.end()) {
+
82 if (auto fn = get(IR::unpacker_table, json->as<JsonObject>().get_type())) {
+
83 node_refs[id] = fn(*this);
+
84 // Creating JsonObject from source_info read from jsonFile
+
85 // and setting SourceInfo for each node
+
86 // when "--fromJSON" flag is used
+
87 JsonObject *obj = new JsonObject(json->as<JsonObject>().get_sourceJson());
+
88 if (obj->hasSrcInfo() == true) {
+
89 node_refs[id]->srcInfo =
+
90 Util::SourceInfo(obj->get_filename(), obj->get_line(),
+
91 obj->get_column(), obj->get_sourceFragment());
+
92 }
+
93 } else {
+
94 return nullptr;
+
95 } // invalid json exception?
+
96 }
+
97 return node_refs[id];
+
98 }
+
99 return nullptr; // invalid json exception?
+
100 }
+
101
+
102 template <typename T>
+
103 void unpack_json(safe_vector<T> &v) {
+
104 T temp;
+
105 for (auto e : json->as<JsonVector>()) {
+
106 load(e, temp);
+
107 v.push_back(temp);
+
108 }
+
109 }
+
110
+
111 template <typename T>
+
112 void unpack_json(std::set<T> &v) {
+
113 T temp;
+
114 for (auto e : json->as<JsonVector>()) {
+
115 load(e, temp);
+
116 v.insert(temp);
+
117 }
+
118 }
+
119
+
120 template <typename T>
+
121 void unpack_json(ordered_set<T> &v) {
+
122 T temp;
+
123 for (auto e : json->as<JsonVector>()) {
+
124 load(e, temp);
+
125 v.insert(temp);
+
126 }
+
127 }
+
128
+
129 template <typename T>
+
130 void unpack_json(IR::Vector<T> &v) {
+
131 v = *IR::Vector<T>::fromJSON(*this);
+
132 }
+
133 template <typename T>
+
134 void unpack_json(const IR::Vector<T> *&v) {
+
135 v = IR::Vector<T>::fromJSON(*this);
+
136 }
+
137 template <typename T>
+
138 void unpack_json(IR::IndexedVector<T> &v) {
+ +
140 }
+
141 template <typename T>
+
142 void unpack_json(const IR::IndexedVector<T> *&v) {
+ +
144 }
+
145 template <class T, template <class K, class V, class COMP, class ALLOC> class MAP, class COMP,
+
146 class ALLOC>
+
147 void unpack_json(IR::NameMap<T, MAP, COMP, ALLOC> &m) {
+ +
149 }
+
150 template <class T, template <class K, class V, class COMP, class ALLOC> class MAP, class COMP,
+
151 class ALLOC>
+
152 void unpack_json(const IR::NameMap<T, MAP, COMP, ALLOC> *&m) {
+ +
154 }
+
155
+
156 template <typename K, typename V>
+
157 void unpack_json(std::map<K, V> &v) {
+
158 std::pair<K, V> temp;
+
159 for (auto e : json->as<JsonObject>()) {
+
160 JsonString *k = new JsonString(e.first);
+
161 load(k, temp.first);
+
162 load(e.second, temp.second);
+
163 v.insert(temp);
+
164 }
+
165 }
+
166 template <typename K, typename V>
+
167 void unpack_json(ordered_map<K, V> &v) {
+
168 std::pair<K, V> temp;
+
169 for (auto e : json->as<JsonObject>()) {
+
170 JsonString *k = new JsonString(e.first);
+
171 load(k, temp.first);
+
172 load(e.second, temp.second);
+
173 v.insert(temp);
+
174 }
+
175 }
+
176 template <typename V>
+
177 void unpack_json(string_map<V> &v) {
+
178 std::pair<cstring, V> temp;
+
179 for (auto e : json->as<JsonObject>()) {
+
180 JsonString *k = new JsonString(e.first);
+
181 load(k, temp.first);
+
182 load(e.second, temp.second);
+
183 v.insert(temp);
+
184 }
+
185 }
+
186
+
187 template <typename K, typename V>
+
188 void unpack_json(std::multimap<K, V> &v) {
+
189 std::pair<K, V> temp;
+
190 for (auto e : json->as<JsonObject>()) {
+
191 JsonString *k = new JsonString(e.first);
+
192 load(k, temp.first);
+
193 load(e.second, temp.second);
+
194 v.insert(temp);
+
195 }
+
196 }
+
197
+
198 template <typename T>
+
199 void unpack_json(std::vector<T> &v) {
+
200 T temp;
+
201 for (auto e : json->as<JsonVector>()) {
+
202 load(e, temp);
+
203 v.push_back(temp);
+
204 }
+
205 }
+
206
+
207 template <typename T, typename U>
+
208 void unpack_json(std::pair<T, U> &v) {
+
209 const JsonObject *obj = json->checkedTo<JsonObject>();
+
210 load(::P4::get(obj, "first"), v.first);
+
211 load(::P4::get(obj, "second"), v.second);
+
212 }
+
213
+
214 template <typename T>
+
215 void unpack_json(std::optional<T> &v) {
+
216 const JsonObject *obj = json->checkedTo<JsonObject>();
+
217 bool isValid = false;
+
218 load(::P4::get(obj, "valid"), isValid);
+
219 if (!isValid) {
+
220 v = std::nullopt;
+
221 return;
+
222 }
+
223 T value;
+
224 load(::P4::get(obj, "value"), value), v = std::move(value);
+
225 }
+
226
+
227 template <int N, class Variant>
+
228 std::enable_if_t<N == std::variant_size_v<Variant>> unpack_variant(const JsonObject *,
+
229 int /*target*/,
+
230 Variant & /*variant*/) {
+
231 BUG("Error traversing variant during load");
+
232 }
+
233
+
234 template <int N, class Variant>
+
235 std::enable_if_t<(N < std::variant_size_v<Variant>)> unpack_variant(const JsonObject *obj,
+
236 int target,
+
237 Variant &variant) {
+
238 if (N == target) {
+
239 variant.template emplace<N>();
+
240 load(P4::get(obj, "value"), std::get<N>(variant));
+
241 } else
+
242 unpack_variant<N + 1>(obj, target, variant);
+
243 }
+
244
+
245 template <class... Types>
+
246 void unpack_json(std::variant<Types...> &v) {
+
247 const JsonObject *obj = json->checkedTo<JsonObject>();
+
248 int index = -1;
+
249 load(P4::get(obj, "variant_index"), index);
+
250 unpack_variant<0>(obj, index, v);
+
251 }
+
252
+
253 void unpack_json(bool &v) { v = json->as<JsonBoolean>(); }
+
254
+
255 template <typename T>
+
256 std::enable_if_t<std::is_integral_v<T>> unpack_json(T &v) {
+
257 v = json->as<JsonNumber>();
+
258 }
+
259 void unpack_json(big_int &v) { v = json->as<JsonNumber>().val; }
+
260 void unpack_json(cstring &v) {
+
261 std::string tmp = json->as<JsonString>();
+
262 std::string::size_type p = 0;
+
263 while ((p = tmp.find('\\', p)) != std::string::npos) {
+
264 tmp.erase(p, 1);
+
265 switch (tmp[p]) {
+
266 case 'n':
+
267 tmp[p] = '\n';
+
268 break;
+
269 case 'r':
+
270 tmp[p] = '\r';
+
271 break;
+
272 case 't':
+
273 tmp[p] = '\t';
+
274 break;
+
275 }
+
276 p++;
+
277 }
+
278 if (!json->is<JsonNull>()) v = tmp;
+
279 }
+
280 void unpack_json(IR::ID &v) {
+
281 if (!json->is<JsonNull>()) v.name = json->as<JsonString>();
+
282 }
+
283
+
284 void unpack_json(LTBitMatrix &m) {
+
285 if (auto *s = json->to<JsonString>()) s->c_str() >> m;
286 }
287
-
288 template <typename T>
-
289 typename std::enable_if<
-
290 has_fromJSON<T>::value && !std::is_base_of<IR::Node, T>::value &&
-
291 std::is_pointer<decltype(T::fromJSON(std::declval<JSONLoader &>()))>::value>::type
-
292 unpack_json(T *&v) {
-
293 v = T::fromJSON(*this);
-
294 }
-
295
-
296 template <typename T>
-
297 typename std::enable_if<
-
298 has_fromJSON<T>::value && !std::is_base_of<IR::Node, T>::value &&
-
299 std::is_pointer<decltype(T::fromJSON(std::declval<JSONLoader &>()))>::value>::type
-
300 unpack_json(T &v) {
-
301 v = *(T::fromJSON(*this));
-
302 }
-
303
-
304 template <typename T>
-
305 typename std::enable_if<
-
306 has_fromJSON<T>::value && !std::is_base_of<IR::Node, T>::value &&
-
307 !std::is_pointer<decltype(T::fromJSON(std::declval<JSONLoader &>()))>::value>::type
-
308 unpack_json(T &v) {
-
309 v = T::fromJSON(*this);
-
310 }
+
288 void unpack_json(bitvec &v) {
+
289 if (auto *s = json->to<JsonString>()) s->c_str() >> v;
+
290 }
+
291
+
292 template <typename T>
+
293 std::enable_if_t<std::is_enum_v<T>> unpack_json(T &v) {
+
294 if (auto *s = json->to<JsonString>()) *s >> v;
+
295 }
+
296
+
297 void unpack_json(match_t &v) {
+
298 if (auto *s = json->to<JsonString>()) s->c_str() >> v;
+
299 }
+
300
+
301 void unpack_json(UnparsedConstant *&v) {
+
302 cstring text("");
+
303 unsigned skip = 0;
+
304 unsigned base = 0;
+
305 bool hasWidth = false;
+
306
+
307 load("text", text);
+
308 load("skip", skip);
+
309 load("base", base);
+
310 load("hasWidth", hasWidth);
311
-
312 template <typename T>
-
313 typename std::enable_if<std::is_base_of<IR::INode, T>::value>::type unpack_json(T &v) {
-
314 v = get_node()->as<T>();
-
315 }
-
316 template <typename T>
-
317 typename std::enable_if<std::is_base_of<IR::INode, T>::value>::type unpack_json(const T *&v) {
-
318 v = get_node()->checkedTo<T>();
-
319 }
-
320
-
321 template <typename T, size_t N>
-
322 void unpack_json(T (&v)[N]) {
-
323 if (auto *j = json->to<JsonVector>()) {
-
324 for (size_t i = 0; i < N && i < j->size(); ++i) {
-
325 json = (*j)[i];
-
326 unpack_json(v[i]);
-
327 }
-
328 }
-
329 }
-
330
-
331 public:
-
332 template <typename T>
-
333 void load(JsonData *json, T &v) {
-
334 JSONLoader(json, node_refs).unpack_json(v);
-
335 }
-
336
-
337 template <typename T>
-
338 void load(const std::string field, T *&v) {
-
339 JSONLoader loader(*this, field);
-
340 if (loader.json == nullptr) {
-
341 v = nullptr;
-
342 } else {
-
343 loader.unpack_json(v);
-
344 }
-
345 }
-
346
-
347 template <typename T>
-
348 void load(const std::string field, T &v) {
-
349 JSONLoader loader(*this, field);
-
350 if (loader.json == nullptr) return;
-
351 loader.unpack_json(v);
-
352 }
-
353
-
354 template <typename T>
-
355 JSONLoader &operator>>(T &v) {
-
356 unpack_json(v);
-
357 return *this;
-
358 }
-
359};
-
+
312 v = new UnparsedConstant({text, skip, base, hasWidth});
+
313 }
+
314
+
315 template <typename T>
+
316 std::enable_if_t<has_fromJSON<T>::value && !std::is_base_of_v<IR::Node, T> &&
+
317 std::is_pointer_v<decltype(T::fromJSON(std::declval<JSONLoader &>()))>>
+
318 unpack_json(T *&v) {
+
319 v = T::fromJSON(*this);
+
320 }
+
321
+
322 template <typename T>
+
323 std::enable_if_t<has_fromJSON<T>::value && !std::is_base_of_v<IR::Node, T> &&
+
324 std::is_pointer_v<decltype(T::fromJSON(std::declval<JSONLoader &>()))>>
+
325 unpack_json(T &v) {
+
326 v = *(T::fromJSON(*this));
+
327 }
+
328
+
329 template <typename T>
+
330 std::enable_if_t<has_fromJSON<T>::value && !std::is_base_of<IR::Node, T>::value &&
+
331 !std::is_pointer_v<decltype(T::fromJSON(std::declval<JSONLoader &>()))>>
+
332 unpack_json(T &v) {
+
333 v = T::fromJSON(*this);
+
334 }
+
335
+
336 template <typename T>
+
337 std::enable_if_t<std::is_base_of_v<IR::INode, T>> unpack_json(T &v) {
+
338 v = get_node()->as<T>();
+
339 }
+
340 template <typename T>
+
341 std::enable_if_t<std::is_base_of_v<IR::INode, T>> unpack_json(const T *&v) {
+
342 v = get_node()->checkedTo<T>();
+
343 }
+
344
+
345 template <typename T, size_t N>
+
346 void unpack_json(T (&v)[N]) {
+
347 if (auto *j = json->to<JsonVector>()) {
+
348 for (size_t i = 0; i < N && i < j->size(); ++i) {
+
349 json = (*j)[i];
+
350 unpack_json(v[i]);
+
351 }
+
352 }
+
353 }
+
354
+
355 public:
+
356 template <typename T>
+
357 void load(JsonData *json, T &v) {
+
358 JSONLoader(json, node_refs).unpack_json(v);
+
359 }
360
-
361template <class T>
-
362IR::Vector<T>::Vector(JSONLoader &json) : VectorBase(json) {
-
363 json.load("vec", vec);
-
364}
-
365template <class T>
-
366IR::Vector<T> *IR::Vector<T>::fromJSON(JSONLoader &json) {
-
367 return new Vector<T>(json);
-
368}
-
369template <class T>
-
370IR::IndexedVector<T>::IndexedVector(JSONLoader &json) : Vector<T>(json) {
-
371 json.load("declarations", declarations);
-
372}
-
373template <class T>
-
374IR::IndexedVector<T> *IR::IndexedVector<T>::fromJSON(JSONLoader &json) {
-
375 return new IndexedVector<T>(json);
-
376}
-
377template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
378 class COMP /*= std::less<cstring>*/,
-
379 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
-
380IR::NameMap<T, MAP, COMP, ALLOC>::NameMap(JSONLoader &json) : Node(json) {
-
381 json.load("symbols", symbols);
-
382}
-
383template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
-
384 class COMP /*= std::less<cstring>*/,
-
385 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
-
386IR::NameMap<T, MAP, COMP, ALLOC> *IR::NameMap<T, MAP, COMP, ALLOC>::fromJSON(JSONLoader &json) {
-
387 return new IR::NameMap<T, MAP, COMP, ALLOC>(json);
+
361 template <typename T>
+
362 void load(const std::string field, T *&v) {
+
363 JSONLoader loader(*this, field);
+
364 if (loader.json == nullptr) {
+
365 v = nullptr;
+
366 } else {
+
367 loader.unpack_json(v);
+
368 }
+
369 }
+
370
+
371 template <typename T>
+
372 void load(const std::string field, T &v) {
+
373 JSONLoader loader(*this, field);
+
374 if (loader.json == nullptr) return;
+
375 loader.unpack_json(v);
+
376 }
+
377
+
378 template <typename T>
+
379 JSONLoader &operator>>(T &v) {
+
380 unpack_json(v);
+
381 return *this;
+
382 }
+
383};
+
+
384
+
385template <class T>
+
386IR::Vector<T>::Vector(JSONLoader &json) : VectorBase(json) {
+
387 json.load("vec", vec);
388}
-
389
-
390} // namespace P4
-
391
-
392#endif /* IR_JSON_LOADER_H_ */
+
389template <class T>
+
390IR::Vector<T> *IR::Vector<T>::fromJSON(JSONLoader &json) {
+
391 return new Vector<T>(json);
+
392}
+
393template <class T>
+
394IR::IndexedVector<T>::IndexedVector(JSONLoader &json) : Vector<T>(json) {
+
395 json.load("declarations", declarations);
+
396}
+
397template <class T>
+
398IR::IndexedVector<T> *IR::IndexedVector<T>::fromJSON(JSONLoader &json) {
+
399 return new IndexedVector<T>(json);
+
400}
+
401template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
402 class COMP /*= std::less<cstring>*/,
+
403 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
+
404IR::NameMap<T, MAP, COMP, ALLOC>::NameMap(JSONLoader &json) : Node(json) {
+
405 json.load("symbols", symbols);
+
406}
+
407template <class T, template <class K, class V, class COMP, class ALLOC> class MAP /*= std::map */,
+
408 class COMP /*= std::less<cstring>*/,
+
409 class ALLOC /*= std::allocator<std::pair<cstring, const T*>>*/>
+
410IR::NameMap<T, MAP, COMP, ALLOC> *IR::NameMap<T, MAP, COMP, ALLOC>::fromJSON(JSONLoader &json) {
+
411 return new IR::NameMap<T, MAP, COMP, ALLOC>(json);
+
412}
+
413
+
414} // namespace P4
+
415
+
416#endif /* IR_JSON_LOADER_H_ */
const T * checkedTo() const
Performs a checked cast. A BUG occurs if the cast fails.
Definition castable.h:54
const T & as() const
Tries to convert the class to type T. A BUG occurs if the cast fails.
Definition castable.h:42
Definition node.h:52
Definition namemap.h:38
Definition node.h:94
Definition vector.h:59
-
Definition json_loader.h:38
+
Definition json_loader.h:39
Definition json_parser.h:36
Definition json_parser.h:15
Definition json_parser.h:92
diff --git a/lib_2bitrange_8h_source.html b/lib_2bitrange_8h_source.html index 7146d16834b..d2609c6978d 100644 --- a/lib_2bitrange_8h_source.html +++ b/lib_2bitrange_8h_source.html @@ -752,8 +752,8 @@
814} // namespace P4::Util
815
816#endif /* LIB_BITRANGE_H_ */
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition lib/bitrange.h:34
Definition bitvec.h:201
Definition bitvec.h:120
diff --git a/marshal_8h_source.html b/marshal_8h_source.html index f9e29c0b2dd..3cf862800c9 100644 --- a/marshal_8h_source.html +++ b/marshal_8h_source.html @@ -178,8 +178,8 @@
73} // namespace P4
74
75#endif /* PARDE_MARSHAL_H_ */
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition cstring.h:85
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
Definition marshal.h:32
diff --git a/match__register_8h_source.html b/match__register_8h_source.html index 5486b914f63..b7c6bdbe31b 100644 --- a/match__register_8h_source.html +++ b/match__register_8h_source.html @@ -172,8 +172,8 @@
63} // namespace P4
64
65#endif /* BACKENDS_TOFINO_BF_P4C_PARDE_MATCH_REGISTER_H_ */
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition match_register.h:31
void toJSON(JSONGenerator &json) const
JSON serialization/deserialization.
Definition match_register.cpp:46
static int s_id
Definition match_register.h:48
diff --git a/namemap_8h_source.html b/namemap_8h_source.html index bf7abe48045..d17e858c99b 100644 --- a/namemap_8h_source.html +++ b/namemap_8h_source.html @@ -296,8 +296,8 @@
const T & as() const
Tries to convert the class to type T. A BUG occurs if the cast fails.
Definition castable.h:42
Definition namemap.h:38
Definition node.h:94
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Type-erased Enumerator interface.
Definition enumerator.h:68
Definition visitor.h:75
Definition cstring.h:85
diff --git a/namespace_p4.html b/namespace_p4.html index 35a627fbec1..84b9d0491af 100644 --- a/namespace_p4.html +++ b/namespace_p4.html @@ -2019,6 +2019,9 @@
+ + diff --git a/node_8h_source.html b/node_8h_source.html index d7b225782e1..5ed2da45f49 100644 --- a/node_8h_source.html +++ b/node_8h_source.html @@ -369,8 +369,8 @@
Definition node.h:94
friend void AbslStringify(Sink &sink, const IR::Node *n)
Definition node.h:171
Definition visitor.h:400
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition visitor.h:372
Definition visitor.h:424
Definition source_file.h:227
diff --git a/p4_runtime_annotations_8h_source.html b/p4_runtime_annotations_8h_source.html index f6a37ca8314..71576d9d465 100644 --- a/p4_runtime_annotations_8h_source.html +++ b/p4_runtime_annotations_8h_source.html @@ -189,8 +189,8 @@
63
64#endif // CONTROL_PLANE_P4RUNTIMEANNOTATIONS_H_
Parses P4Runtime-specific annotations.
Definition p4RuntimeAnnotations.h:28
-
Definition parseAnnotations.h:114
-
ParseAnnotations(bool warn=false)
Produces a pass that rewrites the spec-defined annotations.
Definition parseAnnotations.h:126
+
Definition parseAnnotations.h:138
+
ParseAnnotations(bool warn=false)
Produces a pass that rewrites the spec-defined annotations.
Definition parseAnnotations.h:150
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/p4_runtime_arch_handler_8h_source.html b/p4_runtime_arch_handler_8h_source.html index df4b53af540..f4dd936da20 100644 --- a/p4_runtime_arch_handler_8h_source.html +++ b/p4_runtime_arch_handler_8h_source.html @@ -334,217 +334,218 @@
276
277 for (const IR::Annotation *annotation : annotated->getAnnotations()) {
278 // Always add all structured annotations.
-
279 if (annotation->annotationKind() != IR::Annotation::Kind::Unstructured) {
-
280 serializeOneStructuredAnnotation(annotation, message->add_structured_annotations());
-
281 continue;
-
282 }
-
283 // Don't output the @name or @id annotations; they're represented
-
284 // elsewhere in P4Info messages.
-
285 if (annotation->name == IR::Annotation::nameAnnotation) continue;
-
286 if (annotation->name == "id") continue;
-
287
-
288 // Don't output the @brief or @description annotations; they're
-
289 // represented using the documentation fields.
-
290 if (annotation->name == "brief" || annotation->name == "description") continue;
-
291
-
292 if (p(annotation->name)) continue;
-
293
-
294 message->add_annotations(serializeOneAnnotation(annotation));
-
295 }
-
296}
-
297
-
299template <typename Message>
-
-
300void addAnnotations(Message *message, const IR::IAnnotated *annotated) {
-
301 addAnnotations(message, annotated, [](cstring) { return false; });
-
302}
+
279 if (annotation->annotationKind() != IR::Annotation::Kind::Unstructured &&
+
280 annotation->annotationKind() != IR::Annotation::Kind::Unparsed) {
+
281 serializeOneStructuredAnnotation(annotation, message->add_structured_annotations());
+
282 continue;
+
283 }
+
284 // Don't output the @name or @id annotations; they're represented
+
285 // elsewhere in P4Info messages.
+
286 if (annotation->name == IR::Annotation::nameAnnotation) continue;
+
287 if (annotation->name == "id") continue;
+
288
+
289 // Don't output the @brief or @description annotations; they're
+
290 // represented using the documentation fields.
+
291 if (annotation->name == "brief" || annotation->name == "description") continue;
+
292
+
293 if (p(annotation->name)) continue;
+
294
+
295 message->add_annotations(serializeOneAnnotation(annotation));
+
296 }
+
297}
+
298
+
300template <typename Message>
+
+
301void addAnnotations(Message *message, const IR::IAnnotated *annotated) {
+
302 addAnnotations(message, annotated, [](cstring) { return false; });
+
303}
-
303
-
306template <typename Message>
-
-
307void addDocumentation(Message *message, const IR::IAnnotated *annotated) {
-
308 CHECK_NULL(message);
-
309
-
310 // Synthesized resources may have no annotations.
-
311 if (annotated == nullptr) return;
-
312
-
313 ::p4::config::v1::Documentation doc;
-
314 bool hasDoc = false;
-
315
-
316 // we iterate over all annotations looking for '@brief' and / or
-
317 // '@description'. As per the P4Runtime spec, we only set the 'doc' field in
-
318 // the message if at least one of them is present.
-
319 for (const IR::Annotation *annotation : annotated->getAnnotations()) {
-
320 if (annotation->name == "brief") {
-
321 auto brief = annotation->expr[0]->to<IR::StringLiteral>();
-
322 // guaranteed by ParseAnnotations pass
-
323 CHECK_NULL(brief);
-
324 doc.set_brief(brief->value);
-
325 hasDoc = true;
-
326 continue;
-
327 }
-
328 if (annotation->name == "description") {
-
329 auto description = annotation->expr[0]->to<IR::StringLiteral>();
-
330 // guaranteed by ParseAnnotations pass
-
331 CHECK_NULL(description);
-
332 doc.set_description(description->value);
-
333 hasDoc = true;
-
334 continue;
-
335 }
-
336 }
-
337
-
338 if (hasDoc) message->mutable_doc()->CopyFrom(doc);
-
339}
+
304
+
307template <typename Message>
+
+
308void addDocumentation(Message *message, const IR::IAnnotated *annotated) {
+
309 CHECK_NULL(message);
+
310
+
311 // Synthesized resources may have no annotations.
+
312 if (annotated == nullptr) return;
+
313
+
314 ::p4::config::v1::Documentation doc;
+
315 bool hasDoc = false;
+
316
+
317 // we iterate over all annotations looking for '@brief' and / or
+
318 // '@description'. As per the P4Runtime spec, we only set the 'doc' field in
+
319 // the message if at least one of them is present.
+
320 for (const IR::Annotation *annotation : annotated->getAnnotations()) {
+
321 if (annotation->name == "brief") {
+
322 auto brief = annotation->getExpr(0)->to<IR::StringLiteral>();
+
323 // guaranteed by ParseAnnotations pass
+
324 CHECK_NULL(brief);
+
325 doc.set_brief(brief->value);
+
326 hasDoc = true;
+
327 continue;
+
328 }
+
329 if (annotation->name == "description") {
+
330 auto description = annotation->getExpr(0)->to<IR::StringLiteral>();
+
331 // guaranteed by ParseAnnotations pass
+
332 CHECK_NULL(description);
+
333 doc.set_description(description->value);
+
334 hasDoc = true;
+
335 continue;
+
336 }
+
337 }
+
338
+
339 if (hasDoc) message->mutable_doc()->CopyFrom(doc);
+
340}
-
340
-
344template <typename UnaryPredicate>
-
345void setPreamble(::p4::config::v1::Preamble *preamble, p4rt_id_t id, cstring name, cstring alias,
-
346 const IR::IAnnotated *annotated, UnaryPredicate p) {
-
347 CHECK_NULL(preamble);
-
348 preamble->set_id(id);
-
349 preamble->set_name(name);
-
350 preamble->set_alias(alias);
-
351 addAnnotations(preamble, annotated, p);
-
352 addDocumentation(preamble, annotated);
-
353}
-
354
-
-
357inline void setPreamble(::p4::config::v1::Preamble *preamble, p4rt_id_t id, cstring name,
-
358 cstring alias, const IR::IAnnotated *annotated) {
-
359 setPreamble(preamble, id, name, alias, annotated, [](cstring) { return false; });
-
360}
+
341
+
345template <typename UnaryPredicate>
+
346void setPreamble(::p4::config::v1::Preamble *preamble, p4rt_id_t id, cstring name, cstring alias,
+
347 const IR::IAnnotated *annotated, UnaryPredicate p) {
+
348 CHECK_NULL(preamble);
+
349 preamble->set_id(id);
+
350 preamble->set_name(name);
+
351 preamble->set_alias(alias);
+
352 addAnnotations(preamble, annotated, p);
+
353 addDocumentation(preamble, annotated);
+
354}
+
355
+
+
358inline void setPreamble(::p4::config::v1::Preamble *preamble, p4rt_id_t id, cstring name,
+
359 cstring alias, const IR::IAnnotated *annotated) {
+
360 setPreamble(preamble, id, name, alias, annotated, [](cstring) { return false; });
+
361}
-
361
-
364int64_t getTableSize(const IR::P4Table *table);
-
365
-
367template <typename Kind>
-
368struct CounterlikeTraits; // IWYU pragma: keep
-
369
-
375template <typename Kind>
-
- - -
380 const IR::IAnnotated *annotations;
- -
384 const int64_t size;
-
386 const std::optional<cstring> table;
- -
390
-
-
393 static std::optional<Counterlike<Kind>> from(const IR::ExternBlock *instance,
-
394 const ReferenceMap *refMap, P4::TypeMap *typeMap,
-
395 ::p4::config::v1::P4TypeInfo *p4RtTypeInfo) {
-
396 CHECK_NULL(instance);
-
397 auto declaration = instance->node->to<IR::Declaration_Instance>();
-
398
-
399 // Counter and meter externs refer to their unit as a "type"; this is
-
400 // (confusingly) unrelated to the "type" field of a counter or meter in
-
401 // P4Info.
-
402 auto unit = instance->getParameterValue("type"_cs);
-
403 if (!unit->is<IR::Declaration_ID>()) {
-
404 ::P4::error(ErrorType::ERR_INVALID,
-
405 "%1% '%2%' has a unit type which is not an enum constant: %3%",
-
406 CounterlikeTraits<Kind>::name(), declaration, unit);
-
407 return std::nullopt;
-
408 }
-
409
-
410 auto size = instance->getParameterValue(CounterlikeTraits<Kind>::sizeParamName());
-
411 big_int val;
-
412 if (size->template is<IR::Constant>()) {
-
413 val = size->template to<IR::Constant>()->value;
-
414 } else if (size->template is<IR::SerEnumMember>()) {
-
415 auto sem = size->template to<IR::SerEnumMember>();
-
416 val = sem->value->template to<IR::Constant>()->value;
-
417 } else {
-
418 ::P4::error(ErrorType::ERR_INVALID, "%1% '%2%' has a non-constant size: %3%",
-
419 CounterlikeTraits<Kind>::name(), declaration, size);
-
420 return std::nullopt;
-
421 }
-
422
-
423 cstring index_type_name = nullptr;
-
424 auto indexTypeParamIdx = CounterlikeTraits<Kind>::indexTypeParamIdx();
-
425 // In v1model, the index is a bit<32>, in PSA it is determined by a type parameter.
-
426 if (indexTypeParamIdx != std::nullopt) {
-
427 // retrieve type parameter for the index.
-
428 BUG_CHECK(declaration->type->is<IR::Type_Specialized>(),
-
429 "%1%: expected Type_Specialized", declaration->type);
-
430 auto type = declaration->type->to<IR::Type_Specialized>();
-
431 BUG_CHECK(type->arguments->size() > *indexTypeParamIdx,
-
432 "%1%: expected at least %2% type arguments", instance,
-
433 *indexTypeParamIdx + 1);
-
434 auto typeArg = type->arguments->at(*indexTypeParamIdx);
-
435 // We ignore the return type on purpose, but the call is required to update p4RtTypeInfo
-
436 // if the index has a user-defined type.
-
437 TypeSpecConverter::convert(refMap, typeMap, typeArg, p4RtTypeInfo);
-
438 index_type_name = getTypeName(typeArg, typeMap);
-
439 }
-
440
-
441 return Counterlike<Kind>{declaration->controlPlaneName(),
-
442 declaration->to<IR::IAnnotated>(),
-
443 unit->to<IR::Declaration_ID>()->name,
-
444 int(val),
-
445 std::nullopt,
- -
447 }
+
362
+
365int64_t getTableSize(const IR::P4Table *table);
+
366
+
368template <typename Kind>
+
369struct CounterlikeTraits; // IWYU pragma: keep
+
370
+
376template <typename Kind>
+
+ + +
381 const IR::IAnnotated *annotations;
+ +
385 const int64_t size;
+
387 const std::optional<cstring> table;
+ +
391
+
+
394 static std::optional<Counterlike<Kind>> from(const IR::ExternBlock *instance,
+
395 const ReferenceMap *refMap, P4::TypeMap *typeMap,
+
396 ::p4::config::v1::P4TypeInfo *p4RtTypeInfo) {
+
397 CHECK_NULL(instance);
+
398 auto declaration = instance->node->to<IR::Declaration_Instance>();
+
399
+
400 // Counter and meter externs refer to their unit as a "type"; this is
+
401 // (confusingly) unrelated to the "type" field of a counter or meter in
+
402 // P4Info.
+
403 auto unit = instance->getParameterValue("type"_cs);
+
404 if (!unit->is<IR::Declaration_ID>()) {
+
405 ::P4::error(ErrorType::ERR_INVALID,
+
406 "%1% '%2%' has a unit type which is not an enum constant: %3%",
+
407 CounterlikeTraits<Kind>::name(), declaration, unit);
+
408 return std::nullopt;
+
409 }
+
410
+
411 auto size = instance->getParameterValue(CounterlikeTraits<Kind>::sizeParamName());
+
412 big_int val;
+
413 if (size->template is<IR::Constant>()) {
+
414 val = size->template to<IR::Constant>()->value;
+
415 } else if (size->template is<IR::SerEnumMember>()) {
+
416 auto sem = size->template to<IR::SerEnumMember>();
+
417 val = sem->value->template to<IR::Constant>()->value;
+
418 } else {
+
419 ::P4::error(ErrorType::ERR_INVALID, "%1% '%2%' has a non-constant size: %3%",
+
420 CounterlikeTraits<Kind>::name(), declaration, size);
+
421 return std::nullopt;
+
422 }
+
423
+
424 cstring index_type_name = nullptr;
+
425 auto indexTypeParamIdx = CounterlikeTraits<Kind>::indexTypeParamIdx();
+
426 // In v1model, the index is a bit<32>, in PSA it is determined by a type parameter.
+
427 if (indexTypeParamIdx != std::nullopt) {
+
428 // retrieve type parameter for the index.
+
429 BUG_CHECK(declaration->type->is<IR::Type_Specialized>(),
+
430 "%1%: expected Type_Specialized", declaration->type);
+
431 auto type = declaration->type->to<IR::Type_Specialized>();
+
432 BUG_CHECK(type->arguments->size() > *indexTypeParamIdx,
+
433 "%1%: expected at least %2% type arguments", instance,
+
434 *indexTypeParamIdx + 1);
+
435 auto typeArg = type->arguments->at(*indexTypeParamIdx);
+
436 // We ignore the return type on purpose, but the call is required to update p4RtTypeInfo
+
437 // if the index has a user-defined type.
+
438 TypeSpecConverter::convert(refMap, typeMap, typeArg, p4RtTypeInfo);
+
439 index_type_name = getTypeName(typeArg, typeMap);
+
440 }
+
441
+
442 return Counterlike<Kind>{declaration->controlPlaneName(),
+
443 declaration->to<IR::IAnnotated>(),
+
444 unit->to<IR::Declaration_ID>()->name,
+
445 int(val),
+
446 std::nullopt,
+ +
448 }
-
448
-
-
452 static std::optional<Counterlike<Kind>> fromDirect(const ExternInstance &instance,
-
453 const IR::P4Table *table) {
-
454 CHECK_NULL(table);
-
455 BUG_CHECK(instance.name != std::nullopt, "Caller should've ensured we have a name");
-
456
-
457 if (instance.type->name != CounterlikeTraits<Kind>::directTypeName()) {
-
458 ::P4::error(ErrorType::ERR_EXPECTED, "Expected a direct %1%: %2%",
-
459 CounterlikeTraits<Kind>::name(), instance.expression);
-
460 return std::nullopt;
-
461 }
-
462
-
463 auto unitArgument = instance.substitution.lookupByName("type"_cs)->expression;
-
464 if (unitArgument == nullptr) {
-
465 ::P4::error(ErrorType::ERR_EXPECTED,
-
466 "Direct %1% instance %2% should take a constructor argument",
-
467 CounterlikeTraits<Kind>::name(), instance.expression);
-
468 return std::nullopt;
-
469 }
-
470 if (!unitArgument->is<IR::Member>()) {
-
471 ::P4::error(ErrorType::ERR_UNEXPECTED,
-
472 "Direct %1% instance %2% has an unexpected constructor argument",
-
473 CounterlikeTraits<Kind>::name(), instance.expression);
-
474 return std::nullopt;
-
475 }
-
476
-
477 auto unit = unitArgument->to<IR::Member>()->member.name;
-
478 return Counterlike<Kind>{*instance.name,
-
479 instance.annotations,
-
480 unit,
- -
482 table->controlPlaneName(),
-
483 cstring::empty};
-
484 }
+
449
+
+
453 static std::optional<Counterlike<Kind>> fromDirect(const ExternInstance &instance,
+
454 const IR::P4Table *table) {
+
455 CHECK_NULL(table);
+
456 BUG_CHECK(instance.name != std::nullopt, "Caller should've ensured we have a name");
+
457
+
458 if (instance.type->name != CounterlikeTraits<Kind>::directTypeName()) {
+
459 ::P4::error(ErrorType::ERR_EXPECTED, "Expected a direct %1%: %2%",
+
460 CounterlikeTraits<Kind>::name(), instance.expression);
+
461 return std::nullopt;
+
462 }
+
463
+
464 auto unitArgument = instance.substitution.lookupByName("type"_cs)->expression;
+
465 if (unitArgument == nullptr) {
+
466 ::P4::error(ErrorType::ERR_EXPECTED,
+
467 "Direct %1% instance %2% should take a constructor argument",
+
468 CounterlikeTraits<Kind>::name(), instance.expression);
+
469 return std::nullopt;
+
470 }
+
471 if (!unitArgument->is<IR::Member>()) {
+
472 ::P4::error(ErrorType::ERR_UNEXPECTED,
+
473 "Direct %1% instance %2% has an unexpected constructor argument",
+
474 CounterlikeTraits<Kind>::name(), instance.expression);
+
475 return std::nullopt;
+
476 }
+
477
+
478 auto unit = unitArgument->to<IR::Member>()->member.name;
+
479 return Counterlike<Kind>{*instance.name,
+
480 instance.annotations,
+
481 unit,
+ +
483 table->controlPlaneName(),
+
484 cstring::empty};
+
485 }
-
485};
+
486};
-
486
-
489template <typename Kind>
-
-
490std::optional<Counterlike<Kind>> getDirectCounterlike(const IR::P4Table *table,
-
491 ReferenceMap *refMap, TypeMap *typeMap) {
- -
493 auto instance = getExternInstanceFromProperty(table, propertyName, refMap, typeMap);
-
494 if (!instance) return std::nullopt;
-
495 return Counterlike<Kind>::fromDirect(*instance, table);
-
496}
+
487
+
490template <typename Kind>
+
+
491std::optional<Counterlike<Kind>> getDirectCounterlike(const IR::P4Table *table,
+
492 ReferenceMap *refMap, TypeMap *typeMap) {
+ +
494 auto instance = getExternInstanceFromProperty(table, propertyName, refMap, typeMap);
+
495 if (!instance) return std::nullopt;
+
496 return Counterlike<Kind>::fromDirect(*instance, table);
+
497}
-
497
-
498} // namespace Helpers
-
499
-
500} // namespace ControlPlaneAPI
-
501
-
502 /* end group control_plane */
-
503} // namespace P4
-
504
-
505#endif /* CONTROL_PLANE_P4RUNTIMEARCHHANDLER_H_ */
+
498
+
499} // namespace Helpers
+
500
+
501} // namespace ControlPlaneAPI
+
502
+
503 /* end group control_plane */
+
504} // namespace P4
+
505
+
506#endif /* CONTROL_PLANE_P4RUNTIMEARCHHANDLER_H_ */
Definition p4RuntimeArchHandler.h:139
virtual void collectTableProperties(P4RuntimeSymbolTableIface *symbols, const IR::TableBlock *tableBlock)=0
virtual void addExternInstance(const P4RuntimeSymbolTableIface &symbols, ::p4::config::v1::P4Info *p4info, const IR::ExternBlock *externBlock)=0
@@ -566,7 +567,7 @@
virtual cstring getAlias(cstring name) const =0
virtual void add(P4RuntimeSymbolType type, const IR::IDeclaration *declaration)=0
Add a @type symbol, extracting the name and id from @declaration.
Definition p4RuntimeArchHandler.h:63
-
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:389
+
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:390
Definition methodInstance.h:194
Definition methodInstance.h:168
The Declaration interface, representing objects with names.
Definition declaration.h:26
@@ -580,21 +581,21 @@
std::optional< ExternInstance > getExternInstanceFromProperty(const IR::P4Table *table, const cstring &propertyName, ReferenceMap *refMap, TypeMap *typeMap, bool *isConstructedInPlace)
Definition p4RuntimeArchHandler.cpp:41
bool isExternPropertyConstructedInPlace(const IR::P4Table *table, const cstring &propertyName)
Definition p4RuntimeArchHandler.cpp:77
int64_t getTableSize(const IR::P4Table *table)
Definition p4RuntimeArchHandler.cpp:91
-
void addDocumentation(Message *message, const IR::IAnnotated *annotated)
' and '@description' annotations if present.
Definition p4RuntimeArchHandler.h:307
-
std::optional< Counterlike< Kind > > getDirectCounterlike(const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
Definition p4RuntimeArchHandler.h:490
-
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:368
-
cstring getTypeName(const IR::Type *type, TypeMap *typeMap)
Definition typeSpecConverter.cpp:80
+
void addDocumentation(Message *message, const IR::IAnnotated *annotated)
' and '@description' annotations if present.
Definition p4RuntimeArchHandler.h:308
+
std::optional< Counterlike< Kind > > getDirectCounterlike(const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
Definition p4RuntimeArchHandler.h:491
+
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:369
+
cstring getTypeName(const IR::Type *type, TypeMap *typeMap)
Definition typeSpecConverter.cpp:81
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
void error(const char *format, Args &&...args)
Report an error with the given message.
Definition lib/error.h:51
-
Definition p4RuntimeArchHandler.h:376
-
const std::optional< cstring > table
If not none, the instance is a direct resource associated with @table.
Definition p4RuntimeArchHandler.h:386
-
const cstring name
The name of the instance.
Definition p4RuntimeArchHandler.h:378
-
const IR::IAnnotated * annotations
If non-null, the instance's annotations.
Definition p4RuntimeArchHandler.h:380
-
static std::optional< Counterlike< Kind > > from(const IR::ExternBlock *instance, const ReferenceMap *refMap, P4::TypeMap *typeMap, ::p4::config::v1::P4TypeInfo *p4RtTypeInfo)
Definition p4RuntimeArchHandler.h:393
-
const cstring unit
The units parameter to the instance; valid values vary depending on @Kind.
Definition p4RuntimeArchHandler.h:382
-
const cstring index_type_name
Definition p4RuntimeArchHandler.h:389
-
static std::optional< Counterlike< Kind > > fromDirect(const ExternInstance &instance, const IR::P4Table *table)
Definition p4RuntimeArchHandler.h:452
-
const int64_t size
The size parameter to the instance.
Definition p4RuntimeArchHandler.h:384
+
Definition p4RuntimeArchHandler.h:377
+
const std::optional< cstring > table
If not none, the instance is a direct resource associated with @table.
Definition p4RuntimeArchHandler.h:387
+
const cstring name
The name of the instance.
Definition p4RuntimeArchHandler.h:379
+
const IR::IAnnotated * annotations
If non-null, the instance's annotations.
Definition p4RuntimeArchHandler.h:381
+
static std::optional< Counterlike< Kind > > from(const IR::ExternBlock *instance, const ReferenceMap *refMap, P4::TypeMap *typeMap, ::p4::config::v1::P4TypeInfo *p4RtTypeInfo)
Definition p4RuntimeArchHandler.h:394
+
const cstring unit
The units parameter to the instance; valid values vary depending on @Kind.
Definition p4RuntimeArchHandler.h:383
+
const cstring index_type_name
Definition p4RuntimeArchHandler.h:390
+
static std::optional< Counterlike< Kind > > fromDirect(const ExternInstance &instance, const IR::P4Table *table)
Definition p4RuntimeArchHandler.h:453
+
const int64_t size
The size parameter to the instance.
Definition p4RuntimeArchHandler.h:385
Definition p4RuntimeArchHandler.h:204
virtual P4RuntimeArchHandlerIface * operator()(ReferenceMap *refMap, TypeMap *typeMap, const IR::ToplevelBlock *evaluatedProgram) const =0
Definition externInstance.h:51
diff --git a/p4_runtime_arch_standard_8h_source.html b/p4_runtime_arch_standard_8h_source.html index 1a444f9d6c0..0ea89e988ed 100644 --- a/p4_runtime_arch_standard_8h_source.html +++ b/p4_runtime_arch_standard_8h_source.html @@ -942,7 +942,7 @@
780 if (maxGroupSizeAnnotation) {
781 if (actionProfile.type == ActionProfileType::INDIRECT_WITH_SELECTOR) {
782 auto maxGroupSizeConstant =
-
783 maxGroupSizeAnnotation->expr[0]->checkedTo<IR::Constant>();
+
783 maxGroupSizeAnnotation->getExpr(0)->checkedTo<IR::Constant>();
784 CHECK_NULL(maxGroupSizeConstant);
785 profile->set_max_group_size(maxGroupSizeConstant->asInt());
786 } else {
@@ -959,7 +959,7 @@
797 if (selectorSizeSemanticsAnnotation) {
798 if (actionProfile.type == ActionProfileType::INDIRECT_WITH_SELECTOR) {
799 auto selectorSizeSemantics =
-
800 selectorSizeSemanticsAnnotation->expr[0]->checkedTo<IR::StringLiteral>();
+
800 selectorSizeSemanticsAnnotation->getExpr(0)->checkedTo<IR::StringLiteral>();
801 CHECK_NULL(selectorSizeSemantics);
802 // The expression may only contain 'sum_of_weights' or 'sum_of_members'
803 // in any case.
@@ -988,7 +988,7 @@
826 if (actionProfile.type == ActionProfileType::INDIRECT_WITH_SELECTOR &&
827 profile->has_sum_of_members()) {
828 auto maxMemberWeightConstant =
-
829 maxMemberWeightAnnotation->expr[0]->checkedTo<IR::Constant>();
+
829 maxMemberWeightAnnotation->getExpr(0)->checkedTo<IR::Constant>();
830 CHECK_NULL(maxMemberWeightConstant);
831 profile->mutable_sum_of_members()->set_max_member_weight(
832 maxMemberWeightConstant->asInt());
@@ -1324,7 +1324,7 @@
std::optional< Digest > getDigest(const IR::Declaration_Instance *decl, p4configv1::P4TypeInfo *p4RtTypeInfo)
Definition p4RuntimeArchStandard.h:1044
Definition p4RuntimeArchStandard.h:1098
Definition p4RuntimeArchStandard.h:277
-
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:389
+
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:390
Definition methodInstance.h:194
Definition methodInstance.h:168
The Declaration interface, representing objects with names.
Definition declaration.h:26
@@ -1335,8 +1335,8 @@
Definition tofino/bf-p4c/control-plane/bfruntime_arch_handler.h:78
void forAllEvaluatedBlocks(const IR::Block *block, Func function)
Definition p4RuntimeArchHandler.h:234
bool isExternPropertyConstructedInPlace(const IR::P4Table *table, const cstring &propertyName)
Definition p4RuntimeArchHandler.cpp:77
-
std::optional< Counterlike< Kind > > getDirectCounterlike(const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
Definition p4RuntimeArchHandler.h:490
-
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:368
+
std::optional< Counterlike< Kind > > getDirectCounterlike(const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
Definition p4RuntimeArchHandler.h:491
+
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:369
Arch
Definition p4RuntimeArchStandard.h:47
ActionProfileType
The types of action profiles available in v1model & PSA.
Definition p4RuntimeArchStandard.h:499
Definition p4RuntimeArchStandard.h:307
@@ -1345,18 +1345,18 @@
Definition p4RuntimeArchStandard.h:423
Definition p4RuntimeArchStandard.h:52
Traits for the register extern, must be specialized for v1model and PSA.
Definition p4RuntimeArchStandard.h:376
-
cstring getTypeName(const IR::Type *type, TypeMap *typeMap)
Definition typeSpecConverter.cpp:80
+
cstring getTypeName(const IR::Type *type, TypeMap *typeMap)
Definition typeSpecConverter.cpp:81
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
void warning(const char *format, Args &&...args)
Report a warning with the given message.
Definition lib/error.h:115
void error(const char *format, Args &&...args)
Report an error with the given message.
Definition lib/error.h:51
-
Definition p4RuntimeArchHandler.h:376
-
const std::optional< cstring > table
If not none, the instance is a direct resource associated with @table.
Definition p4RuntimeArchHandler.h:386
-
const cstring name
The name of the instance.
Definition p4RuntimeArchHandler.h:378
-
const IR::IAnnotated * annotations
If non-null, the instance's annotations.
Definition p4RuntimeArchHandler.h:380
-
static std::optional< Counterlike< Kind > > from(const IR::ExternBlock *instance, const ReferenceMap *refMap, P4::TypeMap *typeMap, ::p4::config::v1::P4TypeInfo *p4RtTypeInfo)
Definition p4RuntimeArchHandler.h:393
-
const cstring unit
The units parameter to the instance; valid values vary depending on @Kind.
Definition p4RuntimeArchHandler.h:382
-
const cstring index_type_name
Definition p4RuntimeArchHandler.h:389
-
const int64_t size
The size parameter to the instance.
Definition p4RuntimeArchHandler.h:384
+
Definition p4RuntimeArchHandler.h:377
+
const std::optional< cstring > table
If not none, the instance is a direct resource associated with @table.
Definition p4RuntimeArchHandler.h:387
+
const cstring name
The name of the instance.
Definition p4RuntimeArchHandler.h:379
+
const IR::IAnnotated * annotations
If non-null, the instance's annotations.
Definition p4RuntimeArchHandler.h:381
+
static std::optional< Counterlike< Kind > > from(const IR::ExternBlock *instance, const ReferenceMap *refMap, P4::TypeMap *typeMap, ::p4::config::v1::P4TypeInfo *p4RtTypeInfo)
Definition p4RuntimeArchHandler.h:394
+
const cstring unit
The units parameter to the instance; valid values vary depending on @Kind.
Definition p4RuntimeArchHandler.h:383
+
const cstring index_type_name
Definition p4RuntimeArchHandler.h:390
+
const int64_t size
The size parameter to the instance.
Definition p4RuntimeArchHandler.h:385
Definition p4RuntimeArchHandler.h:204
Definition p4RuntimeArchStandard.h:503
The architecture handler builder implementation for PNA.
Definition p4RuntimeArchStandard.h:264
diff --git a/p4_runtime_serializer_8h_source.html b/p4_runtime_serializer_8h_source.html index 711c69445b7..6e4cae3c3f3 100644 --- a/p4_runtime_serializer_8h_source.html +++ b/p4_runtime_serializer_8h_source.html @@ -238,13 +238,13 @@
Definition frontends/common/options.h:30
Public APIs to generate P4Info message. Uses the singleton pattern.
Definition p4RuntimeSerializer.h:90
Definition cstring.h:85
-
static cstring resolveArch(const CompilerOptions &options)
Definition p4RuntimeSerializer.cpp:1661
-
void serializeP4InfoTo(std::ostream *destination, P4RuntimeFormat format) const
Definition p4RuntimeSerializer.cpp:1505
-
P4RuntimeAPI generateP4Runtime(const IR::P4Program *program, cstring arch)
Definition p4RuntimeSerializer.cpp:1676
-
void serializeP4RuntimeIfRequired(const IR::P4Program *program, const CompilerOptions &options)
Definition p4RuntimeSerializer.cpp:1582
-
P4RuntimeAPI generateP4Runtime(const IR::P4Program *program, cstring arch)
Definition p4RuntimeSerializer.cpp:1469
-
void serializeP4RuntimeIfRequired(const IR::P4Program *program, const CompilerOptions &options)
Definition p4RuntimeSerializer.cpp:1680
-
void serializeEntriesTo(std::ostream *destination, P4RuntimeFormat format) const
Definition p4RuntimeSerializer.cpp:1526
+
static cstring resolveArch(const CompilerOptions &options)
Definition p4RuntimeSerializer.cpp:1662
+
void serializeP4InfoTo(std::ostream *destination, P4RuntimeFormat format) const
Definition p4RuntimeSerializer.cpp:1506
+
P4RuntimeAPI generateP4Runtime(const IR::P4Program *program, cstring arch)
Definition p4RuntimeSerializer.cpp:1677
+
void serializeP4RuntimeIfRequired(const IR::P4Program *program, const CompilerOptions &options)
Definition p4RuntimeSerializer.cpp:1583
+
P4RuntimeAPI generateP4Runtime(const IR::P4Program *program, cstring arch)
Definition p4RuntimeSerializer.cpp:1470
+
void serializeP4RuntimeIfRequired(const IR::P4Program *program, const CompilerOptions &options)
Definition p4RuntimeSerializer.cpp:1681
+
void serializeEntriesTo(std::ostream *destination, P4RuntimeFormat format) const
Definition p4RuntimeSerializer.cpp:1527
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
P4RuntimeFormat
P4Runtime serialization formats.
Definition p4RuntimeTypes.h:23
Definition p4RuntimeArchHandler.h:204
diff --git a/parse__annotations_8h_source.html b/parse__annotations_8h_source.html index 3b12c3f81f5..3c5c6c98edb 100644 --- a/parse__annotations_8h_source.html +++ b/parse__annotations_8h_source.html @@ -298,8 +298,8 @@
189} // namespace BFN
190
191#endif /* BACKENDS_TOFINO_BF_P4C_COMMON_PARSE_ANNOTATIONS_H_ */
-
Definition parseAnnotations.h:114
-
ParseAnnotations(bool warn=false)
Produces a pass that rewrites the spec-defined annotations.
Definition parseAnnotations.h:126
+
Definition parseAnnotations.h:138
+
ParseAnnotations(bool warn=false)
Produces a pass that rewrites the spec-defined annotations.
Definition parseAnnotations.h:150
Definition pa_alias.h:38
Definition pa_atomic.h:30
Definition pa_byte_pack.h:39
diff --git a/parse_annotations_8h_source.html b/parse_annotations_8h_source.html index 2c18bd20b35..502ec2d27f9 100644 --- a/parse_annotations_8h_source.html +++ b/parse_annotations_8h_source.html @@ -160,16 +160,16 @@
35 { aname, &P4::ParseAnnotations::parseEmpty }
36
37// Parses an annotation with a single-element body.
-
38#define PARSE(aname, tname) \
-
39 { \
-
40 aname, [](IR::Annotation *annotation) { \
-
41 const IR::tname *parsed = \
-
42 P4::P4ParserDriver::parse##tname(annotation->srcInfo, annotation->body); \
-
43 if (parsed != nullptr) { \
-
44 annotation->expr.push_back(parsed); \
-
45 } \
-
46 return parsed != nullptr; \
-
47 } \
+
38#define PARSE(aname, tname) \
+
39 { \
+
40 aname, [](IR::Annotation *annotation) { \
+
41 const IR::tname *parsed = \
+
42 P4::P4ParserDriver::parse##tname(annotation->srcInfo, annotation->getUnparsed()); \
+
43 if (parsed != nullptr) { \
+
44 annotation->body.emplace<IR::Annotation::ExpressionAnnotation>(parsed); \
+
45 } \
+
46 return parsed != nullptr; \
+
47 } \
48 }
49
50// Parses an annotation that is either an integer constant or a string literal.
@@ -177,144 +177,168 @@
52 { \
53 aname, [](IR::Annotation *annotation) { \
54 const IR::Expression *parsed = P4::P4ParserDriver::parseConstantOrStringLiteral( \
-
55 annotation->srcInfo, annotation->body); \
+
55 annotation->srcInfo, annotation->getUnparsed()); \
56 if (parsed != nullptr) { \
-
57 annotation->expr.push_back(parsed); \
+
57 annotation->body.emplace<IR::Annotation::ExpressionAnnotation>(parsed); \
58 } \
59 return parsed != nullptr; \
60 } \
61 }
62
-
63// Parses an annotation whose body is a pair.
-
64#define PARSE_PAIR(aname, tname) \
-
65 { \
-
66 aname, [](IR::Annotation *annotation) { \
-
67 const IR::Vector<IR::Expression> *parsed = \
-
68 P4::P4ParserDriver::parse##tname##Pair(annotation->srcInfo, annotation->body); \
-
69 if (parsed != nullptr) { \
-
70 annotation->expr.append(*parsed); \
-
71 } \
-
72 return parsed != nullptr; \
-
73 } \
-
74 }
-
75
-
76// Parses an annotation whose body is a triple.
-
77#define PARSE_TRIPLE(aname, tname) \
-
78 { \
-
79 aname, [](IR::Annotation *annotation) { \
-
80 const IR::Vector<IR::Expression> *parsed = \
-
81 P4::P4ParserDriver::parse##tname##Triple(annotation->srcInfo, annotation->body); \
-
82 if (parsed != nullptr) { \
-
83 annotation->expr.append(*parsed); \
-
84 } \
-
85 return parsed != nullptr; \
-
86 } \
-
87 }
-
88
-
89// Parses an annotation whose body is a list of expressions.
-
90#define PARSE_EXPRESSION_LIST(aname) \
-
91 { aname, &P4::ParseAnnotations::parseExpressionList }
-
92
-
93// Parses an annotation whose body is a list of key-value pairs.
-
94#define PARSE_KV_LIST(aname) \
-
95 { aname, &P4::ParseAnnotations::parseKvList }
-
96
-
97// Parses an annotation whose body is a list of integer constants.
-
98#define PARSE_CONSTANT_LIST(aname) \
-
99 { aname, &P4::ParseAnnotations::parseConstantList }
-
100
-
101// Parses an annotation whose body is a list, where each element is an integer constant or a string
-
102// literal.
-
103#define PARSE_CONSTANT_OR_STRING_LITERAL_LIST(aname) \
-
104 { aname, &P4::ParseAnnotations::parseConstantOrStringLiteralList }
-
105
-
106// Parses an annotation whose body is a list of string literals.
-
107#define PARSE_STRING_LITERAL_LIST(aname) \
-
108 { aname, &P4::ParseAnnotations::parseStringLiteralList }
-
109
-
110// Parses a P4Runtime translation which contains both types or expressions.
-
111#define PARSE_P4RUNTIME_TRANSLATION(aname) \
-
112 { aname, &P4::ParseAnnotations::parseP4rtTranslationAnnotation }
-
113
-
- -
115 public:
-
116 using Modifier::postorder;
-
117
-
120 typedef std::function<bool(IR::Annotation *)> Handler;
-
121
-
123 typedef std::unordered_map<cstring, Handler> HandlerMap;
+
63#define PARSE_CONSTANT(aname) \
+
64 { \
+
65 aname, [](IR::Annotation *annotation) { \
+
66 const IR::Expression *parsed = \
+
67 P4::P4ParserDriver::parseConstant(annotation->srcInfo, annotation->getUnparsed()); \
+
68 if (parsed != nullptr) { \
+
69 annotation->body.emplace<IR::Annotation::ExpressionAnnotation>(parsed); \
+
70 } \
+
71 return parsed != nullptr; \
+
72 } \
+
73 }
+
74
+
75#define PARSE_STRING_LITERAL(aname) \
+
76 { \
+
77 aname, [](IR::Annotation *annotation) { \
+
78 const IR::Expression *parsed = P4::P4ParserDriver::parseStringLiteral( \
+
79 annotation->srcInfo, annotation->getUnparsed()); \
+
80 if (parsed != nullptr) { \
+
81 annotation->body.emplace<IR::Annotation::ExpressionAnnotation>(parsed); \
+
82 } \
+
83 return parsed != nullptr; \
+
84 } \
+
85 }
+
86
+
87// Parses an annotation whose body is a pair.
+
88#define PARSE_PAIR(aname, tname) \
+
89 { \
+
90 aname, [](IR::Annotation *annotation) { \
+
91 const IR::Vector<IR::Expression> *parsed = P4::P4ParserDriver::parse##tname##Pair( \
+
92 annotation->srcInfo, annotation->getUnparsed()); \
+
93 if (parsed != nullptr) { \
+
94 annotation->body.emplace<IR::Annotation::ExpressionAnnotation>(*parsed); \
+
95 } \
+
96 return parsed != nullptr; \
+
97 } \
+
98 }
+
99
+
100// Parses an annotation whose body is a triple.
+
101#define PARSE_TRIPLE(aname, tname) \
+
102 { \
+
103 aname, [](IR::Annotation *annotation) { \
+
104 const IR::Vector<IR::Expression> *parsed = P4::P4ParserDriver::parse##tname##Triple( \
+
105 annotation->srcInfo, annotation->getUnparsed()); \
+
106 if (parsed != nullptr) { \
+
107 annotation->body.emplace<IR::Annotation::ExpressionAnnotation>(*parsed); \
+
108 } \
+
109 return parsed != nullptr; \
+
110 } \
+
111 }
+
112
+
113// Parses an annotation whose body is a list of expressions.
+
114#define PARSE_EXPRESSION_LIST(aname) \
+
115 { aname, &P4::ParseAnnotations::parseExpressionList }
+
116
+
117// Parses an annotation whose body is a list of key-value pairs.
+
118#define PARSE_KV_LIST(aname) \
+
119 { aname, &P4::ParseAnnotations::parseKvList }
+
120
+
121// Parses an annotation whose body is a list of integer constants.
+
122#define PARSE_CONSTANT_LIST(aname) \
+
123 { aname, &P4::ParseAnnotations::parseConstantList }
124
-
-
126 explicit ParseAnnotations(bool warn = false) : warnUnknown(warn), handlers(standardHandlers()) {
-
127 setName("ParseAnnotations");
-
128 }
-
+
125// Parses an annotation whose body is a list, where each element is an integer constant or a string
+
126// literal.
+
127#define PARSE_CONSTANT_OR_STRING_LITERAL_LIST(aname) \
+
128 { aname, &P4::ParseAnnotations::parseConstantOrStringLiteralList }
129
-
-
131 ParseAnnotations(const char *targetName, bool includeStandard, HandlerMap handlers,
-
132 bool warn = false)
-
133 : warnUnknown(warn) {
-
134 std::string buf = targetName;
-
135 buf += "__ParseAnnotations";
-
136 setName(buf.c_str());
+
130// Parses an annotation whose body is a list of string literals.
+
131#define PARSE_STRING_LITERAL_LIST(aname) \
+
132 { aname, &P4::ParseAnnotations::parseStringLiteralList }
+
133
+
134// Parses a P4Runtime translation which contains both types or expressions.
+
135#define PARSE_P4RUNTIME_TRANSLATION(aname) \
+
136 { aname, &P4::ParseAnnotations::parseP4rtTranslationAnnotation }
137
-
138 if (includeStandard) {
-
139 this->handlers = standardHandlers();
-
140 this->handlers.insert(handlers.begin(), handlers.end());
-
141 } else {
-
142 this->handlers = handlers;
-
143 }
-
144 }
-
+
+ +
139 public:
+
140 using Modifier::postorder;
+
141
+
144 typedef std::function<bool(IR::Annotation *)> Handler;
145
-
146 void postorder(IR::Annotation *annotation) final;
-
147
-
148 static HandlerMap standardHandlers();
-
149
-
150 static bool parseSkip(IR::Annotation *annotation);
-
151 static bool parseEmpty(IR::Annotation *annotation);
-
152 static bool parseExpressionList(IR::Annotation *annotation);
-
153 static bool parseKvList(IR::Annotation *annotation);
-
154 static bool parseConstantList(IR::Annotation *annotation);
-
155 static bool parseConstantOrStringLiteralList(IR::Annotation *annotation);
-
156 static bool parseStringLiteralList(IR::Annotation *annotation);
-
157 // Parses a `@p4runtime_translation` annotation.
-
158 static bool parseP4rtTranslationAnnotation(IR::Annotation *annotation);
-
159
-
160 void addHandler(cstring name, Handler h) { handlers.insert({name, h}); }
+
147 typedef std::unordered_map<cstring, Handler> HandlerMap;
+
148
+
+
150 explicit ParseAnnotations(bool warn = false) : warnUnknown(warn), handlers(standardHandlers()) {
+
151 setName("ParseAnnotations");
+
152 }
+
+
153
+
+
155 ParseAnnotations(const char *targetName, bool includeStandard, HandlerMap handlers,
+
156 bool warn = false)
+
157 : warnUnknown(warn) {
+
158 std::string buf = targetName;
+
159 buf += "__ParseAnnotations";
+
160 setName(buf.c_str());
161
-
162 private:
-
164 const bool warnUnknown;
-
165
-
168 std::set<cstring> warned;
+
162 if (includeStandard) {
+
163 this->handlers = standardHandlers();
+
164 this->handlers.insert(handlers.begin(), handlers.end());
+
165 } else {
+
166 this->handlers = handlers;
+
167 }
+
168 }
+
169
-
170 HandlerMap handlers;
-
171};
+
170 void postorder(IR::Annotation *annotation) final;
+
171
+
172 static HandlerMap standardHandlers();
+
173
+
174 static bool parseSkip(IR::Annotation *annotation);
+
175 static bool parseEmpty(IR::Annotation *annotation);
+
176 static bool parseExpressionList(IR::Annotation *annotation);
+
177 static bool parseKvList(IR::Annotation *annotation);
+
178 static bool parseConstantList(IR::Annotation *annotation);
+
179 static bool parseConstantOrStringLiteralList(IR::Annotation *annotation);
+
180 static bool parseStringLiteralList(IR::Annotation *annotation);
+
181 // Parses a `@p4runtime_translation` annotation.
+
182 static bool parseP4rtTranslationAnnotation(IR::Annotation *annotation);
+
183
+
184 void addHandler(cstring name, Handler h) { handlers.insert({name, h}); }
+
185
+
186 private:
+
188 const bool warnUnknown;
+
189
+
192 std::set<cstring> warned;
+
193
+
194 HandlerMap handlers;
+
195};
-
172
-
-
174class ParseAnnotationBodies final : public PassManager {
-
175 public:
- -
177 passes.push_back(pa);
-
178 passes.push_back(new ClearTypeMap(typeMap));
-
179 setName("ParseAnnotationBodies");
-
180 }
-
181};
+
196
+
+
198class ParseAnnotationBodies final : public PassManager {
+
199 public:
+ +
201 passes.push_back(pa);
+
202 passes.push_back(new ClearTypeMap(typeMap));
+
203 setName("ParseAnnotationBodies");
+
204 }
+
205};
-
182
-
183} // namespace P4
-
184
-
185#endif /* P4_PARSEANNOTATIONS_H_ */
+
206
+
207} // namespace P4
+
208
+
209#endif /* P4_PARSEANNOTATIONS_H_ */
Definition typeChecker.h:32
Definition visitor.h:372
-
Clears a type map after calling a ParseAnnotations instance.
Definition parseAnnotations.h:174
-
Definition parseAnnotations.h:114
-
ParseAnnotations(bool warn=false)
Produces a pass that rewrites the spec-defined annotations.
Definition parseAnnotations.h:126
-
std::function< bool(IR::Annotation *)> Handler
Definition parseAnnotations.h:120
-
std::unordered_map< cstring, Handler > HandlerMap
Keyed on annotation names.
Definition parseAnnotations.h:123
-
ParseAnnotations(const char *targetName, bool includeStandard, HandlerMap handlers, bool warn=false)
Produces a pass that rewrites a custom set of annotations.
Definition parseAnnotations.h:131
+
Clears a type map after calling a ParseAnnotations instance.
Definition parseAnnotations.h:198
+
Definition parseAnnotations.h:138
+
ParseAnnotations(bool warn=false)
Produces a pass that rewrites the spec-defined annotations.
Definition parseAnnotations.h:150
+
std::function< bool(IR::Annotation *)> Handler
Definition parseAnnotations.h:144
+
std::unordered_map< cstring, Handler > HandlerMap
Keyed on annotation names.
Definition parseAnnotations.h:147
+
ParseAnnotations(const char *targetName, bool includeStandard, HandlerMap handlers, bool warn=false)
Produces a pass that rewrites a custom set of annotations.
Definition parseAnnotations.h:155
Definition ir/pass_manager.h:40
Definition typeMap.h:41
Definition cstring.h:85
diff --git a/parser__critical__path_8h_source.html b/parser__critical__path_8h_source.html index b0a5c941c65..ad52a9d17d8 100644 --- a/parser__critical__path_8h_source.html +++ b/parser__critical__path_8h_source.html @@ -196,7 +196,7 @@
94 for (const auto *p4State : state->p4States) {
95 for (auto annot : p4State->annotations) {
96 if (annot->name.name == "critical") {
-
97 auto &exprs = annot->expr;
+
97 auto &exprs = annot->getExpr();
98 if (exprs.size() == 1) {
99 auto gress = exprs[0]->to<IR::StringLiteral>();
100 if (!gress) {
diff --git a/phv_8h_source.html b/phv_8h_source.html index f083596c0e8..7e96722413d 100644 --- a/phv_8h_source.html +++ b/phv_8h_source.html @@ -434,8 +434,8 @@
337} // namespace PHV
338
339#endif /* BF_P4C_PHV_PHV_H_ */
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition bitvec.h:120
Definition cstring.h:85
Definition ordered_set.h:32
diff --git a/protobuf__ir_8h_source.html b/protobuf__ir_8h_source.html index 4554f7762d7..7c64f91c7e5 100644 --- a/protobuf__ir_8h_source.html +++ b/protobuf__ir_8h_source.html @@ -211,8 +211,8 @@
103#endif /* BACKENDS_P4TOOLS_MODULES_TESTGEN_TARGETS_BMV2_TEST_BACKEND_PROTOBUF_IR_H_ */
Bmv2TestFramework provides common utility functions for BMv2-style test frameworks.
Definition common.h:17
Extracts information from the @testSpec to emit a Protobuf IR test case.
Definition protobuf_ir.h:33
-
AbstractTestReferenceOrError produceTest(const TestSpec *testSpec, cstring selectedBranches, size_t testIdx, float currentCoverage) override
Definition protobuf_ir.cpp:339
-
void writeTestToFile(const TestSpec *testSpec, cstring selectedBranches, size_t testId, float currentCoverage) override
Definition protobuf_ir.cpp:324
+
AbstractTestReferenceOrError produceTest(const TestSpec *testSpec, cstring selectedBranches, size_t testIdx, float currentCoverage) override
Definition protobuf_ir.cpp:340
+
void writeTestToFile(const TestSpec *testSpec, cstring selectedBranches, size_t testId, float currentCoverage) override
Definition protobuf_ir.cpp:325
Definition lib/test_spec.h:253
Definition lib/test_spec.h:126
Definition lib/test_spec.h:296
diff --git a/reachability_8h_source.html b/reachability_8h_source.html index d57297d4d87..16c4dd041c1 100644 --- a/reachability_8h_source.html +++ b/reachability_8h_source.html @@ -299,27 +299,27 @@
Definition reachability.h:27
void addToHash(T vertex, const IR::ID &name)
Definition reachability.h:37
The main class for building control flow DCG.
Definition reachability.h:90
-
void addEdge(DCGVertexType vertex, const IR::ID &vertexName=IR::ID())
Definition common/compiler/reachability.cpp:354
+
void addEdge(DCGVertexType vertex, const IR::ID &vertexName=IR::ID())
Definition common/compiler/reachability.cpp:353
Definition reachability.h:159
-
static const IR::Expression * stringToNode(std::string name)
Definition common/compiler/reachability.cpp:597
-
const IR::Expression * addCondition(const IR::Expression *prev, DCGVertexType currentState)
Adds user's condition the a node.
Definition common/compiler/reachability.cpp:478
-
void annotationToStatements(DCGVertexType node, std::unordered_set< DCGVertexType > &s)
Translates current annotation into set of the parent nodes.
Definition common/compiler/reachability.cpp:440
-
const NodesCallGraph & getDCG()
Returns current control flow graph.
Definition common/compiler/reachability.cpp:587
-
const IR::Expression * getCondition(DCGVertexType)
Gets a user's condition from a node.
Definition common/compiler/reachability.cpp:589
+
static const IR::Expression * stringToNode(std::string name)
Definition common/compiler/reachability.cpp:596
+
const IR::Expression * addCondition(const IR::Expression *prev, DCGVertexType currentState)
Adds user's condition the a node.
Definition common/compiler/reachability.cpp:477
+
void annotationToStatements(DCGVertexType node, std::unordered_set< DCGVertexType > &s)
Translates current annotation into set of the parent nodes.
Definition common/compiler/reachability.cpp:439
+
const NodesCallGraph & getDCG()
Returns current control flow graph.
Definition common/compiler/reachability.cpp:586
+
const IR::Expression * getCondition(DCGVertexType)
Gets a user's condition from a node.
Definition common/compiler/reachability.cpp:588
void addEdge(DCGVertexType vertex, IR::ID vertexName=IR::ID())
-
ReachabilityResult next(ReachabilityEngineState *, DCGVertexType)
Definition common/compiler/reachability.cpp:520
-
void addTransition(DCGVertexType, const std::unordered_set< DCGVertexType > &)
Adds transition to engine control flow graph.
Definition common/compiler/reachability.cpp:464
-
ReachabilityEngine(const NodesCallGraph &dcg, std::string reachabilityExpression, bool eliminateAnnotations=false)
Definition common/compiler/reachability.cpp:390
-
std::unordered_set< DCGVertexType > getName(std::string name)
Translates string into the corresponding nodes.
Definition common/compiler/reachability.cpp:487
+
ReachabilityResult next(ReachabilityEngineState *, DCGVertexType)
Definition common/compiler/reachability.cpp:519
+
void addTransition(DCGVertexType, const std::unordered_set< DCGVertexType > &)
Adds transition to engine control flow graph.
Definition common/compiler/reachability.cpp:463
+
ReachabilityEngine(const NodesCallGraph &dcg, std::string reachabilityExpression, bool eliminateAnnotations=false)
Definition common/compiler/reachability.cpp:389
+
std::unordered_set< DCGVertexType > getName(std::string name)
Translates string into the corresponding nodes.
Definition common/compiler/reachability.cpp:486
The main data for reachability engine.
Definition reachability.h:122
-
void clear()
Clears state.
Definition common/compiler/reachability.cpp:388
-
std::list< DCGVertexType > getState()
Gets current state.
Definition common/compiler/reachability.cpp:378
-
ReachabilityEngineState * copy()
Copies a state.
Definition common/compiler/reachability.cpp:371
-
void setState(const std::list< DCGVertexType > &)
Sets current state.
Definition common/compiler/reachability.cpp:380
-
void setPrevNode(DCGVertexType)
Sets previous node.
Definition common/compiler/reachability.cpp:384
-
static ReachabilityEngineState * getInitial()
Gets initial state.
Definition common/compiler/reachability.cpp:364
-
DCGVertexType getPrevNode()
Gets previous node.
Definition common/compiler/reachability.cpp:382
-
bool isEmpty()
Retuns true if state is empty.
Definition common/compiler/reachability.cpp:386
+
void clear()
Clears state.
Definition common/compiler/reachability.cpp:387
+
std::list< DCGVertexType > getState()
Gets current state.
Definition common/compiler/reachability.cpp:377
+
ReachabilityEngineState * copy()
Copies a state.
Definition common/compiler/reachability.cpp:370
+
void setState(const std::list< DCGVertexType > &)
Sets current state.
Definition common/compiler/reachability.cpp:379
+
void setPrevNode(DCGVertexType)
Sets previous node.
Definition common/compiler/reachability.cpp:383
+
static ReachabilityEngineState * getInitial()
Gets initial state.
Definition common/compiler/reachability.cpp:363
+
DCGVertexType getPrevNode()
Gets previous node.
Definition common/compiler/reachability.cpp:381
+
bool isEmpty()
Retuns true if state is empty.
Definition common/compiler/reachability.cpp:385
Visitor mixin for looking up names in enclosing scopes from the Visitor::Context.
Definition resolveReferences.h:35
Definition cstring.h:85
Definition common/compiler/compiler_result.cpp:3
diff --git a/resource_8h_source.html b/resource_8h_source.html index 8442b71e944..688243873b0 100644 --- a/resource_8h_source.html +++ b/resource_8h_source.html @@ -202,8 +202,8 @@
92
93#endif /* BF_P4C_MAU_RESOURCE_H_ */
Definition table_layout.h:34
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition safe_vector.h:27
Definition phv_fields.h:898
Definition autoclone.h:31
diff --git a/solver_8h_source.html b/solver_8h_source.html index e6fe6cf16c0..be340875404 100644 --- a/solver_8h_source.html +++ b/solver_8h_source.html @@ -176,7 +176,7 @@
virtual bool isInIncrementalMode() const =0
virtual void seed(unsigned seed)=0
Definition castable.h:36
-
Definition json_generator.h:36
+
Definition json_generator.h:37
Definition cstring.h:85
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
IR::Expression Constraint
Represents a constraint that can be shipped to and asserted within a solver.
Definition solver.h:17
diff --git a/targets_2bmv2_2expr__stepper_8h_source.html b/targets_2bmv2_2expr__stepper_8h_source.html index 7cc8f2a00ce..1b9d5fb071a 100644 --- a/targets_2bmv2_2expr__stepper_8h_source.html +++ b/targets_2bmv2_2expr__stepper_8h_source.html @@ -180,7 +180,7 @@
const ProgramInfo & programInfo
Target-specific information about the P4 program being evaluated.
Definition abstract_stepper.h:46
Definition targets/bmv2/expr_stepper.h:17
std::string getClassName() override
Definition targets/bmv2/expr_stepper.cpp:45
-
void evalExternMethodCall(const ExternInfo &externInfo) override
Definition targets/bmv2/expr_stepper.cpp:1627
+
void evalExternMethodCall(const ExternInfo &externInfo) override
Definition targets/bmv2/expr_stepper.cpp:1626
Represents state of execution after having reached a program point.
Definition execution_state.h:34
Encapsulates a set of extern method implementations.
Definition core/small_step/expr_stepper.h:27
Implements small-step operational semantics for expressions.
Definition core/small_step/expr_stepper.h:20
diff --git a/tc_annotations_8h_source.html b/tc_annotations_8h_source.html index bd105a106cd..02f5e9f3143 100644 --- a/tc_annotations_8h_source.html +++ b/tc_annotations_8h_source.html @@ -169,20 +169,19 @@
45 "TC", true,
-
46 {PARSE_EMPTY(defaultHit), PARSE_EMPTY(defaultHitConst),
-
47 PARSE_CONSTANT_OR_STRING_LITERAL(tcType), PARSE_CONSTANT_OR_STRING_LITERAL(numMask),
-
48 PARSE_EMPTY(tcMayOverride), PARSE_CONSTANT_OR_STRING_LITERAL(tc_acl),
-
49 PARSE_EMPTY(tc_md_write), PARSE_EMPTY(tc_md_read), PARSE_EMPTY(tc_md_write),
-
50 PARSE_EMPTY(tc_md_exec), PARSE_EMPTY(tc_ControlPath), PARSE_EMPTY(tc_key),
-
51 PARSE_EMPTY(tc_data), PARSE_EMPTY(tc_data_scalar), PARSE_EMPTY(tc_init_val),
-
52 PARSE_EMPTY(tc_numel)}) {}
-
53};
+
46 {PARSE_EMPTY(defaultHit), PARSE_EMPTY(defaultHitConst), PARSE_STRING_LITERAL(tcType),
+
47 PARSE_CONSTANT_OR_STRING_LITERAL(numMask), PARSE_EMPTY(tcMayOverride),
+
48 PARSE_STRING_LITERAL(tc_acl), PARSE_EMPTY(tc_md_write), PARSE_EMPTY(tc_md_read),
+
49 PARSE_EMPTY(tc_md_write), PARSE_EMPTY(tc_md_exec), PARSE_EMPTY(tc_ControlPath),
+
50 PARSE_EMPTY(tc_key), PARSE_EMPTY(tc_data), PARSE_EMPTY(tc_data_scalar),
+
51 PARSE_EMPTY(tc_init_val), PARSE_EMPTY(tc_numel)}) {}
+
52};
-
54
-
55} // namespace P4::TC
-
56
-
57#endif /* BACKENDS_TC_TCANNOTATIONS_H_ */
-
Definition parseAnnotations.h:114
+
53
+
54} // namespace P4::TC
+
55
+
56#endif /* BACKENDS_TC_TCANNOTATIONS_H_ */
+
Definition parseAnnotations.h:138
Definition tcAnnotations.h:25
Definition cstring.h:85
This file defines functions for the pass to generate the introspection file.
Definition tc/backend.cpp:24
diff --git a/tofino_2bf-p4c_2control-plane_2bfruntime__arch__handler_8h_source.html b/tofino_2bf-p4c_2control-plane_2bfruntime__arch__handler_8h_source.html index c6e4b42a89f..c1bb696177e 100644 --- a/tofino_2bf-p4c_2control-plane_2bfruntime__arch__handler_8h_source.html +++ b/tofino_2bf-p4c_2control-plane_2bfruntime__arch__handler_8h_source.html @@ -2642,7 +2642,7 @@
virtual cstring getAlias(cstring name) const =0
virtual void add(P4RuntimeSymbolType type, const IR::IDeclaration *declaration)=0
Add a @type symbol, extracting the name and id from @declaration.
Definition p4RuntimeArchHandler.h:63
-
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:389
+
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:390
Definition methodInstance.h:194
Definition methodInstance.h:168
The Declaration interface, representing objects with names.
Definition declaration.h:26
@@ -2668,9 +2668,9 @@
void forAllEvaluatedBlocks(const IR::Block *block, Func function)
Definition p4RuntimeArchHandler.h:234
std::optional< ExternInstance > getExternInstanceFromProperty(const IR::P4Table *table, const cstring &propertyName, ReferenceMap *refMap, TypeMap *typeMap, bool *isConstructedInPlace)
Definition p4RuntimeArchHandler.cpp:41
bool isExternPropertyConstructedInPlace(const IR::P4Table *table, const cstring &propertyName)
Definition p4RuntimeArchHandler.cpp:77
-
void addDocumentation(Message *message, const IR::IAnnotated *annotated)
' and '@description' annotations if present.
Definition p4RuntimeArchHandler.h:307
-
std::optional< Counterlike< Kind > > getDirectCounterlike(const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
Definition p4RuntimeArchHandler.h:490
-
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:368
+
void addDocumentation(Message *message, const IR::IAnnotated *annotated)
' and '@description' annotations if present.
Definition p4RuntimeArchHandler.h:308
+
std::optional< Counterlike< Kind > > getDirectCounterlike(const IR::P4Table *table, ReferenceMap *refMap, TypeMap *typeMap)
Definition p4RuntimeArchHandler.h:491
+
A traits class describing the properties of "counterlike" things.
Definition p4RuntimeArchHandler.h:369
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
void warning(const char *format, Args &&...args)
Report a warning with the given message.
Definition lib/error.h:115
void forAllMatching(const IR::Node *root, Func &&function)
Definition visitor.h:801
@@ -2697,12 +2697,12 @@
static std::optional< Wred > fromDirect(const P4::ExternInstance &instance, const IR::P4Table *table)
Definition tofino/bf-p4c/control-plane/bfruntime_arch_handler.h:491
const std::optional< cstring > table
If not none, the instance is a direct resource associated with table.
Definition tofino/bf-p4c/control-plane/bfruntime_arch_handler.h:467
static std::optional< Wred > from(const IR::ExternBlock *instance)
Definition tofino/bf-p4c/control-plane/bfruntime_arch_handler.h:473
-
Definition p4RuntimeArchHandler.h:376
-
const std::optional< cstring > table
If not none, the instance is a direct resource associated with @table.
Definition p4RuntimeArchHandler.h:386
-
const cstring name
The name of the instance.
Definition p4RuntimeArchHandler.h:378
-
const IR::IAnnotated * annotations
If non-null, the instance's annotations.
Definition p4RuntimeArchHandler.h:380
-
const cstring unit
The units parameter to the instance; valid values vary depending on @Kind.
Definition p4RuntimeArchHandler.h:382
-
const int64_t size
The size parameter to the instance.
Definition p4RuntimeArchHandler.h:384
+
Definition p4RuntimeArchHandler.h:377
+
const std::optional< cstring > table
If not none, the instance is a direct resource associated with @table.
Definition p4RuntimeArchHandler.h:387
+
const cstring name
The name of the instance.
Definition p4RuntimeArchHandler.h:379
+
const IR::IAnnotated * annotations
If non-null, the instance's annotations.
Definition p4RuntimeArchHandler.h:381
+
const cstring unit
The units parameter to the instance; valid values vary depending on @Kind.
Definition p4RuntimeArchHandler.h:383
+
const int64_t size
The size parameter to the instance.
Definition p4RuntimeArchHandler.h:385
Definition p4RuntimeArchHandler.h:204
Definition externInstance.h:51
T * to() noexcept
Definition rtti.h:226
diff --git a/type_checker_8h_source.html b/type_checker_8h_source.html index eb2b1008979..49ee73382b5 100644 --- a/type_checker_8h_source.html +++ b/type_checker_8h_source.html @@ -785,7 +785,7 @@
TypeVariableSubstitution * unifyCast(const IR::Node *errorPosition, const IR::Type *destType, const IR::Type *srcType, std::string_view errorFormat={}, std::initializer_list< const IR::Node * > errorArgs={})
Definition typeChecker.h:129
TypeVariableSubstitution * unify(const IR::Node *errorPosition, const IR::Type *destType, const IR::Type *srcType, std::string_view errorFormat={}, std::initializer_list< const IR::Node * > errorArgs={})
Same as above, not allowing casts.
Definition typeChecker.h:135
const IR::Expression * assignment(const IR::Node *errorPosition, const IR::Type *destType, const IR::Expression *sourceExpression)
Definition typeChecker.cpp:544
-
std::pair< const IR::Type *, const IR::Vector< IR::Argument > * > containerInstantiation(const IR::Node *node, const IR::Vector< IR::Argument > *args, const IR::IContainer *container)
Definition typeChecker.cpp:845
+
std::pair< const IR::Type *, const IR::Vector< IR::Argument > * > containerInstantiation(const IR::Node *node, const IR::Vector< IR::Argument > *args, const IR::IContainer *container)
Definition typeChecker.cpp:851
static const IR::Type * specialize(const IR::IMayBeGenericType *type, const IR::Vector< IR::Type > *arguments, const Visitor::Context *ctxt)
Definition typeChecker.cpp:214
const IR::ActionList * currentActionList
Action list of the current table.
Definition typeChecker.h:192
Definition typeChecker.h:215
diff --git a/type_spec_converter_8h_source.html b/type_spec_converter_8h_source.html index 50bdf259ed6..0237588a4eb 100644 --- a/type_spec_converter_8h_source.html +++ b/type_spec_converter_8h_source.html @@ -233,12 +233,12 @@
117
118#endif // CONTROL_PLANE_TYPESPECCONVERTER_H_
Generates the appropriate p4.P4DataTypeSpec for a given IR::Type node.
Definition typeSpecConverter.h:46
-
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:389
+
static const ::p4::config::v1::P4DataTypeSpec * convert(const P4::ReferenceMap *refMap, P4::TypeMap *typeMap, const IR::Type *type, ::p4::config::v1::P4TypeInfo *typeInfo)
Definition typeSpecConverter.cpp:390
Definition visitor.h:400
Class used to encode maps from paths to declarations.
Definition referenceMap.h:66
Definition typeMap.h:41
Definition cstring.h:85
-
cstring getTypeName(const IR::Type *type, TypeMap *typeMap)
Definition typeSpecConverter.cpp:80
+
cstring getTypeName(const IR::Type *type, TypeMap *typeMap)
Definition typeSpecConverter.cpp:81
bool hasTranslationAnnotation(const IR::Type *type, TranslationAnnotation *payload)
Definition typeSpecConverter.cpp:43
Payload of @p4runtime_translation annotation.
Definition typeSpecConverter.h:100
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/unique__id_8h_source.html b/unique__id_8h_source.html index 096879c05d1..f1bde8595a5 100644 --- a/unique__id_8h_source.html +++ b/unique__id_8h_source.html @@ -291,8 +291,8 @@
201} // namespace P4
202
203#endif /* BACKENDS_TOFINO_BF_P4C_IR_UNIQUE_ID_H_ */
-
Definition json_generator.h:36
-
Definition json_loader.h:38
+
Definition json_generator.h:37
+
Definition json_loader.h:39
Definition unique_id.h:44
Definition unique_id.h:168
Definition cstring.h:85
diff --git a/validate_match_annotations_8h_source.html b/validate_match_annotations_8h_source.html index 4485ae1b648..106e191af5e 100644 --- a/validate_match_annotations_8h_source.html +++ b/validate_match_annotations_8h_source.html @@ -159,21 +159,23 @@
36 void postorder(const IR::Annotation *annotation) override {
37 if (annotation->name != IR::Annotation::matchAnnotation) return;
38 if (!findContext<IR::StructField>()) return;
-
39 if (annotation->expr.size() != 1)
-
40 ::P4::error(ErrorType::ERR_INVALID, "%1%: annotation must have exactly 1 argument",
-
41 annotation);
-
42 auto e0 = annotation->expr.at(0);
-
43 auto type = typeMap->getType(e0, true);
-
44 if (type == nullptr) return;
-
45 if (!type->is<IR::Type_MatchKind>())
-
46 ::P4::error(ErrorType::ERR_TYPE_ERROR, "%1%: value must be a match_kind", e0);
-
47 }
-
48};
+
39 // FIXME: Check annotation kind
+
40 const auto &expr = annotation->getExpr();
+
41 if (expr.size() != 1)
+
42 ::P4::error(ErrorType::ERR_INVALID, "%1%: annotation must have exactly 1 argument",
+
43 annotation);
+
44 auto e0 = expr.at(0);
+
45 auto type = typeMap->getType(e0, true);
+
46 if (type == nullptr) return;
+
47 if (!type->is<IR::Type_MatchKind>())
+
48 ::P4::error(ErrorType::ERR_TYPE_ERROR, "%1%: value must be a match_kind", e0);
+
49 }
+
50};
-
49
-
50} // namespace P4
51
-
52#endif /* P4_VALIDATEMATCHANNOTATIONS_H_ */
+
52} // namespace P4
+
53
+
54#endif /* P4_VALIDATEMATCHANNOTATIONS_H_ */
Definition visitor.h:400
Definition typeMap.h:41
Definition validateMatchAnnotations.h:29
diff --git a/validate_string_annotations_8h_source.html b/validate_string_annotations_8h_source.html index 168ccb0e3a2..90ecd77f838 100644 --- a/validate_string_annotations_8h_source.html +++ b/validate_string_annotations_8h_source.html @@ -158,22 +158,24 @@
36 name != IR::Annotation::noWarnAnnotation) {
37 return;
38 }
-
39 if (annotation->expr.size() != 1) {
-
40 error(ErrorType::ERR_INVALID, "%1%: annotation must have exactly 1 argument",
-
41 annotation);
-
42 }
-
43 const auto *e0 = annotation->expr.at(0);
-
44 if (!e0->is<IR::StringLiteral>()) {
-
45 error(ErrorType::ERR_TYPE_ERROR, "%1%: @%2% annotation's value must be a string", e0,
-
46 annotation->name.originalName);
-
47 }
-
48 }
-
49};
+
39 // FIXME: Validate annotation type
+
40 const auto &expr = annotation->getExpr();
+
41 if (expr.size() != 1) {
+
42 error(ErrorType::ERR_INVALID, "%1%: annotation must have exactly 1 argument",
+
43 annotation);
+
44 }
+
45 const auto *e0 = expr.at(0);
+
46 if (!e0->is<IR::StringLiteral>()) {
+
47 error(ErrorType::ERR_TYPE_ERROR, "%1%: @%2% annotation's value must be a string", e0,
+
48 annotation->name.originalName);
+
49 }
+
50 }
+
51};
-
50
-
51} // namespace P4
52
-
53#endif /* FRONTENDS_P4_VALIDATESTRINGANNOTATIONS_H_ */
+
53} // namespace P4
+
54
+
55#endif /* FRONTENDS_P4_VALIDATESTRINGANNOTATIONS_H_ */
Definition visitor.h:400
Definition validateStringAnnotations.h:28
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/vector_8h_source.html b/vector_8h_source.html index 1ef295aa93c..23ddc7e989f 100644 --- a/vector_8h_source.html +++ b/vector_8h_source.html @@ -388,7 +388,7 @@
Definition vector.h:35
Definition vector.h:59
void pushBackOrAppend(const IR::Node *item)
Definition vector.h:128
-
Definition json_loader.h:38
+
Definition json_loader.h:39
Type-erased Enumerator interface.
Definition enumerator.h:68
Definition safe_vector.h:27
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24
diff --git a/z3__solver_8h_source.html b/z3__solver_8h_source.html index 2d4e8df0c71..02c7d3b9546 100644 --- a/z3__solver_8h_source.html +++ b/z3__solver_8h_source.html @@ -308,7 +308,7 @@
Provides a higher-level interface for an SMT solver.
Definition solver.h:24
Definition node.h:94
Definition visitor.h:400
-
Definition json_generator.h:36
+
Definition json_generator.h:37
Definition accessor.h:11
A Z3-based implementation of AbstractSolver. Encapsulates a z3::solver and a z3::context.
Definition z3_solver.h:29
std::optional< bool > checkSat()
Definition z3_solver.cpp:175

Public Member Functions

std::ostream & operator<< (std::ostream &out, const IHasDbPrint *obj)
 
+std::ostream & operator<< (std::ostream &out, const IR::Vector< IR::Annotation > &v)
 
std::ostream & operator<< (std::ostream &out, const IR::Vector< IR::Expression > &v)