diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2013-02-27 15:17:23 -0600 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2013-02-27 15:17:23 -0600 |
| commit | 9ff704f202cf4d31e00476c08d27327f12478b8a (patch) | |
| tree | 4b9e0ef24fad933601fe6bd0c3811b5bd0340eaf /Source/Core | |
| parent | f1d727cf1376efebf434abcaa31c63abd2894dad (diff) | |
Small improvement to cmpli/cmpi in ARMJit.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp index 63c96b21fd..753568c9d3 100644 --- a/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp +++ b/Source/Core/Core/Src/PowerPC/JitArm32/JitArm_Integer.cpp @@ -193,11 +193,18 @@ void JitArm::cmpi(UGeckoInstruction inst) JITDISABLE(Integer) ARMReg RA = gpr.R(inst.RA); - ARMReg rA = gpr.GetReg(); int crf = inst.CRFD; - MOVI2R(rA, inst.SIMM_16); - CMP(RA, rA); - gpr.Unlock(rA); + if (inst.SIMM_16 >= 0 && inst.SIMM_16 < 256) + { + CMP(RA, inst.SIMM_16); + } + else + { + ARMReg rA = gpr.GetReg(); + MOVI2R(rA, inst.SIMM_16); + CMP(RA, rA); + gpr.Unlock(rA); + } ComputeRC(crf); } void JitArm::cmpli(UGeckoInstruction inst) @@ -208,9 +215,16 @@ void JitArm::cmpli(UGeckoInstruction inst) ARMReg RA = gpr.R(inst.RA); ARMReg rA = gpr.GetReg(); int crf = inst.CRFD; - MOVI2R(rA, (u32)inst.UIMM); - CMP(RA, rA); - + u32 uimm = (u32)inst.UIMM; + if (uimm < 256) + { + CMP(RA, uimm); + } + else + { + MOVI2R(rA, (u32)inst.UIMM); + CMP(RA, rA); + } // Unsigned GenerateRC() MOV(rA, 0x2); // Result == 0 |
