ART-tests: Remove DX-dependency from 551-checker-shifter-operand

The merging of shift and add operations into DataProcWithShifterOp
in the test case $opt$validateShiftLongAsserts was dependent on
register-allocation patterns. With D8 sometimes the merge did not
take place because the result of the shift was not overwritten by
the subsequent add.

This CL separates the intermittent method calls and the arithmetic
operations so the environmental uses of the shift result does not
block merging. Also, D8 is enabled.

Test: art/test.py -r -b --target -t 551-checker-shifter-operand
      Tested locally with --host and --gcstress.

Bug: 65168732
Change-Id: I3a8e71f3530211878879faae068acb7c7957ae19
diff --git a/test/551-checker-shifter-operand/build b/test/551-checker-shifter-operand/build
deleted file mode 100644
index d85147f..0000000
--- a/test/551-checker-shifter-operand/build
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# See b/65168732
-export USE_D8=false
-
-./default-build "$@"
diff --git a/test/551-checker-shifter-operand/src/Main.java b/test/551-checker-shifter-operand/src/Main.java
index b3e4a60..8311b60 100644
--- a/test/551-checker-shifter-operand/src/Main.java
+++ b/test/551-checker-shifter-operand/src/Main.java
@@ -896,7 +896,7 @@
   }
 
   // Each test line below should see one merge.
-  /// CHECK-START-ARM: void Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm (after)
+  /// CHECK-START-ARM: long[] Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm (after)
   /// CHECK:                            DataProcWithShifterOp
   /// CHECK:                            DataProcWithShifterOp
   /// CHECK:                            DataProcWithShifterOp
@@ -933,7 +933,7 @@
   /// CHECK-NOT:                        DataProcWithShifterOp
 
   // On ARM shifts by 1 are not merged.
-  /// CHECK-START-ARM: void Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm (after)
+  /// CHECK-START-ARM: long[] Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm (after)
   /// CHECK:                            Shl
   /// CHECK-NOT:                        Shl
   /// CHECK:                            Shr
@@ -941,7 +941,7 @@
   /// CHECK:                            UShr
   /// CHECK-NOT:                        UShr
 
-  /// CHECK-START-ARM64: void Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm64 (after)
+  /// CHECK-START-ARM64: long[] Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm64 (after)
   /// CHECK:                            DataProcWithShifterOp
   /// CHECK:                            DataProcWithShifterOp
   /// CHECK:                            DataProcWithShifterOp
@@ -980,50 +980,98 @@
   /// CHECK:                            DataProcWithShifterOp
   /// CHECK-NOT:                        DataProcWithShifterOp
 
-  /// CHECK-START-ARM64: void Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm64 (after)
+  /// CHECK-START-ARM64: long[] Main.$opt$validateShiftLong(long, long) instruction_simplifier_arm64 (after)
   /// CHECK-NOT:                        Shl
   /// CHECK-NOT:                        Shr
   /// CHECK-NOT:                        UShr
 
