140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling/*
2351dddf4025f07477161209e374741f089d97cb4Vladimir Marko * Copyright (C) 2015 The Android Open Source Project
340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling *
440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * Licensed under the Apache License, Version 2.0 (the "License");
540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * you may not use this file except in compliance with the License.
640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * You may obtain a copy of the License at
740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling *
840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling *      http://www.apache.org/licenses/LICENSE-2.0
940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling *
1040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * Unless required by applicable law or agreed to in writing, software
1140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * distributed under the License is distributed on an "AS IS" BASIS,
1240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * See the License for the specific language governing permissions and
1440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling * limitations under the License.
1540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling */
1640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
1740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakelingpublic class Main {
1840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
1940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void assertIntEquals(int expected, int actual) {
2040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (expected != actual) {
2140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error("Expected: " + expected + ", found: " + actual);
2240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
2340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
2440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
2540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void assertLongEquals(long expected, long actual) {
2640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (expected != actual) {
2740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error("Expected: " + expected + ", found: " + actual);
2840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
2940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
3040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
3140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void main(String args[]) throws Exception {
3240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Integer_right_v_csubv();
3340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Long_right_v_csubv();
3440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
3540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Integer_right_constant_v();
3640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Long_right_constant_v();
3740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
3840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Integer_left_csubv_v();
3940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Long_left_csubv_v();
4040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
4140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Integer_right_v_negv();
4240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Long_right_v_negv();
4340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
4440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Integer_left_negv_v();
4540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Long_left_negv_v();
4640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
4740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Integer_left_constant_v();
4840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    test_Long_left_constant_v();
4940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
5040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
5140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static boolean doThrow = false;
5240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
5340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_right_reg_v_csubv(int value, int distance) {
5440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
5540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
5640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
5740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> distance) | (value << (32 - distance));
5840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
5940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
6040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Integer_right_v_csubv() throws Exception {
6140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, 0), 0x11);
6240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
6340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, 1), 0x80000008);
6440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, Integer.SIZE - 1), 0x22);
6540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, Integer.SIZE), 0x11);
6640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, Integer.SIZE + 1), 0x80000008);
6740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
6840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -1), 0x22);
6940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -(Integer.SIZE - 1)), 0x80000008);
7040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -Integer.SIZE), 0x11);
7140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -(Integer.SIZE + 1)), 0x22);
7240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
7340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x80000000, 1), 0x40000000);
7440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
7540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
7640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_reg_v_csubv(long value, int distance) {
7740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
7840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
7940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
8040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> distance) | (value << (64 - distance));
8140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
8240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
8340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Long_right_v_csubv() throws Exception {
8440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, 0), 0x11);
8540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
8640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, 1), 0x8000000000000008L);
8740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, Long.SIZE - 1), 0x22);
8840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, Long.SIZE), 0x11);
8940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, Long.SIZE + 1), 0x8000000000000008L);
9040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
9140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -1), 0x22);
9240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -(Long.SIZE - 1)), 0x8000000000000008L);
9340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -Long.SIZE), 0x11);
9440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -(Long.SIZE + 1)), 0x22);
9540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
9640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x8000000000000000L, 1), 0x4000000000000000L);
9740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
9840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
9940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_left_reg_csubv_v(int value, int distance) {
10040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
10140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
10240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
10340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> (32 - distance)) | (value << distance);
10440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
10540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
10640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Integer_left_csubv_v() throws Exception {
10740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, 0), 0x11);
10840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
10940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, 1), 0x22);
11040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, Integer.SIZE - 1), 0x80000008);
11140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, Integer.SIZE), 0x11);
11240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, Integer.SIZE + 1), 0x22);
11340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
11440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -1), 0x80000008);
11540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -(Integer.SIZE - 1)), 0x22);
11640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -Integer.SIZE), 0x11);
11740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -(Integer.SIZE + 1)), 0x80000008);
11840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
11940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0xC0000000, 1), 0x80000001);
12040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
12140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
12240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_reg_csubv_v(long value, int distance) {
12340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
12440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
12540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
12640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> (64 - distance)) | (value << distance);
12740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
12840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
12940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Long_left_csubv_v() throws Exception {
13040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, 0), 0x11);
13140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
13240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, 1), 0x22);
13340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, Long.SIZE - 1), 0x8000000000000008L);
13440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, Long.SIZE), 0x11);
13540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, Long.SIZE + 1), 0x22);
13640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
13740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -1), 0x8000000000000008L);
13840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -(Long.SIZE - 1)), 0x22);
13940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -Long.SIZE), 0x11);
14040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -(Long.SIZE + 1)), 0x8000000000000008L);
14140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
14240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0xC000000000000000L, 1), 0x8000000000000001L);
14340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
14440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
14540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_right_reg_v_negv(int value, int distance) {
14640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
14740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
14840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
14940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> distance) | (value << -distance);
15040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
15140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
15240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Integer_right_v_negv() throws Exception {
15340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, 0), 0x11);
15440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
15540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, 1), 0x80000008);
15640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, Integer.SIZE - 1), 0x22);
15740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, Integer.SIZE), 0x11);
15840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, Integer.SIZE + 1), 0x80000008);
15940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
16040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -1), 0x22);
16140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -(Integer.SIZE - 1)), 0x80000008);
16240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -Integer.SIZE), 0x11);
16340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -(Integer.SIZE + 1)), 0x22);
16440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
16540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x80000000, 1), 0x40000000);
16640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
16740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
16840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_reg_v_negv(long value, int distance) {
16940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
17040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
17140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
17240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> distance) | (value << -distance);
17340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
17440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
17540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Long_right_v_negv() throws Exception {
17640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, 0), 0x11);
17740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
17840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, 1), 0x8000000000000008L);
17940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, Long.SIZE - 1), 0x22);
18040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, Long.SIZE), 0x11);
18140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, Long.SIZE + 1), 0x8000000000000008L);
18240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
18340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -1), 0x22);
18440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -(Long.SIZE - 1)), 0x8000000000000008L);
18540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -Long.SIZE), 0x11);
18640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -(Long.SIZE + 1)), 0x22);
18740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
18840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x8000000000000000L, 1), 0x4000000000000000L);
18940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
19040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
19140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_left_reg_negv_v(int value, int distance) {
19240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
19340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
19440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
19540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> -distance) | (value << distance);
19640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
19740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
19840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Integer_left_negv_v() throws Exception {
19940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, 0), 0x11);
20040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
20140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, 1), 0x22);
20240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, Integer.SIZE - 1), 0x80000008);
20340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, Integer.SIZE), 0x11);
20440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, Integer.SIZE + 1), 0x22);
20540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
20640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -1), 0x80000008);
20740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -(Integer.SIZE - 1)), 0x22);
20840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -Integer.SIZE), 0x11);
20940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -(Integer.SIZE + 1)), 0x80000008);
21040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
21140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_reg_negv_v(0xC0000000, 1), 0x80000001);
21240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
21340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
21440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_reg_negv_v(long value, int distance) {
21540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
21640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
21740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
21840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> -distance) | (value << distance);
21940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
22040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
22140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Long_left_negv_v() throws Exception {
22240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, 0), 0x11);
22340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
22440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, 1), 0x22);
22540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, Long.SIZE - 1), 0x8000000000000008L);
22640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, Long.SIZE), 0x11);
22740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, Long.SIZE + 1), 0x22);
22840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
22940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -1), 0x8000000000000008L);
23040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -(Long.SIZE - 1)), 0x22);
23140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -Long.SIZE), 0x11);
23240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -(Long.SIZE + 1)), 0x8000000000000008L);
23340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
23440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_reg_negv_v(0xC000000000000000L, 1), 0x8000000000000001L);
23540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
23640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
23740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_right_constant_0(int value) {
23840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
23940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
24040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
24140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 0) | (value << 0);
24240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
24340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
24440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_right_constant_1(int value) {
24540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
24640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
24740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
24840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 1) | (value << -1);
24940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
25040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
25140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_right_constant_m1(int value) {
25240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
25340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
25440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
25540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> -1) | (value << 1);
25640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
25740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
25840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_right_constant_16(int value) {
25940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
26040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
26140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
26240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 16) | (value << -16);
26340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
26440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
26540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Integer_right_constant_v() throws Exception {
26640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_constant_0(0x11), 0x11);
26740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_constant_1(0x11), 0x80000008);
26840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_constant_m1(0x11), 0x22);
26940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_right_constant_16(0x11), 0x110000);
27040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
27140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
27240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_0(long value) {
27340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
27440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
27540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
27640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 0) | (value << 0);
27740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
27840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
27940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_1(long value) {
28040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
28140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
28240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
28340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 1) | (value << -1);
28440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
28540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
28640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_m1(long value) {
28740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
28840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
28940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
29040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> -1) | (value << 1);
29140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
29240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
29340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_16(long value) {
29440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
29540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
29640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
29740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 16) | (value << -16);
29840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
29940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
30040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_32(long value) {
30140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
30240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
30340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
30440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 32) | (value << -32);
30540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
30640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
30740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_48(long value) {
30840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
30940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
31040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
31140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 48) | (value << -48);
31240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
31340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
31440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_right_constant_64(long value) {
31540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
31640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
31740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
31840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value >>> 64) | (value << -64);
31940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
32040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
32140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Long_right_constant_v() throws Exception {
32240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_constant_0(0x11), 0x11);
32340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_constant_1(0x11), 0x8000000000000008L);
32440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_constant_m1(0x11), 0x22);
32540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_constant_16(0x11), 0x11000000000000L);
32640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_constant_32(0x11), 0x1100000000L);
32740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_right_constant_48(0x11), 0x110000L);
32840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
32940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
33040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_left_constant_0(int value) {
33140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
33240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
33340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
33440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 0) | (value >>> 0);
33540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
33640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
33740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_left_constant_1(int value) {
33840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
33940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
34040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
34140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 1) | (value >>> -1);
34240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
34340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
34440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_left_constant_m1(int value) {
34540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
34640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
34740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
34840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << -1) | (value >>> 1);
34940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
35040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
35140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static int $noinline$rotate_int_left_constant_16(int value) {
35240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
35340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
35440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
35540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 16) | (value >>> -16);
35640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
35740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
35840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Integer_left_constant_v() throws Exception {
35940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_constant_0(0x11), 0x11);
36040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_constant_1(0x11), 0x22);
36140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_constant_m1(0x11), 0x80000008);
36240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertIntEquals($noinline$rotate_int_left_constant_16(0x11), 0x110000);
36340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
36440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
36540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_0(long value) {
36640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
36740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
36840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
36940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 0) | (value >>> 0);
37040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
37140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
37240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_1(long value) {
37340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
37440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
37540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
37640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 1) | (value >>> -1);
37740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
37840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
37940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_m1(long value) {
38040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
38140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
38240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
38340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << -1) | (value >>> 1);
38440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
38540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
38640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_16(long value) {
38740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
38840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
38940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
39040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 16) | (value >>> -16);
39140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
39240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
39340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_32(long value) {
39440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
39540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
39640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
39740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 32) | (value >>> -32);
39840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
39940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
40040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_48(long value) {
40140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
40240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
40340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
40440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 48) | (value >>> -48);
40540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
40640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
40740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static long $noinline$rotate_long_left_constant_64(long value) {
40840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    if (doThrow) {
40940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling      throw new Error();
41040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    }
41140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    return (value << 64) | (value >>> -64);
41240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
41340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
41440a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  public static void test_Long_left_constant_v() throws Exception {
41540a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_constant_0(0x11), 0x11);
41640a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_constant_1(0x11), 0x22);
41740a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_constant_m1(0x11), 0x8000000000000008L);
41840a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_constant_16(0x11), 0x110000L);
41940a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_constant_32(0x11), 0x1100000000L);
42040a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling    assertLongEquals($noinline$rotate_long_left_constant_48(0x11), 0x11000000000000L);
42140a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling  }
42240a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling
42340a04bf64e5837fa48aceaffe970c9984c94084aScott Wakeling}
424