|
| EmitAction (const MauAsmOutput &s, std::ostream &o, const IR::MAU::Table *tbl, indent_t i) |
|
const IR::Node * | apply_visitor (const IR::Node *, const char *name=0) override |
|
profile_t | init_apply (const IR::Node *root) override |
|
virtual void | loop_revisit (const IR::Node *) |
|
virtual void | postorder (const IR::Node *) |
|
virtual bool | preorder (const IR::Node *) |
|
virtual void | revisit (const IR::Node *) |
|
void | revisit_visited () |
|
bool | visit_in_progress (const IR::Node *n) const |
|
void | visitAgain () const override |
|
void | visitOnce () const override |
|
virtual bool | check_global (cstring) |
|
virtual void | clear_globals () |
|
virtual Visitor * | clone () const |
|
virtual ControlFlowVisitor * | controlFlowVisitor () |
|
virtual void | end_apply () |
|
virtual void | end_apply (const IR::Node *root) |
|
virtual void | erase_global (cstring) |
|
template<class T > |
const T * | findContext () const |
|
template<class T > |
const T * | findContext (const Context *&c) const |
|
template<class T > |
const T * | findOrigCtxt () const |
|
template<class T > |
const T * | findOrigCtxt (const Context *&c) const |
|
virtual Visitor & | flow_clone () |
|
virtual void | flow_merge (Visitor &) |
|
virtual bool | flow_merge_closure (Visitor &) |
|
virtual void | flow_merge_global_from (cstring) |
|
virtual void | flow_merge_global_to (cstring) |
|
const Context * | getChildContext () const |
|
int | getChildrenVisited () const |
|
const Context * | getContext () const |
|
int | getContextDepth () const |
|
const IR::Node * | getCurrentNode () const |
|
template<class T > |
const T * | getCurrentNode () const |
|
const IR::Node * | getOriginal () const |
|
template<class T > |
const T * | getOriginal () const |
|
template<class T > |
const T * | getParent () const |
|
virtual bool | has_flow_joins () const |
|
profile_t | init_apply (const IR::Node *root, const Context *parent_context) |
|
bool | isInContext (const IR::Node *n) const |
|
virtual const char * | name () const |
|
template<class T > |
void | parallel_visit (const IR::Vector< T > &v, const char *name, int cidx) |
|
template<class T > |
void | parallel_visit (const IR::Vector< T > &v, const char *name=0) |
|
template<class T > |
void | parallel_visit (IR::Vector< T > &v, const char *name, int cidx) |
|
template<class T > |
void | parallel_visit (IR::Vector< T > &v, const char *name=0) |
|
void | print_context () const |
|
const Visitor & | setCalledBy (const Visitor *visitor) |
|
void | setName (const char *name) |
|
void | visit (const IR::Node &n, const char *name, int cidx) |
|
void | visit (const IR::Node &n, const char *name=0) |
|
void | visit (const IR::Node *&n, const char *name, int cidx) |
|
void | visit (const IR::Node *&n, const char *name=0) |
|
void | visit (const IR::Node *const &n, const char *name, int cidx) |
|
void | visit (const IR::Node *const &n, const char *name=0) |
|
void | visit (IR::Node &n, const char *name, int cidx) |
|
void | visit (IR::Node &n, const char *name=0) |
|
void | visit (IR::Node *&, const char *=0, int=0) |
|
template<class T , typename = std::enable_if_t<Util::has_SourceInfo_v<T> && !std::is_pointer_v<T>>, class... Args> |
void | warn (const int kind, const char *format, const T &node, Args &&...args) |
| The const ref variant of the above.
|
|
template<class T , typename = std::enable_if_t<Util::has_SourceInfo_v<T>>, class... Args> |
void | warn (const int kind, const char *format, const T *node, Args &&...args) |
|
bool | warning_enabled (int warning_kind) const |
|
bool | isIxbarRead (bool root_value=false) |
|
bool | isRead (bool root_value=false) |
|
bool | isWrite (bool root_value=false) |
|
|
void | action_context_json (const IR::MAU::Action *act) |
|
void | handle_hash_dist (const IR::Expression *expr) |
|
void | handle_phv_expr (const IR::Expression *expr) |
|
void | handle_random_number (const IR::Expression *expr) |
|
void | mod_cond_value (const IR::MAU::Action *act) |
|
void | next_table (const IR::MAU::Action *act, int mem_code) |
|
void | postorder (const IR::MAU::Action *) override |
|
void | postorder (const IR::MAU::Instruction *) override |
|
bool | preorder (const IR::Annotations *) override |
|
bool | preorder (const IR::BAnd *e) override |
|
bool | preorder (const IR::BoolLiteral *c) override |
|
bool | preorder (const IR::Cast *c) override |
|
bool | preorder (const IR::Constant *c) override |
|
bool | preorder (const IR::Expression *exp) override |
|
bool | preorder (const IR::LAnd *e) override |
|
bool | preorder (const IR::LNot *) override |
|
bool | preorder (const IR::LOr *e) override |
|
bool | preorder (const IR::MAU::Action *act) override |
|
bool | preorder (const IR::MAU::ActionArg *a) override |
|
bool | preorder (const IR::MAU::ActionDataConstant *adc) override |
|
bool | preorder (const IR::MAU::AttachedOutput *att) override |
|
bool | preorder (const IR::MAU::ConditionalArg *) override |
|
bool | preorder (const IR::MAU::HashDist *hd) override |
|
bool | preorder (const IR::MAU::Instruction *inst) override |
|
bool | preorder (const IR::MAU::IXBarExpression *e) override |
|
bool | preorder (const IR::MAU::MultiOperand *mo) override |
|
bool | preorder (const IR::MAU::RandomNumber *rn) override |
|
bool | preorder (const IR::MAU::SaluAction *act) override |
|
bool | preorder (const IR::MAU::SaluFunction *fn) override |
|
bool | preorder (const IR::MAU::SaluReg *r) override |
|
bool | preorder (const IR::MAU::SaluRegfileRow *srr) override |
|
bool | preorder (const IR::MAU::StatefulCounter *sc) override |
|
bool | preorder (const IR::MAU::WrappedSlice *sl) override |
|
bool | preorder (const IR::Member *m) override |
|
bool | preorder (const IR::Neg *) override |
|
bool | preorder (const IR::Node *n) override |
|
bool | preorder (const IR::Slice *sl) override |
|
bool | preorder_binop (const IR::Operation::Binary *bin, const char *op) |
|
virtual void | init_join_flows (const IR::Node *) |
|
virtual bool | join_flows (const IR::Node *) |
|
virtual void | post_join_flows (const IR::Node *, const IR::Node *) |
|
void | visit_children (const IR::Node *, std::function< void()> fn) |
|
void MauAsmOutput::EmitAction::mod_cond_value |
( |
const IR::MAU::Action * | act | ) |
|
|
inlineprotected |
In order to fill out the context JSON nodes in the pack format:
- is_mod_field_conditionally_value
- mod_field_conditionally_mask_field_name
which are required for the src1 & mask, described in action_format.h in the Parameter class, this function is required. This dumps out a map:
- key - The names of conditional parameters in an action
- value - The regions of action format that are conditionally controlled by this key
I think this is fairly ugly, but was the only concise way to correctly handle all corner cases, rather than having the assembler have to work through potential bitmasked-set instructions in order to potentially find which regions are controlled.