xref: /llvm-project/llvm/test/CodeGen/RISCV/spill-fill-fold.ll (revision f5c90f3000bc75a344bf01bd4e0401e3fb7f9453)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2; RUN: llc -mtriple=riscv32 -mattr=+d -verify-machineinstrs < %s \
3; RUN:   -target-abi=ilp32d | FileCheck -check-prefix=RV32ID %s
4; RUN: llc -mtriple=riscv64 -mattr=+d -verify-machineinstrs < %s \
5; RUN:   -target-abi=lp64d | FileCheck -check-prefix=RV64ID %s
6
7; A GPR<->FPR move (fmv.?.?) is unnecessary in all of the tests below, as in
8; the value can be loaded/stored directly from/to the stack.
9
10define float @spill_i32_to_float(i32 %a) nounwind {
11; RV32ID-LABEL: spill_i32_to_float:
12; RV32ID:       # %bb.0:
13; RV32ID-NEXT:    addi sp, sp, -160
14; RV32ID-NEXT:    sw ra, 156(sp) # 4-byte Folded Spill
15; RV32ID-NEXT:    sw s0, 152(sp) # 4-byte Folded Spill
16; RV32ID-NEXT:    sw s1, 148(sp) # 4-byte Folded Spill
17; RV32ID-NEXT:    sw s2, 144(sp) # 4-byte Folded Spill
18; RV32ID-NEXT:    sw s3, 140(sp) # 4-byte Folded Spill
19; RV32ID-NEXT:    sw s4, 136(sp) # 4-byte Folded Spill
20; RV32ID-NEXT:    sw s5, 132(sp) # 4-byte Folded Spill
21; RV32ID-NEXT:    sw s6, 128(sp) # 4-byte Folded Spill
22; RV32ID-NEXT:    sw s7, 124(sp) # 4-byte Folded Spill
23; RV32ID-NEXT:    sw s8, 120(sp) # 4-byte Folded Spill
24; RV32ID-NEXT:    sw s9, 116(sp) # 4-byte Folded Spill
25; RV32ID-NEXT:    sw s10, 112(sp) # 4-byte Folded Spill
26; RV32ID-NEXT:    sw s11, 108(sp) # 4-byte Folded Spill
27; RV32ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
28; RV32ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
29; RV32ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
30; RV32ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
31; RV32ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
32; RV32ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
33; RV32ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
34; RV32ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
35; RV32ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
36; RV32ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
37; RV32ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
38; RV32ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
39; RV32ID-NEXT:    fmv.w.x fa5, a0
40; RV32ID-NEXT:    fsw fa5, 4(sp) # 4-byte Folded Spill
41; RV32ID-NEXT:    #APP
42; RV32ID-NEXT:    #NO_APP
43; RV32ID-NEXT:    flw fa0, 4(sp) # 4-byte Folded Reload
44; RV32ID-NEXT:    lw ra, 156(sp) # 4-byte Folded Reload
45; RV32ID-NEXT:    lw s0, 152(sp) # 4-byte Folded Reload
46; RV32ID-NEXT:    lw s1, 148(sp) # 4-byte Folded Reload
47; RV32ID-NEXT:    lw s2, 144(sp) # 4-byte Folded Reload
48; RV32ID-NEXT:    lw s3, 140(sp) # 4-byte Folded Reload
49; RV32ID-NEXT:    lw s4, 136(sp) # 4-byte Folded Reload
50; RV32ID-NEXT:    lw s5, 132(sp) # 4-byte Folded Reload
51; RV32ID-NEXT:    lw s6, 128(sp) # 4-byte Folded Reload
52; RV32ID-NEXT:    lw s7, 124(sp) # 4-byte Folded Reload
53; RV32ID-NEXT:    lw s8, 120(sp) # 4-byte Folded Reload
54; RV32ID-NEXT:    lw s9, 116(sp) # 4-byte Folded Reload
55; RV32ID-NEXT:    lw s10, 112(sp) # 4-byte Folded Reload
56; RV32ID-NEXT:    lw s11, 108(sp) # 4-byte Folded Reload
57; RV32ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
58; RV32ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
59; RV32ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
60; RV32ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
61; RV32ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
62; RV32ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
63; RV32ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
64; RV32ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
65; RV32ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
66; RV32ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
67; RV32ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
68; RV32ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
69; RV32ID-NEXT:    addi sp, sp, 160
70; RV32ID-NEXT:    ret
71;
72; RV64ID-LABEL: spill_i32_to_float:
73; RV64ID:       # %bb.0:
74; RV64ID-NEXT:    addi sp, sp, -208
75; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
76; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
77; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
78; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
79; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
80; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
81; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
82; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
83; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
84; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
85; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
86; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
87; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
88; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
89; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
90; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
91; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
92; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
93; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
94; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
95; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
96; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
97; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
98; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
99; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
100; RV64ID-NEXT:    fmv.w.x fa5, a0
101; RV64ID-NEXT:    fsw fa5, 4(sp) # 4-byte Folded Spill
102; RV64ID-NEXT:    #APP
103; RV64ID-NEXT:    #NO_APP
104; RV64ID-NEXT:    flw fa0, 4(sp) # 4-byte Folded Reload
105; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
106; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
107; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
108; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
109; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
110; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
111; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
112; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
113; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
114; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
115; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
116; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
117; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
118; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
119; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
120; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
121; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
122; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
123; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
124; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
125; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
126; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
127; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
128; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
129; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
130; RV64ID-NEXT:    addi sp, sp, 208
131; RV64ID-NEXT:    ret
132  %1 = bitcast i32 %a to float
133  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
134  ret float %1
135}
136
137define i32 @spill_float_to_i32(float %a) nounwind {
138; RV32ID-LABEL: spill_float_to_i32:
139; RV32ID:       # %bb.0:
140; RV32ID-NEXT:    addi sp, sp, -160
141; RV32ID-NEXT:    sw ra, 156(sp) # 4-byte Folded Spill
142; RV32ID-NEXT:    sw s0, 152(sp) # 4-byte Folded Spill
143; RV32ID-NEXT:    sw s1, 148(sp) # 4-byte Folded Spill
144; RV32ID-NEXT:    sw s2, 144(sp) # 4-byte Folded Spill
145; RV32ID-NEXT:    sw s3, 140(sp) # 4-byte Folded Spill
146; RV32ID-NEXT:    sw s4, 136(sp) # 4-byte Folded Spill
147; RV32ID-NEXT:    sw s5, 132(sp) # 4-byte Folded Spill
148; RV32ID-NEXT:    sw s6, 128(sp) # 4-byte Folded Spill
149; RV32ID-NEXT:    sw s7, 124(sp) # 4-byte Folded Spill
150; RV32ID-NEXT:    sw s8, 120(sp) # 4-byte Folded Spill
151; RV32ID-NEXT:    sw s9, 116(sp) # 4-byte Folded Spill
152; RV32ID-NEXT:    sw s10, 112(sp) # 4-byte Folded Spill
153; RV32ID-NEXT:    sw s11, 108(sp) # 4-byte Folded Spill
154; RV32ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
155; RV32ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
156; RV32ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
157; RV32ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
158; RV32ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
159; RV32ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
160; RV32ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
161; RV32ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
162; RV32ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
163; RV32ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
164; RV32ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
165; RV32ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
166; RV32ID-NEXT:    fmv.x.w a0, fa0
167; RV32ID-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
168; RV32ID-NEXT:    #APP
169; RV32ID-NEXT:    #NO_APP
170; RV32ID-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
171; RV32ID-NEXT:    lw ra, 156(sp) # 4-byte Folded Reload
172; RV32ID-NEXT:    lw s0, 152(sp) # 4-byte Folded Reload
173; RV32ID-NEXT:    lw s1, 148(sp) # 4-byte Folded Reload
174; RV32ID-NEXT:    lw s2, 144(sp) # 4-byte Folded Reload
175; RV32ID-NEXT:    lw s3, 140(sp) # 4-byte Folded Reload
176; RV32ID-NEXT:    lw s4, 136(sp) # 4-byte Folded Reload
177; RV32ID-NEXT:    lw s5, 132(sp) # 4-byte Folded Reload
178; RV32ID-NEXT:    lw s6, 128(sp) # 4-byte Folded Reload
179; RV32ID-NEXT:    lw s7, 124(sp) # 4-byte Folded Reload
180; RV32ID-NEXT:    lw s8, 120(sp) # 4-byte Folded Reload
181; RV32ID-NEXT:    lw s9, 116(sp) # 4-byte Folded Reload
182; RV32ID-NEXT:    lw s10, 112(sp) # 4-byte Folded Reload
183; RV32ID-NEXT:    lw s11, 108(sp) # 4-byte Folded Reload
184; RV32ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
185; RV32ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
186; RV32ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
187; RV32ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
188; RV32ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
189; RV32ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
190; RV32ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
191; RV32ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
192; RV32ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
193; RV32ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
194; RV32ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
195; RV32ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
196; RV32ID-NEXT:    addi sp, sp, 160
197; RV32ID-NEXT:    ret
198;
199; RV64ID-LABEL: spill_float_to_i32:
200; RV64ID:       # %bb.0:
201; RV64ID-NEXT:    addi sp, sp, -208
202; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
203; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
204; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
205; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
206; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
207; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
208; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
209; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
210; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
211; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
212; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
213; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
214; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
215; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
216; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
217; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
218; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
219; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
220; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
221; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
222; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
223; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
224; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
225; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
226; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
227; RV64ID-NEXT:    fmv.x.w a0, fa0
228; RV64ID-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
229; RV64ID-NEXT:    #APP
230; RV64ID-NEXT:    #NO_APP
231; RV64ID-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
232; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
233; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
234; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
235; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
236; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
237; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
238; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
239; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
240; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
241; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
242; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
243; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
244; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
245; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
246; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
247; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
248; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
249; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
250; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
251; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
252; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
253; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
254; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
255; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
256; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
257; RV64ID-NEXT:    addi sp, sp, 208
258; RV64ID-NEXT:    ret
259  %1 = bitcast float %a to i32
260  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
261  ret i32 %1
262}
263
264define double @spill_i64_to_double(i64 %a) nounwind {
265; RV32ID-LABEL: spill_i64_to_double:
266; RV32ID:       # %bb.0:
267; RV32ID-NEXT:    addi sp, sp, -176
268; RV32ID-NEXT:    sw ra, 172(sp) # 4-byte Folded Spill
269; RV32ID-NEXT:    sw s0, 168(sp) # 4-byte Folded Spill
270; RV32ID-NEXT:    sw s1, 164(sp) # 4-byte Folded Spill
271; RV32ID-NEXT:    sw s2, 160(sp) # 4-byte Folded Spill
272; RV32ID-NEXT:    sw s3, 156(sp) # 4-byte Folded Spill
273; RV32ID-NEXT:    sw s4, 152(sp) # 4-byte Folded Spill
274; RV32ID-NEXT:    sw s5, 148(sp) # 4-byte Folded Spill
275; RV32ID-NEXT:    sw s6, 144(sp) # 4-byte Folded Spill
276; RV32ID-NEXT:    sw s7, 140(sp) # 4-byte Folded Spill
277; RV32ID-NEXT:    sw s8, 136(sp) # 4-byte Folded Spill
278; RV32ID-NEXT:    sw s9, 132(sp) # 4-byte Folded Spill
279; RV32ID-NEXT:    sw s10, 128(sp) # 4-byte Folded Spill
280; RV32ID-NEXT:    sw s11, 124(sp) # 4-byte Folded Spill
281; RV32ID-NEXT:    fsd fs0, 112(sp) # 8-byte Folded Spill
282; RV32ID-NEXT:    fsd fs1, 104(sp) # 8-byte Folded Spill
283; RV32ID-NEXT:    fsd fs2, 96(sp) # 8-byte Folded Spill
284; RV32ID-NEXT:    fsd fs3, 88(sp) # 8-byte Folded Spill
285; RV32ID-NEXT:    fsd fs4, 80(sp) # 8-byte Folded Spill
286; RV32ID-NEXT:    fsd fs5, 72(sp) # 8-byte Folded Spill
287; RV32ID-NEXT:    fsd fs6, 64(sp) # 8-byte Folded Spill
288; RV32ID-NEXT:    fsd fs7, 56(sp) # 8-byte Folded Spill
289; RV32ID-NEXT:    fsd fs8, 48(sp) # 8-byte Folded Spill
290; RV32ID-NEXT:    fsd fs9, 40(sp) # 8-byte Folded Spill
291; RV32ID-NEXT:    fsd fs10, 32(sp) # 8-byte Folded Spill
292; RV32ID-NEXT:    fsd fs11, 24(sp) # 8-byte Folded Spill
293; RV32ID-NEXT:    sw a0, 16(sp)
294; RV32ID-NEXT:    sw a1, 20(sp)
295; RV32ID-NEXT:    fld fa5, 16(sp)
296; RV32ID-NEXT:    fsd fa5, 8(sp) # 8-byte Folded Spill
297; RV32ID-NEXT:    #APP
298; RV32ID-NEXT:    #NO_APP
299; RV32ID-NEXT:    fld fa0, 8(sp) # 8-byte Folded Reload
300; RV32ID-NEXT:    lw ra, 172(sp) # 4-byte Folded Reload
301; RV32ID-NEXT:    lw s0, 168(sp) # 4-byte Folded Reload
302; RV32ID-NEXT:    lw s1, 164(sp) # 4-byte Folded Reload
303; RV32ID-NEXT:    lw s2, 160(sp) # 4-byte Folded Reload
304; RV32ID-NEXT:    lw s3, 156(sp) # 4-byte Folded Reload
305; RV32ID-NEXT:    lw s4, 152(sp) # 4-byte Folded Reload
306; RV32ID-NEXT:    lw s5, 148(sp) # 4-byte Folded Reload
307; RV32ID-NEXT:    lw s6, 144(sp) # 4-byte Folded Reload
308; RV32ID-NEXT:    lw s7, 140(sp) # 4-byte Folded Reload
309; RV32ID-NEXT:    lw s8, 136(sp) # 4-byte Folded Reload
310; RV32ID-NEXT:    lw s9, 132(sp) # 4-byte Folded Reload
311; RV32ID-NEXT:    lw s10, 128(sp) # 4-byte Folded Reload
312; RV32ID-NEXT:    lw s11, 124(sp) # 4-byte Folded Reload
313; RV32ID-NEXT:    fld fs0, 112(sp) # 8-byte Folded Reload
314; RV32ID-NEXT:    fld fs1, 104(sp) # 8-byte Folded Reload
315; RV32ID-NEXT:    fld fs2, 96(sp) # 8-byte Folded Reload
316; RV32ID-NEXT:    fld fs3, 88(sp) # 8-byte Folded Reload
317; RV32ID-NEXT:    fld fs4, 80(sp) # 8-byte Folded Reload
318; RV32ID-NEXT:    fld fs5, 72(sp) # 8-byte Folded Reload
319; RV32ID-NEXT:    fld fs6, 64(sp) # 8-byte Folded Reload
320; RV32ID-NEXT:    fld fs7, 56(sp) # 8-byte Folded Reload
321; RV32ID-NEXT:    fld fs8, 48(sp) # 8-byte Folded Reload
322; RV32ID-NEXT:    fld fs9, 40(sp) # 8-byte Folded Reload
323; RV32ID-NEXT:    fld fs10, 32(sp) # 8-byte Folded Reload
324; RV32ID-NEXT:    fld fs11, 24(sp) # 8-byte Folded Reload
325; RV32ID-NEXT:    addi sp, sp, 176
326; RV32ID-NEXT:    ret
327;
328; RV64ID-LABEL: spill_i64_to_double:
329; RV64ID:       # %bb.0:
330; RV64ID-NEXT:    addi sp, sp, -208
331; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
332; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
333; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
334; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
335; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
336; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
337; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
338; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
339; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
340; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
341; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
342; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
343; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
344; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
345; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
346; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
347; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
348; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
349; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
350; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
351; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
352; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
353; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
354; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
355; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
356; RV64ID-NEXT:    fmv.d.x fa5, a0
357; RV64ID-NEXT:    fsd fa5, 0(sp) # 8-byte Folded Spill
358; RV64ID-NEXT:    #APP
359; RV64ID-NEXT:    #NO_APP
360; RV64ID-NEXT:    fld fa0, 0(sp) # 8-byte Folded Reload
361; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
362; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
363; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
364; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
365; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
366; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
367; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
368; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
369; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
370; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
371; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
372; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
373; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
374; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
375; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
376; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
377; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
378; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
379; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
380; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
381; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
382; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
383; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
384; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
385; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
386; RV64ID-NEXT:    addi sp, sp, 208
387; RV64ID-NEXT:    ret
388  %1 = bitcast i64 %a to double
389  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
390  ret double %1
391}
392
393define i64 @spill_double_to_i64(double %a) nounwind {
394; RV32ID-LABEL: spill_double_to_i64:
395; RV32ID:       # %bb.0:
396; RV32ID-NEXT:    addi sp, sp, -176
397; RV32ID-NEXT:    sw ra, 172(sp) # 4-byte Folded Spill
398; RV32ID-NEXT:    sw s0, 168(sp) # 4-byte Folded Spill
399; RV32ID-NEXT:    sw s1, 164(sp) # 4-byte Folded Spill
400; RV32ID-NEXT:    sw s2, 160(sp) # 4-byte Folded Spill
401; RV32ID-NEXT:    sw s3, 156(sp) # 4-byte Folded Spill
402; RV32ID-NEXT:    sw s4, 152(sp) # 4-byte Folded Spill
403; RV32ID-NEXT:    sw s5, 148(sp) # 4-byte Folded Spill
404; RV32ID-NEXT:    sw s6, 144(sp) # 4-byte Folded Spill
405; RV32ID-NEXT:    sw s7, 140(sp) # 4-byte Folded Spill
406; RV32ID-NEXT:    sw s8, 136(sp) # 4-byte Folded Spill
407; RV32ID-NEXT:    sw s9, 132(sp) # 4-byte Folded Spill
408; RV32ID-NEXT:    sw s10, 128(sp) # 4-byte Folded Spill
409; RV32ID-NEXT:    sw s11, 124(sp) # 4-byte Folded Spill
410; RV32ID-NEXT:    fsd fs0, 112(sp) # 8-byte Folded Spill
411; RV32ID-NEXT:    fsd fs1, 104(sp) # 8-byte Folded Spill
412; RV32ID-NEXT:    fsd fs2, 96(sp) # 8-byte Folded Spill
413; RV32ID-NEXT:    fsd fs3, 88(sp) # 8-byte Folded Spill
414; RV32ID-NEXT:    fsd fs4, 80(sp) # 8-byte Folded Spill
415; RV32ID-NEXT:    fsd fs5, 72(sp) # 8-byte Folded Spill
416; RV32ID-NEXT:    fsd fs6, 64(sp) # 8-byte Folded Spill
417; RV32ID-NEXT:    fsd fs7, 56(sp) # 8-byte Folded Spill
418; RV32ID-NEXT:    fsd fs8, 48(sp) # 8-byte Folded Spill
419; RV32ID-NEXT:    fsd fs9, 40(sp) # 8-byte Folded Spill
420; RV32ID-NEXT:    fsd fs10, 32(sp) # 8-byte Folded Spill
421; RV32ID-NEXT:    fsd fs11, 24(sp) # 8-byte Folded Spill
422; RV32ID-NEXT:    fsd fa0, 16(sp)
423; RV32ID-NEXT:    lw a0, 16(sp)
424; RV32ID-NEXT:    sw a0, 12(sp) # 4-byte Folded Spill
425; RV32ID-NEXT:    lw a0, 20(sp)
426; RV32ID-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
427; RV32ID-NEXT:    #APP
428; RV32ID-NEXT:    #NO_APP
429; RV32ID-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
430; RV32ID-NEXT:    lw a1, 8(sp) # 4-byte Folded Reload
431; RV32ID-NEXT:    lw ra, 172(sp) # 4-byte Folded Reload
432; RV32ID-NEXT:    lw s0, 168(sp) # 4-byte Folded Reload
433; RV32ID-NEXT:    lw s1, 164(sp) # 4-byte Folded Reload
434; RV32ID-NEXT:    lw s2, 160(sp) # 4-byte Folded Reload
435; RV32ID-NEXT:    lw s3, 156(sp) # 4-byte Folded Reload
436; RV32ID-NEXT:    lw s4, 152(sp) # 4-byte Folded Reload
437; RV32ID-NEXT:    lw s5, 148(sp) # 4-byte Folded Reload
438; RV32ID-NEXT:    lw s6, 144(sp) # 4-byte Folded Reload
439; RV32ID-NEXT:    lw s7, 140(sp) # 4-byte Folded Reload
440; RV32ID-NEXT:    lw s8, 136(sp) # 4-byte Folded Reload
441; RV32ID-NEXT:    lw s9, 132(sp) # 4-byte Folded Reload
442; RV32ID-NEXT:    lw s10, 128(sp) # 4-byte Folded Reload
443; RV32ID-NEXT:    lw s11, 124(sp) # 4-byte Folded Reload
444; RV32ID-NEXT:    fld fs0, 112(sp) # 8-byte Folded Reload
445; RV32ID-NEXT:    fld fs1, 104(sp) # 8-byte Folded Reload
446; RV32ID-NEXT:    fld fs2, 96(sp) # 8-byte Folded Reload
447; RV32ID-NEXT:    fld fs3, 88(sp) # 8-byte Folded Reload
448; RV32ID-NEXT:    fld fs4, 80(sp) # 8-byte Folded Reload
449; RV32ID-NEXT:    fld fs5, 72(sp) # 8-byte Folded Reload
450; RV32ID-NEXT:    fld fs6, 64(sp) # 8-byte Folded Reload
451; RV32ID-NEXT:    fld fs7, 56(sp) # 8-byte Folded Reload
452; RV32ID-NEXT:    fld fs8, 48(sp) # 8-byte Folded Reload
453; RV32ID-NEXT:    fld fs9, 40(sp) # 8-byte Folded Reload
454; RV32ID-NEXT:    fld fs10, 32(sp) # 8-byte Folded Reload
455; RV32ID-NEXT:    fld fs11, 24(sp) # 8-byte Folded Reload
456; RV32ID-NEXT:    addi sp, sp, 176
457; RV32ID-NEXT:    ret
458;
459; RV64ID-LABEL: spill_double_to_i64:
460; RV64ID:       # %bb.0:
461; RV64ID-NEXT:    addi sp, sp, -208
462; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
463; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
464; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
465; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
466; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
467; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
468; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
469; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
470; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
471; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
472; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
473; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
474; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
475; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
476; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
477; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
478; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
479; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
480; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
481; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
482; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
483; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
484; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
485; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
486; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
487; RV64ID-NEXT:    fmv.x.d a0, fa0
488; RV64ID-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
489; RV64ID-NEXT:    #APP
490; RV64ID-NEXT:    #NO_APP
491; RV64ID-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
492; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
493; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
494; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
495; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
496; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
497; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
498; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
499; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
500; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
501; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
502; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
503; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
504; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
505; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
506; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
507; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
508; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
509; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
510; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
511; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
512; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
513; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
514; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
515; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
516; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
517; RV64ID-NEXT:    addi sp, sp, 208
518; RV64ID-NEXT:    ret
519  %1 = bitcast double %a to i64
520  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
521  ret i64 %1
522}
523
524define float @fill_i32_to_float(i32 %a) nounwind {
525; RV32ID-LABEL: fill_i32_to_float:
526; RV32ID:       # %bb.0:
527; RV32ID-NEXT:    addi sp, sp, -160
528; RV32ID-NEXT:    sw ra, 156(sp) # 4-byte Folded Spill
529; RV32ID-NEXT:    sw s0, 152(sp) # 4-byte Folded Spill
530; RV32ID-NEXT:    sw s1, 148(sp) # 4-byte Folded Spill
531; RV32ID-NEXT:    sw s2, 144(sp) # 4-byte Folded Spill
532; RV32ID-NEXT:    sw s3, 140(sp) # 4-byte Folded Spill
533; RV32ID-NEXT:    sw s4, 136(sp) # 4-byte Folded Spill
534; RV32ID-NEXT:    sw s5, 132(sp) # 4-byte Folded Spill
535; RV32ID-NEXT:    sw s6, 128(sp) # 4-byte Folded Spill
536; RV32ID-NEXT:    sw s7, 124(sp) # 4-byte Folded Spill
537; RV32ID-NEXT:    sw s8, 120(sp) # 4-byte Folded Spill
538; RV32ID-NEXT:    sw s9, 116(sp) # 4-byte Folded Spill
539; RV32ID-NEXT:    sw s10, 112(sp) # 4-byte Folded Spill
540; RV32ID-NEXT:    sw s11, 108(sp) # 4-byte Folded Spill
541; RV32ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
542; RV32ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
543; RV32ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
544; RV32ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
545; RV32ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
546; RV32ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
547; RV32ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
548; RV32ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
549; RV32ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
550; RV32ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
551; RV32ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
552; RV32ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
553; RV32ID-NEXT:    sw a0, 4(sp) # 4-byte Folded Spill
554; RV32ID-NEXT:    #APP
555; RV32ID-NEXT:    #NO_APP
556; RV32ID-NEXT:    lw a0, 4(sp) # 4-byte Folded Reload
557; RV32ID-NEXT:    fmv.w.x fa0, a0
558; RV32ID-NEXT:    lw ra, 156(sp) # 4-byte Folded Reload
559; RV32ID-NEXT:    lw s0, 152(sp) # 4-byte Folded Reload
560; RV32ID-NEXT:    lw s1, 148(sp) # 4-byte Folded Reload
561; RV32ID-NEXT:    lw s2, 144(sp) # 4-byte Folded Reload
562; RV32ID-NEXT:    lw s3, 140(sp) # 4-byte Folded Reload
563; RV32ID-NEXT:    lw s4, 136(sp) # 4-byte Folded Reload
564; RV32ID-NEXT:    lw s5, 132(sp) # 4-byte Folded Reload
565; RV32ID-NEXT:    lw s6, 128(sp) # 4-byte Folded Reload
566; RV32ID-NEXT:    lw s7, 124(sp) # 4-byte Folded Reload
567; RV32ID-NEXT:    lw s8, 120(sp) # 4-byte Folded Reload
568; RV32ID-NEXT:    lw s9, 116(sp) # 4-byte Folded Reload
569; RV32ID-NEXT:    lw s10, 112(sp) # 4-byte Folded Reload
570; RV32ID-NEXT:    lw s11, 108(sp) # 4-byte Folded Reload
571; RV32ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
572; RV32ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
573; RV32ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
574; RV32ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
575; RV32ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
576; RV32ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
577; RV32ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
578; RV32ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
579; RV32ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
580; RV32ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
581; RV32ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
582; RV32ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
583; RV32ID-NEXT:    addi sp, sp, 160
584; RV32ID-NEXT:    ret
585;
586; RV64ID-LABEL: fill_i32_to_float:
587; RV64ID:       # %bb.0:
588; RV64ID-NEXT:    addi sp, sp, -208
589; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
590; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
591; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
592; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
593; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
594; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
595; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
596; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
597; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
598; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
599; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
600; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
601; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
602; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
603; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
604; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
605; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
606; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
607; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
608; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
609; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
610; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
611; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
612; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
613; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
614; RV64ID-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
615; RV64ID-NEXT:    #APP
616; RV64ID-NEXT:    #NO_APP
617; RV64ID-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
618; RV64ID-NEXT:    fmv.w.x fa0, a0
619; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
620; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
621; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
622; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
623; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
624; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
625; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
626; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
627; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
628; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
629; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
630; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
631; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
632; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
633; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
634; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
635; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
636; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
637; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
638; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
639; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
640; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
641; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
642; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
643; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
644; RV64ID-NEXT:    addi sp, sp, 208
645; RV64ID-NEXT:    ret
646  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
647  %1 = bitcast i32 %a to float
648  ret float %1
649}
650
651define i32 @fill_float_to_i32(float %a) nounwind {
652; RV32ID-LABEL: fill_float_to_i32:
653; RV32ID:       # %bb.0:
654; RV32ID-NEXT:    addi sp, sp, -160
655; RV32ID-NEXT:    sw ra, 156(sp) # 4-byte Folded Spill
656; RV32ID-NEXT:    sw s0, 152(sp) # 4-byte Folded Spill
657; RV32ID-NEXT:    sw s1, 148(sp) # 4-byte Folded Spill
658; RV32ID-NEXT:    sw s2, 144(sp) # 4-byte Folded Spill
659; RV32ID-NEXT:    sw s3, 140(sp) # 4-byte Folded Spill
660; RV32ID-NEXT:    sw s4, 136(sp) # 4-byte Folded Spill
661; RV32ID-NEXT:    sw s5, 132(sp) # 4-byte Folded Spill
662; RV32ID-NEXT:    sw s6, 128(sp) # 4-byte Folded Spill
663; RV32ID-NEXT:    sw s7, 124(sp) # 4-byte Folded Spill
664; RV32ID-NEXT:    sw s8, 120(sp) # 4-byte Folded Spill
665; RV32ID-NEXT:    sw s9, 116(sp) # 4-byte Folded Spill
666; RV32ID-NEXT:    sw s10, 112(sp) # 4-byte Folded Spill
667; RV32ID-NEXT:    sw s11, 108(sp) # 4-byte Folded Spill
668; RV32ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
669; RV32ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
670; RV32ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
671; RV32ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
672; RV32ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
673; RV32ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
674; RV32ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
675; RV32ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
676; RV32ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
677; RV32ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
678; RV32ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
679; RV32ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
680; RV32ID-NEXT:    fsw fa0, 4(sp) # 4-byte Folded Spill
681; RV32ID-NEXT:    #APP
682; RV32ID-NEXT:    #NO_APP
683; RV32ID-NEXT:    flw fa5, 4(sp) # 4-byte Folded Reload
684; RV32ID-NEXT:    fmv.x.w a0, fa5
685; RV32ID-NEXT:    lw ra, 156(sp) # 4-byte Folded Reload
686; RV32ID-NEXT:    lw s0, 152(sp) # 4-byte Folded Reload
687; RV32ID-NEXT:    lw s1, 148(sp) # 4-byte Folded Reload
688; RV32ID-NEXT:    lw s2, 144(sp) # 4-byte Folded Reload
689; RV32ID-NEXT:    lw s3, 140(sp) # 4-byte Folded Reload
690; RV32ID-NEXT:    lw s4, 136(sp) # 4-byte Folded Reload
691; RV32ID-NEXT:    lw s5, 132(sp) # 4-byte Folded Reload
692; RV32ID-NEXT:    lw s6, 128(sp) # 4-byte Folded Reload
693; RV32ID-NEXT:    lw s7, 124(sp) # 4-byte Folded Reload
694; RV32ID-NEXT:    lw s8, 120(sp) # 4-byte Folded Reload
695; RV32ID-NEXT:    lw s9, 116(sp) # 4-byte Folded Reload
696; RV32ID-NEXT:    lw s10, 112(sp) # 4-byte Folded Reload
697; RV32ID-NEXT:    lw s11, 108(sp) # 4-byte Folded Reload
698; RV32ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
699; RV32ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
700; RV32ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
701; RV32ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
702; RV32ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
703; RV32ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
704; RV32ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
705; RV32ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
706; RV32ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
707; RV32ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
708; RV32ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
709; RV32ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
710; RV32ID-NEXT:    addi sp, sp, 160
711; RV32ID-NEXT:    ret
712;
713; RV64ID-LABEL: fill_float_to_i32:
714; RV64ID:       # %bb.0:
715; RV64ID-NEXT:    addi sp, sp, -208
716; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
717; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
718; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
719; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
720; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
721; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
722; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
723; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
724; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
725; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
726; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
727; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
728; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
729; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
730; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
731; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
732; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
733; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
734; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
735; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
736; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
737; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
738; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
739; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
740; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
741; RV64ID-NEXT:    fsw fa0, 4(sp) # 4-byte Folded Spill
742; RV64ID-NEXT:    #APP
743; RV64ID-NEXT:    #NO_APP
744; RV64ID-NEXT:    flw fa5, 4(sp) # 4-byte Folded Reload
745; RV64ID-NEXT:    fmv.x.w a0, fa5
746; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
747; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
748; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
749; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
750; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
751; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
752; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
753; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
754; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
755; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
756; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
757; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
758; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
759; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
760; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
761; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
762; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
763; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
764; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
765; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
766; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
767; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
768; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
769; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
770; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
771; RV64ID-NEXT:    addi sp, sp, 208
772; RV64ID-NEXT:    ret
773  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
774  %1 = bitcast float %a to i32
775  ret i32 %1
776}
777
778define double @fill_i64_to_double(i64 %a) nounwind {
779; RV32ID-LABEL: fill_i64_to_double:
780; RV32ID:       # %bb.0:
781; RV32ID-NEXT:    addi sp, sp, -176
782; RV32ID-NEXT:    sw ra, 172(sp) # 4-byte Folded Spill
783; RV32ID-NEXT:    sw s0, 168(sp) # 4-byte Folded Spill
784; RV32ID-NEXT:    sw s1, 164(sp) # 4-byte Folded Spill
785; RV32ID-NEXT:    sw s2, 160(sp) # 4-byte Folded Spill
786; RV32ID-NEXT:    sw s3, 156(sp) # 4-byte Folded Spill
787; RV32ID-NEXT:    sw s4, 152(sp) # 4-byte Folded Spill
788; RV32ID-NEXT:    sw s5, 148(sp) # 4-byte Folded Spill
789; RV32ID-NEXT:    sw s6, 144(sp) # 4-byte Folded Spill
790; RV32ID-NEXT:    sw s7, 140(sp) # 4-byte Folded Spill
791; RV32ID-NEXT:    sw s8, 136(sp) # 4-byte Folded Spill
792; RV32ID-NEXT:    sw s9, 132(sp) # 4-byte Folded Spill
793; RV32ID-NEXT:    sw s10, 128(sp) # 4-byte Folded Spill
794; RV32ID-NEXT:    sw s11, 124(sp) # 4-byte Folded Spill
795; RV32ID-NEXT:    fsd fs0, 112(sp) # 8-byte Folded Spill
796; RV32ID-NEXT:    fsd fs1, 104(sp) # 8-byte Folded Spill
797; RV32ID-NEXT:    fsd fs2, 96(sp) # 8-byte Folded Spill
798; RV32ID-NEXT:    fsd fs3, 88(sp) # 8-byte Folded Spill
799; RV32ID-NEXT:    fsd fs4, 80(sp) # 8-byte Folded Spill
800; RV32ID-NEXT:    fsd fs5, 72(sp) # 8-byte Folded Spill
801; RV32ID-NEXT:    fsd fs6, 64(sp) # 8-byte Folded Spill
802; RV32ID-NEXT:    fsd fs7, 56(sp) # 8-byte Folded Spill
803; RV32ID-NEXT:    fsd fs8, 48(sp) # 8-byte Folded Spill
804; RV32ID-NEXT:    fsd fs9, 40(sp) # 8-byte Folded Spill
805; RV32ID-NEXT:    fsd fs10, 32(sp) # 8-byte Folded Spill
806; RV32ID-NEXT:    fsd fs11, 24(sp) # 8-byte Folded Spill
807; RV32ID-NEXT:    sw a1, 12(sp) # 4-byte Folded Spill
808; RV32ID-NEXT:    sw a0, 8(sp) # 4-byte Folded Spill
809; RV32ID-NEXT:    #APP
810; RV32ID-NEXT:    #NO_APP
811; RV32ID-NEXT:    lw a0, 8(sp) # 4-byte Folded Reload
812; RV32ID-NEXT:    sw a0, 16(sp)
813; RV32ID-NEXT:    lw a0, 12(sp) # 4-byte Folded Reload
814; RV32ID-NEXT:    sw a0, 20(sp)
815; RV32ID-NEXT:    fld fa0, 16(sp)
816; RV32ID-NEXT:    lw ra, 172(sp) # 4-byte Folded Reload
817; RV32ID-NEXT:    lw s0, 168(sp) # 4-byte Folded Reload
818; RV32ID-NEXT:    lw s1, 164(sp) # 4-byte Folded Reload
819; RV32ID-NEXT:    lw s2, 160(sp) # 4-byte Folded Reload
820; RV32ID-NEXT:    lw s3, 156(sp) # 4-byte Folded Reload
821; RV32ID-NEXT:    lw s4, 152(sp) # 4-byte Folded Reload
822; RV32ID-NEXT:    lw s5, 148(sp) # 4-byte Folded Reload
823; RV32ID-NEXT:    lw s6, 144(sp) # 4-byte Folded Reload
824; RV32ID-NEXT:    lw s7, 140(sp) # 4-byte Folded Reload
825; RV32ID-NEXT:    lw s8, 136(sp) # 4-byte Folded Reload
826; RV32ID-NEXT:    lw s9, 132(sp) # 4-byte Folded Reload
827; RV32ID-NEXT:    lw s10, 128(sp) # 4-byte Folded Reload
828; RV32ID-NEXT:    lw s11, 124(sp) # 4-byte Folded Reload
829; RV32ID-NEXT:    fld fs0, 112(sp) # 8-byte Folded Reload
830; RV32ID-NEXT:    fld fs1, 104(sp) # 8-byte Folded Reload
831; RV32ID-NEXT:    fld fs2, 96(sp) # 8-byte Folded Reload
832; RV32ID-NEXT:    fld fs3, 88(sp) # 8-byte Folded Reload
833; RV32ID-NEXT:    fld fs4, 80(sp) # 8-byte Folded Reload
834; RV32ID-NEXT:    fld fs5, 72(sp) # 8-byte Folded Reload
835; RV32ID-NEXT:    fld fs6, 64(sp) # 8-byte Folded Reload
836; RV32ID-NEXT:    fld fs7, 56(sp) # 8-byte Folded Reload
837; RV32ID-NEXT:    fld fs8, 48(sp) # 8-byte Folded Reload
838; RV32ID-NEXT:    fld fs9, 40(sp) # 8-byte Folded Reload
839; RV32ID-NEXT:    fld fs10, 32(sp) # 8-byte Folded Reload
840; RV32ID-NEXT:    fld fs11, 24(sp) # 8-byte Folded Reload
841; RV32ID-NEXT:    addi sp, sp, 176
842; RV32ID-NEXT:    ret
843;
844; RV64ID-LABEL: fill_i64_to_double:
845; RV64ID:       # %bb.0:
846; RV64ID-NEXT:    addi sp, sp, -208
847; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
848; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
849; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
850; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
851; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
852; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
853; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
854; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
855; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
856; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
857; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
858; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
859; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
860; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
861; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
862; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
863; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
864; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
865; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
866; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
867; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
868; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
869; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
870; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
871; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
872; RV64ID-NEXT:    sd a0, 0(sp) # 8-byte Folded Spill
873; RV64ID-NEXT:    #APP
874; RV64ID-NEXT:    #NO_APP
875; RV64ID-NEXT:    ld a0, 0(sp) # 8-byte Folded Reload
876; RV64ID-NEXT:    fmv.d.x fa0, a0
877; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
878; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
879; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
880; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
881; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
882; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
883; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
884; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
885; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
886; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
887; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
888; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
889; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
890; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
891; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
892; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
893; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
894; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
895; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
896; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
897; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
898; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
899; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
900; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
901; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
902; RV64ID-NEXT:    addi sp, sp, 208
903; RV64ID-NEXT:    ret
904  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
905  %1 = bitcast i64 %a to double
906  ret double %1
907}
908
909define i64 @fill_double_to_i64(double %a) nounwind {
910; RV32ID-LABEL: fill_double_to_i64:
911; RV32ID:       # %bb.0:
912; RV32ID-NEXT:    addi sp, sp, -176
913; RV32ID-NEXT:    sw ra, 172(sp) # 4-byte Folded Spill
914; RV32ID-NEXT:    sw s0, 168(sp) # 4-byte Folded Spill
915; RV32ID-NEXT:    sw s1, 164(sp) # 4-byte Folded Spill
916; RV32ID-NEXT:    sw s2, 160(sp) # 4-byte Folded Spill
917; RV32ID-NEXT:    sw s3, 156(sp) # 4-byte Folded Spill
918; RV32ID-NEXT:    sw s4, 152(sp) # 4-byte Folded Spill
919; RV32ID-NEXT:    sw s5, 148(sp) # 4-byte Folded Spill
920; RV32ID-NEXT:    sw s6, 144(sp) # 4-byte Folded Spill
921; RV32ID-NEXT:    sw s7, 140(sp) # 4-byte Folded Spill
922; RV32ID-NEXT:    sw s8, 136(sp) # 4-byte Folded Spill
923; RV32ID-NEXT:    sw s9, 132(sp) # 4-byte Folded Spill
924; RV32ID-NEXT:    sw s10, 128(sp) # 4-byte Folded Spill
925; RV32ID-NEXT:    sw s11, 124(sp) # 4-byte Folded Spill
926; RV32ID-NEXT:    fsd fs0, 112(sp) # 8-byte Folded Spill
927; RV32ID-NEXT:    fsd fs1, 104(sp) # 8-byte Folded Spill
928; RV32ID-NEXT:    fsd fs2, 96(sp) # 8-byte Folded Spill
929; RV32ID-NEXT:    fsd fs3, 88(sp) # 8-byte Folded Spill
930; RV32ID-NEXT:    fsd fs4, 80(sp) # 8-byte Folded Spill
931; RV32ID-NEXT:    fsd fs5, 72(sp) # 8-byte Folded Spill
932; RV32ID-NEXT:    fsd fs6, 64(sp) # 8-byte Folded Spill
933; RV32ID-NEXT:    fsd fs7, 56(sp) # 8-byte Folded Spill
934; RV32ID-NEXT:    fsd fs8, 48(sp) # 8-byte Folded Spill
935; RV32ID-NEXT:    fsd fs9, 40(sp) # 8-byte Folded Spill
936; RV32ID-NEXT:    fsd fs10, 32(sp) # 8-byte Folded Spill
937; RV32ID-NEXT:    fsd fs11, 24(sp) # 8-byte Folded Spill
938; RV32ID-NEXT:    fsd fa0, 8(sp) # 8-byte Folded Spill
939; RV32ID-NEXT:    #APP
940; RV32ID-NEXT:    #NO_APP
941; RV32ID-NEXT:    fld fa5, 8(sp) # 8-byte Folded Reload
942; RV32ID-NEXT:    fsd fa5, 16(sp)
943; RV32ID-NEXT:    lw a0, 16(sp)
944; RV32ID-NEXT:    lw a1, 20(sp)
945; RV32ID-NEXT:    lw ra, 172(sp) # 4-byte Folded Reload
946; RV32ID-NEXT:    lw s0, 168(sp) # 4-byte Folded Reload
947; RV32ID-NEXT:    lw s1, 164(sp) # 4-byte Folded Reload
948; RV32ID-NEXT:    lw s2, 160(sp) # 4-byte Folded Reload
949; RV32ID-NEXT:    lw s3, 156(sp) # 4-byte Folded Reload
950; RV32ID-NEXT:    lw s4, 152(sp) # 4-byte Folded Reload
951; RV32ID-NEXT:    lw s5, 148(sp) # 4-byte Folded Reload
952; RV32ID-NEXT:    lw s6, 144(sp) # 4-byte Folded Reload
953; RV32ID-NEXT:    lw s7, 140(sp) # 4-byte Folded Reload
954; RV32ID-NEXT:    lw s8, 136(sp) # 4-byte Folded Reload
955; RV32ID-NEXT:    lw s9, 132(sp) # 4-byte Folded Reload
956; RV32ID-NEXT:    lw s10, 128(sp) # 4-byte Folded Reload
957; RV32ID-NEXT:    lw s11, 124(sp) # 4-byte Folded Reload
958; RV32ID-NEXT:    fld fs0, 112(sp) # 8-byte Folded Reload
959; RV32ID-NEXT:    fld fs1, 104(sp) # 8-byte Folded Reload
960; RV32ID-NEXT:    fld fs2, 96(sp) # 8-byte Folded Reload
961; RV32ID-NEXT:    fld fs3, 88(sp) # 8-byte Folded Reload
962; RV32ID-NEXT:    fld fs4, 80(sp) # 8-byte Folded Reload
963; RV32ID-NEXT:    fld fs5, 72(sp) # 8-byte Folded Reload
964; RV32ID-NEXT:    fld fs6, 64(sp) # 8-byte Folded Reload
965; RV32ID-NEXT:    fld fs7, 56(sp) # 8-byte Folded Reload
966; RV32ID-NEXT:    fld fs8, 48(sp) # 8-byte Folded Reload
967; RV32ID-NEXT:    fld fs9, 40(sp) # 8-byte Folded Reload
968; RV32ID-NEXT:    fld fs10, 32(sp) # 8-byte Folded Reload
969; RV32ID-NEXT:    fld fs11, 24(sp) # 8-byte Folded Reload
970; RV32ID-NEXT:    addi sp, sp, 176
971; RV32ID-NEXT:    ret
972;
973; RV64ID-LABEL: fill_double_to_i64:
974; RV64ID:       # %bb.0:
975; RV64ID-NEXT:    addi sp, sp, -208
976; RV64ID-NEXT:    sd ra, 200(sp) # 8-byte Folded Spill
977; RV64ID-NEXT:    sd s0, 192(sp) # 8-byte Folded Spill
978; RV64ID-NEXT:    sd s1, 184(sp) # 8-byte Folded Spill
979; RV64ID-NEXT:    sd s2, 176(sp) # 8-byte Folded Spill
980; RV64ID-NEXT:    sd s3, 168(sp) # 8-byte Folded Spill
981; RV64ID-NEXT:    sd s4, 160(sp) # 8-byte Folded Spill
982; RV64ID-NEXT:    sd s5, 152(sp) # 8-byte Folded Spill
983; RV64ID-NEXT:    sd s6, 144(sp) # 8-byte Folded Spill
984; RV64ID-NEXT:    sd s7, 136(sp) # 8-byte Folded Spill
985; RV64ID-NEXT:    sd s8, 128(sp) # 8-byte Folded Spill
986; RV64ID-NEXT:    sd s9, 120(sp) # 8-byte Folded Spill
987; RV64ID-NEXT:    sd s10, 112(sp) # 8-byte Folded Spill
988; RV64ID-NEXT:    sd s11, 104(sp) # 8-byte Folded Spill
989; RV64ID-NEXT:    fsd fs0, 96(sp) # 8-byte Folded Spill
990; RV64ID-NEXT:    fsd fs1, 88(sp) # 8-byte Folded Spill
991; RV64ID-NEXT:    fsd fs2, 80(sp) # 8-byte Folded Spill
992; RV64ID-NEXT:    fsd fs3, 72(sp) # 8-byte Folded Spill
993; RV64ID-NEXT:    fsd fs4, 64(sp) # 8-byte Folded Spill
994; RV64ID-NEXT:    fsd fs5, 56(sp) # 8-byte Folded Spill
995; RV64ID-NEXT:    fsd fs6, 48(sp) # 8-byte Folded Spill
996; RV64ID-NEXT:    fsd fs7, 40(sp) # 8-byte Folded Spill
997; RV64ID-NEXT:    fsd fs8, 32(sp) # 8-byte Folded Spill
998; RV64ID-NEXT:    fsd fs9, 24(sp) # 8-byte Folded Spill
999; RV64ID-NEXT:    fsd fs10, 16(sp) # 8-byte Folded Spill
1000; RV64ID-NEXT:    fsd fs11, 8(sp) # 8-byte Folded Spill
1001; RV64ID-NEXT:    fsd fa0, 0(sp) # 8-byte Folded Spill
1002; RV64ID-NEXT:    #APP
1003; RV64ID-NEXT:    #NO_APP
1004; RV64ID-NEXT:    fld fa5, 0(sp) # 8-byte Folded Reload
1005; RV64ID-NEXT:    fmv.x.d a0, fa5
1006; RV64ID-NEXT:    ld ra, 200(sp) # 8-byte Folded Reload
1007; RV64ID-NEXT:    ld s0, 192(sp) # 8-byte Folded Reload
1008; RV64ID-NEXT:    ld s1, 184(sp) # 8-byte Folded Reload
1009; RV64ID-NEXT:    ld s2, 176(sp) # 8-byte Folded Reload
1010; RV64ID-NEXT:    ld s3, 168(sp) # 8-byte Folded Reload
1011; RV64ID-NEXT:    ld s4, 160(sp) # 8-byte Folded Reload
1012; RV64ID-NEXT:    ld s5, 152(sp) # 8-byte Folded Reload
1013; RV64ID-NEXT:    ld s6, 144(sp) # 8-byte Folded Reload
1014; RV64ID-NEXT:    ld s7, 136(sp) # 8-byte Folded Reload
1015; RV64ID-NEXT:    ld s8, 128(sp) # 8-byte Folded Reload
1016; RV64ID-NEXT:    ld s9, 120(sp) # 8-byte Folded Reload
1017; RV64ID-NEXT:    ld s10, 112(sp) # 8-byte Folded Reload
1018; RV64ID-NEXT:    ld s11, 104(sp) # 8-byte Folded Reload
1019; RV64ID-NEXT:    fld fs0, 96(sp) # 8-byte Folded Reload
1020; RV64ID-NEXT:    fld fs1, 88(sp) # 8-byte Folded Reload
1021; RV64ID-NEXT:    fld fs2, 80(sp) # 8-byte Folded Reload
1022; RV64ID-NEXT:    fld fs3, 72(sp) # 8-byte Folded Reload
1023; RV64ID-NEXT:    fld fs4, 64(sp) # 8-byte Folded Reload
1024; RV64ID-NEXT:    fld fs5, 56(sp) # 8-byte Folded Reload
1025; RV64ID-NEXT:    fld fs6, 48(sp) # 8-byte Folded Reload
1026; RV64ID-NEXT:    fld fs7, 40(sp) # 8-byte Folded Reload
1027; RV64ID-NEXT:    fld fs8, 32(sp) # 8-byte Folded Reload
1028; RV64ID-NEXT:    fld fs9, 24(sp) # 8-byte Folded Reload
1029; RV64ID-NEXT:    fld fs10, 16(sp) # 8-byte Folded Reload
1030; RV64ID-NEXT:    fld fs11, 8(sp) # 8-byte Folded Reload
1031; RV64ID-NEXT:    addi sp, sp, 208
1032; RV64ID-NEXT:    ret
1033  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
1034  %1 = bitcast double %a to i64
1035  ret i64 %1
1036}
1037