diff options
author | Andrzej WarzyĆski <andrzej.warzynski@arm.com> | 2025-02-06 09:18:13 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-06 09:18:13 +0000 |
commit | 80fd902573f860001af08d75f15d8f92005bae90 (patch) | |
tree | fd0bca016b387a6ab6b0edac500a054b12d8ca8d /llvm/unittests/Support/ErrorTest.cpp | |
parent | d2b45ce100d641a8f1690e30843bb9c5ea71ab86 (diff) | |
download | llvm-80fd902573f860001af08d75f15d8f92005bae90.zip llvm-80fd902573f860001af08d75f15d8f92005bae90.tar.gz llvm-80fd902573f860001af08d75f15d8f92005bae90.tar.bz2 |
[mlir][tensor] Introduce `TensorRelayoutOpInterface` (#125823)
The newly introduced `TensorRelayoutOpInterface` is created specifically
for `tensor.pack` + `tensor.unpack`. Although the interface is
currently empty, it enables us to refactor the logic in
`FoldTensorCastProducerOp` within the Tensor dialect as follows:
```cpp
// OLD
// Reject tensor::PackOp - there's dedicated pattern for that instead.
if (!foldTensorCastPrecondition(op) ||
isa<tensor::PackOp, tensor::UnPackOp>(*op))
return failure();
```
is replaced with:
```cpp
// NEW
// Reject tensor::PackOp - there's dedicated pattern for that instead.
if (!foldTensorCastPrecondition(op) ||
isa<tensor::RelayoutOpInterface>(*op))
return failure();
```
This will be crucial once `tensor.pack` + `tensor.pack` are replaced
with `linalg.pack` + `linalg.unpack` (i.e. moved to Linalg):
* https://github.com/llvm/llvm-project/pull/123902,
* https://discourse.llvm.org/t/rfc-move-tensor-pack-and-tensor-unpack-into-linalg/.
Note that the interface itself will later be moved to the Linalg
dialect. This decoupling ensures that the Tensor dialect does not
require an understanding of Linalg ops, thus keeping the dependency
lightweight.
This PR is effectively a preparatory step for moving PackOp and UnpackOp
to Linalg. Once that's completed, most CMake changes from this PR will
be effectively reverted.
Diffstat (limited to 'llvm/unittests/Support/ErrorTest.cpp')
0 files changed, 0 insertions, 0 deletions