[Mlir-commits] [mlir] 8e0a63d - [mlir][docs] Add docs on canonicalizers being folders or patterns (#129517)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Thu Mar 6 00:41:51 PST 2025


Author: Kunwar Grover
Date: 2025-03-06T08:41:47Z
New Revision: 8e0a63ddad26c26501a7d9639b470665afadcf40

URL: https://github.com/llvm/llvm-project/commit/8e0a63ddad26c26501a7d9639b470665afadcf40
DIFF: https://github.com/llvm/llvm-project/commit/8e0a63ddad26c26501a7d9639b470665afadcf40.diff

LOG: [mlir][docs] Add docs on canonicalizers being folders or patterns (#129517)

If a transformation should be a canonicalization is an orthogonal
question to if a transformation should be implemented as a
`RewritePattern` or a `fold` method. The later is an implementation
detail.

This patch adds a suggestion to always implement a canonicalization as a
`fold` pattern if possible, as they are a restricted subset of a
`RewritePattern`.

This has been a common source of confusion, as to when to implement a
canonicalization as a fold method or a RewritePattern.

Added: 
    

Modified: 
    mlir/docs/Canonicalization.md

Removed: 
    


################################################################################
diff  --git a/mlir/docs/Canonicalization.md b/mlir/docs/Canonicalization.md
index 6e59a4128093a..686e50025e9f0 100644
--- a/mlir/docs/Canonicalization.md
+++ b/mlir/docs/Canonicalization.md
@@ -275,3 +275,8 @@ Operation *MyDialect::materializeConstant(OpBuilder &builder, Attribute value,
   ...
 }
 ```
+
+### When to use the `fold` method vs `RewriterPattern`s for canonicalizations
+
+A canonicalization should always be implemented as a `fold` method if it can
+be, otherwise it should be implemented as a `RewritePattern`.


        


More information about the Mlir-commits mailing list