| Issue |
107825
|
| Summary |
[AArch64] Decompos gep of complex type struct for better codegen
|
| Labels |
new issue
|
| Assignees |
|
| Reporter |
vfdff
|
* test: https://godbolt.org/z/rjafGexos
```
float s_ref_real[eulers_per_block][block_sz];
std::complex<float> mdlComplex[SIZE];
int indexarr[block_sz];
void foo(int sz) {
for (int i = 0; i < eulers_per_block; i ++) {
#pragma clang loop vectorize(enable)
#pragma GCC ivdep
for (int tid=0; tid < sz; tid++){
int index = indexarr[tid];
s_ref_real[i][tid] = mdlComplex[index].real();
}
}
}
```
* This is a subproblems of [PR107345](https://github.com/llvm/llvm-project/issues/107345), here we only address the **real** part of complex type. Now llvm gets unoptimized kernel loop because DAGTypeLegalizer::SplitVectorOperand split the llvm.masked.gather.nxv4f32.nxv4p0 because there is invalid type **<vscale x 4 x i64>**.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs