diff options
author | Mubashar Ahmad <mubashar.ahmad@arm.com> | 2024-06-07 10:57:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-07 10:57:00 +0100 |
commit | b87a80d4ebca9e1c065f0d2762e500078c4badca (patch) | |
tree | dac7dc6e4d3eeef5e705e11ce37c73019e327f0b /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 8719cb88e3443bf717391b5020beab61238a372c (diff) | |
download | llvm-b87a80d4ebca9e1c065f0d2762e500078c4badca.zip llvm-b87a80d4ebca9e1c065f0d2762e500078c4badca.tar.gz llvm-b87a80d4ebca9e1c065f0d2762e500078c4badca.tar.bz2 |
[mlir][vector] Add n-d deinterleave lowering (#94237)
This patch implements the lowering for vector
deinterleave for vector of n-dimensions. Process
involves unrolling the n-d vector to a series
of one-dimensional vectors. The deinterleave
operation is then used on these vectors.
From:
```
%0, %1 = vector.deinterleave %a : vector<2x8xi8> -> vector<2x4xi8>
```
To:
```
%cst = arith.constant dense<0> : vector<2x4xi32>
%0 = vector.extract %arg0[0] : vector<8xi32> from vector<2x8xi32>
%res1, %res2 = vector.deinterleave %0 : vector<8xi32> -> vector<4xi32>
%1 = vector.insert %res1, %cst [0] : vector<4xi32> into vector<2x4xi32>
%2 = vector.insert %res2, %cst [0] : vector<4xi32> into vector<2x4xi32>
%3 = vector.extract %arg0[1] : vector<8xi32> from vector<2x8xi32>
%res1_0, %res2_1 = vector.deinterleave %3 : vector<8xi32> -> vector<4xi32>
%4 = vector.insert %res1_0, %1 [1] : vector<4xi32> into vector<2x4xi32>
%5 = vector.insert %res2_1, %2 [1] : vector<4xi32> into vector<2x4xi32>
...etc.
```
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions