aboutsummaryrefslogtreecommitdiff
path: root/mlir/unittests/ExecutionEngine/Invoke.cpp
diff options
context:
space:
mode:
authorMatthias Springer <mspringer@nvidia.com>2024-10-28 03:46:58 +0100
committerMatthias Springer <mspringer@nvidia.com>2024-10-28 05:44:53 +0100
commitf6b15963995594d4ea61f56d7473e38b2583fe53 (patch)
tree4865fb72dde4494a4707392845449d8eaa768f1a /mlir/unittests/ExecutionEngine/Invoke.cpp
parent5621929f7f4878c318deecb592cd03f5ecbb83ba (diff)
downloadllvm-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.cpp2
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);
}