; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips4 -mattr=+soft-float -O1 \
; RUN:     -disable-mips-delay-filler -relocation-model=pic < %s | FileCheck \
; RUN:     %s -check-prefixes=ALL,C_CC_FMT,PRER6,NOT-R2R6
; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64 -mattr=+soft-float -O1 \
; RUN:     -disable-mips-delay-filler -relocation-model=pic < %s | FileCheck \
; RUN:     %s -check-prefixes=ALL,C_CC_FMT,PRER6,NOT-R2R6
; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64r2 -mattr=+soft-float \
; RUN:     -O1 -disable-mips-delay-filler -relocation-model=pic < %s | FileCheck \
; RUN:     %s -check-prefixes=ALL,C_CC_FMT,PRER6,R2R6
; RUN: llc -mtriple=mips64el-unknown-unknown -mcpu=mips64r6 -mattr=+soft-float \
; RUN:     -O1 -disable-mips-delay-filler -relocation-model=pic < %s | FileCheck \
; RUN:     %s -check-prefixes=ALL,CMP_CC_FMT,R6,R2R6

@gld0 = external global fp128
@gld1 = external global fp128
@gld2 = external global fp128
@gf1 = external global float
@gd1 = external global double

define fp128 @addLD() {
; C_CC_FMT-LABEL: addLD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(addLD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(addLD)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__addtf3)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp0, R_MIPS_JALR, __addtf3
; C_CC_FMT-NEXT:  .Ltmp0:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: addLD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(addLD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(addLD)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__addtf3)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp0, R_MIPS_JALR, __addtf3
; CMP_CC_FMT-NEXT:  .Ltmp0:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %add = fadd fp128 %0, %1
  ret fp128 %add
}

define fp128 @subLD() {
; C_CC_FMT-LABEL: subLD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(subLD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(subLD)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__subtf3)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp1, R_MIPS_JALR, __subtf3
; C_CC_FMT-NEXT:  .Ltmp1:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: subLD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(subLD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(subLD)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__subtf3)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp1, R_MIPS_JALR, __subtf3
; CMP_CC_FMT-NEXT:  .Ltmp1:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %sub = fsub fp128 %0, %1
  ret fp128 %sub
}

define fp128 @mulLD() {
; C_CC_FMT-LABEL: mulLD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(mulLD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(mulLD)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__multf3)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp2, R_MIPS_JALR, __multf3
; C_CC_FMT-NEXT:  .Ltmp2:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: mulLD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(mulLD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(mulLD)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__multf3)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp2, R_MIPS_JALR, __multf3
; CMP_CC_FMT-NEXT:  .Ltmp2:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %mul = fmul fp128 %0, %1
  ret fp128 %mul
}

define fp128 @divLD() {
; C_CC_FMT-LABEL: divLD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(divLD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(divLD)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__divtf3)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp3, R_MIPS_JALR, __divtf3
; C_CC_FMT-NEXT:  .Ltmp3:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: divLD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(divLD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(divLD)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__divtf3)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp3, R_MIPS_JALR, __divtf3
; CMP_CC_FMT-NEXT:  .Ltmp3:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %div = fdiv fp128 %0, %1
  ret fp128 %div
}

define fp128 @conv_LD_char(i8 signext %a) {
; C_CC_FMT-LABEL: conv_LD_char:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_char)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_char)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatsitf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp4, R_MIPS_JALR, __floatsitf
; C_CC_FMT-NEXT:  .Ltmp4:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_char:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_char)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_char)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatsitf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp4, R_MIPS_JALR, __floatsitf
; CMP_CC_FMT-NEXT:  .Ltmp4:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = sitofp i8 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_short(i16 signext %a) {
; C_CC_FMT-LABEL: conv_LD_short:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_short)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_short)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatsitf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp5, R_MIPS_JALR, __floatsitf
; C_CC_FMT-NEXT:  .Ltmp5:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_short:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_short)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_short)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatsitf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp5, R_MIPS_JALR, __floatsitf
; CMP_CC_FMT-NEXT:  .Ltmp5:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = sitofp i16 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_int(i32 %a) {
; C_CC_FMT-LABEL: conv_LD_int:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_int)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_int)))
; C_CC_FMT-NEXT:    sll $4, $4, 0
; C_CC_FMT-NEXT:    ld $25, %call16(__floatsitf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp6, R_MIPS_JALR, __floatsitf
; C_CC_FMT-NEXT:  .Ltmp6:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_int:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_int)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_int)))
; CMP_CC_FMT-NEXT:    sll $4, $4, 0
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatsitf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp6, R_MIPS_JALR, __floatsitf
; CMP_CC_FMT-NEXT:  .Ltmp6:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = sitofp i32 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_LL(i64 %a) {
; C_CC_FMT-LABEL: conv_LD_LL:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_LL)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_LL)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatditf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp7, R_MIPS_JALR, __floatditf
; C_CC_FMT-NEXT:  .Ltmp7:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_LL:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_LL)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_LL)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatditf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp7, R_MIPS_JALR, __floatditf
; CMP_CC_FMT-NEXT:  .Ltmp7:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = sitofp i64 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_UChar(i8 zeroext %a) {
; C_CC_FMT-LABEL: conv_LD_UChar:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_UChar)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_UChar)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatunsitf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp8, R_MIPS_JALR, __floatunsitf
; C_CC_FMT-NEXT:  .Ltmp8:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_UChar:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_UChar)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_UChar)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatunsitf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp8, R_MIPS_JALR, __floatunsitf
; CMP_CC_FMT-NEXT:  .Ltmp8:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = uitofp i8 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_UShort(i16 zeroext %a) {
; C_CC_FMT-LABEL: conv_LD_UShort:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_UShort)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_UShort)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatunsitf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp9, R_MIPS_JALR, __floatunsitf
; C_CC_FMT-NEXT:  .Ltmp9:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_UShort:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_UShort)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_UShort)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatunsitf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp9, R_MIPS_JALR, __floatunsitf
; CMP_CC_FMT-NEXT:  .Ltmp9:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = uitofp i16 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_UInt(i32 signext %a) {
; C_CC_FMT-LABEL: conv_LD_UInt:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_UInt)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_UInt)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatunsitf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp10, R_MIPS_JALR, __floatunsitf
; C_CC_FMT-NEXT:  .Ltmp10:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_UInt:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_UInt)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_UInt)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatunsitf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp10, R_MIPS_JALR, __floatunsitf
; CMP_CC_FMT-NEXT:  .Ltmp10:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = uitofp i32 %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_ULL(i64 %a) {
; C_CC_FMT-LABEL: conv_LD_ULL:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_ULL)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_ULL)))
; C_CC_FMT-NEXT:    ld $25, %call16(__floatunditf)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp11, R_MIPS_JALR, __floatunditf
; C_CC_FMT-NEXT:  .Ltmp11:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_ULL:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_ULL)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_ULL)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__floatunditf)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp11, R_MIPS_JALR, __floatunditf
; CMP_CC_FMT-NEXT:  .Ltmp11:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = uitofp i64 %a to fp128
  ret fp128 %conv
}

