P4C
The P4 Compiler
 
Loading...
Searching...
No Matches
P4::DoSimplifyKey Class Reference
Inheritance diagram for P4::DoSimplifyKey:

Public Member Functions

 DoSimplifyKey (ReferenceMap *refMap, TypeMap *typeMap, KeyIsSimple *key_policy)
 
const IR::Node * doStatement (const IR::Statement *statement, const IR::Expression *expression)
 
const IR::Node * postorder (IR::AssignmentStatement *statement) override
 
const IR::Node * postorder (IR::IfStatement *statement) override
 
const IR::Node * postorder (IR::KeyElement *element) override
 
const IR::Node * postorder (IR::MethodCallStatement *statement) override
 
const IR::Node * postorder (IR::P4Table *table) override
 
const IR::Node * postorder (IR::SwitchStatement *statement) override
 

Detailed Description

Transform complex table keys into simpler expressions.

table t {
key = { h.a + 1 : exact; }
...
}
apply {
t.apply();
}

is transformed to

bit<32> key_0;
table t {
key = { key_0 : exact; }
...
}
apply {
key_0 = h.a + 1;
t.apply();
}
Precondition
none
Postcondition
all complex table key expressions are replaced with a simpler expression.