Issue 137084
Summary AArch64: Missed post-increment opportunity
Labels backend:AArch64
Assignees
Reporter MatzeB
    Repro:
```
#include <arm_neon.h>
void partialWrite(uint8_t* p, uint16x8_t vec) {
 vst1q_lane_u16(reinterpret_cast<uint16_t*>(p), vec, 0);
    vst1q_lane_u8(p + 2, vreinterpretq_u8_u16(vec), 2);
}
```
Currently produces:
```
$ clang++ -target aarch64-redhat-linux-gnu -march=armv9-a+sve2+fp16 repro.cpp
...
       add     x8, x0, #2
        str     h0, [x0]
 st1     { v0.b }[2], [x8]
        ret
```
misses the opportunity to use post-increment on the first str Could be the following (as produced by GCC):
```
       str     h0, [x0], 2
       st1     {v0.b}[2], [x0]
 ret
```

(this mirrors meta T222168293 )
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to