20#define GEN_PASS_DEF_CANONICALIZER
21#include "mlir/Transforms/Passes.h.inc"
29 Canonicalizer() =
default;
30 Canonicalizer(
const GreedyRewriteConfig &config,
31 ArrayRef<std::string> disabledPatterns,
32 ArrayRef<std::string> enabledPatterns)
34 this->topDownProcessingEnabled = config.getUseTopDownTraversal();
35 this->regionSimplifyLevel = config.getRegionSimplificationLevel();
36 this->maxIterations = config.getMaxIterations();
37 this->maxNumRewrites = config.getMaxNumRewrites();
38 this->disabledPatterns = disabledPatterns;
39 this->enabledPatterns = enabledPatterns;
44 LogicalResult
initialize(MLIRContext *context)
override {
46 config.setUseTopDownTraversal(topDownProcessingEnabled);
47 config.setRegionSimplificationLevel(regionSimplifyLevel);
48 config.setMaxIterations(maxIterations);
49 config.setMaxNumRewrites(maxNumRewrites);
51 RewritePatternSet owningPatterns(context);
53 dialect->getCanonicalizationPatterns(owningPatterns);
55 op.getCanonicalizationPatterns(owningPatterns, context);
57 patterns = std::make_shared<FrozenRewritePatternSet>(
58 std::move(owningPatterns), disabledPatterns, enabledPatterns);
61 void runOnOperation()
override {
62 LogicalResult converged =
65 if (testConvergence &&
failed(converged))
68 GreedyRewriteConfig config;
69 std::shared_ptr<const FrozenRewritePatternSet> patterns;
75 return std::make_unique<Canonicalizer>();
83 return std::make_unique<Canonicalizer>(
config, disabledPatterns,
LogicalResult initialize(unsigned origNumLoops, ArrayRef< ReassociationIndices > foldedIterationDims)
This class allows control over how the GreedyPatternRewriteDriver works.
std::vector< Dialect * > getLoadedDialects()
Return information about all IR dialects loaded in the context.
ArrayRef< RegisteredOperationName > getRegisteredOperations()
Return a sorted array containing the information about all registered operations.
Include the generated interface declarations.
const FrozenRewritePatternSet GreedyRewriteConfig config
LogicalResult applyPatternsGreedily(Region ®ion, const FrozenRewritePatternSet &patterns, GreedyRewriteConfig config=GreedyRewriteConfig(), bool *changed=nullptr)
Rewrite ops in the given region, which must be isolated from above, by repeatedly applying the highes...
std::unique_ptr< Pass > createCanonicalizerPass()
Creates an instance of the Canonicalizer pass, configured with default settings (which can be overrid...