542b4a5e41a6e046196a0dc22e31ecb13238531e
[oota-llvm.git] / test / CodeGen / Mips / o32_cc.ll
1 ; RUN: llc -march=mips -mcpu=4ke < %s | FileCheck %s
2
3 ; $f12, $f14
4 ; CHECK: ldc1 $f12, %lo
5 ; CHECK: ldc1 $f14, %lo
6 define void @testlowercall0() nounwind {
7 entry:
8   tail call void @f0(double 5.000000e+00, double 6.000000e+00) nounwind
9   ret void
10 }
11
12 declare void @f0(double, double)
13
14 ; $f12, $f14
15 ; CHECK: lwc1 $f12, %lo
16 ; CHECK: lwc1 $f14, %lo
17 define void @testlowercall1() nounwind {
18 entry:
19   tail call void @f1(float 8.000000e+00, float 9.000000e+00) nounwind
20   ret void
21 }
22
23 declare void @f1(float, float)
24
25 ; $f12, $f14
26 ; CHECK: lwc1 $f12, %lo
27 ; CHECK: ldc1 $f14, %lo
28 define void @testlowercall2() nounwind {
29 entry:
30   tail call void @f2(float 8.000000e+00, double 6.000000e+00) nounwind
31   ret void
32 }
33
34 declare void @f2(float, double)
35
36 ; $f12, $f14
37 ; CHECK: ldc1 $f12, %lo
38 ; CHECK: lwc1 $f14, %lo
39 define void @testlowercall3() nounwind {
40 entry:
41   tail call void @f3(double 5.000000e+00, float 9.000000e+00) nounwind
42   ret void
43 }
44
45 declare 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
52 define void @testlowercall4() nounwind {
53 entry:
54   tail call void @f4(i32 12, i32 13, i32 14, i32 15) nounwind
55   ret void
56 }
57
58 declare void @f4(i32, i32, i32, i32)
59
60 ; $f12, $6, stack
61 ; CHECK: sw
62 ; CHECK: sw
63 ; CHECK: ldc1 $f12, %lo
64 ; CHECK: addiu $6, $zero, 23
65 define void @testlowercall5() nounwind {
66 entry:
67   tail call void @f5(double 1.500000e+01, i32 23, double 1.700000e+01) nounwind
68   ret void
69 }
70
71 declare 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
77 define void @testlowercall6() nounwind {
78 entry:
79   tail call void @f6(double 2.500000e+01, i32 33, i32 24) nounwind
80   ret void
81 }
82
83 declare 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
89 define void @testlowercall7() nounwind {
90 entry:
91   tail call void @f7(float 1.800000e+01, i32 43, i32 34) nounwind
92   ret void
93 }
94
95 declare void @f7(float, i32, i32)
96
97 ; $4, $5, $6, stack
98 ; CHECK: sw
99 ; CHECK: sw
100 ; CHECK: addiu $4, $zero, 22
101 ; CHECK: addiu $5, $zero, 53
102 ; CHECK: addiu $6, $zero, 44
103 define void @testlowercall8() nounwind {
104 entry:
105   tail call void @f8(i32 22, i32 53, i32 44, double 4.000000e+00) nounwind
106   ret void
107 }
108
109 declare 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
116 define void @testlowercall9() nounwind {
117 entry:
118   tail call void @f9(i32 32, i32 63, i32 54, float 1.100000e+01) nounwind
119   ret void
120 }
121
122 declare 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
129 define void @testlowercall10() nounwind {
130 entry:
131   tail call void @f10(i32 42, i32 73, double 2.700000e+01) nounwind
132   ret void
133 }
134
135 declare 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
141 define void @testlowercall11() nounwind {
142 entry:
143   tail call void @f11(i32 52, double 1.600000e+01) nounwind
144   ret void
145 }
146
147 declare void @f11(i32, double)
148
149 ; $f12, $f14, $6, $7
150 ; CHECK: lwc1 $f12, %lo
151 ; CHECK: lwc1 $f14, %lo
152 ; CHECK: ori $6
153 ; CHECK: ori $7
154 define void @testlowercall12() nounwind {
155 entry:
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
160 declare 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
166 ; CHECK: addiu $7, $zero, 25
167 define void @testlowercall13() nounwind {
168 entry:
169   tail call void @f13(float 3.800000e+01, i32 83, float 2.000000e+01, i32 25) nounwind
170   ret void
171 }
172
173
174 declare 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
180 define void @testlowercall14() nounwind {
181 entry:
182   tail call void @f14(double 3.500000e+01, float 2.900000e+01, float 3.000000e+01) nounwind
183   ret void
184 }
185
186 declare 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
193 define void @testlowercall15() nounwind {
194 entry:
195   tail call void @f15(float 4.800000e+01, float 3.900000e+01, double 3.700000e+01) nounwind
196   ret void
197 }
198
199 declare void @f15(float, float, double)
200
201 ; $4, $5, $6, $7
202 ; CHECK: addiu $4, $zero, 62
203 ; CHECK: ori $5
204 ; CHECK: addiu $6, $zero, 64
205 ; CHECK: ori $7
206 define void @testlowercall16() nounwind {
207 entry:
208   tail call void @f16(i32 62, float 4.900000e+01, i32 64, float 3.100000e+01) nounwind
209   ret void
210 }
211
212 declare void @f16(i32, float, i32, float)
213
214 ; $4, $5, $6, $7
215 ; CHECK: addiu $4, $zero, 72
216 ; CHECK: ori $5
217 ; CHECK: addiu $6, $zero, 74
218 ; CHECK: addiu $7, $zero, 35
219 define void @testlowercall17() nounwind {
220 entry:
221   tail call void @f17(i32 72, float 5.900000e+01, i32 74, i32 35) nounwind
222   ret void
223 }
224
225 declare 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
231 ; CHECK: addiu $7, $zero, 45
232 define void @testlowercall18() nounwind {
233 entry:
234   tail call void @f18(i32 82, i32 93, float 4.000000e+01, i32 45) nounwind
235   ret void
236 }
237
238 declare void @f18(i32, i32, float, i32)
239
240
241 ; $4, ($6, $7), stack
242 ; CHECK: sw
243 ; CHECK: sw
244 ; CHECK: addiu $4, $zero, 92
245 ; CHECK: addiu $6, $zero, 0
246 ; CHECK: ori $7
247 define void @testlowercall20() nounwind {
248 entry:
249   tail call void @f20(i32 92, double 2.600000e+01, double 4.700000e+01) nounwind
250   ret void
251 }
252
253 declare void @f20(i32, double, double)
254
255 ; $f12, $5
256 ; CHECK: lwc1 $f12, %lo
257 ; CHECK: addiu $5, $zero, 103
258 define void @testlowercall21() nounwind {
259 entry:
260   tail call void @f21(float 5.800000e+01, i32 103) nounwind
261   ret void
262 }
263
264 declare 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
271 define void @testlowercall22() nounwind {
272 entry:
273   tail call void @f22(float 6.800000e+01, i32 113, double 5.700000e+01) nounwind
274   ret void
275 }
276
277 declare void @f22(float, i32, double)
278
279 ; $f12, f6
280 ; CHECK: ldc1 $f12, %lo
281 ; CHECK: addiu $6, $zero, 123
282 define void @testlowercall23() nounwind {
283 entry:
284   tail call void @f23(double 4.500000e+01, i32 123) nounwind
285   ret void
286 }
287
288 declare void @f23(double, i32)
289
290 ; $f12,$6, stack
291 ; CHECK: sw
292 ; CHECK: sw
293 ; CHECK: ldc1 $f12, %lo
294 ; CHECK: addiu $6, $zero, 133
295 define void @testlowercall24() nounwind {
296 entry:
297   tail call void @f24(double 5.500000e+01, i32 133, double 6.700000e+01) nounwind
298   ret void
299 }
300
301 declare void @f24(double, i32, double)
302
303 ; CHECK: lwc1 $f12, %lo
304 ; lwc1 $f12, %lo
305 ; CHECK: lwc1 $f14, %lo
306 ; CHECK: ori $6
307 ; CHECK: ori $7
308 ; CHECK: lwc1 $f12, %lo
309 ; CHECK: addiu $5, $zero, 83
310 ; CHECK: ori $6
311 ; CHECK: addiu $7, $zero, 25
312 ; CHECK: addiu $4, $zero, 82
313 ; CHECK: addiu $5, $zero, 93
314 ; CHECK: ori $6
315 ; CHECK: addiu $7, $zero, 45
316 define void @testlowercall25() nounwind {
317 entry:
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 }