blob: 17d86b2c184a3cee8b9bf6247ef07c6d4dc6d7e0 [file] [log] [blame]
Bruno Cardoso Lopes7dd74ed2011-02-10 23:37:20 +00001; RUN: llc -march=mips -mcpu=4ke < %s | FileCheck %s
2
3; $f12, $f14
4; CHECK: ldc1 $f12, %lo
5; CHECK: ldc1 $f14, %lo
6define void @testlowercall0() nounwind {
7entry:
8 tail call void @f0(double 5.000000e+00, double 6.000000e+00) nounwind
9 ret void
10}
11
12declare void @f0(double, double)
13
14; $f12, $f14
15; CHECK: lwc1 $f12, %lo
16; CHECK: lwc1 $f14, %lo
17define void @testlowercall1() nounwind {
18entry:
19 tail call void @f1(float 8.000000e+00, float 9.000000e+00) nounwind
20 ret void
21}
22
23declare void @f1(float, float)
24
25; $f12, $f14
26; CHECK: lwc1 $f12, %lo
27; CHECK: ldc1 $f14, %lo
28define void @testlowercall2() nounwind {
29entry:
30 tail call void @f2(float 8.000000e+00, double 6.000000e+00) nounwind
31 ret void
32}
33
34declare void @f2(float, double)
35
36; $f12, $f14
37; CHECK: ldc1 $f12, %lo
38; CHECK: lwc1 $f14, %lo
39define void @testlowercall3() nounwind {
40entry:
41 tail call void @f3(double 5.000000e+00, float 9.000000e+00) nounwind
42 ret void
43}
44
45declare void @f3(double, float)
46
47; $4, $5, $6, $7
48; CHECK: addiu $4, $zero, 12
49; CHECK: addiu $5, $zero, 13
50; CHECK: addiu $6, $zero, 14
51; CHECK: addiu $7, $zero, 15
52define void @testlowercall4() nounwind {
53entry:
54 tail call void @f4(i32 12, i32 13, i32 14, i32 15) nounwind
55 ret void
56}
57
58declare void @f4(i32, i32, i32, i32)
59
60; $f12, $6, stack
61; CHECK: sw $2, 16($sp)
62; CHECK: sw $zero, 20($sp)
63; CHECK: ldc1 $f12, %lo
64; CHECK: addiu $6, $zero, 23
65define void @testlowercall5() nounwind {
66entry:
67 tail call void @f5(double 1.500000e+01, i32 23, double 1.700000e+01) nounwind
68 ret void
69}
70
71declare void @f5(double, i32, double)
72
73; $f12, $6, $7
74; CHECK: ldc1 $f12, %lo
75; CHECK: addiu $6, $zero, 33
76; CHECK: addiu $7, $zero, 24
77define void @testlowercall6() nounwind {
78entry:
79 tail call void @f6(double 2.500000e+01, i32 33, i32 24) nounwind
80 ret void
81}
82
83declare void @f6(double, i32, i32)
84
85; $f12, $5, $6
86; CHECK: lwc1 $f12, %lo
87; CHECK: addiu $5, $zero, 43
88; CHECK: addiu $6, $zero, 34
89define void @testlowercall7() nounwind {
90entry:
91 tail call void @f7(float 1.800000e+01, i32 43, i32 34) nounwind
92 ret void
93}
94
95declare void @f7(float, i32, i32)
96
97; $4, $5, $6, stack
98; CHECK: sw $2, 16($sp)
99; CHECK: sw $zero, 20($sp)
100; CHECK: addiu $4, $zero, 22
101; CHECK: addiu $5, $zero, 53
102; CHECK: addiu $6, $zero, 44
103define void @testlowercall8() nounwind {
104entry:
105 tail call void @f8(i32 22, i32 53, i32 44, double 4.000000e+00) nounwind
106 ret void
107}
108
109declare void @f8(i32, i32, i32, double)
110
111; $4, $5, $6, $7
112; CHECK: addiu $4, $zero, 32
113; CHECK: addiu $5, $zero, 63
114; CHECK: addiu $6, $zero, 54
115; CHECK: ori $7, $2, 0
116define void @testlowercall9() nounwind {
117entry:
118 tail call void @f9(i32 32, i32 63, i32 54, float 1.100000e+01) nounwind
119 ret void
120}
121
122declare void @f9(i32, i32, i32, float)
123
124; $4, $5, ($6, $7)
125; CHECK: addiu $4, $zero, 42
126; CHECK: addiu $5, $zero, 73
127; CHECK: addiu $6, $zero, 0
128; CHECK: ori $7, $2, 0
129define void @testlowercall10() nounwind {
130entry:
131 tail call void @f10(i32 42, i32 73, double 2.700000e+01) nounwind
132 ret void
133}
134
135declare void @f10(i32, i32, double)
136
137; $4, ($6, $7)
138; CHECK: addiu $4, $zero, 52
139; CHECK: addiu $6, $zero, 0
140; CHECK: ori $7, $2, 0
141define void @testlowercall11() nounwind {
142entry:
143 tail call void @f11(i32 52, double 1.600000e+01) nounwind
144 ret void
145}
146
147declare void @f11(i32, double)
148
149; $f12, $f14, $6, $7
150; CHECK: lwc1 $f12, %lo
151; CHECK: lwc1 $f14, %lo
152; CHECK: ori $6, $4, 0
153; CHECK: ori $7, $5, 0
154define void @testlowercall12() nounwind {
155entry:
156 tail call void @f12(float 2.800000e+01, float 1.900000e+01, float 1.000000e+01, float 2.100000e+01) nounwind
157 ret void
158}
159
160declare void @f12(float, float, float, float)
161
162; $f12, $5, $6, $7
163; CHECK: lwc1 $f12, %lo
164; CHECK: addiu $5, $zero, 83
165; CHECK: ori $6, $3, 0
166; CHECK: addiu $7, $zero, 25
167define void @testlowercall13() nounwind {
168entry:
169 tail call void @f13(float 3.800000e+01, i32 83, float 2.000000e+01, i32 25) nounwind
170 ret void
171}
172
173
174declare void @f13(float, i32, float, i32)
175
176; $f12, $f14, $7
177; CHECK: ldc1 $f12, %lo
178; CHECK: lwc1 $f14, %lo
179; CHECK: ori $7, $4, 0
180define void @testlowercall14() nounwind {
181entry:
182 tail call void @f14(double 3.500000e+01, float 2.900000e+01, float 3.000000e+01) nounwind
183 ret void
184}
185
186declare void @f14(double, float, float)
187
188; $f12, $f14, ($6, $7)
189; CHECK: lwc1 $f12, %lo
190; CHECK: lwc1 $f14, %lo
191; CHECK: addiu $6, $zero, 0
192; CHECK: ori $7, $4, 32768
193define void @testlowercall15() nounwind {
194entry:
195 tail call void @f15(float 4.800000e+01, float 3.900000e+01, double 3.700000e+01) nounwind
196 ret void
197}
198
199declare void @f15(float, float, double)
200
201; $4, $5, $6, $7
202; CHECK: addiu $4, $zero, 62
203; CHECK: ori $5, $2, 0
204; CHECK: addiu $6, $zero, 64
205; CHECK: ori $7, $3, 0
206define void @testlowercall16() nounwind {
207entry:
208 tail call void @f16(i32 62, float 4.900000e+01, i32 64, float 3.100000e+01) nounwind
209 ret void
210}
211
212declare void @f16(i32, float, i32, float)
213
214; $4, $5, $6, $7
215; CHECK: addiu $4, $zero, 72
216; CHECK: ori $5, $2, 0
217; CHECK: addiu $6, $zero, 74
218; CHECK: addiu $7, $zero, 35
219define void @testlowercall17() nounwind {
220entry:
221 tail call void @f17(i32 72, float 5.900000e+01, i32 74, i32 35) nounwind
222 ret void
223}
224
225declare void @f17(i32, float, i32, i32)
226
227; $4, $5, $6, $7
228; CHECK: addiu $4, $zero, 82
229; CHECK: addiu $5, $zero, 93
230; CHECK: ori $6, $2, 0
231; CHECK: addiu $7, $zero, 45
232define void @testlowercall18() nounwind {
233entry:
234 tail call void @f18(i32 82, i32 93, float 4.000000e+01, i32 45) nounwind
235 ret void
236}
237
238declare void @f18(i32, i32, float, i32)
239
240
241; $4, ($6, $7), stack
242; CHECK: sw $2, 16($sp)
243; CHECK: sw $zero, 20($sp)
244; CHECK: addiu $4, $zero, 92
245; CHECK: addiu $6, $zero, 0
246; CHECK: ori $7, $3, 0
247define void @testlowercall20() nounwind {
248entry:
249 tail call void @f20(i32 92, double 2.600000e+01, double 4.700000e+01) nounwind
250 ret void
251}
252
253declare void @f20(i32, double, double)
254
255; $f12, $5
256; CHECK: lwc1 $f12, %lo
257; CHECK: addiu $5, $zero, 103
258define void @testlowercall21() nounwind {
259entry:
260 tail call void @f21(float 5.800000e+01, i32 103) nounwind
261 ret void
262}
263
264declare void @f21(float, i32)
265
266; $f12, $5, ($6, $7)
267; CHECK: lwc1 $f12, %lo
268; CHECK: addiu $5, $zero, 113
269; CHECK: addiu $6, $zero, 0
270; CHECK: ori $7, $3, 32768
271define void @testlowercall22() nounwind {
272entry:
273 tail call void @f22(float 6.800000e+01, i32 113, double 5.700000e+01) nounwind
274 ret void
275}
276
277declare void @f22(float, i32, double)
278
279; $f12, f6
280; CHECK: ldc1 $f12, %lo
281; CHECK: addiu $6, $zero, 123
282define void @testlowercall23() nounwind {
283entry:
284 tail call void @f23(double 4.500000e+01, i32 123) nounwind
285 ret void
286}
287
288declare void @f23(double, i32)
289
290; $f12,$6, stack
291; CHECK: sw $2, 16($sp)
292; CHECK: sw $zero, 20($sp)
293; CHECK: ldc1 $f12, %lo
294; CHECK: addiu $6, $zero, 133
295define void @testlowercall24() nounwind {
296entry:
297 tail call void @f24(double 5.500000e+01, i32 133, double 6.700000e+01) nounwind
298 ret void
299}
300
301declare void @f24(double, i32, double)
302
303; CHECK: lwc1 $f12, %lo
304; lwc1 $f12, %lo
305; CHECK: lwc1 $f14, %lo
306; CHECK: ori $6, $4, 0
307; CHECK: ori $7, $5, 0
308; CHECK: lwc1 $f12, %lo
309; CHECK: addiu $5, $zero, 83
310; CHECK: ori $6, $3, 0
311; CHECK: addiu $7, $zero, 25
312; CHECK: addiu $4, $zero, 82
313; CHECK: addiu $5, $zero, 93
314; CHECK: ori $6, $2, 0
315; CHECK: addiu $7, $zero, 45
316define void @testlowercall25() nounwind {
317entry:
318 tail call void @f12(float 2.800000e+01, float 1.900000e+01, float 1.000000e+01, float 2.100000e+01) nounwind
319 tail call void @f13(float 3.800000e+01, i32 83, float 2.000000e+01, i32 25) nounwind
320 tail call void @f18(i32 82, i32 93, float 4.000000e+01, i32 45) nounwind
321 ret void
322}