1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2 ; RUN: llc -mtriple=riscv32 -mattr=+zhinx -verify-machineinstrs < %s \
3 ; RUN: | FileCheck -check-prefix=ZHINX32 %s
4 ; RUN: llc -mtriple=riscv64 -mattr=+zhinx -verify-machineinstrs < %s \
5 ; RUN: | FileCheck -check-prefix=ZHINX64 %s
6 ; RUN: llc -mtriple=riscv32 -mattr=+zfinx -verify-machineinstrs < %s \
7 ; RUN: | FileCheck -check-prefix=ZFINX32 %s
8 ; RUN: llc -mtriple=riscv64 -mattr=+zfinx -verify-machineinstrs < %s \
9 ; RUN: | FileCheck -check-prefix=ZFINX64 %s
10 ; RUN: llc -mtriple=riscv32 -mattr=+zdinx -verify-machineinstrs < %s \
11 ; RUN: | FileCheck -check-prefix=ZDINX32 %s
12 ; RUN: llc -mtriple=riscv64 -mattr=+zdinx -verify-machineinstrs < %s \
13 ; RUN: | FileCheck -check-prefix=ZDINX64 %s
15 define half @caller_half(half %x) nounwind {
16 ; ZHINX32-LABEL: caller_half:
17 ; ZHINX32: # %bb.0: # %entry
18 ; ZHINX32-NEXT: tail h
20 ; ZHINX64-LABEL: caller_half:
21 ; ZHINX64: # %bb.0: # %entry
22 ; ZHINX64-NEXT: tail h
24 ; ZFINX32-LABEL: caller_half:
25 ; ZFINX32: # %bb.0: # %entry
26 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10
27 ; ZFINX32-NEXT: lui a1, 1048560
28 ; ZFINX32-NEXT: or a0, a0, a1
29 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
30 ; ZFINX32-NEXT: tail h
32 ; ZFINX64-LABEL: caller_half:
33 ; ZFINX64: # %bb.0: # %entry
34 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10
35 ; ZFINX64-NEXT: lui a1, 1048560
36 ; ZFINX64-NEXT: or a0, a0, a1
37 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
38 ; ZFINX64-NEXT: tail h
40 ; ZDINX32-LABEL: caller_half:
41 ; ZDINX32: # %bb.0: # %entry
42 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10
43 ; ZDINX32-NEXT: lui a1, 1048560
44 ; ZDINX32-NEXT: or a0, a0, a1
45 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
46 ; ZDINX32-NEXT: tail h
48 ; ZDINX64-LABEL: caller_half:
49 ; ZDINX64: # %bb.0: # %entry
50 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10
51 ; ZDINX64-NEXT: lui a1, 1048560
52 ; ZDINX64-NEXT: or a0, a0, a1
53 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
54 ; ZDINX64-NEXT: tail h
56 %0 = tail call fastcc half @h(half %x)
60 define internal fastcc half @h(half %x) nounwind {
71 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10
72 ; ZFINX32-NEXT: lui a1, 1048560
73 ; ZFINX32-NEXT: or a0, a0, a1
74 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
79 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10
80 ; ZFINX64-NEXT: lui a1, 1048560
81 ; ZFINX64-NEXT: or a0, a0, a1
82 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
87 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10
88 ; ZDINX32-NEXT: lui a1, 1048560
89 ; ZDINX32-NEXT: or a0, a0, a1
90 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
95 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10
96 ; ZDINX64-NEXT: lui a1, 1048560
97 ; ZDINX64-NEXT: or a0, a0, a1
98 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
103 define float @caller_float(float %x) nounwind {
104 ; ZHINX32-LABEL: caller_float:
105 ; ZHINX32: # %bb.0: # %entry
106 ; ZHINX32-NEXT: tail f
108 ; ZHINX64-LABEL: caller_float:
109 ; ZHINX64: # %bb.0: # %entry
110 ; ZHINX64-NEXT: tail f
112 ; ZFINX32-LABEL: caller_float:
113 ; ZFINX32: # %bb.0: # %entry
114 ; ZFINX32-NEXT: tail f
116 ; ZFINX64-LABEL: caller_float:
117 ; ZFINX64: # %bb.0: # %entry
118 ; ZFINX64-NEXT: tail f
120 ; ZDINX32-LABEL: caller_float:
121 ; ZDINX32: # %bb.0: # %entry
122 ; ZDINX32-NEXT: tail f
124 ; ZDINX64-LABEL: caller_float:
125 ; ZDINX64: # %bb.0: # %entry
126 ; ZDINX64-NEXT: tail f
128 %0 = tail call fastcc float @f(float %x)
132 define internal fastcc float @f(float %x) nounwind {
134 ; ZHINX32: # %bb.0: # %entry
138 ; ZHINX64: # %bb.0: # %entry
142 ; ZFINX32: # %bb.0: # %entry
146 ; ZFINX64: # %bb.0: # %entry
150 ; ZDINX32: # %bb.0: # %entry
154 ; ZDINX64: # %bb.0: # %entry
160 define double @caller_double(double %x) nounwind {
161 ; ZHINX32-LABEL: caller_double:
162 ; ZHINX32: # %bb.0: # %entry
163 ; ZHINX32-NEXT: tail d
165 ; ZHINX64-LABEL: caller_double:
166 ; ZHINX64: # %bb.0: # %entry
167 ; ZHINX64-NEXT: tail d
169 ; ZFINX32-LABEL: caller_double:
170 ; ZFINX32: # %bb.0: # %entry
171 ; ZFINX32-NEXT: tail d
173 ; ZFINX64-LABEL: caller_double:
174 ; ZFINX64: # %bb.0: # %entry
175 ; ZFINX64-NEXT: tail d
177 ; ZDINX32-LABEL: caller_double:
178 ; ZDINX32: # %bb.0: # %entry
179 ; ZDINX32-NEXT: addi sp, sp, -16
180 ; ZDINX32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
181 ; ZDINX32-NEXT: sw a0, 0(sp)
182 ; ZDINX32-NEXT: sw a1, 4(sp)
183 ; ZDINX32-NEXT: call d
184 ; ZDINX32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
185 ; ZDINX32-NEXT: addi sp, sp, 16
188 ; ZDINX64-LABEL: caller_double:
189 ; ZDINX64: # %bb.0: # %entry
190 ; ZDINX64-NEXT: tail d
192 %0 = tail call fastcc double @d(double %x)
196 define internal fastcc double @d(double %x) nounwind {
198 ; ZHINX32: # %bb.0: # %entry
202 ; ZHINX64: # %bb.0: # %entry
206 ; ZFINX32: # %bb.0: # %entry
210 ; ZFINX64: # %bb.0: # %entry
214 ; ZDINX32: # %bb.0: # %entry
215 ; ZDINX32-NEXT: lw a0, 0(sp)
216 ; ZDINX32-NEXT: lw a1, 4(sp)
220 ; ZDINX64: # %bb.0: # %entry
226 define fastcc half @callee_half_32(<32 x half> %A) nounwind {
227 ; ZHINX32-LABEL: callee_half_32:
231 ; ZHINX64-LABEL: callee_half_32:
235 ; ZFINX32-LABEL: callee_half_32:
237 ; ZFINX32-NEXT: lui a1, 1048560
238 ; ZFINX32-NEXT: or a0, a0, a1
239 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
242 ; ZFINX64-LABEL: callee_half_32:
244 ; ZFINX64-NEXT: lui a1, 1048560
245 ; ZFINX64-NEXT: or a0, a0, a1
246 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
249 ; ZDINX32-LABEL: callee_half_32:
251 ; ZDINX32-NEXT: lui a1, 1048560
252 ; ZDINX32-NEXT: or a0, a0, a1
253 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
256 ; ZDINX64-LABEL: callee_half_32:
258 ; ZDINX64-NEXT: lui a1, 1048560
259 ; ZDINX64-NEXT: or a0, a0, a1
260 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
262 %B = extractelement <32 x half> %A, i32 0
266 define half @caller_half_32(<32 x half> %A) nounwind {
267 ; ZHINX32-LABEL: caller_half_32:
269 ; ZHINX32-NEXT: addi sp, sp, -112
270 ; ZHINX32-NEXT: sw ra, 108(sp) # 4-byte Folded Spill
271 ; ZHINX32-NEXT: sw s0, 104(sp) # 4-byte Folded Spill
272 ; ZHINX32-NEXT: sw s1, 100(sp) # 4-byte Folded Spill
273 ; ZHINX32-NEXT: sw s2, 96(sp) # 4-byte Folded Spill
274 ; ZHINX32-NEXT: sw s3, 92(sp) # 4-byte Folded Spill
275 ; ZHINX32-NEXT: sw s4, 88(sp) # 4-byte Folded Spill
276 ; ZHINX32-NEXT: sw s5, 84(sp) # 4-byte Folded Spill
277 ; ZHINX32-NEXT: sw s6, 80(sp) # 4-byte Folded Spill
278 ; ZHINX32-NEXT: sw s7, 76(sp) # 4-byte Folded Spill
279 ; ZHINX32-NEXT: sw s8, 72(sp) # 4-byte Folded Spill
280 ; ZHINX32-NEXT: sw s9, 68(sp) # 4-byte Folded Spill
281 ; ZHINX32-NEXT: sw s10, 64(sp) # 4-byte Folded Spill
282 ; ZHINX32-NEXT: sw s11, 60(sp) # 4-byte Folded Spill
283 ; ZHINX32-NEXT: sh a7, 58(sp) # 2-byte Folded Spill
284 ; ZHINX32-NEXT: sh a6, 56(sp) # 2-byte Folded Spill
285 ; ZHINX32-NEXT: sh a5, 54(sp) # 2-byte Folded Spill
286 ; ZHINX32-NEXT: sh a4, 52(sp) # 2-byte Folded Spill
287 ; ZHINX32-NEXT: mv a7, a3
288 ; ZHINX32-NEXT: mv a6, a2
289 ; ZHINX32-NEXT: mv a5, a1
290 ; ZHINX32-NEXT: lh t3, 112(sp)
291 ; ZHINX32-NEXT: lh t4, 116(sp)
292 ; ZHINX32-NEXT: lh t5, 120(sp)
293 ; ZHINX32-NEXT: lh t6, 124(sp)
294 ; ZHINX32-NEXT: lh t0, 128(sp)
295 ; ZHINX32-NEXT: lh t1, 132(sp)
296 ; ZHINX32-NEXT: lh t2, 136(sp)
297 ; ZHINX32-NEXT: lh s0, 140(sp)
298 ; ZHINX32-NEXT: lh s1, 144(sp)
299 ; ZHINX32-NEXT: lh s2, 148(sp)
300 ; ZHINX32-NEXT: lh s3, 152(sp)
301 ; ZHINX32-NEXT: lh s4, 156(sp)
302 ; ZHINX32-NEXT: lh s5, 160(sp)
303 ; ZHINX32-NEXT: lh s6, 164(sp)
304 ; ZHINX32-NEXT: lh s7, 168(sp)
305 ; ZHINX32-NEXT: lh s8, 172(sp)
306 ; ZHINX32-NEXT: lh s9, 176(sp)
307 ; ZHINX32-NEXT: lh s10, 180(sp)
308 ; ZHINX32-NEXT: lh s11, 184(sp)
309 ; ZHINX32-NEXT: lh ra, 188(sp)
310 ; ZHINX32-NEXT: lh a1, 192(sp)
311 ; ZHINX32-NEXT: lh a2, 196(sp)
312 ; ZHINX32-NEXT: lh a3, 200(sp)
313 ; ZHINX32-NEXT: lh a4, 204(sp)
314 ; ZHINX32-NEXT: sh a1, 32(sp)
315 ; ZHINX32-NEXT: sh a2, 34(sp)
316 ; ZHINX32-NEXT: sh a3, 36(sp)
317 ; ZHINX32-NEXT: sh a4, 38(sp)
318 ; ZHINX32-NEXT: sh s9, 24(sp)
319 ; ZHINX32-NEXT: sh s10, 26(sp)
320 ; ZHINX32-NEXT: sh s11, 28(sp)
321 ; ZHINX32-NEXT: sh ra, 30(sp)
322 ; ZHINX32-NEXT: sh s5, 16(sp)
323 ; ZHINX32-NEXT: sh s6, 18(sp)
324 ; ZHINX32-NEXT: sh s7, 20(sp)
325 ; ZHINX32-NEXT: sh s8, 22(sp)
326 ; ZHINX32-NEXT: sh s1, 8(sp)
327 ; ZHINX32-NEXT: sh s2, 10(sp)
328 ; ZHINX32-NEXT: sh s3, 12(sp)
329 ; ZHINX32-NEXT: sh s4, 14(sp)
330 ; ZHINX32-NEXT: sh t0, 0(sp)
331 ; ZHINX32-NEXT: sh t1, 2(sp)
332 ; ZHINX32-NEXT: sh t2, 4(sp)
333 ; ZHINX32-NEXT: sh s0, 6(sp)
334 ; ZHINX32-NEXT: mv a1, a5
335 ; ZHINX32-NEXT: mv a2, a6
336 ; ZHINX32-NEXT: mv a3, a7
337 ; ZHINX32-NEXT: lh a4, 52(sp) # 2-byte Folded Reload
338 ; ZHINX32-NEXT: lh a5, 54(sp) # 2-byte Folded Reload
339 ; ZHINX32-NEXT: lh a6, 56(sp) # 2-byte Folded Reload
340 ; ZHINX32-NEXT: lh a7, 58(sp) # 2-byte Folded Reload
341 ; ZHINX32-NEXT: call callee_half_32
342 ; ZHINX32-NEXT: lw ra, 108(sp) # 4-byte Folded Reload
343 ; ZHINX32-NEXT: lw s0, 104(sp) # 4-byte Folded Reload
344 ; ZHINX32-NEXT: lw s1, 100(sp) # 4-byte Folded Reload
345 ; ZHINX32-NEXT: lw s2, 96(sp) # 4-byte Folded Reload
346 ; ZHINX32-NEXT: lw s3, 92(sp) # 4-byte Folded Reload
347 ; ZHINX32-NEXT: lw s4, 88(sp) # 4-byte Folded Reload
348 ; ZHINX32-NEXT: lw s5, 84(sp) # 4-byte Folded Reload
349 ; ZHINX32-NEXT: lw s6, 80(sp) # 4-byte Folded Reload
350 ; ZHINX32-NEXT: lw s7, 76(sp) # 4-byte Folded Reload
351 ; ZHINX32-NEXT: lw s8, 72(sp) # 4-byte Folded Reload
352 ; ZHINX32-NEXT: lw s9, 68(sp) # 4-byte Folded Reload
353 ; ZHINX32-NEXT: lw s10, 64(sp) # 4-byte Folded Reload
354 ; ZHINX32-NEXT: lw s11, 60(sp) # 4-byte Folded Reload
355 ; ZHINX32-NEXT: addi sp, sp, 112
358 ; ZHINX64-LABEL: caller_half_32:
360 ; ZHINX64-NEXT: addi sp, sp, -160
361 ; ZHINX64-NEXT: sd ra, 152(sp) # 8-byte Folded Spill
362 ; ZHINX64-NEXT: sd s0, 144(sp) # 8-byte Folded Spill
363 ; ZHINX64-NEXT: sd s1, 136(sp) # 8-byte Folded Spill
364 ; ZHINX64-NEXT: sd s2, 128(sp) # 8-byte Folded Spill
365 ; ZHINX64-NEXT: sd s3, 120(sp) # 8-byte Folded Spill
366 ; ZHINX64-NEXT: sd s4, 112(sp) # 8-byte Folded Spill
367 ; ZHINX64-NEXT: sd s5, 104(sp) # 8-byte Folded Spill
368 ; ZHINX64-NEXT: sd s6, 96(sp) # 8-byte Folded Spill
369 ; ZHINX64-NEXT: sd s7, 88(sp) # 8-byte Folded Spill
370 ; ZHINX64-NEXT: sd s8, 80(sp) # 8-byte Folded Spill
371 ; ZHINX64-NEXT: sd s9, 72(sp) # 8-byte Folded Spill
372 ; ZHINX64-NEXT: sd s10, 64(sp) # 8-byte Folded Spill
373 ; ZHINX64-NEXT: sd s11, 56(sp) # 8-byte Folded Spill
374 ; ZHINX64-NEXT: sh a7, 54(sp) # 2-byte Folded Spill
375 ; ZHINX64-NEXT: sh a6, 52(sp) # 2-byte Folded Spill
376 ; ZHINX64-NEXT: sh a5, 50(sp) # 2-byte Folded Spill
377 ; ZHINX64-NEXT: sh a4, 48(sp) # 2-byte Folded Spill
378 ; ZHINX64-NEXT: mv a7, a3
379 ; ZHINX64-NEXT: mv a6, a2
380 ; ZHINX64-NEXT: mv a5, a1
381 ; ZHINX64-NEXT: lh t3, 160(sp)
382 ; ZHINX64-NEXT: lh t4, 168(sp)
383 ; ZHINX64-NEXT: lh t5, 176(sp)
384 ; ZHINX64-NEXT: lh t6, 184(sp)
385 ; ZHINX64-NEXT: lh t0, 192(sp)
386 ; ZHINX64-NEXT: lh t1, 200(sp)
387 ; ZHINX64-NEXT: lh t2, 208(sp)
388 ; ZHINX64-NEXT: lh s0, 216(sp)
389 ; ZHINX64-NEXT: lh s1, 224(sp)
390 ; ZHINX64-NEXT: lh s2, 232(sp)
391 ; ZHINX64-NEXT: lh s3, 240(sp)
392 ; ZHINX64-NEXT: lh s4, 248(sp)
393 ; ZHINX64-NEXT: lh s5, 256(sp)
394 ; ZHINX64-NEXT: lh s6, 264(sp)
395 ; ZHINX64-NEXT: lh s7, 272(sp)
396 ; ZHINX64-NEXT: lh s8, 280(sp)
397 ; ZHINX64-NEXT: lh s9, 288(sp)
398 ; ZHINX64-NEXT: lh s10, 296(sp)
399 ; ZHINX64-NEXT: lh s11, 304(sp)
400 ; ZHINX64-NEXT: lh ra, 312(sp)
401 ; ZHINX64-NEXT: lh a1, 320(sp)
402 ; ZHINX64-NEXT: lh a2, 328(sp)
403 ; ZHINX64-NEXT: lh a3, 336(sp)
404 ; ZHINX64-NEXT: lh a4, 344(sp)
405 ; ZHINX64-NEXT: sh a1, 32(sp)
406 ; ZHINX64-NEXT: sh a2, 34(sp)
407 ; ZHINX64-NEXT: sh a3, 36(sp)
408 ; ZHINX64-NEXT: sh a4, 38(sp)
409 ; ZHINX64-NEXT: sh s9, 24(sp)
410 ; ZHINX64-NEXT: sh s10, 26(sp)
411 ; ZHINX64-NEXT: sh s11, 28(sp)
412 ; ZHINX64-NEXT: sh ra, 30(sp)
413 ; ZHINX64-NEXT: sh s5, 16(sp)
414 ; ZHINX64-NEXT: sh s6, 18(sp)
415 ; ZHINX64-NEXT: sh s7, 20(sp)
416 ; ZHINX64-NEXT: sh s8, 22(sp)
417 ; ZHINX64-NEXT: sh s1, 8(sp)
418 ; ZHINX64-NEXT: sh s2, 10(sp)
419 ; ZHINX64-NEXT: sh s3, 12(sp)
420 ; ZHINX64-NEXT: sh s4, 14(sp)
421 ; ZHINX64-NEXT: sh t0, 0(sp)
422 ; ZHINX64-NEXT: sh t1, 2(sp)
423 ; ZHINX64-NEXT: sh t2, 4(sp)
424 ; ZHINX64-NEXT: sh s0, 6(sp)
425 ; ZHINX64-NEXT: mv a1, a5
426 ; ZHINX64-NEXT: mv a2, a6
427 ; ZHINX64-NEXT: mv a3, a7
428 ; ZHINX64-NEXT: lh a4, 48(sp) # 2-byte Folded Reload
429 ; ZHINX64-NEXT: lh a5, 50(sp) # 2-byte Folded Reload
430 ; ZHINX64-NEXT: lh a6, 52(sp) # 2-byte Folded Reload
431 ; ZHINX64-NEXT: lh a7, 54(sp) # 2-byte Folded Reload
432 ; ZHINX64-NEXT: call callee_half_32
433 ; ZHINX64-NEXT: ld ra, 152(sp) # 8-byte Folded Reload
434 ; ZHINX64-NEXT: ld s0, 144(sp) # 8-byte Folded Reload
435 ; ZHINX64-NEXT: ld s1, 136(sp) # 8-byte Folded Reload
436 ; ZHINX64-NEXT: ld s2, 128(sp) # 8-byte Folded Reload
437 ; ZHINX64-NEXT: ld s3, 120(sp) # 8-byte Folded Reload
438 ; ZHINX64-NEXT: ld s4, 112(sp) # 8-byte Folded Reload
439 ; ZHINX64-NEXT: ld s5, 104(sp) # 8-byte Folded Reload
440 ; ZHINX64-NEXT: ld s6, 96(sp) # 8-byte Folded Reload
441 ; ZHINX64-NEXT: ld s7, 88(sp) # 8-byte Folded Reload
442 ; ZHINX64-NEXT: ld s8, 80(sp) # 8-byte Folded Reload
443 ; ZHINX64-NEXT: ld s9, 72(sp) # 8-byte Folded Reload
444 ; ZHINX64-NEXT: ld s10, 64(sp) # 8-byte Folded Reload
445 ; ZHINX64-NEXT: ld s11, 56(sp) # 8-byte Folded Reload
446 ; ZHINX64-NEXT: addi sp, sp, 160
449 ; ZFINX32-LABEL: caller_half_32:
451 ; ZFINX32-NEXT: addi sp, sp, -160
452 ; ZFINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
453 ; ZFINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
454 ; ZFINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
455 ; ZFINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
456 ; ZFINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
457 ; ZFINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
458 ; ZFINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
459 ; ZFINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
460 ; ZFINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
461 ; ZFINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
462 ; ZFINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
463 ; ZFINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
464 ; ZFINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
465 ; ZFINX32-NEXT: mv t0, a0
466 ; ZFINX32-NEXT: lw a0, 0(a0)
467 ; ZFINX32-NEXT: sw a0, 104(sp) # 4-byte Folded Spill
468 ; ZFINX32-NEXT: lw a0, 4(t0)
469 ; ZFINX32-NEXT: sw a0, 100(sp) # 4-byte Folded Spill
470 ; ZFINX32-NEXT: lw a0, 8(t0)
471 ; ZFINX32-NEXT: sw a0, 96(sp) # 4-byte Folded Spill
472 ; ZFINX32-NEXT: lw a0, 12(t0)
473 ; ZFINX32-NEXT: sw a0, 92(sp) # 4-byte Folded Spill
474 ; ZFINX32-NEXT: lw a4, 16(t0)
475 ; ZFINX32-NEXT: lw a5, 20(t0)
476 ; ZFINX32-NEXT: lw a6, 24(t0)
477 ; ZFINX32-NEXT: lw a7, 28(t0)
478 ; ZFINX32-NEXT: lw t3, 32(t0)
479 ; ZFINX32-NEXT: lw t4, 36(t0)
480 ; ZFINX32-NEXT: lw t5, 40(t0)
481 ; ZFINX32-NEXT: lw t6, 44(t0)
482 ; ZFINX32-NEXT: lw t1, 48(t0)
483 ; ZFINX32-NEXT: lw t2, 52(t0)
484 ; ZFINX32-NEXT: lw s0, 56(t0)
485 ; ZFINX32-NEXT: lw s1, 60(t0)
486 ; ZFINX32-NEXT: lw s2, 64(t0)
487 ; ZFINX32-NEXT: lw s3, 68(t0)
488 ; ZFINX32-NEXT: lw s4, 72(t0)
489 ; ZFINX32-NEXT: lw s5, 76(t0)
490 ; ZFINX32-NEXT: lw s6, 80(t0)
491 ; ZFINX32-NEXT: lw s7, 84(t0)
492 ; ZFINX32-NEXT: lw s8, 88(t0)
493 ; ZFINX32-NEXT: lw s9, 92(t0)
494 ; ZFINX32-NEXT: lw s10, 96(t0)
495 ; ZFINX32-NEXT: lw s11, 100(t0)
496 ; ZFINX32-NEXT: lw ra, 104(t0)
497 ; ZFINX32-NEXT: lw a3, 108(t0)
498 ; ZFINX32-NEXT: lw a0, 112(t0)
499 ; ZFINX32-NEXT: lw a1, 116(t0)
500 ; ZFINX32-NEXT: lw a2, 120(t0)
501 ; ZFINX32-NEXT: lw t0, 124(t0)
502 ; ZFINX32-NEXT: sw a0, 64(sp)
503 ; ZFINX32-NEXT: sw a1, 68(sp)
504 ; ZFINX32-NEXT: sw a2, 72(sp)
505 ; ZFINX32-NEXT: sw t0, 76(sp)
506 ; ZFINX32-NEXT: sw s10, 48(sp)
507 ; ZFINX32-NEXT: sw s11, 52(sp)
508 ; ZFINX32-NEXT: sw ra, 56(sp)
509 ; ZFINX32-NEXT: sw a3, 60(sp)
510 ; ZFINX32-NEXT: sw s6, 32(sp)
511 ; ZFINX32-NEXT: sw s7, 36(sp)
512 ; ZFINX32-NEXT: sw s8, 40(sp)
513 ; ZFINX32-NEXT: sw s9, 44(sp)
514 ; ZFINX32-NEXT: sw s2, 16(sp)
515 ; ZFINX32-NEXT: sw s3, 20(sp)
516 ; ZFINX32-NEXT: sw s4, 24(sp)
517 ; ZFINX32-NEXT: sw s5, 28(sp)
518 ; ZFINX32-NEXT: sw t1, 0(sp)
519 ; ZFINX32-NEXT: sw t2, 4(sp)
520 ; ZFINX32-NEXT: sw s0, 8(sp)
521 ; ZFINX32-NEXT: sw s1, 12(sp)
522 ; ZFINX32-NEXT: lw a0, 104(sp) # 4-byte Folded Reload
523 ; ZFINX32-NEXT: lw a1, 100(sp) # 4-byte Folded Reload
524 ; ZFINX32-NEXT: lw a2, 96(sp) # 4-byte Folded Reload
525 ; ZFINX32-NEXT: lw a3, 92(sp) # 4-byte Folded Reload
526 ; ZFINX32-NEXT: call callee_half_32
527 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10
528 ; ZFINX32-NEXT: lui a1, 1048560
529 ; ZFINX32-NEXT: or a0, a0, a1
530 ; ZFINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
531 ; ZFINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
532 ; ZFINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
533 ; ZFINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
534 ; ZFINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
535 ; ZFINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
536 ; ZFINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
537 ; ZFINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
538 ; ZFINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
539 ; ZFINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
540 ; ZFINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
541 ; ZFINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
542 ; ZFINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
543 ; ZFINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
544 ; ZFINX32-NEXT: addi sp, sp, 160
547 ; ZFINX64-LABEL: caller_half_32:
549 ; ZFINX64-NEXT: addi sp, sp, -304
550 ; ZFINX64-NEXT: sd ra, 296(sp) # 8-byte Folded Spill
551 ; ZFINX64-NEXT: sd s0, 288(sp) # 8-byte Folded Spill
552 ; ZFINX64-NEXT: sd s1, 280(sp) # 8-byte Folded Spill
553 ; ZFINX64-NEXT: sd s2, 272(sp) # 8-byte Folded Spill
554 ; ZFINX64-NEXT: sd s3, 264(sp) # 8-byte Folded Spill
555 ; ZFINX64-NEXT: sd s4, 256(sp) # 8-byte Folded Spill
556 ; ZFINX64-NEXT: sd s5, 248(sp) # 8-byte Folded Spill
557 ; ZFINX64-NEXT: sd s6, 240(sp) # 8-byte Folded Spill
558 ; ZFINX64-NEXT: sd s7, 232(sp) # 8-byte Folded Spill
559 ; ZFINX64-NEXT: sd s8, 224(sp) # 8-byte Folded Spill
560 ; ZFINX64-NEXT: sd s9, 216(sp) # 8-byte Folded Spill
561 ; ZFINX64-NEXT: sd s10, 208(sp) # 8-byte Folded Spill
562 ; ZFINX64-NEXT: sd s11, 200(sp) # 8-byte Folded Spill
563 ; ZFINX64-NEXT: mv t0, a0
564 ; ZFINX64-NEXT: ld a0, 0(a0)
565 ; ZFINX64-NEXT: sd a0, 192(sp) # 8-byte Folded Spill
566 ; ZFINX64-NEXT: ld a0, 8(t0)
567 ; ZFINX64-NEXT: sd a0, 184(sp) # 8-byte Folded Spill
568 ; ZFINX64-NEXT: ld a0, 16(t0)
569 ; ZFINX64-NEXT: sd a0, 176(sp) # 8-byte Folded Spill
570 ; ZFINX64-NEXT: ld a0, 24(t0)
571 ; ZFINX64-NEXT: sd a0, 168(sp) # 8-byte Folded Spill
572 ; ZFINX64-NEXT: ld a4, 32(t0)
573 ; ZFINX64-NEXT: ld a5, 40(t0)
574 ; ZFINX64-NEXT: ld a6, 48(t0)
575 ; ZFINX64-NEXT: ld a7, 56(t0)
576 ; ZFINX64-NEXT: ld t3, 64(t0)
577 ; ZFINX64-NEXT: ld t4, 72(t0)
578 ; ZFINX64-NEXT: ld t5, 80(t0)
579 ; ZFINX64-NEXT: ld t6, 88(t0)
580 ; ZFINX64-NEXT: ld t1, 96(t0)
581 ; ZFINX64-NEXT: ld t2, 104(t0)
582 ; ZFINX64-NEXT: ld s0, 112(t0)
583 ; ZFINX64-NEXT: ld s1, 120(t0)
584 ; ZFINX64-NEXT: ld s2, 128(t0)
585 ; ZFINX64-NEXT: ld s3, 136(t0)
586 ; ZFINX64-NEXT: ld s4, 144(t0)
587 ; ZFINX64-NEXT: ld s5, 152(t0)
588 ; ZFINX64-NEXT: ld s6, 160(t0)
589 ; ZFINX64-NEXT: ld s7, 168(t0)
590 ; ZFINX64-NEXT: ld s8, 176(t0)
591 ; ZFINX64-NEXT: ld s9, 184(t0)
592 ; ZFINX64-NEXT: ld s10, 192(t0)
593 ; ZFINX64-NEXT: ld s11, 200(t0)
594 ; ZFINX64-NEXT: ld ra, 208(t0)
595 ; ZFINX64-NEXT: ld a3, 216(t0)
596 ; ZFINX64-NEXT: ld a0, 224(t0)
597 ; ZFINX64-NEXT: ld a1, 232(t0)
598 ; ZFINX64-NEXT: ld a2, 240(t0)
599 ; ZFINX64-NEXT: ld t0, 248(t0)
600 ; ZFINX64-NEXT: sd a0, 128(sp)
601 ; ZFINX64-NEXT: sd a1, 136(sp)
602 ; ZFINX64-NEXT: sd a2, 144(sp)
603 ; ZFINX64-NEXT: sd t0, 152(sp)
604 ; ZFINX64-NEXT: sd s10, 96(sp)
605 ; ZFINX64-NEXT: sd s11, 104(sp)
606 ; ZFINX64-NEXT: sd ra, 112(sp)
607 ; ZFINX64-NEXT: sd a3, 120(sp)
608 ; ZFINX64-NEXT: sd s6, 64(sp)
609 ; ZFINX64-NEXT: sd s7, 72(sp)
610 ; ZFINX64-NEXT: sd s8, 80(sp)
611 ; ZFINX64-NEXT: sd s9, 88(sp)
612 ; ZFINX64-NEXT: sd s2, 32(sp)
613 ; ZFINX64-NEXT: sd s3, 40(sp)
614 ; ZFINX64-NEXT: sd s4, 48(sp)
615 ; ZFINX64-NEXT: sd s5, 56(sp)
616 ; ZFINX64-NEXT: sd t1, 0(sp)
617 ; ZFINX64-NEXT: sd t2, 8(sp)
618 ; ZFINX64-NEXT: sd s0, 16(sp)
619 ; ZFINX64-NEXT: sd s1, 24(sp)
620 ; ZFINX64-NEXT: ld a0, 192(sp) # 8-byte Folded Reload
621 ; ZFINX64-NEXT: ld a1, 184(sp) # 8-byte Folded Reload
622 ; ZFINX64-NEXT: ld a2, 176(sp) # 8-byte Folded Reload
623 ; ZFINX64-NEXT: ld a3, 168(sp) # 8-byte Folded Reload
624 ; ZFINX64-NEXT: call callee_half_32
625 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10
626 ; ZFINX64-NEXT: lui a1, 1048560
627 ; ZFINX64-NEXT: or a0, a0, a1
628 ; ZFINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
629 ; ZFINX64-NEXT: ld ra, 296(sp) # 8-byte Folded Reload
630 ; ZFINX64-NEXT: ld s0, 288(sp) # 8-byte Folded Reload
631 ; ZFINX64-NEXT: ld s1, 280(sp) # 8-byte Folded Reload
632 ; ZFINX64-NEXT: ld s2, 272(sp) # 8-byte Folded Reload
633 ; ZFINX64-NEXT: ld s3, 264(sp) # 8-byte Folded Reload
634 ; ZFINX64-NEXT: ld s4, 256(sp) # 8-byte Folded Reload
635 ; ZFINX64-NEXT: ld s5, 248(sp) # 8-byte Folded Reload
636 ; ZFINX64-NEXT: ld s6, 240(sp) # 8-byte Folded Reload
637 ; ZFINX64-NEXT: ld s7, 232(sp) # 8-byte Folded Reload
638 ; ZFINX64-NEXT: ld s8, 224(sp) # 8-byte Folded Reload
639 ; ZFINX64-NEXT: ld s9, 216(sp) # 8-byte Folded Reload
640 ; ZFINX64-NEXT: ld s10, 208(sp) # 8-byte Folded Reload
641 ; ZFINX64-NEXT: ld s11, 200(sp) # 8-byte Folded Reload
642 ; ZFINX64-NEXT: addi sp, sp, 304
645 ; ZDINX32-LABEL: caller_half_32:
647 ; ZDINX32-NEXT: addi sp, sp, -160
648 ; ZDINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
649 ; ZDINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
650 ; ZDINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
651 ; ZDINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
652 ; ZDINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
653 ; ZDINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
654 ; ZDINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
655 ; ZDINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
656 ; ZDINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
657 ; ZDINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
658 ; ZDINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
659 ; ZDINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
660 ; ZDINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
661 ; ZDINX32-NEXT: mv t0, a0
662 ; ZDINX32-NEXT: lw a0, 0(a0)
663 ; ZDINX32-NEXT: sw a0, 104(sp) # 4-byte Folded Spill
664 ; ZDINX32-NEXT: lw a0, 4(t0)
665 ; ZDINX32-NEXT: sw a0, 100(sp) # 4-byte Folded Spill
666 ; ZDINX32-NEXT: lw a0, 8(t0)
667 ; ZDINX32-NEXT: sw a0, 96(sp) # 4-byte Folded Spill
668 ; ZDINX32-NEXT: lw a0, 12(t0)
669 ; ZDINX32-NEXT: sw a0, 92(sp) # 4-byte Folded Spill
670 ; ZDINX32-NEXT: lw a4, 16(t0)
671 ; ZDINX32-NEXT: lw a5, 20(t0)
672 ; ZDINX32-NEXT: lw a6, 24(t0)
673 ; ZDINX32-NEXT: lw a7, 28(t0)
674 ; ZDINX32-NEXT: lw t3, 32(t0)
675 ; ZDINX32-NEXT: lw t4, 36(t0)
676 ; ZDINX32-NEXT: lw t5, 40(t0)
677 ; ZDINX32-NEXT: lw t6, 44(t0)
678 ; ZDINX32-NEXT: lw t1, 48(t0)
679 ; ZDINX32-NEXT: lw t2, 52(t0)
680 ; ZDINX32-NEXT: lw s0, 56(t0)
681 ; ZDINX32-NEXT: lw s1, 60(t0)
682 ; ZDINX32-NEXT: lw s2, 64(t0)
683 ; ZDINX32-NEXT: lw s3, 68(t0)
684 ; ZDINX32-NEXT: lw s4, 72(t0)
685 ; ZDINX32-NEXT: lw s5, 76(t0)
686 ; ZDINX32-NEXT: lw s6, 80(t0)
687 ; ZDINX32-NEXT: lw s7, 84(t0)
688 ; ZDINX32-NEXT: lw s8, 88(t0)
689 ; ZDINX32-NEXT: lw s9, 92(t0)
690 ; ZDINX32-NEXT: lw s10, 96(t0)
691 ; ZDINX32-NEXT: lw s11, 100(t0)
692 ; ZDINX32-NEXT: lw ra, 104(t0)
693 ; ZDINX32-NEXT: lw a3, 108(t0)
694 ; ZDINX32-NEXT: lw a0, 112(t0)
695 ; ZDINX32-NEXT: lw a1, 116(t0)
696 ; ZDINX32-NEXT: lw a2, 120(t0)
697 ; ZDINX32-NEXT: lw t0, 124(t0)
698 ; ZDINX32-NEXT: sw a0, 64(sp)
699 ; ZDINX32-NEXT: sw a1, 68(sp)
700 ; ZDINX32-NEXT: sw a2, 72(sp)
701 ; ZDINX32-NEXT: sw t0, 76(sp)
702 ; ZDINX32-NEXT: sw s10, 48(sp)
703 ; ZDINX32-NEXT: sw s11, 52(sp)
704 ; ZDINX32-NEXT: sw ra, 56(sp)
705 ; ZDINX32-NEXT: sw a3, 60(sp)
706 ; ZDINX32-NEXT: sw s6, 32(sp)
707 ; ZDINX32-NEXT: sw s7, 36(sp)
708 ; ZDINX32-NEXT: sw s8, 40(sp)
709 ; ZDINX32-NEXT: sw s9, 44(sp)
710 ; ZDINX32-NEXT: sw s2, 16(sp)
711 ; ZDINX32-NEXT: sw s3, 20(sp)
712 ; ZDINX32-NEXT: sw s4, 24(sp)
713 ; ZDINX32-NEXT: sw s5, 28(sp)
714 ; ZDINX32-NEXT: sw t1, 0(sp)
715 ; ZDINX32-NEXT: sw t2, 4(sp)
716 ; ZDINX32-NEXT: sw s0, 8(sp)
717 ; ZDINX32-NEXT: sw s1, 12(sp)
718 ; ZDINX32-NEXT: lw a0, 104(sp) # 4-byte Folded Reload
719 ; ZDINX32-NEXT: lw a1, 100(sp) # 4-byte Folded Reload
720 ; ZDINX32-NEXT: lw a2, 96(sp) # 4-byte Folded Reload
721 ; ZDINX32-NEXT: lw a3, 92(sp) # 4-byte Folded Reload
722 ; ZDINX32-NEXT: call callee_half_32
723 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w def $x10
724 ; ZDINX32-NEXT: lui a1, 1048560
725 ; ZDINX32-NEXT: or a0, a0, a1
726 ; ZDINX32-NEXT: # kill: def $x10_w killed $x10_w killed $x10
727 ; ZDINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
728 ; ZDINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
729 ; ZDINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
730 ; ZDINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
731 ; ZDINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
732 ; ZDINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
733 ; ZDINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
734 ; ZDINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
735 ; ZDINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
736 ; ZDINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
737 ; ZDINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
738 ; ZDINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
739 ; ZDINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
740 ; ZDINX32-NEXT: addi sp, sp, 160
743 ; ZDINX64-LABEL: caller_half_32:
745 ; ZDINX64-NEXT: addi sp, sp, -304
746 ; ZDINX64-NEXT: sd ra, 296(sp) # 8-byte Folded Spill
747 ; ZDINX64-NEXT: sd s0, 288(sp) # 8-byte Folded Spill
748 ; ZDINX64-NEXT: sd s1, 280(sp) # 8-byte Folded Spill
749 ; ZDINX64-NEXT: sd s2, 272(sp) # 8-byte Folded Spill
750 ; ZDINX64-NEXT: sd s3, 264(sp) # 8-byte Folded Spill
751 ; ZDINX64-NEXT: sd s4, 256(sp) # 8-byte Folded Spill
752 ; ZDINX64-NEXT: sd s5, 248(sp) # 8-byte Folded Spill
753 ; ZDINX64-NEXT: sd s6, 240(sp) # 8-byte Folded Spill
754 ; ZDINX64-NEXT: sd s7, 232(sp) # 8-byte Folded Spill
755 ; ZDINX64-NEXT: sd s8, 224(sp) # 8-byte Folded Spill
756 ; ZDINX64-NEXT: sd s9, 216(sp) # 8-byte Folded Spill
757 ; ZDINX64-NEXT: sd s10, 208(sp) # 8-byte Folded Spill
758 ; ZDINX64-NEXT: sd s11, 200(sp) # 8-byte Folded Spill
759 ; ZDINX64-NEXT: mv t0, a0
760 ; ZDINX64-NEXT: ld a0, 0(a0)
761 ; ZDINX64-NEXT: sd a0, 192(sp) # 8-byte Folded Spill
762 ; ZDINX64-NEXT: ld a0, 8(t0)
763 ; ZDINX64-NEXT: sd a0, 184(sp) # 8-byte Folded Spill
764 ; ZDINX64-NEXT: ld a0, 16(t0)
765 ; ZDINX64-NEXT: sd a0, 176(sp) # 8-byte Folded Spill
766 ; ZDINX64-NEXT: ld a0, 24(t0)
767 ; ZDINX64-NEXT: sd a0, 168(sp) # 8-byte Folded Spill
768 ; ZDINX64-NEXT: ld a4, 32(t0)
769 ; ZDINX64-NEXT: ld a5, 40(t0)
770 ; ZDINX64-NEXT: ld a6, 48(t0)
771 ; ZDINX64-NEXT: ld a7, 56(t0)
772 ; ZDINX64-NEXT: ld t3, 64(t0)
773 ; ZDINX64-NEXT: ld t4, 72(t0)
774 ; ZDINX64-NEXT: ld t5, 80(t0)
775 ; ZDINX64-NEXT: ld t6, 88(t0)
776 ; ZDINX64-NEXT: ld t1, 96(t0)
777 ; ZDINX64-NEXT: ld t2, 104(t0)
778 ; ZDINX64-NEXT: ld s0, 112(t0)
779 ; ZDINX64-NEXT: ld s1, 120(t0)
780 ; ZDINX64-NEXT: ld s2, 128(t0)
781 ; ZDINX64-NEXT: ld s3, 136(t0)
782 ; ZDINX64-NEXT: ld s4, 144(t0)
783 ; ZDINX64-NEXT: ld s5, 152(t0)
784 ; ZDINX64-NEXT: ld s6, 160(t0)
785 ; ZDINX64-NEXT: ld s7, 168(t0)
786 ; ZDINX64-NEXT: ld s8, 176(t0)
787 ; ZDINX64-NEXT: ld s9, 184(t0)
788 ; ZDINX64-NEXT: ld s10, 192(t0)
789 ; ZDINX64-NEXT: ld s11, 200(t0)
790 ; ZDINX64-NEXT: ld ra, 208(t0)
791 ; ZDINX64-NEXT: ld a3, 216(t0)
792 ; ZDINX64-NEXT: ld a0, 224(t0)
793 ; ZDINX64-NEXT: ld a1, 232(t0)
794 ; ZDINX64-NEXT: ld a2, 240(t0)
795 ; ZDINX64-NEXT: ld t0, 248(t0)
796 ; ZDINX64-NEXT: sd a0, 128(sp)
797 ; ZDINX64-NEXT: sd a1, 136(sp)
798 ; ZDINX64-NEXT: sd a2, 144(sp)
799 ; ZDINX64-NEXT: sd t0, 152(sp)
800 ; ZDINX64-NEXT: sd s10, 96(sp)
801 ; ZDINX64-NEXT: sd s11, 104(sp)
802 ; ZDINX64-NEXT: sd ra, 112(sp)
803 ; ZDINX64-NEXT: sd a3, 120(sp)
804 ; ZDINX64-NEXT: sd s6, 64(sp)
805 ; ZDINX64-NEXT: sd s7, 72(sp)
806 ; ZDINX64-NEXT: sd s8, 80(sp)
807 ; ZDINX64-NEXT: sd s9, 88(sp)
808 ; ZDINX64-NEXT: sd s2, 32(sp)
809 ; ZDINX64-NEXT: sd s3, 40(sp)
810 ; ZDINX64-NEXT: sd s4, 48(sp)
811 ; ZDINX64-NEXT: sd s5, 56(sp)
812 ; ZDINX64-NEXT: sd t1, 0(sp)
813 ; ZDINX64-NEXT: sd t2, 8(sp)
814 ; ZDINX64-NEXT: sd s0, 16(sp)
815 ; ZDINX64-NEXT: sd s1, 24(sp)
816 ; ZDINX64-NEXT: ld a0, 192(sp) # 8-byte Folded Reload
817 ; ZDINX64-NEXT: ld a1, 184(sp) # 8-byte Folded Reload
818 ; ZDINX64-NEXT: ld a2, 176(sp) # 8-byte Folded Reload
819 ; ZDINX64-NEXT: ld a3, 168(sp) # 8-byte Folded Reload
820 ; ZDINX64-NEXT: call callee_half_32
821 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w def $x10
822 ; ZDINX64-NEXT: lui a1, 1048560
823 ; ZDINX64-NEXT: or a0, a0, a1
824 ; ZDINX64-NEXT: # kill: def $x10_w killed $x10_w killed $x10
825 ; ZDINX64-NEXT: ld ra, 296(sp) # 8-byte Folded Reload
826 ; ZDINX64-NEXT: ld s0, 288(sp) # 8-byte Folded Reload
827 ; ZDINX64-NEXT: ld s1, 280(sp) # 8-byte Folded Reload
828 ; ZDINX64-NEXT: ld s2, 272(sp) # 8-byte Folded Reload
829 ; ZDINX64-NEXT: ld s3, 264(sp) # 8-byte Folded Reload
830 ; ZDINX64-NEXT: ld s4, 256(sp) # 8-byte Folded Reload
831 ; ZDINX64-NEXT: ld s5, 248(sp) # 8-byte Folded Reload
832 ; ZDINX64-NEXT: ld s6, 240(sp) # 8-byte Folded Reload
833 ; ZDINX64-NEXT: ld s7, 232(sp) # 8-byte Folded Reload
834 ; ZDINX64-NEXT: ld s8, 224(sp) # 8-byte Folded Reload
835 ; ZDINX64-NEXT: ld s9, 216(sp) # 8-byte Folded Reload
836 ; ZDINX64-NEXT: ld s10, 208(sp) # 8-byte Folded Reload
837 ; ZDINX64-NEXT: ld s11, 200(sp) # 8-byte Folded Reload
838 ; ZDINX64-NEXT: addi sp, sp, 304
840 %C = call fastcc half @callee_half_32(<32 x half> %A)
844 define fastcc float @callee_float_32(<32 x float> %A) nounwind {
845 ; ZHINX32-LABEL: callee_float_32:
849 ; ZHINX64-LABEL: callee_float_32:
853 ; ZFINX32-LABEL: callee_float_32:
857 ; ZFINX64-LABEL: callee_float_32:
861 ; ZDINX32-LABEL: callee_float_32:
865 ; ZDINX64-LABEL: callee_float_32:
868 %B = extractelement <32 x float> %A, i32 0
872 define float @caller_float_32(<32 x float> %A) nounwind {
873 ; ZHINX32-LABEL: caller_float_32:
875 ; ZHINX32-NEXT: addi sp, sp, -160
876 ; ZHINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
877 ; ZHINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
878 ; ZHINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
879 ; ZHINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
880 ; ZHINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
881 ; ZHINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
882 ; ZHINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
883 ; ZHINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
884 ; ZHINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
885 ; ZHINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
886 ; ZHINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
887 ; ZHINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
888 ; ZHINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
889 ; ZHINX32-NEXT: sw a7, 104(sp) # 4-byte Folded Spill
890 ; ZHINX32-NEXT: sw a6, 100(sp) # 4-byte Folded Spill
891 ; ZHINX32-NEXT: sw a5, 96(sp) # 4-byte Folded Spill
892 ; ZHINX32-NEXT: sw a4, 92(sp) # 4-byte Folded Spill
893 ; ZHINX32-NEXT: mv a7, a3
894 ; ZHINX32-NEXT: mv a6, a2
895 ; ZHINX32-NEXT: mv a5, a1
896 ; ZHINX32-NEXT: lw t3, 160(sp)
897 ; ZHINX32-NEXT: lw t4, 164(sp)
898 ; ZHINX32-NEXT: lw t5, 168(sp)
899 ; ZHINX32-NEXT: lw t6, 172(sp)
900 ; ZHINX32-NEXT: lw t0, 176(sp)
901 ; ZHINX32-NEXT: lw t1, 180(sp)
902 ; ZHINX32-NEXT: lw t2, 184(sp)
903 ; ZHINX32-NEXT: lw s0, 188(sp)
904 ; ZHINX32-NEXT: lw s1, 192(sp)
905 ; ZHINX32-NEXT: lw s2, 196(sp)
906 ; ZHINX32-NEXT: lw s3, 200(sp)
907 ; ZHINX32-NEXT: lw s4, 204(sp)
908 ; ZHINX32-NEXT: lw s5, 208(sp)
909 ; ZHINX32-NEXT: lw s6, 212(sp)
910 ; ZHINX32-NEXT: lw s7, 216(sp)
911 ; ZHINX32-NEXT: lw s8, 220(sp)
912 ; ZHINX32-NEXT: lw s9, 224(sp)
913 ; ZHINX32-NEXT: lw s10, 228(sp)
914 ; ZHINX32-NEXT: lw s11, 232(sp)
915 ; ZHINX32-NEXT: lw ra, 236(sp)
916 ; ZHINX32-NEXT: lw a1, 240(sp)
917 ; ZHINX32-NEXT: lw a2, 244(sp)
918 ; ZHINX32-NEXT: lw a3, 248(sp)
919 ; ZHINX32-NEXT: lw a4, 252(sp)
920 ; ZHINX32-NEXT: sw a1, 64(sp)
921 ; ZHINX32-NEXT: sw a2, 68(sp)
922 ; ZHINX32-NEXT: sw a3, 72(sp)
923 ; ZHINX32-NEXT: sw a4, 76(sp)
924 ; ZHINX32-NEXT: sw s9, 48(sp)
925 ; ZHINX32-NEXT: sw s10, 52(sp)
926 ; ZHINX32-NEXT: sw s11, 56(sp)
927 ; ZHINX32-NEXT: sw ra, 60(sp)
928 ; ZHINX32-NEXT: sw s5, 32(sp)
929 ; ZHINX32-NEXT: sw s6, 36(sp)
930 ; ZHINX32-NEXT: sw s7, 40(sp)
931 ; ZHINX32-NEXT: sw s8, 44(sp)
932 ; ZHINX32-NEXT: sw s1, 16(sp)
933 ; ZHINX32-NEXT: sw s2, 20(sp)
934 ; ZHINX32-NEXT: sw s3, 24(sp)
935 ; ZHINX32-NEXT: sw s4, 28(sp)
936 ; ZHINX32-NEXT: sw t0, 0(sp)
937 ; ZHINX32-NEXT: sw t1, 4(sp)
938 ; ZHINX32-NEXT: sw t2, 8(sp)
939 ; ZHINX32-NEXT: sw s0, 12(sp)
940 ; ZHINX32-NEXT: mv a1, a5
941 ; ZHINX32-NEXT: mv a2, a6
942 ; ZHINX32-NEXT: mv a3, a7
943 ; ZHINX32-NEXT: lw a4, 92(sp) # 4-byte Folded Reload
944 ; ZHINX32-NEXT: lw a5, 96(sp) # 4-byte Folded Reload
945 ; ZHINX32-NEXT: lw a6, 100(sp) # 4-byte Folded Reload
946 ; ZHINX32-NEXT: lw a7, 104(sp) # 4-byte Folded Reload
947 ; ZHINX32-NEXT: call callee_float_32
948 ; ZHINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
949 ; ZHINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
950 ; ZHINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
951 ; ZHINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
952 ; ZHINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
953 ; ZHINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
954 ; ZHINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
955 ; ZHINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
956 ; ZHINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
957 ; ZHINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
958 ; ZHINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
959 ; ZHINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
960 ; ZHINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
961 ; ZHINX32-NEXT: addi sp, sp, 160
964 ; ZHINX64-LABEL: caller_float_32:
966 ; ZHINX64-NEXT: addi sp, sp, -208
967 ; ZHINX64-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
968 ; ZHINX64-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
969 ; ZHINX64-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
970 ; ZHINX64-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
971 ; ZHINX64-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
972 ; ZHINX64-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
973 ; ZHINX64-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
974 ; ZHINX64-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
975 ; ZHINX64-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
976 ; ZHINX64-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
977 ; ZHINX64-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
978 ; ZHINX64-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
979 ; ZHINX64-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
980 ; ZHINX64-NEXT: sw a7, 100(sp) # 4-byte Folded Spill
981 ; ZHINX64-NEXT: sw a6, 96(sp) # 4-byte Folded Spill
982 ; ZHINX64-NEXT: sw a5, 92(sp) # 4-byte Folded Spill
983 ; ZHINX64-NEXT: sw a4, 88(sp) # 4-byte Folded Spill
984 ; ZHINX64-NEXT: mv a7, a3
985 ; ZHINX64-NEXT: mv a6, a2
986 ; ZHINX64-NEXT: mv a5, a1
987 ; ZHINX64-NEXT: lw t3, 208(sp)
988 ; ZHINX64-NEXT: lw t4, 216(sp)
989 ; ZHINX64-NEXT: lw t5, 224(sp)
990 ; ZHINX64-NEXT: lw t6, 232(sp)
991 ; ZHINX64-NEXT: lw t0, 240(sp)
992 ; ZHINX64-NEXT: lw t1, 248(sp)
993 ; ZHINX64-NEXT: lw t2, 256(sp)
994 ; ZHINX64-NEXT: lw s0, 264(sp)
995 ; ZHINX64-NEXT: lw s1, 272(sp)
996 ; ZHINX64-NEXT: lw s2, 280(sp)
997 ; ZHINX64-NEXT: lw s3, 288(sp)
998 ; ZHINX64-NEXT: lw s4, 296(sp)
999 ; ZHINX64-NEXT: lw s5, 304(sp)
1000 ; ZHINX64-NEXT: lw s6, 312(sp)
1001 ; ZHINX64-NEXT: lw s7, 320(sp)
1002 ; ZHINX64-NEXT: lw s8, 328(sp)
1003 ; ZHINX64-NEXT: lw s9, 336(sp)
1004 ; ZHINX64-NEXT: lw s10, 344(sp)
1005 ; ZHINX64-NEXT: lw s11, 352(sp)
1006 ; ZHINX64-NEXT: lw ra, 360(sp)
1007 ; ZHINX64-NEXT: lw a1, 368(sp)
1008 ; ZHINX64-NEXT: lw a2, 376(sp)
1009 ; ZHINX64-NEXT: lw a3, 384(sp)
1010 ; ZHINX64-NEXT: lw a4, 392(sp)
1011 ; ZHINX64-NEXT: sw a1, 64(sp)
1012 ; ZHINX64-NEXT: sw a2, 68(sp)
1013 ; ZHINX64-NEXT: sw a3, 72(sp)
1014 ; ZHINX64-NEXT: sw a4, 76(sp)
1015 ; ZHINX64-NEXT: sw s9, 48(sp)
1016 ; ZHINX64-NEXT: sw s10, 52(sp)
1017 ; ZHINX64-NEXT: sw s11, 56(sp)
1018 ; ZHINX64-NEXT: sw ra, 60(sp)
1019 ; ZHINX64-NEXT: sw s5, 32(sp)
1020 ; ZHINX64-NEXT: sw s6, 36(sp)
1021 ; ZHINX64-NEXT: sw s7, 40(sp)
1022 ; ZHINX64-NEXT: sw s8, 44(sp)
1023 ; ZHINX64-NEXT: sw s1, 16(sp)
1024 ; ZHINX64-NEXT: sw s2, 20(sp)
1025 ; ZHINX64-NEXT: sw s3, 24(sp)
1026 ; ZHINX64-NEXT: sw s4, 28(sp)
1027 ; ZHINX64-NEXT: sw t0, 0(sp)
1028 ; ZHINX64-NEXT: sw t1, 4(sp)
1029 ; ZHINX64-NEXT: sw t2, 8(sp)
1030 ; ZHINX64-NEXT: sw s0, 12(sp)
1031 ; ZHINX64-NEXT: mv a1, a5
1032 ; ZHINX64-NEXT: mv a2, a6
1033 ; ZHINX64-NEXT: mv a3, a7
1034 ; ZHINX64-NEXT: lw a4, 88(sp) # 4-byte Folded Reload
1035 ; ZHINX64-NEXT: lw a5, 92(sp) # 4-byte Folded Reload
1036 ; ZHINX64-NEXT: lw a6, 96(sp) # 4-byte Folded Reload
1037 ; ZHINX64-NEXT: lw a7, 100(sp) # 4-byte Folded Reload
1038 ; ZHINX64-NEXT: call callee_float_32
1039 ; ZHINX64-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
1040 ; ZHINX64-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
1041 ; ZHINX64-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
1042 ; ZHINX64-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
1043 ; ZHINX64-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
1044 ; ZHINX64-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
1045 ; ZHINX64-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
1046 ; ZHINX64-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
1047 ; ZHINX64-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
1048 ; ZHINX64-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
1049 ; ZHINX64-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
1050 ; ZHINX64-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
1051 ; ZHINX64-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
1052 ; ZHINX64-NEXT: addi sp, sp, 208
1055 ; ZFINX32-LABEL: caller_float_32:
1057 ; ZFINX32-NEXT: addi sp, sp, -160
1058 ; ZFINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
1059 ; ZFINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
1060 ; ZFINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
1061 ; ZFINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
1062 ; ZFINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
1063 ; ZFINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
1064 ; ZFINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
1065 ; ZFINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
1066 ; ZFINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
1067 ; ZFINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
1068 ; ZFINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
1069 ; ZFINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
1070 ; ZFINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
1071 ; ZFINX32-NEXT: sw a7, 104(sp) # 4-byte Folded Spill
1072 ; ZFINX32-NEXT: sw a6, 100(sp) # 4-byte Folded Spill
1073 ; ZFINX32-NEXT: sw a5, 96(sp) # 4-byte Folded Spill
1074 ; ZFINX32-NEXT: sw a4, 92(sp) # 4-byte Folded Spill
1075 ; ZFINX32-NEXT: mv a7, a3
1076 ; ZFINX32-NEXT: mv a6, a2
1077 ; ZFINX32-NEXT: mv a5, a1
1078 ; ZFINX32-NEXT: lw t3, 160(sp)
1079 ; ZFINX32-NEXT: lw t4, 164(sp)
1080 ; ZFINX32-NEXT: lw t5, 168(sp)
1081 ; ZFINX32-NEXT: lw t6, 172(sp)
1082 ; ZFINX32-NEXT: lw t0, 176(sp)
1083 ; ZFINX32-NEXT: lw t1, 180(sp)
1084 ; ZFINX32-NEXT: lw t2, 184(sp)
1085 ; ZFINX32-NEXT: lw s0, 188(sp)
1086 ; ZFINX32-NEXT: lw s1, 192(sp)
1087 ; ZFINX32-NEXT: lw s2, 196(sp)
1088 ; ZFINX32-NEXT: lw s3, 200(sp)
1089 ; ZFINX32-NEXT: lw s4, 204(sp)
1090 ; ZFINX32-NEXT: lw s5, 208(sp)
1091 ; ZFINX32-NEXT: lw s6, 212(sp)
1092 ; ZFINX32-NEXT: lw s7, 216(sp)
1093 ; ZFINX32-NEXT: lw s8, 220(sp)
1094 ; ZFINX32-NEXT: lw s9, 224(sp)
1095 ; ZFINX32-NEXT: lw s10, 228(sp)
1096 ; ZFINX32-NEXT: lw s11, 232(sp)
1097 ; ZFINX32-NEXT: lw ra, 236(sp)
1098 ; ZFINX32-NEXT: lw a1, 240(sp)
1099 ; ZFINX32-NEXT: lw a2, 244(sp)
1100 ; ZFINX32-NEXT: lw a3, 248(sp)
1101 ; ZFINX32-NEXT: lw a4, 252(sp)
1102 ; ZFINX32-NEXT: sw a1, 64(sp)
1103 ; ZFINX32-NEXT: sw a2, 68(sp)
1104 ; ZFINX32-NEXT: sw a3, 72(sp)
1105 ; ZFINX32-NEXT: sw a4, 76(sp)
1106 ; ZFINX32-NEXT: sw s9, 48(sp)
1107 ; ZFINX32-NEXT: sw s10, 52(sp)
1108 ; ZFINX32-NEXT: sw s11, 56(sp)
1109 ; ZFINX32-NEXT: sw ra, 60(sp)
1110 ; ZFINX32-NEXT: sw s5, 32(sp)
1111 ; ZFINX32-NEXT: sw s6, 36(sp)
1112 ; ZFINX32-NEXT: sw s7, 40(sp)
1113 ; ZFINX32-NEXT: sw s8, 44(sp)
1114 ; ZFINX32-NEXT: sw s1, 16(sp)
1115 ; ZFINX32-NEXT: sw s2, 20(sp)
1116 ; ZFINX32-NEXT: sw s3, 24(sp)
1117 ; ZFINX32-NEXT: sw s4, 28(sp)
1118 ; ZFINX32-NEXT: sw t0, 0(sp)
1119 ; ZFINX32-NEXT: sw t1, 4(sp)
1120 ; ZFINX32-NEXT: sw t2, 8(sp)
1121 ; ZFINX32-NEXT: sw s0, 12(sp)
1122 ; ZFINX32-NEXT: mv a1, a5
1123 ; ZFINX32-NEXT: mv a2, a6
1124 ; ZFINX32-NEXT: mv a3, a7
1125 ; ZFINX32-NEXT: lw a4, 92(sp) # 4-byte Folded Reload
1126 ; ZFINX32-NEXT: lw a5, 96(sp) # 4-byte Folded Reload
1127 ; ZFINX32-NEXT: lw a6, 100(sp) # 4-byte Folded Reload
1128 ; ZFINX32-NEXT: lw a7, 104(sp) # 4-byte Folded Reload
1129 ; ZFINX32-NEXT: call callee_float_32
1130 ; ZFINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
1131 ; ZFINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
1132 ; ZFINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
1133 ; ZFINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
1134 ; ZFINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
1135 ; ZFINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
1136 ; ZFINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
1137 ; ZFINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
1138 ; ZFINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
1139 ; ZFINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
1140 ; ZFINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
1141 ; ZFINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
1142 ; ZFINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
1143 ; ZFINX32-NEXT: addi sp, sp, 160
1146 ; ZFINX64-LABEL: caller_float_32:
1148 ; ZFINX64-NEXT: addi sp, sp, -208
1149 ; ZFINX64-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
1150 ; ZFINX64-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
1151 ; ZFINX64-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
1152 ; ZFINX64-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
1153 ; ZFINX64-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
1154 ; ZFINX64-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
1155 ; ZFINX64-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
1156 ; ZFINX64-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
1157 ; ZFINX64-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
1158 ; ZFINX64-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
1159 ; ZFINX64-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
1160 ; ZFINX64-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
1161 ; ZFINX64-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
1162 ; ZFINX64-NEXT: sw a7, 100(sp) # 4-byte Folded Spill
1163 ; ZFINX64-NEXT: sw a6, 96(sp) # 4-byte Folded Spill
1164 ; ZFINX64-NEXT: sw a5, 92(sp) # 4-byte Folded Spill
1165 ; ZFINX64-NEXT: sw a4, 88(sp) # 4-byte Folded Spill
1166 ; ZFINX64-NEXT: mv a7, a3
1167 ; ZFINX64-NEXT: mv a6, a2
1168 ; ZFINX64-NEXT: mv a5, a1
1169 ; ZFINX64-NEXT: lw t3, 208(sp)
1170 ; ZFINX64-NEXT: lw t4, 216(sp)
1171 ; ZFINX64-NEXT: lw t5, 224(sp)
1172 ; ZFINX64-NEXT: lw t6, 232(sp)
1173 ; ZFINX64-NEXT: lw t0, 240(sp)
1174 ; ZFINX64-NEXT: lw t1, 248(sp)
1175 ; ZFINX64-NEXT: lw t2, 256(sp)
1176 ; ZFINX64-NEXT: lw s0, 264(sp)
1177 ; ZFINX64-NEXT: lw s1, 272(sp)
1178 ; ZFINX64-NEXT: lw s2, 280(sp)
1179 ; ZFINX64-NEXT: lw s3, 288(sp)
1180 ; ZFINX64-NEXT: lw s4, 296(sp)
1181 ; ZFINX64-NEXT: lw s5, 304(sp)
1182 ; ZFINX64-NEXT: lw s6, 312(sp)
1183 ; ZFINX64-NEXT: lw s7, 320(sp)
1184 ; ZFINX64-NEXT: lw s8, 328(sp)
1185 ; ZFINX64-NEXT: lw s9, 336(sp)
1186 ; ZFINX64-NEXT: lw s10, 344(sp)
1187 ; ZFINX64-NEXT: lw s11, 352(sp)
1188 ; ZFINX64-NEXT: lw ra, 360(sp)
1189 ; ZFINX64-NEXT: lw a1, 368(sp)
1190 ; ZFINX64-NEXT: lw a2, 376(sp)
1191 ; ZFINX64-NEXT: lw a3, 384(sp)
1192 ; ZFINX64-NEXT: lw a4, 392(sp)
1193 ; ZFINX64-NEXT: sw a1, 64(sp)
1194 ; ZFINX64-NEXT: sw a2, 68(sp)
1195 ; ZFINX64-NEXT: sw a3, 72(sp)
1196 ; ZFINX64-NEXT: sw a4, 76(sp)
1197 ; ZFINX64-NEXT: sw s9, 48(sp)
1198 ; ZFINX64-NEXT: sw s10, 52(sp)
1199 ; ZFINX64-NEXT: sw s11, 56(sp)
1200 ; ZFINX64-NEXT: sw ra, 60(sp)
1201 ; ZFINX64-NEXT: sw s5, 32(sp)
1202 ; ZFINX64-NEXT: sw s6, 36(sp)
1203 ; ZFINX64-NEXT: sw s7, 40(sp)
1204 ; ZFINX64-NEXT: sw s8, 44(sp)
1205 ; ZFINX64-NEXT: sw s1, 16(sp)
1206 ; ZFINX64-NEXT: sw s2, 20(sp)
1207 ; ZFINX64-NEXT: sw s3, 24(sp)
1208 ; ZFINX64-NEXT: sw s4, 28(sp)
1209 ; ZFINX64-NEXT: sw t0, 0(sp)
1210 ; ZFINX64-NEXT: sw t1, 4(sp)
1211 ; ZFINX64-NEXT: sw t2, 8(sp)
1212 ; ZFINX64-NEXT: sw s0, 12(sp)
1213 ; ZFINX64-NEXT: mv a1, a5
1214 ; ZFINX64-NEXT: mv a2, a6
1215 ; ZFINX64-NEXT: mv a3, a7
1216 ; ZFINX64-NEXT: lw a4, 88(sp) # 4-byte Folded Reload
1217 ; ZFINX64-NEXT: lw a5, 92(sp) # 4-byte Folded Reload
1218 ; ZFINX64-NEXT: lw a6, 96(sp) # 4-byte Folded Reload
1219 ; ZFINX64-NEXT: lw a7, 100(sp) # 4-byte Folded Reload
1220 ; ZFINX64-NEXT: call callee_float_32
1221 ; ZFINX64-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
1222 ; ZFINX64-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
1223 ; ZFINX64-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
1224 ; ZFINX64-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
1225 ; ZFINX64-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
1226 ; ZFINX64-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
1227 ; ZFINX64-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
1228 ; ZFINX64-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
1229 ; ZFINX64-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
1230 ; ZFINX64-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
1231 ; ZFINX64-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
1232 ; ZFINX64-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
1233 ; ZFINX64-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
1234 ; ZFINX64-NEXT: addi sp, sp, 208
1237 ; ZDINX32-LABEL: caller_float_32:
1239 ; ZDINX32-NEXT: addi sp, sp, -160
1240 ; ZDINX32-NEXT: sw ra, 156(sp) # 4-byte Folded Spill
1241 ; ZDINX32-NEXT: sw s0, 152(sp) # 4-byte Folded Spill
1242 ; ZDINX32-NEXT: sw s1, 148(sp) # 4-byte Folded Spill
1243 ; ZDINX32-NEXT: sw s2, 144(sp) # 4-byte Folded Spill
1244 ; ZDINX32-NEXT: sw s3, 140(sp) # 4-byte Folded Spill
1245 ; ZDINX32-NEXT: sw s4, 136(sp) # 4-byte Folded Spill
1246 ; ZDINX32-NEXT: sw s5, 132(sp) # 4-byte Folded Spill
1247 ; ZDINX32-NEXT: sw s6, 128(sp) # 4-byte Folded Spill
1248 ; ZDINX32-NEXT: sw s7, 124(sp) # 4-byte Folded Spill
1249 ; ZDINX32-NEXT: sw s8, 120(sp) # 4-byte Folded Spill
1250 ; ZDINX32-NEXT: sw s9, 116(sp) # 4-byte Folded Spill
1251 ; ZDINX32-NEXT: sw s10, 112(sp) # 4-byte Folded Spill
1252 ; ZDINX32-NEXT: sw s11, 108(sp) # 4-byte Folded Spill
1253 ; ZDINX32-NEXT: sw a7, 104(sp) # 4-byte Folded Spill
1254 ; ZDINX32-NEXT: sw a6, 100(sp) # 4-byte Folded Spill
1255 ; ZDINX32-NEXT: sw a5, 96(sp) # 4-byte Folded Spill
1256 ; ZDINX32-NEXT: sw a4, 92(sp) # 4-byte Folded Spill
1257 ; ZDINX32-NEXT: mv a7, a3
1258 ; ZDINX32-NEXT: mv a6, a2
1259 ; ZDINX32-NEXT: mv a5, a1
1260 ; ZDINX32-NEXT: lw t3, 160(sp)
1261 ; ZDINX32-NEXT: lw t4, 164(sp)
1262 ; ZDINX32-NEXT: lw t5, 168(sp)
1263 ; ZDINX32-NEXT: lw t6, 172(sp)
1264 ; ZDINX32-NEXT: lw t0, 176(sp)
1265 ; ZDINX32-NEXT: lw t1, 180(sp)
1266 ; ZDINX32-NEXT: lw t2, 184(sp)
1267 ; ZDINX32-NEXT: lw s0, 188(sp)
1268 ; ZDINX32-NEXT: lw s1, 192(sp)
1269 ; ZDINX32-NEXT: lw s2, 196(sp)
1270 ; ZDINX32-NEXT: lw s3, 200(sp)
1271 ; ZDINX32-NEXT: lw s4, 204(sp)
1272 ; ZDINX32-NEXT: lw s5, 208(sp)
1273 ; ZDINX32-NEXT: lw s6, 212(sp)
1274 ; ZDINX32-NEXT: lw s7, 216(sp)
1275 ; ZDINX32-NEXT: lw s8, 220(sp)
1276 ; ZDINX32-NEXT: lw s9, 224(sp)
1277 ; ZDINX32-NEXT: lw s10, 228(sp)
1278 ; ZDINX32-NEXT: lw s11, 232(sp)
1279 ; ZDINX32-NEXT: lw ra, 236(sp)
1280 ; ZDINX32-NEXT: lw a1, 240(sp)
1281 ; ZDINX32-NEXT: lw a2, 244(sp)
1282 ; ZDINX32-NEXT: lw a3, 248(sp)
1283 ; ZDINX32-NEXT: lw a4, 252(sp)
1284 ; ZDINX32-NEXT: sw a1, 64(sp)
1285 ; ZDINX32-NEXT: sw a2, 68(sp)
1286 ; ZDINX32-NEXT: sw a3, 72(sp)
1287 ; ZDINX32-NEXT: sw a4, 76(sp)
1288 ; ZDINX32-NEXT: sw s9, 48(sp)
1289 ; ZDINX32-NEXT: sw s10, 52(sp)
1290 ; ZDINX32-NEXT: sw s11, 56(sp)
1291 ; ZDINX32-NEXT: sw ra, 60(sp)
1292 ; ZDINX32-NEXT: sw s5, 32(sp)
1293 ; ZDINX32-NEXT: sw s6, 36(sp)
1294 ; ZDINX32-NEXT: sw s7, 40(sp)
1295 ; ZDINX32-NEXT: sw s8, 44(sp)
1296 ; ZDINX32-NEXT: sw s1, 16(sp)
1297 ; ZDINX32-NEXT: sw s2, 20(sp)
1298 ; ZDINX32-NEXT: sw s3, 24(sp)
1299 ; ZDINX32-NEXT: sw s4, 28(sp)
1300 ; ZDINX32-NEXT: sw t0, 0(sp)
1301 ; ZDINX32-NEXT: sw t1, 4(sp)
1302 ; ZDINX32-NEXT: sw t2, 8(sp)
1303 ; ZDINX32-NEXT: sw s0, 12(sp)
1304 ; ZDINX32-NEXT: mv a1, a5
1305 ; ZDINX32-NEXT: mv a2, a6
1306 ; ZDINX32-NEXT: mv a3, a7
1307 ; ZDINX32-NEXT: lw a4, 92(sp) # 4-byte Folded Reload
1308 ; ZDINX32-NEXT: lw a5, 96(sp) # 4-byte Folded Reload
1309 ; ZDINX32-NEXT: lw a6, 100(sp) # 4-byte Folded Reload
1310 ; ZDINX32-NEXT: lw a7, 104(sp) # 4-byte Folded Reload
1311 ; ZDINX32-NEXT: call callee_float_32
1312 ; ZDINX32-NEXT: lw ra, 156(sp) # 4-byte Folded Reload
1313 ; ZDINX32-NEXT: lw s0, 152(sp) # 4-byte Folded Reload
1314 ; ZDINX32-NEXT: lw s1, 148(sp) # 4-byte Folded Reload
1315 ; ZDINX32-NEXT: lw s2, 144(sp) # 4-byte Folded Reload
1316 ; ZDINX32-NEXT: lw s3, 140(sp) # 4-byte Folded Reload
1317 ; ZDINX32-NEXT: lw s4, 136(sp) # 4-byte Folded Reload
1318 ; ZDINX32-NEXT: lw s5, 132(sp) # 4-byte Folded Reload
1319 ; ZDINX32-NEXT: lw s6, 128(sp) # 4-byte Folded Reload
1320 ; ZDINX32-NEXT: lw s7, 124(sp) # 4-byte Folded Reload
1321 ; ZDINX32-NEXT: lw s8, 120(sp) # 4-byte Folded Reload
1322 ; ZDINX32-NEXT: lw s9, 116(sp) # 4-byte Folded Reload
1323 ; ZDINX32-NEXT: lw s10, 112(sp) # 4-byte Folded Reload
1324 ; ZDINX32-NEXT: lw s11, 108(sp) # 4-byte Folded Reload
1325 ; ZDINX32-NEXT: addi sp, sp, 160
1328 ; ZDINX64-LABEL: caller_float_32:
1330 ; ZDINX64-NEXT: addi sp, sp, -208
1331 ; ZDINX64-NEXT: sd ra, 200(sp) # 8-byte Folded Spill
1332 ; ZDINX64-NEXT: sd s0, 192(sp) # 8-byte Folded Spill
1333 ; ZDINX64-NEXT: sd s1, 184(sp) # 8-byte Folded Spill
1334 ; ZDINX64-NEXT: sd s2, 176(sp) # 8-byte Folded Spill
1335 ; ZDINX64-NEXT: sd s3, 168(sp) # 8-byte Folded Spill
1336 ; ZDINX64-NEXT: sd s4, 160(sp) # 8-byte Folded Spill
1337 ; ZDINX64-NEXT: sd s5, 152(sp) # 8-byte Folded Spill
1338 ; ZDINX64-NEXT: sd s6, 144(sp) # 8-byte Folded Spill
1339 ; ZDINX64-NEXT: sd s7, 136(sp) # 8-byte Folded Spill
1340 ; ZDINX64-NEXT: sd s8, 128(sp) # 8-byte Folded Spill
1341 ; ZDINX64-NEXT: sd s9, 120(sp) # 8-byte Folded Spill
1342 ; ZDINX64-NEXT: sd s10, 112(sp) # 8-byte Folded Spill
1343 ; ZDINX64-NEXT: sd s11, 104(sp) # 8-byte Folded Spill
1344 ; ZDINX64-NEXT: sw a7, 100(sp) # 4-byte Folded Spill
1345 ; ZDINX64-NEXT: sw a6, 96(sp) # 4-byte Folded Spill
1346 ; ZDINX64-NEXT: sw a5, 92(sp) # 4-byte Folded Spill
1347 ; ZDINX64-NEXT: sw a4, 88(sp) # 4-byte Folded Spill
1348 ; ZDINX64-NEXT: mv a7, a3
1349 ; ZDINX64-NEXT: mv a6, a2
1350 ; ZDINX64-NEXT: mv a5, a1
1351 ; ZDINX64-NEXT: lw t3, 208(sp)
1352 ; ZDINX64-NEXT: lw t4, 216(sp)
1353 ; ZDINX64-NEXT: lw t5, 224(sp)
1354 ; ZDINX64-NEXT: lw t6, 232(sp)
1355 ; ZDINX64-NEXT: lw t0, 240(sp)
1356 ; ZDINX64-NEXT: lw t1, 248(sp)
1357 ; ZDINX64-NEXT: lw t2, 256(sp)
1358 ; ZDINX64-NEXT: lw s0, 264(sp)
1359 ; ZDINX64-NEXT: lw s1, 272(sp)
1360 ; ZDINX64-NEXT: lw s2, 280(sp)
1361 ; ZDINX64-NEXT: lw s3, 288(sp)
1362 ; ZDINX64-NEXT: lw s4, 296(sp)
1363 ; ZDINX64-NEXT: lw s5, 304(sp)
1364 ; ZDINX64-NEXT: lw s6, 312(sp)
1365 ; ZDINX64-NEXT: lw s7, 320(sp)
1366 ; ZDINX64-NEXT: lw s8, 328(sp)
1367 ; ZDINX64-NEXT: lw s9, 336(sp)
1368 ; ZDINX64-NEXT: lw s10, 344(sp)
1369 ; ZDINX64-NEXT: lw s11, 352(sp)
1370 ; ZDINX64-NEXT: lw ra, 360(sp)
1371 ; ZDINX64-NEXT: lw a1, 368(sp)
1372 ; ZDINX64-NEXT: lw a2, 376(sp)
1373 ; ZDINX64-NEXT: lw a3, 384(sp)
1374 ; ZDINX64-NEXT: lw a4, 392(sp)
1375 ; ZDINX64-NEXT: sw a1, 64(sp)
1376 ; ZDINX64-NEXT: sw a2, 68(sp)
1377 ; ZDINX64-NEXT: sw a3, 72(sp)
1378 ; ZDINX64-NEXT: sw a4, 76(sp)
1379 ; ZDINX64-NEXT: sw s9, 48(sp)
1380 ; ZDINX64-NEXT: sw s10, 52(sp)
1381 ; ZDINX64-NEXT: sw s11, 56(sp)
1382 ; ZDINX64-NEXT: sw ra, 60(sp)
1383 ; ZDINX64-NEXT: sw s5, 32(sp)
1384 ; ZDINX64-NEXT: sw s6, 36(sp)
1385 ; ZDINX64-NEXT: sw s7, 40(sp)
1386 ; ZDINX64-NEXT: sw s8, 44(sp)
1387 ; ZDINX64-NEXT: sw s1, 16(sp)
1388 ; ZDINX64-NEXT: sw s2, 20(sp)
1389 ; ZDINX64-NEXT: sw s3, 24(sp)
1390 ; ZDINX64-NEXT: sw s4, 28(sp)
1391 ; ZDINX64-NEXT: sw t0, 0(sp)
1392 ; ZDINX64-NEXT: sw t1, 4(sp)
1393 ; ZDINX64-NEXT: sw t2, 8(sp)
1394 ; ZDINX64-NEXT: sw s0, 12(sp)
1395 ; ZDINX64-NEXT: mv a1, a5
1396 ; ZDINX64-NEXT: mv a2, a6
1397 ; ZDINX64-NEXT: mv a3, a7
1398 ; ZDINX64-NEXT: lw a4, 88(sp) # 4-byte Folded Reload
1399 ; ZDINX64-NEXT: lw a5, 92(sp) # 4-byte Folded Reload
1400 ; ZDINX64-NEXT: lw a6, 96(sp) # 4-byte Folded Reload
1401 ; ZDINX64-NEXT: lw a7, 100(sp) # 4-byte Folded Reload
1402 ; ZDINX64-NEXT: call callee_float_32
1403 ; ZDINX64-NEXT: ld ra, 200(sp) # 8-byte Folded Reload
1404 ; ZDINX64-NEXT: ld s0, 192(sp) # 8-byte Folded Reload
1405 ; ZDINX64-NEXT: ld s1, 184(sp) # 8-byte Folded Reload
1406 ; ZDINX64-NEXT: ld s2, 176(sp) # 8-byte Folded Reload
1407 ; ZDINX64-NEXT: ld s3, 168(sp) # 8-byte Folded Reload
1408 ; ZDINX64-NEXT: ld s4, 160(sp) # 8-byte Folded Reload
1409 ; ZDINX64-NEXT: ld s5, 152(sp) # 8-byte Folded Reload
1410 ; ZDINX64-NEXT: ld s6, 144(sp) # 8-byte Folded Reload
1411 ; ZDINX64-NEXT: ld s7, 136(sp) # 8-byte Folded Reload
1412 ; ZDINX64-NEXT: ld s8, 128(sp) # 8-byte Folded Reload
1413 ; ZDINX64-NEXT: ld s9, 120(sp) # 8-byte Folded Reload
1414 ; ZDINX64-NEXT: ld s10, 112(sp) # 8-byte Folded Reload
1415 ; ZDINX64-NEXT: ld s11, 104(sp) # 8-byte Folded Reload
1416 ; ZDINX64-NEXT: addi sp, sp, 208
1418 %C = call fastcc float @callee_float_32(<32 x float> %A)
1422 define fastcc double @callee_double_32(<32 x double> %A) nounwind {
1423 ; ZHINX32-LABEL: callee_double_32:
1427 ; ZHINX64-LABEL: callee_double_32:
1431 ; ZFINX32-LABEL: callee_double_32:
1435 ; ZFINX64-LABEL: callee_double_32:
1439 ; ZDINX32-LABEL: callee_double_32:
1441 ; ZDINX32-NEXT: lw a0, 0(sp)
1442 ; ZDINX32-NEXT: lw a1, 4(sp)
1445 ; ZDINX64-LABEL: callee_double_32:
1448 %B = extractelement <32 x double> %A, i32 0