[Mlir-commits] [mlir] 39da468 - Revert "[mlir][func] Use the generated pass options in func to llvm."
Tobias Gysi
llvmlistbot at llvm.org
Sat Feb 11 01:45:04 PST 2023
Author: Tobias Gysi
Date: 2023-02-11T10:42:20+01:00
New Revision: 39da46826da82c24ca4407c13ad7feb8e5dc32a1
URL: https://github.com/llvm/llvm-project/commit/39da46826da82c24ca4407c13ad7feb8e5dc32a1
DIFF: https://github.com/llvm/llvm-project/commit/39da46826da82c24ca4407c13ad7feb8e5dc32a1.diff
LOG: Revert "[mlir][func] Use the generated pass options in func to llvm."
The commit breaks the mlir-vulkan runner:
https://lab.llvm.org/buildbot#builders/61/builds/39694
This reverts commit 771d9c05afc2515b474fb53db857716dfdfc1dcf.
Added:
Modified:
mlir/include/mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h
mlir/include/mlir/Conversion/Passes.td
mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
mlir/test/CAPI/execution_engine.c
Removed:
################################################################################
diff --git a/mlir/include/mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h b/mlir/include/mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h
index f6be8a0fcb2b1..701c6acac62fe 100644
--- a/mlir/include/mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h
+++ b/mlir/include/mlir/Conversion/FuncToLLVM/ConvertFuncToLLVMPass.h
@@ -13,11 +13,20 @@
#include <string>
namespace mlir {
+class LowerToLLVMOptions;
+class ModuleOp;
+template <typename T>
+class OperationPass;
class Pass;
-#define GEN_PASS_DECL_CONVERTFUNCTOLLVMPASS
+#define GEN_PASS_DECL_CONVERTFUNCTOLLVM
#include "mlir/Conversion/Passes.h.inc"
+/// Creates a pass to convert the Func dialect into the LLVMIR dialect.
+std::unique_ptr<OperationPass<ModuleOp>> createConvertFuncToLLVMPass();
+std::unique_ptr<OperationPass<ModuleOp>>
+createConvertFuncToLLVMPass(const LowerToLLVMOptions &options);
+
} // namespace mlir
#endif // MLIR_CONVERSION_FUNCTOLLVM_CONVERTFUNCTOLLVMPASS_H_
diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td
index dacad1adcd730..60c28bed55910 100644
--- a/mlir/include/mlir/Conversion/Passes.td
+++ b/mlir/include/mlir/Conversion/Passes.td
@@ -276,7 +276,7 @@ def ConvertControlFlowToSPIRV : Pass<"convert-cf-to-spirv"> {
// FuncToLLVM
//===----------------------------------------------------------------------===//
-def ConvertFuncToLLVMPass : Pass<"convert-func-to-llvm", "ModuleOp"> {
+def ConvertFuncToLLVM : Pass<"convert-func-to-llvm", "ModuleOp"> {
let summary = "Convert from the Func dialect to the LLVM dialect";
let description = [{
Convert Func dialect operations into the LLVM IR dialect operations.
@@ -300,6 +300,7 @@ def ConvertFuncToLLVMPass : Pass<"convert-func-to-llvm", "ModuleOp"> {
returns are updated accordingly. Block argument types are updated to use
LLVM IR types.
}];
+ let constructor = "mlir::createConvertFuncToLLVMPass()";
let dependentDialects = ["LLVM::LLVMDialect"];
let options = [
Option<"useBarePtrCallConv", "use-bare-ptr-memref-call-conv", "bool",
diff --git a/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp b/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
index 80f0bbbfb46ae..724b690f1008b 100644
--- a/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
+++ b/mlir/lib/Conversion/FuncToLLVM/FuncToLLVM.cpp
@@ -48,7 +48,7 @@
#include <functional>
namespace mlir {
-#define GEN_PASS_DEF_CONVERTFUNCTOLLVMPASS
+#define GEN_PASS_DEF_CONVERTFUNCTOLLVM
#include "mlir/Conversion/Passes.h.inc"
} // namespace mlir
@@ -711,8 +711,15 @@ void mlir::populateFuncToLLVMConversionPatterns(LLVMTypeConverter &converter,
namespace {
/// A pass converting Func operations into the LLVM IR dialect.
struct ConvertFuncToLLVMPass
- : public impl::ConvertFuncToLLVMPassBase<ConvertFuncToLLVMPass> {
- using Base::Base;
+ : public impl::ConvertFuncToLLVMBase<ConvertFuncToLLVMPass> {
+ ConvertFuncToLLVMPass() = default;
+ ConvertFuncToLLVMPass(bool useBarePtrCallConv, unsigned indexBitwidth,
+ bool useAlignedAlloc,
+ const llvm::DataLayout &dataLayout) {
+ this->useBarePtrCallConv = useBarePtrCallConv;
+ this->indexBitwidth = indexBitwidth;
+ this->dataLayout = dataLayout.getStringRepresentation();
+ }
/// Run the dialect converter on the module.
void runOnOperation() override {
@@ -754,3 +761,21 @@ struct ConvertFuncToLLVMPass
}
};
} // namespace
+
+std::unique_ptr<OperationPass<ModuleOp>> mlir::createConvertFuncToLLVMPass() {
+ return std::make_unique<ConvertFuncToLLVMPass>();
+}
+
+std::unique_ptr<OperationPass<ModuleOp>>
+mlir::createConvertFuncToLLVMPass(const LowerToLLVMOptions &options) {
+ auto allocLowering = options.allocLowering;
+ // There is no way to provide additional patterns for pass, so
+ // AllocLowering::None will always fail.
+ assert(allocLowering != LowerToLLVMOptions::AllocLowering::None &&
+ "ConvertFuncToLLVMPass doesn't support AllocLowering::None");
+ bool useAlignedAlloc =
+ (allocLowering == LowerToLLVMOptions::AllocLowering::AlignedAlloc);
+ return std::make_unique<ConvertFuncToLLVMPass>(
+ options.useBarePtrCallConv, options.getIndexBitwidth(), useAlignedAlloc,
+ options.dataLayout);
+}
diff --git a/mlir/test/CAPI/execution_engine.c b/mlir/test/CAPI/execution_engine.c
index 582b2f8fe2223..96ad8eb1a4029 100644
--- a/mlir/test/CAPI/execution_engine.c
+++ b/mlir/test/CAPI/execution_engine.c
@@ -34,7 +34,7 @@ void lowerModuleToLLVM(MlirContext ctx, MlirModule module) {
MlirPassManager pm = mlirPassManagerCreate(ctx);
MlirOpPassManager opm = mlirPassManagerGetNestedUnder(
pm, mlirStringRefCreateFromCString("func.func"));
- mlirPassManagerAddOwnedPass(pm, mlirCreateConversionConvertFuncToLLVMPass());
+ mlirPassManagerAddOwnedPass(pm, mlirCreateConversionConvertFuncToLLVM());
mlirOpPassManagerAddOwnedPass(
opm, mlirCreateConversionArithToLLVMConversionPass());
MlirLogicalResult status = mlirPassManagerRun(pm, module);
More information about the Mlir-commits
mailing list