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