[Mlir-commits] [llvm] [mlir] [MLIR] convert ConvertToEmitCPatternInterface to ODS (PR #188621)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Wed Mar 25 14:53:47 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir-emitc

Author: AidinT (aidint)

<details>
<summary>Changes</summary>

This PR converts `ConvertToEmitCPatternInterface` dialect interface to tablegen generated format using ODS.
Also makes changes to derived classes. 

---
Full diff: https://github.com/llvm/llvm-project/pull/188621.diff


10 Files Affected:

- (modified) mlir/include/mlir/Conversion/CMakeLists.txt (+1) 
- (added) mlir/include/mlir/Conversion/ConvertToEmitC/CMakeLists.txt (+3) 
- (added) mlir/include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td (+22) 
- (modified) mlir/include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h (+2-13) 
- (modified) mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp (+2-1) 
- (modified) mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt (+1) 
- (modified) mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp (+2-1) 
- (modified) mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp (+2-1) 
- (modified) mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp (+2-1) 
- (modified) utils/bazel/llvm-project-overlay/mlir/BUILD.bazel (+11) 


``````````diff
diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt
index 602c8ff72fbae..209f35d3774ec 100644
--- a/mlir/include/mlir/Conversion/CMakeLists.txt
+++ b/mlir/include/mlir/Conversion/CMakeLists.txt
@@ -8,3 +8,4 @@ add_mlir_generic_tablegen_target(MLIRConversionPassIncGen)
 add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
 
 add_subdirectory(ConvertToLLVM)
+add_subdirectory(ConvertToEmitC)
diff --git a/mlir/include/mlir/Conversion/ConvertToEmitC/CMakeLists.txt b/mlir/include/mlir/Conversion/ConvertToEmitC/CMakeLists.txt
new file mode 100644
index 0000000000000..d748d3bde2b76
--- /dev/null
+++ b/mlir/include/mlir/Conversion/ConvertToEmitC/CMakeLists.txt
@@ -0,0 +1,3 @@
+set(LLVM_TARGET_DEFINITIONS ConvertToEmitCPatternInterface.td)
+mlir_tablegen(ConvertToEmitCPatternInterface.h.inc -gen-dialect-interface-decls)
+add_mlir_generic_tablegen_target(MLIRConvertToEmitCPatternInterfaceIncGen)
diff --git a/mlir/include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td b/mlir/include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td
new file mode 100644
index 0000000000000..e300826cdc281
--- /dev/null
+++ b/mlir/include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td
@@ -0,0 +1,22 @@
+#ifndef MLIR_INTERFACES_CONVERTTOEMITCPATTERNINTERFACE
+#define MLIR_INTERFACES_CONVERTTOEMITCPATTERNINTERFACE
+
+include "mlir/IR/Interfaces.td"
+
+def ConvertToEmitCPatternInterface : DialectInterface<"ConvertToEmitCPatternInterface"> {
+  let description = [{}];
+  let cppNamespace = "::mlir";
+
+  let methods = [
+    PureVirtualInterfaceMethod<[{
+        Hook for derived dialect interface to provide conversion patterns
+        and mark dialect legal for the conversion target.
+      }],
+      "void", "populateConvertToEmitCConversionPatterns",
+      (ins "::mlir::ConversionTarget &":$target, "::mlir::TypeConverter &":$typeConverter,
+           "::mlir::RewritePatternSet &":$patterns)
+    >
+  ];
+}
+
+#endif
diff --git a/mlir/include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h b/mlir/include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h
index d438f27006232..f6546fc27e0b3 100644
--- a/mlir/include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h
+++ b/mlir/include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h
@@ -20,19 +20,6 @@ class MLIRContext;
 class Operation;
 class RewritePatternSet;
 class AnalysisManager;
-
-class ConvertToEmitCPatternInterface
-    : public DialectInterface::Base<ConvertToEmitCPatternInterface> {
-public:
-  ConvertToEmitCPatternInterface(Dialect *dialect) : Base(dialect) {}
-
-  /// Hook for derived dialect interface to provide conversion patterns
-  /// and mark dialect legal for the conversion target.
-  virtual void populateConvertToEmitCConversionPatterns(
-      ConversionTarget &target, TypeConverter &typeConverter,
-      RewritePatternSet &patterns) const = 0;
-};
-
 /// Recursively walk the IR and collect all dialects implementing the interface,
 /// and populate the conversion patterns.
 void populateConversionTargetFromOperation(Operation *op,
@@ -42,4 +29,6 @@ void populateConversionTargetFromOperation(Operation *op,
 
 } // namespace mlir
 
+#include "mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.h.inc"
+
 #endif // MLIR_CONVERSION_CONVERTTOEMITC_TOEMITCINTERFACE_H
diff --git a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
index 02091a407ac11..d003dc7a6dff3 100644
--- a/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
+++ b/mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
@@ -26,7 +26,8 @@ using namespace mlir;
 namespace {
 /// Implement the interface to convert Arith to EmitC.
 struct ArithToEmitCDialectInterface : public ConvertToEmitCPatternInterface {
-  using ConvertToEmitCPatternInterface::ConvertToEmitCPatternInterface;
+  ArithToEmitCDialectInterface(Dialect *dialect)
+      : ConvertToEmitCPatternInterface(dialect) {}
 
   /// Hook for derived dialect interface to provide conversion patterns
   /// and mark dialect legal for the conversion target.
diff --git a/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt b/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
index e0d766570d5eb..014ab26345033 100644
--- a/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
+++ b/mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
@@ -6,6 +6,7 @@ add_mlir_conversion_library(MLIRConvertToEmitC
 
   DEPENDS
   MLIRConversionPassIncGen
+  MLIRConvertToEmitCPatternInterfaceIncGen
 
   LINK_LIBS PUBLIC
   MLIRArithToEmitC
diff --git a/mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp b/mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp
index 197caeb4ffbfa..d2fb359c9aabe 100644
--- a/mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp
+++ b/mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp
@@ -24,7 +24,8 @@ namespace {
 
 /// Implement the interface to convert Func to EmitC.
 struct FuncToEmitCDialectInterface : public ConvertToEmitCPatternInterface {
-  using ConvertToEmitCPatternInterface::ConvertToEmitCPatternInterface;
+  FuncToEmitCDialectInterface(Dialect *dialect)
+      : ConvertToEmitCPatternInterface(dialect) {}
 
   /// Hook for derived dialect interface to provide conversion patterns
   /// and mark dialect legal for the conversion target.
diff --git a/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp b/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp
index 87125b39e4666..b8924c63adf09 100644
--- a/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp
+++ b/mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp
@@ -37,7 +37,8 @@ static bool isMemRefTypeLegalForEmitC(MemRefType memRefType) {
 namespace {
 /// Implement the interface to convert MemRef to EmitC.
 struct MemRefToEmitCDialectInterface : public ConvertToEmitCPatternInterface {
-  using ConvertToEmitCPatternInterface::ConvertToEmitCPatternInterface;
+  MemRefToEmitCDialectInterface(Dialect *dialect)
+      : ConvertToEmitCPatternInterface(dialect) {}
 
   /// Hook for derived dialect interface to provide conversion patterns
   /// and mark dialect legal for the conversion target.
diff --git a/mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp b/mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp
index 07feba7e565d9..d7c943ef7c4f1 100644
--- a/mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp
+++ b/mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp
@@ -35,7 +35,8 @@ namespace {
 
 /// Implement the interface to convert SCF to EmitC.
 struct SCFToEmitCDialectInterface : public ConvertToEmitCPatternInterface {
-  using ConvertToEmitCPatternInterface::ConvertToEmitCPatternInterface;
+  SCFToEmitCDialectInterface(Dialect *dialect)
+      : ConvertToEmitCPatternInterface(dialect) {}
 
   /// Hook for derived dialect interface to provide conversion patterns
   /// and mark dialect legal for the conversion target.
diff --git a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
index 40fdc056857d1..b484cdad87e45 100644
--- a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
@@ -8211,12 +8211,23 @@ cc_library(
     ],
 )
 
+gentbl_cc_library(
+    name = "ConvertToEmitCPatternInterfaceIncGen",
+    tbl_outs = {
+        "include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.h.inc": ["-gen-dialect-interface-decls"],
+    },
+    tblgen = ":mlir-tblgen",
+    td_file = "include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td",
+    deps = [":OpBaseTdFiles"],
+)
+
 cc_library(
     name = "ConvertToEmitCInterface",
     hdrs = ["include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h"],
     includes = ["include"],
     deps = [
         ":ConversionPassIncGen",
+        ":ConvertToEmitCPatternInterfaceIncGen",
         ":IR",
         "//llvm:Support",
     ],

``````````

</details>


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


More information about the Mlir-commits mailing list