From e5ed20bd8c8a287f816dc4a5e80a68f3c0b648cd Mon Sep 17 00:00:00 2001 From: Scott Wakeling Date: Fri, 20 May 2016 10:41:38 +0100 Subject: [PATCH] ARM64: Move BIC after branch in StringCompareTo intrinsic. Change-Id: Ic785dd93daab73b4b37917097c8c8ea2de797ed2 --- compiler/optimizing/intrinsics_arm64.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/optimizing/intrinsics_arm64.cc b/compiler/optimizing/intrinsics_arm64.cc index 6cd1726eb..07d9d8703 100644 --- a/compiler/optimizing/intrinsics_arm64.cc +++ b/compiler/optimizing/intrinsics_arm64.cc @@ -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); -- 2.11.0