37 const CollectLoweredParserInfo &parser_info;
42 explicit MergeLoweredParserStates(
const CollectLoweredParserInfo &pi,
45 : parser_info(pi), computed(computed), clot(c), defuseInfo(defuseInfo) {}
53 bool compare_match_operations(
const IR::BFN::LoweredParserMatch *a,
54 const IR::BFN::LoweredParserMatch *b);
56 const IR::BFN::LoweredParserMatch *get_unconditional_match(
57 const IR::BFN::LoweredParserState *state);
59 struct RightShiftPacketRVal :
public Modifier {
63 explicit RightShiftPacketRVal(
int byteDelta) : byteDelta(byteDelta) {}
65 bool preorder(IR::BFN::LoweredPacketRVal *rval)
override;
69 struct RightShiftCsumMask :
public Modifier {
72 bool swapMalform =
false;
74 explicit RightShiftCsumMask(
int byteDelta) : byteDelta(byteDelta) {}
76 bool preorder(IR::BFN::LoweredParserChecksum *csum)
override;
79 bool can_merge(
const IR::BFN::LoweredParserMatch *a,
const IR::BFN::LoweredParserMatch *b);
81 void do_merge(IR::BFN::LoweredParserMatch *match,
const IR::BFN::LoweredParserMatch *next);
84 bool is_loopback_state(
cstring state);
86 IR::Node *preorder(IR::BFN::LoweredParserMatch *match)
override;