[mlir][LLVM] `LLVMTypeConverter`: Tighten materialization checks (#116532)
[llvm-project.git] / llvm / test / CodeGen / RISCV / callee-saved-fpr64s.ll
blob0501c700f57dfb4c9c2c77d3dcd998f212df88fe
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
13 @var = global [32 x double] zeroinitializer
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.
18 ; This function tests that RISCVRegisterInfo::getCalleeSavedRegs returns
19 ; something appropriate.
21 define 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
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
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
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
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
428 ; This function tests that RISCVRegisterInfo::getCallPreservedMask returns
429 ; something appropriate.
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.
435 define 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
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
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
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
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