[Mlir-commits] [mlir] b38cf03 - [mlir][LinalgToLLVM] Add pass option for emitting opaque-pointers
Markus Böck
llvmlistbot at llvm.org
Fri Feb 24 05:27:55 PST 2023
Author: Markus Böck
Date: 2023-02-24T14:27:16+01:00
New Revision: b38cf034102529540fef0081de0d96d0e2258c3a
URL: https://github.com/llvm/llvm-project/commit/b38cf034102529540fef0081de0d96d0e2258c3a
DIFF: https://github.com/llvm/llvm-project/commit/b38cf034102529540fef0081de0d96d0e2258c3a.diff
LOG: [mlir][LinalgToLLVM] Add pass option for emitting opaque-pointers
While the pass itself doesn't directly require any changes to be compatible with opaque-pointers, it does import patterns for lowering MemRefs to LLVM.
Adding this pass option allows any users of the pass to switch to emitting opaque-pointers via the pass option
Differential Revision: https://reviews.llvm.org/D144724
Added:
Modified:
mlir/include/mlir/Conversion/Passes.td
mlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp
mlir/test/Dialect/Linalg/affine.mlir
mlir/test/Dialect/Linalg/loops.mlir
mlir/test/Dialect/Linalg/roundtrip.mlir
Removed:
################################################################################
diff --git a/mlir/include/mlir/Conversion/Passes.td b/mlir/include/mlir/Conversion/Passes.td
index ef4ba18938c57..b069627298e1d 100644
--- a/mlir/include/mlir/Conversion/Passes.td
+++ b/mlir/include/mlir/Conversion/Passes.td
@@ -534,6 +534,12 @@ def ConvertLinalgToLLVMPass : Pass<"convert-linalg-to-llvm", "ModuleOp"> {
let summary = "Convert the operations from the linalg dialect into the LLVM "
"dialect";
let dependentDialects = ["scf::SCFDialect", "LLVM::LLVMDialect"];
+
+ let options = [
+ Option<"useOpaquePointers", "use-opaque-pointers", "bool",
+ /*default=*/"false", "Generate LLVM IR using opaque pointers "
+ "instead of typed pointers">
+ ];
}
//===----------------------------------------------------------------------===//
diff --git a/mlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp b/mlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp
index 8eb7bbe3e5033..fb3d9ff364211 100644
--- a/mlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp
+++ b/mlir/lib/Conversion/LinalgToLLVM/LinalgToLLVM.cpp
@@ -79,6 +79,9 @@ void mlir::populateLinalgToLLVMConversionPatterns(LLVMTypeConverter &converter,
namespace {
struct ConvertLinalgToLLVMPass
: public impl::ConvertLinalgToLLVMPassBase<ConvertLinalgToLLVMPass> {
+
+ using Base::Base;
+
void runOnOperation() override;
};
} // namespace
@@ -88,7 +91,9 @@ void ConvertLinalgToLLVMPass::runOnOperation() {
// Convert to the LLVM IR dialect using the converter defined above.
RewritePatternSet patterns(&getContext());
- LLVMTypeConverter converter(&getContext());
+ LowerToLLVMOptions options(&getContext());
+ options.useOpaquePointers = useOpaquePointers;
+ LLVMTypeConverter converter(&getContext(), options);
populateLinalgToLLVMConversionPatterns(converter, patterns);
populateFinalizeMemRefToLLVMConversionPatterns(converter, patterns);
diff --git a/mlir/test/Dialect/Linalg/affine.mlir b/mlir/test/Dialect/Linalg/affine.mlir
index 46dd2a3d606c3..6e8380bb2f194 100644
--- a/mlir/test/Dialect/Linalg/affine.mlir
+++ b/mlir/test/Dialect/Linalg/affine.mlir
@@ -1,7 +1,7 @@
// RUN: mlir-opt %s -convert-linalg-to-affine-loops | FileCheck %s
// Test that we can lower all the way to LLVM without crashing, don't check results here.
-// RUN: mlir-opt %s -convert-linalg-to-affine-loops -convert-linalg-to-llvm -o=/dev/null 2>&1
+// RUN: mlir-opt %s -convert-linalg-to-affine-loops -convert-linalg-to-llvm='use-opaque-pointers=1' -o=/dev/null 2>&1
func.func @matmul(%arg0: memref<?xi8>, %M: index, %N: index, %K: index) {
%c0 = arith.constant 0 : index
diff --git a/mlir/test/Dialect/Linalg/loops.mlir b/mlir/test/Dialect/Linalg/loops.mlir
index 2f715c0894b68..51834235f590f 100644
--- a/mlir/test/Dialect/Linalg/loops.mlir
+++ b/mlir/test/Dialect/Linalg/loops.mlir
@@ -2,7 +2,7 @@
// RUN: mlir-opt %s -convert-linalg-to-parallel-loops | FileCheck --check-prefix=CHECKPARALLEL %s
// Test that we can lower all the way to LLVM without crashing, don't check results here.
-// RUN: mlir-opt %s -convert-linalg-to-loops -convert-linalg-to-llvm -o=/dev/null 2>&1
+// RUN: mlir-opt %s -convert-linalg-to-loops -convert-linalg-to-llvm='use-opaque-pointers=1' -o=/dev/null 2>&1
// CHECK: #[[$stride1Dilation1:.*]] = affine_map<(d0, d1) -> (d0 + d1)>
diff --git a/mlir/test/Dialect/Linalg/roundtrip.mlir b/mlir/test/Dialect/Linalg/roundtrip.mlir
index c665366277dae..8bf5e5ba418da 100644
--- a/mlir/test/Dialect/Linalg/roundtrip.mlir
+++ b/mlir/test/Dialect/Linalg/roundtrip.mlir
@@ -4,7 +4,7 @@
// TODO: Re-enable LLVM lowering test.
//
// Test that we can lower all the way to LLVM without crashing, don't check results here.
-// DISABLED: mlir-opt %s --convert-linalg-to-llvm -o=/dev/null 2>&1
+// DISABLED: mlir-opt %s --convert-linalg-to-llvm='use-opaque-pointers=1' -o=/dev/null 2>&1
func.func @views(%arg0: index) {
%c0 = arith.constant 0 : index
More information about the Mlir-commits
mailing list