define signext i8 @conv_char_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_char_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_char_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_char_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp12, R_MIPS_JALR, __fixtfsi
; C_CC_FMT-NEXT:  .Ltmp12:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_char_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_char_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_char_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp12, R_MIPS_JALR, __fixtfsi
; CMP_CC_FMT-NEXT:  .Ltmp12:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptosi fp128 %a to i8
  ret i8 %conv
}

define signext i16 @conv_short_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_short_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_short_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_short_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp13, R_MIPS_JALR, __fixtfsi
; C_CC_FMT-NEXT:  .Ltmp13:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_short_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_short_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_short_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp13, R_MIPS_JALR, __fixtfsi
; CMP_CC_FMT-NEXT:  .Ltmp13:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptosi fp128 %a to i16
  ret i16 %conv
}

define i32 @conv_int_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_int_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_int_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_int_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp14, R_MIPS_JALR, __fixtfsi
; C_CC_FMT-NEXT:  .Ltmp14:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_int_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_int_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_int_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp14, R_MIPS_JALR, __fixtfsi
; CMP_CC_FMT-NEXT:  .Ltmp14:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptosi fp128 %a to i32
  ret i32 %conv
}

define i64 @conv_LL_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_LL_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LL_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LL_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixtfdi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp15, R_MIPS_JALR, __fixtfdi
; C_CC_FMT-NEXT:  .Ltmp15:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LL_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LL_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LL_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixtfdi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp15, R_MIPS_JALR, __fixtfdi
; CMP_CC_FMT-NEXT:  .Ltmp15:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptosi fp128 %a to i64
  ret i64 %conv
}

define zeroext i8 @conv_UChar_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_UChar_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_UChar_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_UChar_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp16, R_MIPS_JALR, __fixtfsi
; C_CC_FMT-NEXT:  .Ltmp16:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_UChar_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_UChar_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_UChar_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp16, R_MIPS_JALR, __fixtfsi
; CMP_CC_FMT-NEXT:  .Ltmp16:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptoui fp128 %a to i8
  ret i8 %conv
}

define zeroext i16 @conv_UShort_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_UShort_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_UShort_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_UShort_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp17, R_MIPS_JALR, __fixtfsi
; C_CC_FMT-NEXT:  .Ltmp17:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_UShort_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_UShort_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_UShort_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixtfsi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp17, R_MIPS_JALR, __fixtfsi
; CMP_CC_FMT-NEXT:  .Ltmp17:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptoui fp128 %a to i16
  ret i16 %conv
}

define i32 @conv_UInt_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_UInt_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_UInt_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_UInt_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixunstfsi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp18, R_MIPS_JALR, __fixunstfsi
; C_CC_FMT-NEXT:  .Ltmp18:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_UInt_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_UInt_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_UInt_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixunstfsi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp18, R_MIPS_JALR, __fixunstfsi
; CMP_CC_FMT-NEXT:  .Ltmp18:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptoui fp128 %a to i32
  ret i32 %conv
}

define i64 @conv_ULL_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_ULL_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_ULL_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_ULL_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__fixunstfdi)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp19, R_MIPS_JALR, __fixunstfdi
; C_CC_FMT-NEXT:  .Ltmp19:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_ULL_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_ULL_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_ULL_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__fixunstfdi)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp19, R_MIPS_JALR, __fixunstfdi
; CMP_CC_FMT-NEXT:  .Ltmp19:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptoui fp128 %a to i64
  ret i64 %conv
}

