P4C
The P4 Compiler
Loading...
Searching...
No Matches
MauPower::BuildPowerGraph Class Reference

#include <build_power_graph.h>

Inheritance diagram for MauPower::BuildPowerGraph:
[legend]

Public Member Functions

 BuildPowerGraph (const BuildPowerGraph &other)=default
 
 BuildPowerGraph (const NextTable *next_table_properties, const BFN_Options &options)
 
BuildPowerGraphclone () const override
 
void end_apply (const IR::Node *root) override
 
void flow_copy (::ControlFlowVisitor &v) override
 
void flow_merge (Visitor &v) override
 
SimplePowerGraphget_graph (gress_t g)
 
profile_t init_apply (const IR::Node *root) override
 
ordered_set< UniqueIdnext_for (const IR::MAU::Table *tbl, cstring what) const
 
bool preorder (const IR::MAU::Table *tbl) override
 
bool preorder (const IR::MAU::TableSeq *seq) override
 
- Public Member Functions inherited from P4::Inspector
const IR::Nodeapply_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
 
- Public Member Functions inherited from P4::Visitor
virtual void end_apply ()
 
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 bool flow_merge_closure (Visitor &)
 
const ContextgetChildContext () const
 
int getChildrenVisited () const
 
const ContextgetContext () const
 
int getContextDepth () const
 
const IR::NodegetCurrentNode () const
 
template<class T >
const T * getCurrentNode () const
 
const IR::NodegetOriginal () const
 
template<class T >
const T * getOriginal () const
 
template<class T >
const T * getParent () 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 VisitorsetCalledBy (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
 

Public Attributes

std::vector< UniqueIdalways_run_
 
const NextTablenext_table_properties_
 
const BFN_Optionsoptions_
 
- Public Attributes inherited from P4::Visitor
const Visitorcalled_by = nullptr
 
cstring internalName
 
SplitFlowVisit_base *& split_link
 
SplitFlowVisit_basesplit_link_mem = nullptr
 

Additional Inherited Members

- Public Types inherited from P4::Visitor
typedef Visitor_Context Context
 
- Static Public Member Functions inherited from P4::Visitor
static cstring demangle (const char *)
 
static bool warning_enabled (const Visitor *visitor, int warning_kind)
 
- Protected Member Functions inherited from P4::Visitor
void visit_children (const IR::Node *, std::function< void()> fn)
 
- Protected Attributes inherited from P4::Visitor
bool dontForwardChildrenBeforePreorder = false
 
bool joinFlows = false
 
bool visitDagOnce = true
 

Detailed Description

This class constructs the final placed MAU table control flow graph for each thread of execution: ingress, egress, and ghost.

Member Function Documentation

◆ clone()

BuildPowerGraph * MauPower::BuildPowerGraph::clone ( ) const
overridevirtual

Reimplemented from P4::Visitor.

◆ end_apply()

void MauPower::BuildPowerGraph::end_apply ( const IR::Node * root)
overridevirtual

Depending on compilation options, this function produces a dot graph for each thread of execution.

Reimplemented from P4::Visitor.

◆ flow_merge()

void MauPower::BuildPowerGraph::flow_merge ( Visitor & )
overridevirtual

Merge the given visitor into this visitor at a joint point in the control flow graph. Should update @this and leave the other unchanged.

Reimplemented from P4::Visitor.

◆ init_apply()

Visitor::profile_t MauPower::BuildPowerGraph::init_apply ( const IR::Node * root)
overridevirtual

Reimplemented from P4::Visitor.