87 bool isSimple(
const IR::Expression *expression,
const Visitor::Context *ctxt) {
88 if (
auto mask = expression->to<IR::BAnd>()) {
89 if (mask->right->is<IR::Constant>())
90 expression = mask->left;
91 else if (mask->left->is<IR::Constant>())
92 expression = mask->right;
94 return IsLikeLeftValue::isSimple(expression, ctxt);
150 std::map<const IR::P4Table *, TableInsertions *> toInsert;
154 : refMap(refMap), typeMap(typeMap), key_policy(key_policy) {
157 CHECK_NULL(key_policy);
158 setName(
"DoSimplifyKey");
160 const IR::Node *doStatement(
const IR::Statement *statement,
const IR::Expression *expression);
164 const IR::Node *postorder(IR::MethodCallStatement *statement)
override {
165 return doStatement(statement, statement->methodCall);
167 const IR::Node *postorder(IR::IfStatement *statement)
override {
168 return doStatement(statement, statement->condition);
170 const IR::Node *postorder(IR::SwitchStatement *statement)
override {
171 return doStatement(statement, statement->expression);
173 const IR::Node *postorder(IR::AssignmentStatement *statement)
override {
174 return doStatement(statement, statement->right);
176 const IR::Node *postorder(IR::KeyElement *element)
override;
177 const IR::Node *postorder(IR::P4Table *table)
override;
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24