<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJylVMGO2yAU_Bp8QYlsMI598CGbqHuocumlxwowtlkREwF2sv36Puxkm6y0q1WLiIHHeN4wPEfY5rXuQzh5RLeIfIPe2UZYE9bWdbD6DT_fHy7F9-f8gNI9SrfXZ5EuXS7ryeoGexV-9dy0iJSIVBhtnpZNDA0RSFBO1vCgjcK-ty7MsQqnF5LODSO6x6sM0et7aLN_l-1ews7wocMnZ5tRKo-lbRQOPQ9YD42edDNyY16jJg9hhY09K4ezAgsdIxYDXXppW5C5A3XlMqc76IACXTEdfX9c7o9L5O2sNwi-tqOd5tFliERiShj7AJFeEZQylueUPMKsc3dEb3QFA62PSB9cf5eSPQEz2z9ixGUZjfvE0p-9cop7_LzbgXFGSXBq9GoxELDHaYAnGAwZRxm0HaKRg-p4mPcj3521S4ux1rp4E0HDjUWuB-f-xVz6qXWgc4GRK-wjw8jNMAqG3XZRnsZEvf6ig0lT06aiFU_4GKCu61YZfXmxg_LJ6Mz7D0yHfhRraY-wMGa6DSuo5BdwHJba-1F5mDBabWjS1yTb5FWRc1YUQlYsK7MNazPFhSQlI7JMDBfK-BpOgggZ1BnPFDCHYyX_r0DXJCWxZ1megZvrvCgVE6RgbSOJkBIsU0euzTryxP-OxNUzpRg7D5tG--D_bnLvdTcoNQsGhUEHo-rtjwMleLABai4WSrzFWDhnp-fCWWX43KsBnyy8LoxKZpX1LPEPfAZTcw>53973</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ARM32 not using mvn for writing -1 when possible
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
felixjones
</td>
</tr>
</table>
<pre>
https://godbolt.org/z/shMx6KG4M
```c
void set_half() {
*(volatile short*) 0x2000000 = -1;
}
```
Clang produces code that individually sets the lower 16 bits to `0xff | (0xff << 16)`:
```asm
set_half:
mov r1, #255
mov r0, #33554432
orr r1, r1, #65280
strh r1, [r0]
bx lr
```
Whereas GCC selects uses the `mvn` instruction to negate `0` to `0xffffffff` for setting the half:
```asm
set_half:
mov r3, #33554432
mvn r2, #0
strh r2, [r3] @ movhi
bx lr
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVE2PmzAQ_TXmYiUyNhA4cMgm6h6qXHrpsbKNAa8cHNmGZPvrO4Zkm0TaVVXL-GPmMfPmGSNs8173IZw8YltEv0HvbCOsCWvrOtj9hsf3h0vx_TU7ILJHZHsdC7J0uewnqxvsVfjVc9MiWiJaYbR5WZwYGqKQoJys4UEbhX1vXZhtFSYXSuaGEdvjVYrY9T202T9lu6ewM3zo8MnZZpTKY2kbhUPPA9ZDoyfdjNyY98jJg1lhY8_K4bTAQkeLxRCOXNoWaO6AXbms2Q46oIBXTMeey-X-uFg-ar1B8LUd7TTPLkU0BmY0zz9BkCuCsTzPMkYfYda5u0Af4YocuD4ifXD9Xcr8BSLn-0eMuCyzcV9I-rNXTnGPX3c7EM4oCUqNXi0CAvY4DTCCwJBxlEHbIQo5qI6H2R_j3Um7tGhrrYsnETScWIz1oNz_iMu-lA54LjB6hX0mGL0JxkCwmxdlJCbq9T8qmDQ1aypW8SToYFS9_XFgFA82gHax4MgmCnB2ehZgleJzrwZ8st5rYVQyOvN8C3XoR7GW9ggbY6bbtILP_Q2OBbba-1F5WOSs2rCkr0VREVVJIdM0S6nclEWTb0hBwUTaopSJ4UIZX0O5iNJBnfEcAtZQe6JrSmjs89uMrLOiVLmgRd42kgopQRV15NqsI4_4e0hcPVMSY-fBabQP_q-TQ23doNScDuLzMcCVr1tl9OXNDsonc_Z6Zv8HyHU-VA">