https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113859
Bug ID: 113859
Summary: popcount HI can be vectorized for non-SVE
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Target: aarch64
Take:
```
void f(unsigned short * __restrict b, unsigned short * __restrict d)
{
for(int i = 0; i < 1024; i++)
d[i] = __builtin_popcount(b[i]);
}
```
This can be vectorized to:
```
ldr q0, [x9]
cnt v0.16b, v0.16b
uaddlp v0.8h, v0.16b
stp q0, [x9]
```