Revision: 6176
Author: [email protected]
Date: Wed Jan 5 04:06:32 2011
Log: Fix comparison bug on ARM.
Retrieves the result of VFP comparison from the VFP status register.
BUG=none
TEST=none
Patch by Martyn Capewell from ARM Ltd.
Review URL: http://codereview.chromium.org/6020014
http://code.google.com/p/v8/source/detail?r=6176
Modified:
/branches/bleeding_edge/src/arm/lithium-codegen-arm.cc
=======================================
--- /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc Wed Jan 5
04:01:53 2011
+++ /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc Wed Jan 5
04:06:32 2011
@@ -1077,6 +1077,7 @@
} else if (r.IsDouble()) {
DoubleRegister reg = ToDoubleRegister(instr->input());
__ vcmp(reg, 0.0);
+ __ vmrs(pc); // Move vector status bits to normal status bits.
EmitBranch(true_block, false_block, ne);
} else {
ASSERT(r.IsTagged());
@@ -1114,6 +1115,7 @@
__ sub(ip, reg, Operand(kHeapObjectTag));
__ vldr(dbl_scratch, ip, HeapNumber::kValueOffset);
__ vcmp(dbl_scratch, 0.0);
+ __ vmrs(pc); // Move vector status bits to normal status bits.
__ b(eq, false_label);
__ b(true_label);
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev