| // Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package com.android.tools.r8.ir; |
| |
| import static org.junit.Assume.assumeTrue; |
| |
| import com.android.tools.r8.NeverInline; |
| import com.android.tools.r8.TestBase; |
| import com.android.tools.r8.TestParameters; |
| import com.android.tools.r8.TestParametersCollection; |
| import com.google.common.collect.ImmutableList; |
| import java.util.ArrayList; |
| import java.util.List; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.Parameterized; |
| |
| @RunWith(Parameterized.class) |
| public class ShiftExhaustiveTest extends TestBase { |
| |
| private static final List<String> shiptOperations = ImmutableList.of(">>", ">>>", "<<"); |
| private static final List<Integer> negativeShiftValuesForInt = |
| ImmutableList.of(0, -1, -2, -10, -20, -30, -31, -32); |
| private static final List<Integer> positiveShiftValuesForInt = |
| ImmutableList.of(0, 1, 2, 10, 20, 30, 31, 32); |
| private static final List<Integer> negativeShiftValuesForLong = |
| ImmutableList.of(0, -1, -2, -20, -40, -62, -63, -64); |
| private static final List<Integer> positiveShiftValuesForLong = |
| ImmutableList.of(0, 1, 2, 20, 40, 62, 63, 64); |
| private static final List<Integer> testValuesInt = |
| ImmutableList.of( |
| Integer.MIN_VALUE, |
| Integer.MIN_VALUE + 1, |
| -2, |
| -1, |
| 0, |
| 1, |
| 2, |
| Integer.MAX_VALUE - 1, |
| Integer.MAX_VALUE); |
| private static final List<Long> testValuesLong = |
| ImmutableList.of( |
| Long.MIN_VALUE, |
| Long.MIN_VALUE + 1L, |
| -2L, |
| -1L, |
| 0L, |
| 1L, |
| 2L, |
| Long.MAX_VALUE - 1, |
| Long.MAX_VALUE); |
| |
| private static List<String> EXPECTED_RESULT; |
| |
| @BeforeClass |
| public static void generateExpectedResult() { |
| List<String> result = new ArrayList<>(); |
| for (int i : testValuesInt) { |
| generateTestResultsInt(i, result); |
| } |
| for (long l : testValuesLong) { |
| generateTestResultsLong(l, result); |
| } |
| EXPECTED_RESULT = result; |
| } |
| |
| public static void generateTestResultsInt(int x, List<String> result) { |
| for (String op : shiptOperations) { |
| for (int f : negativeShiftValuesForInt) { |
| for (int s : positiveShiftValuesForInt) { |
| if (op.equals(">>")) { |
| result.add("" + (x >> f >> s)); |
| } |
| if (op.equals(">>>")) { |
| result.add("" + (x >>> f >>> s)); |
| } |
| if (op.equals("<<")) { |
| result.add("" + (x << f << s)); |
| } |
| } |
| } |
| } |
| } |
| |
| public static void generateTestResultsLong(long x, List<String> result) { |
| for (String op : shiptOperations) { |
| for (int f : negativeShiftValuesForLong) { |
| for (int s : positiveShiftValuesForLong) { |
| switch (op) { |
| case ">>": |
| result.add("" + (x >> f >> s)); |
| break; |
| case ">>>": |
| result.add("" + (x >>> f >>> s)); |
| break; |
| case "<<": |
| result.add("" + (x << f << s)); |
| break; |
| } |
| } |
| } |
| } |
| } |
| |
| @Parameterized.Parameters(name = "{0}") |
| public static TestParametersCollection data() { |
| return getTestParameters().withCfRuntimes().withDexRuntimes().withAllApiLevels().build(); |
| } |
| |
| private final TestParameters parameters; |
| |
| public ShiftExhaustiveTest(TestParameters parameters) { |
| this.parameters = parameters; |
| } |
| |
| @Test |
| public void testJvm() throws Exception { |
| assumeTrue(parameters.isCfRuntime()); |
| testForJvm(parameters) |
| .addProgramClasses(Main.class) |
| .run(parameters.getRuntime(), Main.class) |
| .assertSuccessWithOutputLines(EXPECTED_RESULT); |
| } |
| |
| @Test |
| public void testD8() throws Exception { |
| testForRuntime(parameters) |
| .addProgramClasses(Main.class) |
| .run(parameters.getRuntime(), Main.class) |
| .assertSuccessWithOutputLines(EXPECTED_RESULT); |
| } |
| |
| @Test |
| public void testR8() throws Exception { |
| testForR8(parameters.getBackend()) |
| .addProgramClasses(Main.class) |
| .addKeepMainRule(Main.class) |
| .enableInliningAnnotations() |
| .setMinApi(parameters) |
| .run(parameters.getRuntime(), Main.class) |
| .assertSuccessWithOutputLines(EXPECTED_RESULT); |
| } |
| |
| // Methods of Main class generated by outer class main method below. |
| public static class Main { |
| |
| public static void main(String[] args) { |
| testInt(-2147483648); |
| testInt(-2147483647); |
| testInt(-2); |
| testInt(-1); |
| testInt(0); |
| testInt(1); |
| testInt(2); |
| testInt(2147483646); |
| testInt(2147483647); |
| testLong(-9223372036854775808L); |
| testLong(-9223372036854775807L); |
| testLong(-2L); |
| testLong(-1L); |
| testLong(0L); |
| testLong(1L); |
| testLong(2L); |
| testLong(9223372036854775806L); |
| testLong(9223372036854775807L); |
| } |
| |
| @NeverInline |
| private static void testInt(int x) { |
| System.out.println(x >> 0 >> 0); |
| System.out.println(x >> 0 >> 1); |
| System.out.println(x >> 0 >> 2); |
| System.out.println(x >> 0 >> 10); |
| System.out.println(x >> 0 >> 20); |
| System.out.println(x >> 0 >> 30); |
| System.out.println(x >> 0 >> 31); |
| System.out.println(x >> 0 >> 32); |
| System.out.println(x >> -1 >> 0); |
| System.out.println(x >> -1 >> 1); |
| System.out.println(x >> -1 >> 2); |
| System.out.println(x >> -1 >> 10); |
| System.out.println(x >> -1 >> 20); |
| System.out.println(x >> -1 >> 30); |
| System.out.println(x >> -1 >> 31); |
| System.out.println(x >> -1 >> 32); |
| System.out.println(x >> -2 >> 0); |
| System.out.println(x >> -2 >> 1); |
| System.out.println(x >> -2 >> 2); |
| System.out.println(x >> -2 >> 10); |
| System.out.println(x >> -2 >> 20); |
| System.out.println(x >> -2 >> 30); |
| System.out.println(x >> -2 >> 31); |
| System.out.println(x >> -2 >> 32); |
| System.out.println(x >> -10 >> 0); |
| System.out.println(x >> -10 >> 1); |
| System.out.println(x >> -10 >> 2); |
| System.out.println(x >> -10 >> 10); |
| System.out.println(x >> -10 >> 20); |
| System.out.println(x >> -10 >> 30); |
| System.out.println(x >> -10 >> 31); |
| System.out.println(x >> -10 >> 32); |
| System.out.println(x >> -20 >> 0); |
| System.out.println(x >> -20 >> 1); |
| System.out.println(x >> -20 >> 2); |
| System.out.println(x >> -20 >> 10); |
| System.out.println(x >> -20 >> 20); |
| System.out.println(x >> -20 >> 30); |
| System.out.println(x >> -20 >> 31); |
| System.out.println(x >> -20 >> 32); |
| System.out.println(x >> -30 >> 0); |
| System.out.println(x >> -30 >> 1); |
| System.out.println(x >> -30 >> 2); |
| System.out.println(x >> -30 >> 10); |
| System.out.println(x >> -30 >> 20); |
| System.out.println(x >> -30 >> 30); |
| System.out.println(x >> -30 >> 31); |
| System.out.println(x >> -30 >> 32); |
| System.out.println(x >> -31 >> 0); |
| System.out.println(x >> -31 >> 1); |
| System.out.println(x >> -31 >> 2); |
| System.out.println(x >> -31 >> 10); |
| System.out.println(x >> -31 >> 20); |
| System.out.println(x >> -31 >> 30); |
| System.out.println(x >> -31 >> 31); |
| System.out.println(x >> -31 >> 32); |
| System.out.println(x >> -32 >> 0); |
| System.out.println(x >> -32 >> 1); |
| System.out.println(x >> -32 >> 2); |
| System.out.println(x >> -32 >> 10); |
| System.out.println(x >> -32 >> 20); |
| System.out.println(x >> -32 >> 30); |
| System.out.println(x >> -32 >> 31); |
| System.out.println(x >> -32 >> 32); |
| System.out.println(x >>> 0 >>> 0); |
| System.out.println(x >>> 0 >>> 1); |
| System.out.println(x >>> 0 >>> 2); |
| System.out.println(x >>> 0 >>> 10); |
| System.out.println(x >>> 0 >>> 20); |
| System.out.println(x >>> 0 >>> 30); |
| System.out.println(x >>> 0 >>> 31); |
| System.out.println(x >>> 0 >>> 32); |
| System.out.println(x >>> -1 >>> 0); |
| System.out.println(x >>> -1 >>> 1); |
| System.out.println(x >>> -1 >>> 2); |
| System.out.println(x >>> -1 >>> 10); |
| System.out.println(x >>> -1 >>> 20); |
| System.out.println(x >>> -1 >>> 30); |
| System.out.println(x >>> -1 >>> 31); |
| System.out.println(x >>> -1 >>> 32); |
| System.out.println(x >>> -2 >>> 0); |
| System.out.println(x >>> -2 >>> 1); |
| System.out.println(x >>> -2 >>> 2); |
| System.out.println(x >>> -2 >>> 10); |
| System.out.println(x >>> -2 >>> 20); |
| System.out.println(x >>> -2 >>> 30); |
| System.out.println(x >>> -2 >>> 31); |
| System.out.println(x >>> -2 >>> 32); |
| System.out.println(x >>> -10 >>> 0); |
| System.out.println(x >>> -10 >>> 1); |
| System.out.println(x >>> -10 >>> 2); |
| System.out.println(x >>> -10 >>> 10); |
| System.out.println(x >>> -10 >>> 20); |
| System.out.println(x >>> -10 >>> 30); |
| System.out.println(x >>> -10 >>> 31); |
| System.out.println(x >>> -10 >>> 32); |
| System.out.println(x >>> -20 >>> 0); |
| System.out.println(x >>> -20 >>> 1); |
| System.out.println(x >>> -20 >>> 2); |
| System.out.println(x >>> -20 >>> 10); |
| System.out.println(x >>> -20 >>> 20); |
| System.out.println(x >>> -20 >>> 30); |
| System.out.println(x >>> -20 >>> 31); |
| System.out.println(x >>> -20 >>> 32); |
| System.out.println(x >>> -30 >>> 0); |
| System.out.println(x >>> -30 >>> 1); |
| System.out.println(x >>> -30 >>> 2); |
| System.out.println(x >>> -30 >>> 10); |
| System.out.println(x >>> -30 >>> 20); |
| System.out.println(x >>> -30 >>> 30); |
| System.out.println(x >>> -30 >>> 31); |
| System.out.println(x >>> -30 >>> 32); |
| System.out.println(x >>> -31 >>> 0); |
| System.out.println(x >>> -31 >>> 1); |
| System.out.println(x >>> -31 >>> 2); |
| System.out.println(x >>> -31 >>> 10); |
| System.out.println(x >>> -31 >>> 20); |
| System.out.println(x >>> -31 >>> 30); |
| System.out.println(x >>> -31 >>> 31); |
| System.out.println(x >>> -31 >>> 32); |
| System.out.println(x >>> -32 >>> 0); |
| System.out.println(x >>> -32 >>> 1); |
| System.out.println(x >>> -32 >>> 2); |
| System.out.println(x >>> -32 >>> 10); |
| System.out.println(x >>> -32 >>> 20); |
| System.out.println(x >>> -32 >>> 30); |
| System.out.println(x >>> -32 >>> 31); |
| System.out.println(x >>> -32 >>> 32); |
| System.out.println(x << 0 << 0); |
| System.out.println(x << 0 << 1); |
| System.out.println(x << 0 << 2); |
| System.out.println(x << 0 << 10); |
| System.out.println(x << 0 << 20); |
| System.out.println(x << 0 << 30); |
| System.out.println(x << 0 << 31); |
| System.out.println(x << 0 << 32); |
| System.out.println(x << -1 << 0); |
| System.out.println(x << -1 << 1); |
| System.out.println(x << -1 << 2); |
| System.out.println(x << -1 << 10); |
| System.out.println(x << -1 << 20); |
| System.out.println(x << -1 << 30); |
| System.out.println(x << -1 << 31); |
| System.out.println(x << -1 << 32); |
| System.out.println(x << -2 << 0); |
| System.out.println(x << -2 << 1); |
| System.out.println(x << -2 << 2); |
| System.out.println(x << -2 << 10); |
| System.out.println(x << -2 << 20); |
| System.out.println(x << -2 << 30); |
| System.out.println(x << -2 << 31); |
| System.out.println(x << -2 << 32); |
| System.out.println(x << -10 << 0); |
| System.out.println(x << -10 << 1); |
| System.out.println(x << -10 << 2); |
| System.out.println(x << -10 << 10); |
| System.out.println(x << -10 << 20); |
| System.out.println(x << -10 << 30); |
| System.out.println(x << -10 << 31); |
| System.out.println(x << -10 << 32); |
| System.out.println(x << -20 << 0); |
| System.out.println(x << -20 << 1); |
| System.out.println(x << -20 << 2); |
| System.out.println(x << -20 << 10); |
| System.out.println(x << -20 << 20); |
| System.out.println(x << -20 << 30); |
| System.out.println(x << -20 << 31); |
| System.out.println(x << -20 << 32); |
| System.out.println(x << -30 << 0); |
| System.out.println(x << -30 << 1); |
| System.out.println(x << -30 << 2); |
| System.out.println(x << -30 << 10); |
| System.out.println(x << -30 << 20); |
| System.out.println(x << -30 << 30); |
| System.out.println(x << -30 << 31); |
| System.out.println(x << -30 << 32); |
| System.out.println(x << -31 << 0); |
| System.out.println(x << -31 << 1); |
| System.out.println(x << -31 << 2); |
| System.out.println(x << -31 << 10); |
| System.out.println(x << -31 << 20); |
| System.out.println(x << -31 << 30); |
| System.out.println(x << -31 << 31); |
| System.out.println(x << -31 << 32); |
| System.out.println(x << -32 << 0); |
| System.out.println(x << -32 << 1); |
| System.out.println(x << -32 << 2); |
| System.out.println(x << -32 << 10); |
| System.out.println(x << -32 << 20); |
| System.out.println(x << -32 << 30); |
| System.out.println(x << -32 << 31); |
| System.out.println(x << -32 << 32); |
| } |
| |
| @NeverInline |
| private static void testLong(long x) { |
| System.out.println(x >> 0 >> 0); |
| System.out.println(x >> 0 >> 1); |
| System.out.println(x >> 0 >> 2); |
| System.out.println(x >> 0 >> 20); |
| System.out.println(x >> 0 >> 40); |
| System.out.println(x >> 0 >> 62); |
| System.out.println(x >> 0 >> 63); |
| System.out.println(x >> 0 >> 64); |
| System.out.println(x >> -1 >> 0); |
| System.out.println(x >> -1 >> 1); |
| System.out.println(x >> -1 >> 2); |
| System.out.println(x >> -1 >> 20); |
| System.out.println(x >> -1 >> 40); |
| System.out.println(x >> -1 >> 62); |
| System.out.println(x >> -1 >> 63); |
| System.out.println(x >> -1 >> 64); |
| System.out.println(x >> -2 >> 0); |
| System.out.println(x >> -2 >> 1); |
| System.out.println(x >> -2 >> 2); |
| System.out.println(x >> -2 >> 20); |
| System.out.println(x >> -2 >> 40); |
| System.out.println(x >> -2 >> 62); |
| System.out.println(x >> -2 >> 63); |
| System.out.println(x >> -2 >> 64); |
| System.out.println(x >> -20 >> 0); |
| System.out.println(x >> -20 >> 1); |
| System.out.println(x >> -20 >> 2); |
| System.out.println(x >> -20 >> 20); |
| System.out.println(x >> -20 >> 40); |
| System.out.println(x >> -20 >> 62); |
| System.out.println(x >> -20 >> 63); |
| System.out.println(x >> -20 >> 64); |
| System.out.println(x >> -40 >> 0); |
| System.out.println(x >> -40 >> 1); |
| System.out.println(x >> -40 >> 2); |
| System.out.println(x >> -40 >> 20); |
| System.out.println(x >> -40 >> 40); |
| System.out.println(x >> -40 >> 62); |
| System.out.println(x >> -40 >> 63); |
| System.out.println(x >> -40 >> 64); |
| System.out.println(x >> -62 >> 0); |
| System.out.println(x >> -62 >> 1); |
| System.out.println(x >> -62 >> 2); |
| System.out.println(x >> -62 >> 20); |
| System.out.println(x >> -62 >> 40); |
| System.out.println(x >> -62 >> 62); |
| System.out.println(x >> -62 >> 63); |
| System.out.println(x >> -62 >> 64); |
| System.out.println(x >> -63 >> 0); |
| System.out.println(x >> -63 >> 1); |
| System.out.println(x >> -63 >> 2); |
| System.out.println(x >> -63 >> 20); |
| System.out.println(x >> -63 >> 40); |
| System.out.println(x >> -63 >> 62); |
| System.out.println(x >> -63 >> 63); |
| System.out.println(x >> -63 >> 64); |
| System.out.println(x >> -64 >> 0); |
| System.out.println(x >> -64 >> 1); |
| System.out.println(x >> -64 >> 2); |
| System.out.println(x >> -64 >> 20); |
| System.out.println(x >> -64 >> 40); |
| System.out.println(x >> -64 >> 62); |
| System.out.println(x >> -64 >> 63); |
| System.out.println(x >> -64 >> 64); |
| System.out.println(x >>> 0 >>> 0); |
| System.out.println(x >>> 0 >>> 1); |
| System.out.println(x >>> 0 >>> 2); |
| System.out.println(x >>> 0 >>> 20); |
| System.out.println(x >>> 0 >>> 40); |
| System.out.println(x >>> 0 >>> 62); |
| System.out.println(x >>> 0 >>> 63); |
| System.out.println(x >>> 0 >>> 64); |
| System.out.println(x >>> -1 >>> 0); |
| System.out.println(x >>> -1 >>> 1); |
| System.out.println(x >>> -1 >>> 2); |
| System.out.println(x >>> -1 >>> 20); |
| System.out.println(x >>> -1 >>> 40); |
| System.out.println(x >>> -1 >>> 62); |
| System.out.println(x >>> -1 >>> 63); |
| System.out.println(x >>> -1 >>> 64); |
| System.out.println(x >>> -2 >>> 0); |
| System.out.println(x >>> -2 >>> 1); |
| System.out.println(x >>> -2 >>> 2); |
| System.out.println(x >>> -2 >>> 20); |
| System.out.println(x >>> -2 >>> 40); |
| System.out.println(x >>> -2 >>> 62); |
| System.out.println(x >>> -2 >>> 63); |
| System.out.println(x >>> -2 >>> 64); |
| System.out.println(x >>> -20 >>> 0); |
| System.out.println(x >>> -20 >>> 1); |
| System.out.println(x >>> -20 >>> 2); |
| System.out.println(x >>> -20 >>> 20); |
| System.out.println(x >>> -20 >>> 40); |
| System.out.println(x >>> -20 >>> 62); |
| System.out.println(x >>> -20 >>> 63); |
| System.out.println(x >>> -20 >>> 64); |
| System.out.println(x >>> -40 >>> 0); |
| System.out.println(x >>> -40 >>> 1); |
| System.out.println(x >>> -40 >>> 2); |
| System.out.println(x >>> -40 >>> 20); |
| System.out.println(x >>> -40 >>> 40); |
| System.out.println(x >>> -40 >>> 62); |
| System.out.println(x >>> -40 >>> 63); |
| System.out.println(x >>> -40 >>> 64); |
| System.out.println(x >>> -62 >>> 0); |
| System.out.println(x >>> -62 >>> 1); |
| System.out.println(x >>> -62 >>> 2); |
| System.out.println(x >>> -62 >>> 20); |
| System.out.println(x >>> -62 >>> 40); |
| System.out.println(x >>> -62 >>> 62); |
| System.out.println(x >>> -62 >>> 63); |
| System.out.println(x >>> -62 >>> 64); |
| System.out.println(x >>> -63 >>> 0); |
| System.out.println(x >>> -63 >>> 1); |
| System.out.println(x >>> -63 >>> 2); |
| System.out.println(x >>> -63 >>> 20); |
| System.out.println(x >>> -63 >>> 40); |
| System.out.println(x >>> -63 >>> 62); |
| System.out.println(x >>> -63 >>> 63); |
| System.out.println(x >>> -63 >>> 64); |
| System.out.println(x >>> -64 >>> 0); |
| System.out.println(x >>> -64 >>> 1); |
| System.out.println(x >>> -64 >>> 2); |
| System.out.println(x >>> -64 >>> 20); |
| System.out.println(x >>> -64 >>> 40); |
| System.out.println(x >>> -64 >>> 62); |
| System.out.println(x >>> -64 >>> 63); |
| System.out.println(x >>> -64 >>> 64); |
| System.out.println(x << 0 << 0); |
| System.out.println(x << 0 << 1); |
| System.out.println(x << 0 << 2); |
| System.out.println(x << 0 << 20); |
| System.out.println(x << 0 << 40); |
| System.out.println(x << 0 << 62); |
| System.out.println(x << 0 << 63); |
| System.out.println(x << 0 << 64); |
| System.out.println(x << -1 << 0); |
| System.out.println(x << -1 << 1); |
| System.out.println(x << -1 << 2); |
| System.out.println(x << -1 << 20); |
| System.out.println(x << -1 << 40); |
| System.out.println(x << -1 << 62); |
| System.out.println(x << -1 << 63); |
| System.out.println(x << -1 << 64); |
| System.out.println(x << -2 << 0); |
| System.out.println(x << -2 << 1); |
| System.out.println(x << -2 << 2); |
| System.out.println(x << -2 << 20); |
| System.out.println(x << -2 << 40); |
| System.out.println(x << -2 << 62); |
| System.out.println(x << -2 << 63); |
| System.out.println(x << -2 << 64); |
| System.out.println(x << -20 << 0); |
| System.out.println(x << -20 << 1); |
| System.out.println(x << -20 << 2); |
| System.out.println(x << -20 << 20); |
| System.out.println(x << -20 << 40); |
| System.out.println(x << -20 << 62); |
| System.out.println(x << -20 << 63); |
| System.out.println(x << -20 << 64); |
| System.out.println(x << -40 << 0); |
| System.out.println(x << -40 << 1); |
| System.out.println(x << -40 << 2); |
| System.out.println(x << -40 << 20); |
| System.out.println(x << -40 << 40); |
| System.out.println(x << -40 << 62); |
| System.out.println(x << -40 << 63); |
| System.out.println(x << -40 << 64); |
| System.out.println(x << -62 << 0); |
| System.out.println(x << -62 << 1); |
| System.out.println(x << -62 << 2); |
| System.out.println(x << -62 << 20); |
| System.out.println(x << -62 << 40); |
| System.out.println(x << -62 << 62); |
| System.out.println(x << -62 << 63); |
| System.out.println(x << -62 << 64); |
| System.out.println(x << -63 << 0); |
| System.out.println(x << -63 << 1); |
| System.out.println(x << -63 << 2); |
| System.out.println(x << -63 << 20); |
| System.out.println(x << -63 << 40); |
| System.out.println(x << -63 << 62); |
| System.out.println(x << -63 << 63); |
| System.out.println(x << -63 << 64); |
| System.out.println(x << -64 << 0); |
| System.out.println(x << -64 << 1); |
| System.out.println(x << -64 << 2); |
| System.out.println(x << -64 << 20); |
| System.out.println(x << -64 << 40); |
| System.out.println(x << -64 << 62); |
| System.out.println(x << -64 << 63); |
| System.out.println(x << -64 << 64); |
| } |
| } |
| |
| private static void generateTestMain() { |
| System.out.println(" public static void main(String[] args) {"); |
| for (int i : testValuesInt) { |
| System.out.println(" testInt(" + i + ");"); |
| } |
| for (long l : testValuesLong) { |
| System.out.println(" testLong(" + l + "L);"); |
| } |
| System.out.println(" }"); |
| } |
| |
| private static void generateTestSourceInt() { |
| System.out.println(" @NeverInline"); |
| System.out.println(" private static void testInt(int x) {"); |
| for (String op : shiptOperations) { |
| for (int f : negativeShiftValuesForInt) { |
| for (int s : positiveShiftValuesForInt) { |
| System.out.println( |
| " System.out.println(x " + op + " " + f + " " + op + " " + s + ");"); |
| } |
| } |
| } |
| System.out.println(" }"); |
| } |
| |
| private static void generateTestSourceLong() { |
| System.out.println(" @NeverInline"); |
| System.out.println(" private static void testLong(long x) {"); |
| for (String op : shiptOperations) { |
| for (int f : negativeShiftValuesForLong) { |
| for (int s : positiveShiftValuesForLong) { |
| System.out.println( |
| " System.out.println(x " + op + " " + f + " " + op + " " + s + ");"); |
| } |
| } |
| } |
| System.out.println(" }"); |
| } |
| |
| public static void main(String[] args) { |
| generateTestMain(); |
| System.out.println(); |
| generateTestSourceInt(); |
| System.out.println(); |
| generateTestSourceLong(); |
| } |
| } |