56 IR::MAU::Action *preorder(IR::MAU::Action *af)
override {
60 IR::P4Table *preorder(IR::P4Table *t)
override {
64 IR::Attached *preorder(IR::Attached *a)
override {
68 IR::Node *preorder(IR::MAU::Table *)
override;
72 const IR::Expression *preorder(IR::LAnd *)
override;
73 const IR::Expression *preorder(IR::LOr *)
override;
74 const IR::Expression *preorder(IR::LNot *)
override;
76 const IR::Expression *postorder(IR::Operation::Relation *)
override;
77 const IR::Expression *postorder(IR::Leq *)
override;
78 const IR::Expression *postorder(IR::Lss *)
override;
79 const IR::Expression *postorder(IR::Geq *)
override;
80 const IR::Expression *postorder(IR::Grt *)
override;
81 const IR::Expression *postorder(IR::LAnd *)
override;
82 const IR::Expression *postorder(IR::LOr *)
override;
83 const IR::Expression *postorder(IR::LNot *)
override;
84 const IR::Expression *postorder(IR::BAnd *)
override;
85 const IR::Expression *postorder(IR::BOr *)
override;
86 const IR::Expression *postorder(IR::MAU::TypedPrimitive *)
override;
87 const IR::Node *postorder(IR::MAU::Table *)
override;
89 using GWRow_t = std::pair<const IR::Expression *, cstring>;
90 void removeUnusedRows(IR::MAU::Table *,
bool isCanon);
187 std::map<int, match_t> byte_matches;
189 bool preorder(
const IR::Expression *)
override;
190 bool preorder(
const IR::MAU::TypedPrimitive *)
override;
191 bool preorder(
const IR::LAnd *)
override {
return true; }
192 bool preorder(
const IR::LNot *)
override {
return true; }
193 bool preorder(
const IR::BAnd *)
override {
return true; }
194 bool preorder(
const IR::BOr *)
override {
return true; }
195 void constant(big_int val);
196 bool preorder(
const IR::Constant *c)
override {
200 bool preorder(
const IR::BoolLiteral *c)
override {
204 bool preorder(
const IR::Equ *)
override;
205 bool preorder(
const IR::Neq *)
override;
206 bool preorder(
const IR::RangeMatch *)
override;
209 big_int andmask = 0, ormask = 0, cmplmask = 0;
210 int shift = 0, maxbit = 0;
211 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