summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorSintendo <bram.speeckaert@gmail.com>2021-01-25 23:25:38 +0100
committerSintendo <bram.speeckaert@gmail.com>2021-01-28 23:16:31 +0100
commitc3775588dfd65ae09e1a174fdba35d7179ccfc59 (patch)
tree05b817e5ad13b16c7c2fcbde7eba9d93cab3c4c5 /Source
parentc9011e9d2c1a8bc8a1121d220e7a0d0b33c71e15 (diff)
Jit64: boolX - Special case xor with 0xFFFFFFFF
Ever so slightly shorter. When the condition register needs updating, we still prefer xor over not+test. Before: 45 8B F5 mov r14d,r13d 41 83 F6 FF xor r14d,0FFFFFFFFh After: 45 8B F5 mov r14d,r13d 41 F7 D6 not r14d
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
index b4cb6cee39..2997748790 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit_Integer.cpp
@@ -693,6 +693,12 @@ void Jit64::boolX(UGeckoInstruction inst)
MOV(32, Ra, Rj);
needs_test = true;
}
+ else if (imm == 0xFFFFFFFF && !inst.Rc)
+ {
+ if (a != j)
+ MOV(32, Ra, Rj);
+ NOT(32, Ra);
+ }
else
{
if (a != j)