|
| PnaDpdkRegisterValue (const IR::Expression *initialValue) |
|
void | addRegisterCondition (PnaDpdkRegisterCondition cond) |
| Each element is an API name paired with a match rule.
|
|
| DECLARE_TYPEINFO (PnaDpdkRegisterValue, TestObject) |
|
const PnaDpdkRegisterValue * | evaluate (const Model &model, bool doComplete) const override |
|
const IR::Expression * | getCurrentValue (const IR::Expression *index) const |
|
const IR::Constant * | getEvaluatedValue () const |
|
const IR::Expression * | getInitialValue () const |
|
cstring | getObjectName () const override |
|
| TestObject (const TestObject &)=default |
|
| TestObject (TestObject &&)=default |
|
| DECLARE_TYPEINFO (TestObject) |
|
TestObject & | operator= (const TestObject &)=default |
|
TestObject & | operator= (TestObject &&)=default |
|
template<typename T > |
T & | as () |
| Tries to convert the class to type T. A BUG occurs if the cast fails.
|
|
template<typename T > |
const T & | as () const |
| Tries to convert the class to type T. A BUG occurs if the cast fails.
|
|
template<typename T > |
T * | checkedTo () |
| Performs a checked cast. A BUG occurs if the cast fails.
|
|
template<typename T > |
const T * | checkedTo () const |
| Performs a checked cast. A BUG occurs if the cast fails.
|
|
template<typename T > |
bool | is () const noexcept |
|
virtual bool | isA (TypeId typeId) const noexcept=0 |
|
template<typename T > |
const T * | to () const noexcept |
| Same as to , but returns const pointer to T.
|
|
template<typename T > |
T * | to () noexcept |
|
virtual TypeId | typeId () const noexcept=0 |
|
This object tracks the list of writes that have been performed to a particular register. The registerConditionList represents the pair of the index that was written, and the value that was written to this index. When reading from a register, we can furl this list starting from the first index into a set of nested Mux expressions (e.g., "readIndex == savedIndex ?
savedValue : defaultValue", where defaultValue may be another Mux expression). If the read index matches with the index that was saved in this tuple, we return the value, otherwise we unroll the nested MUX expressions. This implicitly handles overwrites too, as the latest writes to a particular index appear the earliest in this unraveling phase..