1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mipsel -mcpu=mips32 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,32 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mipsel -mcpu=mips32r2 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,32R2 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mipsel -mcpu=mips32r6 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,32R6 4*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64el -mcpu=mips64 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,64 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64el -mcpu=mips64r2 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,64R2 6*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=mips64el -mcpu=mips64r6 -relocation-model=pic | FileCheck %s -check-prefixes=ALL,64R6 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker@d2 = external global double 9*9880d681SAndroid Build Coastguard Worker@d3 = external global double 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine i32 @i32_icmp_ne_i32_val(i32 signext %s, i32 signext %f0, i32 signext %f1) nounwind readnone { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: i32_icmp_ne_i32_val: 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker; 32: movn $5, $6, $4 16*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker; 32R2: movn $5, $6, $4 19*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: seleqz $[[T0:[0-9]+]], $5, $4 22*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: selnez $[[T1:[0-9]+]], $6, $4 23*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[T1]], $[[T0]] 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; 64: movn $5, $6, $4 26*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; 64R2: movn $5, $6, $4 29*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: seleqz $[[T0:[0-9]+]], $5, $4 32*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: selnez $[[T1:[0-9]+]], $6, $4 33*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[T1]], $[[T0]] 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %s, 0 36*9880d681SAndroid Build Coastguard Worker %cond = select i1 %tobool, i32 %f1, i32 %f0 37*9880d681SAndroid Build Coastguard Worker ret i32 %cond 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine i64 @i32_icmp_ne_i64_val(i32 signext %s, i64 %f0, i64 %f1) nounwind readnone { 41*9880d681SAndroid Build Coastguard Workerentry: 42*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: i32_icmp_ne_i64_val: 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[F1:[0-9]+]], 16($sp) 45*9880d681SAndroid Build Coastguard Worker; 32-DAG: movn $6, $[[F1]], $4 46*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[F1H:[0-9]+]], 20($sp) 47*9880d681SAndroid Build Coastguard Worker; 32: movn $7, $[[F1H]], $4 48*9880d681SAndroid Build Coastguard Worker; 32: move $2, $6 49*9880d681SAndroid Build Coastguard Worker; 32: move $3, $7 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[F1:[0-9]+]], 16($sp) 52*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: movn $6, $[[F1]], $4 53*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[F1H:[0-9]+]], 20($sp) 54*9880d681SAndroid Build Coastguard Worker; 32R2: movn $7, $[[F1H]], $4 55*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $6 56*9880d681SAndroid Build Coastguard Worker; 32R2: move $3, $7 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[F1:[0-9]+]], 16($sp) 59*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: seleqz $[[T0:[0-9]+]], $6, $4 60*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: selnez $[[T1:[0-9]+]], $[[F1]], $4 61*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[T1]], $[[T0]] 62*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[F1H:[0-9]+]], 20($sp) 63*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: seleqz $[[T0:[0-9]+]], $7, $4 64*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: selnez $[[T1:[0-9]+]], $[[F1H]], $4 65*9880d681SAndroid Build Coastguard Worker; 32R6: or $3, $[[T1]], $[[T0]] 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker; 64: movn $5, $6, $4 68*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 69*9880d681SAndroid Build Coastguard Worker 70*9880d681SAndroid Build Coastguard Worker; 64R2: movn $5, $6, $4 71*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 72*9880d681SAndroid Build Coastguard Worker 73*9880d681SAndroid Build Coastguard Worker; FIXME: This sll works around an implementation detail in the code generator 74*9880d681SAndroid Build Coastguard Worker; (setcc's result is i32 so bits 32-63 are undefined). It's not really 75*9880d681SAndroid Build Coastguard Worker; needed. 76*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: sll $[[CC:[0-9]+]], $4, 0 77*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: seleqz $[[T0:[0-9]+]], $5, $[[CC]] 78*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: selnez $[[T1:[0-9]+]], $6, $[[CC]] 79*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[T1]], $[[T0]] 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %s, 0 82*9880d681SAndroid Build Coastguard Worker %cond = select i1 %tobool, i64 %f1, i64 %f0 83*9880d681SAndroid Build Coastguard Worker ret i64 %cond 84*9880d681SAndroid Build Coastguard Worker} 85*9880d681SAndroid Build Coastguard Worker 86*9880d681SAndroid Build Coastguard Workerdefine i64 @i64_icmp_ne_i64_val(i64 %s, i64 %f0, i64 %f1) nounwind readnone { 87*9880d681SAndroid Build Coastguard Workerentry: 88*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: i64_icmp_ne_i64_val: 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Worker; 32-DAG: or $[[CC:[0-9]+]], $4 91*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[F1:[0-9]+]], 16($sp) 92*9880d681SAndroid Build Coastguard Worker; 32-DAG: movn $6, $[[F1]], $[[CC]] 93*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[F1H:[0-9]+]], 20($sp) 94*9880d681SAndroid Build Coastguard Worker; 32: movn $7, $[[F1H]], $[[CC]] 95*9880d681SAndroid Build Coastguard Worker; 32: move $2, $6 96*9880d681SAndroid Build Coastguard Worker; 32: move $3, $7 97*9880d681SAndroid Build Coastguard Worker 98*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: or $[[CC:[0-9]+]], $4 99*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[F1:[0-9]+]], 16($sp) 100*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: movn $6, $[[F1]], $[[CC]] 101*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[F1H:[0-9]+]], 20($sp) 102*9880d681SAndroid Build Coastguard Worker; 32R2: movn $7, $[[F1H]], $[[CC]] 103*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $6 104*9880d681SAndroid Build Coastguard Worker; 32R2: move $3, $7 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[F1:[0-9]+]], 16($sp) 107*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: or $[[T2:[0-9]+]], $4, $5 108*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: seleqz $[[T0:[0-9]+]], $6, $[[T2]] 109*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: selnez $[[T1:[0-9]+]], $[[F1]], $[[T2]] 110*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[T1]], $[[T0]] 111*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[F1H:[0-9]+]], 20($sp) 112*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: seleqz $[[T0:[0-9]+]], $7, $[[T2]] 113*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: selnez $[[T1:[0-9]+]], $[[F1H]], $[[T2]] 114*9880d681SAndroid Build Coastguard Worker; 32R6: or $3, $[[T1]], $[[T0]] 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker; 64: movn $5, $6, $4 117*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 118*9880d681SAndroid Build Coastguard Worker 119*9880d681SAndroid Build Coastguard Worker; 64R2: movn $5, $6, $4 120*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: seleqz $[[T0:[0-9]+]], $5, $4 123*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: selnez $[[T1:[0-9]+]], $6, $4 124*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[T1]], $[[T0]] 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i64 %s, 0 127*9880d681SAndroid Build Coastguard Worker %cond = select i1 %tobool, i64 %f1, i64 %f0 128*9880d681SAndroid Build Coastguard Worker ret i64 %cond 129*9880d681SAndroid Build Coastguard Worker} 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Workerdefine float @i32_icmp_ne_f32_val(i32 signext %s, float %f0, float %f1) nounwind readnone { 132*9880d681SAndroid Build Coastguard Workerentry: 133*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: i32_icmp_ne_f32_val: 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $5, $[[F0:f[0-9]+]] 136*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F1:f0]] 137*9880d681SAndroid Build Coastguard Worker; 32: movn.s $[[F1]], $[[F0]], $4 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $5, $[[F0:f[0-9]+]] 140*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F1:f0]] 141*9880d681SAndroid Build Coastguard Worker; 32R2: movn.s $[[F1]], $[[F0]], $4 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $5, $[[F0:f[0-9]+]] 144*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F1:f[0-9]+]] 145*9880d681SAndroid Build Coastguard Worker; 32R6: sltu $[[T0:[0-9]+]], $zero, $4 146*9880d681SAndroid Build Coastguard Worker; 32R6: mtc1 $[[T0]], $[[CC:f0]] 147*9880d681SAndroid Build Coastguard Worker; 32R6: sel.s $[[CC]], $[[F1]], $[[F0]] 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker; 64: movn.s $f14, $f13, $4 150*9880d681SAndroid Build Coastguard Worker; 64: mov.s $f0, $f14 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker; 64R2: movn.s $f14, $f13, $4 153*9880d681SAndroid Build Coastguard Worker; 64R2: mov.s $f0, $f14 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Worker; 64R6: sltu $[[T0:[0-9]+]], $zero, $4 156*9880d681SAndroid Build Coastguard Worker; 64R6: mtc1 $[[T0]], $[[CC:f0]] 157*9880d681SAndroid Build Coastguard Worker; 64R6: sel.s $[[CC]], $f14, $f13 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %s, 0 160*9880d681SAndroid Build Coastguard Worker %cond = select i1 %tobool, float %f0, float %f1 161*9880d681SAndroid Build Coastguard Worker ret float %cond 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerdefine double @i32_icmp_ne_f64_val(i32 signext %s, double %f0, double %f1) nounwind readnone { 165*9880d681SAndroid Build Coastguard Workerentry: 166*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: i32_icmp_ne_f64_val: 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F0:f[1-3]*[02468]+]] 169*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F0H:f[1-3]*[13579]+]] 170*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F1:f0]], 16($sp) 171*9880d681SAndroid Build Coastguard Worker; 32: movn.d $[[F1]], $[[F0]], $4 172*9880d681SAndroid Build Coastguard Worker 173*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F0:f[0-9]+]] 174*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mthc1 $7, $[[F0]] 175*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F1:f0]], 16($sp) 176*9880d681SAndroid Build Coastguard Worker; 32R2: movn.d $[[F1]], $[[F0]], $4 177*9880d681SAndroid Build Coastguard Worker 178*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F0:f[0-9]+]] 179*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mthc1 $7, $[[F0]] 180*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: sltu $[[T0:[0-9]+]], $zero, $4 181*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $[[T0]], $[[CC:f0]] 182*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F1:f[0-9]+]], 16($sp) 183*9880d681SAndroid Build Coastguard Worker; 32R6: sel.d $[[CC]], $[[F1]], $[[F0]] 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker; 64: movn.d $f14, $f13, $4 186*9880d681SAndroid Build Coastguard Worker; 64: mov.d $f0, $f14 187*9880d681SAndroid Build Coastguard Worker 188*9880d681SAndroid Build Coastguard Worker; 64R2: movn.d $f14, $f13, $4 189*9880d681SAndroid Build Coastguard Worker; 64R2: mov.d $f0, $f14 190*9880d681SAndroid Build Coastguard Worker 191*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: sltu $[[T0:[0-9]+]], $zero, $4 192*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: mtc1 $[[T0]], $[[CC:f0]] 193*9880d681SAndroid Build Coastguard Worker; 64R6: sel.d $[[CC]], $f14, $f13 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %s, 0 196*9880d681SAndroid Build Coastguard Worker %cond = select i1 %tobool, double %f0, double %f1 197*9880d681SAndroid Build Coastguard Worker ret double %cond 198*9880d681SAndroid Build Coastguard Worker} 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Workerdefine float @f32_fcmp_oeq_f32_val(float %f0, float %f1, float %f2, float %f3) nounwind readnone { 201*9880d681SAndroid Build Coastguard Workerentry: 202*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_oeq_f32_val: 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[0-9]+]] 205*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F3:f[0-9]+]] 206*9880d681SAndroid Build Coastguard Worker; 32: c.eq.s $[[F2]], $[[F3]] 207*9880d681SAndroid Build Coastguard Worker; 32: movt.s $f14, $f12, $fcc0 208*9880d681SAndroid Build Coastguard Worker; 32: mov.s $f0, $f14 209*9880d681SAndroid Build Coastguard Worker 210*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 211*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $7, $[[F3:f[0-9]+]] 212*9880d681SAndroid Build Coastguard Worker; 32R2: c.eq.s $[[F2]], $[[F3]] 213*9880d681SAndroid Build Coastguard Worker; 32R2: movt.s $f14, $f12, $fcc0 214*9880d681SAndroid Build Coastguard Worker; 32R2: mov.s $f0, $f14 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 217*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $7, $[[F3:f[0-9]+]] 218*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.eq.s $[[CC:f0]], $[[F2]], $[[F3]] 219*9880d681SAndroid Build Coastguard Worker; 32R6: sel.s $[[CC]], $f14, $f12 220*9880d681SAndroid Build Coastguard Worker 221*9880d681SAndroid Build Coastguard Worker; 64: c.eq.s $f14, $f15 222*9880d681SAndroid Build Coastguard Worker; 64: movt.s $f13, $f12, $fcc0 223*9880d681SAndroid Build Coastguard Worker; 64: mov.s $f0, $f13 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Worker; 64R2: c.eq.s $f14, $f15 226*9880d681SAndroid Build Coastguard Worker; 64R2: movt.s $f13, $f12, $fcc0 227*9880d681SAndroid Build Coastguard Worker; 64R2: mov.s $f0, $f13 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.eq.s $[[CC:f0]], $f14, $f15 230*9880d681SAndroid Build Coastguard Worker; 64R6: sel.s $[[CC]], $f13, $f12 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq float %f2, %f3 233*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, float %f0, float %f1 234*9880d681SAndroid Build Coastguard Worker ret float %cond 235*9880d681SAndroid Build Coastguard Worker} 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Workerdefine float @f32_fcmp_olt_f32_val(float %f0, float %f1, float %f2, float %f3) nounwind readnone { 238*9880d681SAndroid Build Coastguard Workerentry: 239*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_olt_f32_val: 240*9880d681SAndroid Build Coastguard Worker 241*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[0-9]+]] 242*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F3:f[0-9]+]] 243*9880d681SAndroid Build Coastguard Worker; 32: c.olt.s $[[F2]], $[[F3]] 244*9880d681SAndroid Build Coastguard Worker; 32: movt.s $f14, $f12, $fcc0 245*9880d681SAndroid Build Coastguard Worker; 32: mov.s $f0, $f14 246*9880d681SAndroid Build Coastguard Worker 247*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 248*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $7, $[[F3:f[0-9]+]] 249*9880d681SAndroid Build Coastguard Worker; 32R2: c.olt.s $[[F2]], $[[F3]] 250*9880d681SAndroid Build Coastguard Worker; 32R2: movt.s $f14, $f12, $fcc0 251*9880d681SAndroid Build Coastguard Worker; 32R2: mov.s $f0, $f14 252*9880d681SAndroid Build Coastguard Worker 253*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 254*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $7, $[[F3:f[0-9]+]] 255*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.s $[[CC:f0]], $[[F2]], $[[F3]] 256*9880d681SAndroid Build Coastguard Worker; 32R6: sel.s $[[CC]], $f14, $f12 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker; 64: c.olt.s $f14, $f15 259*9880d681SAndroid Build Coastguard Worker; 64: movt.s $f13, $f12, $fcc0 260*9880d681SAndroid Build Coastguard Worker; 64: mov.s $f0, $f13 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker; 64R2: c.olt.s $f14, $f15 263*9880d681SAndroid Build Coastguard Worker; 64R2: movt.s $f13, $f12, $fcc0 264*9880d681SAndroid Build Coastguard Worker; 64R2: mov.s $f0, $f13 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.s $[[CC:f0]], $f14, $f15 267*9880d681SAndroid Build Coastguard Worker; 64R6: sel.s $[[CC]], $f13, $f12 268*9880d681SAndroid Build Coastguard Worker 269*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt float %f2, %f3 270*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, float %f0, float %f1 271*9880d681SAndroid Build Coastguard Worker ret float %cond 272*9880d681SAndroid Build Coastguard Worker} 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Workerdefine float @f32_fcmp_ogt_f32_val(float %f0, float %f1, float %f2, float %f3) nounwind readnone { 275*9880d681SAndroid Build Coastguard Workerentry: 276*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_ogt_f32_val: 277*9880d681SAndroid Build Coastguard Worker 278*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[0-9]+]] 279*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F3:f[0-9]+]] 280*9880d681SAndroid Build Coastguard Worker; 32: c.ule.s $[[F2]], $[[F3]] 281*9880d681SAndroid Build Coastguard Worker; 32: movf.s $f14, $f12, $fcc0 282*9880d681SAndroid Build Coastguard Worker; 32: mov.s $f0, $f14 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 285*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $7, $[[F3:f[0-9]+]] 286*9880d681SAndroid Build Coastguard Worker; 32R2: c.ule.s $[[F2]], $[[F3]] 287*9880d681SAndroid Build Coastguard Worker; 32R2: movf.s $f14, $f12, $fcc0 288*9880d681SAndroid Build Coastguard Worker; 32R2: mov.s $f0, $f14 289*9880d681SAndroid Build Coastguard Worker 290*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 291*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $7, $[[F3:f[0-9]+]] 292*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.s $[[CC:f0]], $[[F3]], $[[F2]] 293*9880d681SAndroid Build Coastguard Worker; 32R6: sel.s $[[CC]], $f14, $f12 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Worker; 64: c.ule.s $f14, $f15 296*9880d681SAndroid Build Coastguard Worker; 64: movf.s $f13, $f12, $fcc0 297*9880d681SAndroid Build Coastguard Worker; 64: mov.s $f0, $f13 298*9880d681SAndroid Build Coastguard Worker 299*9880d681SAndroid Build Coastguard Worker; 64R2: c.ule.s $f14, $f15 300*9880d681SAndroid Build Coastguard Worker; 64R2: movf.s $f13, $f12, $fcc0 301*9880d681SAndroid Build Coastguard Worker; 64R2: mov.s $f0, $f13 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.s $[[CC:f0]], $f15, $f14 304*9880d681SAndroid Build Coastguard Worker; 64R6: sel.s $[[CC]], $f13, $f12 305*9880d681SAndroid Build Coastguard Worker 306*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt float %f2, %f3 307*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, float %f0, float %f1 308*9880d681SAndroid Build Coastguard Worker ret float %cond 309*9880d681SAndroid Build Coastguard Worker} 310*9880d681SAndroid Build Coastguard Worker 311*9880d681SAndroid Build Coastguard Workerdefine double @f32_fcmp_ogt_f64_val(double %f0, double %f1, float %f2, float %f3) nounwind readnone { 312*9880d681SAndroid Build Coastguard Workerentry: 313*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_ogt_f64_val: 314*9880d681SAndroid Build Coastguard Worker 315*9880d681SAndroid Build Coastguard Worker; 32-DAG: lwc1 $[[F2:f[0-9]+]], 16($sp) 316*9880d681SAndroid Build Coastguard Worker; 32-DAG: lwc1 $[[F3:f[0-9]+]], 20($sp) 317*9880d681SAndroid Build Coastguard Worker; 32: c.ule.s $[[F2]], $[[F3]] 318*9880d681SAndroid Build Coastguard Worker; 32: movf.d $f14, $f12, $fcc0 319*9880d681SAndroid Build Coastguard Worker; 32: mov.d $f0, $f14 320*9880d681SAndroid Build Coastguard Worker 321*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lwc1 $[[F2:f[0-9]+]], 16($sp) 322*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lwc1 $[[F3:f[0-9]+]], 20($sp) 323*9880d681SAndroid Build Coastguard Worker; 32R2: c.ule.s $[[F2]], $[[F3]] 324*9880d681SAndroid Build Coastguard Worker; 32R2: movf.d $f14, $f12, $fcc0 325*9880d681SAndroid Build Coastguard Worker; 32R2: mov.d $f0, $f14 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lwc1 $[[F2:f[0-9]+]], 16($sp) 328*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lwc1 $[[F3:f[0-9]+]], 20($sp) 329*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.s $[[CC:f0]], $[[F3]], $[[F2]] 330*9880d681SAndroid Build Coastguard Worker; 32R6: sel.d $[[CC]], $f14, $f12 331*9880d681SAndroid Build Coastguard Worker 332*9880d681SAndroid Build Coastguard Worker; 64: c.ule.s $f14, $f15 333*9880d681SAndroid Build Coastguard Worker; 64: movf.d $f13, $f12, $fcc0 334*9880d681SAndroid Build Coastguard Worker; 64: mov.d $f0, $f13 335*9880d681SAndroid Build Coastguard Worker 336*9880d681SAndroid Build Coastguard Worker; 64R2: c.ule.s $f14, $f15 337*9880d681SAndroid Build Coastguard Worker; 64R2: movf.d $f13, $f12, $fcc0 338*9880d681SAndroid Build Coastguard Worker; 64R2: mov.d $f0, $f13 339*9880d681SAndroid Build Coastguard Worker 340*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.s $[[CC:f0]], $f15, $f14 341*9880d681SAndroid Build Coastguard Worker; 64R6: sel.d $[[CC]], $f13, $f12 342*9880d681SAndroid Build Coastguard Worker 343*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt float %f2, %f3 344*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, double %f0, double %f1 345*9880d681SAndroid Build Coastguard Worker ret double %cond 346*9880d681SAndroid Build Coastguard Worker} 347*9880d681SAndroid Build Coastguard Worker 348*9880d681SAndroid Build Coastguard Workerdefine double @f64_fcmp_oeq_f64_val(double %f0, double %f1, double %f2, double %f3) nounwind readnone { 349*9880d681SAndroid Build Coastguard Workerentry: 350*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_oeq_f64_val: 351*9880d681SAndroid Build Coastguard Worker 352*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 353*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 354*9880d681SAndroid Build Coastguard Worker; 32: c.eq.d $[[F2]], $[[F3]] 355*9880d681SAndroid Build Coastguard Worker; 32: movt.d $f14, $f12, $fcc0 356*9880d681SAndroid Build Coastguard Worker; 32: mov.d $f0, $f14 357*9880d681SAndroid Build Coastguard Worker 358*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 359*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 360*9880d681SAndroid Build Coastguard Worker; 32R2: c.eq.d $[[F2]], $[[F3]] 361*9880d681SAndroid Build Coastguard Worker; 32R2: movt.d $f14, $f12, $fcc0 362*9880d681SAndroid Build Coastguard Worker; 32R2: mov.d $f0, $f14 363*9880d681SAndroid Build Coastguard Worker 364*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 365*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 366*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.eq.d $[[CC:f0]], $[[F2]], $[[F3]] 367*9880d681SAndroid Build Coastguard Worker; 32R6: sel.d $[[CC]], $f14, $f12 368*9880d681SAndroid Build Coastguard Worker 369*9880d681SAndroid Build Coastguard Worker; 64: c.eq.d $f14, $f15 370*9880d681SAndroid Build Coastguard Worker; 64: movt.d $f13, $f12, $fcc0 371*9880d681SAndroid Build Coastguard Worker; 64: mov.d $f0, $f13 372*9880d681SAndroid Build Coastguard Worker 373*9880d681SAndroid Build Coastguard Worker; 64R2: c.eq.d $f14, $f15 374*9880d681SAndroid Build Coastguard Worker; 64R2: movt.d $f13, $f12, $fcc0 375*9880d681SAndroid Build Coastguard Worker; 64R2: mov.d $f0, $f13 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.eq.d $[[CC:f0]], $f14, $f15 378*9880d681SAndroid Build Coastguard Worker; 64R6: sel.d $[[CC]], $f13, $f12 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq double %f2, %f3 381*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, double %f0, double %f1 382*9880d681SAndroid Build Coastguard Worker ret double %cond 383*9880d681SAndroid Build Coastguard Worker} 384*9880d681SAndroid Build Coastguard Worker 385*9880d681SAndroid Build Coastguard Workerdefine double @f64_fcmp_olt_f64_val(double %f0, double %f1, double %f2, double %f3) nounwind readnone { 386*9880d681SAndroid Build Coastguard Workerentry: 387*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_olt_f64_val: 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 390*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 391*9880d681SAndroid Build Coastguard Worker; 32: c.olt.d $[[F2]], $[[F3]] 392*9880d681SAndroid Build Coastguard Worker; 32: movt.d $f14, $f12, $fcc0 393*9880d681SAndroid Build Coastguard Worker; 32: mov.d $f0, $f14 394*9880d681SAndroid Build Coastguard Worker 395*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 396*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 397*9880d681SAndroid Build Coastguard Worker; 32R2: c.olt.d $[[F2]], $[[F3]] 398*9880d681SAndroid Build Coastguard Worker; 32R2: movt.d $f14, $f12, $fcc0 399*9880d681SAndroid Build Coastguard Worker; 32R2: mov.d $f0, $f14 400*9880d681SAndroid Build Coastguard Worker 401*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 402*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 403*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.d $[[CC:f0]], $[[F2]], $[[F3]] 404*9880d681SAndroid Build Coastguard Worker; 32R6: sel.d $[[CC]], $f14, $f12 405*9880d681SAndroid Build Coastguard Worker 406*9880d681SAndroid Build Coastguard Worker; 64: c.olt.d $f14, $f15 407*9880d681SAndroid Build Coastguard Worker; 64: movt.d $f13, $f12, $fcc0 408*9880d681SAndroid Build Coastguard Worker; 64: mov.d $f0, $f13 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Worker; 64R2: c.olt.d $f14, $f15 411*9880d681SAndroid Build Coastguard Worker; 64R2: movt.d $f13, $f12, $fcc0 412*9880d681SAndroid Build Coastguard Worker; 64R2: mov.d $f0, $f13 413*9880d681SAndroid Build Coastguard Worker 414*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.d $[[CC:f0]], $f14, $f15 415*9880d681SAndroid Build Coastguard Worker; 64R6: sel.d $[[CC]], $f13, $f12 416*9880d681SAndroid Build Coastguard Worker 417*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt double %f2, %f3 418*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, double %f0, double %f1 419*9880d681SAndroid Build Coastguard Worker ret double %cond 420*9880d681SAndroid Build Coastguard Worker} 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Workerdefine double @f64_fcmp_ogt_f64_val(double %f0, double %f1, double %f2, double %f3) nounwind readnone { 423*9880d681SAndroid Build Coastguard Workerentry: 424*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_ogt_f64_val: 425*9880d681SAndroid Build Coastguard Worker 426*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 427*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 428*9880d681SAndroid Build Coastguard Worker; 32: c.ule.d $[[F2]], $[[F3]] 429*9880d681SAndroid Build Coastguard Worker; 32: movf.d $f14, $f12, $fcc0 430*9880d681SAndroid Build Coastguard Worker; 32: mov.d $f0, $f14 431*9880d681SAndroid Build Coastguard Worker 432*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 433*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 434*9880d681SAndroid Build Coastguard Worker; 32R2: c.ule.d $[[F2]], $[[F3]] 435*9880d681SAndroid Build Coastguard Worker; 32R2: movf.d $f14, $f12, $fcc0 436*9880d681SAndroid Build Coastguard Worker; 32R2: mov.d $f0, $f14 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F2:f[0-9]+]], 16($sp) 439*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F3:f[0-9]+]], 24($sp) 440*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.d $[[CC:f0]], $[[F3]], $[[F2]] 441*9880d681SAndroid Build Coastguard Worker; 32R6: sel.d $[[CC]], $f14, $f12 442*9880d681SAndroid Build Coastguard Worker 443*9880d681SAndroid Build Coastguard Worker; 64: c.ule.d $f14, $f15 444*9880d681SAndroid Build Coastguard Worker; 64: movf.d $f13, $f12, $fcc0 445*9880d681SAndroid Build Coastguard Worker; 64: mov.d $f0, $f13 446*9880d681SAndroid Build Coastguard Worker 447*9880d681SAndroid Build Coastguard Worker; 64R2: c.ule.d $f14, $f15 448*9880d681SAndroid Build Coastguard Worker; 64R2: movf.d $f13, $f12, $fcc0 449*9880d681SAndroid Build Coastguard Worker; 64R2: mov.d $f0, $f13 450*9880d681SAndroid Build Coastguard Worker 451*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.d $[[CC:f0]], $f15, $f14 452*9880d681SAndroid Build Coastguard Worker; 64R6: sel.d $[[CC]], $f13, $f12 453*9880d681SAndroid Build Coastguard Worker 454*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt double %f2, %f3 455*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, double %f0, double %f1 456*9880d681SAndroid Build Coastguard Worker ret double %cond 457*9880d681SAndroid Build Coastguard Worker} 458*9880d681SAndroid Build Coastguard Worker 459*9880d681SAndroid Build Coastguard Workerdefine float @f64_fcmp_ogt_f32_val(float %f0, float %f1, double %f2, double %f3) nounwind readnone { 460*9880d681SAndroid Build Coastguard Workerentry: 461*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_ogt_f32_val: 462*9880d681SAndroid Build Coastguard Worker 463*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[1-3]*[02468]+]] 464*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F2H:f[1-3]*[13579]+]] 465*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[F3:f[0-9]+]], 16($sp) 466*9880d681SAndroid Build Coastguard Worker; 32: c.ule.d $[[F2]], $[[F3]] 467*9880d681SAndroid Build Coastguard Worker; 32: movf.s $f14, $f12, $fcc0 468*9880d681SAndroid Build Coastguard Worker; 32: mov.s $f0, $f14 469*9880d681SAndroid Build Coastguard Worker 470*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 471*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mthc1 $7, $[[F2]] 472*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[F3:f[0-9]+]], 16($sp) 473*9880d681SAndroid Build Coastguard Worker; 32R2: c.ule.d $[[F2]], $[[F3]] 474*9880d681SAndroid Build Coastguard Worker; 32R2: movf.s $f14, $f12, $fcc0 475*9880d681SAndroid Build Coastguard Worker; 32R2: mov.s $f0, $f14 476*9880d681SAndroid Build Coastguard Worker 477*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 478*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mthc1 $7, $[[F2]] 479*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[F3:f[0-9]+]], 16($sp) 480*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.d $[[CC:f0]], $[[F3]], $[[F2]] 481*9880d681SAndroid Build Coastguard Worker; 32R6: sel.s $[[CC]], $f14, $f12 482*9880d681SAndroid Build Coastguard Worker 483*9880d681SAndroid Build Coastguard Worker; 64: c.ule.d $f14, $f15 484*9880d681SAndroid Build Coastguard Worker; 64: movf.s $f13, $f12, $fcc0 485*9880d681SAndroid Build Coastguard Worker; 64: mov.s $f0, $f13 486*9880d681SAndroid Build Coastguard Worker 487*9880d681SAndroid Build Coastguard Worker; 64R2: c.ule.d $f14, $f15 488*9880d681SAndroid Build Coastguard Worker; 64R2: movf.s $f13, $f12, $fcc0 489*9880d681SAndroid Build Coastguard Worker; 64R2: mov.s $f0, $f13 490*9880d681SAndroid Build Coastguard Worker 491*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.d $[[CC:f0]], $f15, $f14 492*9880d681SAndroid Build Coastguard Worker; 64R6: sel.s $[[CC]], $f13, $f12 493*9880d681SAndroid Build Coastguard Worker 494*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt double %f2, %f3 495*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, float %f0, float %f1 496*9880d681SAndroid Build Coastguard Worker ret float %cond 497*9880d681SAndroid Build Coastguard Worker} 498*9880d681SAndroid Build Coastguard Worker 499*9880d681SAndroid Build Coastguard Workerdefine i32 @f32_fcmp_oeq_i32_val(i32 signext %f0, i32 signext %f1, float %f2, float %f3) nounwind readnone { 500*9880d681SAndroid Build Coastguard Workerentry: 501*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_oeq_i32_val: 502*9880d681SAndroid Build Coastguard Worker 503*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[0-9]+]] 504*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F3:f[0-9]+]] 505*9880d681SAndroid Build Coastguard Worker; 32: c.eq.s $[[F2]], $[[F3]] 506*9880d681SAndroid Build Coastguard Worker; 32: movt $5, $4, $fcc0 507*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 508*9880d681SAndroid Build Coastguard Worker 509*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 510*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $7, $[[F3:f[0-9]+]] 511*9880d681SAndroid Build Coastguard Worker; 32R2: c.eq.s $[[F2]], $[[F3]] 512*9880d681SAndroid Build Coastguard Worker; 32R2: movt $5, $4, $fcc0 513*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 514*9880d681SAndroid Build Coastguard Worker 515*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 516*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $7, $[[F3:f[0-9]+]] 517*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.eq.s $[[CC:f[0-9]+]], $[[F2]], $[[F3]] 518*9880d681SAndroid Build Coastguard Worker; 32R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 519*9880d681SAndroid Build Coastguard Worker; 32R6: andi $[[CCGPR]], $[[CCGPR]], 1 520*9880d681SAndroid Build Coastguard Worker; 32R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 521*9880d681SAndroid Build Coastguard Worker; 32R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 522*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[NE]], $[[EQ]] 523*9880d681SAndroid Build Coastguard Worker 524*9880d681SAndroid Build Coastguard Worker; 64: c.eq.s $f14, $f15 525*9880d681SAndroid Build Coastguard Worker; 64: movt $5, $4, $fcc0 526*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 527*9880d681SAndroid Build Coastguard Worker 528*9880d681SAndroid Build Coastguard Worker; 64R2: c.eq.s $f14, $f15 529*9880d681SAndroid Build Coastguard Worker; 64R2: movt $5, $4, $fcc0 530*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 531*9880d681SAndroid Build Coastguard Worker 532*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.eq.s $[[CC:f[0-9]+]], $f14, $f15 533*9880d681SAndroid Build Coastguard Worker; 64R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 534*9880d681SAndroid Build Coastguard Worker; 64R6: andi $[[CCGPR]], $[[CCGPR]], 1 535*9880d681SAndroid Build Coastguard Worker; 64R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 536*9880d681SAndroid Build Coastguard Worker; 64R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 537*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[NE]], $[[EQ]] 538*9880d681SAndroid Build Coastguard Worker 539*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq float %f2, %f3 540*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %f0, i32 %f1 541*9880d681SAndroid Build Coastguard Worker ret i32 %cond 542*9880d681SAndroid Build Coastguard Worker} 543*9880d681SAndroid Build Coastguard Worker 544*9880d681SAndroid Build Coastguard Workerdefine i32 @f32_fcmp_olt_i32_val(i32 signext %f0, i32 signext %f1, float %f2, float %f3) nounwind readnone { 545*9880d681SAndroid Build Coastguard Workerentry: 546*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_olt_i32_val: 547*9880d681SAndroid Build Coastguard Worker 548*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[0-9]+]] 549*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F3:f[0-9]+]] 550*9880d681SAndroid Build Coastguard Worker; 32: c.olt.s $[[F2]], $[[F3]] 551*9880d681SAndroid Build Coastguard Worker; 32: movt $5, $4, $fcc0 552*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 553*9880d681SAndroid Build Coastguard Worker 554*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 555*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $7, $[[F3:f[0-9]+]] 556*9880d681SAndroid Build Coastguard Worker; 32R2: c.olt.s $[[F2]], $[[F3]] 557*9880d681SAndroid Build Coastguard Worker; 32R2: movt $5, $4, $fcc0 558*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 561*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $7, $[[F3:f[0-9]+]] 562*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.s $[[CC:f[0-9]+]], $[[F2]], $[[F3]] 563*9880d681SAndroid Build Coastguard Worker; 32R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 564*9880d681SAndroid Build Coastguard Worker; 32R6: andi $[[CCGPR]], $[[CCGPR]], 1 565*9880d681SAndroid Build Coastguard Worker; 32R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 566*9880d681SAndroid Build Coastguard Worker; 32R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 567*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[NE]], $[[EQ]] 568*9880d681SAndroid Build Coastguard Worker 569*9880d681SAndroid Build Coastguard Worker; 64: c.olt.s $f14, $f15 570*9880d681SAndroid Build Coastguard Worker; 64: movt $5, $4, $fcc0 571*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 572*9880d681SAndroid Build Coastguard Worker 573*9880d681SAndroid Build Coastguard Worker; 64R2: c.olt.s $f14, $f15 574*9880d681SAndroid Build Coastguard Worker; 64R2: movt $5, $4, $fcc0 575*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 576*9880d681SAndroid Build Coastguard Worker 577*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.s $[[CC:f[0-9]+]], $f14, $f15 578*9880d681SAndroid Build Coastguard Worker; 64R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 579*9880d681SAndroid Build Coastguard Worker; 64R6: andi $[[CCGPR]], $[[CCGPR]], 1 580*9880d681SAndroid Build Coastguard Worker; 64R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 581*9880d681SAndroid Build Coastguard Worker; 64R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 582*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[NE]], $[[EQ]] 583*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt float %f2, %f3 584*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %f0, i32 %f1 585*9880d681SAndroid Build Coastguard Worker ret i32 %cond 586*9880d681SAndroid Build Coastguard Worker} 587*9880d681SAndroid Build Coastguard Worker 588*9880d681SAndroid Build Coastguard Workerdefine i32 @f32_fcmp_ogt_i32_val(i32 signext %f0, i32 signext %f1, float %f2, float %f3) nounwind readnone { 589*9880d681SAndroid Build Coastguard Workerentry: 590*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f32_fcmp_ogt_i32_val: 591*9880d681SAndroid Build Coastguard Worker 592*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $6, $[[F2:f[0-9]+]] 593*9880d681SAndroid Build Coastguard Worker; 32-DAG: mtc1 $7, $[[F3:f[0-9]+]] 594*9880d681SAndroid Build Coastguard Worker; 32: c.ule.s $[[F2]], $[[F3]] 595*9880d681SAndroid Build Coastguard Worker; 32: movf $5, $4, $fcc0 596*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 597*9880d681SAndroid Build Coastguard Worker 598*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $6, $[[F2:f[0-9]+]] 599*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: mtc1 $7, $[[F3:f[0-9]+]] 600*9880d681SAndroid Build Coastguard Worker; 32R2: c.ule.s $[[F2]], $[[F3]] 601*9880d681SAndroid Build Coastguard Worker; 32R2: movf $5, $4, $fcc0 602*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 603*9880d681SAndroid Build Coastguard Worker 604*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $6, $[[F2:f[0-9]+]] 605*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: mtc1 $7, $[[F3:f[0-9]+]] 606*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.s $[[CC:f[0-9]+]], $[[F3]], $[[F2]] 607*9880d681SAndroid Build Coastguard Worker; 32R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 608*9880d681SAndroid Build Coastguard Worker; 32R6: andi $[[CCGPR]], $[[CCGPR]], 1 609*9880d681SAndroid Build Coastguard Worker; 32R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 610*9880d681SAndroid Build Coastguard Worker; 32R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 611*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[NE]], $[[EQ]] 612*9880d681SAndroid Build Coastguard Worker 613*9880d681SAndroid Build Coastguard Worker; 64: c.ule.s $f14, $f15 614*9880d681SAndroid Build Coastguard Worker; 64: movf $5, $4, $fcc0 615*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 616*9880d681SAndroid Build Coastguard Worker 617*9880d681SAndroid Build Coastguard Worker; 64R2: c.ule.s $f14, $f15 618*9880d681SAndroid Build Coastguard Worker; 64R2: movf $5, $4, $fcc0 619*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 620*9880d681SAndroid Build Coastguard Worker 621*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.s $[[CC:f[0-9]+]], $f15, $f14 622*9880d681SAndroid Build Coastguard Worker; 64R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 623*9880d681SAndroid Build Coastguard Worker; 64R6: andi $[[CCGPR]], $[[CCGPR]], 1 624*9880d681SAndroid Build Coastguard Worker; 64R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 625*9880d681SAndroid Build Coastguard Worker; 64R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 626*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[NE]], $[[EQ]] 627*9880d681SAndroid Build Coastguard Worker 628*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt float %f2, %f3 629*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %f0, i32 %f1 630*9880d681SAndroid Build Coastguard Worker ret i32 %cond 631*9880d681SAndroid Build Coastguard Worker} 632*9880d681SAndroid Build Coastguard Worker 633*9880d681SAndroid Build Coastguard Workerdefine i32 @f64_fcmp_oeq_i32_val(i32 signext %f0, i32 signext %f1) nounwind readonly { 634*9880d681SAndroid Build Coastguard Workerentry: 635*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_oeq_i32_val: 636*9880d681SAndroid Build Coastguard Worker 637*9880d681SAndroid Build Coastguard Worker; 32-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 638*9880d681SAndroid Build Coastguard Worker; 32-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 639*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 640*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 641*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 642*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 643*9880d681SAndroid Build Coastguard Worker; 32: c.eq.d $[[TMP]], $[[TMP1]] 644*9880d681SAndroid Build Coastguard Worker; 32: movt $5, $4, $fcc0 645*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 646*9880d681SAndroid Build Coastguard Worker 647*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 648*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 649*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 650*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 651*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 652*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 653*9880d681SAndroid Build Coastguard Worker; 32R2: c.eq.d $[[TMP]], $[[TMP1]] 654*9880d681SAndroid Build Coastguard Worker; 32R2: movt $5, $4, $fcc0 655*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 656*9880d681SAndroid Build Coastguard Worker 657*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 658*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 659*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 660*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 661*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 662*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 663*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.eq.d $[[CC:f[0-9]+]], $[[TMP]], $[[TMP1]] 664*9880d681SAndroid Build Coastguard Worker; 32R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 665*9880d681SAndroid Build Coastguard Worker; 32R6: andi $[[CCGPR]], $[[CCGPR]], 1 666*9880d681SAndroid Build Coastguard Worker; 32R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 667*9880d681SAndroid Build Coastguard Worker; 32R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 668*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[NE]], $[[EQ]] 669*9880d681SAndroid Build Coastguard Worker 670*9880d681SAndroid Build Coastguard Worker; 64-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_oeq_i32_val))) 671*9880d681SAndroid Build Coastguard Worker; 64-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 672*9880d681SAndroid Build Coastguard Worker; 64-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 673*9880d681SAndroid Build Coastguard Worker; 64-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 674*9880d681SAndroid Build Coastguard Worker; 64-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 675*9880d681SAndroid Build Coastguard Worker; 64-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 676*9880d681SAndroid Build Coastguard Worker; 64: c.eq.d $[[TMP]], $[[TMP1]] 677*9880d681SAndroid Build Coastguard Worker; 64: movt $5, $4, $fcc0 678*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 679*9880d681SAndroid Build Coastguard Worker 680*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_oeq_i32_val))) 681*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 682*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 683*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 684*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 685*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 686*9880d681SAndroid Build Coastguard Worker; 64R2: c.eq.d $[[TMP]], $[[TMP1]] 687*9880d681SAndroid Build Coastguard Worker; 64R2: movt $5, $4, $fcc0 688*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 689*9880d681SAndroid Build Coastguard Worker 690*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_oeq_i32_val))) 691*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 692*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 693*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 694*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 695*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 696*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.eq.d $[[CC:f[0-9]+]], $[[TMP]], $[[TMP1]] 697*9880d681SAndroid Build Coastguard Worker; 64R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 698*9880d681SAndroid Build Coastguard Worker; 64R6: andi $[[CCGPR]], $[[CCGPR]], 1 699*9880d681SAndroid Build Coastguard Worker; 64R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 700*9880d681SAndroid Build Coastguard Worker; 64R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 701*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[NE]], $[[EQ]] 702*9880d681SAndroid Build Coastguard Worker 703*9880d681SAndroid Build Coastguard Worker %tmp = load double, double* @d2, align 8 704*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* @d3, align 8 705*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq double %tmp, %tmp1 706*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %f0, i32 %f1 707*9880d681SAndroid Build Coastguard Worker ret i32 %cond 708*9880d681SAndroid Build Coastguard Worker} 709*9880d681SAndroid Build Coastguard Worker 710*9880d681SAndroid Build Coastguard Workerdefine i32 @f64_fcmp_olt_i32_val(i32 signext %f0, i32 signext %f1) nounwind readonly { 711*9880d681SAndroid Build Coastguard Workerentry: 712*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_olt_i32_val: 713*9880d681SAndroid Build Coastguard Worker 714*9880d681SAndroid Build Coastguard Worker; 32-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 715*9880d681SAndroid Build Coastguard Worker; 32-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 716*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 717*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 718*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 719*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 720*9880d681SAndroid Build Coastguard Worker; 32: c.olt.d $[[TMP]], $[[TMP1]] 721*9880d681SAndroid Build Coastguard Worker; 32: movt $5, $4, $fcc0 722*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 723*9880d681SAndroid Build Coastguard Worker 724*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 725*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 726*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 727*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 728*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 729*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 730*9880d681SAndroid Build Coastguard Worker; 32R2: c.olt.d $[[TMP]], $[[TMP1]] 731*9880d681SAndroid Build Coastguard Worker; 32R2: movt $5, $4, $fcc0 732*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 733*9880d681SAndroid Build Coastguard Worker 734*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 735*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 736*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 737*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 738*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 739*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 740*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.d $[[CC:f[0-9]+]], $[[TMP]], $[[TMP1]] 741*9880d681SAndroid Build Coastguard Worker; 32R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 742*9880d681SAndroid Build Coastguard Worker; 32R6: andi $[[CCGPR]], $[[CCGPR]], 1 743*9880d681SAndroid Build Coastguard Worker; 32R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 744*9880d681SAndroid Build Coastguard Worker; 32R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 745*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[NE]], $[[EQ]] 746*9880d681SAndroid Build Coastguard Worker 747*9880d681SAndroid Build Coastguard Worker; 64-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_olt_i32_val))) 748*9880d681SAndroid Build Coastguard Worker; 64-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 749*9880d681SAndroid Build Coastguard Worker; 64-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 750*9880d681SAndroid Build Coastguard Worker; 64-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 751*9880d681SAndroid Build Coastguard Worker; 64-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 752*9880d681SAndroid Build Coastguard Worker; 64-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 753*9880d681SAndroid Build Coastguard Worker; 64: c.olt.d $[[TMP]], $[[TMP1]] 754*9880d681SAndroid Build Coastguard Worker; 64: movt $5, $4, $fcc0 755*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 756*9880d681SAndroid Build Coastguard Worker 757*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_olt_i32_val))) 758*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 759*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 760*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 761*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 762*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 763*9880d681SAndroid Build Coastguard Worker; 64R2: c.olt.d $[[TMP]], $[[TMP1]] 764*9880d681SAndroid Build Coastguard Worker; 64R2: movt $5, $4, $fcc0 765*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 766*9880d681SAndroid Build Coastguard Worker 767*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_olt_i32_val))) 768*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 769*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 770*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 771*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 772*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 773*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.d $[[CC:f[0-9]+]], $[[TMP]], $[[TMP1]] 774*9880d681SAndroid Build Coastguard Worker; 64R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 775*9880d681SAndroid Build Coastguard Worker; 64R6: andi $[[CCGPR]], $[[CCGPR]], 1 776*9880d681SAndroid Build Coastguard Worker; 64R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 777*9880d681SAndroid Build Coastguard Worker; 64R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 778*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[NE]], $[[EQ]] 779*9880d681SAndroid Build Coastguard Worker 780*9880d681SAndroid Build Coastguard Worker %tmp = load double, double* @d2, align 8 781*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* @d3, align 8 782*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt double %tmp, %tmp1 783*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %f0, i32 %f1 784*9880d681SAndroid Build Coastguard Worker ret i32 %cond 785*9880d681SAndroid Build Coastguard Worker} 786*9880d681SAndroid Build Coastguard Worker 787*9880d681SAndroid Build Coastguard Workerdefine i32 @f64_fcmp_ogt_i32_val(i32 signext %f0, i32 signext %f1) nounwind readonly { 788*9880d681SAndroid Build Coastguard Workerentry: 789*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: f64_fcmp_ogt_i32_val: 790*9880d681SAndroid Build Coastguard Worker 791*9880d681SAndroid Build Coastguard Worker; 32-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 792*9880d681SAndroid Build Coastguard Worker; 32-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 793*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 794*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 795*9880d681SAndroid Build Coastguard Worker; 32-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 796*9880d681SAndroid Build Coastguard Worker; 32-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 797*9880d681SAndroid Build Coastguard Worker; 32: c.ule.d $[[TMP]], $[[TMP1]] 798*9880d681SAndroid Build Coastguard Worker; 32: movf $5, $4, $fcc0 799*9880d681SAndroid Build Coastguard Worker; 32: move $2, $5 800*9880d681SAndroid Build Coastguard Worker 801*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 802*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 803*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 804*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 805*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 806*9880d681SAndroid Build Coastguard Worker; 32R2-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 807*9880d681SAndroid Build Coastguard Worker; 32R2: c.ule.d $[[TMP]], $[[TMP1]] 808*9880d681SAndroid Build Coastguard Worker; 32R2: movf $5, $4, $fcc0 809*9880d681SAndroid Build Coastguard Worker; 32R2: move $2, $5 810*9880d681SAndroid Build Coastguard Worker 811*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: addiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(_gp_disp) 812*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: addu $[[GOT:[0-9]+]], $[[T0]], $25 813*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[D2:[0-9]+]], %got(d2)($1) 814*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 815*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: lw $[[D3:[0-9]+]], %got(d3)($1) 816*9880d681SAndroid Build Coastguard Worker; 32R6-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 817*9880d681SAndroid Build Coastguard Worker; 32R6: cmp.lt.d $[[CC:f[0-9]+]], $[[TMP1]], $[[TMP]] 818*9880d681SAndroid Build Coastguard Worker; 32R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 819*9880d681SAndroid Build Coastguard Worker; 32R6: andi $[[CCGPR]], $[[CCGPR]], 1 820*9880d681SAndroid Build Coastguard Worker; 32R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 821*9880d681SAndroid Build Coastguard Worker; 32R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 822*9880d681SAndroid Build Coastguard Worker; 32R6: or $2, $[[NE]], $[[EQ]] 823*9880d681SAndroid Build Coastguard Worker 824*9880d681SAndroid Build Coastguard Worker; 64-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_ogt_i32_val))) 825*9880d681SAndroid Build Coastguard Worker; 64-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 826*9880d681SAndroid Build Coastguard Worker; 64-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 827*9880d681SAndroid Build Coastguard Worker; 64-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 828*9880d681SAndroid Build Coastguard Worker; 64-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 829*9880d681SAndroid Build Coastguard Worker; 64-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 830*9880d681SAndroid Build Coastguard Worker; 64: c.ule.d $[[TMP]], $[[TMP1]] 831*9880d681SAndroid Build Coastguard Worker; 64: movf $5, $4, $fcc0 832*9880d681SAndroid Build Coastguard Worker; 64: move $2, $5 833*9880d681SAndroid Build Coastguard Worker 834*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_ogt_i32_val))) 835*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 836*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 837*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 838*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 839*9880d681SAndroid Build Coastguard Worker; 64R2-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 840*9880d681SAndroid Build Coastguard Worker; 64R2: c.ule.d $[[TMP]], $[[TMP1]] 841*9880d681SAndroid Build Coastguard Worker; 64R2: movf $5, $4, $fcc0 842*9880d681SAndroid Build Coastguard Worker; 64R2: move $2, $5 843*9880d681SAndroid Build Coastguard Worker 844*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: daddiu $[[T0:[0-9]+]], ${{[0-9]+}}, %lo(%neg(%gp_rel(f64_fcmp_ogt_i32_val))) 845*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: daddu $[[GOT:[0-9]+]], $[[T0]], $25 846*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ld $[[D2:[0-9]+]], %got_disp(d2)($1) 847*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ldc1 $[[TMP:f[0-9]+]], 0($[[D2]]) 848*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ld $[[D3:[0-9]+]], %got_disp(d3)($1) 849*9880d681SAndroid Build Coastguard Worker; 64R6-DAG: ldc1 $[[TMP1:f[0-9]+]], 0($[[D3]]) 850*9880d681SAndroid Build Coastguard Worker; 64R6: cmp.lt.d $[[CC:f[0-9]+]], $[[TMP1]], $[[TMP]] 851*9880d681SAndroid Build Coastguard Worker; 64R6: mfc1 $[[CCGPR:[0-9]+]], $[[CC]] 852*9880d681SAndroid Build Coastguard Worker; 64R6: andi $[[CCGPR]], $[[CCGPR]], 1 853*9880d681SAndroid Build Coastguard Worker; 64R6: seleqz $[[EQ:[0-9]+]], $5, $[[CCGPR]] 854*9880d681SAndroid Build Coastguard Worker; 64R6: selnez $[[NE:[0-9]+]], $4, $[[CCGPR]] 855*9880d681SAndroid Build Coastguard Worker; 64R6: or $2, $[[NE]], $[[EQ]] 856*9880d681SAndroid Build Coastguard Worker 857*9880d681SAndroid Build Coastguard Worker %tmp = load double, double* @d2, align 8 858*9880d681SAndroid Build Coastguard Worker %tmp1 = load double, double* @d3, align 8 859*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt double %tmp, %tmp1 860*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %f0, i32 %f1 861*9880d681SAndroid Build Coastguard Worker ret i32 %cond 862*9880d681SAndroid Build Coastguard Worker} 863