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