1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefix=SDAG 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -fast-isel -fast-isel-abort=1 -mtriple=x86_64-apple-darwin10 | FileCheck %s --check-prefix=FAST 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_oeq(float %x, float %y) { 5*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_oeq 6*9880d681SAndroid Build Coastguard Worker; SDAG: cmpeqss %xmm1, %xmm0 7*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: movd %xmm0, %eax 8*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: andl $1, %eax 9*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_oeq 10*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 11*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: sete %al 12*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %cl 13*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: andb %al, %cl 14*9880d681SAndroid Build Coastguard Worker %1 = fcmp oeq float %x, %y 15*9880d681SAndroid Build Coastguard Worker ret i1 %1 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ogt(float %x, float %y) { 19*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ogt 20*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 21*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: seta %al 22*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 23*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: seta %al 24*9880d681SAndroid Build Coastguard Worker %1 = fcmp ogt float %x, %y 25*9880d681SAndroid Build Coastguard Worker ret i1 %1 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_oge(float %x, float %y) { 29*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_oge 30*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 31*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setae %al 32*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_oge 33*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 34*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setae %al 35*9880d681SAndroid Build Coastguard Worker %1 = fcmp oge float %x, %y 36*9880d681SAndroid Build Coastguard Worker ret i1 %1 37*9880d681SAndroid Build Coastguard Worker} 38*9880d681SAndroid Build Coastguard Worker 39*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_olt(float %x, float %y) { 40*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_olt 41*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm1 42*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: seta %al 43*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_olt 44*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm1 45*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: seta %al 46*9880d681SAndroid Build Coastguard Worker %1 = fcmp olt float %x, %y 47*9880d681SAndroid Build Coastguard Worker ret i1 %1 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ole(float %x, float %y) { 51*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ole 52*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm1 53*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setae %al 54*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ole 55*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm1 56*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setae %al 57*9880d681SAndroid Build Coastguard Worker %1 = fcmp ole float %x, %y 58*9880d681SAndroid Build Coastguard Worker ret i1 %1 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_one(float %x, float %y) { 62*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_one 63*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 64*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setne %al 65*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_one 66*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 67*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setne %al 68*9880d681SAndroid Build Coastguard Worker %1 = fcmp one float %x, %y 69*9880d681SAndroid Build Coastguard Worker ret i1 %1 70*9880d681SAndroid Build Coastguard Worker} 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ord(float %x, float %y) { 73*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ord 74*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 75*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setnp %al 76*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ord 77*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 78*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %al 79*9880d681SAndroid Build Coastguard Worker %1 = fcmp ord float %x, %y 80*9880d681SAndroid Build Coastguard Worker ret i1 %1 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_uno(float %x, float %y) { 84*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_uno 85*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 86*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setp %al 87*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_uno 88*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 89*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %al 90*9880d681SAndroid Build Coastguard Worker %1 = fcmp uno float %x, %y 91*9880d681SAndroid Build Coastguard Worker ret i1 %1 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ueq(float %x, float %y) { 95*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ueq 96*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 97*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: sete %al 98*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ueq 99*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 100*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: sete %al 101*9880d681SAndroid Build Coastguard Worker %1 = fcmp ueq float %x, %y 102*9880d681SAndroid Build Coastguard Worker ret i1 %1 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ugt(float %x, float %y) { 106*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ugt 107*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm1 108*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setb %al 109*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ugt 110*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm1 111*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setb %al 112*9880d681SAndroid Build Coastguard Worker %1 = fcmp ugt float %x, %y 113*9880d681SAndroid Build Coastguard Worker ret i1 %1 114*9880d681SAndroid Build Coastguard Worker} 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_uge(float %x, float %y) { 117*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_uge 118*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm1 119*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setbe %al 120*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_uge 121*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm1 122*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setbe %al 123*9880d681SAndroid Build Coastguard Worker %1 = fcmp uge float %x, %y 124*9880d681SAndroid Build Coastguard Worker ret i1 %1 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ult(float %x, float %y) { 128*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ult 129*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 130*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setb %al 131*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ult 132*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 133*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setb %al 134*9880d681SAndroid Build Coastguard Worker %1 = fcmp ult float %x, %y 135*9880d681SAndroid Build Coastguard Worker ret i1 %1 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ule(float %x, float %y) { 139*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ule 140*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm1, %xmm0 141*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setbe %al 142*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ule 143*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 144*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setbe %al 145*9880d681SAndroid Build Coastguard Worker %1 = fcmp ule float %x, %y 146*9880d681SAndroid Build Coastguard Worker ret i1 %1 147*9880d681SAndroid Build Coastguard Worker} 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_une(float %x, float %y) { 150*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_une 151*9880d681SAndroid Build Coastguard Worker; SDAG: cmpneqss %xmm1, %xmm0 152*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: movd %xmm0, %eax 153*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: andl $1, %eax 154*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_une 155*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm1, %xmm0 156*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setne %al 157*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %cl 158*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: orb %al, %cl 159*9880d681SAndroid Build Coastguard Worker %1 = fcmp une float %x, %y 160*9880d681SAndroid Build Coastguard Worker ret i1 %1 161*9880d681SAndroid Build Coastguard Worker} 162*9880d681SAndroid Build Coastguard Worker 163*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_eq(i32 %x, i32 %y) { 164*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_eq 165*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 166*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: sete %al 167*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_eq 168*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 169*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: sete %al 170*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i32 %x, %y 171*9880d681SAndroid Build Coastguard Worker ret i1 %1 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ne(i32 %x, i32 %y) { 175*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ne 176*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 177*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setne %al 178*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ne 179*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 180*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setne %al 181*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i32 %x, %y 182*9880d681SAndroid Build Coastguard Worker ret i1 %1 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ugt(i32 %x, i32 %y) { 186*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ugt 187*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %edi, %esi 188*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setb %al 189*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ugt 190*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 191*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: seta %al 192*9880d681SAndroid Build Coastguard Worker %1 = icmp ugt i32 %x, %y 193*9880d681SAndroid Build Coastguard Worker ret i1 %1 194*9880d681SAndroid Build Coastguard Worker} 195*9880d681SAndroid Build Coastguard Worker 196*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_uge(i32 %x, i32 %y) { 197*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_uge 198*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 199*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setae %al 200*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_uge 201*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 202*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setae %al 203*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i32 %x, %y 204*9880d681SAndroid Build Coastguard Worker ret i1 %1 205*9880d681SAndroid Build Coastguard Worker} 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ult(i32 %x, i32 %y) { 208*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ult 209*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 210*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setb %al 211*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ult 212*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 213*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setb %al 214*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i32 %x, %y 215*9880d681SAndroid Build Coastguard Worker ret i1 %1 216*9880d681SAndroid Build Coastguard Worker} 217*9880d681SAndroid Build Coastguard Worker 218*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ule(i32 %x, i32 %y) { 219*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ule 220*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 221*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setbe %al 222*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ule 223*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 224*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setbe %al 225*9880d681SAndroid Build Coastguard Worker %1 = icmp ule i32 %x, %y 226*9880d681SAndroid Build Coastguard Worker ret i1 %1 227*9880d681SAndroid Build Coastguard Worker} 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_sgt(i32 %x, i32 %y) { 230*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_sgt 231*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 232*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setg %al 233*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_sgt 234*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 235*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setg %al 236*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i32 %x, %y 237*9880d681SAndroid Build Coastguard Worker ret i1 %1 238*9880d681SAndroid Build Coastguard Worker} 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_sge(i32 %x, i32 %y) { 241*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_sge 242*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 243*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setge %al 244*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_sge 245*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 246*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setge %al 247*9880d681SAndroid Build Coastguard Worker %1 = icmp sge i32 %x, %y 248*9880d681SAndroid Build Coastguard Worker ret i1 %1 249*9880d681SAndroid Build Coastguard Worker} 250*9880d681SAndroid Build Coastguard Worker 251*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_slt(i32 %x, i32 %y) { 252*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_slt 253*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 254*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setl %al 255*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_slt 256*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 257*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setl %al 258*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i32 %x, %y 259*9880d681SAndroid Build Coastguard Worker ret i1 %1 260*9880d681SAndroid Build Coastguard Worker} 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_sle(i32 %x, i32 %y) { 263*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_sle 264*9880d681SAndroid Build Coastguard Worker; SDAG: cmpl %esi, %edi 265*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setle %al 266*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_sle 267*9880d681SAndroid Build Coastguard Worker; FAST: cmpl %esi, %edi 268*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setle %al 269*9880d681SAndroid Build Coastguard Worker %1 = icmp sle i32 %x, %y 270*9880d681SAndroid Build Coastguard Worker ret i1 %1 271*9880d681SAndroid Build Coastguard Worker} 272*9880d681SAndroid Build Coastguard Worker 273*9880d681SAndroid Build Coastguard Worker; Test cmp folding and condition optimization. 274*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_oeq2(float %x) { 275*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_oeq2 276*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 277*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setnp %al 278*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_oeq2 279*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 280*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %al 281*9880d681SAndroid Build Coastguard Worker %1 = fcmp oeq float %x, %x 282*9880d681SAndroid Build Coastguard Worker ret i1 %1 283*9880d681SAndroid Build Coastguard Worker} 284*9880d681SAndroid Build Coastguard Worker 285*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_oeq3(float %x) { 286*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_oeq3 287*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 288*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: cmpeqss %xmm1, %xmm0 289*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: movd %xmm0, %eax 290*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: andl $1, %eax 291*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_oeq3 292*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 293*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 294*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: sete %al 295*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %cl 296*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: andb %al, %cl 297*9880d681SAndroid Build Coastguard Worker %1 = fcmp oeq float %x, 0.000000e+00 298*9880d681SAndroid Build Coastguard Worker ret i1 %1 299*9880d681SAndroid Build Coastguard Worker} 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ogt2(float %x) { 302*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ogt2 303*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 304*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ogt2 305*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 306*9880d681SAndroid Build Coastguard Worker %1 = fcmp ogt float %x, %x 307*9880d681SAndroid Build Coastguard Worker ret i1 %1 308*9880d681SAndroid Build Coastguard Worker} 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ogt3(float %x) { 311*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ogt3 312*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 313*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm1, %xmm0 314*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: seta %al 315*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ogt3 316*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 317*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 318*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: seta %al 319*9880d681SAndroid Build Coastguard Worker %1 = fcmp ogt float %x, 0.000000e+00 320*9880d681SAndroid Build Coastguard Worker ret i1 %1 321*9880d681SAndroid Build Coastguard Worker} 322*9880d681SAndroid Build Coastguard Worker 323*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_oge2(float %x) { 324*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_oge2 325*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 326*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setnp %al 327*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_oge2 328*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 329*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %al 330*9880d681SAndroid Build Coastguard Worker %1 = fcmp oge float %x, %x 331*9880d681SAndroid Build Coastguard Worker ret i1 %1 332*9880d681SAndroid Build Coastguard Worker} 333*9880d681SAndroid Build Coastguard Worker 334*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_oge3(float %x) { 335*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_oge3 336*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 337*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm1, %xmm0 338*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setae %al 339*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_oge3 340*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 341*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 342*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setae %al 343*9880d681SAndroid Build Coastguard Worker %1 = fcmp oge float %x, 0.000000e+00 344*9880d681SAndroid Build Coastguard Worker ret i1 %1 345*9880d681SAndroid Build Coastguard Worker} 346*9880d681SAndroid Build Coastguard Worker 347*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_olt2(float %x) { 348*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_olt2 349*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 350*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_olt2 351*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 352*9880d681SAndroid Build Coastguard Worker %1 = fcmp olt float %x, %x 353*9880d681SAndroid Build Coastguard Worker ret i1 %1 354*9880d681SAndroid Build Coastguard Worker} 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_olt3(float %x) { 357*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_olt3 358*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 359*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm0, %xmm1 360*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: seta %al 361*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_olt3 362*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 363*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm0, %xmm1 364*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: seta %al 365*9880d681SAndroid Build Coastguard Worker %1 = fcmp olt float %x, 0.000000e+00 366*9880d681SAndroid Build Coastguard Worker ret i1 %1 367*9880d681SAndroid Build Coastguard Worker} 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ole2(float %x) { 370*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ole2 371*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 372*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setnp %al 373*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ole2 374*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 375*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %al 376*9880d681SAndroid Build Coastguard Worker %1 = fcmp ole float %x, %x 377*9880d681SAndroid Build Coastguard Worker ret i1 %1 378*9880d681SAndroid Build Coastguard Worker} 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ole3(float %x) { 381*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ole3 382*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 383*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm0, %xmm1 384*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setae %al 385*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ole3 386*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 387*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm0, %xmm1 388*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setae %al 389*9880d681SAndroid Build Coastguard Worker %1 = fcmp ole float %x, 0.000000e+00 390*9880d681SAndroid Build Coastguard Worker ret i1 %1 391*9880d681SAndroid Build Coastguard Worker} 392*9880d681SAndroid Build Coastguard Worker 393*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_one2(float %x) { 394*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_one2 395*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 396*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_one2 397*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 398*9880d681SAndroid Build Coastguard Worker %1 = fcmp one float %x, %x 399*9880d681SAndroid Build Coastguard Worker ret i1 %1 400*9880d681SAndroid Build Coastguard Worker} 401*9880d681SAndroid Build Coastguard Worker 402*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_one3(float %x) { 403*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_one3 404*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 405*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm1, %xmm0 406*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setne %al 407*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_one3 408*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 409*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 410*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setne %al 411*9880d681SAndroid Build Coastguard Worker %1 = fcmp one float %x, 0.000000e+00 412*9880d681SAndroid Build Coastguard Worker ret i1 %1 413*9880d681SAndroid Build Coastguard Worker} 414*9880d681SAndroid Build Coastguard Worker 415*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ord2(float %x) { 416*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ord2 417*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 418*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setnp %al 419*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ord2 420*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 421*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %al 422*9880d681SAndroid Build Coastguard Worker %1 = fcmp ord float %x, %x 423*9880d681SAndroid Build Coastguard Worker ret i1 %1 424*9880d681SAndroid Build Coastguard Worker} 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ord3(float %x) { 427*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ord3 428*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 429*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setnp %al 430*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ord3 431*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 432*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setnp %al 433*9880d681SAndroid Build Coastguard Worker %1 = fcmp ord float %x, 0.000000e+00 434*9880d681SAndroid Build Coastguard Worker ret i1 %1 435*9880d681SAndroid Build Coastguard Worker} 436*9880d681SAndroid Build Coastguard Worker 437*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_uno2(float %x) { 438*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_uno2 439*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 440*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setp %al 441*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_uno2 442*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 443*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %al 444*9880d681SAndroid Build Coastguard Worker %1 = fcmp uno float %x, %x 445*9880d681SAndroid Build Coastguard Worker ret i1 %1 446*9880d681SAndroid Build Coastguard Worker} 447*9880d681SAndroid Build Coastguard Worker 448*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_uno3(float %x) { 449*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_uno3 450*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 451*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setp %al 452*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_uno3 453*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 454*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %al 455*9880d681SAndroid Build Coastguard Worker %1 = fcmp uno float %x, 0.000000e+00 456*9880d681SAndroid Build Coastguard Worker ret i1 %1 457*9880d681SAndroid Build Coastguard Worker} 458*9880d681SAndroid Build Coastguard Worker 459*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ueq2(float %x) { 460*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ueq2 461*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 462*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ueq2 463*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 464*9880d681SAndroid Build Coastguard Worker %1 = fcmp ueq float %x, %x 465*9880d681SAndroid Build Coastguard Worker ret i1 %1 466*9880d681SAndroid Build Coastguard Worker} 467*9880d681SAndroid Build Coastguard Worker 468*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ueq3(float %x) { 469*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ueq3 470*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 471*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm1, %xmm0 472*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: sete %al 473*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ueq3 474*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 475*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 476*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: sete %al 477*9880d681SAndroid Build Coastguard Worker %1 = fcmp ueq float %x, 0.000000e+00 478*9880d681SAndroid Build Coastguard Worker ret i1 %1 479*9880d681SAndroid Build Coastguard Worker} 480*9880d681SAndroid Build Coastguard Worker 481*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ugt2(float %x) { 482*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ugt2 483*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 484*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setp %al 485*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ugt2 486*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 487*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %al 488*9880d681SAndroid Build Coastguard Worker %1 = fcmp ugt float %x, %x 489*9880d681SAndroid Build Coastguard Worker ret i1 %1 490*9880d681SAndroid Build Coastguard Worker} 491*9880d681SAndroid Build Coastguard Worker 492*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ugt3(float %x) { 493*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ugt3 494*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 495*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm0, %xmm1 496*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setb %al 497*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ugt3 498*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 499*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm0, %xmm1 500*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setb %al 501*9880d681SAndroid Build Coastguard Worker %1 = fcmp ugt float %x, 0.000000e+00 502*9880d681SAndroid Build Coastguard Worker ret i1 %1 503*9880d681SAndroid Build Coastguard Worker} 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_uge2(float %x) { 506*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_uge2 507*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 508*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_uge2 509*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 510*9880d681SAndroid Build Coastguard Worker %1 = fcmp uge float %x, %x 511*9880d681SAndroid Build Coastguard Worker ret i1 %1 512*9880d681SAndroid Build Coastguard Worker} 513*9880d681SAndroid Build Coastguard Worker 514*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_uge3(float %x) { 515*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_uge3 516*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 517*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm0, %xmm1 518*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setbe %al 519*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_uge3 520*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 521*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm0, %xmm1 522*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setbe %al 523*9880d681SAndroid Build Coastguard Worker %1 = fcmp uge float %x, 0.000000e+00 524*9880d681SAndroid Build Coastguard Worker ret i1 %1 525*9880d681SAndroid Build Coastguard Worker} 526*9880d681SAndroid Build Coastguard Worker 527*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ult2(float %x) { 528*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ult2 529*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 530*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setp %al 531*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ult2 532*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 533*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %al 534*9880d681SAndroid Build Coastguard Worker %1 = fcmp ult float %x, %x 535*9880d681SAndroid Build Coastguard Worker ret i1 %1 536*9880d681SAndroid Build Coastguard Worker} 537*9880d681SAndroid Build Coastguard Worker 538*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ult3(float %x) { 539*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ult3 540*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 541*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm1, %xmm0 542*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setb %al 543*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ult3 544*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 545*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 546*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setb %al 547*9880d681SAndroid Build Coastguard Worker %1 = fcmp ult float %x, 0.000000e+00 548*9880d681SAndroid Build Coastguard Worker ret i1 %1 549*9880d681SAndroid Build Coastguard Worker} 550*9880d681SAndroid Build Coastguard Worker 551*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ule2(float %x) { 552*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ule2 553*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 554*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ule2 555*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 556*9880d681SAndroid Build Coastguard Worker %1 = fcmp ule float %x, %x 557*9880d681SAndroid Build Coastguard Worker ret i1 %1 558*9880d681SAndroid Build Coastguard Worker} 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_ule3(float %x) { 561*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_ule3 562*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 563*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: ucomiss %xmm1, %xmm0 564*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setbe %al 565*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_ule3 566*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 567*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 568*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setbe %al 569*9880d681SAndroid Build Coastguard Worker %1 = fcmp ule float %x, 0.000000e+00 570*9880d681SAndroid Build Coastguard Worker ret i1 %1 571*9880d681SAndroid Build Coastguard Worker} 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_une2(float %x) { 574*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_une2 575*9880d681SAndroid Build Coastguard Worker; SDAG: ucomiss %xmm0, %xmm0 576*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: setp %al 577*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_une2 578*9880d681SAndroid Build Coastguard Worker; FAST: ucomiss %xmm0, %xmm0 579*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %al 580*9880d681SAndroid Build Coastguard Worker %1 = fcmp une float %x, %x 581*9880d681SAndroid Build Coastguard Worker ret i1 %1 582*9880d681SAndroid Build Coastguard Worker} 583*9880d681SAndroid Build Coastguard Worker 584*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @fcmp_une3(float %x) { 585*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: fcmp_une3 586*9880d681SAndroid Build Coastguard Worker; SDAG: xorps %xmm1, %xmm1 587*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: cmpneqss %xmm1, %xmm0 588*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: movd %xmm0, %eax 589*9880d681SAndroid Build Coastguard Worker; SDAG-NEXT: andl $1, %eax 590*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: fcmp_une3 591*9880d681SAndroid Build Coastguard Worker; FAST: xorps %xmm1, %xmm1 592*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: ucomiss %xmm1, %xmm0 593*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setne %al 594*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: setp %cl 595*9880d681SAndroid Build Coastguard Worker; FAST-NEXT: orb %al, %cl 596*9880d681SAndroid Build Coastguard Worker %1 = fcmp une float %x, 0.000000e+00 597*9880d681SAndroid Build Coastguard Worker ret i1 %1 598*9880d681SAndroid Build Coastguard Worker} 599*9880d681SAndroid Build Coastguard Worker 600*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_eq2(i32 %x) { 601*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_eq2 602*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 603*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_eq2 604*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 605*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i32 %x, %x 606*9880d681SAndroid Build Coastguard Worker ret i1 %1 607*9880d681SAndroid Build Coastguard Worker} 608*9880d681SAndroid Build Coastguard Worker 609*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ne2(i32 %x) { 610*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ne2 611*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 612*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ne2 613*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 614*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i32 %x, %x 615*9880d681SAndroid Build Coastguard Worker ret i1 %1 616*9880d681SAndroid Build Coastguard Worker} 617*9880d681SAndroid Build Coastguard Worker 618*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ugt2(i32 %x) { 619*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ugt2 620*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 621*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ugt2 622*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 623*9880d681SAndroid Build Coastguard Worker %1 = icmp ugt i32 %x, %x 624*9880d681SAndroid Build Coastguard Worker ret i1 %1 625*9880d681SAndroid Build Coastguard Worker} 626*9880d681SAndroid Build Coastguard Worker 627*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_uge2(i32 %x) { 628*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_uge2 629*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 630*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_uge2 631*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 632*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i32 %x, %x 633*9880d681SAndroid Build Coastguard Worker ret i1 %1 634*9880d681SAndroid Build Coastguard Worker} 635*9880d681SAndroid Build Coastguard Worker 636*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ult2(i32 %x) { 637*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ult2 638*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 639*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ult2 640*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 641*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i32 %x, %x 642*9880d681SAndroid Build Coastguard Worker ret i1 %1 643*9880d681SAndroid Build Coastguard Worker} 644*9880d681SAndroid Build Coastguard Worker 645*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_ule2(i32 %x) { 646*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_ule2 647*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 648*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_ule2 649*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 650*9880d681SAndroid Build Coastguard Worker %1 = icmp ule i32 %x, %x 651*9880d681SAndroid Build Coastguard Worker ret i1 %1 652*9880d681SAndroid Build Coastguard Worker} 653*9880d681SAndroid Build Coastguard Worker 654*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_sgt2(i32 %x) { 655*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_sgt2 656*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 657*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_sgt2 658*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 659*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i32 %x, %x 660*9880d681SAndroid Build Coastguard Worker ret i1 %1 661*9880d681SAndroid Build Coastguard Worker} 662*9880d681SAndroid Build Coastguard Worker 663*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_sge2(i32 %x) { 664*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_sge2 665*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 666*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_sge2 667*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 668*9880d681SAndroid Build Coastguard Worker %1 = icmp sge i32 %x, %x 669*9880d681SAndroid Build Coastguard Worker ret i1 %1 670*9880d681SAndroid Build Coastguard Worker} 671*9880d681SAndroid Build Coastguard Worker 672*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_slt2(i32 %x) { 673*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_slt2 674*9880d681SAndroid Build Coastguard Worker; SDAG: xorl %eax, %eax 675*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_slt2 676*9880d681SAndroid Build Coastguard Worker; FAST: xorl %eax, %eax 677*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i32 %x, %x 678*9880d681SAndroid Build Coastguard Worker ret i1 %1 679*9880d681SAndroid Build Coastguard Worker} 680*9880d681SAndroid Build Coastguard Worker 681*9880d681SAndroid Build Coastguard Workerdefine zeroext i1 @icmp_sle2(i32 %x) { 682*9880d681SAndroid Build Coastguard Worker; SDAG-LABEL: icmp_sle2 683*9880d681SAndroid Build Coastguard Worker; SDAG: movb $1, %al 684*9880d681SAndroid Build Coastguard Worker; FAST-LABEL: icmp_sle2 685*9880d681SAndroid Build Coastguard Worker; FAST: movb $1, %al 686*9880d681SAndroid Build Coastguard Worker %1 = icmp sle i32 %x, %x 687*9880d681SAndroid Build Coastguard Worker ret i1 %1 688*9880d681SAndroid Build Coastguard Worker} 689*9880d681SAndroid Build Coastguard Worker 690