1*9880d681SAndroid Build Coastguard Worker; RUN: llc -aarch64-atomic-cfg-tidy=0 -mtriple=aarch64-apple-darwin < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -fast-isel -fast-isel-abort=1 -aarch64-atomic-cfg-tidy=0 -mtriple=aarch64-apple-darwin < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oeq(float %x, float %y) { 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oeq 6*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.ne {{LBB.+_2}} 8*9880d681SAndroid Build Coastguard Worker %1 = fcmp oeq float %x, %y 9*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 10*9880d681SAndroid Build Coastguard Workerbb2: 11*9880d681SAndroid Build Coastguard Worker ret i32 1 12*9880d681SAndroid Build Coastguard Workerbb1: 13*9880d681SAndroid Build Coastguard Worker ret i32 0 14*9880d681SAndroid Build Coastguard Worker} 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ogt(float %x, float %y) { 17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ogt 18*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.le {{LBB.+_2}} 20*9880d681SAndroid Build Coastguard Worker %1 = fcmp ogt float %x, %y 21*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 22*9880d681SAndroid Build Coastguard Workerbb2: 23*9880d681SAndroid Build Coastguard Worker ret i32 1 24*9880d681SAndroid Build Coastguard Workerbb1: 25*9880d681SAndroid Build Coastguard Worker ret i32 0 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_oge(float %x, float %y) { 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_oge 30*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.lt {{LBB.+_2}} 32*9880d681SAndroid Build Coastguard Worker %1 = fcmp oge float %x, %y 33*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 34*9880d681SAndroid Build Coastguard Workerbb2: 35*9880d681SAndroid Build Coastguard Worker ret i32 1 36*9880d681SAndroid Build Coastguard Workerbb1: 37*9880d681SAndroid Build Coastguard Worker ret i32 0 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_olt(float %x, float %y) { 41*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_olt 42*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.pl {{LBB.+_2}} 44*9880d681SAndroid Build Coastguard Worker %1 = fcmp olt float %x, %y 45*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 46*9880d681SAndroid Build Coastguard Workerbb2: 47*9880d681SAndroid Build Coastguard Worker ret i32 1 48*9880d681SAndroid Build Coastguard Workerbb1: 49*9880d681SAndroid Build Coastguard Worker ret i32 0 50*9880d681SAndroid Build Coastguard Worker} 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ole(float %x, float %y) { 53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ole 54*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.hi {{LBB.+_2}} 56*9880d681SAndroid Build Coastguard Worker %1 = fcmp ole float %x, %y 57*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 58*9880d681SAndroid Build Coastguard Workerbb2: 59*9880d681SAndroid Build Coastguard Worker ret i32 1 60*9880d681SAndroid Build Coastguard Workerbb1: 61*9880d681SAndroid Build Coastguard Worker ret i32 0 62*9880d681SAndroid Build Coastguard Worker} 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_one(float %x, float %y) { 65*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_one 66*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.mi 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.gt 69*9880d681SAndroid Build Coastguard Worker %1 = fcmp one float %x, %y 70*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 71*9880d681SAndroid Build Coastguard Workerbb2: 72*9880d681SAndroid Build Coastguard Worker ret i32 1 73*9880d681SAndroid Build Coastguard Workerbb1: 74*9880d681SAndroid Build Coastguard Worker ret i32 0 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ord(float %x, float %y) { 78*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ord 79*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.vs {{LBB.+_2}} 81*9880d681SAndroid Build Coastguard Worker %1 = fcmp ord float %x, %y 82*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 83*9880d681SAndroid Build Coastguard Workerbb2: 84*9880d681SAndroid Build Coastguard Worker ret i32 1 85*9880d681SAndroid Build Coastguard Workerbb1: 86*9880d681SAndroid Build Coastguard Worker ret i32 0 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uno(float %x, float %y) { 90*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uno 91*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.vs {{LBB.+_2}} 93*9880d681SAndroid Build Coastguard Worker %1 = fcmp uno float %x, %y 94*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 95*9880d681SAndroid Build Coastguard Workerbb2: 96*9880d681SAndroid Build Coastguard Worker ret i32 1 97*9880d681SAndroid Build Coastguard Workerbb1: 98*9880d681SAndroid Build Coastguard Worker ret i32 0 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ueq(float %x, float %y) { 102*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ueq 103*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.eq {{LBB.+_2}} 105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.vs {{LBB.+_2}} 106*9880d681SAndroid Build Coastguard Worker %1 = fcmp ueq float %x, %y 107*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 108*9880d681SAndroid Build Coastguard Workerbb2: 109*9880d681SAndroid Build Coastguard Worker ret i32 1 110*9880d681SAndroid Build Coastguard Workerbb1: 111*9880d681SAndroid Build Coastguard Worker ret i32 0 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ugt(float %x, float %y) { 115*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ugt 116*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.ls {{LBB.+_2}} 118*9880d681SAndroid Build Coastguard Worker %1 = fcmp ugt float %x, %y 119*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 120*9880d681SAndroid Build Coastguard Workerbb2: 121*9880d681SAndroid Build Coastguard Worker ret i32 1 122*9880d681SAndroid Build Coastguard Workerbb1: 123*9880d681SAndroid Build Coastguard Worker ret i32 0 124*9880d681SAndroid Build Coastguard Worker} 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_uge(float %x, float %y) { 127*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_uge 128*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.mi {{LBB.+_2}} 130*9880d681SAndroid Build Coastguard Worker %1 = fcmp uge float %x, %y 131*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 132*9880d681SAndroid Build Coastguard Workerbb2: 133*9880d681SAndroid Build Coastguard Worker ret i32 1 134*9880d681SAndroid Build Coastguard Workerbb1: 135*9880d681SAndroid Build Coastguard Worker ret i32 0 136*9880d681SAndroid Build Coastguard Worker} 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ult(float %x, float %y) { 139*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ult 140*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.ge {{LBB.+_2}} 142*9880d681SAndroid Build Coastguard Worker %1 = fcmp ult float %x, %y 143*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 144*9880d681SAndroid Build Coastguard Workerbb2: 145*9880d681SAndroid Build Coastguard Worker ret i32 1 146*9880d681SAndroid Build Coastguard Workerbb1: 147*9880d681SAndroid Build Coastguard Worker ret i32 0 148*9880d681SAndroid Build Coastguard Worker} 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_ule(float %x, float %y) { 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_ule 152*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.gt {{LBB.+_2}} 154*9880d681SAndroid Build Coastguard Worker %1 = fcmp ule float %x, %y 155*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 156*9880d681SAndroid Build Coastguard Workerbb2: 157*9880d681SAndroid Build Coastguard Worker ret i32 1 158*9880d681SAndroid Build Coastguard Workerbb1: 159*9880d681SAndroid Build Coastguard Worker ret i32 0 160*9880d681SAndroid Build Coastguard Worker} 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Workerdefine i32 @fcmp_une(float %x, float %y) { 163*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fcmp_une 164*9880d681SAndroid Build Coastguard Worker; CHECK: fcmp s0, s1 165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.eq {{LBB.+_2}} 166*9880d681SAndroid Build Coastguard Worker %1 = fcmp une float %x, %y 167*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 168*9880d681SAndroid Build Coastguard Workerbb2: 169*9880d681SAndroid Build Coastguard Worker ret i32 1 170*9880d681SAndroid Build Coastguard Workerbb1: 171*9880d681SAndroid Build Coastguard Worker ret i32 0 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_eq(i32 %x, i32 %y) { 175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_eq 176*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.ne {{LBB.+_2}} 178*9880d681SAndroid Build Coastguard Worker %1 = icmp eq i32 %x, %y 179*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 180*9880d681SAndroid Build Coastguard Workerbb2: 181*9880d681SAndroid Build Coastguard Worker ret i32 1 182*9880d681SAndroid Build Coastguard Workerbb1: 183*9880d681SAndroid Build Coastguard Worker ret i32 0 184*9880d681SAndroid Build Coastguard Worker} 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ne(i32 %x, i32 %y) { 187*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ne 188*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.eq {{LBB.+_2}} 190*9880d681SAndroid Build Coastguard Worker %1 = icmp ne i32 %x, %y 191*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 192*9880d681SAndroid Build Coastguard Workerbb2: 193*9880d681SAndroid Build Coastguard Worker ret i32 1 194*9880d681SAndroid Build Coastguard Workerbb1: 195*9880d681SAndroid Build Coastguard Worker ret i32 0 196*9880d681SAndroid Build Coastguard Worker} 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ugt(i32 %x, i32 %y) { 199*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ugt 200*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.ls {{LBB.+_2}} 202*9880d681SAndroid Build Coastguard Worker %1 = icmp ugt i32 %x, %y 203*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 204*9880d681SAndroid Build Coastguard Workerbb2: 205*9880d681SAndroid Build Coastguard Worker ret i32 1 206*9880d681SAndroid Build Coastguard Workerbb1: 207*9880d681SAndroid Build Coastguard Worker ret i32 0 208*9880d681SAndroid Build Coastguard Worker} 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_uge(i32 %x, i32 %y) { 211*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_uge 212*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 213*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.lo {{LBB.+_2}} 214*9880d681SAndroid Build Coastguard Worker %1 = icmp uge i32 %x, %y 215*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 216*9880d681SAndroid Build Coastguard Workerbb2: 217*9880d681SAndroid Build Coastguard Worker ret i32 1 218*9880d681SAndroid Build Coastguard Workerbb1: 219*9880d681SAndroid Build Coastguard Worker ret i32 0 220*9880d681SAndroid Build Coastguard Worker} 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ult(i32 %x, i32 %y) { 223*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ult 224*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 225*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.hs {{LBB.+_2}} 226*9880d681SAndroid Build Coastguard Worker %1 = icmp ult i32 %x, %y 227*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 228*9880d681SAndroid Build Coastguard Workerbb2: 229*9880d681SAndroid Build Coastguard Worker ret i32 1 230*9880d681SAndroid Build Coastguard Workerbb1: 231*9880d681SAndroid Build Coastguard Worker ret i32 0 232*9880d681SAndroid Build Coastguard Worker} 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_ule(i32 %x, i32 %y) { 235*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_ule 236*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 237*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.hi {{LBB.+_2}} 238*9880d681SAndroid Build Coastguard Worker %1 = icmp ule i32 %x, %y 239*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 240*9880d681SAndroid Build Coastguard Workerbb2: 241*9880d681SAndroid Build Coastguard Worker ret i32 1 242*9880d681SAndroid Build Coastguard Workerbb1: 243*9880d681SAndroid Build Coastguard Worker ret i32 0 244*9880d681SAndroid Build Coastguard Worker} 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sgt(i32 %x, i32 %y) { 247*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sgt 248*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 249*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.le {{LBB.+_2}} 250*9880d681SAndroid Build Coastguard Worker %1 = icmp sgt i32 %x, %y 251*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 252*9880d681SAndroid Build Coastguard Workerbb2: 253*9880d681SAndroid Build Coastguard Worker ret i32 1 254*9880d681SAndroid Build Coastguard Workerbb1: 255*9880d681SAndroid Build Coastguard Worker ret i32 0 256*9880d681SAndroid Build Coastguard Worker} 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sge(i32 %x, i32 %y) { 259*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sge 260*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 261*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.lt {{LBB.+_2}} 262*9880d681SAndroid Build Coastguard Worker %1 = icmp sge i32 %x, %y 263*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 264*9880d681SAndroid Build Coastguard Workerbb2: 265*9880d681SAndroid Build Coastguard Worker ret i32 1 266*9880d681SAndroid Build Coastguard Workerbb1: 267*9880d681SAndroid Build Coastguard Worker ret i32 0 268*9880d681SAndroid Build Coastguard Worker} 269*9880d681SAndroid Build Coastguard Worker 270*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_slt(i32 %x, i32 %y) { 271*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_slt 272*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 273*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.ge {{LBB.+_2}} 274*9880d681SAndroid Build Coastguard Worker %1 = icmp slt i32 %x, %y 275*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 276*9880d681SAndroid Build Coastguard Workerbb2: 277*9880d681SAndroid Build Coastguard Worker ret i32 1 278*9880d681SAndroid Build Coastguard Workerbb1: 279*9880d681SAndroid Build Coastguard Worker ret i32 0 280*9880d681SAndroid Build Coastguard Worker} 281*9880d681SAndroid Build Coastguard Worker 282*9880d681SAndroid Build Coastguard Workerdefine i32 @icmp_sle(i32 %x, i32 %y) { 283*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: icmp_sle 284*9880d681SAndroid Build Coastguard Worker; CHECK: cmp w0, w1 285*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: b.gt {{LBB.+_2}} 286*9880d681SAndroid Build Coastguard Worker %1 = icmp sle i32 %x, %y 287*9880d681SAndroid Build Coastguard Worker br i1 %1, label %bb1, label %bb2 288*9880d681SAndroid Build Coastguard Workerbb2: 289*9880d681SAndroid Build Coastguard Worker ret i32 1 290*9880d681SAndroid Build Coastguard Workerbb1: 291*9880d681SAndroid Build Coastguard Worker ret i32 0 292*9880d681SAndroid Build Coastguard Worker} 293*9880d681SAndroid Build Coastguard Worker 294