JitArm64_Integer: subfzex - Optimize a == -1 with in-host carry

Before:
0x12800019   mov    w25, #-0x1                ; =-1
0x7a1903fa   ngcs   w26, w25
0x1a9f37f8   cset   w24, hs
0x390bd3b8   strb   w24, [x29, #0x2f4]

After:
0x1a9f37fa   cset   w26, hs
This commit is contained in:
Sintendo
2026-03-27 01:00:14 +01:00
parent 9be878cd28
commit 21c2605298
@@ -1335,6 +1335,13 @@ void JitArm64::subfzex(UGeckoInstruction inst)
CSETM(gpr.R(d), CC_CC);
// Carry remains unchanged.
}
else if (gpr.IsImm(a, 0xFFFFFFFF) && js.carryFlag == CarryFlag::InHostCarry)
{
gpr.BindToRegister(d, false);
// RD = ~(-1) + carry = 0 + carry = carry ? 1 : 0
CSET(gpr.R(d), CC_CS);
ComputeCarry(false);
}
else
{
gpr.BindToRegister(d, d == a);