1/*
2 * Copyright (c) 2012, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23package org.graalvm.compiler.jtt.jdk;
24
25import org.junit.Test;
26
27import org.graalvm.compiler.jtt.JTTTest;
28
29public class IntegerBits extends JTTTest {
30
31    @SuppressWarnings("unused") private static int init = Integer.reverseBytes(42);
32    private static int original = 0x01020304;
33    private static int v = 0b1000;
34    private static int zero = 0;
35
36    public static int test(int o) {
37        return Integer.reverseBytes(o);
38    }
39
40    public static int test2(int o) {
41        return Integer.numberOfLeadingZeros(o);
42    }
43
44    public static int test3(int o) {
45        return Integer.numberOfTrailingZeros(o);
46    }
47
48    public static int test4(int o) {
49        return Integer.bitCount(o);
50    }
51
52    @Test
53    public void run0() {
54        runTest("test", original);
55    }
56
57    @Test
58    public void run1() {
59        runTest("test3", v);
60    }
61
62    @Test
63    public void run2() {
64        runTest("test2", v);
65    }
66
67    @Test
68    public void run3() {
69        runTest("test3", zero);
70    }
71
72    @Test
73    public void run4() {
74        runTest("test2", zero);
75    }
76
77    @Test
78    public void run5() {
79        runTest("test", 0x01020304);
80    }
81
82    @Test
83    public void run6() {
84        runTest("test3", 0b1000);
85    }
86
87    @Test
88    public void run7() {
89        runTest("test2", 0b1000);
90    }
91
92    @Test
93    public void run8() {
94        runTest("test3", 0);
95    }
96
97    @Test
98    public void run9() {
99        runTest("test2", 0);
100    }
101
102    @Test
103    public void run10() {
104        runTest("test4", 0xffffffff);
105    }
106
107    @Test
108    public void run11() {
109        runTest("test2", 0xFFFFFFFF);
110    }
111
112    @Test
113    public void run12() {
114        runTest("test2", 0x7FFFFFFF);
115    }
116
117    @Test
118    public void run17() {
119        runTest("test2", 0x80000000);
120    }
121
122    @Test
123    public void run18() {
124        runTest("test2", 0x40000000);
125    }
126
127    @Test
128    public void run13() {
129        runTest("test3", 0x7FFFFFFF);
130    }
131
132    @Test
133    public void run14() {
134        runTest("test3", 0xFFFFFFFF);
135    }
136
137    @Test
138    public void run15() {
139        runTest("test3", 0x80000000);
140    }
141
142    @Test
143    public void run16() {
144        runTest("test3", 0x40000000);
145    }
146
147    @Test
148    public void run19() {
149        runTest("test4", 0x80000000);
150    }
151
152    @Test
153    public void run20() {
154        runTest("test4", 0x40000000);
155    }
156
157    @Test
158    public void run21() {
159        runTest("test4", 0x00000001);
160    }
161
162}
163