define fp128 @conv_LD_float(float %a) {
; C_CC_FMT-LABEL: conv_LD_float:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_float)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_float)))
; C_CC_FMT-NEXT:    ld $25, %call16(__extendsftf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp20, R_MIPS_JALR, __extendsftf2
; C_CC_FMT-NEXT:  .Ltmp20:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_float:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_float)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_float)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__extendsftf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp20, R_MIPS_JALR, __extendsftf2
; CMP_CC_FMT-NEXT:  .Ltmp20:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fpext float %a to fp128
  ret fp128 %conv
}

define fp128 @conv_LD_double(double %a) {
; C_CC_FMT-LABEL: conv_LD_double:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_double)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_double)))
; C_CC_FMT-NEXT:    ld $25, %call16(__extenddftf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp21, R_MIPS_JALR, __extenddftf2
; C_CC_FMT-NEXT:  .Ltmp21:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_LD_double:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_LD_double)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_LD_double)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__extenddftf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp21, R_MIPS_JALR, __extenddftf2
; CMP_CC_FMT-NEXT:  .Ltmp21:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fpext double %a to fp128
  ret fp128 %conv
}

define float @conv_float_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_float_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_float_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_float_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__trunctfsf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp22, R_MIPS_JALR, __trunctfsf2
; C_CC_FMT-NEXT:  .Ltmp22:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_float_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_float_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_float_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__trunctfsf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp22, R_MIPS_JALR, __trunctfsf2
; CMP_CC_FMT-NEXT:  .Ltmp22:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptrunc fp128 %a to float
  ret float %conv
}

define double @conv_double_LD(fp128 %a) {
; C_CC_FMT-LABEL: conv_double_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_double_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_double_LD)))
; C_CC_FMT-NEXT:    ld $25, %call16(__trunctfdf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp23, R_MIPS_JALR, __trunctfdf2
; C_CC_FMT-NEXT:  .Ltmp23:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: conv_double_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(conv_double_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(conv_double_LD)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__trunctfdf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp23, R_MIPS_JALR, __trunctfdf2
; CMP_CC_FMT-NEXT:  .Ltmp23:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %conv = fptrunc fp128 %a to double
  ret double %conv
}

define fp128 @libcall1_fabsl() {
; NOT-R2R6-LABEL: libcall1_fabsl:
; NOT-R2R6:       # %bb.0: # %entry
; NOT-R2R6-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_fabsl)))
; NOT-R2R6-NEXT:    daddu $1, $1, $25
; NOT-R2R6-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(libcall1_fabsl)))
; NOT-R2R6-NEXT:    ld $1, %got_disp(gld0)($1)
; NOT-R2R6-NEXT:    ld $2, 8($1)
; NOT-R2R6-NEXT:    daddiu $3, $zero, 1
; NOT-R2R6-NEXT:    dsll $3, $3, 63
; NOT-R2R6-NEXT:    daddiu $3, $3, -1
; NOT-R2R6-NEXT:    and $4, $2, $3
; NOT-R2R6-NEXT:    ld $2, 0($1)
; NOT-R2R6-NEXT:    jr $ra
; NOT-R2R6-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_fabsl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_fabsl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(libcall1_fabsl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($1)
; CMP_CC_FMT-NEXT:    ld $2, 0($1)
; CMP_CC_FMT-NEXT:    ld $1, 8($1)
; CMP_CC_FMT-NEXT:    dextm $4, $1, 0, 63
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @fabsl(fp128 %0) nounwind readnone
  ret fp128 %call
}

declare fp128 @fabsl(fp128) #1

define fp128 @libcall1_ceill() {
; C_CC_FMT-LABEL: libcall1_ceill:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_ceill)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_ceill)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(ceill)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp24, R_MIPS_JALR, ceill
; C_CC_FMT-NEXT:  .Ltmp24:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_ceill:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_ceill)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_ceill)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(ceill)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp24, R_MIPS_JALR, ceill
; CMP_CC_FMT-NEXT:  .Ltmp24:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @ceill(fp128 %0) nounwind readnone
  ret fp128 %call
}

declare fp128 @ceill(fp128) #1

