19#ifndef BACKENDS_TOFINO_BF_P4C_PHV_ANALYSIS_BUILD_MUTEX_H_
20#define BACKENDS_TOFINO_BF_P4C_PHV_ANALYSIS_BUILD_MUTEX_H_
22#include "backends/tofino/bf-p4c/ir/control_flow_visitor.h"
23#include "backends/tofino/bf-p4c/phv/phv_fields.h"
24#include "backends/tofino/bf-p4c/phv/pragma/phv_pragmas.h"
26#include "ir/visitor.h"
27#include "lib/bitvec.h"
28#include "lib/cstring.h"
29#include "lib/symbitmatrix.h"
65 using FieldFilter_t = std::function<bool(
const PHV::Field *f)>;
69 const bitvec &neverOverlay;
89 bool preorder(
const IR::Expression *)
override;
90 bool preorder(
const IR::MAU::Action *act)
override;
93 void end_apply()
override;
97 FieldFilter_t ignore_field)
99 neverOverlay(neverOverlay),
104 visitDagOnce =
false;
105 BackwardsCompatibleBroken =
true;
Definition build_mutex.h:63
profile_t init_apply(const IR::Node *root) override
Definition build_mutex.cpp:21
FieldFilter_t IgnoreField
Definition build_mutex.h:81
SymBitMatrix mutually_inclusive
Definition build_mutex.h:74
SymBitMatrix & mutually_exclusive
Definition build_mutex.h:78
void flow_merge(Visitor &) override
Definition build_mutex.cpp:56
bitvec fields_encountered
Tracks the fields encountered (and not ignored) during this analysis.
Definition build_mutex.h:84
Definition symbitmatrix.h:27
Definition phv_fields.h:154
Definition phv_fields.h:1095
Definition pa_no_overlay.h:33