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

llvmlistbot at llvm.org llvmlistbot at llvm.org
Tue Mar 31 20:30:16 PDT 2026


Author: AidinT
Date: 2026-04-01T05:30:12+02:00
New Revision: d52a5e8a5ac47fea1b1d82669eb7d1bf5283d147

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

LOG: [MLIR] convert ConvertToEmitCPatternInterface to ODS (#188621)

This PR converts `ConvertToEmitCPatternInterface` dialect interface to ODS. Also makes changes to derived classes.

Added: 
    mlir/include/mlir/Conversion/ConvertToEmitC/CMakeLists.txt
    mlir/include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td

Modified: 
    mlir/include/mlir/Conversion/CMakeLists.txt
    mlir/include/mlir/Conversion/ConvertToEmitC/ToEmitCInterface.h
    mlir/lib/Conversion/ArithToEmitC/ArithToEmitC.cpp
    mlir/lib/Conversion/ConvertToEmitC/CMakeLists.txt
    mlir/lib/Conversion/FuncToEmitC/FuncToEmitC.cpp
    mlir/lib/Conversion/MemRefToEmitC/MemRefToEmitC.cpp
    mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp
    utils/bazel/llvm-project-overlay/mlir/BUILD.bazel

Removed: 
    


################################################################################
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 76657b8d6ce5c..b3c602b4f824f 100644
--- a/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/mlir/BUILD.bazel
@@ -8225,12 +8225,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",
     ],


        


More information about the Mlir-commits mailing list