OSDN Git Service

Update aosp/master llvm for rebase to r233350
[android-x86/external-llvm.git] / test / CodeGen / Mips / msa / 3rf_int_float.ll
1 ; Test the MSA intrinsics that are encoded with the 3RF instruction format and
2 ; produce an integer as a result.
3
4 ; RUN: llc -march=mips -mattr=+msa,+fp64 < %s | FileCheck %s
5 ; RUN: llc -march=mipsel -mattr=+msa,+fp64 < %s | FileCheck %s
6
7 @llvm_mips_fcaf_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
8 @llvm_mips_fcaf_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
9 @llvm_mips_fcaf_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
10
11 define void @llvm_mips_fcaf_w_test() nounwind {
12 entry:
13   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcaf_w_ARG1
14   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcaf_w_ARG2
15   %2 = tail call <4 x i32> @llvm.mips.fcaf.w(<4 x float> %0, <4 x float> %1)
16   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcaf_w_RES
17   ret void
18 }
19
20 declare <4 x i32> @llvm.mips.fcaf.w(<4 x float>, <4 x float>) nounwind
21
22 ; CHECK: llvm_mips_fcaf_w_test:
23 ; CHECK: ld.w
24 ; CHECK: ld.w
25 ; CHECK: fcaf.w
26 ; CHECK: st.w
27 ; CHECK: .size llvm_mips_fcaf_w_test
28 ;
29 @llvm_mips_fcaf_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
30 @llvm_mips_fcaf_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
31 @llvm_mips_fcaf_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
32
33 define void @llvm_mips_fcaf_d_test() nounwind {
34 entry:
35   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcaf_d_ARG1
36   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcaf_d_ARG2
37   %2 = tail call <2 x i64> @llvm.mips.fcaf.d(<2 x double> %0, <2 x double> %1)
38   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcaf_d_RES
39   ret void
40 }
41
42 declare <2 x i64> @llvm.mips.fcaf.d(<2 x double>, <2 x double>) nounwind
43
44 ; CHECK: llvm_mips_fcaf_d_test:
45 ; CHECK: ld.d
46 ; CHECK: ld.d
47 ; CHECK: fcaf.d
48 ; CHECK: st.d
49 ; CHECK: .size llvm_mips_fcaf_d_test
50 ;
51 @llvm_mips_fceq_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
52 @llvm_mips_fceq_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
53 @llvm_mips_fceq_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
54
55 define void @llvm_mips_fceq_w_test() nounwind {
56 entry:
57   %0 = load <4 x float>, <4 x float>* @llvm_mips_fceq_w_ARG1
58   %1 = load <4 x float>, <4 x float>* @llvm_mips_fceq_w_ARG2
59   %2 = tail call <4 x i32> @llvm.mips.fceq.w(<4 x float> %0, <4 x float> %1)
60   store <4 x i32> %2, <4 x i32>* @llvm_mips_fceq_w_RES
61   ret void
62 }
63
64 declare <4 x i32> @llvm.mips.fceq.w(<4 x float>, <4 x float>) nounwind
65
66 ; CHECK: llvm_mips_fceq_w_test:
67 ; CHECK: ld.w
68 ; CHECK: ld.w
69 ; CHECK: fceq.w
70 ; CHECK: st.w
71 ; CHECK: .size llvm_mips_fceq_w_test
72 ;
73 @llvm_mips_fceq_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
74 @llvm_mips_fceq_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
75 @llvm_mips_fceq_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
76
77 define void @llvm_mips_fceq_d_test() nounwind {
78 entry:
79   %0 = load <2 x double>, <2 x double>* @llvm_mips_fceq_d_ARG1
80   %1 = load <2 x double>, <2 x double>* @llvm_mips_fceq_d_ARG2
81   %2 = tail call <2 x i64> @llvm.mips.fceq.d(<2 x double> %0, <2 x double> %1)
82   store <2 x i64> %2, <2 x i64>* @llvm_mips_fceq_d_RES
83   ret void
84 }
85
86 declare <2 x i64> @llvm.mips.fceq.d(<2 x double>, <2 x double>) nounwind
87
88 ; CHECK: llvm_mips_fceq_d_test:
89 ; CHECK: ld.d
90 ; CHECK: ld.d
91 ; CHECK: fceq.d
92 ; CHECK: st.d
93 ; CHECK: .size llvm_mips_fceq_d_test
94 ;
95 @llvm_mips_fcle_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
96 @llvm_mips_fcle_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
97 @llvm_mips_fcle_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
98
99 define void @llvm_mips_fcle_w_test() nounwind {
100 entry:
101   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcle_w_ARG1
102   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcle_w_ARG2
103   %2 = tail call <4 x i32> @llvm.mips.fcle.w(<4 x float> %0, <4 x float> %1)
104   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcle_w_RES
105   ret void
106 }
107
108 declare <4 x i32> @llvm.mips.fcle.w(<4 x float>, <4 x float>) nounwind
109
110 ; CHECK: llvm_mips_fcle_w_test:
111 ; CHECK: ld.w
112 ; CHECK: ld.w
113 ; CHECK: fcle.w
114 ; CHECK: st.w
115 ; CHECK: .size llvm_mips_fcle_w_test
116 ;
117 @llvm_mips_fcle_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
118 @llvm_mips_fcle_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
119 @llvm_mips_fcle_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
120
121 define void @llvm_mips_fcle_d_test() nounwind {
122 entry:
123   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcle_d_ARG1
124   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcle_d_ARG2
125   %2 = tail call <2 x i64> @llvm.mips.fcle.d(<2 x double> %0, <2 x double> %1)
126   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcle_d_RES
127   ret void
128 }
129
130 declare <2 x i64> @llvm.mips.fcle.d(<2 x double>, <2 x double>) nounwind
131
132 ; CHECK: llvm_mips_fcle_d_test:
133 ; CHECK: ld.d
134 ; CHECK: ld.d
135 ; CHECK: fcle.d
136 ; CHECK: st.d
137 ; CHECK: .size llvm_mips_fcle_d_test
138 ;
139 @llvm_mips_fclt_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
140 @llvm_mips_fclt_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
141 @llvm_mips_fclt_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
142
143 define void @llvm_mips_fclt_w_test() nounwind {
144 entry:
145   %0 = load <4 x float>, <4 x float>* @llvm_mips_fclt_w_ARG1
146   %1 = load <4 x float>, <4 x float>* @llvm_mips_fclt_w_ARG2
147   %2 = tail call <4 x i32> @llvm.mips.fclt.w(<4 x float> %0, <4 x float> %1)
148   store <4 x i32> %2, <4 x i32>* @llvm_mips_fclt_w_RES
149   ret void
150 }
151
152 declare <4 x i32> @llvm.mips.fclt.w(<4 x float>, <4 x float>) nounwind
153
154 ; CHECK: llvm_mips_fclt_w_test:
155 ; CHECK: ld.w
156 ; CHECK: ld.w
157 ; CHECK: fclt.w
158 ; CHECK: st.w
159 ; CHECK: .size llvm_mips_fclt_w_test
160 ;
161 @llvm_mips_fclt_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
162 @llvm_mips_fclt_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
163 @llvm_mips_fclt_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
164
165 define void @llvm_mips_fclt_d_test() nounwind {
166 entry:
167   %0 = load <2 x double>, <2 x double>* @llvm_mips_fclt_d_ARG1
168   %1 = load <2 x double>, <2 x double>* @llvm_mips_fclt_d_ARG2
169   %2 = tail call <2 x i64> @llvm.mips.fclt.d(<2 x double> %0, <2 x double> %1)
170   store <2 x i64> %2, <2 x i64>* @llvm_mips_fclt_d_RES
171   ret void
172 }
173
174 declare <2 x i64> @llvm.mips.fclt.d(<2 x double>, <2 x double>) nounwind
175
176 ; CHECK: llvm_mips_fclt_d_test:
177 ; CHECK: ld.d
178 ; CHECK: ld.d
179 ; CHECK: fclt.d
180 ; CHECK: st.d
181 ; CHECK: .size llvm_mips_fclt_d_test
182 ;
183 @llvm_mips_fcor_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
184 @llvm_mips_fcor_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
185 @llvm_mips_fcor_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
186
187 define void @llvm_mips_fcor_w_test() nounwind {
188 entry:
189   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcor_w_ARG1
190   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcor_w_ARG2
191   %2 = tail call <4 x i32> @llvm.mips.fcor.w(<4 x float> %0, <4 x float> %1)
192   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcor_w_RES
193   ret void
194 }
195
196 declare <4 x i32> @llvm.mips.fcor.w(<4 x float>, <4 x float>) nounwind
197
198 ; CHECK: llvm_mips_fcor_w_test:
199 ; CHECK: ld.w
200 ; CHECK: ld.w
201 ; CHECK: fcor.w
202 ; CHECK: st.w
203 ; CHECK: .size llvm_mips_fcor_w_test
204 ;
205 @llvm_mips_fcor_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
206 @llvm_mips_fcor_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
207 @llvm_mips_fcor_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
208
209 define void @llvm_mips_fcor_d_test() nounwind {
210 entry:
211   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcor_d_ARG1
212   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcor_d_ARG2
213   %2 = tail call <2 x i64> @llvm.mips.fcor.d(<2 x double> %0, <2 x double> %1)
214   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcor_d_RES
215   ret void
216 }
217
218 declare <2 x i64> @llvm.mips.fcor.d(<2 x double>, <2 x double>) nounwind
219
220 ; CHECK: llvm_mips_fcor_d_test:
221 ; CHECK: ld.d
222 ; CHECK: ld.d
223 ; CHECK: fcor.d
224 ; CHECK: st.d
225 ; CHECK: .size llvm_mips_fcor_d_test
226 ;
227 @llvm_mips_fcne_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
228 @llvm_mips_fcne_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
229 @llvm_mips_fcne_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
230
231 define void @llvm_mips_fcne_w_test() nounwind {
232 entry:
233   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcne_w_ARG1
234   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcne_w_ARG2
235   %2 = tail call <4 x i32> @llvm.mips.fcne.w(<4 x float> %0, <4 x float> %1)
236   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcne_w_RES
237   ret void
238 }
239
240 declare <4 x i32> @llvm.mips.fcne.w(<4 x float>, <4 x float>) nounwind
241
242 ; CHECK: llvm_mips_fcne_w_test:
243 ; CHECK: ld.w
244 ; CHECK: ld.w
245 ; CHECK: fcne.w
246 ; CHECK: st.w
247 ; CHECK: .size llvm_mips_fcne_w_test
248 ;
249 @llvm_mips_fcne_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
250 @llvm_mips_fcne_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
251 @llvm_mips_fcne_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
252
253 define void @llvm_mips_fcne_d_test() nounwind {
254 entry:
255   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcne_d_ARG1
256   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcne_d_ARG2
257   %2 = tail call <2 x i64> @llvm.mips.fcne.d(<2 x double> %0, <2 x double> %1)
258   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcne_d_RES
259   ret void
260 }
261
262 declare <2 x i64> @llvm.mips.fcne.d(<2 x double>, <2 x double>) nounwind
263
264 ; CHECK: llvm_mips_fcne_d_test:
265 ; CHECK: ld.d
266 ; CHECK: ld.d
267 ; CHECK: fcne.d
268 ; CHECK: st.d
269 ; CHECK: .size llvm_mips_fcne_d_test
270 ;
271 @llvm_mips_fcueq_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
272 @llvm_mips_fcueq_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
273 @llvm_mips_fcueq_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
274
275 define void @llvm_mips_fcueq_w_test() nounwind {
276 entry:
277   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcueq_w_ARG1
278   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcueq_w_ARG2
279   %2 = tail call <4 x i32> @llvm.mips.fcueq.w(<4 x float> %0, <4 x float> %1)
280   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcueq_w_RES
281   ret void
282 }
283
284 declare <4 x i32> @llvm.mips.fcueq.w(<4 x float>, <4 x float>) nounwind
285
286 ; CHECK: llvm_mips_fcueq_w_test:
287 ; CHECK: ld.w
288 ; CHECK: ld.w
289 ; CHECK: fcueq.w
290 ; CHECK: st.w
291 ; CHECK: .size llvm_mips_fcueq_w_test
292 ;
293 @llvm_mips_fcueq_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
294 @llvm_mips_fcueq_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
295 @llvm_mips_fcueq_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
296
297 define void @llvm_mips_fcueq_d_test() nounwind {
298 entry:
299   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcueq_d_ARG1
300   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcueq_d_ARG2
301   %2 = tail call <2 x i64> @llvm.mips.fcueq.d(<2 x double> %0, <2 x double> %1)
302   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcueq_d_RES
303   ret void
304 }
305
306 declare <2 x i64> @llvm.mips.fcueq.d(<2 x double>, <2 x double>) nounwind
307
308 ; CHECK: llvm_mips_fcueq_d_test:
309 ; CHECK: ld.d
310 ; CHECK: ld.d
311 ; CHECK: fcueq.d
312 ; CHECK: st.d
313 ; CHECK: .size llvm_mips_fcueq_d_test
314 ;
315 @llvm_mips_fcult_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
316 @llvm_mips_fcult_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
317 @llvm_mips_fcult_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
318
319 define void @llvm_mips_fcult_w_test() nounwind {
320 entry:
321   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcult_w_ARG1
322   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcult_w_ARG2
323   %2 = tail call <4 x i32> @llvm.mips.fcult.w(<4 x float> %0, <4 x float> %1)
324   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcult_w_RES
325   ret void
326 }
327
328 declare <4 x i32> @llvm.mips.fcult.w(<4 x float>, <4 x float>) nounwind
329
330 ; CHECK: llvm_mips_fcult_w_test:
331 ; CHECK: ld.w
332 ; CHECK: ld.w
333 ; CHECK: fcult.w
334 ; CHECK: st.w
335 ; CHECK: .size llvm_mips_fcult_w_test
336 ;
337 @llvm_mips_fcult_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
338 @llvm_mips_fcult_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
339 @llvm_mips_fcult_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
340
341 define void @llvm_mips_fcult_d_test() nounwind {
342 entry:
343   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcult_d_ARG1
344   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcult_d_ARG2
345   %2 = tail call <2 x i64> @llvm.mips.fcult.d(<2 x double> %0, <2 x double> %1)
346   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcult_d_RES
347   ret void
348 }
349
350 declare <2 x i64> @llvm.mips.fcult.d(<2 x double>, <2 x double>) nounwind
351
352 ; CHECK: llvm_mips_fcult_d_test:
353 ; CHECK: ld.d
354 ; CHECK: ld.d
355 ; CHECK: fcult.d
356 ; CHECK: st.d
357 ; CHECK: .size llvm_mips_fcult_d_test
358 ;
359 @llvm_mips_fcule_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
360 @llvm_mips_fcule_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
361 @llvm_mips_fcule_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
362
363 define void @llvm_mips_fcule_w_test() nounwind {
364 entry:
365   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcule_w_ARG1
366   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcule_w_ARG2
367   %2 = tail call <4 x i32> @llvm.mips.fcule.w(<4 x float> %0, <4 x float> %1)
368   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcule_w_RES
369   ret void
370 }
371
372 declare <4 x i32> @llvm.mips.fcule.w(<4 x float>, <4 x float>) nounwind
373
374 ; CHECK: llvm_mips_fcule_w_test:
375 ; CHECK: ld.w
376 ; CHECK: ld.w
377 ; CHECK: fcule.w
378 ; CHECK: st.w
379 ; CHECK: .size llvm_mips_fcule_w_test
380 ;
381 @llvm_mips_fcule_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
382 @llvm_mips_fcule_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
383 @llvm_mips_fcule_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
384
385 define void @llvm_mips_fcule_d_test() nounwind {
386 entry:
387   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcule_d_ARG1
388   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcule_d_ARG2
389   %2 = tail call <2 x i64> @llvm.mips.fcule.d(<2 x double> %0, <2 x double> %1)
390   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcule_d_RES
391   ret void
392 }
393
394 declare <2 x i64> @llvm.mips.fcule.d(<2 x double>, <2 x double>) nounwind
395
396 ; CHECK: llvm_mips_fcule_d_test:
397 ; CHECK: ld.d
398 ; CHECK: ld.d
399 ; CHECK: fcule.d
400 ; CHECK: st.d
401 ; CHECK: .size llvm_mips_fcule_d_test
402 ;
403 @llvm_mips_fcun_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
404 @llvm_mips_fcun_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
405 @llvm_mips_fcun_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
406
407 define void @llvm_mips_fcun_w_test() nounwind {
408 entry:
409   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcun_w_ARG1
410   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcun_w_ARG2
411   %2 = tail call <4 x i32> @llvm.mips.fcun.w(<4 x float> %0, <4 x float> %1)
412   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcun_w_RES
413   ret void
414 }
415
416 declare <4 x i32> @llvm.mips.fcun.w(<4 x float>, <4 x float>) nounwind
417
418 ; CHECK: llvm_mips_fcun_w_test:
419 ; CHECK: ld.w
420 ; CHECK: ld.w
421 ; CHECK: fcun.w
422 ; CHECK: st.w
423 ; CHECK: .size llvm_mips_fcun_w_test
424 ;
425 @llvm_mips_fcun_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
426 @llvm_mips_fcun_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
427 @llvm_mips_fcun_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
428
429 define void @llvm_mips_fcun_d_test() nounwind {
430 entry:
431   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcun_d_ARG1
432   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcun_d_ARG2
433   %2 = tail call <2 x i64> @llvm.mips.fcun.d(<2 x double> %0, <2 x double> %1)
434   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcun_d_RES
435   ret void
436 }
437
438 declare <2 x i64> @llvm.mips.fcun.d(<2 x double>, <2 x double>) nounwind
439
440 ; CHECK: llvm_mips_fcun_d_test:
441 ; CHECK: ld.d
442 ; CHECK: ld.d
443 ; CHECK: fcun.d
444 ; CHECK: st.d
445 ; CHECK: .size llvm_mips_fcun_d_test
446 ;
447 @llvm_mips_fcune_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
448 @llvm_mips_fcune_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
449 @llvm_mips_fcune_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
450
451 define void @llvm_mips_fcune_w_test() nounwind {
452 entry:
453   %0 = load <4 x float>, <4 x float>* @llvm_mips_fcune_w_ARG1
454   %1 = load <4 x float>, <4 x float>* @llvm_mips_fcune_w_ARG2
455   %2 = tail call <4 x i32> @llvm.mips.fcune.w(<4 x float> %0, <4 x float> %1)
456   store <4 x i32> %2, <4 x i32>* @llvm_mips_fcune_w_RES
457   ret void
458 }
459
460 declare <4 x i32> @llvm.mips.fcune.w(<4 x float>, <4 x float>) nounwind
461
462 ; CHECK: llvm_mips_fcune_w_test:
463 ; CHECK: ld.w
464 ; CHECK: ld.w
465 ; CHECK: fcune.w
466 ; CHECK: st.w
467 ; CHECK: .size llvm_mips_fcune_w_test
468 ;
469 @llvm_mips_fcune_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
470 @llvm_mips_fcune_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
471 @llvm_mips_fcune_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
472
473 define void @llvm_mips_fcune_d_test() nounwind {
474 entry:
475   %0 = load <2 x double>, <2 x double>* @llvm_mips_fcune_d_ARG1
476   %1 = load <2 x double>, <2 x double>* @llvm_mips_fcune_d_ARG2
477   %2 = tail call <2 x i64> @llvm.mips.fcune.d(<2 x double> %0, <2 x double> %1)
478   store <2 x i64> %2, <2 x i64>* @llvm_mips_fcune_d_RES
479   ret void
480 }
481
482 declare <2 x i64> @llvm.mips.fcune.d(<2 x double>, <2 x double>) nounwind
483
484 ; CHECK: llvm_mips_fcune_d_test:
485 ; CHECK: ld.d
486 ; CHECK: ld.d
487 ; CHECK: fcune.d
488 ; CHECK: st.d
489 ; CHECK: .size llvm_mips_fcune_d_test
490 ;
491 @llvm_mips_fsaf_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
492 @llvm_mips_fsaf_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
493 @llvm_mips_fsaf_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
494
495 define void @llvm_mips_fsaf_w_test() nounwind {
496 entry:
497   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsaf_w_ARG1
498   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsaf_w_ARG2
499   %2 = tail call <4 x i32> @llvm.mips.fsaf.w(<4 x float> %0, <4 x float> %1)
500   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsaf_w_RES
501   ret void
502 }
503
504 declare <4 x i32> @llvm.mips.fsaf.w(<4 x float>, <4 x float>) nounwind
505
506 ; CHECK: llvm_mips_fsaf_w_test:
507 ; CHECK: ld.w
508 ; CHECK: ld.w
509 ; CHECK: fsaf.w
510 ; CHECK: st.w
511 ; CHECK: .size llvm_mips_fsaf_w_test
512 ;
513 @llvm_mips_fsaf_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
514 @llvm_mips_fsaf_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
515 @llvm_mips_fsaf_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
516
517 define void @llvm_mips_fsaf_d_test() nounwind {
518 entry:
519   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsaf_d_ARG1
520   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsaf_d_ARG2
521   %2 = tail call <2 x i64> @llvm.mips.fsaf.d(<2 x double> %0, <2 x double> %1)
522   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsaf_d_RES
523   ret void
524 }
525
526 declare <2 x i64> @llvm.mips.fsaf.d(<2 x double>, <2 x double>) nounwind
527
528 ; CHECK: llvm_mips_fsaf_d_test:
529 ; CHECK: ld.d
530 ; CHECK: ld.d
531 ; CHECK: fsaf.d
532 ; CHECK: st.d
533 ; CHECK: .size llvm_mips_fsaf_d_test
534 ;
535 @llvm_mips_fseq_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
536 @llvm_mips_fseq_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
537 @llvm_mips_fseq_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
538
539 define void @llvm_mips_fseq_w_test() nounwind {
540 entry:
541   %0 = load <4 x float>, <4 x float>* @llvm_mips_fseq_w_ARG1
542   %1 = load <4 x float>, <4 x float>* @llvm_mips_fseq_w_ARG2
543   %2 = tail call <4 x i32> @llvm.mips.fseq.w(<4 x float> %0, <4 x float> %1)
544   store <4 x i32> %2, <4 x i32>* @llvm_mips_fseq_w_RES
545   ret void
546 }
547
548 declare <4 x i32> @llvm.mips.fseq.w(<4 x float>, <4 x float>) nounwind
549
550 ; CHECK: llvm_mips_fseq_w_test:
551 ; CHECK: ld.w
552 ; CHECK: ld.w
553 ; CHECK: fseq.w
554 ; CHECK: st.w
555 ; CHECK: .size llvm_mips_fseq_w_test
556 ;
557 @llvm_mips_fseq_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
558 @llvm_mips_fseq_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
559 @llvm_mips_fseq_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
560
561 define void @llvm_mips_fseq_d_test() nounwind {
562 entry:
563   %0 = load <2 x double>, <2 x double>* @llvm_mips_fseq_d_ARG1
564   %1 = load <2 x double>, <2 x double>* @llvm_mips_fseq_d_ARG2
565   %2 = tail call <2 x i64> @llvm.mips.fseq.d(<2 x double> %0, <2 x double> %1)
566   store <2 x i64> %2, <2 x i64>* @llvm_mips_fseq_d_RES
567   ret void
568 }
569
570 declare <2 x i64> @llvm.mips.fseq.d(<2 x double>, <2 x double>) nounwind
571
572 ; CHECK: llvm_mips_fseq_d_test:
573 ; CHECK: ld.d
574 ; CHECK: ld.d
575 ; CHECK: fseq.d
576 ; CHECK: st.d
577 ; CHECK: .size llvm_mips_fseq_d_test
578 ;
579 @llvm_mips_fsle_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
580 @llvm_mips_fsle_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
581 @llvm_mips_fsle_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
582
583 define void @llvm_mips_fsle_w_test() nounwind {
584 entry:
585   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsle_w_ARG1
586   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsle_w_ARG2
587   %2 = tail call <4 x i32> @llvm.mips.fsle.w(<4 x float> %0, <4 x float> %1)
588   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsle_w_RES
589   ret void
590 }
591
592 declare <4 x i32> @llvm.mips.fsle.w(<4 x float>, <4 x float>) nounwind
593
594 ; CHECK: llvm_mips_fsle_w_test:
595 ; CHECK: ld.w
596 ; CHECK: ld.w
597 ; CHECK: fsle.w
598 ; CHECK: st.w
599 ; CHECK: .size llvm_mips_fsle_w_test
600 ;
601 @llvm_mips_fsle_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
602 @llvm_mips_fsle_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
603 @llvm_mips_fsle_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
604
605 define void @llvm_mips_fsle_d_test() nounwind {
606 entry:
607   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsle_d_ARG1
608   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsle_d_ARG2
609   %2 = tail call <2 x i64> @llvm.mips.fsle.d(<2 x double> %0, <2 x double> %1)
610   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsle_d_RES
611   ret void
612 }
613
614 declare <2 x i64> @llvm.mips.fsle.d(<2 x double>, <2 x double>) nounwind
615
616 ; CHECK: llvm_mips_fsle_d_test:
617 ; CHECK: ld.d
618 ; CHECK: ld.d
619 ; CHECK: fsle.d
620 ; CHECK: st.d
621 ; CHECK: .size llvm_mips_fsle_d_test
622 ;
623 @llvm_mips_fslt_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
624 @llvm_mips_fslt_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
625 @llvm_mips_fslt_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
626
627 define void @llvm_mips_fslt_w_test() nounwind {
628 entry:
629   %0 = load <4 x float>, <4 x float>* @llvm_mips_fslt_w_ARG1
630   %1 = load <4 x float>, <4 x float>* @llvm_mips_fslt_w_ARG2
631   %2 = tail call <4 x i32> @llvm.mips.fslt.w(<4 x float> %0, <4 x float> %1)
632   store <4 x i32> %2, <4 x i32>* @llvm_mips_fslt_w_RES
633   ret void
634 }
635
636 declare <4 x i32> @llvm.mips.fslt.w(<4 x float>, <4 x float>) nounwind
637
638 ; CHECK: llvm_mips_fslt_w_test:
639 ; CHECK: ld.w
640 ; CHECK: ld.w
641 ; CHECK: fslt.w
642 ; CHECK: st.w
643 ; CHECK: .size llvm_mips_fslt_w_test
644 ;
645 @llvm_mips_fslt_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
646 @llvm_mips_fslt_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
647 @llvm_mips_fslt_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
648
649 define void @llvm_mips_fslt_d_test() nounwind {
650 entry:
651   %0 = load <2 x double>, <2 x double>* @llvm_mips_fslt_d_ARG1
652   %1 = load <2 x double>, <2 x double>* @llvm_mips_fslt_d_ARG2
653   %2 = tail call <2 x i64> @llvm.mips.fslt.d(<2 x double> %0, <2 x double> %1)
654   store <2 x i64> %2, <2 x i64>* @llvm_mips_fslt_d_RES
655   ret void
656 }
657
658 declare <2 x i64> @llvm.mips.fslt.d(<2 x double>, <2 x double>) nounwind
659
660 ; CHECK: llvm_mips_fslt_d_test:
661 ; CHECK: ld.d
662 ; CHECK: ld.d
663 ; CHECK: fslt.d
664 ; CHECK: st.d
665 ; CHECK: .size llvm_mips_fslt_d_test
666 ;
667 @llvm_mips_fsor_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
668 @llvm_mips_fsor_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
669 @llvm_mips_fsor_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
670
671 define void @llvm_mips_fsor_w_test() nounwind {
672 entry:
673   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsor_w_ARG1
674   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsor_w_ARG2
675   %2 = tail call <4 x i32> @llvm.mips.fsor.w(<4 x float> %0, <4 x float> %1)
676   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsor_w_RES
677   ret void
678 }
679
680 declare <4 x i32> @llvm.mips.fsor.w(<4 x float>, <4 x float>) nounwind
681
682 ; CHECK: llvm_mips_fsor_w_test:
683 ; CHECK: ld.w
684 ; CHECK: ld.w
685 ; CHECK: fsor.w
686 ; CHECK: st.w
687 ; CHECK: .size llvm_mips_fsor_w_test
688 ;
689 @llvm_mips_fsor_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
690 @llvm_mips_fsor_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
691 @llvm_mips_fsor_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
692
693 define void @llvm_mips_fsor_d_test() nounwind {
694 entry:
695   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsor_d_ARG1
696   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsor_d_ARG2
697   %2 = tail call <2 x i64> @llvm.mips.fsor.d(<2 x double> %0, <2 x double> %1)
698   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsor_d_RES
699   ret void
700 }
701
702 declare <2 x i64> @llvm.mips.fsor.d(<2 x double>, <2 x double>) nounwind
703
704 ; CHECK: llvm_mips_fsor_d_test:
705 ; CHECK: ld.d
706 ; CHECK: ld.d
707 ; CHECK: fsor.d
708 ; CHECK: st.d
709 ; CHECK: .size llvm_mips_fsor_d_test
710 ;
711 @llvm_mips_fsne_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
712 @llvm_mips_fsne_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
713 @llvm_mips_fsne_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
714
715 define void @llvm_mips_fsne_w_test() nounwind {
716 entry:
717   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsne_w_ARG1
718   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsne_w_ARG2
719   %2 = tail call <4 x i32> @llvm.mips.fsne.w(<4 x float> %0, <4 x float> %1)
720   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsne_w_RES
721   ret void
722 }
723
724 declare <4 x i32> @llvm.mips.fsne.w(<4 x float>, <4 x float>) nounwind
725
726 ; CHECK: llvm_mips_fsne_w_test:
727 ; CHECK: ld.w
728 ; CHECK: ld.w
729 ; CHECK: fsne.w
730 ; CHECK: st.w
731 ; CHECK: .size llvm_mips_fsne_w_test
732 ;
733 @llvm_mips_fsne_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
734 @llvm_mips_fsne_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
735 @llvm_mips_fsne_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
736
737 define void @llvm_mips_fsne_d_test() nounwind {
738 entry:
739   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsne_d_ARG1
740   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsne_d_ARG2
741   %2 = tail call <2 x i64> @llvm.mips.fsne.d(<2 x double> %0, <2 x double> %1)
742   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsne_d_RES
743   ret void
744 }
745
746 declare <2 x i64> @llvm.mips.fsne.d(<2 x double>, <2 x double>) nounwind
747
748 ; CHECK: llvm_mips_fsne_d_test:
749 ; CHECK: ld.d
750 ; CHECK: ld.d
751 ; CHECK: fsne.d
752 ; CHECK: st.d
753 ; CHECK: .size llvm_mips_fsne_d_test
754 ;
755 @llvm_mips_fsueq_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
756 @llvm_mips_fsueq_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
757 @llvm_mips_fsueq_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
758
759 define void @llvm_mips_fsueq_w_test() nounwind {
760 entry:
761   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsueq_w_ARG1
762   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsueq_w_ARG2
763   %2 = tail call <4 x i32> @llvm.mips.fsueq.w(<4 x float> %0, <4 x float> %1)
764   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsueq_w_RES
765   ret void
766 }
767
768 declare <4 x i32> @llvm.mips.fsueq.w(<4 x float>, <4 x float>) nounwind
769
770 ; CHECK: llvm_mips_fsueq_w_test:
771 ; CHECK: ld.w
772 ; CHECK: ld.w
773 ; CHECK: fsueq.w
774 ; CHECK: st.w
775 ; CHECK: .size llvm_mips_fsueq_w_test
776 ;
777 @llvm_mips_fsueq_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
778 @llvm_mips_fsueq_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
779 @llvm_mips_fsueq_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
780
781 define void @llvm_mips_fsueq_d_test() nounwind {
782 entry:
783   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsueq_d_ARG1
784   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsueq_d_ARG2
785   %2 = tail call <2 x i64> @llvm.mips.fsueq.d(<2 x double> %0, <2 x double> %1)
786   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsueq_d_RES
787   ret void
788 }
789
790 declare <2 x i64> @llvm.mips.fsueq.d(<2 x double>, <2 x double>) nounwind
791
792 ; CHECK: llvm_mips_fsueq_d_test:
793 ; CHECK: ld.d
794 ; CHECK: ld.d
795 ; CHECK: fsueq.d
796 ; CHECK: st.d
797 ; CHECK: .size llvm_mips_fsueq_d_test
798 ;
799 @llvm_mips_fsult_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
800 @llvm_mips_fsult_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
801 @llvm_mips_fsult_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
802
803 define void @llvm_mips_fsult_w_test() nounwind {
804 entry:
805   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsult_w_ARG1
806   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsult_w_ARG2
807   %2 = tail call <4 x i32> @llvm.mips.fsult.w(<4 x float> %0, <4 x float> %1)
808   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsult_w_RES
809   ret void
810 }
811
812 declare <4 x i32> @llvm.mips.fsult.w(<4 x float>, <4 x float>) nounwind
813
814 ; CHECK: llvm_mips_fsult_w_test:
815 ; CHECK: ld.w
816 ; CHECK: ld.w
817 ; CHECK: fsult.w
818 ; CHECK: st.w
819 ; CHECK: .size llvm_mips_fsult_w_test
820 ;
821 @llvm_mips_fsult_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
822 @llvm_mips_fsult_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
823 @llvm_mips_fsult_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
824
825 define void @llvm_mips_fsult_d_test() nounwind {
826 entry:
827   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsult_d_ARG1
828   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsult_d_ARG2
829   %2 = tail call <2 x i64> @llvm.mips.fsult.d(<2 x double> %0, <2 x double> %1)
830   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsult_d_RES
831   ret void
832 }
833
834 declare <2 x i64> @llvm.mips.fsult.d(<2 x double>, <2 x double>) nounwind
835
836 ; CHECK: llvm_mips_fsult_d_test:
837 ; CHECK: ld.d
838 ; CHECK: ld.d
839 ; CHECK: fsult.d
840 ; CHECK: st.d
841 ; CHECK: .size llvm_mips_fsult_d_test
842 ;
843 @llvm_mips_fsule_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
844 @llvm_mips_fsule_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
845 @llvm_mips_fsule_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
846
847 define void @llvm_mips_fsule_w_test() nounwind {
848 entry:
849   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsule_w_ARG1
850   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsule_w_ARG2
851   %2 = tail call <4 x i32> @llvm.mips.fsule.w(<4 x float> %0, <4 x float> %1)
852   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsule_w_RES
853   ret void
854 }
855
856 declare <4 x i32> @llvm.mips.fsule.w(<4 x float>, <4 x float>) nounwind
857
858 ; CHECK: llvm_mips_fsule_w_test:
859 ; CHECK: ld.w
860 ; CHECK: ld.w
861 ; CHECK: fsule.w
862 ; CHECK: st.w
863 ; CHECK: .size llvm_mips_fsule_w_test
864 ;
865 @llvm_mips_fsule_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
866 @llvm_mips_fsule_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
867 @llvm_mips_fsule_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
868
869 define void @llvm_mips_fsule_d_test() nounwind {
870 entry:
871   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsule_d_ARG1
872   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsule_d_ARG2
873   %2 = tail call <2 x i64> @llvm.mips.fsule.d(<2 x double> %0, <2 x double> %1)
874   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsule_d_RES
875   ret void
876 }
877
878 declare <2 x i64> @llvm.mips.fsule.d(<2 x double>, <2 x double>) nounwind
879
880 ; CHECK: llvm_mips_fsule_d_test:
881 ; CHECK: ld.d
882 ; CHECK: ld.d
883 ; CHECK: fsule.d
884 ; CHECK: st.d
885 ; CHECK: .size llvm_mips_fsule_d_test
886 ;
887 @llvm_mips_fsun_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
888 @llvm_mips_fsun_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
889 @llvm_mips_fsun_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
890
891 define void @llvm_mips_fsun_w_test() nounwind {
892 entry:
893   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsun_w_ARG1
894   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsun_w_ARG2
895   %2 = tail call <4 x i32> @llvm.mips.fsun.w(<4 x float> %0, <4 x float> %1)
896   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsun_w_RES
897   ret void
898 }
899
900 declare <4 x i32> @llvm.mips.fsun.w(<4 x float>, <4 x float>) nounwind
901
902 ; CHECK: llvm_mips_fsun_w_test:
903 ; CHECK: ld.w
904 ; CHECK: ld.w
905 ; CHECK: fsun.w
906 ; CHECK: st.w
907 ; CHECK: .size llvm_mips_fsun_w_test
908 ;
909 @llvm_mips_fsun_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
910 @llvm_mips_fsun_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
911 @llvm_mips_fsun_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
912
913 define void @llvm_mips_fsun_d_test() nounwind {
914 entry:
915   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsun_d_ARG1
916   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsun_d_ARG2
917   %2 = tail call <2 x i64> @llvm.mips.fsun.d(<2 x double> %0, <2 x double> %1)
918   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsun_d_RES
919   ret void
920 }
921
922 declare <2 x i64> @llvm.mips.fsun.d(<2 x double>, <2 x double>) nounwind
923
924 ; CHECK: llvm_mips_fsun_d_test:
925 ; CHECK: ld.d
926 ; CHECK: ld.d
927 ; CHECK: fsun.d
928 ; CHECK: st.d
929 ; CHECK: .size llvm_mips_fsun_d_test
930 ;
931 @llvm_mips_fsune_w_ARG1 = global <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, align 16
932 @llvm_mips_fsune_w_ARG2 = global <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, align 16
933 @llvm_mips_fsune_w_RES  = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16
934
935 define void @llvm_mips_fsune_w_test() nounwind {
936 entry:
937   %0 = load <4 x float>, <4 x float>* @llvm_mips_fsune_w_ARG1
938   %1 = load <4 x float>, <4 x float>* @llvm_mips_fsune_w_ARG2
939   %2 = tail call <4 x i32> @llvm.mips.fsune.w(<4 x float> %0, <4 x float> %1)
940   store <4 x i32> %2, <4 x i32>* @llvm_mips_fsune_w_RES
941   ret void
942 }
943
944 declare <4 x i32> @llvm.mips.fsune.w(<4 x float>, <4 x float>) nounwind
945
946 ; CHECK: llvm_mips_fsune_w_test:
947 ; CHECK: ld.w
948 ; CHECK: ld.w
949 ; CHECK: fsune.w
950 ; CHECK: st.w
951 ; CHECK: .size llvm_mips_fsune_w_test
952 ;
953 @llvm_mips_fsune_d_ARG1 = global <2 x double> <double 0.000000e+00, double 1.000000e+00>, align 16
954 @llvm_mips_fsune_d_ARG2 = global <2 x double> <double 2.000000e+00, double 3.000000e+00>, align 16
955 @llvm_mips_fsune_d_RES  = global <2 x i64> <i64 0, i64 0>, align 16
956
957 define void @llvm_mips_fsune_d_test() nounwind {
958 entry:
959   %0 = load <2 x double>, <2 x double>* @llvm_mips_fsune_d_ARG1
960   %1 = load <2 x double>, <2 x double>* @llvm_mips_fsune_d_ARG2
961   %2 = tail call <2 x i64> @llvm.mips.fsune.d(<2 x double> %0, <2 x double> %1)
962   store <2 x i64> %2, <2 x i64>* @llvm_mips_fsune_d_RES
963   ret void
964 }
965
966 declare <2 x i64> @llvm.mips.fsune.d(<2 x double>, <2 x double>) nounwind
967
968 ; CHECK: llvm_mips_fsune_d_test:
969 ; CHECK: ld.d
970 ; CHECK: ld.d
971 ; CHECK: fsune.d
972 ; CHECK: st.d
973 ; CHECK: .size llvm_mips_fsune_d_test
974 ;