From 84b90ad1c6c3e82913e0a4fb98828192d5f0ef92 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Sun, 25 Jan 2015 03:16:29 -0600 Subject: [PATCH] [AArch64] Fix cmp --- .../Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp index 472162332c..be74f76f90 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp @@ -377,13 +377,18 @@ void JitArm64::cmp(UGeckoInstruction inst) } ARM64Reg WA = gpr.GetReg(); + ARM64Reg WB = gpr.GetReg(); + ARM64Reg XA = EncodeRegTo64(WA); + ARM64Reg XB = EncodeRegTo64(WB); ARM64Reg RA = gpr.R(a); ARM64Reg RB = gpr.R(b); + SXTW(XA, RA); + SXTW(XB, RB); - SUB(WA, RA, RB); - ComputeRC(WA, crf); + SUB(XA, XA, XB); + STR(INDEX_UNSIGNED, XA, X29, PPCSTATE_OFF(cr_val[0]) + (sizeof(PowerPC::ppcState.cr_val[0]) * crf)); - gpr.Unlock(WA); + gpr.Unlock(WA, WB); } void JitArm64::cmpl(UGeckoInstruction inst)