1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple powerpc64le-unknown-linux-gnu -fast-isel -O0 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine i1 @TestULT(double %t0) { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestULT: 5*9880d681SAndroid Build Coastguard Worker; CHECK: mcrf 6*9880d681SAndroid Build Coastguard Worker; CHECK: blr 7*9880d681SAndroid Build Coastguard Workerentry: 8*9880d681SAndroid Build Coastguard Worker %t1 = fcmp ult double %t0, 0.000000e+00 9*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerbad: 12*9880d681SAndroid Build Coastguard Worker ret i1 false 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workergood: 15*9880d681SAndroid Build Coastguard Worker ret i1 true 16*9880d681SAndroid Build Coastguard Worker} 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine i1 @TestULE(double %t0) { 19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestULE: 20*9880d681SAndroid Build Coastguard Worker; CHECK: fcmpu 21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ble 22*9880d681SAndroid Build Coastguard Worker; CHECK: blr 23*9880d681SAndroid Build Coastguard Workerentry: 24*9880d681SAndroid Build Coastguard Worker %t1 = fcmp ule double %t0, 0.000000e+00 25*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerbad: 28*9880d681SAndroid Build Coastguard Worker ret i1 false 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workergood: 31*9880d681SAndroid Build Coastguard Worker ret i1 true 32*9880d681SAndroid Build Coastguard Worker} 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine i1 @TestUNE(double %t0) { 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestUNE: 36*9880d681SAndroid Build Coastguard Worker; CHECK: fcmpu 37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: bne 38*9880d681SAndroid Build Coastguard Worker; CHECK: blr 39*9880d681SAndroid Build Coastguard Workerentry: 40*9880d681SAndroid Build Coastguard Worker %t1 = fcmp une double %t0, 0.000000e+00 41*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerbad: 44*9880d681SAndroid Build Coastguard Worker ret i1 false 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workergood: 47*9880d681SAndroid Build Coastguard Worker ret i1 true 48*9880d681SAndroid Build Coastguard Worker} 49*9880d681SAndroid Build Coastguard Worker 50*9880d681SAndroid Build Coastguard Workerdefine i1 @TestUEQ(double %t0) { 51*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestUEQ: 52*9880d681SAndroid Build Coastguard Worker; CHECK: mcrf 53*9880d681SAndroid Build Coastguard Worker; CHECK: blr 54*9880d681SAndroid Build Coastguard Workerentry: 55*9880d681SAndroid Build Coastguard Worker %t1 = fcmp ueq double %t0, 0.000000e+00 56*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerbad: 59*9880d681SAndroid Build Coastguard Worker ret i1 false 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Workergood: 62*9880d681SAndroid Build Coastguard Worker ret i1 true 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerdefine i1 @TestUGT(double %t0) { 66*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestUGT: 67*9880d681SAndroid Build Coastguard Worker; CHECK: mcrf 68*9880d681SAndroid Build Coastguard Worker; CHECK: blr 69*9880d681SAndroid Build Coastguard Workerentry: 70*9880d681SAndroid Build Coastguard Worker %t1 = fcmp ugt double %t0, 0.000000e+00 71*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Workerbad: 74*9880d681SAndroid Build Coastguard Worker ret i1 false 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workergood: 77*9880d681SAndroid Build Coastguard Worker ret i1 true 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdefine i1 @TestUGE(double %t0) { 81*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestUGE: 82*9880d681SAndroid Build Coastguard Worker; CHECK: fcmpu 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: bge 84*9880d681SAndroid Build Coastguard Worker; CHECK: blr 85*9880d681SAndroid Build Coastguard Workerentry: 86*9880d681SAndroid Build Coastguard Worker %t1 = fcmp uge double %t0, 0.000000e+00 87*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerbad: 90*9880d681SAndroid Build Coastguard Worker ret i1 false 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Workergood: 93*9880d681SAndroid Build Coastguard Worker ret i1 true 94*9880d681SAndroid Build Coastguard Worker} 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Workerdefine i1 @TestOLT(double %t0) { 97*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestOLT: 98*9880d681SAndroid Build Coastguard Worker; CHECK: fcmpu 99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: blt 100*9880d681SAndroid Build Coastguard Worker; CHECK: blr 101*9880d681SAndroid Build Coastguard Workerentry: 102*9880d681SAndroid Build Coastguard Worker %t1 = fcmp olt double %t0, 0.000000e+00 103*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Workerbad: 106*9880d681SAndroid Build Coastguard Worker ret i1 false 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workergood: 109*9880d681SAndroid Build Coastguard Worker ret i1 true 110*9880d681SAndroid Build Coastguard Worker} 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Workerdefine i1 @TestOLE(double %t0) { 113*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestOLE: 114*9880d681SAndroid Build Coastguard Worker; CHECK: mcrf 115*9880d681SAndroid Build Coastguard Worker; CHECK: blr 116*9880d681SAndroid Build Coastguard Workerentry: 117*9880d681SAndroid Build Coastguard Worker %t1 = fcmp ole double %t0, 0.000000e+00 118*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Workerbad: 121*9880d681SAndroid Build Coastguard Worker ret i1 false 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Workergood: 124*9880d681SAndroid Build Coastguard Worker ret i1 true 125*9880d681SAndroid Build Coastguard Worker} 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Workerdefine i1 @TestONE(double %t0) { 128*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestONE: 129*9880d681SAndroid Build Coastguard Worker; CHECK: mcrf 130*9880d681SAndroid Build Coastguard Worker; CHECK: blr 131*9880d681SAndroid Build Coastguard Workerentry: 132*9880d681SAndroid Build Coastguard Worker %t1 = fcmp one double %t0, 0.000000e+00 133*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerbad: 136*9880d681SAndroid Build Coastguard Worker ret i1 false 137*9880d681SAndroid Build Coastguard Worker 138*9880d681SAndroid Build Coastguard Workergood: 139*9880d681SAndroid Build Coastguard Worker ret i1 true 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Workerdefine i1 @TestOEQ(double %t0) { 143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestOEQ: 144*9880d681SAndroid Build Coastguard Worker; CHECK: fcmpu 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: beq 146*9880d681SAndroid Build Coastguard Worker; CHECK: blr 147*9880d681SAndroid Build Coastguard Workerentry: 148*9880d681SAndroid Build Coastguard Worker %t1 = fcmp oeq double %t0, 0.000000e+00 149*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Workerbad: 152*9880d681SAndroid Build Coastguard Worker ret i1 false 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Workergood: 155*9880d681SAndroid Build Coastguard Worker ret i1 true 156*9880d681SAndroid Build Coastguard Worker} 157*9880d681SAndroid Build Coastguard Worker 158*9880d681SAndroid Build Coastguard Workerdefine i1 @TestOGT(double %t0) { 159*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestOGT: 160*9880d681SAndroid Build Coastguard Worker; CHECK: fcmpu 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: bgt 162*9880d681SAndroid Build Coastguard Worker; CHECK: blr 163*9880d681SAndroid Build Coastguard Workerentry: 164*9880d681SAndroid Build Coastguard Worker %t1 = fcmp ogt double %t0, 0.000000e+00 165*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 166*9880d681SAndroid Build Coastguard Worker 167*9880d681SAndroid Build Coastguard Workerbad: 168*9880d681SAndroid Build Coastguard Worker ret i1 false 169*9880d681SAndroid Build Coastguard Worker 170*9880d681SAndroid Build Coastguard Workergood: 171*9880d681SAndroid Build Coastguard Worker ret i1 true 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Workerdefine i1 @TestOGE(double %t0) { 175*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: TestOGE: 176*9880d681SAndroid Build Coastguard Worker; CHECK: mcrf 177*9880d681SAndroid Build Coastguard Worker; CHECK: blr 178*9880d681SAndroid Build Coastguard Workerentry: 179*9880d681SAndroid Build Coastguard Worker %t1 = fcmp oge double %t0, 0.000000e+00 180*9880d681SAndroid Build Coastguard Worker br i1 %t1, label %good, label %bad 181*9880d681SAndroid Build Coastguard Worker 182*9880d681SAndroid Build Coastguard Workerbad: 183*9880d681SAndroid Build Coastguard Worker ret i1 false 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workergood: 186*9880d681SAndroid Build Coastguard Worker ret i1 true 187*9880d681SAndroid Build Coastguard Worker} 188