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

Reply via email to