[Mlir-commits] [mlir] a968bec - Revert "[mlir][tools] Introduce tblgen-to-irdl tool (#66865)"
Thurston Dang
llvmlistbot at llvm.org
Mon Oct 9 09:58:55 PDT 2023
Author: Thurston Dang
Date: 2023-10-09T16:35:17Z
New Revision: a968beca7364dcac1d954407e32b3c407c8c54fb
URL: https://github.com/llvm/llvm-project/commit/a968beca7364dcac1d954407e32b3c407c8c54fb
DIFF: https://github.com/llvm/llvm-project/commit/a968beca7364dcac1d954407e32b3c407c8c54fb.diff
LOG: Revert "[mlir][tools] Introduce tblgen-to-irdl tool (#66865)"
This reverts commit e6e9beb977555c84fb16ffdd8dca8649c7d3091d
due to an ongoing buildbot breakage starting from
https://lab.llvm.org/buildbot/#/builders/168/builds/16127
to present
(https://lab.llvm.org/buildbot/#/builders/168/builds/16152)
Added:
Modified:
mlir/test/CMakeLists.txt
mlir/tools/CMakeLists.txt
Removed:
mlir/test/tblgen-to-irdl/CMathDialect.td
mlir/tools/tblgen-to-irdl/CMakeLists.txt
mlir/tools/tblgen-to-irdl/OpDefinitionsGen.cpp
mlir/tools/tblgen-to-irdl/tblgen-to-irdl.cpp
################################################################################
diff --git a/mlir/test/CMakeLists.txt b/mlir/test/CMakeLists.txt
index 04bfa1ade655e04..bf143d036c2f66f 100644
--- a/mlir/test/CMakeLists.txt
+++ b/mlir/test/CMakeLists.txt
@@ -108,7 +108,6 @@ set(MLIR_TEST_DEPENDS
mlir-tblgen
mlir-translate
tblgen-lsp-server
- tblgen-to-irdl
)
# The native target may not be enabled, in this case we won't
diff --git a/mlir/test/tblgen-to-irdl/CMathDialect.td b/mlir/test/tblgen-to-irdl/CMathDialect.td
deleted file mode 100644
index 57ae8afbba5eeb3..000000000000000
--- a/mlir/test/tblgen-to-irdl/CMathDialect.td
+++ /dev/null
@@ -1,56 +0,0 @@
-// RUN: tblgen-to-irdl %s -I=%S/../../include --gen-dialect-irdl-defs --dialect=cmath | FileCheck %s
-
-include "mlir/IR/OpBase.td"
-include "mlir/IR/AttrTypeBase.td"
-
-// CHECK-LABEL: irdl.dialect @cmath {
-def CMath_Dialect : Dialect {
- let name = "cmath";
-}
-
-class CMath_Type<string name, string typeMnemonic, list<Trait> traits = []>
-: TypeDef<CMath_Dialect, name, traits> {
- let mnemonic = typeMnemonic;
-}
-
-class CMath_Op<string mnemonic, list<Trait> traits = []>
- : Op<CMath_Dialect, mnemonic, traits>;
-
-def f32Orf64Type : Or<[CPred<"::llvm::isa<::mlir::F32>">,
- CPred<"::llvm::isa<::mlir::F64>">]>;
-
-def CMath_ComplexType : CMath_Type<"ComplexType", "complex"> {
- let parameters = (ins f32Orf64Type:$elementType);
-}
-
-// CHECK: irdl.operation @identity {
-// CHECK-NEXT: %0 = irdl.c_pred "(::llvm::isa<cmath::ComplexTypeType>($_self))"
-// CHECK-NEXT: irdl.operands()
-// CHECK-NEXT: irdl.results(%0)
-// CHECK-NEXT: }
-def CMath_IdentityOp : CMath_Op<"identity"> {
- let results = (outs CMath_ComplexType:$out);
-}
-
-// CHECK: irdl.operation @mul {
-// CHECK-NEXT: %0 = irdl.c_pred "(::llvm::isa<cmath::ComplexTypeType>($_self))"
-// CHECK-NEXT: %1 = irdl.c_pred "(::llvm::isa<cmath::ComplexTypeType>($_self))"
-// CHECK-NEXT: %2 = irdl.c_pred "(::llvm::isa<cmath::ComplexTypeType>($_self))"
-// CHECK-NEXT: irdl.operands(%0, %1)
-// CHECK-NEXT: irdl.results(%2)
-// CHECK-NEXT: }
-def CMath_MulOp : CMath_Op<"mul"> {
- let arguments = (ins CMath_ComplexType:$in1, CMath_ComplexType:$in2);
- let results = (outs CMath_ComplexType:$out);
-}
-
-// CHECK: irdl.operation @norm {
-// CHECK-NEXT: %0 = irdl.c_pred "(true)"
-// CHECK-NEXT: %1 = irdl.c_pred "(::llvm::isa<cmath::ComplexTypeType>($_self))"
-// CHECK-NEXT: irdl.operands(%0)
-// CHECK-NEXT: irdl.results(%1)
-// CHECK-NEXT: }
-def CMath_NormOp : CMath_Op<"norm"> {
- let arguments = (ins AnyType:$in);
- let results = (outs CMath_ComplexType:$out);
-}
diff --git a/mlir/tools/CMakeLists.txt b/mlir/tools/CMakeLists.txt
index 895a103061d3052..e9a1e4d6251722e 100644
--- a/mlir/tools/CMakeLists.txt
+++ b/mlir/tools/CMakeLists.txt
@@ -8,7 +8,6 @@ add_subdirectory(mlir-spirv-cpu-runner)
add_subdirectory(mlir-translate)
add_subdirectory(mlir-vulkan-runner)
add_subdirectory(tblgen-lsp-server)
-add_subdirectory(tblgen-to-irdl)
# mlir-cpu-runner requires ExecutionEngine.
if(MLIR_ENABLE_EXECUTION_ENGINE)
diff --git a/mlir/tools/tblgen-to-irdl/CMakeLists.txt b/mlir/tools/tblgen-to-irdl/CMakeLists.txt
deleted file mode 100644
index a6621cb98ac6bdc..000000000000000
--- a/mlir/tools/tblgen-to-irdl/CMakeLists.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-set(LLVM_LINK_COMPONENTS
- TableGen
-)
-
-add_tablegen(tblgen-to-irdl MLIR
- DESTINATION "${MLIR_TOOLS_INSTALL_DIR}"
- EXPORT MLIR
- tblgen-to-irdl.cpp
- OpDefinitionsGen.cpp
- )
-
-target_link_libraries(tblgen-to-irdl
- PRIVATE
- MLIRIR
- MLIRIRDL
- MLIRTblgenLib
- MLIRSupport
-)
-
-mlir_check_all_link_libraries(tblgen-to-irdl)
diff --git a/mlir/tools/tblgen-to-irdl/OpDefinitionsGen.cpp b/mlir/tools/tblgen-to-irdl/OpDefinitionsGen.cpp
deleted file mode 100644
index 2323127d7afd63e..000000000000000
--- a/mlir/tools/tblgen-to-irdl/OpDefinitionsGen.cpp
+++ /dev/null
@@ -1,155 +0,0 @@
-//===- OpDefinitionsGen.cpp - IRDL op definitions generator ---------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// OpDefinitionsGen uses the description of operations to generate IRDL
-// definitions for ops.
-//
-//===----------------------------------------------------------------------===//
-
-#include "mlir/Dialect/IRDL/IR/IRDL.h"
-#include "mlir/IR/Attributes.h"
-#include "mlir/IR/Builders.h"
-#include "mlir/IR/BuiltinOps.h"
-#include "mlir/IR/Diagnostics.h"
-#include "mlir/IR/Dialect.h"
-#include "mlir/IR/MLIRContext.h"
-#include "mlir/TableGen/AttrOrTypeDef.h"
-#include "mlir/TableGen/GenInfo.h"
-#include "mlir/TableGen/GenNameParser.h"
-#include "mlir/TableGen/Interfaces.h"
-#include "mlir/TableGen/Operator.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/Support/InitLLVM.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/TableGen/Main.h"
-#include "llvm/TableGen/Record.h"
-#include "llvm/TableGen/TableGenBackend.h"
-
-using namespace llvm;
-using namespace mlir;
-using tblgen::NamedTypeConstraint;
-
-static llvm::cl::OptionCategory dialectGenCat("Options for -gen-irdl-dialect");
-llvm::cl::opt<std::string>
- selectedDialect("dialect", llvm::cl::desc("The dialect to gen for"),
- llvm::cl::cat(dialectGenCat), llvm::cl::Required);
-
-irdl::CPredOp createConstraint(OpBuilder &builder,
- NamedTypeConstraint namedConstraint) {
- MLIRContext *ctx = builder.getContext();
- // Build the constraint as a string.
- std::string constraint =
- namedConstraint.constraint.getPredicate().getCondition();
- // Build a CPredOp to match the C constraint built.
- irdl::CPredOp op = builder.create<irdl::CPredOp>(
- UnknownLoc::get(ctx), StringAttr::get(ctx, constraint));
- return op;
-}
-
-/// Returns the name of the operation without the dialect prefix.
-static StringRef getOperatorName(tblgen::Operator &tblgenOp) {
- StringRef opName = tblgenOp.getDef().getValueAsString("opName");
- return opName;
-}
-
-/// Extract an operation to IRDL.
-irdl::OperationOp createIRDLOperation(OpBuilder &builder,
- tblgen::Operator &tblgenOp) {
- MLIRContext *ctx = builder.getContext();
- StringRef opName = getOperatorName(tblgenOp);
-
- irdl::OperationOp op = builder.create<irdl::OperationOp>(
- UnknownLoc::get(ctx), StringAttr::get(ctx, opName));
-
- // Add the block in the region.
- Block &opBlock = op.getBody().emplaceBlock();
- OpBuilder consBuilder = OpBuilder::atBlockBegin(&opBlock);
-
- auto getValues = [&](tblgen::Operator::const_value_range namedCons) {
- SmallVector<Value> operands;
- SmallVector<irdl::VariadicityAttr> variadicity;
- for (const NamedTypeConstraint &namedCons : namedCons) {
- auto operand = createConstraint(consBuilder, namedCons);
- operands.push_back(operand);
-
- irdl::VariadicityAttr var;
- if (namedCons.isOptional())
- var = consBuilder.getAttr<irdl::VariadicityAttr>(
- irdl::Variadicity::optional);
- else if (namedCons.isVariadic())
- var = consBuilder.getAttr<irdl::VariadicityAttr>(
- irdl::Variadicity::variadic);
- else
- var = consBuilder.getAttr<irdl::VariadicityAttr>(
- irdl::Variadicity::single);
-
- variadicity.push_back(var);
- }
- return std::make_tuple(operands, variadicity);
- };
-
- auto [operands, operandVariadicity] = getValues(tblgenOp.getOperands());
- auto [results, resultVariadicity] = getValues(tblgenOp.getResults());
-
- // Create the operands and results operations.
- consBuilder.create<irdl::OperandsOp>(UnknownLoc::get(ctx), operands,
- operandVariadicity);
- consBuilder.create<irdl::ResultsOp>(UnknownLoc::get(ctx), results,
- resultVariadicity);
-
- return op;
-}
-
-static irdl::DialectOp createIRDLDialect(OpBuilder &builder) {
- MLIRContext *ctx = builder.getContext();
- return builder.create<irdl::DialectOp>(UnknownLoc::get(ctx),
- StringAttr::get(ctx, selectedDialect));
-}
-
-static std::vector<llvm::Record *>
-getOpDefinitions(const RecordKeeper &recordKeeper) {
- if (!recordKeeper.getClass("Op"))
- return {};
- return recordKeeper.getAllDerivedDefinitions("Op");
-}
-
-static bool emitDialectIRDLDefs(const RecordKeeper &recordKeeper,
- raw_ostream &os) {
- // Initialize.
- MLIRContext ctx;
- ctx.getOrLoadDialect<irdl::IRDLDialect>();
- OpBuilder builder(&ctx);
-
- // Create a module op and set it as the insertion point.
- ModuleOp module = builder.create<ModuleOp>(UnknownLoc::get(&ctx));
- builder = builder.atBlockBegin(module.getBody());
- // Create the dialect and insert it.
- irdl::DialectOp dialect = createIRDLDialect(builder);
- // Set insertion point to start of DialectOp.
- builder = builder.atBlockBegin(&dialect.getBody().emplaceBlock());
-
- std::vector<Record *> defs = getOpDefinitions(recordKeeper);
- for (auto *def : defs) {
- tblgen::Operator tblgenOp(def);
- if (tblgenOp.getDialectName() != selectedDialect)
- continue;
-
- createIRDLOperation(builder, tblgenOp);
- }
-
- // Print the module.
- module.print(os);
-
- return false;
-}
-
-static mlir::GenRegistration
- genOpDefs("gen-dialect-irdl-defs", "Generate IRDL dialect definitions",
- [](const RecordKeeper &records, raw_ostream &os) {
- return emitDialectIRDLDefs(records, os);
- });
diff --git a/mlir/tools/tblgen-to-irdl/tblgen-to-irdl.cpp b/mlir/tools/tblgen-to-irdl/tblgen-to-irdl.cpp
deleted file mode 100644
index 092ec2ebe81a682..000000000000000
--- a/mlir/tools/tblgen-to-irdl/tblgen-to-irdl.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-//===- mlir-tblgen.cpp - Top-Level TableGen implementation for MLIR -------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file contains the main function for MLIR's TableGen IRDL backend.
-//
-//===----------------------------------------------------------------------===//
-
-#include "mlir/TableGen/GenInfo.h"
-#include "mlir/Tools/mlir-tblgen/MlirTblgenMain.h"
-#include "llvm/TableGen/Record.h"
-
-using namespace llvm;
-using namespace mlir;
-
-// Generator that prints records.
-GenRegistration printRecords("print-records", "Print all records to stdout",
- [](const RecordKeeper &records, raw_ostream &os) {
- os << records;
- return false;
- });
-
-int main(int argc, char **argv) { return MlirTblgenMain(argc, argv); }
More information about the Mlir-commits
mailing list