diff options
author | 2025-03-17 05:02:39 +1100 | |
---|---|---|
committer | 2025-03-17 05:02:39 +1100 | |
commit | d7d7a4c46c14ae4aa06a289c49f351aeb234d6dc (patch) | |
tree | 7651694873cc537cb42afc8a616d2b3b10245953 /scripts/minimaws/lib/assets/digest.js | |
parent | 8d7167a901eeb050bac5d82554959f269e507c49 (diff) |
cpu/drcbearm64.cpp: Optimised conditional operations using carry flag. (#13484)
Track the state of the native carry flag to avoid unnecessarily
manipulating the native NZCV register. If the native carry flag does
not correspond to the UML carry flag, test the bit in the flags register
for the C and NC conditions.
Use condition select instructions to implement conditional forms of MOV
and FMOV when advantageous.
Fixed EXIT with C/NC/A/BE condition not working properly if it doesn't
immediately follow a CMP or SUB. Extended reach of conditional EXIT to
+/-128MiB (was +/-1MiB for conditions other than U/NU).
Moved code to set up skipping conditional instructions to a common
function.
Use TBZ/TBNZ for short backward jumps with U/NU/C/NC conditions to save
one instruction and a temporary register.
Simplified/optimised ADD[C]/SUB[B] code generation - avoids an
unnecessary register copy when one operand is in memory and the other is
a small immediate value. Also fixed another unnecessary register copy
for SUB[B] when an operand is kept in a host register.
Slightly optimised generated code for AND immediate.
Diffstat (limited to 'scripts/minimaws/lib/assets/digest.js')
0 files changed, 0 insertions, 0 deletions