xref: /aosp_15_r20/art/test/542-bitfield-rotates/src/Main.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2015 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker public class Main {
18*795d594fSAndroid Build Coastguard Worker 
assertIntEquals(int expected, int actual)19*795d594fSAndroid Build Coastguard Worker   public static void assertIntEquals(int expected, int actual) {
20*795d594fSAndroid Build Coastguard Worker     if (expected != actual) {
21*795d594fSAndroid Build Coastguard Worker       throw new Error("Expected: " + expected + ", found: " + actual);
22*795d594fSAndroid Build Coastguard Worker     }
23*795d594fSAndroid Build Coastguard Worker   }
24*795d594fSAndroid Build Coastguard Worker 
assertLongEquals(long expected, long actual)25*795d594fSAndroid Build Coastguard Worker   public static void assertLongEquals(long expected, long actual) {
26*795d594fSAndroid Build Coastguard Worker     if (expected != actual) {
27*795d594fSAndroid Build Coastguard Worker       throw new Error("Expected: " + expected + ", found: " + actual);
28*795d594fSAndroid Build Coastguard Worker     }
29*795d594fSAndroid Build Coastguard Worker   }
30*795d594fSAndroid Build Coastguard Worker 
main(String args[])31*795d594fSAndroid Build Coastguard Worker   public static void main(String args[]) throws Exception {
32*795d594fSAndroid Build Coastguard Worker     test_Integer_right_v_csubv();
33*795d594fSAndroid Build Coastguard Worker     test_Long_right_v_csubv();
34*795d594fSAndroid Build Coastguard Worker 
35*795d594fSAndroid Build Coastguard Worker     test_Integer_right_constant_v();
36*795d594fSAndroid Build Coastguard Worker     test_Long_right_constant_v();
37*795d594fSAndroid Build Coastguard Worker 
38*795d594fSAndroid Build Coastguard Worker     test_Integer_left_csubv_v();
39*795d594fSAndroid Build Coastguard Worker     test_Long_left_csubv_v();
40*795d594fSAndroid Build Coastguard Worker 
41*795d594fSAndroid Build Coastguard Worker     test_Integer_right_v_negv();
42*795d594fSAndroid Build Coastguard Worker     test_Long_right_v_negv();
43*795d594fSAndroid Build Coastguard Worker 
44*795d594fSAndroid Build Coastguard Worker     test_Integer_left_negv_v();
45*795d594fSAndroid Build Coastguard Worker     test_Long_left_negv_v();
46*795d594fSAndroid Build Coastguard Worker 
47*795d594fSAndroid Build Coastguard Worker     test_Integer_left_constant_v();
48*795d594fSAndroid Build Coastguard Worker     test_Long_left_constant_v();
49*795d594fSAndroid Build Coastguard Worker   }
50*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_right_reg_v_csubv(int value, int distance)51*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_right_reg_v_csubv(int value, int distance) {
52*795d594fSAndroid Build Coastguard Worker     return (value >>> distance) | (value << (32 - distance));
53*795d594fSAndroid Build Coastguard Worker   }
54*795d594fSAndroid Build Coastguard Worker 
test_Integer_right_v_csubv()55*795d594fSAndroid Build Coastguard Worker   public static void test_Integer_right_v_csubv() throws Exception {
56*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, 0), 0x11);
57*795d594fSAndroid Build Coastguard Worker 
58*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, 1), 0x80000008);
59*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, Integer.SIZE - 1), 0x22);
60*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, Integer.SIZE), 0x11);
61*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, Integer.SIZE + 1), 0x80000008);
62*795d594fSAndroid Build Coastguard Worker 
63*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -1), 0x22);
64*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -(Integer.SIZE - 1)), 0x80000008);
65*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -Integer.SIZE), 0x11);
66*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x11, -(Integer.SIZE + 1)), 0x22);
67*795d594fSAndroid Build Coastguard Worker 
68*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_csubv(0x80000000, 1), 0x40000000);
69*795d594fSAndroid Build Coastguard Worker   }
70*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_reg_v_csubv(long value, int distance)71*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_reg_v_csubv(long value, int distance) {
72*795d594fSAndroid Build Coastguard Worker     return (value >>> distance) | (value << (64 - distance));
73*795d594fSAndroid Build Coastguard Worker   }
74*795d594fSAndroid Build Coastguard Worker 
test_Long_right_v_csubv()75*795d594fSAndroid Build Coastguard Worker   public static void test_Long_right_v_csubv() throws Exception {
76*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, 0), 0x11);
77*795d594fSAndroid Build Coastguard Worker 
78*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, 1), 0x8000000000000008L);
79*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, Long.SIZE - 1), 0x22);
80*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, Long.SIZE), 0x11);
81*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, Long.SIZE + 1), 0x8000000000000008L);
82*795d594fSAndroid Build Coastguard Worker 
83*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -1), 0x22);
84*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -(Long.SIZE - 1)), 0x8000000000000008L);
85*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -Long.SIZE), 0x11);
86*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x11, -(Long.SIZE + 1)), 0x22);
87*795d594fSAndroid Build Coastguard Worker 
88*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_csubv(0x8000000000000000L, 1), 0x4000000000000000L);
89*795d594fSAndroid Build Coastguard Worker   }
90*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_left_reg_csubv_v(int value, int distance)91*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_left_reg_csubv_v(int value, int distance) {
92*795d594fSAndroid Build Coastguard Worker     return (value >>> (32 - distance)) | (value << distance);
93*795d594fSAndroid Build Coastguard Worker   }
94*795d594fSAndroid Build Coastguard Worker 
test_Integer_left_csubv_v()95*795d594fSAndroid Build Coastguard Worker   public static void test_Integer_left_csubv_v() throws Exception {
96*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, 0), 0x11);
97*795d594fSAndroid Build Coastguard Worker 
98*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, 1), 0x22);
99*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, Integer.SIZE - 1), 0x80000008);
100*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, Integer.SIZE), 0x11);
101*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, Integer.SIZE + 1), 0x22);
102*795d594fSAndroid Build Coastguard Worker 
103*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -1), 0x80000008);
104*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -(Integer.SIZE - 1)), 0x22);
105*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -Integer.SIZE), 0x11);
106*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0x11, -(Integer.SIZE + 1)), 0x80000008);
107*795d594fSAndroid Build Coastguard Worker 
108*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_csubv_v(0xC0000000, 1), 0x80000001);
109*795d594fSAndroid Build Coastguard Worker   }
110*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_reg_csubv_v(long value, int distance)111*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_reg_csubv_v(long value, int distance) {
112*795d594fSAndroid Build Coastguard Worker     return (value >>> (64 - distance)) | (value << distance);
113*795d594fSAndroid Build Coastguard Worker   }
114*795d594fSAndroid Build Coastguard Worker 
test_Long_left_csubv_v()115*795d594fSAndroid Build Coastguard Worker   public static void test_Long_left_csubv_v() throws Exception {
116*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, 0), 0x11);
117*795d594fSAndroid Build Coastguard Worker 
118*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, 1), 0x22);
119*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, Long.SIZE - 1), 0x8000000000000008L);
120*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, Long.SIZE), 0x11);
121*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, Long.SIZE + 1), 0x22);
122*795d594fSAndroid Build Coastguard Worker 
123*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -1), 0x8000000000000008L);
124*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -(Long.SIZE - 1)), 0x22);
125*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -Long.SIZE), 0x11);
126*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0x11, -(Long.SIZE + 1)), 0x8000000000000008L);
127*795d594fSAndroid Build Coastguard Worker 
128*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_csubv_v(0xC000000000000000L, 1), 0x8000000000000001L);
129*795d594fSAndroid Build Coastguard Worker   }
130*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_right_reg_v_negv(int value, int distance)131*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_right_reg_v_negv(int value, int distance) {
132*795d594fSAndroid Build Coastguard Worker     return (value >>> distance) | (value << -distance);
133*795d594fSAndroid Build Coastguard Worker   }
134*795d594fSAndroid Build Coastguard Worker 
test_Integer_right_v_negv()135*795d594fSAndroid Build Coastguard Worker   public static void test_Integer_right_v_negv() throws Exception {
136*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, 0), 0x11);
137*795d594fSAndroid Build Coastguard Worker 
138*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, 1), 0x80000008);
139*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, Integer.SIZE - 1), 0x22);
140*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, Integer.SIZE), 0x11);
141*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, Integer.SIZE + 1), 0x80000008);
142*795d594fSAndroid Build Coastguard Worker 
143*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -1), 0x22);
144*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -(Integer.SIZE - 1)), 0x80000008);
145*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -Integer.SIZE), 0x11);
146*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x11, -(Integer.SIZE + 1)), 0x22);
147*795d594fSAndroid Build Coastguard Worker 
148*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_reg_v_negv(0x80000000, 1), 0x40000000);
149*795d594fSAndroid Build Coastguard Worker   }
150*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_reg_v_negv(long value, int distance)151*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_reg_v_negv(long value, int distance) {
152*795d594fSAndroid Build Coastguard Worker     return (value >>> distance) | (value << -distance);
153*795d594fSAndroid Build Coastguard Worker   }
154*795d594fSAndroid Build Coastguard Worker 
test_Long_right_v_negv()155*795d594fSAndroid Build Coastguard Worker   public static void test_Long_right_v_negv() throws Exception {
156*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, 0), 0x11);
157*795d594fSAndroid Build Coastguard Worker 
158*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, 1), 0x8000000000000008L);
159*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, Long.SIZE - 1), 0x22);
160*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, Long.SIZE), 0x11);
161*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, Long.SIZE + 1), 0x8000000000000008L);
162*795d594fSAndroid Build Coastguard Worker 
163*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -1), 0x22);
164*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -(Long.SIZE - 1)), 0x8000000000000008L);
165*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -Long.SIZE), 0x11);
166*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x11, -(Long.SIZE + 1)), 0x22);
167*795d594fSAndroid Build Coastguard Worker 
168*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_reg_v_negv(0x8000000000000000L, 1), 0x4000000000000000L);
169*795d594fSAndroid Build Coastguard Worker   }
170*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_left_reg_negv_v(int value, int distance)171*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_left_reg_negv_v(int value, int distance) {
172*795d594fSAndroid Build Coastguard Worker     return (value >>> -distance) | (value << distance);
173*795d594fSAndroid Build Coastguard Worker   }
174*795d594fSAndroid Build Coastguard Worker 
test_Integer_left_negv_v()175*795d594fSAndroid Build Coastguard Worker   public static void test_Integer_left_negv_v() throws Exception {
176*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, 0), 0x11);
177*795d594fSAndroid Build Coastguard Worker 
178*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, 1), 0x22);
179*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, Integer.SIZE - 1), 0x80000008);
180*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, Integer.SIZE), 0x11);
181*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, Integer.SIZE + 1), 0x22);
182*795d594fSAndroid Build Coastguard Worker 
183*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -1), 0x80000008);
184*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -(Integer.SIZE - 1)), 0x22);
185*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -Integer.SIZE), 0x11);
186*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0x11, -(Integer.SIZE + 1)), 0x80000008);
187*795d594fSAndroid Build Coastguard Worker 
188*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_reg_negv_v(0xC0000000, 1), 0x80000001);
189*795d594fSAndroid Build Coastguard Worker   }
190*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_reg_negv_v(long value, int distance)191*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_reg_negv_v(long value, int distance) {
192*795d594fSAndroid Build Coastguard Worker     return (value >>> -distance) | (value << distance);
193*795d594fSAndroid Build Coastguard Worker   }
194*795d594fSAndroid Build Coastguard Worker 
test_Long_left_negv_v()195*795d594fSAndroid Build Coastguard Worker   public static void test_Long_left_negv_v() throws Exception {
196*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, 0), 0x11);
197*795d594fSAndroid Build Coastguard Worker 
198*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, 1), 0x22);
199*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, Long.SIZE - 1), 0x8000000000000008L);
200*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, Long.SIZE), 0x11);
201*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, Long.SIZE + 1), 0x22);
202*795d594fSAndroid Build Coastguard Worker 
203*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -1), 0x8000000000000008L);
204*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -(Long.SIZE - 1)), 0x22);
205*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -Long.SIZE), 0x11);
206*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0x11, -(Long.SIZE + 1)), 0x8000000000000008L);
207*795d594fSAndroid Build Coastguard Worker 
208*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_reg_negv_v(0xC000000000000000L, 1), 0x8000000000000001L);
209*795d594fSAndroid Build Coastguard Worker   }
210*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_right_constant_0(int value)211*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_right_constant_0(int value) {
212*795d594fSAndroid Build Coastguard Worker     return (value >>> 0) | (value << 0);
213*795d594fSAndroid Build Coastguard Worker   }
214*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_right_constant_1(int value)215*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_right_constant_1(int value) {
216*795d594fSAndroid Build Coastguard Worker     return (value >>> 1) | (value << -1);
217*795d594fSAndroid Build Coastguard Worker   }
218*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_right_constant_m1(int value)219*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_right_constant_m1(int value) {
220*795d594fSAndroid Build Coastguard Worker     return (value >>> -1) | (value << 1);
221*795d594fSAndroid Build Coastguard Worker   }
222*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_right_constant_16(int value)223*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_right_constant_16(int value) {
224*795d594fSAndroid Build Coastguard Worker     return (value >>> 16) | (value << -16);
225*795d594fSAndroid Build Coastguard Worker   }
226*795d594fSAndroid Build Coastguard Worker 
test_Integer_right_constant_v()227*795d594fSAndroid Build Coastguard Worker   public static void test_Integer_right_constant_v() throws Exception {
228*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_constant_0(0x11), 0x11);
229*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_constant_1(0x11), 0x80000008);
230*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_constant_m1(0x11), 0x22);
231*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_right_constant_16(0x11), 0x110000);
232*795d594fSAndroid Build Coastguard Worker   }
233*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_0(long value)234*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_0(long value) {
235*795d594fSAndroid Build Coastguard Worker     return (value >>> 0) | (value << 0);
236*795d594fSAndroid Build Coastguard Worker   }
237*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_1(long value)238*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_1(long value) {
239*795d594fSAndroid Build Coastguard Worker     return (value >>> 1) | (value << -1);
240*795d594fSAndroid Build Coastguard Worker   }
241*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_m1(long value)242*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_m1(long value) {
243*795d594fSAndroid Build Coastguard Worker     return (value >>> -1) | (value << 1);
244*795d594fSAndroid Build Coastguard Worker   }
245*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_16(long value)246*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_16(long value) {
247*795d594fSAndroid Build Coastguard Worker     return (value >>> 16) | (value << -16);
248*795d594fSAndroid Build Coastguard Worker   }
249*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_32(long value)250*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_32(long value) {
251*795d594fSAndroid Build Coastguard Worker     return (value >>> 32) | (value << -32);
252*795d594fSAndroid Build Coastguard Worker   }
253*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_48(long value)254*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_48(long value) {
255*795d594fSAndroid Build Coastguard Worker     return (value >>> 48) | (value << -48);
256*795d594fSAndroid Build Coastguard Worker   }
257*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_right_constant_64(long value)258*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_right_constant_64(long value) {
259*795d594fSAndroid Build Coastguard Worker     return (value >>> 64) | (value << -64);
260*795d594fSAndroid Build Coastguard Worker   }
261*795d594fSAndroid Build Coastguard Worker 
test_Long_right_constant_v()262*795d594fSAndroid Build Coastguard Worker   public static void test_Long_right_constant_v() throws Exception {
263*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_constant_0(0x11), 0x11);
264*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_constant_1(0x11), 0x8000000000000008L);
265*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_constant_m1(0x11), 0x22);
266*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_constant_16(0x11), 0x11000000000000L);
267*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_constant_32(0x11), 0x1100000000L);
268*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_right_constant_48(0x11), 0x110000L);
269*795d594fSAndroid Build Coastguard Worker   }
270*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_left_constant_0(int value)271*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_left_constant_0(int value) {
272*795d594fSAndroid Build Coastguard Worker     return (value << 0) | (value >>> 0);
273*795d594fSAndroid Build Coastguard Worker   }
274*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_left_constant_1(int value)275*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_left_constant_1(int value) {
276*795d594fSAndroid Build Coastguard Worker     return (value << 1) | (value >>> -1);
277*795d594fSAndroid Build Coastguard Worker   }
278*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_left_constant_m1(int value)279*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_left_constant_m1(int value) {
280*795d594fSAndroid Build Coastguard Worker     return (value << -1) | (value >>> 1);
281*795d594fSAndroid Build Coastguard Worker   }
282*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_int_left_constant_16(int value)283*795d594fSAndroid Build Coastguard Worker   public static int $noinline$rotate_int_left_constant_16(int value) {
284*795d594fSAndroid Build Coastguard Worker     return (value << 16) | (value >>> -16);
285*795d594fSAndroid Build Coastguard Worker   }
286*795d594fSAndroid Build Coastguard Worker 
test_Integer_left_constant_v()287*795d594fSAndroid Build Coastguard Worker   public static void test_Integer_left_constant_v() throws Exception {
288*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_constant_0(0x11), 0x11);
289*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_constant_1(0x11), 0x22);
290*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_constant_m1(0x11), 0x80000008);
291*795d594fSAndroid Build Coastguard Worker     assertIntEquals($noinline$rotate_int_left_constant_16(0x11), 0x110000);
292*795d594fSAndroid Build Coastguard Worker   }
293*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_0(long value)294*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_0(long value) {
295*795d594fSAndroid Build Coastguard Worker     return (value << 0) | (value >>> 0);
296*795d594fSAndroid Build Coastguard Worker   }
297*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_1(long value)298*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_1(long value) {
299*795d594fSAndroid Build Coastguard Worker     return (value << 1) | (value >>> -1);
300*795d594fSAndroid Build Coastguard Worker   }
301*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_m1(long value)302*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_m1(long value) {
303*795d594fSAndroid Build Coastguard Worker     return (value << -1) | (value >>> 1);
304*795d594fSAndroid Build Coastguard Worker   }
305*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_16(long value)306*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_16(long value) {
307*795d594fSAndroid Build Coastguard Worker     return (value << 16) | (value >>> -16);
308*795d594fSAndroid Build Coastguard Worker   }
309*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_32(long value)310*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_32(long value) {
311*795d594fSAndroid Build Coastguard Worker     return (value << 32) | (value >>> -32);
312*795d594fSAndroid Build Coastguard Worker   }
313*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_48(long value)314*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_48(long value) {
315*795d594fSAndroid Build Coastguard Worker     return (value << 48) | (value >>> -48);
316*795d594fSAndroid Build Coastguard Worker   }
317*795d594fSAndroid Build Coastguard Worker 
$noinline$rotate_long_left_constant_64(long value)318*795d594fSAndroid Build Coastguard Worker   public static long $noinline$rotate_long_left_constant_64(long value) {
319*795d594fSAndroid Build Coastguard Worker     return (value << 64) | (value >>> -64);
320*795d594fSAndroid Build Coastguard Worker   }
321*795d594fSAndroid Build Coastguard Worker 
test_Long_left_constant_v()322*795d594fSAndroid Build Coastguard Worker   public static void test_Long_left_constant_v() throws Exception {
323*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_constant_0(0x11), 0x11);
324*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_constant_1(0x11), 0x22);
325*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_constant_m1(0x11), 0x8000000000000008L);
326*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_constant_16(0x11), 0x110000L);
327*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_constant_32(0x11), 0x1100000000L);
328*795d594fSAndroid Build Coastguard Worker     assertLongEquals($noinline$rotate_long_left_constant_48(0x11), 0x11000000000000L);
329*795d594fSAndroid Build Coastguard Worker   }
330*795d594fSAndroid Build Coastguard Worker 
331*795d594fSAndroid Build Coastguard Worker }
332