21 #define GEN_PASS_DEF_CANONICALIZER
22 #include "mlir/Transforms/Passes.h.inc"
29 struct Canonicalizer :
public impl::CanonicalizerBase<Canonicalizer> {
30 Canonicalizer() =
default;
35 this->topDownProcessingEnabled =
config.getUseTopDownTraversal();
36 this->regionSimplifyLevel =
config.getRegionSimplificationLevel();
37 this->maxIterations =
config.getMaxIterations();
38 this->maxNumRewrites =
config.getMaxNumRewrites();
39 this->disabledPatterns = disabledPatterns;
40 this->enabledPatterns = enabledPatterns;
45 LogicalResult initialize(
MLIRContext *context)
override {
47 config.setUseTopDownTraversal(topDownProcessingEnabled);
48 config.setRegionSimplificationLevel(regionSimplifyLevel);
49 config.setMaxIterations(maxIterations);
50 config.setMaxNumRewrites(maxNumRewrites);
54 dialect->getCanonicalizationPatterns(owningPatterns);
56 op.getCanonicalizationPatterns(owningPatterns, context);
58 patterns = std::make_shared<FrozenRewritePatternSet>(
59 std::move(owningPatterns), disabledPatterns, enabledPatterns);
62 void runOnOperation()
override {
63 LogicalResult converged =
66 if (testConvergence && failed(converged))
70 std::shared_ptr<const FrozenRewritePatternSet>
patterns;
76 return std::make_unique<Canonicalizer>();
84 return std::make_unique<Canonicalizer>(
config, disabledPatterns,
This class allows control over how the GreedyPatternRewriteDriver works.
MLIRContext is the top-level object for a collection of MLIR operations.
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.
This is a "type erased" representation of a registered operation.
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...
const FrozenRewritePatternSet & patterns
std::unique_ptr< Pass > createCanonicalizerPass()
Creates an instance of the Canonicalizer pass, configured with default settings (which can be overrid...