define fp128 @libcall1_sinl() {
; C_CC_FMT-LABEL: libcall1_sinl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_sinl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_sinl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(sinl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp25, R_MIPS_JALR, sinl
; C_CC_FMT-NEXT:  .Ltmp25:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_sinl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_sinl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_sinl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(sinl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp25, R_MIPS_JALR, sinl
; CMP_CC_FMT-NEXT:  .Ltmp25:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @sinl(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @sinl(fp128) #2

define fp128 @libcall1_cosl() {
; C_CC_FMT-LABEL: libcall1_cosl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_cosl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_cosl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(cosl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp26, R_MIPS_JALR, cosl
; C_CC_FMT-NEXT:  .Ltmp26:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_cosl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_cosl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_cosl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(cosl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp26, R_MIPS_JALR, cosl
; CMP_CC_FMT-NEXT:  .Ltmp26:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @cosl(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @cosl(fp128) #2

define fp128 @libcall1_expl() {
; C_CC_FMT-LABEL: libcall1_expl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_expl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_expl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(expl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp27, R_MIPS_JALR, expl
; C_CC_FMT-NEXT:  .Ltmp27:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_expl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_expl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_expl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(expl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp27, R_MIPS_JALR, expl
; CMP_CC_FMT-NEXT:  .Ltmp27:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @expl(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @expl(fp128) #2

define fp128 @libcall1_exp2l() {
; C_CC_FMT-LABEL: libcall1_exp2l:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_exp2l)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_exp2l)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(exp2l)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp28, R_MIPS_JALR, exp2l
; C_CC_FMT-NEXT:  .Ltmp28:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_exp2l:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_exp2l)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_exp2l)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(exp2l)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp28, R_MIPS_JALR, exp2l
; CMP_CC_FMT-NEXT:  .Ltmp28:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @exp2l(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @exp2l(fp128) #2

define fp128 @libcall1_logl() {
; C_CC_FMT-LABEL: libcall1_logl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_logl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_logl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(logl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp29, R_MIPS_JALR, logl
; C_CC_FMT-NEXT:  .Ltmp29:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_logl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_logl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_logl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(logl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp29, R_MIPS_JALR, logl
; CMP_CC_FMT-NEXT:  .Ltmp29:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @logl(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @logl(fp128) #2

define fp128 @libcall1_log2l() {
; C_CC_FMT-LABEL: libcall1_log2l:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_log2l)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_log2l)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(log2l)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp30, R_MIPS_JALR, log2l
; C_CC_FMT-NEXT:  .Ltmp30:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_log2l:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_log2l)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_log2l)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(log2l)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp30, R_MIPS_JALR, log2l
; CMP_CC_FMT-NEXT:  .Ltmp30:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @log2l(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @log2l(fp128) #2

define fp128 @libcall1_log10l() {
; C_CC_FMT-LABEL: libcall1_log10l:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_log10l)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_log10l)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(log10l)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp31, R_MIPS_JALR, log10l
; C_CC_FMT-NEXT:  .Ltmp31:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_log10l:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_log10l)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_log10l)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(log10l)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp31, R_MIPS_JALR, log10l
; CMP_CC_FMT-NEXT:  .Ltmp31:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @log10l(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @log10l(fp128) #2

define fp128 @libcall1_nearbyintl() {
; C_CC_FMT-LABEL: libcall1_nearbyintl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_nearbyintl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_nearbyintl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(nearbyintl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp32, R_MIPS_JALR, nearbyintl
; C_CC_FMT-NEXT:  .Ltmp32:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_nearbyintl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_nearbyintl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_nearbyintl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(nearbyintl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp32, R_MIPS_JALR, nearbyintl
; CMP_CC_FMT-NEXT:  .Ltmp32:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @nearbyintl(fp128 %0) nounwind readnone
  ret fp128 %call
}

declare fp128 @nearbyintl(fp128) #1

define fp128 @libcall1_floorl() {
; C_CC_FMT-LABEL: libcall1_floorl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_floorl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_floorl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(floorl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp33, R_MIPS_JALR, floorl
; C_CC_FMT-NEXT:  .Ltmp33:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_floorl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_floorl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_floorl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(floorl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp33, R_MIPS_JALR, floorl
; CMP_CC_FMT-NEXT:  .Ltmp33:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @floorl(fp128 %0) nounwind readnone
  ret fp128 %call
}

declare fp128 @floorl(fp128) #1

define fp128 @libcall1_sqrtl() {
; C_CC_FMT-LABEL: libcall1_sqrtl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_sqrtl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_sqrtl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(sqrtl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp34, R_MIPS_JALR, sqrtl
; C_CC_FMT-NEXT:  .Ltmp34:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_sqrtl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_sqrtl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_sqrtl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(sqrtl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp34, R_MIPS_JALR, sqrtl
; CMP_CC_FMT-NEXT:  .Ltmp34:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @sqrtl(fp128 %0) nounwind
  ret fp128 %call
}

declare fp128 @sqrtl(fp128) #2

define fp128 @libcall1_rintl() {
; C_CC_FMT-LABEL: libcall1_rintl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_rintl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_rintl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(rintl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp35, R_MIPS_JALR, rintl
; C_CC_FMT-NEXT:  .Ltmp35:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall1_rintl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall1_rintl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall1_rintl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(rintl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp35, R_MIPS_JALR, rintl
; CMP_CC_FMT-NEXT:  .Ltmp35:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %call = tail call fp128 @rintl(fp128 %0) nounwind readnone
  ret fp128 %call
}

declare fp128 @rintl(fp128) #1

define fp128 @libcall_powil(fp128 %a, i32 %b) {
; C_CC_FMT-LABEL: libcall_powil:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall_powil)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall_powil)))
; C_CC_FMT-NEXT:    sll $6, $6, 0
; C_CC_FMT-NEXT:    ld $25, %call16(__powitf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp36, R_MIPS_JALR, __powitf2
; C_CC_FMT-NEXT:  .Ltmp36:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall_powil:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall_powil)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall_powil)))
; CMP_CC_FMT-NEXT:    sll $6, $6, 0
; CMP_CC_FMT-NEXT:    ld $25, %call16(__powitf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp36, R_MIPS_JALR, __powitf2
; CMP_CC_FMT-NEXT:  .Ltmp36:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = tail call fp128 @llvm.powi.f128.i32(fp128 %a, i32 %b)
  ret fp128 %0
}

declare fp128 @llvm.powi.f128.i32(fp128, i32) #3

define fp128 @libcall2_copysignl() {
; NOT-R2R6-LABEL: libcall2_copysignl:
; NOT-R2R6:       # %bb.0: # %entry
; NOT-R2R6-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall2_copysignl)))
; NOT-R2R6-NEXT:    daddu $1, $1, $25
; NOT-R2R6-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(libcall2_copysignl)))
; NOT-R2R6-NEXT:    daddiu $2, $zero, 1
; NOT-R2R6-NEXT:    dsll $2, $2, 63
; NOT-R2R6-NEXT:    ld $3, %got_disp(gld1)($1)
; NOT-R2R6-NEXT:    ld $3, 8($3)
; NOT-R2R6-NEXT:    and $3, $3, $2
; NOT-R2R6-NEXT:    ld $1, %got_disp(gld0)($1)
; NOT-R2R6-NEXT:    ld $4, 8($1)
; NOT-R2R6-NEXT:    daddiu $2, $2, -1
; NOT-R2R6-NEXT:    and $2, $4, $2
; NOT-R2R6-NEXT:    or $4, $2, $3
; NOT-R2R6-NEXT:    ld $2, 0($1)
; NOT-R2R6-NEXT:    jr $ra
; NOT-R2R6-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall2_copysignl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall2_copysignl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(libcall2_copysignl)))
; CMP_CC_FMT-NEXT:    ld $2, %got_disp(gld0)($1)
; CMP_CC_FMT-NEXT:    ld $4, 8($2)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($1)
; CMP_CC_FMT-NEXT:    ld $1, 8($1)
; CMP_CC_FMT-NEXT:    dsrl $1, $1, 63
; CMP_CC_FMT-NEXT:    dinsu $4, $1, 63, 1
; CMP_CC_FMT-NEXT:    ld $2, 0($2)
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %call = tail call fp128 @copysignl(fp128 %0, fp128 %1) nounwind readnone
  ret fp128 %call
}

declare fp128 @copysignl(fp128, fp128) #1

define fp128 @libcall2_powl() {
; C_CC_FMT-LABEL: libcall2_powl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall2_powl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall2_powl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(powl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp37, R_MIPS_JALR, powl
; C_CC_FMT-NEXT:  .Ltmp37:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall2_powl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall2_powl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall2_powl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(powl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp37, R_MIPS_JALR, powl
; CMP_CC_FMT-NEXT:  .Ltmp37:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %call = tail call fp128 @powl(fp128 %0, fp128 %1) nounwind
  ret fp128 %call
}

declare fp128 @powl(fp128, fp128) #2

define fp128 @libcall2_fmodl() {
; C_CC_FMT-LABEL: libcall2_fmodl:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall2_fmodl)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall2_fmodl)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(fmodl)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp38, R_MIPS_JALR, fmodl
; C_CC_FMT-NEXT:  .Ltmp38:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall2_fmodl:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall2_fmodl)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall2_fmodl)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(fmodl)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp38, R_MIPS_JALR, fmodl
; CMP_CC_FMT-NEXT:  .Ltmp38:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld1, align 16
  %call = tail call fp128 @fmodl(fp128 %0, fp128 %1) nounwind
  ret fp128 %call
}

declare fp128 @fmodl(fp128, fp128) #2

define fp128 @libcall3_fmal() {
; C_CC_FMT-LABEL: libcall3_fmal:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall3_fmal)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall3_fmal)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $6, 0($1)
; C_CC_FMT-NEXT:    ld $7, 8($1)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld2)($gp)
; C_CC_FMT-NEXT:    ld $8, 0($1)
; C_CC_FMT-NEXT:    ld $9, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(fmal)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp39, R_MIPS_JALR, fmal
; C_CC_FMT-NEXT:  .Ltmp39:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: libcall3_fmal:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(libcall3_fmal)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(libcall3_fmal)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $6, 0($1)
; CMP_CC_FMT-NEXT:    ld $7, 8($1)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld2)($gp)
; CMP_CC_FMT-NEXT:    ld $8, 0($1)
; CMP_CC_FMT-NEXT:    ld $9, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(fmal)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp39, R_MIPS_JALR, fmal
; CMP_CC_FMT-NEXT:  .Ltmp39:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld0, align 16
  %1 = load fp128, ptr @gld2, align 16
  %2 = load fp128, ptr @gld1, align 16
  %3 = tail call fp128 @llvm.fma.f128(fp128 %0, fp128 %2, fp128 %1)
  ret fp128 %3
}

