1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel-abort=1 -mcpu=mips32r2 \ 2*9880d681SAndroid Build Coastguard Worker; RUN: -verify-machineinstrs < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -relocation-model=pic -O0 -fast-isel-abort=1 -mcpu=mips32 \ 4*9880d681SAndroid Build Coastguard Worker; RUN: -verify-machineinstrs < %s | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@f1 = common global float 0.000000e+00, align 4 7*9880d681SAndroid Build Coastguard Worker@f2 = common global float 0.000000e+00, align 4 8*9880d681SAndroid Build Coastguard Worker@b1 = common global i32 0, align 4 9*9880d681SAndroid Build Coastguard Worker@d1 = common global double 0.000000e+00, align 8 10*9880d681SAndroid Build Coastguard Worker@d2 = common global double 0.000000e+00, align 8 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 13*9880d681SAndroid Build Coastguard Workerdefine void @feq1() { 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @f1, align 4 16*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @f2, align 4 17*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq float %0, %1 18*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: feq1: 19*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F2_GOT:[0-9]+]], %got(f2)(${{[0-9]+}}) 20*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F1_GOT:[0-9]+]], %got(f1)(${{[0-9]+}}) 21*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F2:[0-9]+]], 0($[[REG_F2_GOT]]) 22*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F1:[0-9]+]], 0($[[REG_F1_GOT]]) 23*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 24*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 25*9880d681SAndroid Build Coastguard Worker; CHECK: c.eq.s $f[[REG_F1]], $f[[REG_F2]] 26*9880d681SAndroid Build Coastguard Worker; CHECK: movt $[[REG_ZERO]], $[[REG_ONE]], $fcc0 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 29*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 34*9880d681SAndroid Build Coastguard Workerdefine void @fne1() { 35*9880d681SAndroid Build Coastguard Workerentry: 36*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @f1, align 4 37*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @f2, align 4 38*9880d681SAndroid Build Coastguard Worker %cmp = fcmp une float %0, %1 39*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fne1: 40*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F2_GOT:[0-9]+]], %got(f2)(${{[0-9]+}}) 41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F1_GOT:[0-9]+]], %got(f1)(${{[0-9]+}}) 42*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F2:[0-9]+]], 0($[[REG_F2_GOT]]) 43*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F1:[0-9]+]], 0($[[REG_F1_GOT]]) 44*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 45*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 46*9880d681SAndroid Build Coastguard Worker; CHECK: c.eq.s $f[[REG_F1]], $f[[REG_F2]] 47*9880d681SAndroid Build Coastguard Worker; CHECK: movf $[[REG_ZERO]], $[[REG_ONE]], $fcc0 48*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 49*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 50*9880d681SAndroid Build Coastguard Worker ret void 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 54*9880d681SAndroid Build Coastguard Workerdefine void @flt1() { 55*9880d681SAndroid Build Coastguard Workerentry: 56*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @f1, align 4 57*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @f2, align 4 58*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt float %0, %1 59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: flt1: 60*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F2_GOT:[0-9]+]], %got(f2)(${{[0-9]+}}) 61*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F1_GOT:[0-9]+]], %got(f1)(${{[0-9]+}}) 62*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F2:[0-9]+]], 0($[[REG_F2_GOT]]) 63*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F1:[0-9]+]], 0($[[REG_F1_GOT]]) 64*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 65*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 66*9880d681SAndroid Build Coastguard Worker; CHECK: c.olt.s $f[[REG_F1]], $f[[REG_F2]] 67*9880d681SAndroid Build Coastguard Worker; CHECK: movt $[[REG_ZERO]], $[[REG_ONE]], $fcc0 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 70*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 71*9880d681SAndroid Build Coastguard Worker ret void 72*9880d681SAndroid Build Coastguard Worker} 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 75*9880d681SAndroid Build Coastguard Workerdefine void @fgt1() { 76*9880d681SAndroid Build Coastguard Workerentry: 77*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @f1, align 4 78*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @f2, align 4 79*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt float %0, %1 80*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fgt1: 81*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F2_GOT:[0-9]+]], %got(f2)(${{[0-9]+}}) 82*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F1_GOT:[0-9]+]], %got(f1)(${{[0-9]+}}) 83*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F2:[0-9]+]], 0($[[REG_F2_GOT]]) 84*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F1:[0-9]+]], 0($[[REG_F1_GOT]]) 85*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 86*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 87*9880d681SAndroid Build Coastguard Worker; CHECK: c.ule.s $f[[REG_F1]], $f[[REG_F2]] 88*9880d681SAndroid Build Coastguard Worker; CHECK: movf $[[REG_ZERO]], $[[REG_ONE]], $fcc0 89*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 90*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 91*9880d681SAndroid Build Coastguard Worker ret void 92*9880d681SAndroid Build Coastguard Worker} 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 95*9880d681SAndroid Build Coastguard Workerdefine void @fle1() { 96*9880d681SAndroid Build Coastguard Workerentry: 97*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @f1, align 4 98*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @f2, align 4 99*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ole float %0, %1 100*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fle1: 101*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F2_GOT:[0-9]+]], %got(f2)(${{[0-9]+}}) 102*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F1_GOT:[0-9]+]], %got(f1)(${{[0-9]+}}) 103*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F2:[0-9]+]], 0($[[REG_F2_GOT]]) 104*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F1:[0-9]+]], 0($[[REG_F1_GOT]]) 105*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 106*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 107*9880d681SAndroid Build Coastguard Worker; CHECK: c.ole.s $f[[REG_F1]], $f[[REG_F2]] 108*9880d681SAndroid Build Coastguard Worker; CHECK: movt $[[REG_ZERO]], $[[REG_ONE]], $fcc0 109*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 110*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 111*9880d681SAndroid Build Coastguard Worker ret void 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 115*9880d681SAndroid Build Coastguard Workerdefine void @fge1() { 116*9880d681SAndroid Build Coastguard Workerentry: 117*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @f1, align 4 118*9880d681SAndroid Build Coastguard Worker %1 = load float, float* @f2, align 4 119*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge float %0, %1 120*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fge1: 121*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F2_GOT:[0-9]+]], %got(f2)(${{[0-9]+}}) 122*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_F1_GOT:[0-9]+]], %got(f1)(${{[0-9]+}}) 123*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F2:[0-9]+]], 0($[[REG_F2_GOT]]) 124*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lwc1 $f[[REG_F1:[0-9]+]], 0($[[REG_F1_GOT]]) 125*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 126*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 127*9880d681SAndroid Build Coastguard Worker; CHECK: c.ult.s $f[[REG_F1]], $f[[REG_F2]] 128*9880d681SAndroid Build Coastguard Worker; CHECK: movf $[[REG_ZERO]], $[[REG_ONE]], $fcc0 129*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 130*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 131*9880d681SAndroid Build Coastguard Worker ret void 132*9880d681SAndroid Build Coastguard Worker} 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 135*9880d681SAndroid Build Coastguard Workerdefine void @deq1() { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @d1, align 8 138*9880d681SAndroid Build Coastguard Worker %1 = load double, double* @d2, align 8 139*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq double %0, %1 140*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: deq1: 141*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D2_GOT:[0-9]+]], %got(d2)(${{[0-9]+}}) 142*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D1_GOT:[0-9]+]], %got(d1)(${{[0-9]+}}) 143*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D2:[0-9]+]], 0($[[REG_D2_GOT]]) 144*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D1:[0-9]+]], 0($[[REG_D1_GOT]]) 145*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 146*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 147*9880d681SAndroid Build Coastguard Worker; CHECK: c.eq.d $f[[REG_D1]], $f[[REG_D2]] 148*9880d681SAndroid Build Coastguard Worker; CHECK: movt $[[REG_ZERO]], $[[REG_ONE]], $fcc0 149*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 150*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 151*9880d681SAndroid Build Coastguard Worker ret void 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 155*9880d681SAndroid Build Coastguard Workerdefine void @dne1() { 156*9880d681SAndroid Build Coastguard Workerentry: 157*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @d1, align 8 158*9880d681SAndroid Build Coastguard Worker %1 = load double, double* @d2, align 8 159*9880d681SAndroid Build Coastguard Worker %cmp = fcmp une double %0, %1 160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: dne1: 161*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D2_GOT:[0-9]+]], %got(d2)(${{[0-9]+}}) 162*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D1_GOT:[0-9]+]], %got(d1)(${{[0-9]+}}) 163*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D2:[0-9]+]], 0($[[REG_D2_GOT]]) 164*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D1:[0-9]+]], 0($[[REG_D1_GOT]]) 165*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 166*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 167*9880d681SAndroid Build Coastguard Worker; CHECK: c.eq.d $f[[REG_D1]], $f[[REG_D2]] 168*9880d681SAndroid Build Coastguard Worker; CHECK: movf $[[REG_ZERO]], $[[REG_ONE]], $fcc0 169*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 170*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 171*9880d681SAndroid Build Coastguard Worker ret void 172*9880d681SAndroid Build Coastguard Worker} 173*9880d681SAndroid Build Coastguard Worker 174*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 175*9880d681SAndroid Build Coastguard Workerdefine void @dlt1() { 176*9880d681SAndroid Build Coastguard Workerentry: 177*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @d1, align 8 178*9880d681SAndroid Build Coastguard Worker %1 = load double, double* @d2, align 8 179*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt double %0, %1 180*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: dlt1: 181*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D2_GOT:[0-9]+]], %got(d2)(${{[0-9]+}}) 182*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D1_GOT:[0-9]+]], %got(d1)(${{[0-9]+}}) 183*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D2:[0-9]+]], 0($[[REG_D2_GOT]]) 184*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D1:[0-9]+]], 0($[[REG_D1_GOT]]) 185*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 186*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 187*9880d681SAndroid Build Coastguard Worker; CHECK: c.olt.d $f[[REG_D1]], $f[[REG_D2]] 188*9880d681SAndroid Build Coastguard Worker; CHECK: movt $[[REG_ZERO]], $[[REG_ONE]], $fcc0 189*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 190*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 191*9880d681SAndroid Build Coastguard Worker ret void 192*9880d681SAndroid Build Coastguard Worker} 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 195*9880d681SAndroid Build Coastguard Workerdefine void @dgt1() { 196*9880d681SAndroid Build Coastguard Workerentry: 197*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @d1, align 8 198*9880d681SAndroid Build Coastguard Worker %1 = load double, double* @d2, align 8 199*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt double %0, %1 200*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: dgt1: 201*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D2_GOT:[0-9]+]], %got(d2)(${{[0-9]+}}) 202*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D1_GOT:[0-9]+]], %got(d1)(${{[0-9]+}}) 203*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D2:[0-9]+]], 0($[[REG_D2_GOT]]) 204*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D1:[0-9]+]], 0($[[REG_D1_GOT]]) 205*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 206*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 207*9880d681SAndroid Build Coastguard Worker; CHECK: c.ule.d $f[[REG_D1]], $f[[REG_D2]] 208*9880d681SAndroid Build Coastguard Worker; CHECK: movf $[[REG_ZERO]], $[[REG_ONE]], $fcc0 209*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 210*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 211*9880d681SAndroid Build Coastguard Worker ret void 212*9880d681SAndroid Build Coastguard Worker} 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 215*9880d681SAndroid Build Coastguard Workerdefine void @dle1() { 216*9880d681SAndroid Build Coastguard Workerentry: 217*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @d1, align 8 218*9880d681SAndroid Build Coastguard Worker %1 = load double, double* @d2, align 8 219*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ole double %0, %1 220*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: dle1: 221*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D2_GOT:[0-9]+]], %got(d2)(${{[0-9]+}}) 222*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D1_GOT:[0-9]+]], %got(d1)(${{[0-9]+}}) 223*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D2:[0-9]+]], 0($[[REG_D2_GOT]]) 224*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D1:[0-9]+]], 0($[[REG_D1_GOT]]) 225*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 226*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 227*9880d681SAndroid Build Coastguard Worker; CHECK: c.ole.d $f[[REG_D1]], $f[[REG_D2]] 228*9880d681SAndroid Build Coastguard Worker; CHECK: movt $[[REG_ZERO]], $[[REG_ONE]], $fcc0 229*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 230*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 231*9880d681SAndroid Build Coastguard Worker ret void 232*9880d681SAndroid Build Coastguard Worker} 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 235*9880d681SAndroid Build Coastguard Workerdefine void @dge1() { 236*9880d681SAndroid Build Coastguard Workerentry: 237*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @d1, align 8 238*9880d681SAndroid Build Coastguard Worker %1 = load double, double* @d2, align 8 239*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge double %0, %1 240*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: dge1: 241*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D2_GOT:[0-9]+]], %got(d2)(${{[0-9]+}}) 242*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw $[[REG_D1_GOT:[0-9]+]], %got(d1)(${{[0-9]+}}) 243*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D2:[0-9]+]], 0($[[REG_D2_GOT]]) 244*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ldc1 $f[[REG_D1:[0-9]+]], 0($[[REG_D1_GOT]]) 245*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ZERO:[0-9]+]], $zero, 0 246*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: addiu $[[REG_ONE:[0-9]+]], $zero, 1 247*9880d681SAndroid Build Coastguard Worker; CHECK: c.ult.d $f[[REG_D1]], $f[[REG_D2]] 248*9880d681SAndroid Build Coastguard Worker; CHECK: movf $[[REG_ZERO]], $[[REG_ONE]], $fcc0 249*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 250*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* @b1, align 4 251*9880d681SAndroid Build Coastguard Worker ret void 252*9880d681SAndroid Build Coastguard Worker} 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Worker 255