Reviewers: Erik Corry,
Description:
Fix CountLeadingZeros on non-ARMv5 hardware.
[email protected]
Please review this at http://codereview.chromium.org/8361030/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/arm/macro-assembler-arm.cc
Index: src/arm/macro-assembler-arm.cc
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
index
0ae8c26a74648a9b2276eae4bafe80f049c6bc39..cf4258c83a2025463b89a79df36c3a0cc4aeda05
100644
--- a/src/arm/macro-assembler-arm.cc
+++ b/src/arm/macro-assembler-arm.cc
@@ -3151,8 +3151,10 @@ void MacroAssembler::CountLeadingZeros(Register
zeros, // Answer.
#ifdef CAN_USE_ARMV5_INSTRUCTIONS
clz(zeros, source); // This instruction is only supported after ARM5.
#else
- mov(zeros, Operand(0, RelocInfo::NONE));
+ // Order of the next two lines is important: zeros register
+ // can be the same as source register.
Move(scratch, source);
+ mov(zeros, Operand(0, RelocInfo::NONE));
// Top 16.
tst(scratch, Operand(0xffff0000));
add(zeros, zeros, Operand(16), LeaveCC, eq);
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev