mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-07-11 01:24:22 +02:00
Merge pull request #14516 from Sintendo/jitarm64-subfzex
JitArm64: Minor subfzex optimizations
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user