xref: /llvm-project/llvm/test/CodeGen/PowerPC/save-reg-params.ll (revision 53c37f300dd1b450671f2aee4cc649c380adb5ad)
1*20957d20SQiu Chaofan; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2*20957d20SQiu Chaofan; RUN: llc -verify-machineinstrs -mtriple=powerpc-ibm-aix -mcpu=pwr7 < %s | FileCheck %s -check-prefix=32BIT
3*20957d20SQiu Chaofan; RUN: llc -verify-machineinstrs -mtriple=powerpc64-ibm-aix -mcpu=pwr7 < %s | FileCheck %s -check-prefix=64BIT
4*20957d20SQiu Chaofan
5*20957d20SQiu Chaofandefine void @i64_join(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f, i64 %g, i64 %h, i64 %i, i64 %j) #0 {
6*20957d20SQiu Chaofan; 32BIT-LABEL: i64_join:
7*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
8*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
9*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
10*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
11*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 116(1)
12*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 112(1)
13*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 108(1)
14*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 104(1)
15*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 100(1)
16*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 96(1)
17*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 4, 92(1)
18*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 3, 88(1)
19*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
20*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
21*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
22*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
23*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
24*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
25*20957d20SQiu Chaofan;
26*20957d20SQiu Chaofan; 64BIT-LABEL: i64_join:
27*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
28*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
29*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
30*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
31*20957d20SQiu Chaofan; 64BIT-NEXT:    std 10, 216(1)
32*20957d20SQiu Chaofan; 64BIT-NEXT:    std 9, 208(1)
33*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 200(1)
34*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 192(1)
35*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 184(1)
36*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 176(1)
37*20957d20SQiu Chaofan; 64BIT-NEXT:    std 4, 168(1)
38*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 160(1)
39*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
40*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
41*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
42*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
43*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
44*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
45*20957d20SQiu Chaofanentry:
46*20957d20SQiu Chaofan  %add = add nsw i64 %b, %a
47*20957d20SQiu Chaofan  %add1 = add nsw i64 %add, %c
48*20957d20SQiu Chaofan  %add2 = add nsw i64 %add1, %d
49*20957d20SQiu Chaofan  %add3 = add nsw i64 %add2, %e
50*20957d20SQiu Chaofan  %add4 = add nsw i64 %add3, %f
51*20957d20SQiu Chaofan  %add5 = add nsw i64 %add4, %g
52*20957d20SQiu Chaofan  %add6 = add nsw i64 %add5, %h
53*20957d20SQiu Chaofan  %add7 = add nsw i64 %add6, %i
54*20957d20SQiu Chaofan  %add8 = add nsw i64 %add7, %j
55*20957d20SQiu Chaofan  tail call void @foo()
56*20957d20SQiu Chaofan  ret void
57*20957d20SQiu Chaofan}
58*20957d20SQiu Chaofan
59*20957d20SQiu Chaofandefine void @i64_join_missing(i64 %a, i64 %b, i64 %c, i64 %d, i64 %e, i64 %f, i64 %g, i64 %h, i64 %i, i64 %j) #0 {
60*20957d20SQiu Chaofan; 32BIT-LABEL: i64_join_missing:
61*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
62*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
63*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
64*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
65*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 116(1)
66*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 112(1)
67*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 108(1)
68*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 104(1)
69*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 100(1)
70*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 96(1)
71*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 4, 92(1)
72*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 3, 88(1)
73*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
74*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
75*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
76*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
77*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
78*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
79*20957d20SQiu Chaofan;
80*20957d20SQiu Chaofan; 64BIT-LABEL: i64_join_missing:
81*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
82*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
83*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
84*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
85*20957d20SQiu Chaofan; 64BIT-NEXT:    std 10, 216(1)
86*20957d20SQiu Chaofan; 64BIT-NEXT:    std 9, 208(1)
87*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 200(1)
88*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 192(1)
89*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 184(1)
90*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 176(1)
91*20957d20SQiu Chaofan; 64BIT-NEXT:    std 4, 168(1)
92*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 160(1)
93*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
94*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
95*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
96*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
97*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
98*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
99*20957d20SQiu Chaofanentry:
100*20957d20SQiu Chaofan  %add1 = mul nsw i64 %a, 3
101*20957d20SQiu Chaofan  %add2 = add nsw i64 %add1, %d
102*20957d20SQiu Chaofan  %add3 = add nsw i64 %add2, %e
103*20957d20SQiu Chaofan  %add4 = add nsw i64 %add3, %f
104*20957d20SQiu Chaofan  %add5 = add nsw i64 %add4, %g
105*20957d20SQiu Chaofan  %add6 = add nsw i64 %add5, %h
106*20957d20SQiu Chaofan  %add7 = add nsw i64 %add6, %i
107*20957d20SQiu Chaofan  %add8 = add nsw i64 %add7, %j
108*20957d20SQiu Chaofan  tail call void @foo()
109*20957d20SQiu Chaofan  ret void
110*20957d20SQiu Chaofan}
111*20957d20SQiu Chaofan
112*20957d20SQiu Chaofandefine void @i32_join(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h, i32 signext %i, i32 signext %j) #0 {
113*20957d20SQiu Chaofan; 32BIT-LABEL: i32_join:
114*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
115*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
116*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
117*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
118*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 116(1)
119*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 112(1)
120*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 108(1)
121*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 104(1)
122*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 100(1)
123*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 96(1)
124*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 4, 92(1)
125*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 3, 88(1)
126*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
127*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
128*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
129*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
130*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
131*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
132*20957d20SQiu Chaofan;
133*20957d20SQiu Chaofan; 64BIT-LABEL: i32_join:
134*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
135*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
136*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
137*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
138*20957d20SQiu Chaofan; 64BIT-NEXT:    std 10, 216(1)
139*20957d20SQiu Chaofan; 64BIT-NEXT:    std 9, 208(1)
140*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 200(1)
141*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 192(1)
142*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 184(1)
143*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 176(1)
144*20957d20SQiu Chaofan; 64BIT-NEXT:    std 4, 168(1)
145*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 160(1)
146*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
147*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
148*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
149*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
150*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
151*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
152*20957d20SQiu Chaofanentry:
153*20957d20SQiu Chaofan  %add = add nsw i32 %b, %a
154*20957d20SQiu Chaofan  %add1 = add nsw i32 %add, %c
155*20957d20SQiu Chaofan  %add2 = add nsw i32 %add1, %d
156*20957d20SQiu Chaofan  %add3 = add nsw i32 %add2, %e
157*20957d20SQiu Chaofan  %add4 = add nsw i32 %add3, %f
158*20957d20SQiu Chaofan  %add5 = add nsw i32 %add4, %g
159*20957d20SQiu Chaofan  %add6 = add nsw i32 %add5, %h
160*20957d20SQiu Chaofan  %add7 = add nsw i32 %add6, %i
161*20957d20SQiu Chaofan  %add8 = add nsw i32 %add7, %j
162*20957d20SQiu Chaofan  tail call void @foo()
163*20957d20SQiu Chaofan  ret void
164*20957d20SQiu Chaofan}
165*20957d20SQiu Chaofan
166*20957d20SQiu Chaofandefine void @i32_join_missing(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e, i32 signext %f, i32 signext %g, i32 signext %h, i32 signext %i, i32 signext %j) #0 {
167*20957d20SQiu Chaofan; 32BIT-LABEL: i32_join_missing:
168*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
169*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
170*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
171*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
172*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 116(1)
173*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 112(1)
174*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 108(1)
175*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 104(1)
176*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 100(1)
177*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 96(1)
178*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 4, 92(1)
179*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 3, 88(1)
180*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
181*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
182*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
183*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
184*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
185*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
186*20957d20SQiu Chaofan;
187*20957d20SQiu Chaofan; 64BIT-LABEL: i32_join_missing:
188*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
189*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
190*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
191*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
192*20957d20SQiu Chaofan; 64BIT-NEXT:    std 10, 216(1)
193*20957d20SQiu Chaofan; 64BIT-NEXT:    std 9, 208(1)
194*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 200(1)
195*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 192(1)
196*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 184(1)
197*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 176(1)
198*20957d20SQiu Chaofan; 64BIT-NEXT:    std 4, 168(1)
199*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 160(1)
200*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
201*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
202*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
203*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
204*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
205*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
206*20957d20SQiu Chaofanentry:
207*20957d20SQiu Chaofan  %add1 = mul nsw i32 %a, 3
208*20957d20SQiu Chaofan  %add2 = add nsw i32 %add1, %d
209*20957d20SQiu Chaofan  %add3 = add nsw i32 %add2, %e
210*20957d20SQiu Chaofan  %add4 = add nsw i32 %add3, %f
211*20957d20SQiu Chaofan  %add5 = add nsw i32 %add4, %g
212*20957d20SQiu Chaofan  %add6 = add nsw i32 %add5, %h
213*20957d20SQiu Chaofan  %add7 = add nsw i32 %add6, %i
214*20957d20SQiu Chaofan  %add8 = add nsw i32 %add7, %j
215*20957d20SQiu Chaofan  tail call void @foo()
216*20957d20SQiu Chaofan  ret void
217*20957d20SQiu Chaofan}
218*20957d20SQiu Chaofan
219*20957d20SQiu Chaofandefine void @f32_join(float %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h, float %i, float %j) #0 {
220*20957d20SQiu Chaofan; 32BIT-LABEL: f32_join:
221*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
222*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
223*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
224*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
225*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 10, 124(1)
226*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 9, 120(1)
227*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 8, 116(1)
228*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 7, 112(1)
229*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 6, 108(1)
230*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 5, 104(1)
231*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 4, 100(1)
232*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 3, 96(1)
233*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 2, 92(1)
234*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 1, 88(1)
235*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
236*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
237*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
238*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
239*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
240*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
241*20957d20SQiu Chaofan;
242*20957d20SQiu Chaofan; 64BIT-LABEL: f32_join:
243*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
244*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
245*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
246*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
247*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 10, 232(1)
248*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 9, 224(1)
249*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 8, 216(1)
250*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 7, 208(1)
251*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 6, 200(1)
252*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 5, 192(1)
253*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 4, 184(1)
254*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 3, 176(1)
255*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 2, 168(1)
256*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 1, 160(1)
257*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
258*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
259*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
260*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
261*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
262*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
263*20957d20SQiu Chaofanentry:
264*20957d20SQiu Chaofan  %add = fadd float %a, %b
265*20957d20SQiu Chaofan  %add1 = fadd float %add, %c
266*20957d20SQiu Chaofan  %add2 = fadd float %add1, %d
267*20957d20SQiu Chaofan  %add3 = fadd float %add2, %e
268*20957d20SQiu Chaofan  %add4 = fadd float %add3, %f
269*20957d20SQiu Chaofan  %add5 = fadd float %add4, %g
270*20957d20SQiu Chaofan  %add6 = fadd float %add5, %h
271*20957d20SQiu Chaofan  %add7 = fadd float %add6, %i
272*20957d20SQiu Chaofan  %add8 = fadd float %add7, %j
273*20957d20SQiu Chaofan  tail call void @foo()
274*20957d20SQiu Chaofan  ret void
275*20957d20SQiu Chaofan}
276*20957d20SQiu Chaofan
277*20957d20SQiu Chaofandefine void @f32_join_missing(float %a, float %b, float %c, float %d, float %e, float %f, float %g, float %h, float %i, float %j) #0 {
278*20957d20SQiu Chaofan; 32BIT-LABEL: f32_join_missing:
279*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
280*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
281*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
282*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
283*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 10, 124(1)
284*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 9, 120(1)
285*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 8, 116(1)
286*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 7, 112(1)
287*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 6, 108(1)
288*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 5, 104(1)
289*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 4, 100(1)
290*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 3, 96(1)
291*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 2, 92(1)
292*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 1, 88(1)
293*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
294*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
295*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
296*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
297*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
298*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
299*20957d20SQiu Chaofan;
300*20957d20SQiu Chaofan; 64BIT-LABEL: f32_join_missing:
301*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
302*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
303*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
304*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
305*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 10, 232(1)
306*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 9, 224(1)
307*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 8, 216(1)
308*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 7, 208(1)
309*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 6, 200(1)
310*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 5, 192(1)
311*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 4, 184(1)
312*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 3, 176(1)
313*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 2, 168(1)
314*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 1, 160(1)
315*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
316*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
317*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
318*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
319*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
320*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
321*20957d20SQiu Chaofanentry:
322*20957d20SQiu Chaofan  %add = fadd float %a, %a
323*20957d20SQiu Chaofan  %add1 = fadd float %add, %a
324*20957d20SQiu Chaofan  %add2 = fadd float %add1, %d
325*20957d20SQiu Chaofan  %add3 = fadd float %add2, %e
326*20957d20SQiu Chaofan  %add4 = fadd float %add3, %f
327*20957d20SQiu Chaofan  %add5 = fadd float %add4, %g
328*20957d20SQiu Chaofan  %add6 = fadd float %add5, %h
329*20957d20SQiu Chaofan  %add7 = fadd float %add6, %i
330*20957d20SQiu Chaofan  %add8 = fadd float %add7, %j
331*20957d20SQiu Chaofan  tail call void @foo()
332*20957d20SQiu Chaofan  ret void
333*20957d20SQiu Chaofan}
334*20957d20SQiu Chaofan
335*20957d20SQiu Chaofandefine void @f64_join(double %a, double %b, double %c, double %d, double %e, double %f, double %g, double %h, double %i, double %j) #0 {
336*20957d20SQiu Chaofan; 32BIT-LABEL: f64_join:
337*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
338*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
339*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
340*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
341*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 10, 160(1)
342*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 9, 152(1)
343*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 8, 144(1)
344*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 7, 136(1)
345*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 6, 128(1)
346*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 5, 120(1)
347*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 4, 112(1)
348*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 3, 104(1)
349*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 2, 96(1)
350*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 1, 88(1)
351*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
352*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
353*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
354*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
355*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
356*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
357*20957d20SQiu Chaofan;
358*20957d20SQiu Chaofan; 64BIT-LABEL: f64_join:
359*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
360*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
361*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
362*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
363*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 10, 232(1)
364*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 9, 224(1)
365*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 8, 216(1)
366*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 7, 208(1)
367*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 6, 200(1)
368*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 5, 192(1)
369*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 4, 184(1)
370*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 3, 176(1)
371*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 2, 168(1)
372*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 1, 160(1)
373*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
374*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
375*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
376*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
377*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
378*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
379*20957d20SQiu Chaofanentry:
380*20957d20SQiu Chaofan  %add = fadd double %a, %b
381*20957d20SQiu Chaofan  %add1 = fadd double %add, %c
382*20957d20SQiu Chaofan  %add2 = fadd double %add1, %d
383*20957d20SQiu Chaofan  %add3 = fadd double %add2, %e
384*20957d20SQiu Chaofan  %add4 = fadd double %add3, %f
385*20957d20SQiu Chaofan  %add5 = fadd double %add4, %g
386*20957d20SQiu Chaofan  %add6 = fadd double %add5, %h
387*20957d20SQiu Chaofan  %add7 = fadd double %add6, %i
388*20957d20SQiu Chaofan  %add8 = fadd double %add7, %j
389*20957d20SQiu Chaofan  tail call void @foo()
390*20957d20SQiu Chaofan  ret void
391*20957d20SQiu Chaofan}
392*20957d20SQiu Chaofan
393*20957d20SQiu Chaofandefine void @f64_missing(double %a, double %b, double %c, double %d, double %e, double %f, double %g, double %h, double %i, double %j) #0 {
394*20957d20SQiu Chaofan; 32BIT-LABEL: f64_missing:
395*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
396*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
397*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
398*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
399*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 10, 160(1)
400*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 9, 152(1)
401*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 8, 144(1)
402*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 7, 136(1)
403*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 6, 128(1)
404*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 5, 120(1)
405*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 4, 112(1)
406*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 3, 104(1)
407*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 2, 96(1)
408*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 1, 88(1)
409*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .foo[PR]
410*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
411*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
412*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
413*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
414*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
415*20957d20SQiu Chaofan;
416*20957d20SQiu Chaofan; 64BIT-LABEL: f64_missing:
417*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
418*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
419*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
420*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
421*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 10, 232(1)
422*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 9, 224(1)
423*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 8, 216(1)
424*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 7, 208(1)
425*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 6, 200(1)
426*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 5, 192(1)
427*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 4, 184(1)
428*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 3, 176(1)
429*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 2, 168(1)
430*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 1, 160(1)
431*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .foo[PR]
432*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
433*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
434*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
435*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
436*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
437*20957d20SQiu Chaofanentry:
438*20957d20SQiu Chaofan  %add = fadd double %a, %a
439*20957d20SQiu Chaofan  %add1 = fadd double %add, %a
440*20957d20SQiu Chaofan  %add2 = fadd double %add1, %d
441*20957d20SQiu Chaofan  %add3 = fadd double %add2, %e
442*20957d20SQiu Chaofan  %add4 = fadd double %add3, %f
443*20957d20SQiu Chaofan  %add5 = fadd double %add4, %g
444*20957d20SQiu Chaofan  %add6 = fadd double %add5, %h
445*20957d20SQiu Chaofan  %add7 = fadd double %add6, %i
446*20957d20SQiu Chaofan  %add8 = fadd double %add7, %j
447*20957d20SQiu Chaofan  tail call void @foo()
448*20957d20SQiu Chaofan  ret void
449*20957d20SQiu Chaofan}
450*20957d20SQiu Chaofan
451*20957d20SQiu Chaofandefine void @mixed_1(double %a, i64 %b, i64 %c, i32 signext %d, i64 %e, float %f, float %g, double %h, i32 signext %i, double %j) #0 {
452*20957d20SQiu Chaofan; 32BIT-LABEL: mixed_1:
453*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
454*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
455*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -112(1)
456*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 120(1)
457*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 1, 136(1)
458*20957d20SQiu Chaofan; 32BIT-NEXT:    xsadddp 1, 1, 5
459*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 24, 64(1) # 4-byte Folded Spill
460*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 24, 168(1)
461*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 25, 68(1) # 4-byte Folded Spill
462*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 25, 188(1)
463*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 26, 72(1) # 4-byte Folded Spill
464*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 27, 76(1) # 4-byte Folded Spill
465*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 28, 80(1) # 4-byte Folded Spill
466*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 29, 84(1) # 4-byte Folded Spill
467*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 30, 88(1) # 4-byte Folded Spill
468*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 31, 92(1) # 4-byte Folded Spill
469*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 30, 96(1) # 8-byte Folded Spill
470*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 31, 104(1) # 8-byte Folded Spill
471*20957d20SQiu Chaofan; 32BIT-NEXT:    fmr 31, 3
472*20957d20SQiu Chaofan; 32BIT-NEXT:    fmr 30, 2
473*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 31, 10
474*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 30, 9
475*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 29, 8
476*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 28, 7
477*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 27, 6
478*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 26, 5
479*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 5, 192(1)
480*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 4, 180(1)
481*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 3, 176(1)
482*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 2, 172(1)
483*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 164(1)
484*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 160(1)
485*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 156(1)
486*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 152(1)
487*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 148(1)
488*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 144(1)
489*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_f64[PR]
490*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
491*20957d20SQiu Chaofan; 32BIT-NEXT:    fadds 1, 30, 31
492*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_f32[PR]
493*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
494*20957d20SQiu Chaofan; 32BIT-NEXT:    addc 3, 29, 27
495*20957d20SQiu Chaofan; 32BIT-NEXT:    adde 4, 28, 26
496*20957d20SQiu Chaofan; 32BIT-NEXT:    srawi 5, 30, 31
497*20957d20SQiu Chaofan; 32BIT-NEXT:    addc 3, 3, 30
498*20957d20SQiu Chaofan; 32BIT-NEXT:    adde 5, 4, 5
499*20957d20SQiu Chaofan; 32BIT-NEXT:    addc 4, 3, 24
500*20957d20SQiu Chaofan; 32BIT-NEXT:    adde 3, 5, 31
501*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_i64[PR]
502*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
503*20957d20SQiu Chaofan; 32BIT-NEXT:    add 3, 25, 30
504*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_i32[PR]
505*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
506*20957d20SQiu Chaofan; 32BIT-NEXT:    lfd 31, 104(1) # 8-byte Folded Reload
507*20957d20SQiu Chaofan; 32BIT-NEXT:    lfd 30, 96(1) # 8-byte Folded Reload
508*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 31, 92(1) # 4-byte Folded Reload
509*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 30, 88(1) # 4-byte Folded Reload
510*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 29, 84(1) # 4-byte Folded Reload
511*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 28, 80(1) # 4-byte Folded Reload
512*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 27, 76(1) # 4-byte Folded Reload
513*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 26, 72(1) # 4-byte Folded Reload
514*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 25, 68(1) # 4-byte Folded Reload
515*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 24, 64(1) # 4-byte Folded Reload
516*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 112
517*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
518*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
519*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
520*20957d20SQiu Chaofan;
521*20957d20SQiu Chaofan; 64BIT-LABEL: mixed_1:
522*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
523*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
524*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -176(1)
525*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 192(1)
526*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 1, 224(1)
527*20957d20SQiu Chaofan; 64BIT-NEXT:    xsadddp 1, 1, 5
528*20957d20SQiu Chaofan; 64BIT-NEXT:    std 27, 120(1) # 8-byte Folded Spill
529*20957d20SQiu Chaofan; 64BIT-NEXT:    lwz 27, 292(1)
530*20957d20SQiu Chaofan; 64BIT-NEXT:    std 28, 128(1) # 8-byte Folded Spill
531*20957d20SQiu Chaofan; 64BIT-NEXT:    std 29, 136(1) # 8-byte Folded Spill
532*20957d20SQiu Chaofan; 64BIT-NEXT:    std 30, 144(1) # 8-byte Folded Spill
533*20957d20SQiu Chaofan; 64BIT-NEXT:    std 31, 152(1) # 8-byte Folded Spill
534*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 30, 160(1) # 8-byte Folded Spill
535*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 31, 168(1) # 8-byte Folded Spill
536*20957d20SQiu Chaofan; 64BIT-NEXT:    fmr 31, 3
537*20957d20SQiu Chaofan; 64BIT-NEXT:    fmr 30, 2
538*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 31, 7
539*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 30, 6
540*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 29, 5
541*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 28, 4
542*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 5, 296(1)
543*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 4, 280(1)
544*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 3, 272(1)
545*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 2, 264(1)
546*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 256(1)
547*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 248(1)
548*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 240(1)
549*20957d20SQiu Chaofan; 64BIT-NEXT:    std 4, 232(1)
550*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_f64[PR]
551*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
552*20957d20SQiu Chaofan; 64BIT-NEXT:    fadds 1, 30, 31
553*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_f32[PR]
554*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
555*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 29, 28
556*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 3, 30
557*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 3, 31
558*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_i64[PR]
559*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
560*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 27, 30
561*20957d20SQiu Chaofan; 64BIT-NEXT:    extsw 3, 3
562*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_i32[PR]
563*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
564*20957d20SQiu Chaofan; 64BIT-NEXT:    lfd 31, 168(1) # 8-byte Folded Reload
565*20957d20SQiu Chaofan; 64BIT-NEXT:    lfd 30, 160(1) # 8-byte Folded Reload
566*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 31, 152(1) # 8-byte Folded Reload
567*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 30, 144(1) # 8-byte Folded Reload
568*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 29, 136(1) # 8-byte Folded Reload
569*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 28, 128(1) # 8-byte Folded Reload
570*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 27, 120(1) # 8-byte Folded Reload
571*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 176
572*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
573*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
574*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
575*20957d20SQiu Chaofanentry:
576*20957d20SQiu Chaofan  %add = fadd double %a, %j
577*20957d20SQiu Chaofan  tail call void @consume_f64(double %add)
578*20957d20SQiu Chaofan  %add1 = fadd float %f, %g
579*20957d20SQiu Chaofan  tail call void @consume_f32(float %add1)
580*20957d20SQiu Chaofan  %add2 = add nsw i64 %c, %b
581*20957d20SQiu Chaofan  %conv = sext i32 %d to i64
582*20957d20SQiu Chaofan  %add3 = add nsw i64 %add2, %conv
583*20957d20SQiu Chaofan  %add4 = add nsw i64 %add3, %e
584*20957d20SQiu Chaofan  tail call void @consume_i64(i64 %add4)
585*20957d20SQiu Chaofan  %add5 = add nsw i32 %i, %d
586*20957d20SQiu Chaofan  tail call void @consume_i32(i32 signext %add5)
587*20957d20SQiu Chaofan  ret void
588*20957d20SQiu Chaofan}
589*20957d20SQiu Chaofan
590*20957d20SQiu Chaofandefine void @mixed_2(<2 x double> %a, <4 x i32> %b, i64 %c) #0 {
591*20957d20SQiu Chaofan; 32BIT-LABEL: mixed_2:
592*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
593*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
594*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -80(1)
595*20957d20SQiu Chaofan; 32BIT-NEXT:    li 5, 64
596*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 88(1)
597*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 4, 140(1)
598*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 3, 136(1)
599*20957d20SQiu Chaofan; 32BIT-NEXT:    stxvd2x 34, 1, 5 # 16-byte Folded Spill
600*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 5, 1, 120
601*20957d20SQiu Chaofan; 32BIT-NEXT:    stxvw4x 35, 0, 5
602*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 5, 1, 104
603*20957d20SQiu Chaofan; 32BIT-NEXT:    stxvd2x 34, 0, 5
604*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 5, 120(1)
605*20957d20SQiu Chaofan; 32BIT-NEXT:    srawi 6, 5, 31
606*20957d20SQiu Chaofan; 32BIT-NEXT:    addc 4, 5, 4
607*20957d20SQiu Chaofan; 32BIT-NEXT:    adde 3, 6, 3
608*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_i64[PR]
609*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
610*20957d20SQiu Chaofan; 32BIT-NEXT:    li 3, 64
611*20957d20SQiu Chaofan; 32BIT-NEXT:    lxvd2x 1, 1, 3 # 16-byte Folded Reload
612*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_f64[PR]
613*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
614*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 80
615*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
616*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
617*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
618*20957d20SQiu Chaofan;
619*20957d20SQiu Chaofan; 64BIT-LABEL: mixed_2:
620*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
621*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
622*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -144(1)
623*20957d20SQiu Chaofan; 64BIT-NEXT:    li 4, 128
624*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 160(1)
625*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 224(1)
626*20957d20SQiu Chaofan; 64BIT-NEXT:    stxvd2x 34, 1, 4 # 16-byte Folded Spill
627*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 4, 1, 208
628*20957d20SQiu Chaofan; 64BIT-NEXT:    stxvw4x 35, 0, 4
629*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 4, 1, 192
630*20957d20SQiu Chaofan; 64BIT-NEXT:    stxvd2x 34, 0, 4
631*20957d20SQiu Chaofan; 64BIT-NEXT:    lwa 4, 208(1)
632*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 4, 3
633*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_i64[PR]
634*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
635*20957d20SQiu Chaofan; 64BIT-NEXT:    li 3, 128
636*20957d20SQiu Chaofan; 64BIT-NEXT:    lxvd2x 1, 1, 3 # 16-byte Folded Reload
637*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_f64[PR]
638*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
639*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 144
640*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
641*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
642*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
643*20957d20SQiu Chaofanentry:
644*20957d20SQiu Chaofan  %vecext = extractelement <4 x i32> %b, i64 0
645*20957d20SQiu Chaofan  %conv = sext i32 %vecext to i64
646*20957d20SQiu Chaofan  %add = add nsw i64 %conv, %c
647*20957d20SQiu Chaofan  tail call void @consume_i64(i64 %add)
648*20957d20SQiu Chaofan  %vecext1 = extractelement <2 x double> %a, i64 0
649*20957d20SQiu Chaofan  tail call void @consume_f64(double %vecext1)
650*20957d20SQiu Chaofan  ret void
651*20957d20SQiu Chaofan}
652*20957d20SQiu Chaofan
653*20957d20SQiu Chaofan%struct.foo = type <{ [3 x i32], double, [12 x i8], <4 x i32> }>
654*20957d20SQiu Chaofan
655*20957d20SQiu Chaofandefine void @mixed_3(<2 x double> %a, i64 %b, double %c, float %d, i32 signext %e, double %f, ...) #0 {
656*20957d20SQiu Chaofan; 32BIT-LABEL: mixed_3:
657*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
658*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
659*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -80(1)
660*20957d20SQiu Chaofan; 32BIT-NEXT:    xsadddp 0, 34, 3
661*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 88(1)
662*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 1, 128(1)
663*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 29, 60(1) # 4-byte Folded Spill
664*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 3, 1, 104
665*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 29, 148(1)
666*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 30, 64(1) # 4-byte Folded Spill
667*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 31, 68(1) # 4-byte Folded Spill
668*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 31, 72(1) # 8-byte Folded Spill
669*20957d20SQiu Chaofan; 32BIT-NEXT:    fmr 31, 2
670*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 31, 10
671*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 30, 9
672*20957d20SQiu Chaofan; 32BIT-NEXT:    xsadddp 1, 0, 1
673*20957d20SQiu Chaofan; 32BIT-NEXT:    stxvd2x 34, 0, 3
674*20957d20SQiu Chaofan; 32BIT-NEXT:    stfd 3, 144(1)
675*20957d20SQiu Chaofan; 32BIT-NEXT:    stfs 2, 136(1)
676*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 124(1)
677*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 120(1)
678*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_f64[PR]
679*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
680*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 3, 30
681*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 4, 31
682*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_i64[PR]
683*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
684*20957d20SQiu Chaofan; 32BIT-NEXT:    fmr 1, 31
685*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_f32[PR]
686*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
687*20957d20SQiu Chaofan; 32BIT-NEXT:    mr 3, 29
688*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_i32[PR]
689*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
690*20957d20SQiu Chaofan; 32BIT-NEXT:    lfd 31, 72(1) # 8-byte Folded Reload
691*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 31, 68(1) # 4-byte Folded Reload
692*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 30, 64(1) # 4-byte Folded Reload
693*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 29, 60(1) # 4-byte Folded Reload
694*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 80
695*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
696*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
697*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
698*20957d20SQiu Chaofan; 32BIT: NumOfGPRsSaved = 3
699*20957d20SQiu Chaofan;
700*20957d20SQiu Chaofan; 64BIT-LABEL: mixed_3:
701*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
702*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
703*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -144(1)
704*20957d20SQiu Chaofan; 64BIT-NEXT:    xsadddp 0, 34, 3
705*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 160(1)
706*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 1, 216(1)
707*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 3, 1, 192
708*20957d20SQiu Chaofan; 64BIT-NEXT:    std 30, 120(1) # 8-byte Folded Spill
709*20957d20SQiu Chaofan; 64BIT-NEXT:    std 31, 128(1) # 8-byte Folded Spill
710*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 31, 136(1) # 8-byte Folded Spill
711*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 31, 8
712*20957d20SQiu Chaofan; 64BIT-NEXT:    fmr 31, 2
713*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 30, 5
714*20957d20SQiu Chaofan; 64BIT-NEXT:    stxvd2x 34, 0, 3
715*20957d20SQiu Chaofan; 64BIT-NEXT:    xsadddp 1, 0, 1
716*20957d20SQiu Chaofan; 64BIT-NEXT:    std 10, 248(1)
717*20957d20SQiu Chaofan; 64BIT-NEXT:    stfd 3, 240(1)
718*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 232(1)
719*20957d20SQiu Chaofan; 64BIT-NEXT:    stfs 2, 224(1)
720*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 208(1)
721*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_f64[PR]
722*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
723*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 3, 30
724*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_i64[PR]
725*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
726*20957d20SQiu Chaofan; 64BIT-NEXT:    fmr 1, 31
727*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_f32[PR]
728*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
729*20957d20SQiu Chaofan; 64BIT-NEXT:    mr 3, 31
730*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_i32[PR]
731*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
732*20957d20SQiu Chaofan; 64BIT-NEXT:    lfd 31, 136(1) # 8-byte Folded Reload
733*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 31, 128(1) # 8-byte Folded Reload
734*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 30, 120(1) # 8-byte Folded Reload
735*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 144
736*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
737*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
738*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
739*20957d20SQiu Chaofan; 64BIT: NumOfGPRsSaved = 2
740*20957d20SQiu Chaofanentry:
741*20957d20SQiu Chaofan  %vecext = extractelement <2 x double> %a, i64 0
742*20957d20SQiu Chaofan  %add = fadd double %vecext, %f
743*20957d20SQiu Chaofan  %add1 = fadd double %add, %c
744*20957d20SQiu Chaofan  tail call void @consume_f64(double %add1)
745*20957d20SQiu Chaofan  tail call void @consume_i64(i64 %b)
746*20957d20SQiu Chaofan  tail call void @consume_f32(float %d)
747*20957d20SQiu Chaofan  tail call void @consume_i32(i32 signext %e)
748*20957d20SQiu Chaofan  ret void
749*20957d20SQiu Chaofan}
750*20957d20SQiu Chaofan
751*20957d20SQiu Chaofandefine signext i32 @mixed_4(ptr byval(%struct.foo) align 16 %foo, i32 %sec) #0 {
752*20957d20SQiu Chaofan; 32BIT-LABEL: mixed_4:
753*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
754*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 48(1)
755*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 44(1)
756*20957d20SQiu Chaofan; 32BIT-NEXT:    lfd 0, 44(1)
757*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 3, 1, -4
758*20957d20SQiu Chaofan; 32BIT-NEXT:    xscvdpsxws 0, 0
759*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 32(1)
760*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 36(1)
761*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 40(1)
762*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 52(1)
763*20957d20SQiu Chaofan; 32BIT-NEXT:    stfiwx 0, 0, 3
764*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 3, -4(1)
765*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 4, 76(1)
766*20957d20SQiu Chaofan; 32BIT-NEXT:    add 3, 5, 3
767*20957d20SQiu Chaofan; 32BIT-NEXT:    add 3, 3, 4
768*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
769*20957d20SQiu Chaofan;
770*20957d20SQiu Chaofan; 64BIT-LABEL: mixed_4:
771*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
772*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 64(1)
773*20957d20SQiu Chaofan; 64BIT-NEXT:    std 4, 56(1)
774*20957d20SQiu Chaofan; 64BIT-NEXT:    lfd 0, 60(1)
775*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 4, 1, -4
776*20957d20SQiu Chaofan; 64BIT-NEXT:    xscvdpsxws 0, 0
777*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 48(1)
778*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 72(1)
779*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 80(1)
780*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 88(1)
781*20957d20SQiu Chaofan; 64BIT-NEXT:    std 9, 96(1)
782*20957d20SQiu Chaofan; 64BIT-NEXT:    rldicl 3, 3, 32, 32
783*20957d20SQiu Chaofan; 64BIT-NEXT:    stfiwx 0, 0, 4
784*20957d20SQiu Chaofan; 64BIT-NEXT:    lwz 4, -4(1)
785*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 3, 4
786*20957d20SQiu Chaofan; 64BIT-NEXT:    add 3, 3, 8
787*20957d20SQiu Chaofan; 64BIT-NEXT:    extsw 3, 3
788*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
789*20957d20SQiu Chaofanentry:
790*20957d20SQiu Chaofan  %0 = load i32, ptr %foo, align 16
791*20957d20SQiu Chaofan  %x = getelementptr inbounds i8, ptr %foo, i64 12
792*20957d20SQiu Chaofan  %1 = load double, ptr %x, align 4
793*20957d20SQiu Chaofan  %conv = fptosi double %1 to i32
794*20957d20SQiu Chaofan  %add = add nsw i32 %0, %conv
795*20957d20SQiu Chaofan  %2 = getelementptr inbounds i8, ptr %foo, i64 44
796*20957d20SQiu Chaofan  %vecext = load i32, ptr %2, align 4
797*20957d20SQiu Chaofan  %add1 = add nsw i32 %add, %vecext
798*20957d20SQiu Chaofan  ret i32 %add1
799*20957d20SQiu Chaofan}
800*20957d20SQiu Chaofan
801*20957d20SQiu Chaofan%struct.bar = type { i8, i32, <4 x i32>, ptr, i8 }
802*20957d20SQiu Chaofan
803*20957d20SQiu Chaofandefine void @mixed_5(ptr byref(%struct.bar) align 16 %r, ptr byval(%struct.bar) align 16 %x, i32 signext %y, ptr byval(%struct.foo) align 16 %f) #0 {
804*20957d20SQiu Chaofan; 32BIT-LABEL: mixed_5:
805*20957d20SQiu Chaofan; 32BIT:       # %bb.0: # %entry
806*20957d20SQiu Chaofan; 32BIT-NEXT:    mflr 0
807*20957d20SQiu Chaofan; 32BIT-NEXT:    stwu 1, -64(1)
808*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 0, 72(1)
809*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 5, 96(1)
810*20957d20SQiu Chaofan; 32BIT-NEXT:    lfd 1, 172(1)
811*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 6, 100(1)
812*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 7, 104(1)
813*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 8, 108(1)
814*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 9, 112(1)
815*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 10, 116(1)
816*20957d20SQiu Chaofan; 32BIT-NEXT:    stw 3, 88(1)
817*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_f64[PR]
818*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
819*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 3, 100(1)
820*20957d20SQiu Chaofan; 32BIT-NEXT:    bl .consume_i32[PR]
821*20957d20SQiu Chaofan; 32BIT-NEXT:    nop
822*20957d20SQiu Chaofan; 32BIT-NEXT:    addi 1, 1, 64
823*20957d20SQiu Chaofan; 32BIT-NEXT:    lwz 0, 8(1)
824*20957d20SQiu Chaofan; 32BIT-NEXT:    mtlr 0
825*20957d20SQiu Chaofan; 32BIT-NEXT:    blr
826*20957d20SQiu Chaofan;
827*20957d20SQiu Chaofan; 64BIT-LABEL: mixed_5:
828*20957d20SQiu Chaofan; 64BIT:       # %bb.0: # %entry
829*20957d20SQiu Chaofan; 64BIT-NEXT:    mflr 0
830*20957d20SQiu Chaofan; 64BIT-NEXT:    stdu 1, -112(1)
831*20957d20SQiu Chaofan; 64BIT-NEXT:    std 0, 128(1)
832*20957d20SQiu Chaofan; 64BIT-NEXT:    std 5, 176(1)
833*20957d20SQiu Chaofan; 64BIT-NEXT:    lfd 1, 252(1)
834*20957d20SQiu Chaofan; 64BIT-NEXT:    std 6, 184(1)
835*20957d20SQiu Chaofan; 64BIT-NEXT:    std 7, 192(1)
836*20957d20SQiu Chaofan; 64BIT-NEXT:    std 8, 200(1)
837*20957d20SQiu Chaofan; 64BIT-NEXT:    std 9, 208(1)
838*20957d20SQiu Chaofan; 64BIT-NEXT:    std 10, 216(1)
839*20957d20SQiu Chaofan; 64BIT-NEXT:    std 3, 160(1)
840*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_f64[PR]
841*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
842*20957d20SQiu Chaofan; 64BIT-NEXT:    lwa 3, 180(1)
843*20957d20SQiu Chaofan; 64BIT-NEXT:    bl .consume_i32[PR]
844*20957d20SQiu Chaofan; 64BIT-NEXT:    nop
845*20957d20SQiu Chaofan; 64BIT-NEXT:    addi 1, 1, 112
846*20957d20SQiu Chaofan; 64BIT-NEXT:    ld 0, 16(1)
847*20957d20SQiu Chaofan; 64BIT-NEXT:    mtlr 0
848*20957d20SQiu Chaofan; 64BIT-NEXT:    blr
849*20957d20SQiu Chaofanentry:
850*20957d20SQiu Chaofan  %d = getelementptr inbounds i8, ptr %f, i64 12
851*20957d20SQiu Chaofan  %0 = load double, ptr %d, align 4
852*20957d20SQiu Chaofan  tail call void @consume_f64(double %0)
853*20957d20SQiu Chaofan  %i = getelementptr inbounds i8, ptr %x, i64 4
854*20957d20SQiu Chaofan  %1 = load i32, ptr %i, align 4
855*20957d20SQiu Chaofan  tail call void @consume_i32(i32 signext %1)
856*20957d20SQiu Chaofan  ret void
857*20957d20SQiu Chaofan}
858*20957d20SQiu Chaofan
859*20957d20SQiu Chaofandeclare void @foo()
860*20957d20SQiu Chaofandeclare void @consume_f64(double)
861*20957d20SQiu Chaofandeclare void @consume_f32(float)
862*20957d20SQiu Chaofandeclare void @consume_i64(i64)
863*20957d20SQiu Chaofandeclare void @consume_i32(i32 signext)
864*20957d20SQiu Chaofan
865*20957d20SQiu Chaofanattributes #0 = { nofree noinline nounwind "save-reg-params" }
866