Issue 127237
Summary [AArch64] LLVM 20 regression when generating NEON instructions for ARMv9-A with SVE disabled
Labels new issue
Assignees
Reporter ptosi
    Hi,

we have noticed a regression between Clang v19.0.1 and Clang v20.0.0 when compiling code targeting NEON for ARMv9-A with SVE disabled.

The following:
```
#include <arm_neon.h>

uint16x8_t vec_fma(uint16x8_t a, uint16x8_t b, uint16_t c)
{
        return vmlaq_n_u16(a, b, c);
}
```
compiles with
```
clang -target aarch64-linux-gnu -march=armv9.2-a -O2 -Xclang -target-feature -Xclang -sve -c "neon.c"
```
to
```
0000000000000000 <vec_fma>:
   0:   4e020c02        dup     v2.8h, w0
   4:   4e619440 mla     v0.8h, v2.8h, v1.8h
   8:   d65f03c0        ret
```
with (Android build)
```
Android (12833971, +pgo, +bolt, +lto, +mlgo, based on r536225) clang version 19.0.1 (https://android.googlesource.com/toolchain/llvm-project b3a530ec6537146650e42be89f1089e9a3588460)
```
However, the same invocation fails:
```
neon.c:4:9: error: always_inline function 'vmlaq_n_u16' requires target feature 'sve', but would be inlined into function 'vec_fma' that is compiled without support for 'sve'
    4 |         return vmlaq_n_u16(a, b, c);
      |                ^
```
with
```
Android (13016439, +pgo, +bolt, +lto, +mlgo, based on r547379) clang version 20.0.0 (https://android.googlesource.com/toolchain/llvm-project b718bcaf8c198c82f3021447d943401e3ab5bd54)
```
instead of generating the NEON instructions, as expected.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to