40 CanonGatewayExpr() : _debugIndent(6) {}
43 IR::MAU::Action *preorder(IR::MAU::Action *af)
override {
47 IR::P4Table *preorder(IR::P4Table *t)
override {
51 IR::Attached *preorder(IR::Attached *a)
override {
55 IR::Node *preorder(IR::MAU::Table *)
override;
59 const IR::Expression *preorder(IR::LAnd *)
override;
60 const IR::Expression *preorder(IR::LOr *)
override;
61 const IR::Expression *preorder(IR::LNot *)
override;
63 const IR::Expression *postorder(IR::Operation::Relation *)
override;
64 const IR::Expression *postorder(IR::Leq *)
override;
65 const IR::Expression *postorder(IR::Lss *)
override;
66 const IR::Expression *postorder(IR::Geq *)
override;
67 const IR::Expression *postorder(IR::Grt *)
override;
68 const IR::Expression *postorder(IR::LAnd *)
override;
69 const IR::Expression *postorder(IR::LOr *)
override;
70 const IR::Expression *postorder(IR::LNot *)
override;
71 const IR::Expression *postorder(IR::BAnd *)
override;
72 const IR::Expression *postorder(IR::BOr *)
override;
73 const IR::Expression *postorder(IR::MAU::TypedPrimitive *)
override;
74 const IR::Node *postorder(IR::MAU::Table *)
override;
76 using GWRow_t = std::pair<const IR::Expression *, cstring>;
77 void removeUnusedRows(IR::MAU::Table *,
bool isCanon);
174 std::map<int, match_t> byte_matches;
176 bool preorder(
const IR::Expression *)
override;
177 bool preorder(
const IR::MAU::TypedPrimitive *)
override;
178 bool preorder(
const IR::LAnd *)
override {
return true; }
179 bool preorder(
const IR::LNot *)
override {
return true; }
180 bool preorder(
const IR::BAnd *)
override {
return true; }
181 bool preorder(
const IR::BOr *)
override {
return true; }
182 void constant(big_int val);
183 bool preorder(
const IR::Constant *c)
override {
187 bool preorder(
const IR::BoolLiteral *c)
override {
191 bool preorder(
const IR::Equ *)
override;
192 bool preorder(
const IR::Neq *)
override;
193 bool preorder(
const IR::RangeMatch *)
override;
194 friend std::ostream &operator<<(std::ostream &,
const BuildGatewayMatch &);
196 big_int andmask = 0, ormask = 0, cmplmask = 0;
197 int shift = 0, maxbit = 0;
198 bool check_per_byte_match(
const std::pair<int, le_bitrange> &
byte, big_int mask, big_int val);
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24