CIRCT 22.0.0git
|
A sample reduction pattern that maps hw.module
to hw.module.extern
.
More...
Public Member Functions | |
void | beforeReduction (mlir::ModuleOp op) override |
Called before the reduction is applied to a new subset of operations. | |
uint64_t | match (HWModuleOp op) override |
LogicalResult | rewrite (HWModuleOp op) override |
std::string | getName () const override |
Return a human-readable name for this reduction pattern. | |
bool | acceptSizeIncrease () const override |
Return true if the tool should accept the transformation this reduction performs on the module even if the overall size of the output increases. | |
![]() | |
uint64_t | match (Operation *op) override |
Check if the reduction can apply to a specific operation. | |
virtual uint64_t | match (HWModuleOp op) |
LogicalResult | rewrite (Operation *op) override |
Apply the reduction to a specific operation. | |
virtual LogicalResult | rewrite (HWModuleOp op)=0 |
![]() | |
virtual | ~Reduction () |
virtual void | afterReduction (mlir::ModuleOp) |
Called after the reduction has been applied to a subset of operations. | |
virtual void | matches (Operation *op, llvm::function_ref< void(uint64_t, uint64_t)> addMatch) |
Collect all ways how this reduction can apply to a specific operation. | |
virtual LogicalResult | rewriteMatches (Operation *op, ArrayRef< uint64_t > matches) |
Apply a set of matches of this reduction to a specific operation. | |
virtual bool | isOneShot () const |
Return true if the tool should not try to reapply this reduction after it has been successful. | |
void | notifyOpErased (Operation *op) |
Public Attributes | |
std::unique_ptr< InstanceGraph > | instanceGraph |
ModuleSizeCache | moduleSizes |
![]() | |
std::function< void(Operation *)> | notifyOpErasedCallback = nullptr |
An optional callback for reductions to communicate removal of operations. | |
A sample reduction pattern that maps hw.module
to hw.module.extern
.
Definition at line 59 of file HWReductions.cpp.
|
inlineoverridevirtual |
Return true if the tool should accept the transformation this reduction performs on the module even if the overall size of the output increases.
This can be handy for patterns that reduce the complexity of the IR at the cost of some verbosity.
Reimplemented from circt::Reduction.
Definition at line 78 of file HWReductions.cpp.
|
inlineoverridevirtual |
Called before the reduction is applied to a new subset of operations.
Reductions may use this callback to collect information such as symbol tables about the module upfront.
Reimplemented from circt::Reduction.
Definition at line 60 of file HWReductions.cpp.
References ModuleSizeCache::clear(), instanceGraph, and moduleSizes.
|
inlineoverridevirtual |
Return a human-readable name for this reduction pattern.
Implements circt::Reduction.
Definition at line 77 of file HWReductions.cpp.
|
inlineoverride |
Definition at line 65 of file HWReductions.cpp.
References ModuleSizeCache::getModuleSize(), instanceGraph, and moduleSizes.
|
inlineoverride |
Definition at line 69 of file HWReductions.cpp.
std::unique_ptr<InstanceGraph> ModuleExternalizer::instanceGraph |
Definition at line 80 of file HWReductions.cpp.
Referenced by beforeReduction(), and match().
ModuleSizeCache ModuleExternalizer::moduleSizes |
Definition at line 81 of file HWReductions.cpp.
Referenced by beforeReduction(), and match().