mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-09 07:39:26 +01:00
a307d9d9b8
The value being stored must be loaded into a register. In the case of an immediate value, this means it must be materialized. The value is eventually byteswapped before performing the store. This can be simplified for the value 0 for two reasons: - ARM64 has a dedicated zero register, so does not need to be materialized. - Byteswapping zero is still zero, so we can skip this step. We could skip byteswapping for other values by immediately materializing the byteswapped value in a register, but the benefits are not so clear there (if the value needs to be materialized anyway, it is better to do it up front). Before: 0x5280001b mov w27, #0x0 ; =0 0xb9404fba ldr w26, [x29, #0x4c] 0x12881862 mov w2, #-0x40c4 ; =-16580 0x0b020342 add w2, w26, w2 0x5ac00b61 rev w1, w27 0xb8226b81 str w1, [x28, x2] After: 0xb9404fbb ldr w27, [x29, #0x4c] 0x12881862 mov w2, #-0x40c4 ; =-16580 0x0b020362 add w2, w27, w2 0xb8226b9f str wzr, [x28, x2]