diff options
| author | Andrzej WarzyĆski <andrzej.warzynski@arm.com> | 2023-09-12 10:33:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-12 10:33:58 +0100 |
| commit | 22f96ab6fbf89dfa89faa2aa88cefb485fbd4e21 (patch) | |
| tree | 5372850cb368ad1fd4fa43fa9b81f23123c3d651 /mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp | |
| parent | eaf737a4e004fb25807226aa5769cceeaebd1e78 (diff) | |
[mlir][vector] Refine vector.transfer_read hoisting/forwarding (#65770)
Make sure that when analysing a `vector.transfer_read` that's a
candidate for either hoisting or store-to-load forwarding,
`memref.collapse_shape` Ops are correctly included in the alias
analysis. This is done by either
* making sure that relevant users are taken into account, or
* source Ops are correctly identified.
Diffstat (limited to 'mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp')
| -rw-r--r-- | mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp b/mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp index 74d4b7636315..f715c543eb17 100644 --- a/mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp +++ b/mlir/lib/Dialect/Vector/Transforms/VectorTransferOpTransforms.cpp @@ -206,6 +206,10 @@ void TransferOptimization::storeToLoadForwarding(vector::TransferReadOp read) { users.append(subView->getUsers().begin(), subView->getUsers().end()); continue; } + if (auto collapsed = dyn_cast<memref::CollapseShapeOp>(user)) { + users.append(collapsed->getUsers().begin(), collapsed->getUsers().end()); + continue; + } if (isMemoryEffectFree(user) || isa<vector::TransferReadOp>(user)) continue; if (auto write = dyn_cast<vector::TransferWriteOp>(user)) { |
