diff options
author | Andrzej Warzynski <andrzej.warzynski@arm.com> | 2023-08-07 09:36:43 +0000 |
---|---|---|
committer | Andrzej Warzynski <andrzej.warzynski@arm.com> | 2023-08-10 09:08:30 +0000 |
commit | 12b4951866622cfc38342629808a1a6542624689 (patch) | |
tree | 0abb58f1aba5b0d550b4d311ed0f6fdfb6c7eece /libcxx/src/algorithm.cpp | |
parent | f808788487ab9db7da262a0b43483fb07bf6b50f (diff) | |
download | llvm-12b4951866622cfc38342629808a1a6542624689.zip llvm-12b4951866622cfc38342629808a1a6542624689.tar.gz llvm-12b4951866622cfc38342629808a1a6542624689.tar.bz2 |
[mlir][vector] Add missing support for scalable vectors
This patch adds the missing logic so that the
`TransferReadPermutationLowering` can be used for scalable vectors. To
this end:
* TransferOp custom C++ builder is updated to support scalable
vectors,
* `TransferOpReduceRank` is also updated to support scalable vectors.
This pattern is relevant when lowering `linalg.matmul` via
`vector_multi_reduction` for scalable vectors.
I've also updated relevant code in `TransferOpReduceRank` not to use
`llvm::to_vector` for constructing `SmallVector` from `ArrayRef`. That
hook doesn't work for `ArraryRef<bool>` (*), so for consistency I
switched to an explicit constructor (so that both `newShape` and
`newScalableDim` are constructed in a similar fashion).
(*) IIUC, that's due how implicit narrowing conversions between `bool`
and `*bool` work. Note that these narrowing conversions change when
using initializer lists, see
* https://en.cppreference.com/w/cpp/language/list_initialization.
Depends on D157092
Differential Revision: https://reviews.llvm.org/D157268
Diffstat (limited to 'libcxx/src/algorithm.cpp')
0 files changed, 0 insertions, 0 deletions