xref: /aosp_15_r20/art/test/2046-checker-comparison/src/Main.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2023 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 {
main(String[] args)18*795d594fSAndroid Build Coastguard Worker     public static void main(String[] args) {
19*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualBool(true));
20*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualBool(true));
21*795d594fSAndroid Build Coastguard Worker         // Other comparisons e.g. `<` don't exists for boolean values.
22*795d594fSAndroid Build Coastguard Worker 
23*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualInt(0));
24*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualInt(0));
25*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanInt(0));
26*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualInt(0));
27*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanInt(0));
28*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualInt(0));
29*795d594fSAndroid Build Coastguard Worker 
30*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualLong(0L));
31*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualLong(0L));
32*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanLong(0L));
33*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualLong(0L));
34*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanLong(0L));
35*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualLong(0L));
36*795d594fSAndroid Build Coastguard Worker 
37*795d594fSAndroid Build Coastguard Worker         // We cannot perform the optimization on unknown float/doubles since equality for NaN
38*795d594fSAndroid Build Coastguard Worker         // returns the opposite as for normal numbers.
39*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualFloat(0f));
40*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testEqualFloat(Float.NaN));
41*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualFloat(Float.NEGATIVE_INFINITY));
42*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualFloat(Float.POSITIVE_INFINITY));
43*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualFloat(0f));
44*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testNotEqualFloat(Float.NaN));
45*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualFloat(Float.NEGATIVE_INFINITY));
46*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualFloat(Float.POSITIVE_INFINITY));
47*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanFloat(0f));
48*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanFloat(Float.NaN));
49*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanFloat(Float.NEGATIVE_INFINITY));
50*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanFloat(Float.POSITIVE_INFINITY));
51*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualFloat(0f));
52*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanOrEqualFloat(Float.NaN));
53*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualFloat(Float.NEGATIVE_INFINITY));
54*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualFloat(Float.POSITIVE_INFINITY));
55*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanFloat(0f));
56*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanFloat(Float.NaN));
57*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanFloat(Float.NEGATIVE_INFINITY));
58*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanFloat(Float.POSITIVE_INFINITY));
59*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualFloat(0f));
60*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanOrEqualFloat(Float.NaN));
61*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualFloat(Float.NEGATIVE_INFINITY));
62*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualFloat(Float.POSITIVE_INFINITY));
63*795d594fSAndroid Build Coastguard Worker 
64*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualDouble(0d));
65*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testEqualDouble(Double.NaN));
66*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualDouble(Double.NEGATIVE_INFINITY));
67*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualDouble(Double.POSITIVE_INFINITY));
68*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualDouble(0d));
69*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testNotEqualDouble(Double.NaN));
70*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualDouble(Double.NEGATIVE_INFINITY));
71*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualDouble(Double.POSITIVE_INFINITY));
72*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanDouble(0d));
73*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanDouble(Double.NaN));
74*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanDouble(Double.NEGATIVE_INFINITY));
75*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanDouble(Double.POSITIVE_INFINITY));
76*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualDouble(0d));
77*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testGreaterThanOrEqualDouble(Double.NaN));
78*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualDouble(Double.NEGATIVE_INFINITY));
79*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testGreaterThanOrEqualDouble(Double.POSITIVE_INFINITY));
80*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanDouble(0d));
81*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanDouble(Double.NaN));
82*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanDouble(Double.NEGATIVE_INFINITY));
83*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanDouble(Double.POSITIVE_INFINITY));
84*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualDouble(0d));
85*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testLessThanOrEqualDouble(Double.NaN));
86*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualDouble(Double.NEGATIVE_INFINITY));
87*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testLessThanOrEqualDouble(Double.POSITIVE_INFINITY));
88*795d594fSAndroid Build Coastguard Worker 
89*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualObject(null));
90*795d594fSAndroid Build Coastguard Worker         assertEquals(1, $noinline$testEqualObject(new Object()));
91*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualObject(null));
92*795d594fSAndroid Build Coastguard Worker         assertEquals(0, $noinline$testNotEqualObject(new Object()));
93*795d594fSAndroid Build Coastguard Worker         // Other comparisons e.g. `<` don't exists for references.
94*795d594fSAndroid Build Coastguard Worker     }
95*795d594fSAndroid Build Coastguard Worker 
96*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testEqualBool(boolean) register (after)
97*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
98*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testEqualBool(boolean a)99*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testEqualBool(boolean a) {
100*795d594fSAndroid Build Coastguard Worker         if (a == $inline$returnValueBool(a)) {
101*795d594fSAndroid Build Coastguard Worker             return 1;
102*795d594fSAndroid Build Coastguard Worker         } else {
103*795d594fSAndroid Build Coastguard Worker             return 0;
104*795d594fSAndroid Build Coastguard Worker         }
105*795d594fSAndroid Build Coastguard Worker     }
106*795d594fSAndroid Build Coastguard Worker 
107*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testNotEqualBool(boolean) register (after)
108*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
109*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testNotEqualBool(boolean a)110*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testNotEqualBool(boolean a) {
111*795d594fSAndroid Build Coastguard Worker         if (a != $inline$returnValueBool(a)) {
112*795d594fSAndroid Build Coastguard Worker             return 1;
113*795d594fSAndroid Build Coastguard Worker         } else {
114*795d594fSAndroid Build Coastguard Worker             return 0;
115*795d594fSAndroid Build Coastguard Worker         }
116*795d594fSAndroid Build Coastguard Worker     }
117*795d594fSAndroid Build Coastguard Worker 
$inline$returnValueBool(boolean a)118*795d594fSAndroid Build Coastguard Worker     private static boolean $inline$returnValueBool(boolean a) {
119*795d594fSAndroid Build Coastguard Worker         return a;
120*795d594fSAndroid Build Coastguard Worker     }
121*795d594fSAndroid Build Coastguard Worker 
122*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testEqualInt(int) register (after)
123*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
124*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testEqualInt(int a)125*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testEqualInt(int a) {
126*795d594fSAndroid Build Coastguard Worker         if (a == $inline$returnValueInt(a)) {
127*795d594fSAndroid Build Coastguard Worker             return 1;
128*795d594fSAndroid Build Coastguard Worker         } else {
129*795d594fSAndroid Build Coastguard Worker             return 0;
130*795d594fSAndroid Build Coastguard Worker         }
131*795d594fSAndroid Build Coastguard Worker     }
132*795d594fSAndroid Build Coastguard Worker 
133*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testNotEqualInt(int) register (after)
134*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
135*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testNotEqualInt(int a)136*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testNotEqualInt(int a) {
137*795d594fSAndroid Build Coastguard Worker         if (a != $inline$returnValueInt(a)) {
138*795d594fSAndroid Build Coastguard Worker             return 1;
139*795d594fSAndroid Build Coastguard Worker         } else {
140*795d594fSAndroid Build Coastguard Worker             return 0;
141*795d594fSAndroid Build Coastguard Worker         }
142*795d594fSAndroid Build Coastguard Worker     }
143*795d594fSAndroid Build Coastguard Worker 
144*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanInt(int) register (after)
145*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
146*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testGreaterThanInt(int a)147*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanInt(int a) {
148*795d594fSAndroid Build Coastguard Worker         if (a > $inline$returnValueInt(a)) {
149*795d594fSAndroid Build Coastguard Worker             return 1;
150*795d594fSAndroid Build Coastguard Worker         } else {
151*795d594fSAndroid Build Coastguard Worker             return 0;
152*795d594fSAndroid Build Coastguard Worker         }
153*795d594fSAndroid Build Coastguard Worker     }
154*795d594fSAndroid Build Coastguard Worker 
155*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanOrEqualInt(int) register (after)
156*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
157*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testGreaterThanOrEqualInt(int a)158*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanOrEqualInt(int a) {
159*795d594fSAndroid Build Coastguard Worker         if (a >= $inline$returnValueInt(a)) {
160*795d594fSAndroid Build Coastguard Worker             return 1;
161*795d594fSAndroid Build Coastguard Worker         } else {
162*795d594fSAndroid Build Coastguard Worker             return 0;
163*795d594fSAndroid Build Coastguard Worker         }
164*795d594fSAndroid Build Coastguard Worker     }
165*795d594fSAndroid Build Coastguard Worker 
166*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanInt(int) register (after)
167*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
168*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testLessThanInt(int a)169*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanInt(int a) {
170*795d594fSAndroid Build Coastguard Worker         if (a < $inline$returnValueInt(a)) {
171*795d594fSAndroid Build Coastguard Worker             return 1;
172*795d594fSAndroid Build Coastguard Worker         } else {
173*795d594fSAndroid Build Coastguard Worker             return 0;
174*795d594fSAndroid Build Coastguard Worker         }
175*795d594fSAndroid Build Coastguard Worker     }
176*795d594fSAndroid Build Coastguard Worker 
177*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanOrEqualInt(int) register (after)
178*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
179*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testLessThanOrEqualInt(int a)180*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanOrEqualInt(int a) {
181*795d594fSAndroid Build Coastguard Worker         if (a <= $inline$returnValueInt(a)) {
182*795d594fSAndroid Build Coastguard Worker             return 1;
183*795d594fSAndroid Build Coastguard Worker         } else {
184*795d594fSAndroid Build Coastguard Worker             return 0;
185*795d594fSAndroid Build Coastguard Worker         }
186*795d594fSAndroid Build Coastguard Worker     }
187*795d594fSAndroid Build Coastguard Worker 
$inline$returnValueInt(int a)188*795d594fSAndroid Build Coastguard Worker     private static int $inline$returnValueInt(int a) {
189*795d594fSAndroid Build Coastguard Worker         return a;
190*795d594fSAndroid Build Coastguard Worker     }
191*795d594fSAndroid Build Coastguard Worker 
192*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testEqualLong(long) register (after)
193*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
194*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testEqualLong(long a)195*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testEqualLong(long a) {
196*795d594fSAndroid Build Coastguard Worker         if (a == $inline$returnValueLong(a)) {
197*795d594fSAndroid Build Coastguard Worker             return 1;
198*795d594fSAndroid Build Coastguard Worker         } else {
199*795d594fSAndroid Build Coastguard Worker             return 0;
200*795d594fSAndroid Build Coastguard Worker         }
201*795d594fSAndroid Build Coastguard Worker     }
202*795d594fSAndroid Build Coastguard Worker 
203*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testNotEqualLong(long) register (after)
204*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
205*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testNotEqualLong(long a)206*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testNotEqualLong(long a) {
207*795d594fSAndroid Build Coastguard Worker         if (a != $inline$returnValueLong(a)) {
208*795d594fSAndroid Build Coastguard Worker             return 1;
209*795d594fSAndroid Build Coastguard Worker         } else {
210*795d594fSAndroid Build Coastguard Worker             return 0;
211*795d594fSAndroid Build Coastguard Worker         }
212*795d594fSAndroid Build Coastguard Worker     }
213*795d594fSAndroid Build Coastguard Worker 
214*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanLong(long) register (after)
215*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
216*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testGreaterThanLong(long a)217*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanLong(long a) {
218*795d594fSAndroid Build Coastguard Worker         if (a > $inline$returnValueLong(a)) {
219*795d594fSAndroid Build Coastguard Worker             return 1;
220*795d594fSAndroid Build Coastguard Worker         } else {
221*795d594fSAndroid Build Coastguard Worker             return 0;
222*795d594fSAndroid Build Coastguard Worker         }
223*795d594fSAndroid Build Coastguard Worker     }
224*795d594fSAndroid Build Coastguard Worker 
225*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanOrEqualLong(long) register (after)
226*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
227*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testGreaterThanOrEqualLong(long a)228*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanOrEqualLong(long a) {
229*795d594fSAndroid Build Coastguard Worker         if (a >= $inline$returnValueLong(a)) {
230*795d594fSAndroid Build Coastguard Worker             return 1;
231*795d594fSAndroid Build Coastguard Worker         } else {
232*795d594fSAndroid Build Coastguard Worker             return 0;
233*795d594fSAndroid Build Coastguard Worker         }
234*795d594fSAndroid Build Coastguard Worker     }
235*795d594fSAndroid Build Coastguard Worker 
236*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanLong(long) register (after)
237*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
238*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testLessThanLong(long a)239*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanLong(long a) {
240*795d594fSAndroid Build Coastguard Worker         if (a < $inline$returnValueLong(a)) {
241*795d594fSAndroid Build Coastguard Worker             return 1;
242*795d594fSAndroid Build Coastguard Worker         } else {
243*795d594fSAndroid Build Coastguard Worker             return 0;
244*795d594fSAndroid Build Coastguard Worker         }
245*795d594fSAndroid Build Coastguard Worker     }
246*795d594fSAndroid Build Coastguard Worker 
247*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanOrEqualLong(long) register (after)
248*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
249*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testLessThanOrEqualLong(long a)250*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanOrEqualLong(long a) {
251*795d594fSAndroid Build Coastguard Worker         if (a <= $inline$returnValueLong(a)) {
252*795d594fSAndroid Build Coastguard Worker             return 1;
253*795d594fSAndroid Build Coastguard Worker         } else {
254*795d594fSAndroid Build Coastguard Worker             return 0;
255*795d594fSAndroid Build Coastguard Worker         }
256*795d594fSAndroid Build Coastguard Worker     }
257*795d594fSAndroid Build Coastguard Worker 
$inline$returnValueLong(long a)258*795d594fSAndroid Build Coastguard Worker     private static long $inline$returnValueLong(long a) {
259*795d594fSAndroid Build Coastguard Worker         return a;
260*795d594fSAndroid Build Coastguard Worker     }
261*795d594fSAndroid Build Coastguard Worker 
262*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testEqualFloat(float) register (after)
263*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<NotEqual:z\d+>> NotEqual
264*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>     BooleanNot [<<NotEqual>>]
265*795d594fSAndroid Build Coastguard Worker     /// CHECK:                   Return [<<BNot>>]
$noinline$testEqualFloat(float a)266*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testEqualFloat(float a) {
267*795d594fSAndroid Build Coastguard Worker         if (a == $inline$returnValueFloat(a)) {
268*795d594fSAndroid Build Coastguard Worker             return 1;
269*795d594fSAndroid Build Coastguard Worker         } else {
270*795d594fSAndroid Build Coastguard Worker             return 0;
271*795d594fSAndroid Build Coastguard Worker         }
272*795d594fSAndroid Build Coastguard Worker     }
273*795d594fSAndroid Build Coastguard Worker 
274*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testNotEqualFloat(float) register (after)
275*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Equal:z\d+>>    Equal
276*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>     BooleanNot [<<Equal>>]
277*795d594fSAndroid Build Coastguard Worker     /// CHECK:                   Return [<<BNot>>]
$noinline$testNotEqualFloat(float a)278*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testNotEqualFloat(float a) {
279*795d594fSAndroid Build Coastguard Worker         if (a != $inline$returnValueFloat(a)) {
280*795d594fSAndroid Build Coastguard Worker             return 1;
281*795d594fSAndroid Build Coastguard Worker         } else {
282*795d594fSAndroid Build Coastguard Worker             return 0;
283*795d594fSAndroid Build Coastguard Worker         }
284*795d594fSAndroid Build Coastguard Worker     }
285*795d594fSAndroid Build Coastguard Worker 
286*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanFloat(float) register (after)
287*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
288*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testGreaterThanFloat(float a)289*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanFloat(float a) {
290*795d594fSAndroid Build Coastguard Worker         if (a > $inline$returnValueFloat(a)) {
291*795d594fSAndroid Build Coastguard Worker             return 1;
292*795d594fSAndroid Build Coastguard Worker         } else {
293*795d594fSAndroid Build Coastguard Worker             return 0;
294*795d594fSAndroid Build Coastguard Worker         }
295*795d594fSAndroid Build Coastguard Worker     }
296*795d594fSAndroid Build Coastguard Worker 
297*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanOrEqualFloat(float) register (after)
298*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<LessThan:z\d+>> LessThan
299*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>     BooleanNot [<<LessThan>>]
300*795d594fSAndroid Build Coastguard Worker     /// CHECK:                   Return [<<BNot>>]
$noinline$testGreaterThanOrEqualFloat(float a)301*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanOrEqualFloat(float a) {
302*795d594fSAndroid Build Coastguard Worker         if (a >= $inline$returnValueFloat(a)) {
303*795d594fSAndroid Build Coastguard Worker             return 1;
304*795d594fSAndroid Build Coastguard Worker         } else {
305*795d594fSAndroid Build Coastguard Worker             return 0;
306*795d594fSAndroid Build Coastguard Worker         }
307*795d594fSAndroid Build Coastguard Worker     }
308*795d594fSAndroid Build Coastguard Worker 
309*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanFloat(float) register (after)
310*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
311*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testLessThanFloat(float a)312*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanFloat(float a) {
313*795d594fSAndroid Build Coastguard Worker         if (a < $inline$returnValueFloat(a)) {
314*795d594fSAndroid Build Coastguard Worker             return 1;
315*795d594fSAndroid Build Coastguard Worker         } else {
316*795d594fSAndroid Build Coastguard Worker             return 0;
317*795d594fSAndroid Build Coastguard Worker         }
318*795d594fSAndroid Build Coastguard Worker     }
319*795d594fSAndroid Build Coastguard Worker 
320*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanOrEqualFloat(float) register (after)
321*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<GreaterThan:z\d+>> GreaterThan
322*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>        BooleanNot [<<GreaterThan>>]
323*795d594fSAndroid Build Coastguard Worker     /// CHECK:                      Return [<<BNot>>]
$noinline$testLessThanOrEqualFloat(float a)324*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanOrEqualFloat(float a) {
325*795d594fSAndroid Build Coastguard Worker         if (a <= $inline$returnValueFloat(a)) {
326*795d594fSAndroid Build Coastguard Worker             return 1;
327*795d594fSAndroid Build Coastguard Worker         } else {
328*795d594fSAndroid Build Coastguard Worker             return 0;
329*795d594fSAndroid Build Coastguard Worker         }
330*795d594fSAndroid Build Coastguard Worker     }
331*795d594fSAndroid Build Coastguard Worker 
$inline$returnValueFloat(float a)332*795d594fSAndroid Build Coastguard Worker     private static float $inline$returnValueFloat(float a) {
333*795d594fSAndroid Build Coastguard Worker         return a;
334*795d594fSAndroid Build Coastguard Worker     }
335*795d594fSAndroid Build Coastguard Worker 
336*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testEqualDouble(double) register (after)
337*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<NotEqual:z\d+>> NotEqual
338*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>     BooleanNot [<<NotEqual>>]
339*795d594fSAndroid Build Coastguard Worker     /// CHECK:                   Return [<<BNot>>]
$noinline$testEqualDouble(double a)340*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testEqualDouble(double a) {
341*795d594fSAndroid Build Coastguard Worker         if (a == $inline$returnValueDouble(a)) {
342*795d594fSAndroid Build Coastguard Worker             return 1;
343*795d594fSAndroid Build Coastguard Worker         } else {
344*795d594fSAndroid Build Coastguard Worker             return 0;
345*795d594fSAndroid Build Coastguard Worker         }
346*795d594fSAndroid Build Coastguard Worker     }
347*795d594fSAndroid Build Coastguard Worker 
348*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testNotEqualDouble(double) register (after)
349*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Equal:z\d+>>    Equal
350*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>     BooleanNot [<<Equal>>]
351*795d594fSAndroid Build Coastguard Worker     /// CHECK:                   Return [<<BNot>>]
$noinline$testNotEqualDouble(double a)352*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testNotEqualDouble(double a) {
353*795d594fSAndroid Build Coastguard Worker         if (a != $inline$returnValueDouble(a)) {
354*795d594fSAndroid Build Coastguard Worker             return 1;
355*795d594fSAndroid Build Coastguard Worker         } else {
356*795d594fSAndroid Build Coastguard Worker             return 0;
357*795d594fSAndroid Build Coastguard Worker         }
358*795d594fSAndroid Build Coastguard Worker     }
359*795d594fSAndroid Build Coastguard Worker 
360*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanDouble(double) register (after)
361*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
362*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testGreaterThanDouble(double a)363*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanDouble(double a) {
364*795d594fSAndroid Build Coastguard Worker         if (a > $inline$returnValueDouble(a)) {
365*795d594fSAndroid Build Coastguard Worker             return 1;
366*795d594fSAndroid Build Coastguard Worker         } else {
367*795d594fSAndroid Build Coastguard Worker             return 0;
368*795d594fSAndroid Build Coastguard Worker         }
369*795d594fSAndroid Build Coastguard Worker     }
370*795d594fSAndroid Build Coastguard Worker 
371*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testGreaterThanOrEqualDouble(double) register (after)
372*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<LessThan:z\d+>> LessThan
373*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>     BooleanNot [<<LessThan>>]
374*795d594fSAndroid Build Coastguard Worker     /// CHECK:                   Return [<<BNot>>]
$noinline$testGreaterThanOrEqualDouble(double a)375*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testGreaterThanOrEqualDouble(double a) {
376*795d594fSAndroid Build Coastguard Worker         if (a >= $inline$returnValueDouble(a)) {
377*795d594fSAndroid Build Coastguard Worker             return 1;
378*795d594fSAndroid Build Coastguard Worker         } else {
379*795d594fSAndroid Build Coastguard Worker             return 0;
380*795d594fSAndroid Build Coastguard Worker         }
381*795d594fSAndroid Build Coastguard Worker     }
382*795d594fSAndroid Build Coastguard Worker 
383*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanDouble(double) register (after)
384*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
385*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testLessThanDouble(double a)386*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanDouble(double a) {
387*795d594fSAndroid Build Coastguard Worker         if (a < $inline$returnValueDouble(a)) {
388*795d594fSAndroid Build Coastguard Worker             return 1;
389*795d594fSAndroid Build Coastguard Worker         } else {
390*795d594fSAndroid Build Coastguard Worker             return 0;
391*795d594fSAndroid Build Coastguard Worker         }
392*795d594fSAndroid Build Coastguard Worker     }
393*795d594fSAndroid Build Coastguard Worker 
394*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testLessThanOrEqualDouble(double) register (after)
395*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<GreaterThan:z\d+>> GreaterThan
396*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<BNot:z\d+>>        BooleanNot [<<GreaterThan>>]
397*795d594fSAndroid Build Coastguard Worker     /// CHECK:                      Return [<<BNot>>]
$noinline$testLessThanOrEqualDouble(double a)398*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testLessThanOrEqualDouble(double a) {
399*795d594fSAndroid Build Coastguard Worker         if (a <= $inline$returnValueDouble(a)) {
400*795d594fSAndroid Build Coastguard Worker             return 1;
401*795d594fSAndroid Build Coastguard Worker         } else {
402*795d594fSAndroid Build Coastguard Worker             return 0;
403*795d594fSAndroid Build Coastguard Worker         }
404*795d594fSAndroid Build Coastguard Worker     }
405*795d594fSAndroid Build Coastguard Worker 
$inline$returnValueDouble(double a)406*795d594fSAndroid Build Coastguard Worker     private static double $inline$returnValueDouble(double a) {
407*795d594fSAndroid Build Coastguard Worker         return a;
408*795d594fSAndroid Build Coastguard Worker     }
409*795d594fSAndroid Build Coastguard Worker 
410*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testEqualObject(java.lang.Object) register (after)
411*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const1:i\d+>> IntConstant 1
412*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const1>>]
$noinline$testEqualObject(Object a)413*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testEqualObject(Object a) {
414*795d594fSAndroid Build Coastguard Worker         if (a == $inline$returnValueObject(a)) {
415*795d594fSAndroid Build Coastguard Worker             return 1;
416*795d594fSAndroid Build Coastguard Worker         } else {
417*795d594fSAndroid Build Coastguard Worker             return 0;
418*795d594fSAndroid Build Coastguard Worker         }
419*795d594fSAndroid Build Coastguard Worker     }
420*795d594fSAndroid Build Coastguard Worker 
421*795d594fSAndroid Build Coastguard Worker     /// CHECK-START: int Main.$noinline$testNotEqualObject(java.lang.Object) register (after)
422*795d594fSAndroid Build Coastguard Worker     /// CHECK: <<Const0:i\d+>> IntConstant 0
423*795d594fSAndroid Build Coastguard Worker     /// CHECK:                 Return [<<Const0>>]
$noinline$testNotEqualObject(Object a)424*795d594fSAndroid Build Coastguard Worker     private static int $noinline$testNotEqualObject(Object a) {
425*795d594fSAndroid Build Coastguard Worker         if (a != $inline$returnValueObject(a)) {
426*795d594fSAndroid Build Coastguard Worker             return 1;
427*795d594fSAndroid Build Coastguard Worker         } else {
428*795d594fSAndroid Build Coastguard Worker             return 0;
429*795d594fSAndroid Build Coastguard Worker         }
430*795d594fSAndroid Build Coastguard Worker     }
431*795d594fSAndroid Build Coastguard Worker 
$inline$returnValueObject(Object a)432*795d594fSAndroid Build Coastguard Worker     private static Object $inline$returnValueObject(Object a) {
433*795d594fSAndroid Build Coastguard Worker         return a;
434*795d594fSAndroid Build Coastguard Worker     }
435*795d594fSAndroid Build Coastguard Worker 
assertEquals(int expected, int actual)436*795d594fSAndroid Build Coastguard Worker     static void assertEquals(int expected, int actual) {
437*795d594fSAndroid Build Coastguard Worker         if (expected != actual) {
438*795d594fSAndroid Build Coastguard Worker             throw new AssertionError("Expected " + expected + " got " + actual);
439*795d594fSAndroid Build Coastguard Worker         }
440*795d594fSAndroid Build Coastguard Worker     }
441*795d594fSAndroid Build Coastguard Worker }
442