From 086d97516d7cfd985f958ef8d997ed9fcb5b4f2e Mon Sep 17 00:00:00 2001 From: The Dax Date: Sun, 4 May 2014 22:37:41 -0400 Subject: [PATCH] Fix a couple ARM VFPU flags. Unknown's explanation: LO means Lower (unsigned), but for floats, it means "Less than". LT means Lower (signed), but for floats it means "Less than OR unordered". ARM docs at http://infocenter.arm.com/help/topic/com.arm.doc.dui0068b/Chdhcfbc.html explain the following: LE means Signed less than or equal, and for floats it means "Less than or equal, or unordered". LS means Unsigned lower or same, but for floats, it means "Less than or equal" --- Core/MIPS/ARM/ArmCompVFPU.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/MIPS/ARM/ArmCompVFPU.cpp b/Core/MIPS/ARM/ArmCompVFPU.cpp index 6393df08d9..eedc15c7ab 100644 --- a/Core/MIPS/ARM/ArmCompVFPU.cpp +++ b/Core/MIPS/ARM/ArmCompVFPU.cpp @@ -1611,14 +1611,14 @@ namespace MIPSComp fpr.MapInInV(sregs[i], tregs[i]); VCMP(fpr.V(sregs[i]), fpr.V(tregs[i])); VMRS_APSR(); - flag = CC_LT; + flag = CC_LO; break; case VC_LE: // c = s[i] <= t[i]; fpr.MapInInV(sregs[i], tregs[i]); VCMP(fpr.V(sregs[i]), fpr.V(tregs[i])); VMRS_APSR(); - flag = CC_LE; + flag = CC_LS; break; case VC_NE: // c = s[i] != t[i]