CIRCT
20.0.0git
|
This is an edge in the InstanceGraph. More...
#include <InstanceGraph.h>
Public Member Functions | |
template<typename TTarget = InstanceOpInterface> | |
auto | getInstance () |
Get the instance-like op that this is tracking. More... | |
InstanceGraphNode * | getParent () const |
Get the module where the instantiation lives. More... | |
InstanceGraphNode * | getTarget () const |
Get the module which the instance-like is instantiating. More... | |
void | erase () |
Erase this instance record, removing it from the parent module and the target's use-list. More... | |
Private Member Functions | |
InstanceRecord (InstanceGraphNode *parent, InstanceOpInterface instance, InstanceGraphNode *target) | |
InstanceRecord (const InstanceRecord &)=delete | |
Private Attributes | |
InstanceGraphNode * | parent |
This is the module where the instantiation lives. More... | |
InstanceOpInterface | instance |
The InstanceLike that this is tracking. More... | |
InstanceGraphNode * | target |
This is the module which the instance-like is instantiating. More... | |
InstanceRecord * | nextUse = nullptr |
Intrusive linked list for other uses. More... | |
InstanceRecord * | prevUse = nullptr |
Friends | |
class | InstanceGraph |
Iterates over the handshake::FuncOp's in the program to build an instance graph. More... | |
class | InstanceGraphNode |
This is an edge in the InstanceGraph.
This tracks a specific instantiation of a module.
Definition at line 54 of file InstanceGraph.h.
|
inlineprivate |
Definition at line 79 of file InstanceGraph.h.
|
privatedelete |
void InstanceRecord::erase | ( | ) |
Erase this instance record, removing it from the parent module and the target's use-list.
Definition at line 16 of file InstanceGraph.cpp.
References circt::igraph::InstanceGraphNode::firstUse, getParent(), circt::igraph::InstanceGraphNode::instances, nextUse, prevUse, and target.
|
inline |
Get the instance-like op that this is tracking.
Definition at line 59 of file InstanceGraph.h.
References instance.
|
inline |
Get the module where the instantiation lives.
Definition at line 66 of file InstanceGraph.h.
References parent.
Referenced by erase(), and llvm::GraphTraits< llvm::Inverse< circt::igraph::InstanceGraphNode * > >::getParent().
|
inline |
Get the module which the instance-like is instantiating.
Definition at line 69 of file InstanceGraph.h.
References target.
Referenced by llvm::GraphTraits< circt::igraph::InstanceGraphNode * >::getChild().
|
friend |
Iterates over the handshake::FuncOp's in the program to build an instance graph.
In doing so, we detect whether there are any cycles in this graph, as well as infer a top function for the design by performing a topological sort of the instance graph. The result of this sort is placed in sortedFuncs.
Definition at line 76 of file InstanceGraph.h.
|
friend |
Definition at line 77 of file InstanceGraph.h.
|
private |
The InstanceLike that this is tracking.
Definition at line 88 of file InstanceGraph.h.
Referenced by getInstance().
|
private |
Intrusive linked list for other uses.
Definition at line 93 of file InstanceGraph.h.
Referenced by erase(), circt::igraph::InstanceGraphNode::UseIterator::operator++(), and circt::igraph::InstanceGraphNode::recordUse().
|
private |
This is the module where the instantiation lives.
Definition at line 85 of file InstanceGraph.h.
Referenced by getParent().
|
private |
Definition at line 94 of file InstanceGraph.h.
Referenced by erase(), and circt::igraph::InstanceGraphNode::recordUse().
|
private |
This is the module which the instance-like is instantiating.
Definition at line 91 of file InstanceGraph.h.
Referenced by erase(), and getTarget().