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

Reply via email to