diff options
author | Min-Yih Hsu <min.hsu@sifive.com> | 2025-03-20 09:06:24 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-03-20 09:06:24 -0700 |
commit | 03ceb26b55b855c64385c52020846eaa86dd278b (patch) | |
tree | fa4c00ffed65bad036e4f87f8bf829388619e78a /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | b231f6f86237fc1a15377b4aad6cf9be4808d727 (diff) | |
download | llvm-03ceb26b55b855c64385c52020846eaa86dd278b.zip llvm-03ceb26b55b855c64385c52020846eaa86dd278b.tar.gz llvm-03ceb26b55b855c64385c52020846eaa86dd278b.tar.bz2 |
[RISCV] Fix incorrect slide offset when using vnsrl to de-interleave (#132123)
Given this shuffle:
```
shufflevector <8 x i8> %0, <8 x i8> %1, <8 x i32> <i32 0, i32 4, i32 8, i32 12, i32 undef, i32 undef, i32 undef, i32 undef>
```
#127272 lowers it with a bunch of vnsrl. If we describe the result in
terms of the shuffle mask, we expect:
```
<0, 4, 8, 12, u, u, u, u>
```
but we actually got:
```
<0, 4, u, u, 8, 12, u, u>
```
for factor larger than 2. This is caused by `CONCAT_VECTORS` on
incorrect (sub) vector types. This patch fixes the said issue by
building an aggregate vector with the correct sub vector types.
Fix #132071
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions