[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