mirror of https://github.com/llvm/circt.git
[Arc] Make pass constructors accept options struct; NFC
Instead of passing pass options as separate constructor function arguments, use the `*Options` struct produced by TableGen.
This commit is contained in:
parent
c9d03095d0
commit
6281f978e7
|
@ -26,15 +26,13 @@ namespace arc {
|
|||
#include "circt/Dialect/Arc/ArcPasses.h.inc"
|
||||
|
||||
std::unique_ptr<mlir::Pass>
|
||||
createAddTapsPass(std::optional<bool> tapPorts = {},
|
||||
std::optional<bool> tapWires = {},
|
||||
std::optional<bool> tapNamedValues = {});
|
||||
createAddTapsPass(const AddTapsOptions &options = {});
|
||||
std::unique_ptr<mlir::Pass> createAllocateStatePass();
|
||||
std::unique_ptr<mlir::Pass> createArcCanonicalizerPass();
|
||||
std::unique_ptr<mlir::Pass> createDedupPass();
|
||||
std::unique_ptr<mlir::Pass> createGroupResetsAndEnablesPass();
|
||||
std::unique_ptr<mlir::Pass>
|
||||
createInferMemoriesPass(std::optional<bool> tapPorts = {});
|
||||
createInferMemoriesPass(const InferMemoriesOptions &options = {});
|
||||
std::unique_ptr<mlir::Pass> createInferStatePropertiesPass();
|
||||
std::unique_ptr<mlir::Pass> createInlineArcsPass();
|
||||
std::unique_ptr<mlir::Pass> createInlineModulesPass();
|
||||
|
|
|
@ -25,6 +25,8 @@ using namespace hw;
|
|||
|
||||
namespace {
|
||||
struct AddTapsPass : public arc::impl::AddTapsBase<AddTapsPass> {
|
||||
using AddTapsBase::AddTapsBase;
|
||||
|
||||
void runOnOperation() override {
|
||||
getOperation().walk([&](Operation *op) {
|
||||
TypeSwitch<Operation *>(op)
|
||||
|
@ -95,23 +97,9 @@ struct AddTapsPass : public arc::impl::AddTapsBase<AddTapsPass> {
|
|||
value = builder.createOrFold<seq::FromClockOp>(loc, value);
|
||||
builder.create<arc::TapOp>(loc, value, name);
|
||||
}
|
||||
|
||||
using AddTapsBase::tapNamedValues;
|
||||
using AddTapsBase::tapPorts;
|
||||
using AddTapsBase::tapWires;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
std::unique_ptr<Pass>
|
||||
arc::createAddTapsPass(std::optional<bool> tapPorts,
|
||||
std::optional<bool> tapWires,
|
||||
std::optional<bool> tapNamedValues) {
|
||||
auto pass = std::make_unique<AddTapsPass>();
|
||||
if (tapPorts)
|
||||
pass->tapPorts = *tapPorts;
|
||||
if (tapWires)
|
||||
pass->tapWires = *tapWires;
|
||||
if (tapNamedValues)
|
||||
pass->tapNamedValues = *tapNamedValues;
|
||||
return pass;
|
||||
std::unique_ptr<Pass> arc::createAddTapsPass(const AddTapsOptions &options) {
|
||||
return std::make_unique<AddTapsPass>(options);
|
||||
}
|
||||
|
|
|
@ -32,13 +32,13 @@ using namespace arc;
|
|||
namespace {
|
||||
struct InferMemoriesPass
|
||||
: public arc::impl::InferMemoriesBase<InferMemoriesPass> {
|
||||
using InferMemoriesBase::InferMemoriesBase;
|
||||
|
||||
void runOnOperation() override;
|
||||
|
||||
SmallVector<Operation *> opsToDelete;
|
||||
SmallPtrSet<StringAttr, 2> schemaNames;
|
||||
DenseMap<StringAttr, DictionaryAttr> memoryParams;
|
||||
|
||||
using InferMemoriesBase::tapPorts;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
|
@ -329,9 +329,6 @@ void InferMemoriesPass::runOnOperation() {
|
|||
}
|
||||
|
||||
std::unique_ptr<Pass>
|
||||
arc::createInferMemoriesPass(std::optional<bool> tapPorts) {
|
||||
auto pass = std::make_unique<InferMemoriesPass>();
|
||||
if (tapPorts)
|
||||
pass->tapPorts = *tapPorts;
|
||||
return pass;
|
||||
arc::createInferMemoriesPass(const InferMemoriesOptions &options) {
|
||||
return std::make_unique<InferMemoriesPass>(options);
|
||||
}
|
||||
|
|
|
@ -181,7 +181,7 @@ static void populatePipeline(PassManager &pm) {
|
|||
if (verbosePassExecutions)
|
||||
pm.addInstrumentation(
|
||||
std::make_unique<VerbosePassInstrumentation<mlir::ModuleOp>>(
|
||||
"fiarcilatorrtool"));
|
||||
"arcilator"));
|
||||
|
||||
// Pre-process the input such that it no longer contains any SV dialect ops
|
||||
// and external modules that are relevant to the arc transformation are
|
||||
|
@ -189,10 +189,19 @@ static void populatePipeline(PassManager &pm) {
|
|||
if (untilReached(UntilPreprocessing))
|
||||
return;
|
||||
pm.addPass(createLowerFirMemPass());
|
||||
pm.addPass(
|
||||
arc::createAddTapsPass(observePorts, observeWires, observeNamedValues));
|
||||
{
|
||||
arc::AddTapsOptions opts;
|
||||
opts.tapPorts = observePorts;
|
||||
opts.tapWires = observeWires;
|
||||
opts.tapNamedValues = observeNamedValues;
|
||||
pm.addPass(arc::createAddTapsPass(opts));
|
||||
}
|
||||
pm.addPass(arc::createStripSVPass());
|
||||
pm.addPass(arc::createInferMemoriesPass(observePorts));
|
||||
{
|
||||
arc::InferMemoriesOptions opts;
|
||||
opts.tapPorts = observePorts;
|
||||
pm.addPass(arc::createInferMemoriesPass(opts));
|
||||
}
|
||||
pm.addPass(createCSEPass());
|
||||
pm.addPass(arc::createArcCanonicalizerPass());
|
||||
|
||||
|
|
Loading…
Reference in New Issue