declare fp128 @llvm.fma.f128(fp128, fp128, fp128) #4

define i32 @cmp_lt(fp128 %a, fp128 %b) {
; C_CC_FMT-LABEL: cmp_lt:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_lt)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_lt)))
; C_CC_FMT-NEXT:    ld $25, %call16(__lttf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp40, R_MIPS_JALR, __lttf2
; C_CC_FMT-NEXT:  .Ltmp40:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    slti $2, $2, 0
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: cmp_lt:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_lt)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_lt)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__lttf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp40, R_MIPS_JALR, __lttf2
; CMP_CC_FMT-NEXT:  .Ltmp40:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    slti $2, $2, 0
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp olt fp128 %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define i32 @cmp_le(fp128 %a, fp128 %b) {
; C_CC_FMT-LABEL: cmp_le:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_le)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_le)))
; C_CC_FMT-NEXT:    ld $25, %call16(__letf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp41, R_MIPS_JALR, __letf2
; C_CC_FMT-NEXT:  .Ltmp41:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    slti $2, $2, 1
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: cmp_le:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_le)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_le)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__letf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp41, R_MIPS_JALR, __letf2
; CMP_CC_FMT-NEXT:  .Ltmp41:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    slti $2, $2, 1
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp ole fp128 %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define i32 @cmp_gt(fp128 %a, fp128 %b) {
; C_CC_FMT-LABEL: cmp_gt:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_gt)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_gt)))
; C_CC_FMT-NEXT:    ld $25, %call16(__gttf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp42, R_MIPS_JALR, __gttf2
; C_CC_FMT-NEXT:  .Ltmp42:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    slt $2, $zero, $2
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: cmp_gt:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_gt)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_gt)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__gttf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp42, R_MIPS_JALR, __gttf2
; CMP_CC_FMT-NEXT:  .Ltmp42:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    slt $2, $zero, $2
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp ogt fp128 %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define i32 @cmp_ge(fp128 %a, fp128 %b) {
; C_CC_FMT-LABEL: cmp_ge:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_ge)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_ge)))
; C_CC_FMT-NEXT:    ld $25, %call16(__getf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp43, R_MIPS_JALR, __getf2
; C_CC_FMT-NEXT:  .Ltmp43:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    addiu $1, $zero, -1
; C_CC_FMT-NEXT:    slt $2, $1, $2
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: cmp_ge:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_ge)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_ge)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__getf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp43, R_MIPS_JALR, __getf2
; CMP_CC_FMT-NEXT:  .Ltmp43:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    addiu $1, $zero, -1
; CMP_CC_FMT-NEXT:    slt $2, $1, $2
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp oge fp128 %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define i32 @cmp_eq(fp128 %a, fp128 %b) {
; C_CC_FMT-LABEL: cmp_eq:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_eq)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_eq)))
; C_CC_FMT-NEXT:    ld $25, %call16(__eqtf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp44, R_MIPS_JALR, __eqtf2
; C_CC_FMT-NEXT:  .Ltmp44:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    sltiu $2, $2, 1
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: cmp_eq:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_eq)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_eq)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__eqtf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp44, R_MIPS_JALR, __eqtf2
; CMP_CC_FMT-NEXT:  .Ltmp44:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    sltiu $2, $2, 1
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp oeq fp128 %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define i32 @cmp_ne(fp128 %a, fp128 %b) {
; C_CC_FMT-LABEL: cmp_ne:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_ne)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_ne)))
; C_CC_FMT-NEXT:    ld $25, %call16(__netf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp45, R_MIPS_JALR, __netf2
; C_CC_FMT-NEXT:  .Ltmp45:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    sltu $2, $zero, $2
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: cmp_ne:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(cmp_ne)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(cmp_ne)))
; CMP_CC_FMT-NEXT:    ld $25, %call16(__netf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp45, R_MIPS_JALR, __netf2
; CMP_CC_FMT-NEXT:  .Ltmp45:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    sltu $2, $zero, $2
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp une fp128 %a, %b
  %conv = zext i1 %cmp to i32
  ret i32 %conv
}

