[Mlir-commits] [llvm] [mlir] [MLIR] convert ConvertToEmitCPatternInterface to ODS (PR #188621)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Mar 25 14:53:16 PDT 2026
https://github.com/aidint created https://github.com/llvm/llvm-project/pull/188621
This PR converts `ConvertToEmitCPatternInterface` dialect interface to tablegen generated format using ODS.
Also makes changes to derived classes.
>From 2f707d902fb30270932178c4806e57e135849cca Mon Sep 17 00:00:00 2001
From: aidint <at.aidin at gmail.com>
Date: Wed, 25 Mar 2026 22:08:53 +0100
Subject: [PATCH 1/2] convert ConvertToEmitCPatternInterface to ODS
---
mlir/include/mlir/Conversion/CMakeLists.txt | 1 +
.../Conversion/ConvertToEmitC/CMakeLists.txt | 3 +++
.../ConvertToEmitCPatternInterface.td | 22 +++++++++++++++++++
.../ConvertToEmitC/ToEmitCInterface.h | 15 ++-----------
.../Conversion/ArithToEmitC/ArithToEmitC.cpp | 3 ++-
.../Conversion/ConvertToEmitC/CMakeLists.txt | 1 +
.../Conversion/FuncToEmitC/FuncToEmitC.cpp | 3 ++-
.../MemRefToEmitC/MemRefToEmitC.cpp | 3 ++-
mlir/lib/Conversion/SCFToEmitC/SCFToEmitC.cpp | 3 ++-
9 files changed, 37 insertions(+), 17 deletions(-)
create mode 100644 mlir/include/mlir/Conversion/ConvertToEmitC/CMakeLists.txt
create mode 100644 mlir/include/mlir/Conversion/ConvertToEmitC/ConvertToEmitCPatternInterface.td
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.
>From e95d7370f514580d22f4b6f01acf3bda9708a5aa Mon Sep 17 00:00:00 2001
From: aidint <at.aidin at gmail.com>
Date: Wed, 25 Mar 2026 22:49:06 +0100
Subject: [PATCH 2/2] add corresponding bazel changes
---
utils/bazel/llvm-project-overlay/mlir/BUILD.bazel | 11 +++++++++++
1 file changed, 11 insertions(+)
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",
],
More information about the Mlir-commits
mailing list