diff options
author | Mubashar Ahmad <mubashar.ahmad@arm.com> | 2024-05-23 09:59:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-23 09:59:47 +0100 |
commit | bf4d99e16789dd711eb61b36ce92b8519f450dd5 (patch) | |
tree | 19ed85c59bad22001634b2f0e2d2d95452d82735 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | ae3f68066c8f282145435880107c1d3dc26ec3b8 (diff) | |
download | llvm-bf4d99e16789dd711eb61b36ce92b8519f450dd5.zip llvm-bf4d99e16789dd711eb61b36ce92b8519f450dd5.tar.gz llvm-bf4d99e16789dd711eb61b36ce92b8519f450dd5.tar.bz2 |
[mlir][vector] Add deinterleave operation to vector dialect (#92409)
The deinterleave operation constructs two vectors from a single input
vector. The first result vector contains the elements from even indexes
of the input, and the second contains elements from odd indexes. This is
the inverse of a `vector.interleave` operation.
Each output's trailing dimension is half of the size of the input
vector's trailing dimension. This operation requires the input vector
to have a rank > 0 and an even number of elements in its trailing
dimension.
The operation supports scalable vectors.
Example:
```mlir
%0, %1 = vector.deinterleave %a
: vector<8xi8> -> vector<4xi8>
%2, %3 = vector.deinterleave %b
: vector<2x8xi8> -> vector<2x4xi8>
%4, %5 = vector.deinterleave %c
: vector<2x8x4xi8> -> vector<2x8x2xi8>
%6, %7 = vector.deinterleave %d
: vector<[8]xf32> -> vector<[4]xf32>
%8, %9 = vector.deinterleave %e
: vector<2x[6]xf64> -> vector<2x[3]xf64>
%10, %11 = vector.deinterleave %f
: vector<2x4x[6]xf64> -> vector<2x4x[3]xf64>
```
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions