P4C
The P4 Compiler
Loading...
Searching...
No Matches
JbayNextTable Class Reference
Inheritance diagram for JbayNextTable:
[legend]

Classes

class  FindNextTableUse
 

Public Types

using next_map_t = std::map<UniqueId, std::unordered_map<cstring, std::set<UniqueId>>>
 
- Public Types inherited from P4::Visitor
typedef Visitor_Context Context
 

Public Member Functions

 JbayNextTable (bool disableNextTableUse=false)
 
void dbprint (std::ostream &out) const
 
std::pair< ssize_t, ssize_t > get_live_range_for_lb_with_dest (UniqueId dest) const
 
size_t get_num_dts ()
 
size_t get_num_lbs ()
 
const std::unordered_map< int, std::set< UniqueId > > & long_branches (UniqueId tbl) const
 
ordered_set< UniqueIdnext_for (const IR::MAU::Table *tbl, cstring what) const
 
- Public Member Functions inherited from P4::PassRepeated
 PassRepeated (const PassManager &other, unsigned repeats=0)
 
 PassRepeated (const std::initializer_list< VisitorRef > &init, unsigned repeats=0)
 
const IR::Nodeapply_visitor (const IR::Node *, const char *=0) override
 
PassRepeatedclone () const override
 
PassRepeatedsetRepeats (unsigned repeats)
 
- Public Member Functions inherited from P4::PassManager
 PassManager (const PassManager &)=default
 
 PassManager (const std::initializer_list< VisitorRef > &init)
 
 PassManager (PassManager &&)=default
 
void addDebugHook (DebugHook h, bool recursive=false)
 
void addDebugHooks (std::vector< DebugHook > hooks, bool recursive=false)
 
void addPasses (const std::initializer_list< VisitorRef > &init)
 
bool backtrack (trigger &trig) override
 
void early_exit ()
 
void listPasses (std::ostream &, cstring sep) const
 
bool never_backtracks () override
 
void removePasses (const std::vector< cstring > &exclude)
 
void setStopOnError (bool stop)
 
- Public Member Functions inherited from P4::Visitor
virtual bool check_clone (const Visitor *a)
 
virtual bool check_global (cstring)
 
virtual void clear_globals ()
 
virtual ControlFlowVisitorcontrolFlowVisitor ()
 
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 Visitorflow_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 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
 
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 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 Member Functions inherited from P4::Backtrack
- Public Member Functions inherited from NextTable
int long_branch_tag_for (UniqueId from, UniqueId to) const
 
- Public Member Functions inherited from P4::IHasDbPrint
void print () const
 

Public Attributes

std::map< UniqueId, std::unordered_map< int, std::set< UniqueId > > > lbs
 
next_map_t props
 
- Public Attributes inherited from P4::Visitor
const Visitorcalled_by = nullptr
 
cstring internalName
 
SplitFlowVisit_base *& split_link
 
SplitFlowVisit_basesplit_link_mem = nullptr
 

Friends

std::ostream & operator<< (std::ostream &out, const JbayNextTable &nt)
 

Additional Inherited Members

- 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::PassManager
profile_t init_apply (const IR::Node *root) override
 
void runDebugHooks (const char *visitorName, const IR::Node *node)
 
- Protected Member Functions inherited from P4::Visitor
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)
 
virtual void visitAgain () const
 
virtual void visitOnce () const
 
- Protected Attributes inherited from P4::PassManager
safe_vector< DebugHookdebugHooks
 
safe_vector< Visitor * > passes
 
bool running = false
 
unsigned seqNo = 0
 
bool stop_on_error = true
 
- Protected Attributes inherited from P4::Visitor
bool dontForwardChildrenBeforePreorder = false
 
bool joinFlows = false
 
bool visitDagOnce = true
 

Member Function Documentation

◆ dbprint()

void JbayNextTable::dbprint ( std::ostream & out) const
inlinevirtual

Implements NextTable.

◆ get_live_range_for_lb_with_dest()

std::pair< ssize_t, ssize_t > JbayNextTable::get_live_range_for_lb_with_dest ( UniqueId dest) const
virtual
Returns
pair consisting of the live range of a long branch that activates the indicated destination. The pair is first stage, last stage. If no destination is found, returns -1, -1.

Reimplemented from NextTable.

◆ long_branches()

const std::unordered_map< int, std::set< UniqueId > > & JbayNextTable::long_branches ( UniqueId tbl) const
inlinevirtual

Reimplemented from NextTable.

◆ next_for()

ordered_set< UniqueId > JbayNextTable::next_for ( const IR::MAU::Table * tbl,
cstring what ) const
virtual

Implements NextTable.