OSDN Git Service

ARM64: Move BIC after branch in StringCompareTo intrinsic.
authorScott Wakeling <scott.wakeling@linaro.org>
Fri, 20 May 2016 09:41:38 +0000 (10:41 +0100)
committerScott Wakeling <scott.wakeling@linaro.org>
Fri, 20 May 2016 09:41:38 +0000 (10:41 +0100)
Change-Id: Ic785dd93daab73b4b37917097c8c8ea2de797ed2

compiler/optimizing/intrinsics_arm64.cc

index 6cd1726..07d9d87 100644 (file)
@@ -1270,12 +1270,12 @@ void IntrinsicCodeGeneratorARM64::VisitStringCompareTo(HInvoke* invoke) {
   __ Eor(temp1, temp0, temp4);
   __ Rbit(temp1, temp1);
   __ Clz(temp1, temp1);
-  __ Bic(temp1, temp1, 0xf);
   // If the number of 16-bit chars remaining <= the index where the difference occurs (0-3), then
   // the difference occurs outside the remaining string data, so just return length diff (out).
   __ Cmp(temp2, Operand(temp1, LSR, 4));
   __ B(le, &end);
   // Extract the characters and calculate the difference.
+  __ Bic(temp1, temp1, 0xf);
   __ Lsr(temp0, temp0, temp1);
   __ Lsr(temp4, temp4, temp1);
   __ And(temp4, temp4, 0xffff);