[llvm] [mlir] [mlir][core] Add an MLIR "pattern catalog" generator (PR #146228)

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 30 12:37:24 PDT 2025


================
@@ -0,0 +1,55 @@
+#include "mlir/IR/PatternMatch.h"
+#include "llvm/Support/Debug.h"
+
+#define DEBUG_TYPE "generate-pattern-catalog"
+
+using namespace mlir;
+
+static constexpr StringLiteral catalogPrefix = "CatalogingListener: ";
+
+void RewriterBase::CatalogingListener::notifyOperationInserted(
+    Operation *op, InsertPoint previous) {
+  LLVM_DEBUG(llvm::dbgs() << catalogPrefix << patternName
+                          << " | notifyOperationInserted"
+                          << " | " << op->getName() << "\n");
+  ForwardingListener::notifyOperationInserted(op, previous);
+}
+
+void RewriterBase::CatalogingListener::notifyOperationModified(Operation *op) {
+  LLVM_DEBUG(llvm::dbgs() << catalogPrefix << patternName
+                          << " | notifyOperationModified"
+                          << " | " << op->getName() << "\n");
+  ForwardingListener::notifyOperationModified(op);
+}
+
+void RewriterBase::CatalogingListener::notifyOperationReplaced(
+    Operation *op, Operation *newOp) {
+  LLVM_DEBUG(llvm::dbgs() << catalogPrefix << patternName
+                          << " | notifyOperationReplaced (with op)"
+                          << " | " << op->getName() << " | " << newOp->getName()
+                          << "\n");
+  ForwardingListener::notifyOperationReplaced(op, newOp);
+}
+
+void RewriterBase::CatalogingListener::notifyOperationReplaced(
+    Operation *op, ValueRange replacement) {
+  LLVM_DEBUG(llvm::dbgs() << catalogPrefix << patternName
+                          << " | notifyOperationReplaced (with values)"
+                          << " | " << op->getName() << "\n");
+  ForwardingListener::notifyOperationReplaced(op, replacement);
+}
+
+void RewriterBase::CatalogingListener::notifyOperationErased(Operation *op) {
+  LLVM_DEBUG(llvm::dbgs() << catalogPrefix << patternName
+                          << " | notifyOperationErased"
+                          << " | " << op->getName() << "\n");
+  ForwardingListener::notifyOperationErased(op);
+}
+
+void RewriterBase::CatalogingListener::notifyPatternBegin(
+    const Pattern &pattern, Operation *op) {
+  LLVM_DEBUG(llvm::dbgs() << catalogPrefix << patternName
+                          << " | notifyPatternBegin"
+                          << " | " << op->getName() << "\n");
+  ForwardingListener::notifyPatternBegin(pattern, op);
+}
----------------
joker-eph wrote:

I meant that the DEBUG_TYPE here could be just "rewriter" or something like that. I'm fine having a dedicated DEBUG_TYPE  (or reusing pattern-applicator if you prefer). 

https://github.com/llvm/llvm-project/pull/146228


More information about the llvm-commits mailing list