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