[MLIR] convert ConvertToEmitCPatternInterface to ODS (#188621)
This PR converts `ConvertToEmitCPatternInterface` dialect interface to ODS. Also makes changes to derived classes.
This commit is contained in:
@@ -8,3 +8,4 @@ add_mlir_generic_tablegen_target(MLIRConversionPassIncGen)
|
||||
add_mlir_doc(Passes ConversionPasses ./ -gen-pass-doc)
|
||||
|
||||
add_subdirectory(ConvertToLLVM)
|
||||
add_subdirectory(ConvertToEmitC)
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -6,6 +6,7 @@ add_mlir_conversion_library(MLIRConvertToEmitC
|
||||
|
||||
DEPENDS
|
||||
MLIRConversionPassIncGen
|
||||
MLIRConvertToEmitCPatternInterfaceIncGen
|
||||
|
||||
LINK_LIBS PUBLIC
|
||||
MLIRArithToEmitC
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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",
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user