JitArm64: Implement subfzex.
This commit is contained in:
parent
f1a67bb1a2
commit
293553f317
|
@ -89,6 +89,7 @@ public:
|
|||
void srawx(UGeckoInstruction inst);
|
||||
void rlwimix(UGeckoInstruction inst);
|
||||
void subfex(UGeckoInstruction inst);
|
||||
void subfzex(UGeckoInstruction inst);
|
||||
void subfcx(UGeckoInstruction inst);
|
||||
void subfic(UGeckoInstruction inst);
|
||||
void addex(UGeckoInstruction inst);
|
||||
|
|
|
@ -869,6 +869,28 @@ void JitArm64::subfcx(UGeckoInstruction inst)
|
|||
}
|
||||
}
|
||||
|
||||
void JitArm64::subfzex(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START
|
||||
JITDISABLE(bJITIntegerOff);
|
||||
FALLBACK_IF(inst.OE);
|
||||
|
||||
int a = inst.RA, d = inst.RD;
|
||||
|
||||
gpr.BindToRegister(d, d == a);
|
||||
|
||||
ARM64Reg WA = gpr.GetReg();
|
||||
LDRB(INDEX_UNSIGNED, WA, PPC_REG, PPCSTATE_OFF(xer_ca));
|
||||
MVN(gpr.R(d), gpr.R(a));
|
||||
ADDS(gpr.R(d), gpr.R(d), WA);
|
||||
gpr.Unlock(WA);
|
||||
|
||||
ComputeCarry();
|
||||
|
||||
if (inst.Rc)
|
||||
ComputeRC(gpr.R(d));
|
||||
}
|
||||
|
||||
void JitArm64::subfic(UGeckoInstruction inst)
|
||||
{
|
||||
INSTRUCTION_START
|
||||
|
|
|
@ -206,8 +206,8 @@ static GekkoOPTemplate table31[] = {
|
|||
{648, &JitArm64::subfex}, // subfeox
|
||||
{232, &JitArm64::FallBackToInterpreter}, // subfmex
|
||||
{744, &JitArm64::FallBackToInterpreter}, // subfmeox
|
||||
{200, &JitArm64::FallBackToInterpreter}, // subfzex
|
||||
{712, &JitArm64::FallBackToInterpreter}, // subfzeox
|
||||
{200, &JitArm64::subfzex}, // subfzex
|
||||
{712, &JitArm64::subfzex}, // subfzeox
|
||||
|
||||
{28, &JitArm64::boolX}, // andx
|
||||
{60, &JitArm64::boolX}, // andcx
|
||||
|
|
Loading…
Reference in New Issue