<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">