Issue |
139445
|
Summary |
[AArch64] ASIMD load/store can be used instead of SVE load/store
|
Labels |
new issue
|
Assignees |
|
Reporter |
k-arrows
|
Consider the following testcase:
https://godbolt.org/z/hnx1hE5dY
```cpp
#include <arm_sve.h>
// W = 1
svfloat32_t foo1(float32_t *x) {
svbool_t pg = svwhilelt_b32(0, 1);
return svld1_f32(pg, x);
}
void bar1(float32_t *x, svfloat32_t data) {
svbool_t pg = svwhilelt_b32(0, 1);
svst1_f32(pg, x, data);
}
// W = 2
svfloat32_t foo2(float32_t *x) {
svbool_t pg = svwhilelt_b32(0, 2);
return svld1_f32(pg, x);
}
void bar2(float32_t *x, svfloat32_t data) {
svbool_t pg = svwhilelt_b32(0, 2);
svst1_f32(pg, x, data);
}
// W = 4
svfloat32_t foo4(float32_t *x) {
svbool_t pg = svwhilelt_b32(0, 4);
return svld1_f32(pg, x);
}
void bar4(float32_t *x, svfloat32_t data) {
svbool_t pg = svwhilelt_b32(0, 4);
svst1_f32(pg, x, data);
}
```
GCC avoids the predicates for these functions.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs