1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips4 -mattr=+soft-float -O1 \ 2*9880d681SAndroid Build Coastguard Worker; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,C_CC_FMT,PRER6 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64 -mattr=+soft-float -O1 \ 4*9880d681SAndroid Build Coastguard Worker; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,C_CC_FMT,PRER6 5*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64r2 -mattr=+soft-float -O1 \ 6*9880d681SAndroid Build Coastguard Worker; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,C_CC_FMT,PRER6 7*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64r6 -mattr=+soft-float -O1 \ 8*9880d681SAndroid Build Coastguard Worker; RUN: -disable-mips-delay-filler < %s | FileCheck %s -check-prefixes=ALL,CMP_CC_FMT,R6 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker@gld0 = external global fp128 11*9880d681SAndroid Build Coastguard Worker@gld1 = external global fp128 12*9880d681SAndroid Build Coastguard Worker@gld2 = external global fp128 13*9880d681SAndroid Build Coastguard Worker@gf1 = external global float 14*9880d681SAndroid Build Coastguard Worker@gd1 = external global double 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: addLD: 17*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__addtf3) 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine fp128 @addLD() { 20*9880d681SAndroid Build Coastguard Workerentry: 21*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 22*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 23*9880d681SAndroid Build Coastguard Worker %add = fadd fp128 %0, %1 24*9880d681SAndroid Build Coastguard Worker ret fp128 %add 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: subLD: 28*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__subtf3) 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine fp128 @subLD() { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 33*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 34*9880d681SAndroid Build Coastguard Worker %sub = fsub fp128 %0, %1 35*9880d681SAndroid Build Coastguard Worker ret fp128 %sub 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: mulLD: 39*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__multf3) 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine fp128 @mulLD() { 42*9880d681SAndroid Build Coastguard Workerentry: 43*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 44*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 45*9880d681SAndroid Build Coastguard Worker %mul = fmul fp128 %0, %1 46*9880d681SAndroid Build Coastguard Worker ret fp128 %mul 47*9880d681SAndroid Build Coastguard Worker} 48*9880d681SAndroid Build Coastguard Worker 49*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: divLD: 50*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__divtf3) 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Workerdefine fp128 @divLD() { 53*9880d681SAndroid Build Coastguard Workerentry: 54*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 55*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 56*9880d681SAndroid Build Coastguard Worker %div = fdiv fp128 %0, %1 57*9880d681SAndroid Build Coastguard Worker ret fp128 %div 58*9880d681SAndroid Build Coastguard Worker} 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_char: 61*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatsitf) 62*9880d681SAndroid Build Coastguard Worker 63*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_char(i8 signext %a) { 64*9880d681SAndroid Build Coastguard Workerentry: 65*9880d681SAndroid Build Coastguard Worker %conv = sitofp i8 %a to fp128 66*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_short: 70*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatsitf) 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_short(i16 signext %a) { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker %conv = sitofp i16 %a to fp128 75*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 76*9880d681SAndroid Build Coastguard Worker} 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_int: 79*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatsitf) 80*9880d681SAndroid Build Coastguard Worker 81*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_int(i32 %a) { 82*9880d681SAndroid Build Coastguard Workerentry: 83*9880d681SAndroid Build Coastguard Worker %conv = sitofp i32 %a to fp128 84*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 85*9880d681SAndroid Build Coastguard Worker} 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_LL: 88*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatditf) 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_LL(i64 %a) { 91*9880d681SAndroid Build Coastguard Workerentry: 92*9880d681SAndroid Build Coastguard Worker %conv = sitofp i64 %a to fp128 93*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 94*9880d681SAndroid Build Coastguard Worker} 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_UChar: 97*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatunsitf) 98*9880d681SAndroid Build Coastguard Worker 99*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_UChar(i8 zeroext %a) { 100*9880d681SAndroid Build Coastguard Workerentry: 101*9880d681SAndroid Build Coastguard Worker %conv = uitofp i8 %a to fp128 102*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 103*9880d681SAndroid Build Coastguard Worker} 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_UShort: 106*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatunsitf) 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_UShort(i16 zeroext %a) { 109*9880d681SAndroid Build Coastguard Workerentry: 110*9880d681SAndroid Build Coastguard Worker %conv = uitofp i16 %a to fp128 111*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 112*9880d681SAndroid Build Coastguard Worker} 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_UInt: 115*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatunsitf) 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_UInt(i32 signext %a) { 118*9880d681SAndroid Build Coastguard Workerentry: 119*9880d681SAndroid Build Coastguard Worker %conv = uitofp i32 %a to fp128 120*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 121*9880d681SAndroid Build Coastguard Worker} 122*9880d681SAndroid Build Coastguard Worker 123*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_ULL: 124*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__floatunditf) 125*9880d681SAndroid Build Coastguard Worker 126*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_ULL(i64 %a) { 127*9880d681SAndroid Build Coastguard Workerentry: 128*9880d681SAndroid Build Coastguard Worker %conv = uitofp i64 %a to fp128 129*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 130*9880d681SAndroid Build Coastguard Worker} 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_char_LD: 133*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixtfsi) 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerdefine signext i8 @conv_char_LD(fp128 %a) { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %conv = fptosi fp128 %a to i8 138*9880d681SAndroid Build Coastguard Worker ret i8 %conv 139*9880d681SAndroid Build Coastguard Worker} 140*9880d681SAndroid Build Coastguard Worker 141*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_short_LD: 142*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixtfsi) 143*9880d681SAndroid Build Coastguard Worker 144*9880d681SAndroid Build Coastguard Workerdefine signext i16 @conv_short_LD(fp128 %a) { 145*9880d681SAndroid Build Coastguard Workerentry: 146*9880d681SAndroid Build Coastguard Worker %conv = fptosi fp128 %a to i16 147*9880d681SAndroid Build Coastguard Worker ret i16 %conv 148*9880d681SAndroid Build Coastguard Worker} 149*9880d681SAndroid Build Coastguard Worker 150*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_int_LD: 151*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixtfsi) 152*9880d681SAndroid Build Coastguard Worker 153*9880d681SAndroid Build Coastguard Workerdefine i32 @conv_int_LD(fp128 %a) { 154*9880d681SAndroid Build Coastguard Workerentry: 155*9880d681SAndroid Build Coastguard Worker %conv = fptosi fp128 %a to i32 156*9880d681SAndroid Build Coastguard Worker ret i32 %conv 157*9880d681SAndroid Build Coastguard Worker} 158*9880d681SAndroid Build Coastguard Worker 159*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LL_LD: 160*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixtfdi) 161*9880d681SAndroid Build Coastguard Worker 162*9880d681SAndroid Build Coastguard Workerdefine i64 @conv_LL_LD(fp128 %a) { 163*9880d681SAndroid Build Coastguard Workerentry: 164*9880d681SAndroid Build Coastguard Worker %conv = fptosi fp128 %a to i64 165*9880d681SAndroid Build Coastguard Worker ret i64 %conv 166*9880d681SAndroid Build Coastguard Worker} 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_UChar_LD: 169*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixtfsi) 170*9880d681SAndroid Build Coastguard Worker 171*9880d681SAndroid Build Coastguard Workerdefine zeroext i8 @conv_UChar_LD(fp128 %a) { 172*9880d681SAndroid Build Coastguard Workerentry: 173*9880d681SAndroid Build Coastguard Worker %conv = fptoui fp128 %a to i8 174*9880d681SAndroid Build Coastguard Worker ret i8 %conv 175*9880d681SAndroid Build Coastguard Worker} 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_UShort_LD: 178*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixtfsi) 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerdefine zeroext i16 @conv_UShort_LD(fp128 %a) { 181*9880d681SAndroid Build Coastguard Workerentry: 182*9880d681SAndroid Build Coastguard Worker %conv = fptoui fp128 %a to i16 183*9880d681SAndroid Build Coastguard Worker ret i16 %conv 184*9880d681SAndroid Build Coastguard Worker} 185*9880d681SAndroid Build Coastguard Worker 186*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_UInt_LD: 187*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixunstfsi) 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Workerdefine i32 @conv_UInt_LD(fp128 %a) { 190*9880d681SAndroid Build Coastguard Workerentry: 191*9880d681SAndroid Build Coastguard Worker %conv = fptoui fp128 %a to i32 192*9880d681SAndroid Build Coastguard Worker ret i32 %conv 193*9880d681SAndroid Build Coastguard Worker} 194*9880d681SAndroid Build Coastguard Worker 195*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_ULL_LD: 196*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__fixunstfdi) 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdefine i64 @conv_ULL_LD(fp128 %a) { 199*9880d681SAndroid Build Coastguard Workerentry: 200*9880d681SAndroid Build Coastguard Worker %conv = fptoui fp128 %a to i64 201*9880d681SAndroid Build Coastguard Worker ret i64 %conv 202*9880d681SAndroid Build Coastguard Worker} 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_float: 205*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__extendsftf2) 206*9880d681SAndroid Build Coastguard Worker 207*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_float(float %a) { 208*9880d681SAndroid Build Coastguard Workerentry: 209*9880d681SAndroid Build Coastguard Worker %conv = fpext float %a to fp128 210*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 211*9880d681SAndroid Build Coastguard Worker} 212*9880d681SAndroid Build Coastguard Worker 213*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_LD_double: 214*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__extenddftf2) 215*9880d681SAndroid Build Coastguard Worker 216*9880d681SAndroid Build Coastguard Workerdefine fp128 @conv_LD_double(double %a) { 217*9880d681SAndroid Build Coastguard Workerentry: 218*9880d681SAndroid Build Coastguard Worker %conv = fpext double %a to fp128 219*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 220*9880d681SAndroid Build Coastguard Worker} 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_float_LD: 223*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__trunctfsf2) 224*9880d681SAndroid Build Coastguard Worker 225*9880d681SAndroid Build Coastguard Workerdefine float @conv_float_LD(fp128 %a) { 226*9880d681SAndroid Build Coastguard Workerentry: 227*9880d681SAndroid Build Coastguard Worker %conv = fptrunc fp128 %a to float 228*9880d681SAndroid Build Coastguard Worker ret float %conv 229*9880d681SAndroid Build Coastguard Worker} 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: conv_double_LD: 232*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__trunctfdf2) 233*9880d681SAndroid Build Coastguard Worker 234*9880d681SAndroid Build Coastguard Workerdefine double @conv_double_LD(fp128 %a) { 235*9880d681SAndroid Build Coastguard Workerentry: 236*9880d681SAndroid Build Coastguard Worker %conv = fptrunc fp128 %a to double 237*9880d681SAndroid Build Coastguard Worker ret double %conv 238*9880d681SAndroid Build Coastguard Worker} 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_fabsl: 241*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $[[R0:[0-9]+]], 8($[[R4:[0-9]+]]) 242*9880d681SAndroid Build Coastguard Worker; ALL-DAG: daddiu $[[R1:[0-9]+]], $zero, 1 243*9880d681SAndroid Build Coastguard Worker; ALL-DAG: dsll $[[R2:[0-9]+]], $[[R1]], 63 244*9880d681SAndroid Build Coastguard Worker; ALL-DAG: daddiu $[[R3:[0-9]+]], $[[R2]], -1 245*9880d681SAndroid Build Coastguard Worker; ALL-DAG: and $4, $[[R0]], $[[R3]] 246*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $2, 0($[[R4]]) 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_fabsl() { 249*9880d681SAndroid Build Coastguard Workerentry: 250*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 251*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @fabsl(fp128 %0) nounwind readnone 252*9880d681SAndroid Build Coastguard Worker ret fp128 %call 253*9880d681SAndroid Build Coastguard Worker} 254*9880d681SAndroid Build Coastguard Worker 255*9880d681SAndroid Build Coastguard Workerdeclare fp128 @fabsl(fp128) #1 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_ceill: 258*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(ceill) 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_ceill() { 261*9880d681SAndroid Build Coastguard Workerentry: 262*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 263*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @ceill(fp128 %0) nounwind readnone 264*9880d681SAndroid Build Coastguard Worker ret fp128 %call 265*9880d681SAndroid Build Coastguard Worker} 266*9880d681SAndroid Build Coastguard Worker 267*9880d681SAndroid Build Coastguard Workerdeclare fp128 @ceill(fp128) #1 268*9880d681SAndroid Build Coastguard Worker 269*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_sinl: 270*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(sinl) 271*9880d681SAndroid Build Coastguard Worker 272*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_sinl() { 273*9880d681SAndroid Build Coastguard Workerentry: 274*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 275*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @sinl(fp128 %0) nounwind 276*9880d681SAndroid Build Coastguard Worker ret fp128 %call 277*9880d681SAndroid Build Coastguard Worker} 278*9880d681SAndroid Build Coastguard Worker 279*9880d681SAndroid Build Coastguard Workerdeclare fp128 @sinl(fp128) #2 280*9880d681SAndroid Build Coastguard Worker 281*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_cosl: 282*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(cosl) 283*9880d681SAndroid Build Coastguard Worker 284*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_cosl() { 285*9880d681SAndroid Build Coastguard Workerentry: 286*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 287*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @cosl(fp128 %0) nounwind 288*9880d681SAndroid Build Coastguard Worker ret fp128 %call 289*9880d681SAndroid Build Coastguard Worker} 290*9880d681SAndroid Build Coastguard Worker 291*9880d681SAndroid Build Coastguard Workerdeclare fp128 @cosl(fp128) #2 292*9880d681SAndroid Build Coastguard Worker 293*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_expl: 294*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(expl) 295*9880d681SAndroid Build Coastguard Worker 296*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_expl() { 297*9880d681SAndroid Build Coastguard Workerentry: 298*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 299*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @expl(fp128 %0) nounwind 300*9880d681SAndroid Build Coastguard Worker ret fp128 %call 301*9880d681SAndroid Build Coastguard Worker} 302*9880d681SAndroid Build Coastguard Worker 303*9880d681SAndroid Build Coastguard Workerdeclare fp128 @expl(fp128) #2 304*9880d681SAndroid Build Coastguard Worker 305*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_exp2l: 306*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(exp2l) 307*9880d681SAndroid Build Coastguard Worker 308*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_exp2l() { 309*9880d681SAndroid Build Coastguard Workerentry: 310*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 311*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @exp2l(fp128 %0) nounwind 312*9880d681SAndroid Build Coastguard Worker ret fp128 %call 313*9880d681SAndroid Build Coastguard Worker} 314*9880d681SAndroid Build Coastguard Worker 315*9880d681SAndroid Build Coastguard Workerdeclare fp128 @exp2l(fp128) #2 316*9880d681SAndroid Build Coastguard Worker 317*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_logl: 318*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(logl) 319*9880d681SAndroid Build Coastguard Worker 320*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_logl() { 321*9880d681SAndroid Build Coastguard Workerentry: 322*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 323*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @logl(fp128 %0) nounwind 324*9880d681SAndroid Build Coastguard Worker ret fp128 %call 325*9880d681SAndroid Build Coastguard Worker} 326*9880d681SAndroid Build Coastguard Worker 327*9880d681SAndroid Build Coastguard Workerdeclare fp128 @logl(fp128) #2 328*9880d681SAndroid Build Coastguard Worker 329*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_log2l: 330*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(log2l) 331*9880d681SAndroid Build Coastguard Worker 332*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_log2l() { 333*9880d681SAndroid Build Coastguard Workerentry: 334*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 335*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @log2l(fp128 %0) nounwind 336*9880d681SAndroid Build Coastguard Worker ret fp128 %call 337*9880d681SAndroid Build Coastguard Worker} 338*9880d681SAndroid Build Coastguard Worker 339*9880d681SAndroid Build Coastguard Workerdeclare fp128 @log2l(fp128) #2 340*9880d681SAndroid Build Coastguard Worker 341*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_log10l: 342*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(log10l) 343*9880d681SAndroid Build Coastguard Worker 344*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_log10l() { 345*9880d681SAndroid Build Coastguard Workerentry: 346*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 347*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @log10l(fp128 %0) nounwind 348*9880d681SAndroid Build Coastguard Worker ret fp128 %call 349*9880d681SAndroid Build Coastguard Worker} 350*9880d681SAndroid Build Coastguard Worker 351*9880d681SAndroid Build Coastguard Workerdeclare fp128 @log10l(fp128) #2 352*9880d681SAndroid Build Coastguard Worker 353*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_nearbyintl: 354*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(nearbyintl) 355*9880d681SAndroid Build Coastguard Worker 356*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_nearbyintl() { 357*9880d681SAndroid Build Coastguard Workerentry: 358*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 359*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @nearbyintl(fp128 %0) nounwind readnone 360*9880d681SAndroid Build Coastguard Worker ret fp128 %call 361*9880d681SAndroid Build Coastguard Worker} 362*9880d681SAndroid Build Coastguard Worker 363*9880d681SAndroid Build Coastguard Workerdeclare fp128 @nearbyintl(fp128) #1 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_floorl: 366*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(floorl) 367*9880d681SAndroid Build Coastguard Worker 368*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_floorl() { 369*9880d681SAndroid Build Coastguard Workerentry: 370*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 371*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @floorl(fp128 %0) nounwind readnone 372*9880d681SAndroid Build Coastguard Worker ret fp128 %call 373*9880d681SAndroid Build Coastguard Worker} 374*9880d681SAndroid Build Coastguard Worker 375*9880d681SAndroid Build Coastguard Workerdeclare fp128 @floorl(fp128) #1 376*9880d681SAndroid Build Coastguard Worker 377*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_sqrtl: 378*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(sqrtl) 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_sqrtl() { 381*9880d681SAndroid Build Coastguard Workerentry: 382*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 383*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @sqrtl(fp128 %0) nounwind 384*9880d681SAndroid Build Coastguard Worker ret fp128 %call 385*9880d681SAndroid Build Coastguard Worker} 386*9880d681SAndroid Build Coastguard Worker 387*9880d681SAndroid Build Coastguard Workerdeclare fp128 @sqrtl(fp128) #2 388*9880d681SAndroid Build Coastguard Worker 389*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall1_rintl: 390*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(rintl) 391*9880d681SAndroid Build Coastguard Worker 392*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall1_rintl() { 393*9880d681SAndroid Build Coastguard Workerentry: 394*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 395*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @rintl(fp128 %0) nounwind readnone 396*9880d681SAndroid Build Coastguard Worker ret fp128 %call 397*9880d681SAndroid Build Coastguard Worker} 398*9880d681SAndroid Build Coastguard Worker 399*9880d681SAndroid Build Coastguard Workerdeclare fp128 @rintl(fp128) #1 400*9880d681SAndroid Build Coastguard Worker 401*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall_powil: 402*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__powitf2) 403*9880d681SAndroid Build Coastguard Worker 404*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall_powil(fp128 %a, i32 %b) { 405*9880d681SAndroid Build Coastguard Workerentry: 406*9880d681SAndroid Build Coastguard Worker %0 = tail call fp128 @llvm.powi.f128(fp128 %a, i32 %b) 407*9880d681SAndroid Build Coastguard Worker ret fp128 %0 408*9880d681SAndroid Build Coastguard Worker} 409*9880d681SAndroid Build Coastguard Worker 410*9880d681SAndroid Build Coastguard Workerdeclare fp128 @llvm.powi.f128(fp128, i32) #3 411*9880d681SAndroid Build Coastguard Worker 412*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall2_copysignl: 413*9880d681SAndroid Build Coastguard Worker; ALL-DAG: daddiu $[[R2:[0-9]+]], $zero, 1 414*9880d681SAndroid Build Coastguard Worker; ALL-DAG: dsll $[[R3:[0-9]+]], $[[R2]], 63 415*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $[[R0:[0-9]+]], %got_disp(gld1) 416*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $[[R1:[0-9]+]], 8($[[R0]]) 417*9880d681SAndroid Build Coastguard Worker; ALL-DAG: and $[[R4:[0-9]+]], $[[R1]], $[[R3]] 418*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $[[R5:[0-9]+]], %got_disp(gld0) 419*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $[[R6:[0-9]+]], 8($[[R5]]) 420*9880d681SAndroid Build Coastguard Worker; ALL-DAG: daddiu $[[R7:[0-9]+]], $[[R3]], -1 421*9880d681SAndroid Build Coastguard Worker; ALL-DAG: and $[[R8:[0-9]+]], $[[R6]], $[[R7]] 422*9880d681SAndroid Build Coastguard Worker; ALL-DAG: or $4, $[[R8]], $[[R4]] 423*9880d681SAndroid Build Coastguard Worker; ALL-DAG: ld $2, 0($[[R5]]) 424*9880d681SAndroid Build Coastguard Worker 425*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall2_copysignl() { 426*9880d681SAndroid Build Coastguard Workerentry: 427*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 428*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 429*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @copysignl(fp128 %0, fp128 %1) nounwind readnone 430*9880d681SAndroid Build Coastguard Worker ret fp128 %call 431*9880d681SAndroid Build Coastguard Worker} 432*9880d681SAndroid Build Coastguard Worker 433*9880d681SAndroid Build Coastguard Workerdeclare fp128 @copysignl(fp128, fp128) #1 434*9880d681SAndroid Build Coastguard Worker 435*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall2_powl: 436*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(powl) 437*9880d681SAndroid Build Coastguard Worker 438*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall2_powl() { 439*9880d681SAndroid Build Coastguard Workerentry: 440*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 441*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 442*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @powl(fp128 %0, fp128 %1) nounwind 443*9880d681SAndroid Build Coastguard Worker ret fp128 %call 444*9880d681SAndroid Build Coastguard Worker} 445*9880d681SAndroid Build Coastguard Worker 446*9880d681SAndroid Build Coastguard Workerdeclare fp128 @powl(fp128, fp128) #2 447*9880d681SAndroid Build Coastguard Worker 448*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall2_fmodl: 449*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(fmodl) 450*9880d681SAndroid Build Coastguard Worker 451*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall2_fmodl() { 452*9880d681SAndroid Build Coastguard Workerentry: 453*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 454*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld1, align 16 455*9880d681SAndroid Build Coastguard Worker %call = tail call fp128 @fmodl(fp128 %0, fp128 %1) nounwind 456*9880d681SAndroid Build Coastguard Worker ret fp128 %call 457*9880d681SAndroid Build Coastguard Worker} 458*9880d681SAndroid Build Coastguard Worker 459*9880d681SAndroid Build Coastguard Workerdeclare fp128 @fmodl(fp128, fp128) #2 460*9880d681SAndroid Build Coastguard Worker 461*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: libcall3_fmal: 462*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(fmal) 463*9880d681SAndroid Build Coastguard Worker 464*9880d681SAndroid Build Coastguard Workerdefine fp128 @libcall3_fmal() { 465*9880d681SAndroid Build Coastguard Workerentry: 466*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld0, align 16 467*9880d681SAndroid Build Coastguard Worker %1 = load fp128, fp128* @gld2, align 16 468*9880d681SAndroid Build Coastguard Worker %2 = load fp128, fp128* @gld1, align 16 469*9880d681SAndroid Build Coastguard Worker %3 = tail call fp128 @llvm.fma.f128(fp128 %0, fp128 %2, fp128 %1) 470*9880d681SAndroid Build Coastguard Worker ret fp128 %3 471*9880d681SAndroid Build Coastguard Worker} 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Workerdeclare fp128 @llvm.fma.f128(fp128, fp128, fp128) #4 474*9880d681SAndroid Build Coastguard Worker 475*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: cmp_lt: 476*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__lttf2) 477*9880d681SAndroid Build Coastguard Worker 478*9880d681SAndroid Build Coastguard Workerdefine i32 @cmp_lt(fp128 %a, fp128 %b) { 479*9880d681SAndroid Build Coastguard Workerentry: 480*9880d681SAndroid Build Coastguard Worker %cmp = fcmp olt fp128 %a, %b 481*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 482*9880d681SAndroid Build Coastguard Worker ret i32 %conv 483*9880d681SAndroid Build Coastguard Worker} 484*9880d681SAndroid Build Coastguard Worker 485*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: cmp_le: 486*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__letf2) 487*9880d681SAndroid Build Coastguard Worker 488*9880d681SAndroid Build Coastguard Workerdefine i32 @cmp_le(fp128 %a, fp128 %b) { 489*9880d681SAndroid Build Coastguard Workerentry: 490*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ole fp128 %a, %b 491*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 492*9880d681SAndroid Build Coastguard Worker ret i32 %conv 493*9880d681SAndroid Build Coastguard Worker} 494*9880d681SAndroid Build Coastguard Worker 495*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: cmp_gt: 496*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__gttf2) 497*9880d681SAndroid Build Coastguard Worker 498*9880d681SAndroid Build Coastguard Workerdefine i32 @cmp_gt(fp128 %a, fp128 %b) { 499*9880d681SAndroid Build Coastguard Workerentry: 500*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt fp128 %a, %b 501*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 502*9880d681SAndroid Build Coastguard Worker ret i32 %conv 503*9880d681SAndroid Build Coastguard Worker} 504*9880d681SAndroid Build Coastguard Worker 505*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: cmp_ge: 506*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__getf2) 507*9880d681SAndroid Build Coastguard Worker 508*9880d681SAndroid Build Coastguard Workerdefine i32 @cmp_ge(fp128 %a, fp128 %b) { 509*9880d681SAndroid Build Coastguard Workerentry: 510*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oge fp128 %a, %b 511*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 512*9880d681SAndroid Build Coastguard Worker ret i32 %conv 513*9880d681SAndroid Build Coastguard Worker} 514*9880d681SAndroid Build Coastguard Worker 515*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: cmp_eq: 516*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__eqtf2) 517*9880d681SAndroid Build Coastguard Worker 518*9880d681SAndroid Build Coastguard Workerdefine i32 @cmp_eq(fp128 %a, fp128 %b) { 519*9880d681SAndroid Build Coastguard Workerentry: 520*9880d681SAndroid Build Coastguard Worker %cmp = fcmp oeq fp128 %a, %b 521*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 522*9880d681SAndroid Build Coastguard Worker ret i32 %conv 523*9880d681SAndroid Build Coastguard Worker} 524*9880d681SAndroid Build Coastguard Worker 525*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: cmp_ne: 526*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__netf2) 527*9880d681SAndroid Build Coastguard Worker 528*9880d681SAndroid Build Coastguard Workerdefine i32 @cmp_ne(fp128 %a, fp128 %b) { 529*9880d681SAndroid Build Coastguard Workerentry: 530*9880d681SAndroid Build Coastguard Worker %cmp = fcmp une fp128 %a, %b 531*9880d681SAndroid Build Coastguard Worker %conv = zext i1 %cmp to i32 532*9880d681SAndroid Build Coastguard Worker ret i32 %conv 533*9880d681SAndroid Build Coastguard Worker} 534*9880d681SAndroid Build Coastguard Worker 535*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: load_LD_LD: 536*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R0:[0-9]+]], %got_disp(gld1) 537*9880d681SAndroid Build Coastguard Worker; ALL: ld $2, 0($[[R0]]) 538*9880d681SAndroid Build Coastguard Worker; ALL: ld $4, 8($[[R0]]) 539*9880d681SAndroid Build Coastguard Worker 540*9880d681SAndroid Build Coastguard Workerdefine fp128 @load_LD_LD() { 541*9880d681SAndroid Build Coastguard Workerentry: 542*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld1, align 16 543*9880d681SAndroid Build Coastguard Worker ret fp128 %0 544*9880d681SAndroid Build Coastguard Worker} 545*9880d681SAndroid Build Coastguard Worker 546*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: load_LD_float: 547*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R0:[0-9]+]], %got_disp(gf1) 548*9880d681SAndroid Build Coastguard Worker; ALL: lw $4, 0($[[R0]]) 549*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__extendsftf2) 550*9880d681SAndroid Build Coastguard Worker; PRER6: jalr $25 551*9880d681SAndroid Build Coastguard Worker; R6: jalrc $25 552*9880d681SAndroid Build Coastguard Worker 553*9880d681SAndroid Build Coastguard Workerdefine fp128 @load_LD_float() { 554*9880d681SAndroid Build Coastguard Workerentry: 555*9880d681SAndroid Build Coastguard Worker %0 = load float, float* @gf1, align 4 556*9880d681SAndroid Build Coastguard Worker %conv = fpext float %0 to fp128 557*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 558*9880d681SAndroid Build Coastguard Worker} 559*9880d681SAndroid Build Coastguard Worker 560*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: load_LD_double: 561*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R0:[0-9]+]], %got_disp(gd1) 562*9880d681SAndroid Build Coastguard Worker; ALL: ld $4, 0($[[R0]]) 563*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__extenddftf2) 564*9880d681SAndroid Build Coastguard Worker; PRER6: jalr $25 565*9880d681SAndroid Build Coastguard Worker; R6: jalrc $25 566*9880d681SAndroid Build Coastguard Worker 567*9880d681SAndroid Build Coastguard Workerdefine fp128 @load_LD_double() { 568*9880d681SAndroid Build Coastguard Workerentry: 569*9880d681SAndroid Build Coastguard Worker %0 = load double, double* @gd1, align 8 570*9880d681SAndroid Build Coastguard Worker %conv = fpext double %0 to fp128 571*9880d681SAndroid Build Coastguard Worker ret fp128 %conv 572*9880d681SAndroid Build Coastguard Worker} 573*9880d681SAndroid Build Coastguard Worker 574*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: store_LD_LD: 575*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R0:[0-9]+]], %got_disp(gld1) 576*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R1:[0-9]+]], 0($[[R0]]) 577*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R2:[0-9]+]], 8($[[R0]]) 578*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R3:[0-9]+]], %got_disp(gld0) 579*9880d681SAndroid Build Coastguard Worker; ALL: sd $[[R2]], 8($[[R3]]) 580*9880d681SAndroid Build Coastguard Worker; ALL: sd $[[R1]], 0($[[R3]]) 581*9880d681SAndroid Build Coastguard Worker 582*9880d681SAndroid Build Coastguard Workerdefine void @store_LD_LD() { 583*9880d681SAndroid Build Coastguard Workerentry: 584*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld1, align 16 585*9880d681SAndroid Build Coastguard Worker store fp128 %0, fp128* @gld0, align 16 586*9880d681SAndroid Build Coastguard Worker ret void 587*9880d681SAndroid Build Coastguard Worker} 588*9880d681SAndroid Build Coastguard Worker 589*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: store_LD_float: 590*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R0:[0-9]+]], %got_disp(gld1) 591*9880d681SAndroid Build Coastguard Worker; ALL: ld $4, 0($[[R0]]) 592*9880d681SAndroid Build Coastguard Worker; ALL: ld $5, 8($[[R0]]) 593*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__trunctfsf2) 594*9880d681SAndroid Build Coastguard Worker; PRER6: jalr $25 595*9880d681SAndroid Build Coastguard Worker; R6: jalrc $25 596*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R1:[0-9]+]], %got_disp(gf1) 597*9880d681SAndroid Build Coastguard Worker; ALL: sw $2, 0($[[R1]]) 598*9880d681SAndroid Build Coastguard Worker 599*9880d681SAndroid Build Coastguard Workerdefine void @store_LD_float() { 600*9880d681SAndroid Build Coastguard Workerentry: 601*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld1, align 16 602*9880d681SAndroid Build Coastguard Worker %conv = fptrunc fp128 %0 to float 603*9880d681SAndroid Build Coastguard Worker store float %conv, float* @gf1, align 4 604*9880d681SAndroid Build Coastguard Worker ret void 605*9880d681SAndroid Build Coastguard Worker} 606*9880d681SAndroid Build Coastguard Worker 607*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: store_LD_double: 608*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R0:[0-9]+]], %got_disp(gld1) 609*9880d681SAndroid Build Coastguard Worker; ALL: ld $4, 0($[[R0]]) 610*9880d681SAndroid Build Coastguard Worker; ALL: ld $5, 8($[[R0]]) 611*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__trunctfdf2) 612*9880d681SAndroid Build Coastguard Worker; PRER6: jalr $25 613*9880d681SAndroid Build Coastguard Worker; R6: jalrc $25 614*9880d681SAndroid Build Coastguard Worker; ALL: ld $[[R1:[0-9]+]], %got_disp(gd1) 615*9880d681SAndroid Build Coastguard Worker; ALL: sd $2, 0($[[R1]]) 616*9880d681SAndroid Build Coastguard Worker 617*9880d681SAndroid Build Coastguard Workerdefine void @store_LD_double() { 618*9880d681SAndroid Build Coastguard Workerentry: 619*9880d681SAndroid Build Coastguard Worker %0 = load fp128, fp128* @gld1, align 16 620*9880d681SAndroid Build Coastguard Worker %conv = fptrunc fp128 %0 to double 621*9880d681SAndroid Build Coastguard Worker store double %conv, double* @gd1, align 8 622*9880d681SAndroid Build Coastguard Worker ret void 623*9880d681SAndroid Build Coastguard Worker} 624*9880d681SAndroid Build Coastguard Worker 625*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: select_LD: 626*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: movn $8, $6, $4 627*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: movn $9, $7, $4 628*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: move $2, $8 629*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: move $4, $9 630*9880d681SAndroid Build Coastguard Worker 631*9880d681SAndroid Build Coastguard Worker; FIXME: This sll works around an implementation detail in the code generator 632*9880d681SAndroid Build Coastguard Worker; (setcc's result is i32 so bits 32-63 are undefined). It's not really 633*9880d681SAndroid Build Coastguard Worker; needed. 634*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: sll $[[CC:[0-9]+]], $4, 0 635*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: seleqz $[[EQ1:[0-9]+]], $8, $[[CC]] 636*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: selnez $[[NE1:[0-9]+]], $6, $[[CC]] 637*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: or $2, $[[NE1]], $[[EQ1]] 638*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: seleqz $[[EQ2:[0-9]+]], $9, $[[CC]] 639*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: selnez $[[NE2:[0-9]+]], $7, $[[CC]] 640*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT-DAG: or $4, $[[NE2]], $[[EQ2]] 641*9880d681SAndroid Build Coastguard Worker 642*9880d681SAndroid Build Coastguard Workerdefine fp128 @select_LD(i32 signext %a, i64, fp128 %b, fp128 %c) { 643*9880d681SAndroid Build Coastguard Workerentry: 644*9880d681SAndroid Build Coastguard Worker %tobool = icmp ne i32 %a, 0 645*9880d681SAndroid Build Coastguard Worker %cond = select i1 %tobool, fp128 %b, fp128 %c 646*9880d681SAndroid Build Coastguard Worker ret fp128 %cond 647*9880d681SAndroid Build Coastguard Worker} 648*9880d681SAndroid Build Coastguard Worker 649*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: selectCC_LD: 650*9880d681SAndroid Build Coastguard Worker; ALL: move $[[R0:[0-9]+]], $11 651*9880d681SAndroid Build Coastguard Worker; ALL: move $[[R1:[0-9]+]], $10 652*9880d681SAndroid Build Coastguard Worker; ALL: move $[[R2:[0-9]+]], $9 653*9880d681SAndroid Build Coastguard Worker; ALL: move $[[R3:[0-9]+]], $8 654*9880d681SAndroid Build Coastguard Worker; ALL: ld $25, %call16(__gttf2)($gp) 655*9880d681SAndroid Build Coastguard Worker; PRER6: jalr $25 656*9880d681SAndroid Build Coastguard Worker; R6: jalrc $25 657*9880d681SAndroid Build Coastguard Worker 658*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: slti $[[CC:[0-9]+]], $2, 1 659*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: movz $[[R1]], $[[R3]], $[[CC]] 660*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: movz $[[R0]], $[[R2]], $[[CC]] 661*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: move $2, $[[R1]] 662*9880d681SAndroid Build Coastguard Worker; C_CC_FMT: move $4, $[[R0]] 663*9880d681SAndroid Build Coastguard Worker 664*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: slt $[[CC:[0-9]+]], $zero, $2 665*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: seleqz $[[EQ1:[0-9]+]], $[[R1]], $[[CC]] 666*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: selnez $[[NE1:[0-9]+]], $[[R3]], $[[CC]] 667*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: or $2, $[[NE1]], $[[EQ1]] 668*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: seleqz $[[EQ2:[0-9]+]], $[[R0]], $[[CC]] 669*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: selnez $[[NE2:[0-9]+]], $[[R2]], $[[CC]] 670*9880d681SAndroid Build Coastguard Worker; CMP_CC_FMT: or $4, $[[NE2]], $[[EQ2]] 671*9880d681SAndroid Build Coastguard Worker 672*9880d681SAndroid Build Coastguard Workerdefine fp128 @selectCC_LD(fp128 %a, fp128 %b, fp128 %c, fp128 %d) { 673*9880d681SAndroid Build Coastguard Workerentry: 674*9880d681SAndroid Build Coastguard Worker %cmp = fcmp ogt fp128 %a, %b 675*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, fp128 %c, fp128 %d 676*9880d681SAndroid Build Coastguard Worker ret fp128 %cond 677*9880d681SAndroid Build Coastguard Worker} 678