xref: /aosp_15_r20/art/test/570-checker-select/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 
19*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$BoolCond_IntVarVar(boolean, int, int) register (after)
20*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{i\d+}},{{i\d+}},{{z\d+}}]
21*795d594fSAndroid Build Coastguard Worker 
22*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$BoolCond_IntVarVar(boolean, int, int) disassembly (after)
23*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
24*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
25*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel ne
26*795d594fSAndroid Build Coastguard Worker 
27*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$BoolCond_IntVarVar(boolean, int, int) disassembly (after)
28*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
29*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
30*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
31*795d594fSAndroid Build Coastguard Worker 
32*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$BoolCond_IntVarVar(boolean, int, int) disassembly (after)
33*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
34*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
35*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
36*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_IntVarVar(boolean cond, int x, int y)37*795d594fSAndroid Build Coastguard Worker   public static int $noinline$BoolCond_IntVarVar(boolean cond, int x, int y) {
38*795d594fSAndroid Build Coastguard Worker     return cond ? x : y;
39*795d594fSAndroid Build Coastguard Worker   }
40*795d594fSAndroid Build Coastguard Worker 
41*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$BoolCond_IntVarCst(boolean, int) register (after)
42*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{i\d+}},{{i\d+}},{{z\d+}}]
43*795d594fSAndroid Build Coastguard Worker 
44*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$BoolCond_IntVarCst(boolean, int) disassembly (after)
45*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
46*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
47*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csinc ne
48*795d594fSAndroid Build Coastguard Worker 
49*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$BoolCond_IntVarCst(boolean, int) disassembly (after)
50*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
51*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
52*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
53*795d594fSAndroid Build Coastguard Worker 
54*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$BoolCond_IntVarCst(boolean, int) disassembly (after)
55*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
56*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
57*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
58*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_IntVarCst(boolean cond, int x)59*795d594fSAndroid Build Coastguard Worker   public static int $noinline$BoolCond_IntVarCst(boolean cond, int x) {
60*795d594fSAndroid Build Coastguard Worker     return cond ? x : 1;
61*795d594fSAndroid Build Coastguard Worker   }
62*795d594fSAndroid Build Coastguard Worker 
63*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$BoolCond_IntCstVar(boolean, int) register (after)
64*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{i\d+}},{{i\d+}},{{z\d+}}]
65*795d594fSAndroid Build Coastguard Worker 
66*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$BoolCond_IntCstVar(boolean, int) disassembly (after)
67*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
68*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
69*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csinc eq
70*795d594fSAndroid Build Coastguard Worker 
71*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$BoolCond_IntCstVar(boolean, int) disassembly (after)
72*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
73*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
74*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
75*795d594fSAndroid Build Coastguard Worker 
76*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$BoolCond_IntCstVar(boolean, int) disassembly (after)
77*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
78*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
79*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
80*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_IntCstVar(boolean cond, int y)81*795d594fSAndroid Build Coastguard Worker   public static int $noinline$BoolCond_IntCstVar(boolean cond, int y) {
82*795d594fSAndroid Build Coastguard Worker     return cond ? 1 : y;
83*795d594fSAndroid Build Coastguard Worker   }
84*795d594fSAndroid Build Coastguard Worker 
85*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$BoolCond_LongVarVar(boolean, long, long) register (after)
86*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{j\d+}},{{j\d+}},{{z\d+}}]
87*795d594fSAndroid Build Coastguard Worker 
88*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$BoolCond_LongVarVar(boolean, long, long) disassembly (after)
89*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
90*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
91*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel ne
92*795d594fSAndroid Build Coastguard Worker 
93*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$BoolCond_LongVarVar(boolean, long, long) disassembly (after)
94*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
95*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
96*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/neq
97*795d594fSAndroid Build Coastguard Worker 
98*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: long Main.$noinline$BoolCond_LongVarVar(boolean, long, long) disassembly (after)
99*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
100*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
101*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
102*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovnz/ne
103*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_LongVarVar(boolean cond, long x, long y)104*795d594fSAndroid Build Coastguard Worker   public static long $noinline$BoolCond_LongVarVar(boolean cond, long x, long y) {
105*795d594fSAndroid Build Coastguard Worker     return cond ? x : y;
106*795d594fSAndroid Build Coastguard Worker   }
107*795d594fSAndroid Build Coastguard Worker 
108*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$BoolCond_LongVarCst(boolean, long) register (after)
109*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{j\d+}},{{j\d+}},{{z\d+}}]
110*795d594fSAndroid Build Coastguard Worker 
111*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$BoolCond_LongVarCst(boolean, long) disassembly (after)
112*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
113*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
114*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csinc ne
115*795d594fSAndroid Build Coastguard Worker 
116*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$BoolCond_LongVarCst(boolean, long) disassembly (after)
117*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
118*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
119*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/neq
120*795d594fSAndroid Build Coastguard Worker 
121*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: long Main.$noinline$BoolCond_LongVarCst(boolean, long) disassembly (after)
122*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
123*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
124*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
125*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovnz/ne
126*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_LongVarCst(boolean cond, long x)127*795d594fSAndroid Build Coastguard Worker   public static long $noinline$BoolCond_LongVarCst(boolean cond, long x) {
128*795d594fSAndroid Build Coastguard Worker     return cond ? x : 1L;
129*795d594fSAndroid Build Coastguard Worker   }
130*795d594fSAndroid Build Coastguard Worker 
131*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$BoolCond_LongCstVar(boolean, long) register (after)
132*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{j\d+}},{{j\d+}},{{z\d+}}]
133*795d594fSAndroid Build Coastguard Worker 
134*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$BoolCond_LongCstVar(boolean, long) disassembly (after)
135*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
136*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
137*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csinc eq
138*795d594fSAndroid Build Coastguard Worker 
139*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$BoolCond_LongCstVar(boolean, long) disassembly (after)
140*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
141*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
142*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/neq
143*795d594fSAndroid Build Coastguard Worker 
144*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: long Main.$noinline$BoolCond_LongCstVar(boolean, long) disassembly (after)
145*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
146*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
147*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
148*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovnz/ne
149*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_LongCstVar(boolean cond, long y)150*795d594fSAndroid Build Coastguard Worker   public static long $noinline$BoolCond_LongCstVar(boolean cond, long y) {
151*795d594fSAndroid Build Coastguard Worker     return cond ? 1L : y;
152*795d594fSAndroid Build Coastguard Worker   }
153*795d594fSAndroid Build Coastguard Worker 
154*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: float Main.$noinline$BoolCond_FloatVarVar(boolean, float, float) register (after)
155*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{f\d+}},{{f\d+}},{{z\d+}}]
156*795d594fSAndroid Build Coastguard Worker 
157*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: float Main.$noinline$BoolCond_FloatVarVar(boolean, float, float) disassembly (after)
158*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
159*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
160*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcsel ne
161*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_FloatVarVar(boolean cond, float x, float y)162*795d594fSAndroid Build Coastguard Worker   public static float $noinline$BoolCond_FloatVarVar(boolean cond, float x, float y) {
163*795d594fSAndroid Build Coastguard Worker     return cond ? x : y;
164*795d594fSAndroid Build Coastguard Worker   }
165*795d594fSAndroid Build Coastguard Worker 
166*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: float Main.$noinline$BoolCond_FloatVarCst(boolean, float) register (after)
167*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{f\d+}},{{f\d+}},{{z\d+}}]
168*795d594fSAndroid Build Coastguard Worker 
169*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: float Main.$noinline$BoolCond_FloatVarCst(boolean, float) disassembly (after)
170*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
171*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
172*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcsel ne
173*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_FloatVarCst(boolean cond, float x)174*795d594fSAndroid Build Coastguard Worker   public static float $noinline$BoolCond_FloatVarCst(boolean cond, float x) {
175*795d594fSAndroid Build Coastguard Worker     return cond ? x : 1.0f;
176*795d594fSAndroid Build Coastguard Worker   }
177*795d594fSAndroid Build Coastguard Worker 
178*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: float Main.$noinline$BoolCond_FloatCstVar(boolean, float) register (after)
179*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select [{{f\d+}},{{f\d+}},{{z\d+}}]
180*795d594fSAndroid Build Coastguard Worker 
181*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: float Main.$noinline$BoolCond_FloatCstVar(boolean, float) disassembly (after)
182*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
183*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
184*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcsel ne
185*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_FloatCstVar(boolean cond, float y)186*795d594fSAndroid Build Coastguard Worker   public static float $noinline$BoolCond_FloatCstVar(boolean cond, float y) {
187*795d594fSAndroid Build Coastguard Worker     return cond ? 1.0f : y;
188*795d594fSAndroid Build Coastguard Worker   }
189*795d594fSAndroid Build Coastguard Worker 
190*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$IntNonmatCond_IntVarVar(int, int, int, int) register (after)
191*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
192*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{i\d+}},{{i\d+}},<<Cond>>]
193*795d594fSAndroid Build Coastguard Worker 
194*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$IntNonmatCond_IntVarVar(int, int, int, int) disassembly (after)
195*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
196*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
197*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
198*795d594fSAndroid Build Coastguard Worker 
199*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$IntNonmatCond_IntVarVar(int, int, int, int) disassembly (after)
200*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
201*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{i\d+}},{{i\d+}},<<Cond>>]
202*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ng
203*795d594fSAndroid Build Coastguard Worker 
204*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$IntNonmatCond_IntVarVar(int, int, int, int) disassembly (after)
205*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
206*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{i\d+}},{{i\d+}},<<Cond>>]
207*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ng
208*795d594fSAndroid Build Coastguard Worker 
$noinline$IntNonmatCond_IntVarVar(int a, int b, int x, int y)209*795d594fSAndroid Build Coastguard Worker   public static int $noinline$IntNonmatCond_IntVarVar(int a, int b, int x, int y) {
210*795d594fSAndroid Build Coastguard Worker     return a > b ? x : y;
211*795d594fSAndroid Build Coastguard Worker   }
212*795d594fSAndroid Build Coastguard Worker 
213*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$IntMatCond_IntVarVar(int, int, int, int) register (after)
214*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
215*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:       <<Sel:i\d+>>  Select [{{i\d+}},{{i\d+}},{{z\d+}}]
216*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Add [<<Cond>>,<<Sel>>]
217*795d594fSAndroid Build Coastguard Worker 
218*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$IntMatCond_IntVarVar(int, int, int, int) disassembly (after)
219*795d594fSAndroid Build Coastguard Worker   /// CHECK:               LessThanOrEqual
220*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
221*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cset le
222*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
223*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
224*795d594fSAndroid Build Coastguard Worker 
225*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$IntMatCond_IntVarVar(int, int, int, int) disassembly (after)
226*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
227*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
228*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ng
229*795d594fSAndroid Build Coastguard Worker 
230*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$IntMatCond_IntVarVar(int, int, int, int) disassembly (after)
231*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
232*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
233*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ng
234*795d594fSAndroid Build Coastguard Worker 
$noinline$IntMatCond_IntVarVar(int a, int b, int x, int y)235*795d594fSAndroid Build Coastguard Worker   public static int $noinline$IntMatCond_IntVarVar(int a, int b, int x, int y) {
236*795d594fSAndroid Build Coastguard Worker     int result = (a > b ? x : y);
237*795d594fSAndroid Build Coastguard Worker     return result + (a > b ? 0 : 1);
238*795d594fSAndroid Build Coastguard Worker   }
239*795d594fSAndroid Build Coastguard Worker 
240*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$IntNonmatCond_LongVarVar(int, int, long, long) register (after)
241*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
242*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{j\d+}},{{j\d+}},<<Cond>>]
243*795d594fSAndroid Build Coastguard Worker 
244*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$IntNonmatCond_LongVarVar(int, int, long, long) disassembly (after)
245*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
246*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
247*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
248*795d594fSAndroid Build Coastguard Worker 
249*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$IntNonmatCond_LongVarVar(int, int, long, long) disassembly (after)
250*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
251*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{j\d+}},{{j\d+}},<<Cond>>]
252*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ngq
253*795d594fSAndroid Build Coastguard Worker 
254*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: long Main.$noinline$IntNonmatCond_LongVarVar(int, int, long, long) disassembly (after)
255*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
256*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{j\d+}},{{j\d+}},<<Cond>>]
257*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ng
258*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovle/ng
259*795d594fSAndroid Build Coastguard Worker 
$noinline$IntNonmatCond_LongVarVar(int a, int b, long x, long y)260*795d594fSAndroid Build Coastguard Worker   public static long $noinline$IntNonmatCond_LongVarVar(int a, int b, long x, long y) {
261*795d594fSAndroid Build Coastguard Worker     return a > b ? x : y;
262*795d594fSAndroid Build Coastguard Worker   }
263*795d594fSAndroid Build Coastguard Worker 
264*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$IntMatCond_LongVarVar(int, int, long, long) register (after)
265*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
266*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Sel1:j\d+>> Select [{{j\d+}},{{j\d+}},<<Cond>>]
267*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Sel2:j\d+>> Select [{{j\d+}},{{j\d+}},<<Cond>>]
268*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Add [<<Sel2>>,<<Sel1>>]
269*795d594fSAndroid Build Coastguard Worker 
270*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$IntMatCond_LongVarVar(int, int, long, long) disassembly (after)
271*795d594fSAndroid Build Coastguard Worker   /// CHECK:               LessThanOrEqual
272*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
273*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cset le
274*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
275*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
276*795d594fSAndroid Build Coastguard Worker 
277*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$IntMatCond_LongVarVar(int, int, long, long) disassembly (after)
278*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
279*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
280*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ngq
281*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
282*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/neq
283*795d594fSAndroid Build Coastguard Worker 
284*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: long Main.$noinline$IntMatCond_LongVarVar(int, int, long, long) disassembly (after)
285*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{i\d+}},{{i\d+}}]
286*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
287*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovle/ng
288*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovle/ng
289*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
290*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
291*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmovnz/ne
292*795d594fSAndroid Build Coastguard Worker 
$noinline$IntMatCond_LongVarVar(int a, int b, long x, long y)293*795d594fSAndroid Build Coastguard Worker   public static long $noinline$IntMatCond_LongVarVar(int a, int b, long x, long y) {
294*795d594fSAndroid Build Coastguard Worker     long result = (a > b ? x : y);
295*795d594fSAndroid Build Coastguard Worker     return result + (a > b ? 0L : 1L);
296*795d594fSAndroid Build Coastguard Worker   }
297*795d594fSAndroid Build Coastguard Worker 
298*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$LongNonmatCond_LongVarVar(long, long, long, long) register (after)
299*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{j\d+}},{{j\d+}}]
300*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
301*795d594fSAndroid Build Coastguard Worker 
302*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$LongNonmatCond_LongVarVar(long, long, long, long) disassembly (after)
303*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
304*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
305*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
306*795d594fSAndroid Build Coastguard Worker 
307*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$LongNonmatCond_LongVarVar(long, long, long, long) disassembly (after)
308*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{j\d+}},{{j\d+}}]
309*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
310*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ngq
311*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCond_LongVarVar(long a, long b, long x, long y)312*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCond_LongVarVar(long a, long b, long x, long y) {
313*795d594fSAndroid Build Coastguard Worker     return a > b ? x : y;
314*795d594fSAndroid Build Coastguard Worker   }
315*795d594fSAndroid Build Coastguard Worker 
316*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongEqNonmatCond_LongVarVar(long, long, long, long) disassembly (after)
317*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
318*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp {{r\d+}}, {{r\d+}}
319*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            it eq
320*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmpeq {{r\d+}}, {{r\d+}}
321*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            it eq
322*795d594fSAndroid Build Coastguard Worker 
$noinline$LongEqNonmatCond_LongVarVar(long a, long b, long x, long y)323*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongEqNonmatCond_LongVarVar(long a, long b, long x, long y) {
324*795d594fSAndroid Build Coastguard Worker     return a == b ? x : y;
325*795d594fSAndroid Build Coastguard Worker   }
326*795d594fSAndroid Build Coastguard Worker 
327*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar(long, long, long) disassembly (after)
328*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
329*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            mov ip, #52720
330*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            movt ip, #35243
331*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp {{r\d+}}, ip
332*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            sbcs ip, {{r\d+}}, #{{\d+}}
333*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            it ge
334*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar(long a, long x, long y)335*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar(long a, long x, long y) {
336*795d594fSAndroid Build Coastguard Worker     return a > 0x89ABCDEFL ? x : y;
337*795d594fSAndroid Build Coastguard Worker   }
338*795d594fSAndroid Build Coastguard Worker 
339*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar2(long, long, long) disassembly (after)
340*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
341*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            mov ip, #{{\d+}}
342*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            movt ip, #{{\d+}}
343*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp {{r\d+}}, ip
344*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar2(long a, long x, long y)345*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar2(long a, long x, long y) {
346*795d594fSAndroid Build Coastguard Worker     return a > 0x0123456789ABCDEFL ? x : y;
347*795d594fSAndroid Build Coastguard Worker   }
348*795d594fSAndroid Build Coastguard Worker 
349*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar3(long, long, long) disassembly (after)
350*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
351*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp {{r\d+}}, {{r\d+}}
352*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             sbcs
353*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             cmp
354*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar3(long a, long x, long y)355*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar3(long a, long x, long y) {
356*795d594fSAndroid Build Coastguard Worker     return a > 0x7FFFFFFFFFFFFFFFL ? x : y;
357*795d594fSAndroid Build Coastguard Worker   }
358*795d594fSAndroid Build Coastguard Worker 
359*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar4(long, long, long) disassembly (after)
360*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
361*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            orrs ip, {{r\d+}}, {{r\d+}}
362*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             cmp
363*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             sbcs
364*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar4(long a, long x, long y)365*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar4(long a, long x, long y) {
366*795d594fSAndroid Build Coastguard Worker     return a == 0 ? x : y;
367*795d594fSAndroid Build Coastguard Worker   }
368*795d594fSAndroid Build Coastguard Worker 
369*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar5(long, long, long) disassembly (after)
370*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
371*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            orrs ip, {{r\d+}}, {{r\d+}}
372*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             cmp
373*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             sbcs
374*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar5(long a, long x, long y)375*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar5(long a, long x, long y) {
376*795d594fSAndroid Build Coastguard Worker     return a != 0 ? x : y;
377*795d594fSAndroid Build Coastguard Worker   }
378*795d594fSAndroid Build Coastguard Worker 
379*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar6(long, long, long) disassembly (after)
380*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
381*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp {{r\d+}}, #0
382*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             cmp
383*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             sbcs
384*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar6(long a, long x, long y)385*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar6(long a, long x, long y) {
386*795d594fSAndroid Build Coastguard Worker     return a >= 0 ? x : y;
387*795d594fSAndroid Build Coastguard Worker   }
388*795d594fSAndroid Build Coastguard Worker 
389*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM: long Main.$noinline$LongNonmatCondCst_LongVarVar7(long, long, long) disassembly (after)
390*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
391*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp {{r\d+}}, #0
392*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             cmp
393*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT:             sbcs
394*795d594fSAndroid Build Coastguard Worker 
$noinline$LongNonmatCondCst_LongVarVar7(long a, long x, long y)395*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongNonmatCondCst_LongVarVar7(long a, long x, long y) {
396*795d594fSAndroid Build Coastguard Worker     return a < 0 ? x : y;
397*795d594fSAndroid Build Coastguard Worker   }
398*795d594fSAndroid Build Coastguard Worker 
399*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: long Main.$noinline$LongMatCond_LongVarVar(long, long, long, long) register (after)
400*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{j\d+}},{{j\d+}}]
401*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Sel1:j\d+>> Select [{{j\d+}},{{j\d+}},<<Cond>>]
402*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Sel2:j\d+>> Select [{{j\d+}},{{j\d+}},<<Cond>>]
403*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Add [<<Sel2>>,<<Sel1>>]
404*795d594fSAndroid Build Coastguard Worker 
405*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: long Main.$noinline$LongMatCond_LongVarVar(long, long, long, long) disassembly (after)
406*795d594fSAndroid Build Coastguard Worker   /// CHECK:               LessThanOrEqual
407*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cmp
408*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cset le
409*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
410*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
411*795d594fSAndroid Build Coastguard Worker 
412*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: long Main.$noinline$LongMatCond_LongVarVar(long, long, long, long) disassembly (after)
413*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{j\d+}},{{j\d+}}]
414*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
415*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovle/ngq
416*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{j\d+}},{{j\d+}},<<Cond>>]
417*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/neq
418*795d594fSAndroid Build Coastguard Worker 
$noinline$LongMatCond_LongVarVar(long a, long b, long x, long y)419*795d594fSAndroid Build Coastguard Worker   public static long $noinline$LongMatCond_LongVarVar(long a, long b, long x, long y) {
420*795d594fSAndroid Build Coastguard Worker     long result = (a > b ? x : y);
421*795d594fSAndroid Build Coastguard Worker     return result + (a > b ? 0L : 1L);
422*795d594fSAndroid Build Coastguard Worker   }
423*795d594fSAndroid Build Coastguard Worker 
424*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$FloatLtNonmatCond_IntVarVar(float, float, int, int) register (after)
425*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{f\d+}},{{f\d+}}]
426*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{i\d+}},{{i\d+}},<<Cond>>]
427*795d594fSAndroid Build Coastguard Worker 
428*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$FloatLtNonmatCond_IntVarVar(float, float, int, int) disassembly (after)
429*795d594fSAndroid Build Coastguard Worker   /// CHECK:               LessThanOrEqual
430*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
431*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcmp
432*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
433*795d594fSAndroid Build Coastguard Worker 
$noinline$FloatLtNonmatCond_IntVarVar(float a, float b, int x, int y)434*795d594fSAndroid Build Coastguard Worker   public static int $noinline$FloatLtNonmatCond_IntVarVar(float a, float b, int x, int y) {
435*795d594fSAndroid Build Coastguard Worker     return a > b ? x : y;
436*795d594fSAndroid Build Coastguard Worker   }
437*795d594fSAndroid Build Coastguard Worker 
438*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$FloatGtNonmatCond_IntVarVar(float, float, int, int) register (after)
439*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> GreaterThanOrEqual [{{f\d+}},{{f\d+}}]
440*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{i\d+}},{{i\d+}},<<Cond>>]
441*795d594fSAndroid Build Coastguard Worker 
442*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$FloatGtNonmatCond_IntVarVar(float, float, int, int) disassembly (after)
443*795d594fSAndroid Build Coastguard Worker   /// CHECK:               GreaterThanOrEqual
444*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
445*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcmp
446*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel hs
447*795d594fSAndroid Build Coastguard Worker 
$noinline$FloatGtNonmatCond_IntVarVar(float a, float b, int x, int y)448*795d594fSAndroid Build Coastguard Worker   public static int $noinline$FloatGtNonmatCond_IntVarVar(float a, float b, int x, int y) {
449*795d594fSAndroid Build Coastguard Worker     return a < b ? x : y;
450*795d594fSAndroid Build Coastguard Worker   }
451*795d594fSAndroid Build Coastguard Worker 
452*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: float Main.$noinline$FloatGtNonmatCond_FloatVarVar(float, float, float, float) register (after)
453*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> GreaterThanOrEqual [{{f\d+}},{{f\d+}}]
454*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Select [{{f\d+}},{{f\d+}},<<Cond>>]
455*795d594fSAndroid Build Coastguard Worker 
456*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: float Main.$noinline$FloatGtNonmatCond_FloatVarVar(float, float, float, float) disassembly (after)
457*795d594fSAndroid Build Coastguard Worker   /// CHECK:               GreaterThanOrEqual
458*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
459*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcmp
460*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcsel hs
461*795d594fSAndroid Build Coastguard Worker 
$noinline$FloatGtNonmatCond_FloatVarVar(float a, float b, float x, float y)462*795d594fSAndroid Build Coastguard Worker   public static float $noinline$FloatGtNonmatCond_FloatVarVar(float a, float b, float x, float y) {
463*795d594fSAndroid Build Coastguard Worker     return a < b ? x : y;
464*795d594fSAndroid Build Coastguard Worker   }
465*795d594fSAndroid Build Coastguard Worker 
466*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$FloatLtMatCond_IntVarVar(float, float, int, int) register (after)
467*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> LessThanOrEqual [{{f\d+}},{{f\d+}}]
468*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:       <<Sel:i\d+>>  Select [{{i\d+}},{{i\d+}},<<Cond>>]
469*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Add [<<Cond>>,<<Sel>>]
470*795d594fSAndroid Build Coastguard Worker 
471*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$FloatLtMatCond_IntVarVar(float, float, int, int) disassembly (after)
472*795d594fSAndroid Build Coastguard Worker   /// CHECK:               LessThanOrEqual
473*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcmp
474*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cset le
475*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
476*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel le
477*795d594fSAndroid Build Coastguard Worker 
$noinline$FloatLtMatCond_IntVarVar(float a, float b, int x, int y)478*795d594fSAndroid Build Coastguard Worker   public static int $noinline$FloatLtMatCond_IntVarVar(float a, float b, int x, int y) {
479*795d594fSAndroid Build Coastguard Worker     int result = (a > b ? x : y);
480*795d594fSAndroid Build Coastguard Worker     return result + (a > b ? 0 : 1);
481*795d594fSAndroid Build Coastguard Worker   }
482*795d594fSAndroid Build Coastguard Worker 
483*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$FloatGtMatCond_IntVarVar(float, float, int, int) register (after)
484*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> GreaterThanOrEqual [{{f\d+}},{{f\d+}}]
485*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:       <<Sel:i\d+>>  Select [{{i\d+}},{{i\d+}},<<Cond>>]
486*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     Add [<<Cond>>,<<Sel>>]
487*795d594fSAndroid Build Coastguard Worker 
488*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$FloatGtMatCond_IntVarVar(float, float, int, int) disassembly (after)
489*795d594fSAndroid Build Coastguard Worker   /// CHECK:               GreaterThanOrEqual
490*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcmp
491*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cset hs
492*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
493*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            csel hs
494*795d594fSAndroid Build Coastguard Worker 
$noinline$FloatGtMatCond_IntVarVar(float a, float b, int x, int y)495*795d594fSAndroid Build Coastguard Worker   public static int $noinline$FloatGtMatCond_IntVarVar(float a, float b, int x, int y) {
496*795d594fSAndroid Build Coastguard Worker     int result = (a < b ? x : y);
497*795d594fSAndroid Build Coastguard Worker     return result + (a < b ? 0 : 1);
498*795d594fSAndroid Build Coastguard Worker   }
499*795d594fSAndroid Build Coastguard Worker 
500*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: float Main.$noinline$FloatGtMatCond_FloatVarVar(float, float, float, float) register (after)
501*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> GreaterThanOrEqual
502*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:       <<Sel:f\d+>>  Select [{{f\d+}},{{f\d+}},<<Cond>>]
503*795d594fSAndroid Build Coastguard Worker 
504*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: float Main.$noinline$FloatGtMatCond_FloatVarVar(float, float, float, float) disassembly (after)
505*795d594fSAndroid Build Coastguard Worker   /// CHECK:               GreaterThanOrEqual
506*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcmp
507*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            cset hs
508*795d594fSAndroid Build Coastguard Worker   /// CHECK:               Select
509*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:            fcsel hs
510*795d594fSAndroid Build Coastguard Worker 
$noinline$FloatGtMatCond_FloatVarVar(float a, float b, float x, float y)511*795d594fSAndroid Build Coastguard Worker   public static float $noinline$FloatGtMatCond_FloatVarVar(float a, float b, float x, float y) {
512*795d594fSAndroid Build Coastguard Worker     float result = (a < b ? x : y);
513*795d594fSAndroid Build Coastguard Worker     return result + (a < b ? 0 : 1);
514*795d594fSAndroid Build Coastguard Worker   }
515*795d594fSAndroid Build Coastguard Worker 
516*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$BoolCond_0_m1(boolean) register (after)
517*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
518*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
519*795d594fSAndroid Build Coastguard Worker 
520*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$BoolCond_0_m1(boolean) disassembly (after)
521*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
522*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
523*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmp {{w\d+}}, #0x0 (0)
524*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     csetm {{w\d+}}, eq
525*795d594fSAndroid Build Coastguard Worker 
526*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$BoolCond_0_m1(boolean) disassembly (after)
527*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
528*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
529*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
530*795d594fSAndroid Build Coastguard Worker 
531*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$BoolCond_0_m1(boolean) disassembly (after)
532*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
533*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
534*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
535*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_0_m1(boolean cond)536*795d594fSAndroid Build Coastguard Worker   public static int $noinline$BoolCond_0_m1(boolean cond) {
537*795d594fSAndroid Build Coastguard Worker     return cond ? 0 : -1;
538*795d594fSAndroid Build Coastguard Worker   }
539*795d594fSAndroid Build Coastguard Worker 
540*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: int Main.$noinline$BoolCond_m1_0(boolean) register (after)
541*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
542*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
543*795d594fSAndroid Build Coastguard Worker 
544*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-ARM64: int Main.$noinline$BoolCond_m1_0(boolean) disassembly (after)
545*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
546*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
547*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     cmp {{w\d+}}, #0x0 (0)
548*795d594fSAndroid Build Coastguard Worker   /// CHECK-NEXT:                     csetm {{w\d+}}, ne
549*795d594fSAndroid Build Coastguard Worker 
550*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86_64: int Main.$noinline$BoolCond_m1_0(boolean) disassembly (after)
551*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
552*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
553*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
554*795d594fSAndroid Build Coastguard Worker 
555*795d594fSAndroid Build Coastguard Worker   /// CHECK-START-X86: int Main.$noinline$BoolCond_m1_0(boolean) disassembly (after)
556*795d594fSAndroid Build Coastguard Worker   /// CHECK:            <<Cond:z\d+>> ParameterValue
557*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          Select [{{i\d+}},{{i\d+}},<<Cond>>]
558*795d594fSAndroid Build Coastguard Worker   /// CHECK:                          cmovnz/ne
559*795d594fSAndroid Build Coastguard Worker 
$noinline$BoolCond_m1_0(boolean cond)560*795d594fSAndroid Build Coastguard Worker   public static int $noinline$BoolCond_m1_0(boolean cond) {
561*795d594fSAndroid Build Coastguard Worker     return cond ? -1 : 0;
562*795d594fSAndroid Build Coastguard Worker   }
563*795d594fSAndroid Build Coastguard Worker 
assertEqual(int expected, int actual)564*795d594fSAndroid Build Coastguard Worker   public static void assertEqual(int expected, int actual) {
565*795d594fSAndroid Build Coastguard Worker     if (expected != actual) {
566*795d594fSAndroid Build Coastguard Worker       throw new Error("Assertion failed: " + expected + " != " + actual);
567*795d594fSAndroid Build Coastguard Worker     }
568*795d594fSAndroid Build Coastguard Worker   }
569*795d594fSAndroid Build Coastguard Worker 
assertEqual(float expected, float actual)570*795d594fSAndroid Build Coastguard Worker   public static void assertEqual(float expected, float actual) {
571*795d594fSAndroid Build Coastguard Worker     if (expected != actual) {
572*795d594fSAndroid Build Coastguard Worker       throw new Error("Assertion failed: " + expected + " != " + actual);
573*795d594fSAndroid Build Coastguard Worker     }
574*795d594fSAndroid Build Coastguard Worker   }
575*795d594fSAndroid Build Coastguard Worker 
main(String[] args)576*795d594fSAndroid Build Coastguard Worker   public static void main(String[] args) {
577*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$BoolCond_IntVarVar(true, 5, 7));
578*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$BoolCond_IntVarVar(false, 5, 7));
579*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$BoolCond_IntVarCst(true, 5));
580*795d594fSAndroid Build Coastguard Worker     assertEqual(1, $noinline$BoolCond_IntVarCst(false, 5));
581*795d594fSAndroid Build Coastguard Worker     assertEqual(1, $noinline$BoolCond_IntCstVar(true, 7));
582*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$BoolCond_IntCstVar(false, 7));
583*795d594fSAndroid Build Coastguard Worker 
584*795d594fSAndroid Build Coastguard Worker     assertEqual(5L, $noinline$BoolCond_LongVarVar(true, 5L, 7L));
585*795d594fSAndroid Build Coastguard Worker     assertEqual(7L, $noinline$BoolCond_LongVarVar(false, 5L, 7L));
586*795d594fSAndroid Build Coastguard Worker     assertEqual(5L, $noinline$BoolCond_LongVarCst(true, 5L));
587*795d594fSAndroid Build Coastguard Worker     assertEqual(1L, $noinline$BoolCond_LongVarCst(false, 5L));
588*795d594fSAndroid Build Coastguard Worker     assertEqual(1L, $noinline$BoolCond_LongCstVar(true, 7L));
589*795d594fSAndroid Build Coastguard Worker     assertEqual(7L, $noinline$BoolCond_LongCstVar(false, 7L));
590*795d594fSAndroid Build Coastguard Worker 
591*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$BoolCond_FloatVarVar(true, 5, 7));
592*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$BoolCond_FloatVarVar(false, 5, 7));
593*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$BoolCond_FloatVarCst(true, 5));
594*795d594fSAndroid Build Coastguard Worker     assertEqual(1, $noinline$BoolCond_FloatVarCst(false, 5));
595*795d594fSAndroid Build Coastguard Worker     assertEqual(1, $noinline$BoolCond_FloatCstVar(true, 7));
596*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$BoolCond_FloatCstVar(false, 7));
597*795d594fSAndroid Build Coastguard Worker 
598*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$IntNonmatCond_IntVarVar(3, 2, 5, 7));
599*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$IntNonmatCond_IntVarVar(2, 3, 5, 7));
600*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$IntMatCond_IntVarVar(3, 2, 5, 7));
601*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$IntMatCond_IntVarVar(2, 3, 5, 7));
602*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$IntNonmatCond_LongVarVar(3, 2, 5L, 7L));
603*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$IntNonmatCond_LongVarVar(2, 3, 5L, 7L));
604*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$IntMatCond_LongVarVar(3, 2, 5L, 7L));
605*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$IntMatCond_LongVarVar(2, 3, 5L, 7L));
606*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$LongMatCond_LongVarVar(3L, 2L, 5L, 7L));
607*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$LongMatCond_LongVarVar(2L, 3L, 5L, 7L));
608*795d594fSAndroid Build Coastguard Worker 
609*795d594fSAndroid Build Coastguard Worker     assertEqual(0xAAAAAAAA55555555L, $noinline$LongNonmatCond_LongVarVar(3L,
610*795d594fSAndroid Build Coastguard Worker                                                                          2L,
611*795d594fSAndroid Build Coastguard Worker                                                                          0xAAAAAAAA55555555L,
612*795d594fSAndroid Build Coastguard Worker                                                                          0x8888888877777777L));
613*795d594fSAndroid Build Coastguard Worker     assertEqual(0x8888888877777777L, $noinline$LongNonmatCond_LongVarVar(2L,
614*795d594fSAndroid Build Coastguard Worker                                                                          2L,
615*795d594fSAndroid Build Coastguard Worker                                                                          0xAAAAAAAA55555555L,
616*795d594fSAndroid Build Coastguard Worker                                                                          0x8888888877777777L));
617*795d594fSAndroid Build Coastguard Worker     assertEqual(0x8888888877777777L, $noinline$LongNonmatCond_LongVarVar(2L,
618*795d594fSAndroid Build Coastguard Worker                                                                          3L,
619*795d594fSAndroid Build Coastguard Worker                                                                          0xAAAAAAAA55555555L,
620*795d594fSAndroid Build Coastguard Worker                                                                          0x8888888877777777L));
621*795d594fSAndroid Build Coastguard Worker     assertEqual(0xAAAAAAAA55555555L, $noinline$LongNonmatCond_LongVarVar(0x0000000100000000L,
622*795d594fSAndroid Build Coastguard Worker                                                                          0x00000000FFFFFFFFL,
623*795d594fSAndroid Build Coastguard Worker                                                                          0xAAAAAAAA55555555L,
624*795d594fSAndroid Build Coastguard Worker                                                                          0x8888888877777777L));
625*795d594fSAndroid Build Coastguard Worker     assertEqual(0x8888888877777777L, $noinline$LongNonmatCond_LongVarVar(0x00000000FFFFFFFFL,
626*795d594fSAndroid Build Coastguard Worker                                                                          0x0000000100000000L,
627*795d594fSAndroid Build Coastguard Worker                                                                          0xAAAAAAAA55555555L,
628*795d594fSAndroid Build Coastguard Worker                                                                          0x8888888877777777L));
629*795d594fSAndroid Build Coastguard Worker 
630*795d594fSAndroid Build Coastguard Worker     assertEqual(0x8888888877777777L, $noinline$LongEqNonmatCond_LongVarVar(2L,
631*795d594fSAndroid Build Coastguard Worker                                                                            3L,
632*795d594fSAndroid Build Coastguard Worker                                                                            0xAAAAAAAA55555555L,
633*795d594fSAndroid Build Coastguard Worker                                                                            0x8888888877777777L));
634*795d594fSAndroid Build Coastguard Worker     assertEqual(0xAAAAAAAA55555555L, $noinline$LongEqNonmatCond_LongVarVar(2L,
635*795d594fSAndroid Build Coastguard Worker                                                                            2L,
636*795d594fSAndroid Build Coastguard Worker                                                                            0xAAAAAAAA55555555L,
637*795d594fSAndroid Build Coastguard Worker                                                                            0x8888888877777777L));
638*795d594fSAndroid Build Coastguard Worker     assertEqual(0x8888888877777777L, $noinline$LongEqNonmatCond_LongVarVar(0x10000000000L,
639*795d594fSAndroid Build Coastguard Worker                                                                            0L,
640*795d594fSAndroid Build Coastguard Worker                                                                            0xAAAAAAAA55555555L,
641*795d594fSAndroid Build Coastguard Worker                                                                            0x8888888877777777L));
642*795d594fSAndroid Build Coastguard Worker 
643*795d594fSAndroid Build Coastguard Worker     assertEqual(5L, $noinline$LongNonmatCondCst_LongVarVar2(0x7FFFFFFFFFFFFFFFL, 5L, 7L));
644*795d594fSAndroid Build Coastguard Worker     assertEqual(7L, $noinline$LongNonmatCondCst_LongVarVar2(2L, 5L, 7L));
645*795d594fSAndroid Build Coastguard Worker 
646*795d594fSAndroid Build Coastguard Worker     assertEqual(7L, $noinline$LongNonmatCondCst_LongVarVar3(2L, 5L, 7L));
647*795d594fSAndroid Build Coastguard Worker 
648*795d594fSAndroid Build Coastguard Worker     long[] long_inputs = {
649*795d594fSAndroid Build Coastguard Worker         0L, 1L, -1L, Long.MIN_VALUE, Long.MAX_VALUE, 2L, 0x100000000L, 0xFFFFFFFF00000000L, -9000L};
650*795d594fSAndroid Build Coastguard Worker 
651*795d594fSAndroid Build Coastguard Worker     long[] expected_1 = {5L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L};
652*795d594fSAndroid Build Coastguard Worker 
653*795d594fSAndroid Build Coastguard Worker     for (int i = 0; i < long_inputs.length; i++) {
654*795d594fSAndroid Build Coastguard Worker       assertEqual(expected_1[i], $noinline$LongNonmatCondCst_LongVarVar4(long_inputs[i], 5L, 7L));
655*795d594fSAndroid Build Coastguard Worker     }
656*795d594fSAndroid Build Coastguard Worker 
657*795d594fSAndroid Build Coastguard Worker     long[] expected_2 = {7L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L};
658*795d594fSAndroid Build Coastguard Worker 
659*795d594fSAndroid Build Coastguard Worker     for (int i = 0; i < long_inputs.length; i++) {
660*795d594fSAndroid Build Coastguard Worker       assertEqual(expected_2[i], $noinline$LongNonmatCondCst_LongVarVar5(long_inputs[i], 5L, 7L));
661*795d594fSAndroid Build Coastguard Worker     }
662*795d594fSAndroid Build Coastguard Worker 
663*795d594fSAndroid Build Coastguard Worker     long[] expected_3 = {5L, 5L, 7L, 7L, 5L, 5L, 5L, 7L, 7L};
664*795d594fSAndroid Build Coastguard Worker 
665*795d594fSAndroid Build Coastguard Worker     for (int i = 0; i < long_inputs.length; i++) {
666*795d594fSAndroid Build Coastguard Worker       assertEqual(expected_3[i], $noinline$LongNonmatCondCst_LongVarVar6(long_inputs[i], 5L, 7L));
667*795d594fSAndroid Build Coastguard Worker     }
668*795d594fSAndroid Build Coastguard Worker 
669*795d594fSAndroid Build Coastguard Worker     long[] expected_4 = {7L, 7L, 5L, 5L, 7L, 7L, 7L, 5L, 5L};
670*795d594fSAndroid Build Coastguard Worker 
671*795d594fSAndroid Build Coastguard Worker     for (int i = 0; i < long_inputs.length; i++) {
672*795d594fSAndroid Build Coastguard Worker       assertEqual(expected_4[i], $noinline$LongNonmatCondCst_LongVarVar7(long_inputs[i], 5L, 7L));
673*795d594fSAndroid Build Coastguard Worker     }
674*795d594fSAndroid Build Coastguard Worker 
675*795d594fSAndroid Build Coastguard Worker     assertEqual(7L, $noinline$LongNonmatCondCst_LongVarVar7(0L, 5L, 7L));
676*795d594fSAndroid Build Coastguard Worker     assertEqual(7L, $noinline$LongNonmatCondCst_LongVarVar7(2L, 5L, 7L));
677*795d594fSAndroid Build Coastguard Worker     assertEqual(5L, $noinline$LongNonmatCondCst_LongVarVar7(-9000L, 5L, 7L));
678*795d594fSAndroid Build Coastguard Worker 
679*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$FloatLtNonmatCond_IntVarVar(3, 2, 5, 7));
680*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatLtNonmatCond_IntVarVar(2, 3, 5, 7));
681*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatLtNonmatCond_IntVarVar(Float.NaN, 2, 5, 7));
682*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatLtNonmatCond_IntVarVar(2, Float.NaN, 5, 7));
683*795d594fSAndroid Build Coastguard Worker 
684*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$FloatGtNonmatCond_IntVarVar(2, 3, 5, 7));
685*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatGtNonmatCond_IntVarVar(3, 2, 5, 7));
686*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatGtNonmatCond_IntVarVar(Float.NaN, 2, 5, 7));
687*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatGtNonmatCond_IntVarVar(2, Float.NaN, 5, 7));
688*795d594fSAndroid Build Coastguard Worker 
689*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$FloatGtNonmatCond_FloatVarVar(2, 3, 5, 7));
690*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatGtNonmatCond_FloatVarVar(3, 2, 5, 7));
691*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatGtNonmatCond_FloatVarVar(Float.NaN, 2, 5, 7));
692*795d594fSAndroid Build Coastguard Worker     assertEqual(7, $noinline$FloatGtNonmatCond_FloatVarVar(2, Float.NaN, 5, 7));
693*795d594fSAndroid Build Coastguard Worker 
694*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$FloatLtMatCond_IntVarVar(3, 2, 5, 7));
695*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatLtMatCond_IntVarVar(2, 3, 5, 7));
696*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatLtMatCond_IntVarVar(Float.NaN, 2, 5, 7));
697*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatLtMatCond_IntVarVar(2, Float.NaN, 5, 7));
698*795d594fSAndroid Build Coastguard Worker 
699*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$FloatGtMatCond_IntVarVar(2, 3, 5, 7));
700*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatGtMatCond_IntVarVar(3, 2, 5, 7));
701*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatGtMatCond_IntVarVar(Float.NaN, 2, 5, 7));
702*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatGtMatCond_IntVarVar(2, Float.NaN, 5, 7));
703*795d594fSAndroid Build Coastguard Worker 
704*795d594fSAndroid Build Coastguard Worker     assertEqual(5, $noinline$FloatGtMatCond_FloatVarVar(2, 3, 5, 7));
705*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatGtMatCond_FloatVarVar(3, 2, 5, 7));
706*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatGtMatCond_FloatVarVar(Float.NaN, 2, 5, 7));
707*795d594fSAndroid Build Coastguard Worker     assertEqual(8, $noinline$FloatGtMatCond_FloatVarVar(2, Float.NaN, 5, 7));
708*795d594fSAndroid Build Coastguard Worker 
709*795d594fSAndroid Build Coastguard Worker     assertEqual(0, $noinline$BoolCond_0_m1(true));
710*795d594fSAndroid Build Coastguard Worker     assertEqual(-1, $noinline$BoolCond_0_m1(false));
711*795d594fSAndroid Build Coastguard Worker     assertEqual(-1, $noinline$BoolCond_m1_0(true));
712*795d594fSAndroid Build Coastguard Worker     assertEqual(0, $noinline$BoolCond_m1_0(false));
713*795d594fSAndroid Build Coastguard Worker   }
714*795d594fSAndroid Build Coastguard Worker }
715