diff --git a/mlir/include/mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h b/mlir/include/mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h --- a/mlir/include/mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h +++ b/mlir/include/mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h @@ -21,8 +21,11 @@ void populateArithmeticToLLVMConversionPatterns(LLVMTypeConverter &converter, RewritePatternSet &patterns); -std::unique_ptr createConvertArithmeticToLLVMPass(); } // namespace arith + +#define GEN_PASS_DECL_CONVERTARITHMETICTOLLVMPASS +#include "mlir/Conversion/Passes.h.inc" + } // namespace mlir #endif // MLIR_CONVERSION_ARITHMETICTOLLVM_ARITHMETICTOLLVM_H diff --git a/mlir/include/mlir/Conversion/CMakeLists.txt b/mlir/include/mlir/Conversion/CMakeLists.txt --- a/mlir/include/mlir/Conversion/CMakeLists.txt +++ b/mlir/include/mlir/Conversion/CMakeLists.txt @@ -1,6 +1,7 @@ set(LLVM_TARGET_DEFINITIONS Passes.td) mlir_tablegen(Passes.h.inc -gen-pass-decls -name Conversion) +mlir_tablegen(Passes.cpp.inc -gen-pass-defs -name Conversion) mlir_tablegen(Passes.capi.h.inc -gen-pass-capi-header --prefix Conversion) mlir_tablegen(Passes.capi.cpp.inc -gen-pass-capi-impl --prefix Conversion) add_public_tablegen_target(MLIRConversionPassIncGen) diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td --- a/mlir/include/mlir/Conversion/Passes.td +++ b/mlir/include/mlir/Conversion/Passes.td @@ -96,12 +96,11 @@ // ArithmeticToLLVM //===----------------------------------------------------------------------===// -def ConvertArithmeticToLLVM : Pass<"convert-arith-to-llvm"> { +def ConvertArithmeticToLLVMPass : Pass<"convert-arith-to-llvm"> { let summary = "Convert Arithmetic dialect to LLVM dialect"; let description = [{ This pass converts supported Arithmetic ops to LLVM dialect instructions. }]; - let constructor = "mlir::arith::createConvertArithmeticToLLVMPass()"; let dependentDialects = ["LLVM::LLVMDialect"]; let options = [ Option<"indexBitwidth", "index-bitwidth", "unsigned", diff --git a/mlir/lib/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.cpp b/mlir/lib/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.cpp --- a/mlir/lib/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.cpp +++ b/mlir/lib/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.cpp @@ -7,7 +7,8 @@ //===----------------------------------------------------------------------===// #include "mlir/Conversion/ArithmeticToLLVM/ArithmeticToLLVM.h" -#include "../PassDetail.h" + +#include "mlir/Pass/Pass.h" #include "mlir/Conversion/LLVMCommon/ConversionTarget.h" #include "mlir/Conversion/LLVMCommon/VectorPattern.h" #include "mlir/Dialect/Arithmetic/IR/Arithmetic.h" @@ -16,6 +17,9 @@ using namespace mlir; +#define GEN_PASS_DEF_CONVERTARITHMETICTOLLVMPASS +#include "mlir/Conversion/Passes.cpp.inc" + namespace { //===----------------------------------------------------------------------===// @@ -270,8 +274,8 @@ namespace { struct ConvertArithmeticToLLVMPass - : public ConvertArithmeticToLLVMBase { - ConvertArithmeticToLLVMPass() = default; + : public ConvertArithmeticToLLVMPassBase { + using ConvertArithmeticToLLVMPassBase::ConvertArithmeticToLLVMPassBase; void runOnOperation() override { LLVMConversionTarget target(getContext()); @@ -343,7 +347,3 @@ >(converter); // clang-format on } - -std::unique_ptr mlir::arith::createConvertArithmeticToLLVMPass() { - return std::make_unique(); -} diff --git a/mlir/test/CAPI/execution_engine.c b/mlir/test/CAPI/execution_engine.c --- a/mlir/test/CAPI/execution_engine.c +++ b/mlir/test/CAPI/execution_engine.c @@ -35,8 +35,7 @@ MlirOpPassManager opm = mlirPassManagerGetNestedUnder( pm, mlirStringRefCreateFromCString("func.func")); mlirPassManagerAddOwnedPass(pm, mlirCreateConversionConvertFuncToLLVM()); - mlirOpPassManagerAddOwnedPass(opm, - mlirCreateConversionConvertArithmeticToLLVM()); + mlirOpPassManagerAddOwnedPass(opm, mlirCreateConversionConvertArithmeticToLLVMPass()); MlirLogicalResult status = mlirPassManagerRun(pm, module); if (mlirLogicalResultIsFailure(status)) { fprintf(stderr, "Unexpected failure running pass pipeline\n"); diff --git a/mlir/tools/mlir-tblgen/PassCAPIGen.cpp b/mlir/tools/mlir-tblgen/PassCAPIGen.cpp --- a/mlir/tools/mlir-tblgen/PassCAPIGen.cpp +++ b/mlir/tools/mlir-tblgen/PassCAPIGen.cpp @@ -74,7 +74,7 @@ return wrap({2}.release()); } void mlirRegister{0}{1}() { - register{1}Pass(); + register{1}(); } )"; @@ -103,7 +103,7 @@ constructorCall = constructor.str(); else constructorCall = - llvm::formatv("create{0}Pass()", pass.getDef()->getName()).str(); + llvm::formatv("create{0}()", pass.getDef()->getName()).str(); os << llvm::formatv(passCreateDef, groupName, defName, constructorCall); } diff --git a/mlir/unittests/ExecutionEngine/Invoke.cpp b/mlir/unittests/ExecutionEngine/Invoke.cpp --- a/mlir/unittests/ExecutionEngine/Invoke.cpp +++ b/mlir/unittests/ExecutionEngine/Invoke.cpp @@ -54,8 +54,7 @@ static LogicalResult lowerToLLVMDialect(ModuleOp module) { PassManager pm(module.getContext()); pm.addPass(mlir::createMemRefToLLVMPass()); - pm.addNestedPass( - mlir::arith::createConvertArithmeticToLLVMPass()); + pm.addNestedPass(mlir::createConvertArithmeticToLLVMPass()); pm.addPass(mlir::createConvertFuncToLLVMPass()); pm.addPass(mlir::createReconcileUnrealizedCastsPass()); return pm.run(module);