CIRCT
19.0.0git
|
Classes | |
struct | ValueComparator |
llvm::EquivalenceClasses wants comparable elements. More... | |
Private Member Functions | |
void | runOnOperation () override |
void | getRefABIPrefix (FModuleLike mod, SmallVectorImpl< char > &prefix) |
Generate the ABI ref_<module> prefix string into prefix . More... | |
StringAttr | getRefABIMacroForPort (FModuleLike mod, size_t portIndex, const Twine &prefix, bool backTick=false) |
Get full macro name as StringAttr for the specified ref port. More... | |
LogicalResult | resolveReferencePath (mlir::TypedValue< RefType > refVal, ImplicitLocOpBuilder builder, mlir::FlatSymbolRefAttr &ref, SmallString< 128 > &stringLeaf) |
LogicalResult | resolveReference (mlir::TypedValue< RefType > refVal, ImplicitLocOpBuilder &builder, FlatSymbolRefAttr &ref, StringAttr &xmrAttr) |
LogicalResult | handleForceReleaseOp (Operation *op) |
LogicalResult | handleRefResolve (RefResolveOp resolve) |
void | setPortToRemove (Operation *op, size_t index, size_t numPorts) |
LogicalResult | handleInstanceOp (InstanceOp inst, InstanceGraph &instanceGraph) |
LogicalResult | handlePublicModuleRefPorts (FModuleOp module) |
hw::InnerSymbolNamespace & | getModuleNamespace (FModuleLike module) |
Get the cached namespace for a module. More... | |
InnerRefAttr | getInnerRefTo (Value val) |
InnerRefAttr | getInnerRefTo (Operation *op) |
void | markForRemoval (Operation *op) |
std::optional< size_t > | getRemoteRefSend (Value val, bool errorIfNotFound=true) |
size_t | addReachingSendsEntry (Value atRefVal, XMRNode::SymOrIndexOp info, std::optional< size_t > continueFrom=std::nullopt) |
void | garbageCollect () |
bool | isZeroWidth (FIRRTLBaseType t) |
hw::HierPathOp | getOrCreatePath (ArrayAttr pathArray, ImplicitLocOpBuilder &builder) |
Return a HierPathOp for the provided pathArray. More... | |
Private Attributes | |
DenseMap< Operation *, hw::InnerSymbolNamespace > | moduleNamespaces |
Cached module namespaces. More... | |
DenseSet< Operation * > | visitedModules |
DenseMap< Value, size_t > | dataflowAt |
Map of a reference value to an entry into refSendPathList. More... | |
SmallVector< XMRNode > | refSendPathList |
refSendPathList is used to construct a path to the RefSendOp. More... | |
llvm::EquivalenceClasses< Value, ValueComparator > * | dataFlowClasses |
DenseMap< Operation *, llvm::BitVector > | refPortsToRemoveMap |
SmallVector< Operation * > | opsToRemove |
RefResolve, RefSend, and Connects involving them that will be removed. More... | |
DenseMap< size_t, SmallString< 128 > > | xmrPathSuffix |
Record the internal path to an external module or a memory. More... | |
CircuitNamespace * | circuitNamespace |
DenseMap< Attribute, hw::HierPathOp > | pathCache |
A cache of already created HierPathOps. More... | |
OpBuilder::InsertPoint | pathInsertPoint = {} |
The insertion point where the pass inserts HierPathOps. More... | |
Definition at line 74 of file LowerXMR.cpp.
|
inlineprivate |
Definition at line 708 of file LowerXMR.cpp.
|
inlineprivate |
Definition at line 717 of file LowerXMR.cpp.
References builder.
|
inlineprivate |
Definition at line 675 of file LowerXMR.cpp.
References circt::firrtl::getInnerRefTo().
|
inlineprivate |
Definition at line 664 of file LowerXMR.cpp.
References circt::firrtl::getInnerRefTo().
|
inlineprivate |
Get the cached namespace for a module.
Definition at line 660 of file LowerXMR.cpp.
|
inlineprivate |
Return a HierPathOp for the provided pathArray.
This will either return an existing HierPathOp or it will create and return a new one.
Definition at line 768 of file LowerXMR.cpp.
|
inlineprivate |
Get full macro name as StringAttr for the specified ref port.
Uses existing 'prefix', optionally preprends the backtick character.
Definition at line 368 of file LowerXMR.cpp.
References circt::calyx::direction::get().
|
inlineprivate |
Generate the ABI ref_<module> prefix string into prefix
.
Definition at line 356 of file LowerXMR.cpp.
References toVector().
|
inlineprivate |
Definition at line 684 of file LowerXMR.cpp.
|
inlineprivate |
Definition at line 461 of file LowerXMR.cpp.
References builder.
|
inlineprivate |
Get the resolution string for this ref-type port.
Definition at line 519 of file LowerXMR.cpp.
References circt::firrtl::getInnerRefTo(), and circt::firrtl::Out.
|
inlineprivate |
Definition at line 605 of file LowerXMR.cpp.
References circt::calyx::direction::get(), and circt::firrtl::Out.
|
inlineprivate |
Definition at line 488 of file LowerXMR.cpp.
References builder, circt::calyx::direction::get(), circt::firrtl::getBitWidth(), and circt::firrtl::getIntZerosAttr().
|
inlineprivate |
Definition at line 764 of file LowerXMR.cpp.
References circt::firrtl::FIRRTLBaseType::getBitWidthOrSentinel().
|
inlineprivate |
Definition at line 682 of file LowerXMR.cpp.
|
inlineprivate |
Definition at line 444 of file LowerXMR.cpp.
References builder.
|
inlineprivate |
Definition at line 374 of file LowerXMR.cpp.
References assert(), builder, circt::calyx::direction::get(), and toVector().
|
inlineoverrideprivate |
Definition at line 76 of file LowerXMR.cpp.
References Python.support::connect(), circt::calyx::direction::get(), circt::firrtl::getFieldName(), circt::firrtl::getFieldRefFromValue(), circt::firrtl::getInnerRefTo(), and toVector().
|
inlineprivate |
Definition at line 512 of file LowerXMR.cpp.
|
private |
Definition at line 841 of file LowerXMR.cpp.
|
private |
Map of a reference value to an entry into refSendPathList.
Each entry in refSendPathList represents the path to RefSend. The path is required since there can be multiple paths to the RefSend and we need to identify a unique path.
Definition at line 812 of file LowerXMR.cpp.
|
private |
Definition at line 831 of file LowerXMR.cpp.
|
private |
Cached module namespaces.
Definition at line 805 of file LowerXMR.cpp.
|
private |
RefResolve, RefSend, and Connects involving them that will be removed.
Definition at line 836 of file LowerXMR.cpp.
|
private |
A cache of already created HierPathOps.
This is used to avoid repeatedly creating the same HierPathOp.
Definition at line 845 of file LowerXMR.cpp.
|
private |
The insertion point where the pass inserts HierPathOps.
Definition at line 848 of file LowerXMR.cpp.
|
private |
Definition at line 833 of file LowerXMR.cpp.
|
private |
refSendPathList is used to construct a path to the RefSendOp.
Each entry is an XMRNode, with an InnerRefAttr or indexing op, and a pointer to the next node in the path. The InnerRefAttr can be to an InstanceOp or to the XMR defining op, the index op records narrowing along path. All the nodes representing an InstanceOp or indexing operation must have a valid NextNodeOnPath. Only the node representing the final XMR defining op has no NextNodeOnPath, which denotes a leaf node on the path.
Definition at line 821 of file LowerXMR.cpp.
|
private |
Definition at line 807 of file LowerXMR.cpp.
|
private |
Record the internal path to an external module or a memory.
Definition at line 839 of file LowerXMR.cpp.