<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/77222>77222</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [AArch64] Suboptimal expansion of `__builtin_bswap16`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            missed-optimization
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Kmeakin
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/jcxb4n97o

```c
uint16_t rev16(uint16_t x) { return __builtin_bswap16(x); }
```

expands to
```asm
rev16:
        rev     w8, w0
        lsr     w0, w8, #16
        ret
```

instead of
```asm
rev16:
 rev16   w0, w0
        ret
```

`__builtin_bswap32` and `__builtin_bswap64` don't have the same issue
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUU8Fu2zoQ_JrVhYhBLWVSPujgxNDlHd8HGKS4sZhQpCFSTpqvL0S7TesWRSsIIrgzmNldjHRK7hSIOtg-wvZQ6SWPce7-m0i_ulCZaL90Y87nBGIP2AP2p2hN9HkT5xNg_wHYvwzvpgk7FYEfgO9vX8mv73C9Ly7kWh4zm-lSS8D2e-EdcMdAPbKZ8jIHdjyaxfnswtGkN30u5JUD4pGBOtzJ_-hJ72cdbGI53pF0mq6Vq7m48dntmelSzrcW8Im98Z9Rn-YrygtaOICilvci-Q-tuZAyacvi81-2Vq6frvxfzEDyuyUKBMmZDpb9islmxWwMgCqzUV-I5ZFY0hMxl9JCle2E3YmdrqirFW8k33HZVGMnGmEscfNc12Kw21YjISplhTa4JT1UrkOODa-54lLUvNm0OzJIpLhqDbaqhYbTpJ3feH-Z1khVxbFTChErrw35VKKJaPTwSsGC2O_38zDKBhABnwBxcimRfYjn7Cb3obNbR8E1zXO36j6Y5ZSg4d6lnD6dssu-5P6b3vbA_l9MkdGelTAlFwOLz7_ZWi1B8mqZ_f3v4fK4mM0QJ8B-9bodD-c5vtCQAfsyYgLsy5RfAwAA__-15gD1">