summaryrefslogtreecommitdiff
path: root/Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
diff options
context:
space:
mode:
authorSintendo <3380580+Sintendo@users.noreply.github.com>2024-11-02 23:15:22 +0100
committerSintendo <3380580+Sintendo@users.noreply.github.com>2024-11-02 23:15:22 +0100
commita307d9d9b8ba1612839c3507317440f00548d849 (patch)
treec5cd70fd4d1900f0022ded23d04c91ca8b66f439 /Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp
parent54b37f6bc4feee39c1383a449da229304f6a8f80 (diff)
JitArm64_LoadStore: Optimize zero stores in stX
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]
Diffstat (limited to 'Source/Core/InputCommon/ControllerInterface/MappingCommon.cpp')
0 files changed, 0 insertions, 0 deletions