1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oeq1(float %x) { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oeq1 5*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 6*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_1}} 7*9880d681SAndroid Build Coastguard Worker %1 = fcmp oeq float %x, %x 8*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 9*9880d681SAndroid Build Coastguard Workerbb2: 10*9880d681SAndroid Build Coastguard Worker ret i32 1 11*9880d681SAndroid Build Coastguard Workerbb1: 12*9880d681SAndroid Build Coastguard Worker ret i32 0 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oeq2(float %x) { 16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oeq2 17*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jne {{LBB.+_1}} 20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_1}} 21*9880d681SAndroid Build Coastguard Worker %1 = fcmp oeq float %x, 0.000000e+00 22*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 23*9880d681SAndroid Build Coastguard Workerbb2: 24*9880d681SAndroid Build Coastguard Worker ret i32 1 25*9880d681SAndroid Build Coastguard Workerbb1: 26*9880d681SAndroid Build Coastguard Worker ret i32 0 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ogt1(float %x) { 30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ogt1 31*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ucomiss 32*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 33*9880d681SAndroid Build Coastguard Worker %1 = fcmp ogt float %x, %x 34*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 35*9880d681SAndroid Build Coastguard Workerbb2: 36*9880d681SAndroid Build Coastguard Worker ret i32 1 37*9880d681SAndroid Build Coastguard Workerbb1: 38*9880d681SAndroid Build Coastguard Worker ret i32 0 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ogt2(float %x) { 42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ogt2 43*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jbe {{LBB.+_1}} 46*9880d681SAndroid Build Coastguard Worker %1 = fcmp ogt float %x, 0.000000e+00 47*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 48*9880d681SAndroid Build Coastguard Workerbb2: 49*9880d681SAndroid Build Coastguard Worker ret i32 1 50*9880d681SAndroid Build Coastguard Workerbb1: 51*9880d681SAndroid Build Coastguard Worker ret i32 0 52*9880d681SAndroid Build Coastguard Worker} 53*9880d681SAndroid Build Coastguard Worker 54*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oge1(float %x) { 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oge1 56*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_1}} 58*9880d681SAndroid Build Coastguard Worker %1 = fcmp oge float %x, %x 59*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 60*9880d681SAndroid Build Coastguard Workerbb2: 61*9880d681SAndroid Build Coastguard Worker ret i32 1 62*9880d681SAndroid Build Coastguard Workerbb1: 63*9880d681SAndroid Build Coastguard Worker ret i32 0 64*9880d681SAndroid Build Coastguard Worker} 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oge2(float %x) { 67*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oge2 68*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jb {{LBB.+_1}} 71*9880d681SAndroid Build Coastguard Worker %1 = fcmp oge float %x, 0.000000e+00 72*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 73*9880d681SAndroid Build Coastguard Workerbb2: 74*9880d681SAndroid Build Coastguard Worker ret i32 1 75*9880d681SAndroid Build Coastguard Workerbb1: 76*9880d681SAndroid Build Coastguard Worker ret i32 0 77*9880d681SAndroid Build Coastguard Worker} 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_olt1(float %x) { 80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_olt1 81*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ucomiss 82*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 83*9880d681SAndroid Build Coastguard Worker %1 = fcmp olt float %x, %x 84*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 85*9880d681SAndroid Build Coastguard Workerbb2: 86*9880d681SAndroid Build Coastguard Worker ret i32 1 87*9880d681SAndroid Build Coastguard Workerbb1: 88*9880d681SAndroid Build Coastguard Worker ret i32 0 89*9880d681SAndroid Build Coastguard Worker} 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_olt2(float %x) { 92*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_olt2 93*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm0, %xmm1 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jbe {{LBB.+_1}} 96*9880d681SAndroid Build Coastguard Worker %1 = fcmp olt float %x, 0.000000e+00 97*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 98*9880d681SAndroid Build Coastguard Workerbb2: 99*9880d681SAndroid Build Coastguard Worker ret i32 1 100*9880d681SAndroid Build Coastguard Workerbb1: 101*9880d681SAndroid Build Coastguard Worker ret i32 0 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ole1(float %x) { 105*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ole1 106*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_1}} 108*9880d681SAndroid Build Coastguard Worker %1 = fcmp ole float %x, %x 109*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 110*9880d681SAndroid Build Coastguard Workerbb2: 111*9880d681SAndroid Build Coastguard Worker ret i32 1 112*9880d681SAndroid Build Coastguard Workerbb1: 113*9880d681SAndroid Build Coastguard Worker ret i32 0 114*9880d681SAndroid Build Coastguard Worker} 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ole2(float %x) { 117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ole2 118*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm0, %xmm1 120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jb {{LBB.+_1}} 121*9880d681SAndroid Build Coastguard Worker %1 = fcmp ole float %x, 0.000000e+00 122*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 123*9880d681SAndroid Build Coastguard Workerbb2: 124*9880d681SAndroid Build Coastguard Worker ret i32 1 125*9880d681SAndroid Build Coastguard Workerbb1: 126*9880d681SAndroid Build Coastguard Worker ret i32 0 127*9880d681SAndroid Build Coastguard Worker} 128*9880d681SAndroid Build Coastguard Worker 129*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_one1(float %x) { 130*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_one1 131*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ucomiss 132*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 133*9880d681SAndroid Build Coastguard Worker %1 = fcmp one float %x, %x 134*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 135*9880d681SAndroid Build Coastguard Workerbb2: 136*9880d681SAndroid Build Coastguard Worker ret i32 1 137*9880d681SAndroid Build Coastguard Workerbb1: 138*9880d681SAndroid Build Coastguard Worker ret i32 0 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_one2(float %x) { 142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_one2 143*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je {{LBB.+_1}} 146*9880d681SAndroid Build Coastguard Worker %1 = fcmp one float %x, 0.000000e+00 147*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 148*9880d681SAndroid Build Coastguard Workerbb2: 149*9880d681SAndroid Build Coastguard Worker ret i32 1 150*9880d681SAndroid Build Coastguard Workerbb1: 151*9880d681SAndroid Build Coastguard Worker ret i32 0 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ord1(float %x) { 155*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ord1 156*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_1}} 158*9880d681SAndroid Build Coastguard Worker %1 = fcmp ord float %x, %x 159*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 160*9880d681SAndroid Build Coastguard Workerbb2: 161*9880d681SAndroid Build Coastguard Worker ret i32 1 162*9880d681SAndroid Build Coastguard Workerbb1: 163*9880d681SAndroid Build Coastguard Worker ret i32 0 164*9880d681SAndroid Build Coastguard Worker} 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ord2(float %x) { 167*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ord2 168*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_1}} 170*9880d681SAndroid Build Coastguard Worker %1 = fcmp ord float %x, 0.000000e+00 171*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 172*9880d681SAndroid Build Coastguard Workerbb2: 173*9880d681SAndroid Build Coastguard Worker ret i32 1 174*9880d681SAndroid Build Coastguard Workerbb1: 175*9880d681SAndroid Build Coastguard Worker ret i32 0 176*9880d681SAndroid Build Coastguard Worker} 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uno1(float %x) { 179*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uno1 180*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_2}} 182*9880d681SAndroid Build Coastguard Worker %1 = fcmp uno float %x, %x 183*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 184*9880d681SAndroid Build Coastguard Workerbb2: 185*9880d681SAndroid Build Coastguard Worker ret i32 1 186*9880d681SAndroid Build Coastguard Workerbb1: 187*9880d681SAndroid Build Coastguard Worker ret i32 0 188*9880d681SAndroid Build Coastguard Worker} 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uno2(float %x) { 191*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uno2 192*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jp {{LBB.+_2}} 194*9880d681SAndroid Build Coastguard Worker %1 = fcmp uno float %x, 0.000000e+00 195*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 196*9880d681SAndroid Build Coastguard Workerbb2: 197*9880d681SAndroid Build Coastguard Worker ret i32 1 198*9880d681SAndroid Build Coastguard Workerbb1: 199*9880d681SAndroid Build Coastguard Worker ret i32 0 200*9880d681SAndroid Build Coastguard Worker} 201*9880d681SAndroid Build Coastguard Worker 202*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ueq1(float %x) { 203*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ueq1 204*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ucomiss 205*9880d681SAndroid Build Coastguard Worker %1 = fcmp ueq float %x, %x 206*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 207*9880d681SAndroid Build Coastguard Workerbb2: 208*9880d681SAndroid Build Coastguard Worker ret i32 1 209*9880d681SAndroid Build Coastguard Workerbb1: 210*9880d681SAndroid Build Coastguard Worker ret i32 0 211*9880d681SAndroid Build Coastguard Worker} 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ueq2(float %x) { 214*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ueq2 215*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 216*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 217*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: je {{LBB.+_2}} 218*9880d681SAndroid Build Coastguard Worker %1 = fcmp ueq float %x, 0.000000e+00 219*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 220*9880d681SAndroid Build Coastguard Workerbb2: 221*9880d681SAndroid Build Coastguard Worker ret i32 1 222*9880d681SAndroid Build Coastguard Workerbb1: 223*9880d681SAndroid Build Coastguard Worker ret i32 0 224*9880d681SAndroid Build Coastguard Worker} 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ugt1(float %x) { 227*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ugt1 228*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 229*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jnp {{LBB.+_1}} 230*9880d681SAndroid Build Coastguard Worker %1 = fcmp ugt float %x, %x 231*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 232*9880d681SAndroid Build Coastguard Workerbb2: 233*9880d681SAndroid Build Coastguard Worker ret i32 1 234*9880d681SAndroid Build Coastguard Workerbb1: 235*9880d681SAndroid Build Coastguard Worker ret i32 0 236*9880d681SAndroid Build Coastguard Worker} 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ugt2(float %x) { 239*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ugt2 240*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 241*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm0, %xmm1 242*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jae {{LBB.+_1}} 243*9880d681SAndroid Build Coastguard Worker %1 = fcmp ugt float %x, 0.000000e+00 244*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 245*9880d681SAndroid Build Coastguard Workerbb2: 246*9880d681SAndroid Build Coastguard Worker ret i32 1 247*9880d681SAndroid Build Coastguard Workerbb1: 248*9880d681SAndroid Build Coastguard Worker ret i32 0 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uge1(float %x) { 252*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uge1 253*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ucomiss 254*9880d681SAndroid Build Coastguard Worker %1 = fcmp uge float %x, %x 255*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 256*9880d681SAndroid Build Coastguard Workerbb2: 257*9880d681SAndroid Build Coastguard Worker ret i32 1 258*9880d681SAndroid Build Coastguard Workerbb1: 259*9880d681SAndroid Build Coastguard Worker ret i32 0 260*9880d681SAndroid Build Coastguard Worker} 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uge2(float %x) { 263*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uge2 264*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 265*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm0, %xmm1 266*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ja {{LBB.+_1}} 267*9880d681SAndroid Build Coastguard Worker %1 = fcmp uge float %x, 0.000000e+00 268*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 269*9880d681SAndroid Build Coastguard Workerbb2: 270*9880d681SAndroid Build Coastguard Worker ret i32 1 271*9880d681SAndroid Build Coastguard Workerbb1: 272*9880d681SAndroid Build Coastguard Worker ret i32 0 273*9880d681SAndroid Build Coastguard Worker} 274*9880d681SAndroid Build Coastguard Worker 275*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ult1(float %x) { 276*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ult1 277*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 278*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jnp {{LBB.+_1}} 279*9880d681SAndroid Build Coastguard Worker %1 = fcmp ult float %x, %x 280*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 281*9880d681SAndroid Build Coastguard Workerbb2: 282*9880d681SAndroid Build Coastguard Worker ret i32 1 283*9880d681SAndroid Build Coastguard Workerbb1: 284*9880d681SAndroid Build Coastguard Worker ret i32 0 285*9880d681SAndroid Build Coastguard Worker} 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ult2(float %x) { 288*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ult2 289*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 290*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 291*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jae {{LBB.+_1}} 292*9880d681SAndroid Build Coastguard Worker %1 = fcmp ult float %x, 0.000000e+00 293*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 294*9880d681SAndroid Build Coastguard Workerbb2: 295*9880d681SAndroid Build Coastguard Worker ret i32 1 296*9880d681SAndroid Build Coastguard Workerbb1: 297*9880d681SAndroid Build Coastguard Worker ret i32 0 298*9880d681SAndroid Build Coastguard Worker} 299*9880d681SAndroid Build Coastguard Worker 300*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ule1(float %x) { 301*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ule1 302*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: ucomiss 303*9880d681SAndroid Build Coastguard Worker %1 = fcmp ule float %x, %x 304*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 305*9880d681SAndroid Build Coastguard Workerbb2: 306*9880d681SAndroid Build Coastguard Worker ret i32 1 307*9880d681SAndroid Build Coastguard Workerbb1: 308*9880d681SAndroid Build Coastguard Worker ret i32 0 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ule2(float %x) { 312*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ule2 313*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 314*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 315*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ja {{LBB.+_1}} 316*9880d681SAndroid Build Coastguard Worker %1 = fcmp ule float %x, 0.000000e+00 317*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 318*9880d681SAndroid Build Coastguard Workerbb2: 319*9880d681SAndroid Build Coastguard Worker ret i32 1 320*9880d681SAndroid Build Coastguard Workerbb1: 321*9880d681SAndroid Build Coastguard Worker ret i32 0 322*9880d681SAndroid Build Coastguard Worker} 323*9880d681SAndroid Build Coastguard Worker 324*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_une1(float %x) { 325*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_une1 326*9880d681SAndroid Build Coastguard Worker; CHECK: ucomiss %xmm0, %xmm0 327*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jnp {{LBB.+_1}} 328*9880d681SAndroid Build Coastguard Worker %1 = fcmp une float %x, %x 329*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 330*9880d681SAndroid Build Coastguard Workerbb2: 331*9880d681SAndroid Build Coastguard Worker ret i32 1 332*9880d681SAndroid Build Coastguard Workerbb1: 333*9880d681SAndroid Build Coastguard Worker ret i32 0 334*9880d681SAndroid Build Coastguard Worker} 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_une2(float %x) { 337*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_une2 338*9880d681SAndroid Build Coastguard Worker; CHECK: xorps %xmm1, %xmm1 339*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ucomiss %xmm1, %xmm0 340*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jne {{LBB.+_2}} 341*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: jnp {{LBB.+_1}} 342*9880d681SAndroid Build Coastguard Worker %1 = fcmp une float %x, 0.000000e+00 343*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 344*9880d681SAndroid Build Coastguard Workerbb2: 345*9880d681SAndroid Build Coastguard Worker ret i32 1 346*9880d681SAndroid Build Coastguard Workerbb1: 347*9880d681SAndroid Build Coastguard Worker ret i32 0 348*9880d681SAndroid Build Coastguard Worker} 349*9880d681SAndroid Build Coastguard Worker 350*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_eq(i32 %x) { 351*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_eq 352*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 353*9880d681SAndroid Build Coastguard Worker; CHECK: xorl %eax, %eax 354*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i32 %x, %x 355*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 356*9880d681SAndroid Build Coastguard Workerbb2: 357*9880d681SAndroid Build Coastguard Worker ret i32 1 358*9880d681SAndroid Build Coastguard Workerbb1: 359*9880d681SAndroid Build Coastguard Worker ret i32 0 360*9880d681SAndroid Build Coastguard Worker} 361*9880d681SAndroid Build Coastguard Worker 362*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ne(i32 %x) { 363*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ne 364*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 365*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 366*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i32 %x, %x 367*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 368*9880d681SAndroid Build Coastguard Workerbb2: 369*9880d681SAndroid Build Coastguard Worker ret i32 1 370*9880d681SAndroid Build Coastguard Workerbb1: 371*9880d681SAndroid Build Coastguard Worker ret i32 0 372*9880d681SAndroid Build Coastguard Worker} 373*9880d681SAndroid Build Coastguard Worker 374*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ugt(i32 %x) { 375*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ugt 376*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 377*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 378*9880d681SAndroid Build Coastguard Worker %1 = icmp ugt i32 %x, %x 379*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 380*9880d681SAndroid Build Coastguard Workerbb2: 381*9880d681SAndroid Build Coastguard Worker ret i32 1 382*9880d681SAndroid Build Coastguard Workerbb1: 383*9880d681SAndroid Build Coastguard Worker ret i32 0 384*9880d681SAndroid Build Coastguard Worker} 385*9880d681SAndroid Build Coastguard Worker 386*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_uge(i32 %x) { 387*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_uge 388*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 389*9880d681SAndroid Build Coastguard Worker; CHECK: xorl %eax, %eax 390*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i32 %x, %x 391*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 392*9880d681SAndroid Build Coastguard Workerbb2: 393*9880d681SAndroid Build Coastguard Worker ret i32 1 394*9880d681SAndroid Build Coastguard Workerbb1: 395*9880d681SAndroid Build Coastguard Worker ret i32 0 396*9880d681SAndroid Build Coastguard Worker} 397*9880d681SAndroid Build Coastguard Worker 398*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ult(i32 %x) { 399*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ult 400*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 401*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 402*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i32 %x, %x 403*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 404*9880d681SAndroid Build Coastguard Workerbb2: 405*9880d681SAndroid Build Coastguard Worker ret i32 1 406*9880d681SAndroid Build Coastguard Workerbb1: 407*9880d681SAndroid Build Coastguard Worker ret i32 0 408*9880d681SAndroid Build Coastguard Worker} 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ule(i32 %x) { 411*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ule 412*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 413*9880d681SAndroid Build Coastguard Worker; CHECK: xorl %eax, %eax 414*9880d681SAndroid Build Coastguard Worker %1 = icmp ule i32 %x, %x 415*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 416*9880d681SAndroid Build Coastguard Workerbb2: 417*9880d681SAndroid Build Coastguard Worker ret i32 1 418*9880d681SAndroid Build Coastguard Workerbb1: 419*9880d681SAndroid Build Coastguard Worker ret i32 0 420*9880d681SAndroid Build Coastguard Worker} 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sgt(i32 %x) { 423*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sgt 424*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 425*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 426*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i32 %x, %x 427*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 428*9880d681SAndroid Build Coastguard Workerbb2: 429*9880d681SAndroid Build Coastguard Worker ret i32 1 430*9880d681SAndroid Build Coastguard Workerbb1: 431*9880d681SAndroid Build Coastguard Worker ret i32 0 432*9880d681SAndroid Build Coastguard Worker} 433*9880d681SAndroid Build Coastguard Worker 434*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sge(i32 %x) { 435*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sge 436*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 437*9880d681SAndroid Build Coastguard Worker; CHECK: xorl %eax, %eax 438*9880d681SAndroid Build Coastguard Worker %1 = icmp sge i32 %x, %x 439*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 440*9880d681SAndroid Build Coastguard Workerbb2: 441*9880d681SAndroid Build Coastguard Worker ret i32 1 442*9880d681SAndroid Build Coastguard Workerbb1: 443*9880d681SAndroid Build Coastguard Worker ret i32 0 444*9880d681SAndroid Build Coastguard Worker} 445*9880d681SAndroid Build Coastguard Worker 446*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_slt(i32 %x) { 447*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_slt 448*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 449*9880d681SAndroid Build Coastguard Worker; CHECK: movl $1, %eax 450*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i32 %x, %x 451*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 452*9880d681SAndroid Build Coastguard Workerbb2: 453*9880d681SAndroid Build Coastguard Worker ret i32 1 454*9880d681SAndroid Build Coastguard Workerbb1: 455*9880d681SAndroid Build Coastguard Worker ret i32 0 456*9880d681SAndroid Build Coastguard Worker} 457*9880d681SAndroid Build Coastguard Worker 458*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sle(i32 %x) { 459*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sle 460*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmpl 461*9880d681SAndroid Build Coastguard Worker; CHECK: xorl %eax, %eax 462*9880d681SAndroid Build Coastguard Worker %1 = icmp sle i32 %x, %x 463*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 464*9880d681SAndroid Build Coastguard Workerbb2: 465*9880d681SAndroid Build Coastguard Worker ret i32 1 466*9880d681SAndroid Build Coastguard Workerbb1: 467*9880d681SAndroid Build Coastguard Worker ret i32 0 468*9880d681SAndroid Build Coastguard Worker} 469*9880d681SAndroid Build Coastguard Worker 470