13#include "mlir/Transforms/GreedyPatternRewriteDriver.h"
14#include "mlir/Transforms/Passes.h"
18using namespace kanagawa;
22 mlir::GreedyRewriteConfig config;
23 config.setUseTopDownTraversal(
true);
24 config.setRegionSimplificationLevel(
25 mlir::GreedySimplifyRegionLevel::Disabled);
26 return mlir::createCanonicalizerPass(config);
33 pm.addPass(hw::createVerifyInnerRefNamespacePass());
35 pm.addPass(hw::createVerifyInnerRefNamespacePass());
39 pm.nest<DesignOp>().nest<ContainerOp>().addPass(
42 pm.nest<DesignOp>().addPass(
44 pm.addPass(hw::createVerifyInnerRefNamespacePass());
48 pm.nest<DesignOp>().nest<ContainerOp>().addPass(
52 pm.addPass(hw::createVerifyInnerRefNamespacePass());
56 pm.nest<kanagawa::DesignOp>()
57 .nest<kanagawa::ClassOp>()
58 .nest<kanagawa::MethodOp>()
60 pm.addPass(mlir::createMem2Reg());
71 pm.nest<kanagawa::DesignOp>()
72 .nest<kanagawa::ClassOp>()
73 .nest<kanagawa::MethodOp>()
std::unique_ptr< mlir::Pass > createContainersToHWPass()
void loadKanagawaLowLevelPassPipeline(mlir::PassManager &pm)
std::unique_ptr< mlir::Pass > createReblockPass()
std::unique_ptr< mlir::Pass > createInlineSBlocksPass()
std::unique_ptr< mlir::Pass > createEliminateRedundantOpsPass()
std::unique_ptr< mlir::Pass > createArgifyBlocksPass()
std::unique_ptr< mlir::Pass > createContainerizePass()
std::unique_ptr< mlir::Pass > createTunnelingPass(const KanagawaTunnelingOptions &={})
std::unique_ptr< mlir::Pass > createPortrefLoweringPass()
void loadKanagawaHighLevelPassPipeline(mlir::PassManager &pm)
std::unique_ptr< mlir::Pass > createCleanSelfdriversPass()
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
std::unique_ptr< mlir::Pass > createMaximizeSSAPass()
std::unique_ptr< Pass > createSimpleCanonicalizerPass()
Create a simple canonicalizer pass.