19class LowerExpressions :
public Transform {
24 const IR::Expression *shift(
const IR::Operation_Binary *expression)
const;
27 explicit LowerExpressions(
P4::TypeMap *typeMap,
int maxShiftWidth = 8)
28 : typeMap(typeMap), maxShiftWidth(maxShiftWidth) {
30 setName(
"LowerExpressions");
33 const IR::Node *postorder(IR::Expression *expression)
override;
34 const IR::Node *postorder(IR::Shl *expression)
override {
return shift(expression); }
35 const IR::Node *postorder(IR::Shr *expression)
override {
return shift(expression); }
36 const IR::Node *postorder(IR::Cast *expression)
override;
37 const IR::Node *postorder(IR::Neg *expression)
override;
38 const IR::Node *postorder(IR::Slice *expression)
override;
39 const IR::Node *postorder(IR::Concat *expression)
override;
40 const IR::Node *preorder(IR::P4Table *table)
override {