-  public static void $opt$validateShiftLong(long a, long b) {
-    assertLongEquals(a + $noinline$LongShl(b, 1),   a + (b <<  1));
-    assertLongEquals(a + $noinline$LongShl(b, 6),   a + (b <<  6));
-    assertLongEquals(a + $noinline$LongShl(b, 7),   a + (b <<  7));
-    assertLongEquals(a + $noinline$LongShl(b, 8),   a + (b <<  8));
-    assertLongEquals(a + $noinline$LongShl(b, 14),  a + (b << 14));
-    assertLongEquals(a + $noinline$LongShl(b, 15),  a + (b << 15));
-    assertLongEquals(a + $noinline$LongShl(b, 16),  a + (b << 16));
-    assertLongEquals(a + $noinline$LongShl(b, 30),  a + (b << 30));
-    assertLongEquals(a + $noinline$LongShl(b, 31),  a + (b << 31));
-    assertLongEquals(a + $noinline$LongShl(b, 32),  a + (b << 32));
-    assertLongEquals(a + $noinline$LongShl(b, 62),  a + (b << 62));
-    assertLongEquals(a + $noinline$LongShl(b, 63),  a + (b << 63));
+  public static long[] $opt$validateShiftLong(long a, long b) {
+    long[] results = new long[36];
 
-    assertLongEquals(a - $noinline$LongShr(b, 1),   a - (b >>  1));
-    assertLongEquals(a - $noinline$LongShr(b, 6),   a - (b >>  6));
-    assertLongEquals(a - $noinline$LongShr(b, 7),   a - (b >>  7));
-    assertLongEquals(a - $noinline$LongShr(b, 8),   a - (b >>  8));
-    assertLongEquals(a - $noinline$LongShr(b, 14),  a - (b >> 14));
-    assertLongEquals(a - $noinline$LongShr(b, 15),  a - (b >> 15));
-    assertLongEquals(a - $noinline$LongShr(b, 16),  a - (b >> 16));
-    assertLongEquals(a - $noinline$LongShr(b, 30),  a - (b >> 30));
-    assertLongEquals(a - $noinline$LongShr(b, 31),  a - (b >> 31));
-    assertLongEquals(a - $noinline$LongShr(b, 32),  a - (b >> 32));
-    assertLongEquals(a - $noinline$LongShr(b, 62),  a - (b >> 62));
-    assertLongEquals(a - $noinline$LongShr(b, 63),  a - (b >> 63));
+    results[0] = a + (b <<  1);
+    results[1] = a + (b <<  6);
+    results[2] = a + (b <<  7);
+    results[3] = a + (b <<  8);
+    results[4] = a + (b << 14);
+    results[5] = a + (b << 15);
+    results[6] = a + (b << 16);
+    results[7] = a + (b << 30);
+    results[8] = a + (b << 31);
+    results[9] = a + (b << 32);
+    results[10] = a + (b << 62);
+    results[11] = a + (b << 63);
 
-    assertLongEquals(a ^ $noinline$LongUshr(b, 1),   a ^ (b >>>  1));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 6),   a ^ (b >>>  6));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 7),   a ^ (b >>>  7));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 8),   a ^ (b >>>  8));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 14),  a ^ (b >>> 14));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 15),  a ^ (b >>> 15));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 16),  a ^ (b >>> 16));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 30),  a ^ (b >>> 30));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 31),  a ^ (b >>> 31));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 32),  a ^ (b >>> 32));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 62),  a ^ (b >>> 62));
-    assertLongEquals(a ^ $noinline$LongUshr(b, 63),  a ^ (b >>> 63));
+    results[12] = a - (b >>  1);
+    results[13] = a - (b >>  6);
+    results[14] = a - (b >>  7);
+    results[15] = a - (b >>  8);
+    results[16] = a - (b >> 14);
+    results[17] = a - (b >> 15);
+    results[18] = a - (b >> 16);
+    results[19] = a - (b >> 30);
+    results[20] = a - (b >> 31);
+    results[21] = a - (b >> 32);
+    results[22] = a - (b >> 62);
+    results[23] = a - (b >> 63);
+
+    results[24] = a ^ (b >>>  1);
+    results[25] = a ^ (b >>>  6);
+    results[26] = a ^ (b >>>  7);
+    results[27] = a ^ (b >>>  8);
+    results[28] = a ^ (b >>> 14);
+    results[29] = a ^ (b >>> 15);
+    results[30] = a ^ (b >>> 16);
+    results[31] = a ^ (b >>> 30);
+    results[32] = a ^ (b >>> 31);
+    results[33] = a ^ (b >>> 32);
+    results[34] = a ^ (b >>> 62);
+    results[35] = a ^ (b >>> 63);
+
+    return results;
+  }
+
+  public static void $opt$validateShiftLongAsserts(long a, long b) {
+    long[] results = $opt$validateShiftLong(a, b);
+    assertIntEquals(3 * 12, results.length);
+
+    assertLongEquals(a + $noinline$LongShl(b, 1),  results[0]);
+    assertLongEquals(a + $noinline$LongShl(b, 6),  results[1]);
+    assertLongEquals(a + $noinline$LongShl(b, 7),  results[2]);
+    assertLongEquals(a + $noinline$LongShl(b, 8),  results[3]);
+    assertLongEquals(a + $noinline$LongShl(b, 14), results[4]);
+    assertLongEquals(a + $noinline$LongShl(b, 15), results[5]);
+    assertLongEquals(a + $noinline$LongShl(b, 16), results[6]);
+    assertLongEquals(a + $noinline$LongShl(b, 30), results[7]);
+    assertLongEquals(a + $noinline$LongShl(b, 31), results[8]);
+    assertLongEquals(a + $noinline$LongShl(b, 32), results[9]);
+    assertLongEquals(a + $noinline$LongShl(b, 62), results[10]);
+    assertLongEquals(a + $noinline$LongShl(b, 63), results[11]);
+
+    assertLongEquals(a - $noinline$LongShr(b, 1),  results[12]);
+    assertLongEquals(a - $noinline$LongShr(b, 6),  results[13]);
+    assertLongEquals(a - $noinline$LongShr(b, 7),  results[14]);
+    assertLongEquals(a - $noinline$LongShr(b, 8),  results[15]);
+    assertLongEquals(a - $noinline$LongShr(b, 14), results[16]);
+    assertLongEquals(a - $noinline$LongShr(b, 15), results[17]);
+    assertLongEquals(a - $noinline$LongShr(b, 16), results[18]);
+    assertLongEquals(a - $noinline$LongShr(b, 30), results[19]);
+    assertLongEquals(a - $noinline$LongShr(b, 31), results[20]);
+    assertLongEquals(a - $noinline$LongShr(b, 32), results[21]);
+    assertLongEquals(a - $noinline$LongShr(b, 62), results[22]);
+    assertLongEquals(a - $noinline$LongShr(b, 63), results[23]);
+
+    assertLongEquals(a ^ $noinline$LongUshr(b, 1),  results[24]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 6),  results[25]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 7),  results[26]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 8),  results[27]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 14), results[28]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 15), results[29]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 16), results[30]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 30), results[31]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 31), results[32]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 32), results[33]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 62), results[34]);
+    assertLongEquals(a ^ $noinline$LongUshr(b, 63), results[35]);
   }
 
 
@@ -1072,7 +1120,7 @@
         $opt$validateExtendLong(inputs[i], inputs[j]);
 
         $opt$validateShiftInt((int)inputs[i], (int)inputs[j]);
-        $opt$validateShiftLong(inputs[i], inputs[j]);
+        $opt$validateShiftLongAsserts(inputs[i], inputs[j]);
       }
     }