mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-08-02 22:29:21 +00:00
JitArm64: optimize addzex
So on the general case, we don't need a tempory register.
This commit is contained in:
parent
f7fa22a053
commit
4ef2962055
1 changed files with 15 additions and 5 deletions
|
@ -680,11 +680,21 @@ void JitArm64::addzex(UGeckoInstruction inst)
|
||||||
|
|
||||||
int a = inst.RA, d = inst.RD;
|
int a = inst.RA, d = inst.RD;
|
||||||
|
|
||||||
gpr.BindToRegister(d, d == a);
|
if (d == a)
|
||||||
ARM64Reg WA = gpr.GetReg();
|
{
|
||||||
LDRB(INDEX_UNSIGNED, WA, X29, PPCSTATE_OFF(xer_ca));
|
gpr.BindToRegister(d, true);
|
||||||
ADDS(gpr.R(d), gpr.R(a), WA);
|
ARM64Reg WA = gpr.GetReg();
|
||||||
gpr.Unlock(WA);
|
LDRB(INDEX_UNSIGNED, WA, X29, PPCSTATE_OFF(xer_ca));
|
||||||
|
ADDS(gpr.R(d), gpr.R(a), WA);
|
||||||
|
gpr.Unlock(WA);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gpr.BindToRegister(d, false);
|
||||||
|
LDRB(INDEX_UNSIGNED, gpr.R(d), X29, PPCSTATE_OFF(xer_ca));
|
||||||
|
ADDS(gpr.R(d), gpr.R(a), gpr.R(d));
|
||||||
|
}
|
||||||
|
|
||||||
ComputeCarry();
|
ComputeCarry();
|
||||||
if (inst.Rc)
|
if (inst.Rc)
|
||||||
ComputeRC(gpr.R(d), 0);
|
ComputeRC(gpr.R(d), 0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue