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]
```

Reply via email to