; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
; RUN: llc -mtriple=riscv32 -mattr=+d -verify-machineinstrs < %s \
; RUN: -target-abi=ilp32d | FileCheck -check-prefix=RV32ID %s
; RUN: llc -mtriple=riscv64 -mattr=+d -verify-machineinstrs < %s \
; RUN: -target-abi=lp64d | FileCheck -check-prefix=RV64ID %s
; A GPR<->FPR move (fmv.?.?) is unnecessary in all of the tests below, as in
; the value can be loaded/stored directly from/to the stack.
define float @spill_i32_to_float(i32 %a) nounwind {
; RV32ID-LABEL: spill_i32_to_float:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -160
; RV32ID-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fmv.w.x fa5, a0
; RV32ID-NEXT: fsw fa5, 4(sp) # 4-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: flw fa0, 4(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 160
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: spill_i32_to_float:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fmv.w.x fa5, a0
; RV64ID-NEXT: fsw fa5, 4(sp) # 4-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: flw fa0, 4(sp) # 4-byte Folded Reload
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
%1 = bitcast i32 %a to float
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
ret float %1
}
define i32 @spill_float_to_i32(float %a) nounwind {
; RV32ID-LABEL: spill_float_to_i32:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -160
; RV32ID-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fmv.x.w a0, fa0
; RV32ID-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 160
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: spill_float_to_i32:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fmv.x.w a0, fa0
; RV64ID-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
%1 = bitcast float %a to i32
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
ret i32 %1
}
define double @spill_i64_to_double(i64 %a) nounwind {
; RV32ID-LABEL: spill_i64_to_double:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -176
; RV32ID-NEXT: sw ra, 172(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 168(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 164(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 160(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 112(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 104(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: sw a0, 16(sp)
; RV32ID-NEXT: sw a1, 20(sp)
; RV32ID-NEXT: fld fa5, 16(sp)
; RV32ID-NEXT: fsd fa5, 8(sp) # 8-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: fld fa0, 8(sp) # 8-byte Folded Reload
; RV32ID-NEXT: lw ra, 172(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 168(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 164(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 160(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 112(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 104(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 176
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: spill_i64_to_double:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fmv.d.x fa5, a0
; RV64ID-NEXT: fsd fa5, 0(sp) # 8-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: fld fa0, 0(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
%1 = bitcast i64 %a to double
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
ret double %1
}
define i64 @spill_double_to_i64(double %a) nounwind {
; RV32ID-LABEL: spill_double_to_i64:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -176
; RV32ID-NEXT: sw ra, 172(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 168(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 164(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 160(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 112(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 104(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fa0, 16(sp)
; RV32ID-NEXT: lw a0, 16(sp)
; RV32ID-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; RV32ID-NEXT: lw a0, 20(sp)
; RV32ID-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw a1, 8(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw ra, 172(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 168(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 164(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 160(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 112(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 104(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 176
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: spill_double_to_i64:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fmv.x.d a0, fa0
; RV64ID-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
%1 = bitcast double %a to i64
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
ret i64 %1
}
define float @fill_i32_to_float(i32 %a) nounwind {
; RV32ID-LABEL: fill_i32_to_float:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -160
; RV32ID-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV32ID-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fmv.w.x fa0, a0
; RV32ID-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 160
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: fill_i32_to_float:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fmv.w.x fa0, a0
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
%1 = bitcast i32 %a to float
ret float %1
}
define i32 @fill_float_to_i32(float %a) nounwind {
; RV32ID-LABEL: fill_float_to_i32:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -160
; RV32ID-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsw fa0, 4(sp) # 4-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: flw fa5, 4(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fmv.x.w a0, fa5
; RV32ID-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 160
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: fill_float_to_i32:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsw fa0, 4(sp) # 4-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: flw fa5, 4(sp) # 4-byte Folded Reload
; RV64ID-NEXT: fmv.x.w a0, fa5
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
%1 = bitcast float %a to i32
ret i32 %1
}
define double @fill_i64_to_double(i64 %a) nounwind {
; RV32ID-LABEL: fill_i64_to_double:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -176
; RV32ID-NEXT: sw ra, 172(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 168(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 164(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 160(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 112(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 104(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: sw a1, 12(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
; RV32ID-NEXT: sw a0, 16(sp)
; RV32ID-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
; RV32ID-NEXT: sw a0, 20(sp)
; RV32ID-NEXT: fld fa0, 16(sp)
; RV32ID-NEXT: lw ra, 172(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 168(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 164(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 160(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 112(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 104(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 176
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: fill_i64_to_double:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fmv.d.x fa0, a0
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
%1 = bitcast i64 %a to double
ret double %1
}
define i64 @fill_double_to_i64(double %a) nounwind {
; RV32ID-LABEL: fill_double_to_i64:
; RV32ID: # %bb.0:
; RV32ID-NEXT: addi sp, sp, -176
; RV32ID-NEXT: sw ra, 172(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s0, 168(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s1, 164(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s2, 160(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s3, 156(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s4, 152(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s5, 148(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s6, 144(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s7, 140(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s8, 136(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s9, 132(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s10, 128(sp) # 4-byte Folded Spill
; RV32ID-NEXT: sw s11, 124(sp) # 4-byte Folded Spill
; RV32ID-NEXT: fsd fs0, 112(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs1, 104(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs2, 96(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs3, 88(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs4, 80(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs5, 72(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs6, 64(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs7, 56(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs8, 48(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs9, 40(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs10, 32(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fs11, 24(sp) # 8-byte Folded Spill
; RV32ID-NEXT: fsd fa0, 8(sp) # 8-byte Folded Spill
; RV32ID-NEXT: #APP
; RV32ID-NEXT: #NO_APP
; RV32ID-NEXT: fld fa5, 8(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fsd fa5, 16(sp)
; RV32ID-NEXT: lw a0, 16(sp)
; RV32ID-NEXT: lw a1, 20(sp)
; RV32ID-NEXT: lw ra, 172(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s0, 168(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s1, 164(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s2, 160(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s3, 156(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s4, 152(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s5, 148(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s6, 144(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s7, 140(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s8, 136(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s9, 132(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s10, 128(sp) # 4-byte Folded Reload
; RV32ID-NEXT: lw s11, 124(sp) # 4-byte Folded Reload
; RV32ID-NEXT: fld fs0, 112(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs1, 104(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs2, 96(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs3, 88(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs4, 80(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs5, 72(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs6, 64(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs7, 56(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs8, 48(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs9, 40(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs10, 32(sp) # 8-byte Folded Reload
; RV32ID-NEXT: fld fs11, 24(sp) # 8-byte Folded Reload
; RV32ID-NEXT: addi sp, sp, 176
; RV32ID-NEXT: ret
;
; RV64ID-LABEL: fill_double_to_i64:
; RV64ID: # %bb.0:
; RV64ID-NEXT: addi sp, sp, -208
; RV64ID-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
; RV64ID-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill
; RV64ID-NEXT: fsd fa0, 0(sp) # 8-byte Folded Spill
; RV64ID-NEXT: #APP
; RV64ID-NEXT: #NO_APP
; RV64ID-NEXT: fld fa5, 0(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fmv.x.d a0, fa5
; RV64ID-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
; RV64ID-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload
; RV64ID-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload
; RV64ID-NEXT: addi sp, sp, 208
; RV64ID-NEXT: ret
call void asm sideeffect "", "~{x0},~{x1},~{x2},~{x3},~{x4},~{x5},~{x6},~{x7},~{x8},~{x9},~{x10},~{x11},~{x12},~{x13},~{x14},~{x15},~{x16},~{x17},~{x18},~{x19},~{x20},~{x21},~{x22},~{x23},~{x24},~{x25},~{x26},~{x27},~{x28},~{x29},~{x30},~{x31},~{f0_d},~{f1_d},~{f2_d},~{f3_d},~{f4_d},~{f5_d},~{f6_d},~{f7_d},~{f8_d},~{f9_d},~{f10_d},~{f11_d},~{f12_d},~{f13_d},~{f14_d},~{f15_d},~{f16_d},~{f17_d},~{f18_d},~{f19_d},~{f20_d},~{f21_d},~{f22_d},~{f23_d},~{f24_d},~{f25_d},~{f26_d},~{f27_d},~{f28_d},~{f29_d},~{f30_d},~{f31_d}"() nounwind
%1 = bitcast double %a to i64
ret i64 %1
}