JitArm64: Implement subfzex.

This commit is contained in:
degasus 2016-10-27 01:08:16 +02:00
parent f1a67bb1a2
commit 293553f317
3 changed files with 25 additions and 2 deletions

View File

@ -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);

View File

@ -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

View File

@ -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