define fp128 @load_LD_LD() {
; C_CC_FMT-LABEL: load_LD_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(load_LD_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(load_LD_LD)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($1)
; C_CC_FMT-NEXT:    ld $2, 0($1)
; C_CC_FMT-NEXT:    ld $4, 8($1)
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: load_LD_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(load_LD_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(load_LD_LD)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($1)
; CMP_CC_FMT-NEXT:    ld $2, 0($1)
; CMP_CC_FMT-NEXT:    ld $4, 8($1)
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld1, align 16
  ret fp128 %0
}

define fp128 @load_LD_float() {
; C_CC_FMT-LABEL: load_LD_float:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(load_LD_float)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(load_LD_float)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gf1)($gp)
; C_CC_FMT-NEXT:    lw $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__extendsftf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp46, R_MIPS_JALR, __extendsftf2
; C_CC_FMT-NEXT:  .Ltmp46:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: load_LD_float:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(load_LD_float)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(load_LD_float)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gf1)($gp)
; CMP_CC_FMT-NEXT:    lw $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__extendsftf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp46, R_MIPS_JALR, __extendsftf2
; CMP_CC_FMT-NEXT:  .Ltmp46:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load float, ptr @gf1, align 4
  %conv = fpext float %0 to fp128
  ret fp128 %conv
}

define fp128 @load_LD_double() {
; C_CC_FMT-LABEL: load_LD_double:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(load_LD_double)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(load_LD_double)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gd1)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__extenddftf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp47, R_MIPS_JALR, __extenddftf2
; C_CC_FMT-NEXT:  .Ltmp47:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: load_LD_double:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(load_LD_double)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(load_LD_double)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gd1)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__extenddftf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp47, R_MIPS_JALR, __extenddftf2
; CMP_CC_FMT-NEXT:  .Ltmp47:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load double, ptr @gd1, align 8
  %conv = fpext double %0 to fp128
  ret fp128 %conv
}

