[Mlir-commits] [mlir] 42ac4f3 - [mlir] Canonicalizer constructor should accept disabled/enabled patterns

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Dec 22 11:08:36 PST 2021


Author: Mogball
Date: 2021-12-22T19:08:31Z
New Revision: 42ac4f3dc6e673e44fa9fcbb40d4200be2d1e2c1

URL: https://github.com/llvm/llvm-project/commit/42ac4f3dc6e673e44fa9fcbb40d4200be2d1e2c1
DIFF: https://github.com/llvm/llvm-project/commit/42ac4f3dc6e673e44fa9fcbb40d4200be2d1e2c1.diff

LOG: [mlir] Canonicalizer constructor should accept disabled/enabled patterns

There is no way to programmatically configure the list of disabled and enabled patterns in the canonicalizer pass, other than the duplicate the whole pass. This patch exposes the `disabledPatterns` and `enabledPatterns` options.

Reviewed By: mehdi_amini

Differential Revision: https://reviews.llvm.org/D116055

Added: 
    

Modified: 
    mlir/include/mlir/Rewrite/FrozenRewritePatternSet.h
    mlir/include/mlir/Transforms/Passes.h
    mlir/lib/Transforms/Canonicalizer.cpp

Removed: 
    


################################################################################
diff  --git a/mlir/include/mlir/Rewrite/FrozenRewritePatternSet.h b/mlir/include/mlir/Rewrite/FrozenRewritePatternSet.h
index 74ddba34ada94..7627fd0145ebd 100644
--- a/mlir/include/mlir/Rewrite/FrozenRewritePatternSet.h
+++ b/mlir/include/mlir/Rewrite/FrozenRewritePatternSet.h
@@ -40,9 +40,13 @@ class FrozenRewritePatternSet {
 
   /// Freeze the patterns held in `patterns`, and take ownership.
   /// `disabledPatternLabels` is a set of labels used to filter out input
-  /// patterns with a label in this set. `enabledPatternLabels` is a set of
-  /// labels used to filter out input patterns that do not have one of the
-  /// labels in this set.
+  /// patterns with a debug label or debug name in this set.
+  /// `enabledPatternLabels` is a set of labels used to filter out input
+  /// patterns that do not have one of the labels in this set. Debug labels must
+  /// be set explicitly on patterns or when adding them with
+  /// `RewritePatternSet::addWithLabel`. Debug names may be empty, but patterns
+  /// created with `RewritePattern::create` have their default debug name set to
+  /// their type name.
   FrozenRewritePatternSet(
       RewritePatternSet &&patterns,
       ArrayRef<std::string> disabledPatternLabels = llvm::None,

diff  --git a/mlir/include/mlir/Transforms/Passes.h b/mlir/include/mlir/Transforms/Passes.h
index e6cfda8863632..6aab120fb469f 100644
--- a/mlir/include/mlir/Transforms/Passes.h
+++ b/mlir/include/mlir/Transforms/Passes.h
@@ -62,8 +62,17 @@ std::unique_ptr<Pass> createBufferResultsToOutParamsPass();
 std::unique_ptr<Pass> createCanonicalizerPass();
 
 /// Creates an instance of the Canonicalizer pass with the specified config.
+/// `disabledPatterns` is a set of labels used to filter out input patterns with
+/// a debug label or debug name in this set. `enabledPatterns` is a set of
+/// labels used to filter out input patterns that do not have one of the labels
+/// in this set. Debug labels must be set explicitly on patterns or when adding
+/// them with `RewritePatternSet::addWithLabel`. Debug names may be empty, but
+/// patterns created with `RewritePattern::create` have their default debug name
+/// set to their type name.
 std::unique_ptr<Pass>
-createCanonicalizerPass(const GreedyRewriteConfig &config);
+createCanonicalizerPass(const GreedyRewriteConfig &config,
+                        ArrayRef<std::string> disabledPatterns = llvm::None,
+                        ArrayRef<std::string> enabledPatterns = llvm::None);
 
 /// Creates a pass to perform common sub expression elimination.
 std::unique_ptr<Pass> createCSEPass();

diff  --git a/mlir/lib/Transforms/Canonicalizer.cpp b/mlir/lib/Transforms/Canonicalizer.cpp
index 745477d396fbb..92f21f6c226b9 100644
--- a/mlir/lib/Transforms/Canonicalizer.cpp
+++ b/mlir/lib/Transforms/Canonicalizer.cpp
@@ -21,7 +21,13 @@ using namespace mlir;
 namespace {
 /// Canonicalize operations in nested regions.
 struct Canonicalizer : public CanonicalizerBase<Canonicalizer> {
-  Canonicalizer(const GreedyRewriteConfig &config) : config(config) {}
+  Canonicalizer(const GreedyRewriteConfig &config,
+                ArrayRef<std::string> disabledPatterns,
+                ArrayRef<std::string> enabledPatterns)
+      : config(config) {
+    this->disabledPatterns = disabledPatterns;
+    this->enabledPatterns = enabledPatterns;
+  }
 
   Canonicalizer() {
     // Default constructed Canonicalizer takes its settings from command line
@@ -61,6 +67,9 @@ std::unique_ptr<Pass> mlir::createCanonicalizerPass() {
 
 /// Creates an instance of the Canonicalizer pass with the specified config.
 std::unique_ptr<Pass>
-mlir::createCanonicalizerPass(const GreedyRewriteConfig &config) {
-  return std::make_unique<Canonicalizer>(config);
+createCanonicalizerPass(const GreedyRewriteConfig &config,
+                        ArrayRef<std::string> disabledPatterns = llvm::None,
+                        ArrayRef<std::string> enabledPatterns = llvm::None) {
+  return std::make_unique<Canonicalizer>(config, disabledPatterns,
+                                         enabledPatterns);
 }


        


More information about the Mlir-commits mailing list