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

Reply via email to