define void @store_LD_LD() {
; C_CC_FMT-LABEL: store_LD_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(store_LD_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(store_LD_LD)))
; C_CC_FMT-NEXT:    ld $2, %got_disp(gld1)($1)
; C_CC_FMT-NEXT:    ld $3, 8($2)
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($1)
; C_CC_FMT-NEXT:    sd $3, 8($1)
; C_CC_FMT-NEXT:    ld $2, 0($2)
; C_CC_FMT-NEXT:    sd $2, 0($1)
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: store_LD_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(store_LD_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $1, $1, %lo(%neg(%gp_rel(store_LD_LD)))
; CMP_CC_FMT-NEXT:    ld $2, %got_disp(gld1)($1)
; CMP_CC_FMT-NEXT:    ld $3, 8($2)
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld0)($1)
; CMP_CC_FMT-NEXT:    sd $3, 8($1)
; CMP_CC_FMT-NEXT:    ld $2, 0($2)
; CMP_CC_FMT-NEXT:    sd $2, 0($1)
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld1, align 16
  store fp128 %0, ptr @gld0, align 16
  ret void
}

define void @store_LD_float() {
; C_CC_FMT-LABEL: store_LD_float:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(store_LD_float)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(store_LD_float)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__trunctfsf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp48, R_MIPS_JALR, __trunctfsf2
; C_CC_FMT-NEXT:  .Ltmp48:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $1, %got_disp(gf1)($gp)
; C_CC_FMT-NEXT:    sw $2, 0($1)
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: store_LD_float:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(store_LD_float)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(store_LD_float)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__trunctfsf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp48, R_MIPS_JALR, __trunctfsf2
; CMP_CC_FMT-NEXT:  .Ltmp48:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gf1)($gp)
; CMP_CC_FMT-NEXT:    sw $2, 0($1)
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld1, align 16
  %conv = fptrunc fp128 %0 to float
  store float %conv, ptr @gf1, align 4
  ret void
}

; FIXME: This sll works around an implementation detail in the code generator
;        (setcc's result is i32 so bits 32-63 are undefined). It's not really
;        needed.
define void @store_LD_double() {
; C_CC_FMT-LABEL: store_LD_double:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; C_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(store_LD_double)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(store_LD_double)))
; C_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; C_CC_FMT-NEXT:    ld $4, 0($1)
; C_CC_FMT-NEXT:    ld $5, 8($1)
; C_CC_FMT-NEXT:    ld $25, %call16(__trunctfdf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp49, R_MIPS_JALR, __trunctfdf2
; C_CC_FMT-NEXT:  .Ltmp49:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    ld $1, %got_disp(gd1)($gp)
; C_CC_FMT-NEXT:    sd $2, 0($1)
; C_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: store_LD_double:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -16
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 16
; CMP_CC_FMT-NEXT:    sd $ra, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(store_LD_double)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(store_LD_double)))
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gld1)($gp)
; CMP_CC_FMT-NEXT:    ld $4, 0($1)
; CMP_CC_FMT-NEXT:    ld $5, 8($1)
; CMP_CC_FMT-NEXT:    ld $25, %call16(__trunctfdf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp49, R_MIPS_JALR, __trunctfdf2
; CMP_CC_FMT-NEXT:  .Ltmp49:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    ld $1, %got_disp(gd1)($gp)
; CMP_CC_FMT-NEXT:    sd $2, 0($1)
; CMP_CC_FMT-NEXT:    ld $gp, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 16
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %0 = load fp128, ptr @gld1, align 16
  %conv = fptrunc fp128 %0 to double
  store double %conv, ptr @gd1, align 8
  ret void
}

define fp128 @select_LD(i32 signext %a, i64, fp128 %b, fp128 %c) {
; C_CC_FMT-LABEL: select_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    movn $8, $6, $4
; C_CC_FMT-NEXT:    movn $9, $7, $4
; C_CC_FMT-NEXT:    move $2, $8
; C_CC_FMT-NEXT:    move $4, $9
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: select_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    sll $1, $4, 0
; CMP_CC_FMT-NEXT:    seleqz $2, $8, $1
; CMP_CC_FMT-NEXT:    selnez $3, $6, $1
; CMP_CC_FMT-NEXT:    or $2, $3, $2
; CMP_CC_FMT-NEXT:    seleqz $3, $9, $1
; CMP_CC_FMT-NEXT:    selnez $1, $7, $1
; CMP_CC_FMT-NEXT:    or $4, $1, $3
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %tobool = icmp ne i32 %a, 0
  %cond = select i1 %tobool, fp128 %b, fp128 %c
  ret fp128 %cond
}

