30 std::set<const IR::Parameter *> toDereference;
31 std::vector<cstring> saveAction;
34 std::vector<UBPFRegister *> registersLookups;
42 bool preorder(
const IR::PathExpression *expression)
override;
43 bool preorder(
const IR::MethodCallStatement *s)
override;
44 bool preorder(
const IR::MethodCallExpression *expression)
override;
45 bool preorder(
const IR::AssignmentStatement *a)
override;
46 bool preorder(
const IR::BlockStatement *s)
override;
47 bool preorder(
const IR::ExitStatement *)
override;
48 bool preorder(
const IR::ReturnStatement *)
override;
49 bool preorder(
const IR::IfStatement *statement)
override;
50 bool preorder(
const IR::SwitchStatement *statement)
override;
51 bool preorder(
const IR::Operation_Binary *b)
override;
52 bool comparison(
const IR::Operation_Relation *b);
53 bool preorder(
const IR::Member *expression)
override;
55 void emitAssignmentStatement(
const IR::AssignmentStatement *a);
56 bool emitRegisterRead(
const IR::AssignmentStatement *a,
const IR::MethodCallExpression *method);
62 const IR::ControlBlock *controlBlock;
63 const IR::Parameter *headers;
64 const IR::Parameter *parserHeaders;
69 std::set<const IR::Parameter *> toDereference;
70 std::map<cstring, UBPFTable *> tables;
71 std::map<cstring, UBPFRegister *> registers;
74 const IR::Parameter *parserHeaders);
84 auto result = ::P4::get(tables, name);
85 BUG_CHECK(result !=
nullptr,
"No table named %1%", name);
90 auto result = ::P4::get(registers, name);
91 BUG_CHECK(result !=
nullptr,
"No register named %1%", name);
Definition ebpfControl.h:28
Definition ubpfControl.h:27