Small improvement to cmpli/cmpi in ARMJit.
This commit is contained in:
parent
f1d727cf13
commit
9ff704f202
|
@ -193,11 +193,18 @@ void JitArm::cmpi(UGeckoInstruction inst)
|
||||||
JITDISABLE(Integer)
|
JITDISABLE(Integer)
|
||||||
|
|
||||||
ARMReg RA = gpr.R(inst.RA);
|
ARMReg RA = gpr.R(inst.RA);
|
||||||
ARMReg rA = gpr.GetReg();
|
|
||||||
int crf = inst.CRFD;
|
int crf = inst.CRFD;
|
||||||
MOVI2R(rA, inst.SIMM_16);
|
if (inst.SIMM_16 >= 0 && inst.SIMM_16 < 256)
|
||||||
CMP(RA, rA);
|
{
|
||||||
gpr.Unlock(rA);
|
CMP(RA, inst.SIMM_16);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ARMReg rA = gpr.GetReg();
|
||||||
|
MOVI2R(rA, inst.SIMM_16);
|
||||||
|
CMP(RA, rA);
|
||||||
|
gpr.Unlock(rA);
|
||||||
|
}
|
||||||
ComputeRC(crf);
|
ComputeRC(crf);
|
||||||
}
|
}
|
||||||
void JitArm::cmpli(UGeckoInstruction inst)
|
void JitArm::cmpli(UGeckoInstruction inst)
|
||||||
|
@ -208,9 +215,16 @@ void JitArm::cmpli(UGeckoInstruction inst)
|
||||||
ARMReg RA = gpr.R(inst.RA);
|
ARMReg RA = gpr.R(inst.RA);
|
||||||
ARMReg rA = gpr.GetReg();
|
ARMReg rA = gpr.GetReg();
|
||||||
int crf = inst.CRFD;
|
int crf = inst.CRFD;
|
||||||
MOVI2R(rA, (u32)inst.UIMM);
|
u32 uimm = (u32)inst.UIMM;
|
||||||
CMP(RA, rA);
|
if (uimm < 256)
|
||||||
|
{
|
||||||
|
CMP(RA, uimm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MOVI2R(rA, (u32)inst.UIMM);
|
||||||
|
CMP(RA, rA);
|
||||||
|
}
|
||||||
// Unsigned GenerateRC()
|
// Unsigned GenerateRC()
|
||||||
|
|
||||||
MOV(rA, 0x2); // Result == 0
|
MOV(rA, 0x2); // Result == 0
|
||||||
|
|
Loading…
Reference in New Issue