define fp128 @selectCC_LD(fp128 %a, fp128 %b, fp128 %c, fp128 %d) {
; C_CC_FMT-LABEL: selectCC_LD:
; C_CC_FMT:       # %bb.0: # %entry
; C_CC_FMT-NEXT:    daddiu $sp, $sp, -48
; C_CC_FMT-NEXT:    .cfi_def_cfa_offset 48
; C_CC_FMT-NEXT:    sd $ra, 40($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $gp, 32($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $19, 24($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $18, 16($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $17, 8($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    sd $16, 0($sp) # 8-byte Folded Spill
; C_CC_FMT-NEXT:    .cfi_offset 31, -8
; C_CC_FMT-NEXT:    .cfi_offset 28, -16
; C_CC_FMT-NEXT:    .cfi_offset 19, -24
; C_CC_FMT-NEXT:    .cfi_offset 18, -32
; C_CC_FMT-NEXT:    .cfi_offset 17, -40
; C_CC_FMT-NEXT:    .cfi_offset 16, -48
; C_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(selectCC_LD)))
; C_CC_FMT-NEXT:    daddu $1, $1, $25
; C_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(selectCC_LD)))
; C_CC_FMT-NEXT:    move $16, $11
; C_CC_FMT-NEXT:    move $17, $10
; C_CC_FMT-NEXT:    move $18, $9
; C_CC_FMT-NEXT:    move $19, $8
; C_CC_FMT-NEXT:    ld $25, %call16(__gttf2)($gp)
; C_CC_FMT-NEXT:    .reloc .Ltmp50, R_MIPS_JALR, __gttf2
; C_CC_FMT-NEXT:  .Ltmp50:
; C_CC_FMT-NEXT:    jalr $25
; C_CC_FMT-NEXT:    nop
; C_CC_FMT-NEXT:    slti $1, $2, 1
; C_CC_FMT-NEXT:    movz $17, $19, $1
; C_CC_FMT-NEXT:    movz $16, $18, $1
; C_CC_FMT-NEXT:    move $2, $17
; C_CC_FMT-NEXT:    move $4, $16
; C_CC_FMT-NEXT:    ld $16, 0($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $17, 8($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $18, 16($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $19, 24($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $gp, 32($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    ld $ra, 40($sp) # 8-byte Folded Reload
; C_CC_FMT-NEXT:    daddiu $sp, $sp, 48
; C_CC_FMT-NEXT:    jr $ra
; C_CC_FMT-NEXT:    nop
;
; CMP_CC_FMT-LABEL: selectCC_LD:
; CMP_CC_FMT:       # %bb.0: # %entry
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, -48
; CMP_CC_FMT-NEXT:    .cfi_def_cfa_offset 48
; CMP_CC_FMT-NEXT:    sd $ra, 40($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $gp, 32($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $19, 24($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $18, 16($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $17, 8($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    sd $16, 0($sp) # 8-byte Folded Spill
; CMP_CC_FMT-NEXT:    .cfi_offset 31, -8
; CMP_CC_FMT-NEXT:    .cfi_offset 28, -16
; CMP_CC_FMT-NEXT:    .cfi_offset 19, -24
; CMP_CC_FMT-NEXT:    .cfi_offset 18, -32
; CMP_CC_FMT-NEXT:    .cfi_offset 17, -40
; CMP_CC_FMT-NEXT:    .cfi_offset 16, -48
; CMP_CC_FMT-NEXT:    lui $1, %hi(%neg(%gp_rel(selectCC_LD)))
; CMP_CC_FMT-NEXT:    daddu $1, $1, $25
; CMP_CC_FMT-NEXT:    daddiu $gp, $1, %lo(%neg(%gp_rel(selectCC_LD)))
; CMP_CC_FMT-NEXT:    move $16, $11
; CMP_CC_FMT-NEXT:    move $17, $10
; CMP_CC_FMT-NEXT:    move $18, $9
; CMP_CC_FMT-NEXT:    move $19, $8
; CMP_CC_FMT-NEXT:    ld $25, %call16(__gttf2)($gp)
; CMP_CC_FMT-NEXT:    .reloc .Ltmp50, R_MIPS_JALR, __gttf2
; CMP_CC_FMT-NEXT:  .Ltmp50:
; CMP_CC_FMT-NEXT:    jalrc $25
; CMP_CC_FMT-NEXT:    slt $1, $zero, $2
; CMP_CC_FMT-NEXT:    sll $1, $1, 0
; CMP_CC_FMT-NEXT:    seleqz $2, $17, $1
; CMP_CC_FMT-NEXT:    selnez $3, $19, $1
; CMP_CC_FMT-NEXT:    or $2, $3, $2
; CMP_CC_FMT-NEXT:    seleqz $3, $16, $1
; CMP_CC_FMT-NEXT:    selnez $1, $18, $1
; CMP_CC_FMT-NEXT:    or $4, $1, $3
; CMP_CC_FMT-NEXT:    ld $16, 0($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $17, 8($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $18, 16($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $19, 24($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $gp, 32($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    ld $ra, 40($sp) # 8-byte Folded Reload
; CMP_CC_FMT-NEXT:    daddiu $sp, $sp, 48
; CMP_CC_FMT-NEXT:    jrc $ra
entry:
  %cmp = fcmp ogt fp128 %a, %b
  %cond = select i1 %cmp, fp128 %c, fp128 %d
  ret fp128 %cond
}
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
; ALL: {{.*}}
; PRER6: {{.*}}
; R2R6: {{.*}}
; R6: {{.*}}
