diff options
author | Matthias Springer <mspringer@nvidia.com> | 2024-10-28 03:46:58 +0100 |
---|---|---|
committer | Matthias Springer <mspringer@nvidia.com> | 2024-10-28 05:44:53 +0100 |
commit | f6b15963995594d4ea61f56d7473e38b2583fe53 (patch) | |
tree | 4865fb72dde4494a4707392845449d8eaa768f1a /mlir/unittests/ExecutionEngine/Invoke.cpp | |
parent | 5621929f7f4878c318deecb592cd03f5ecbb83ba (diff) | |
download | llvm-users/matthias-springer/finalize_memref.zip llvm-users/matthias-springer/finalize_memref.tar.gz llvm-users/matthias-springer/finalize_memref.tar.bz2 |
[mlir][memref] Make `finalize-memref-to-llvm` the last MemRef passusers/matthias-springer/finalize_memref
This commit updates all test cases and pass pipelines such that `finalize-memref-to-llvm` is the last pass that deals with MemRef types. (As the name already suggests.) This is now also mentioned in the pass documentation.
This change is preparation of merging the 1:1 and 1:N dialect conversions. As part of that change, argument materializations are going to disappear.
To understand why `finalize-memref-to-llvm` should be the final MemRef pass, consider this example:
```mlir
// RUN: mlir-opt -convert-func-to-llvm
func.func @foo(%m: memref<5xf32>) {
%r = vector.transfer_read %m[...] ...
...
}
```
The output (assuming bare pointer calling convention) will be as follows:
```mlir
func.func @foo(%ptr: !llvm.ptr) {
%m = builtin.unrealized_conversion_cast %ptr : !llvm.ptr to memref<5xf32>
}
```
Diffstat (limited to 'mlir/unittests/ExecutionEngine/Invoke.cpp')
-rw-r--r-- | mlir/unittests/ExecutionEngine/Invoke.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mlir/unittests/ExecutionEngine/Invoke.cpp b/mlir/unittests/ExecutionEngine/Invoke.cpp index ff87fc9..b945396 100644 --- a/mlir/unittests/ExecutionEngine/Invoke.cpp +++ b/mlir/unittests/ExecutionEngine/Invoke.cpp @@ -53,9 +53,9 @@ static struct LLVMInitializer { /// dialects lowering to LLVM Dialect. static LogicalResult lowerToLLVMDialect(ModuleOp module) { PassManager pm(module->getName()); - pm.addPass(mlir::createFinalizeMemRefToLLVMConversionPass()); pm.addNestedPass<func::FuncOp>(mlir::createArithToLLVMConversionPass()); pm.addPass(mlir::createConvertFuncToLLVMPass()); + pm.addPass(mlir::createFinalizeMemRefToLLVMConversionPass()); pm.addPass(mlir::createReconcileUnrealizedCastsPass()); return pm.run(module); } |