aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorMubashar Ahmad <mubashar.ahmad@arm.com>2024-05-23 09:59:47 +0100
committerGitHub <noreply@github.com>2024-05-23 09:59:47 +0100
commitbf4d99e16789dd711eb61b36ce92b8519f450dd5 (patch)
tree19ed85c59bad22001634b2f0e2d2d95452d82735 /clang/lib/CodeGen/CodeGenModule.cpp
parentae3f68066c8f282145435880107c1d3dc26ec3b8 (diff)
downloadllvm-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