https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122592
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The trunk produces:
```
and w3, w1, 65535
rev16 w1, w1
cmp w0, 0
and w1, w1, 65535
csel w3, w3, w1, eq
add w0, w3, w2, uxth
ret
```
Which is slightly better.
