Merge pull request #14516 from Sintendo/jitarm64-subfzex

JitArm64: Minor subfzex optimizations
This commit is contained in:
JosJuice
2026-07-05 17:29:57 +02:00
committed by GitHub
@@ -1326,6 +1326,22 @@ void JitArm64::subfzex(UGeckoInstruction inst)
gpr.SetImmediate(d, imm + carry);
ComputeCarry(Interpreter::Helper_Carry(imm, carry));
}
else if (gpr.IsImm(a, 0) && js.carryFlag == CarryFlag::InHostCarry)
{
gpr.BindToRegister(d, false);
// RD = ~0 + carry = -1 + carry = carry ? 0 : -1
// Note that CSETM sets the destination to -1 if the condition is true,
// and 0 otherwise. Hence, the condition must be carry clear.
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);