* Previously, we were only generating .h.inc files. We foresee the need to also generate implementations and this is a step towards that.
* Discussed in https://llvm.discourse.group/t/generating-cpp-inc-files-for-dialects/3732/2
* Deviates from the discussion above by generating a default constructor in the .cpp.inc file (and adding a tablegen bit that disables this in case if this is user provided).
* Generating the destructor started as a way to flush out the missing includes (produces a link error), but it is a strict improvement on its own that is worth doing (i.e. by emitting key methods in the .cpp file, we root vtables in one translation unit, which is a non-controversial improvement).
Differential Revision: https://reviews.llvm.org/D105070
mlir_tablegen(${dialect}Types.h.inc -gen-typedef-decls)
mlir_tablegen(${dialect}Types.cpp.inc -gen-typedef-defs)
mlir_tablegen(${dialect}Dialect.h.inc -gen-dialect-decls -dialect=${dialect_namespace})
+ mlir_tablegen(${dialect}Dialect.cpp.inc -gen-dialect-defs -dialect=${dialect_namespace})
add_public_tablegen_target(MLIR${dialect}IncGen)
add_dependencies(mlir-headers MLIR${dialect}IncGen)
endfunction()
using namespace mlir;
using namespace mlir::standalone;
+#include "Standalone/StandaloneOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// Standalone dialect.
//===----------------------------------------------------------------------===//
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
+mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(ToyCh2OpsIncGen)
using namespace mlir;
using namespace mlir::toy;
+#include "toy/Dialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ToyDialect
//===----------------------------------------------------------------------===//
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
+mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(ToyCh3OpsIncGen)
using namespace mlir;
using namespace mlir::toy;
+#include "toy/Dialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ToyDialect
//===----------------------------------------------------------------------===//
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
+mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(ToyCh4OpsIncGen)
# Most dialects should use add_mlir_interfaces().
using namespace mlir;
using namespace mlir::toy;
+#include "toy/Dialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ToyInlinerInterface
//===----------------------------------------------------------------------===//
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
+mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(ToyCh5OpsIncGen)
# Most dialects should use add_mlir_interfaces().
using namespace mlir;
using namespace mlir::toy;
+#include "toy/Dialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ToyInlinerInterface
//===----------------------------------------------------------------------===//
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
+mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(ToyCh6OpsIncGen)
# Most dialects should use add_mlir_interfaces().
using namespace mlir;
using namespace mlir::toy;
+#include "toy/Dialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ToyInlinerInterface
//===----------------------------------------------------------------------===//
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(Dialect.h.inc -gen-dialect-decls)
+mlir_tablegen(Dialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(ToyCh7OpsIncGen)
# Most dialects should use add_mlir_interfaces().
using namespace mlir;
using namespace mlir::toy;
+#include "toy/Dialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ToyInlinerInterface
//===----------------------------------------------------------------------===//
mlir_tablegen(LLVMOps.h.inc -gen-op-decls)
mlir_tablegen(LLVMOps.cpp.inc -gen-op-defs)
mlir_tablegen(LLVMOpsDialect.h.inc -gen-dialect-decls)
+mlir_tablegen(LLVMOpsDialect.cpp.inc -gen-dialect-defs)
mlir_tablegen(LLVMOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(LLVMOpsEnums.cpp.inc -gen-enum-defs)
add_public_tablegen_target(MLIRLLVMOpsIncGen)
set(LLVM_TARGET_DEFINITIONS OpenACCOps.td)
mlir_tablegen(OpenACCOpsDialect.h.inc -gen-dialect-decls -dialect=acc)
+mlir_tablegen(OpenACCOpsDialect.cpp.inc -gen-dialect-defs -dialect=acc)
mlir_tablegen(OpenACCOps.h.inc -gen-op-decls)
mlir_tablegen(OpenACCOps.cpp.inc -gen-op-defs)
mlir_tablegen(OpenACCOpsEnums.h.inc -gen-enum-decls)
set(LLVM_TARGET_DEFINITIONS OpenMPOps.td)
mlir_tablegen(OpenMPOpsDialect.h.inc -gen-dialect-decls -dialect=omp)
+mlir_tablegen(OpenMPOpsDialect.cpp.inc -gen-dialect-defs -dialect=omp)
mlir_tablegen(OpenMPOps.h.inc -gen-op-decls)
mlir_tablegen(OpenMPOps.cpp.inc -gen-op-defs)
mlir_tablegen(OpenMPOpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(Ops.h.inc -gen-op-decls)
mlir_tablegen(Ops.cpp.inc -gen-op-defs)
mlir_tablegen(OpsDialect.h.inc -gen-dialect-decls)
+mlir_tablegen(OpsDialect.cpp.inc -gen-dialect-defs)
mlir_tablegen(OpsEnums.h.inc -gen-enum-decls)
mlir_tablegen(OpsEnums.cpp.inc -gen-enum-defs)
add_public_tablegen_target(MLIRStandardOpsIncGen)
set(LLVM_TARGET_DEFINITIONS BuiltinDialect.td)
mlir_tablegen(BuiltinDialect.h.inc -gen-dialect-decls)
+mlir_tablegen(BuiltinDialect.cpp.inc -gen-dialect-defs)
add_public_tablegen_target(MLIRBuiltinDialectIncGen)
set(LLVM_TARGET_DEFINITIONS BuiltinLocationAttributes.td)
// If this dialect overrides the hook for materializing constants.
bit hasConstantMaterializer = 0;
+ /// If the dialect definition provides a non-default destructor.
+ /// If false, a default destructor implementation will be generated.
+ bit hasNonDefaultDestructor = 0;
+
// If this dialect overrides the hook for verifying operation attributes.
bit hasOperationAttrVerify = 0;
/// Returns true if this dialect has a canonicalizer.
bool hasCanonicalizer() const;
- // Returns true if this dialect has a constant materializer.
+ /// Returns true if this dialect has a constant materializer.
bool hasConstantMaterializer() const;
+ /// Returns true if the destructor definition is provided explicitly or
+ /// false if a default should be generated.
+ bool hasNonDefaultDestructor() const;
+
/// Returns true if this dialect has an operation attribute verifier.
bool hasOperationAttrVerify() const;
using namespace mlir;
+#include "mlir/Dialect/AMX/AMXDialect.cpp.inc"
+
void amx::AMXDialect::initialize() {
addOperations<
#define GET_OP_LIST
#define DEBUG_TYPE "affine-analysis"
+#include "mlir/Dialect/Affine/IR/AffineOpsDialect.cpp.inc"
+
/// A utility function to check if a value is defined at the top level of
/// `region` or is an argument of `region`. A value of index type defined at the
/// top level of a `AffineScope` region is always a valid symbol for all
using namespace mlir;
+#include "mlir/Dialect/ArmNeon/ArmNeonDialect.cpp.inc"
+
void arm_neon::ArmNeonDialect::initialize() {
addOperations<
#define GET_OP_LIST
using namespace mlir;
using namespace arm_sve;
+#include "mlir/Dialect/ArmSVE/ArmSVEDialect.cpp.inc"
+
static Type getI1SameShape(Type type);
static void buildScalableCmpIOp(OpBuilder &build, OperationState &result,
CmpIPredicate predicate, Value lhs, Value rhs);
using namespace mlir;
using namespace mlir::async;
+#include "mlir/Dialect/Async/IR/AsyncOpsDialect.cpp.inc"
+
void AsyncDialect::initialize() {
addOperations<
#define GET_OP_LIST
#include "mlir/Dialect/Complex/IR/Complex.h"
+#include "mlir/Dialect/Complex/IR/ComplexOpsDialect.cpp.inc"
+
void mlir::complex::ComplexDialect::initialize() {
addOperations<
#define GET_OP_LIST
using namespace mlir;
+#include "mlir/Dialect/DLTI/DLTIDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// DataLayoutEntryAttr
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::emitc;
+#include "mlir/Dialect/EmitC/IR/EmitCDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// EmitCDialect
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::gpu;
+#include "mlir/Dialect/GPU/GPUOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// MMAMatrixType
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::LLVM;
+#include "mlir/Dialect/LLVMIR/LLVMOpsDialect.cpp.inc"
+
static constexpr const char kVolatileAttrName[] = "volatile_";
static constexpr const char kNonTemporalAttrName[] = "nontemporal";
using namespace mlir;
using namespace NVVM;
+#include "mlir/Dialect/LLVMIR/NVVMOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// Printing/parsing for NVVM ops
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace ROCDL;
+#include "mlir/Dialect/LLVMIR/ROCDLOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// Parsing for ROCDL ops
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::linalg;
+#include "mlir/Dialect/Linalg/IR/LinalgOpsDialect.cpp.inc"
+
/// Forward declarations.
/// Generic entry point to create the block for the region of a LinalgOp.
using namespace mlir;
using namespace mlir::math;
+#include "mlir/Dialect/Math/IR/MathOpsDialect.cpp.inc"
+
namespace {
/// This class defines the interface for handling inlining with math
/// operations.
using namespace mlir;
using namespace mlir::memref;
+#include "mlir/Dialect/MemRef/IR/MemRefOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// MemRefDialect Dialect Interfaces
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace acc;
+#include "mlir/Dialect/OpenACC/OpenACCOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// OpenACC operations
//===----------------------------------------------------------------------===//
#include "llvm/ADT/StringSwitch.h"
#include <cstddef>
+#include "mlir/Dialect/OpenMP/OpenMPOpsDialect.cpp.inc"
#include "mlir/Dialect/OpenMP/OpenMPOpsEnums.cpp.inc"
using namespace mlir;
using namespace mlir;
using namespace mlir::pdl;
+#include "mlir/Dialect/PDL/IR/PDLOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// PDLDialect
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::pdl_interp;
+#include "mlir/Dialect/PDLInterp/IR/PDLInterpOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// PDLInterp Dialect
//===----------------------------------------------------------------------===//
using namespace mlir::quant;
using namespace mlir::quant::detail;
+#include "mlir/Dialect/Quant/QuantOpsDialect.cpp.inc"
+
void QuantizationDialect::initialize() {
addTypes<AnyQuantizedType, CalibratedQuantizedType, UniformQuantizedType,
UniformQuantizedPerAxisType>();
using namespace mlir;
using namespace mlir::scf;
+#include "mlir/Dialect/SCF/SCFOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// SCFDialect Dialect Interfaces
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::spirv;
+#include "mlir/Dialect/SPIRV/IR/SPIRVOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// InlinerInterface
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::shape;
+#include "mlir/Dialect/Shape/IR/ShapeOpsDialect.cpp.inc"
+
namespace {
#include "ShapeCanonicalization.inc"
}
using namespace mlir;
using namespace mlir::sparse_tensor;
+#include "mlir/Dialect/SparseTensor/IR/SparseTensorOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// TensorDialect Attribute Methods.
//===----------------------------------------------------------------------===//
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/raw_ostream.h"
+#include "mlir/Dialect/StandardOps/IR/OpsDialect.cpp.inc"
+
// Pull in all enum type definitions and utility function declarations.
#include "mlir/Dialect/StandardOps/IR/OpsEnums.cpp.inc"
using namespace mlir;
using namespace mlir::tensor;
+#include "mlir/Dialect/Tensor/IR/TensorOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// TensorDialect Dialect Interfaces
//===----------------------------------------------------------------------===//
using namespace mlir;
using namespace mlir::tosa;
+#include "mlir/Dialect/Tosa/IR/TosaOpsDialect.cpp.inc"
+
//===----------------------------------------------------------------------===//
// Tosa dialect structs and interface includes.
//===----------------------------------------------------------------------===//
#include "llvm/ADT/bit.h"
#include <numeric>
+#include "mlir/Dialect/Vector/VectorOpsDialect.cpp.inc"
// Pull in all enum type and utility function definitions.
#include "mlir/Dialect/Vector/VectorOpsEnums.cpp.inc"
using namespace mlir;
+#include "mlir/Dialect/X86Vector/X86VectorDialect.cpp.inc"
+
void x86vector::X86VectorDialect::initialize() {
addOperations<
#define GET_OP_LIST
// Builtin Dialect
//===----------------------------------------------------------------------===//
+#include "mlir/IR/BuiltinDialect.cpp.inc"
+
namespace {
struct BuiltinOpAsmDialectInterface : public OpAsmDialectInterface {
using OpAsmDialectInterface::OpAsmDialectInterface;
return def->getValueAsBit("hasConstantMaterializer");
}
+bool Dialect::hasNonDefaultDestructor() const {
+ return def->getValueAsBit("hasNonDefaultDestructor");
+}
+
bool Dialect::hasOperationAttrVerify() const {
return def->getValueAsBit("hasOperationAttrVerify");
}
mlir_tablegen(TestOps.h.inc -gen-op-decls)
mlir_tablegen(TestOps.cpp.inc -gen-op-defs)
mlir_tablegen(TestOpsDialect.h.inc -gen-dialect-decls -dialect=test)
+mlir_tablegen(TestOpsDialect.cpp.inc -gen-dialect-defs -dialect=test)
mlir_tablegen(TestOpEnums.h.inc -gen-enum-decls)
mlir_tablegen(TestOpEnums.cpp.inc -gen-enum-defs)
mlir_tablegen(TestOpStructs.h.inc -gen-struct-attr-decls)
using namespace mlir;
using namespace mlir::test;
+#include "TestOpsDialect.cpp.inc"
+
void mlir::test::registerTestDialect(DialectRegistry ®istry) {
registry.insert<TestDialect>();
}
let hasRegionArgAttrVerify = 1;
let hasRegionResultAttrVerify = 1;
let hasOperationInterfaceFallback = 1;
+ let hasNonDefaultDestructor = 1;
let dependentDialects = ["::mlir::DLTIDialect"];
let extraClassDeclaration = [{
getParseOperationHook(StringRef opName) const override;
LogicalResult printOperation(Operation *op,
OpAsmPrinter &printer) const override;
-
- ~TestDialect();
private:
// Storage for a custom fallback interface.
void *fallbackEffectOpInterfaces;
#include "mlir/TableGen/OpClass.h"
#include "mlir/TableGen/Operator.h"
#include "mlir/TableGen/Trait.h"
+#include "llvm/ADT/Optional.h"
#include "llvm/ADT/Sequence.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/CommandLine.h"
DialectFilterIterator(records.end(), records.end(), filterFn)};
}
+static Optional<Dialect>
+findSelectedDialect(ArrayRef<const llvm::Record *> dialectDefs) {
+ // Select the dialect to gen for.
+ if (dialectDefs.size() == 1 && selectedDialect.getNumOccurrences() == 0) {
+ return Dialect(dialectDefs.front());
+ }
+
+ if (selectedDialect.getNumOccurrences() == 0) {
+ llvm::errs() << "when more than 1 dialect is present, one must be selected "
+ "via '-dialect'\n";
+ return llvm::None;
+ }
+
+ auto dialectIt = llvm::find_if(dialectDefs, [](const llvm::Record *def) {
+ return Dialect(def).getName() == selectedDialect;
+ });
+ if (dialectIt == dialectDefs.end()) {
+ llvm::errs() << "selected dialect with '-dialect' does not exist\n";
+ return llvm::None;
+ }
+ return Dialect(*dialectIt);
+}
+
//===----------------------------------------------------------------------===//
// GEN: Dialect declarations
//===----------------------------------------------------------------------===//
{2}
initialize();
}
+
void initialize();
friend class ::mlir::MLIRContext;
public:
+ ~{0}() override;
static constexpr ::llvm::StringLiteral getDialectNamespace() {
return ::llvm::StringLiteral("{1}");
}
raw_ostream &os) {
emitSourceFileHeader("Dialect Declarations", os);
- auto defs = recordKeeper.getAllDerivedDefinitions("Dialect");
- if (defs.empty())
+ auto dialectDefs = recordKeeper.getAllDerivedDefinitions("Dialect");
+ if (dialectDefs.empty())
return false;
- // Select the dialect to gen for.
- const llvm::Record *dialectDef = nullptr;
- if (defs.size() == 1 && selectedDialect.getNumOccurrences() == 0) {
- dialectDef = defs.front();
- } else if (selectedDialect.getNumOccurrences() == 0) {
- llvm::errs() << "when more than 1 dialect is present, one must be selected "
- "via '-dialect'";
+ Optional<Dialect> dialect = findSelectedDialect(dialectDefs);
+ if (!dialect)
return true;
- } else {
- auto dialectIt = llvm::find_if(defs, [](const llvm::Record *def) {
- return Dialect(def).getName() == selectedDialect;
- });
- if (dialectIt == defs.end()) {
- llvm::errs() << "selected dialect with '-dialect' does not exist";
- return true;
- }
- dialectDef = *dialectIt;
- }
-
auto attrDefs = recordKeeper.getAllDerivedDefinitions("DialectAttr");
auto typeDefs = recordKeeper.getAllDerivedDefinitions("DialectType");
- Dialect dialect(dialectDef);
- emitDialectDecl(dialect, filterForDialect<Attribute>(attrDefs, dialect),
- filterForDialect<Type>(typeDefs, dialect), os);
+ emitDialectDecl(*dialect, filterForDialect<Attribute>(attrDefs, *dialect),
+ filterForDialect<Type>(typeDefs, *dialect), os);
+ return false;
+}
+
+//===----------------------------------------------------------------------===//
+// GEN: Dialect definitions
+//===----------------------------------------------------------------------===//
+
+/// The code block to generate a default desturctor definition.
+///
+/// {0}: The name of the dialect class.
+static const char *const dialectDestructorStr = R"(
+{0}::~{0}() = default;
+
+)";
+
+static void emitDialectDef(Dialect &dialect, raw_ostream &os) {
+ // Emit all nested namespaces.
+ NamespaceEmitter nsEmitter(os, dialect);
+
+ if (!dialect.hasNonDefaultDestructor())
+ os << llvm::formatv(dialectDestructorStr, dialect.getCppClassName());
+}
+
+static bool emitDialectDefs(const llvm::RecordKeeper &recordKeeper,
+ raw_ostream &os) {
+ emitSourceFileHeader("Dialect Definitions", os);
+
+ auto dialectDefs = recordKeeper.getAllDerivedDefinitions("Dialect");
+ if (dialectDefs.empty())
+ return false;
+
+ Optional<Dialect> dialect = findSelectedDialect(dialectDefs);
+ if (!dialect)
+ return true;
+ emitDialectDef(*dialect, os);
return false;
}
[](const llvm::RecordKeeper &records, raw_ostream &os) {
return emitDialectDecls(records, os);
});
+
+static mlir::GenRegistration
+ genDialectDefs("gen-dialect-defs", "Generate dialect definitions",
+ [](const llvm::RecordKeeper &records, raw_ostream &os) {
+ return emitDialectDefs(records, os);
+ });
["-gen-dialect-decls"],
"include/mlir/IR/BuiltinDialect.h.inc",
),
+ (
+ ["-gen-dialect-defs"],
+ "include/mlir/IR/BuiltinDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/IR/BuiltinDialect.td",
["-gen-dialect-decls"],
"include/mlir/Dialect/Affine/IR/AffineOpsDialect.h.inc",
),
+ (
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/Affine/IR/AffineOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/Affine/IR/AffineOps.td",
"include/mlir/Dialect/EmitC/IR/EmitCDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/EmitC/IR/EmitCDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/EmitC/IR/EmitC.h.inc",
),
"include/mlir/Dialect/Async/IR/AsyncOpsDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/Async/IR/AsyncOpsDialect.cpp.inc",
+ ),
+ (
["-gen-typedef-decls"],
"include/mlir/Dialect/Async/IR/AsyncOpsTypes.h.inc",
),
"include/mlir/Dialect/ArmNeon/ArmNeonDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=arm_neon",
+ ],
+ "include/mlir/Dialect/ArmNeon/ArmNeonDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/ArmNeon/ArmNeon.h.inc",
),
],
"include/mlir/Dialect/ArmSVE/ArmSVEDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=arm_sve",
+ ],
+ "include/mlir/Dialect/ArmSVE/ArmSVEDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/ArmSVE/ArmSVE.td",
"include/mlir/Dialect/AMX/AMXDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=amx",
+ ],
+ "include/mlir/Dialect/AMX/AMXDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/AMX/AMX.h.inc",
),
"include/mlir/Dialect/X86Vector/X86VectorDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=x86vector",
+ ],
+ "include/mlir/Dialect/X86Vector/X86VectorDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/X86Vector/X86Vector.h.inc",
),
["-gen-dialect-decls"],
"include/mlir/Dialect/SCF/SCFOpsDialect.h.inc",
),
+ (
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/SCF/SCFOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/SCF/SCFOps.td",
"include/mlir/Dialect/SparseTensor/IR/SparseTensorOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=sparse_tensor",
+ ],
+ "include/mlir/Dialect/SparseTensor/IR/SparseTensorOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/SparseTensor/IR/SparseTensorOps.h.inc",
),
"include/mlir/Dialect/StandardOps/IR/OpsDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/StandardOps/IR/OpsDialect.cpp.inc",
+ ),
+ (
["-gen-enum-decls"],
"include/mlir/Dialect/StandardOps/IR/OpsEnums.h.inc",
),
["-gen-dialect-decls"],
"include/mlir/Dialect/Shape/IR/ShapeOpsDialect.h.inc",
),
+ (
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/Shape/IR/ShapeOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/Shape/IR/ShapeOps.td",
"include/mlir/Dialect/GPU/GPUOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=gpu",
+ ],
+ "include/mlir/Dialect/GPU/GPUOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-interface-decls"],
"include/mlir/Dialect/GPU/GPUOpInterfaces.h.inc",
),
"include/mlir/Dialect/LLVMIR/LLVMOpsDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/LLVMIR/LLVMOpsDialect.cpp.inc",
+ ),
+ (
["-gen-enum-decls"],
"include/mlir/Dialect/LLVMIR/LLVMOpsEnums.h.inc",
),
],
"include/mlir/Dialect/LLVMIR/NVVMOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=nvvm",
+ ],
+ "include/mlir/Dialect/LLVMIR/NVVMOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/LLVMIR/NVVMOps.td",
],
"include/mlir/Dialect/LLVMIR/ROCDLOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=rocdl",
+ ],
+ "include/mlir/Dialect/LLVMIR/ROCDLOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/LLVMIR/ROCDLOps.td",
["-gen-dialect-decls"],
"include/mlir/Dialect/PDL/IR/PDLOpsDialect.h.inc",
),
+ (
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/PDL/IR/PDLOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/PDL/IR/PDLOps.td",
],
"include/mlir/Dialect/PDLInterp/IR/PDLInterpOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=pdl_interp",
+ ],
+ "include/mlir/Dialect/PDLInterp/IR/PDLInterpOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/PDLInterp/IR/PDLInterpOps.td",
"include/mlir/Dialect/SPIRV/IR/SPIRVOpsDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/SPIRV/IR/SPIRVOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-doc"],
"g3doc/Dialects/SPIRV/SPIRVOps.md",
),
"include/mlir/Dialect/Tensor/IR/TensorOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=tensor",
+ ],
+ "include/mlir/Dialect/Tensor/IR/TensorOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/Tensor/IR/TensorOps.h.inc",
),
"include/mlir/Dialect/OpenACC/OpenACCOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=acc",
+ ],
+ "include/mlir/Dialect/OpenACC/OpenACCOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-decls"],
"include/mlir/Dialect/OpenACC/OpenACCOps.h.inc",
),
"include/mlir/Dialect/OpenMP/OpenMPOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=omp",
+ ],
+ "include/mlir/Dialect/OpenMP/OpenMPOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-doc"],
"g3doc/Dialects/OpenMP/OpenMPOps.md",
),
"include/mlir/Dialect/Quant/QuantOpsDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/Quant/QuantOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-doc"],
"g3doc/Dialects/QuantOps/QuantOps.md",
),
],
"include/mlir/Dialect/Linalg/IR/LinalgOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=linalg",
+ ],
+ "include/mlir/Dialect/Linalg/IR/LinalgOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/Linalg/IR/LinalgOps.td",
"include/mlir/Dialect/Vector/VectorOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=vector",
+ ],
+ "include/mlir/Dialect/Vector/VectorOpsDialect.cpp.inc",
+ ),
+ (
["-gen-enum-decls"],
"include/mlir/Dialect/Vector/VectorOpsEnums.h.inc",
),
"include/mlir/Dialect/Tosa/IR/TosaOpsDialect.h.inc",
),
(
+ ["-gen-dialect-defs"],
+ "include/mlir/Dialect/Tosa/IR/TosaOpsDialect.cpp.inc",
+ ),
+ (
["-gen-op-doc"],
"g3doc/Dialects/Tosa/TosaOps.md",
),
],
"include/mlir/Dialect/Complex/IR/ComplexOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=complex",
+ ],
+ "include/mlir/Dialect/Complex/IR/ComplexOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/Complex/IR/ComplexBase.td",
],
"include/mlir/Dialect/Math/IR/MathOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=math",
+ ],
+ "include/mlir/Dialect/Math/IR/MathOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/Math/IR/MathBase.td",
],
"include/mlir/Dialect/MemRef/IR/MemRefOpsDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=memref",
+ ],
+ "include/mlir/Dialect/MemRef/IR/MemRefOpsDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/MemRef/IR/MemRefBase.td",
],
"include/mlir/Dialect/DLTI/DLTIDialect.h.inc",
),
+ (
+ [
+ "-gen-dialect-defs",
+ "-dialect=dlti",
+ ],
+ "include/mlir/Dialect/DLTI/DLTIDialect.cpp.inc",
+ ),
],
tblgen = ":mlir-tblgen",
td_file = "include/mlir/Dialect/DLTI/DLTIBase.td",
"lib/Dialect/Test/TestOpsDialect.h.inc",
),
(
+ [
+ "-gen-dialect-defs",
+ "-dialect=test",
+ ],
+ "lib/Dialect/Test/TestOpsDialect.cpp.inc",
+ ),
+ (
["-gen-enum-decls"],
"lib/Dialect/Test/TestOpEnums.h.inc",
),