xref: /llvm-project/llvm/test/CodeGen/RISCV/fastcc-without-f-reg.ll (revision 9122c5235ec85ce0c0ad337e862b006e7b349d84)
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
14
15define half @caller_half(half %x) nounwind {
16; ZHINX32-LABEL: caller_half:
17; ZHINX32:       # %bb.0: # %entry
18; ZHINX32-NEXT:    tail h
19;
20; ZHINX64-LABEL: caller_half:
21; ZHINX64:       # %bb.0: # %entry
22; ZHINX64-NEXT:    tail h
23;
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
31;
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
39;
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
47;
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
55entry:
56  %0 = tail call fastcc half @h(half %x)
57  ret half %0
58}
59
60define internal fastcc half @h(half %x) nounwind {
61; ZHINX32-LABEL: h:
62; ZHINX32:       # %bb.0:
63; ZHINX32-NEXT:    ret
64;
65; ZHINX64-LABEL: h:
66; ZHINX64:       # %bb.0:
67; ZHINX64-NEXT:    ret
68;
69; ZFINX32-LABEL: h:
70; ZFINX32:       # %bb.0:
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
75; ZFINX32-NEXT:    ret
76;
77; ZFINX64-LABEL: h:
78; ZFINX64:       # %bb.0:
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
83; ZFINX64-NEXT:    ret
84;
85; ZDINX32-LABEL: h:
86; ZDINX32:       # %bb.0:
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
91; ZDINX32-NEXT:    ret
92;
93; ZDINX64-LABEL: h:
94; ZDINX64:       # %bb.0:
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
99; ZDINX64-NEXT:    ret
100  ret half %x
101}
102
103define float @caller_float(float %x) nounwind {
104; ZHINX32-LABEL: caller_float:
105; ZHINX32:       # %bb.0: # %entry
106; ZHINX32-NEXT:    tail f
107;
108; ZHINX64-LABEL: caller_float:
109; ZHINX64:       # %bb.0: # %entry
110; ZHINX64-NEXT:    tail f
111;
112; ZFINX32-LABEL: caller_float:
113; ZFINX32:       # %bb.0: # %entry
114; ZFINX32-NEXT:    tail f
115;
116; ZFINX64-LABEL: caller_float:
117; ZFINX64:       # %bb.0: # %entry
118; ZFINX64-NEXT:    tail f
119;
120; ZDINX32-LABEL: caller_float:
121; ZDINX32:       # %bb.0: # %entry
122; ZDINX32-NEXT:    tail f
123;
124; ZDINX64-LABEL: caller_float:
125; ZDINX64:       # %bb.0: # %entry
126; ZDINX64-NEXT:    tail f
127entry:
128  %0 = tail call fastcc float @f(float %x)
129  ret float %0
130}
131
132define internal fastcc float @f(float %x) nounwind {
133; ZHINX32-LABEL: f:
134; ZHINX32:       # %bb.0: # %entry
135; ZHINX32-NEXT:    ret
136;
137; ZHINX64-LABEL: f:
138; ZHINX64:       # %bb.0: # %entry
139; ZHINX64-NEXT:    ret
140;
141; ZFINX32-LABEL: f:
142; ZFINX32:       # %bb.0: # %entry
143; ZFINX32-NEXT:    ret
144;
145; ZFINX64-LABEL: f:
146; ZFINX64:       # %bb.0: # %entry
147; ZFINX64-NEXT:    ret
148;
149; ZDINX32-LABEL: f:
150; ZDINX32:       # %bb.0: # %entry
151; ZDINX32-NEXT:    ret
152;
153; ZDINX64-LABEL: f:
154; ZDINX64:       # %bb.0: # %entry
155; ZDINX64-NEXT:    ret
156entry:
157  ret float %x
158}
159
160define double @caller_double(double %x) nounwind {
161; ZHINX32-LABEL: caller_double:
162; ZHINX32:       # %bb.0: # %entry
163; ZHINX32-NEXT:    tail d
164;
165; ZHINX64-LABEL: caller_double:
166; ZHINX64:       # %bb.0: # %entry
167; ZHINX64-NEXT:    tail d
168;
169; ZFINX32-LABEL: caller_double:
170; ZFINX32:       # %bb.0: # %entry
171; ZFINX32-NEXT:    tail d
172;
173; ZFINX64-LABEL: caller_double:
174; ZFINX64:       # %bb.0: # %entry
175; ZFINX64-NEXT:    tail d
176;
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
186; ZDINX32-NEXT:    ret
187;
188; ZDINX64-LABEL: caller_double:
189; ZDINX64:       # %bb.0: # %entry
190; ZDINX64-NEXT:    tail d
191entry:
192  %0 = tail call fastcc double @d(double %x)
193  ret double %0
194}
195
196define internal fastcc double @d(double %x) nounwind {
197; ZHINX32-LABEL: d:
198; ZHINX32:       # %bb.0: # %entry
199; ZHINX32-NEXT:    ret
200;
201; ZHINX64-LABEL: d:
202; ZHINX64:       # %bb.0: # %entry
203; ZHINX64-NEXT:    ret
204;
205; ZFINX32-LABEL: d:
206; ZFINX32:       # %bb.0: # %entry
207; ZFINX32-NEXT:    ret
208;
209; ZFINX64-LABEL: d:
210; ZFINX64:       # %bb.0: # %entry
211; ZFINX64-NEXT:    ret
212;
213; ZDINX32-LABEL: d:
214; ZDINX32:       # %bb.0: # %entry
215; ZDINX32-NEXT:    lw a0, 0(sp)
216; ZDINX32-NEXT:    lw a1, 4(sp)
217; ZDINX32-NEXT:    ret
218;
219; ZDINX64-LABEL: d:
220; ZDINX64:       # %bb.0: # %entry
221; ZDINX64-NEXT:    ret
222entry:
223  ret double %x
224}
225
226define fastcc half @callee_half_32(<32 x half> %A) nounwind {
227; ZHINX32-LABEL: callee_half_32:
228; ZHINX32:       # %bb.0:
229; ZHINX32-NEXT:    ret
230;
231; ZHINX64-LABEL: callee_half_32:
232; ZHINX64:       # %bb.0:
233; ZHINX64-NEXT:    ret
234;
235; ZFINX32-LABEL: callee_half_32:
236; ZFINX32:       # %bb.0:
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
240; ZFINX32-NEXT:    ret
241;
242; ZFINX64-LABEL: callee_half_32:
243; ZFINX64:       # %bb.0:
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
247; ZFINX64-NEXT:    ret
248;
249; ZDINX32-LABEL: callee_half_32:
250; ZDINX32:       # %bb.0:
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
254; ZDINX32-NEXT:    ret
255;
256; ZDINX64-LABEL: callee_half_32:
257; ZDINX64:       # %bb.0:
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
261; ZDINX64-NEXT:    ret
262	%B = extractelement <32 x half> %A, i32 0
263	ret half %B
264}
265
266define half @caller_half_32(<32 x half> %A) nounwind {
267; ZHINX32-LABEL: caller_half_32:
268; ZHINX32:       # %bb.0:
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
356; ZHINX32-NEXT:    ret
357;
358; ZHINX64-LABEL: caller_half_32:
359; ZHINX64:       # %bb.0:
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
447; ZHINX64-NEXT:    ret
448;
449; ZFINX32-LABEL: caller_half_32:
450; ZFINX32:       # %bb.0:
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
545; ZFINX32-NEXT:    ret
546;
547; ZFINX64-LABEL: caller_half_32:
548; ZFINX64:       # %bb.0:
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
643; ZFINX64-NEXT:    ret
644;
645; ZDINX32-LABEL: caller_half_32:
646; ZDINX32:       # %bb.0:
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
741; ZDINX32-NEXT:    ret
742;
743; ZDINX64-LABEL: caller_half_32:
744; ZDINX64:       # %bb.0:
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
839; ZDINX64-NEXT:    ret
840	%C = call fastcc half @callee_half_32(<32 x half> %A)
841	ret half %C
842}
843
844define fastcc float @callee_float_32(<32 x float> %A) nounwind {
845; ZHINX32-LABEL: callee_float_32:
846; ZHINX32:       # %bb.0:
847; ZHINX32-NEXT:    ret
848;
849; ZHINX64-LABEL: callee_float_32:
850; ZHINX64:       # %bb.0:
851; ZHINX64-NEXT:    ret
852;
853; ZFINX32-LABEL: callee_float_32:
854; ZFINX32:       # %bb.0:
855; ZFINX32-NEXT:    ret
856;
857; ZFINX64-LABEL: callee_float_32:
858; ZFINX64:       # %bb.0:
859; ZFINX64-NEXT:    ret
860;
861; ZDINX32-LABEL: callee_float_32:
862; ZDINX32:       # %bb.0:
863; ZDINX32-NEXT:    ret
864;
865; ZDINX64-LABEL: callee_float_32:
866; ZDINX64:       # %bb.0:
867; ZDINX64-NEXT:    ret
868	%B = extractelement <32 x float> %A, i32 0
869	ret float %B
870}
871
872define float @caller_float_32(<32 x float> %A) nounwind {
873; ZHINX32-LABEL: caller_float_32:
874; ZHINX32:       # %bb.0:
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
962; ZHINX32-NEXT:    ret
963;
964; ZHINX64-LABEL: caller_float_32:
965; ZHINX64:       # %bb.0:
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
1053; ZHINX64-NEXT:    ret
1054;
1055; ZFINX32-LABEL: caller_float_32:
1056; ZFINX32:       # %bb.0:
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
1144; ZFINX32-NEXT:    ret
1145;
1146; ZFINX64-LABEL: caller_float_32:
1147; ZFINX64:       # %bb.0:
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
1235; ZFINX64-NEXT:    ret
1236;
1237; ZDINX32-LABEL: caller_float_32:
1238; ZDINX32:       # %bb.0:
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
1326; ZDINX32-NEXT:    ret
1327;
1328; ZDINX64-LABEL: caller_float_32:
1329; ZDINX64:       # %bb.0:
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
1417; ZDINX64-NEXT:    ret
1418	%C = call fastcc float @callee_float_32(<32 x float> %A)
1419	ret float %C
1420}
1421
1422define fastcc double @callee_double_32(<32 x double> %A) nounwind {
1423; ZHINX32-LABEL: callee_double_32:
1424; ZHINX32:       # %bb.0:
1425; ZHINX32-NEXT:    ret
1426;
1427; ZHINX64-LABEL: callee_double_32:
1428; ZHINX64:       # %bb.0:
1429; ZHINX64-NEXT:    ret
1430;
1431; ZFINX32-LABEL: callee_double_32:
1432; ZFINX32:       # %bb.0:
1433; ZFINX32-NEXT:    ret
1434;
1435; ZFINX64-LABEL: callee_double_32:
1436; ZFINX64:       # %bb.0:
1437; ZFINX64-NEXT:    ret
1438;
1439; ZDINX32-LABEL: callee_double_32:
1440; ZDINX32:       # %bb.0:
1441; ZDINX32-NEXT:    lw a0, 0(sp)
1442; ZDINX32-NEXT:    lw a1, 4(sp)
1443; ZDINX32-NEXT:    ret
1444;
1445; ZDINX64-LABEL: callee_double_32:
1446; ZDINX64:       # %bb.0:
1447; ZDINX64-NEXT:    ret
1448	%B = extractelement <32 x double> %A, i32 0
1449	ret double %B
1450}
1451