Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / gcc.target / mips / mips-3d-8.c
blob601e5ff30a4820997020f13a85e6c5168d17e841
1 /* { dg-do run { target mipsisa64*-*-* } } */
2 /* { dg-mips-options "-mips64 -O2 -mips3d -mhard-float -mgp64" } */
4 /* Test MIPS-3D absolute compare and conditional move builtin functions */
5 #include <stdlib.h>
6 #include <stdio.h>
8 typedef float v2sf __attribute__((vector_size(8)));
10 v2sf test0 (v2sf a, v2sf b, v2sf c, v2sf d);
11 v2sf test1 (v2sf a, v2sf b, v2sf c, v2sf d);
12 v2sf test2 (v2sf a, v2sf b, v2sf c, v2sf d);
13 v2sf test3 (v2sf a, v2sf b, v2sf c, v2sf d);
14 v2sf test4 (v2sf a, v2sf b, v2sf c, v2sf d);
15 v2sf test5 (v2sf a, v2sf b, v2sf c, v2sf d);
16 v2sf test6 (v2sf a, v2sf b, v2sf c, v2sf d);
17 v2sf test7 (v2sf a, v2sf b, v2sf c, v2sf d);
18 v2sf test8 (v2sf a, v2sf b, v2sf c, v2sf d);
19 v2sf test9 (v2sf a, v2sf b, v2sf c, v2sf d);
20 v2sf test10 (v2sf a, v2sf b, v2sf c, v2sf d);
21 v2sf test11 (v2sf a, v2sf b, v2sf c, v2sf d);
22 v2sf test12 (v2sf a, v2sf b, v2sf c, v2sf d);
23 v2sf test13 (v2sf a, v2sf b, v2sf c, v2sf d);
24 v2sf test14 (v2sf a, v2sf b, v2sf c, v2sf d);
25 v2sf test15 (v2sf a, v2sf b, v2sf c, v2sf d);
26 v2sf test16 (v2sf a, v2sf b, v2sf c, v2sf d);
27 v2sf test17 (v2sf a, v2sf b, v2sf c, v2sf d);
28 v2sf test18 (v2sf a, v2sf b, v2sf c, v2sf d);
29 v2sf test19 (v2sf a, v2sf b, v2sf c, v2sf d);
30 v2sf test20 (v2sf a, v2sf b, v2sf c, v2sf d);
31 v2sf test21 (v2sf a, v2sf b, v2sf c, v2sf d);
32 v2sf test22 (v2sf a, v2sf b, v2sf c, v2sf d);
33 v2sf test23 (v2sf a, v2sf b, v2sf c, v2sf d);
34 v2sf test24 (v2sf a, v2sf b, v2sf c, v2sf d);
35 v2sf test25 (v2sf a, v2sf b, v2sf c, v2sf d);
36 v2sf test26 (v2sf a, v2sf b, v2sf c, v2sf d);
37 v2sf test27 (v2sf a, v2sf b, v2sf c, v2sf d);
38 v2sf test28 (v2sf a, v2sf b, v2sf c, v2sf d);
39 v2sf test29 (v2sf a, v2sf b, v2sf c, v2sf d);
40 v2sf test30 (v2sf a, v2sf b, v2sf c, v2sf d);
41 v2sf test31 (v2sf a, v2sf b, v2sf c, v2sf d);
43 float qnan = 1.0f/0.0f - 1.0f/0.0f;
45 int main ()
47 v2sf a, b, c, d, e, f;
49 /* Case 1 {diff, diff} */
50 /* movt.ps */
51 a = (v2sf) {5, 12};
52 b = (v2sf) {-7, -6};
53 c = (v2sf) {33, 123};
54 d = (v2sf) {8, 78};
55 e = __builtin_mips_movt_cabs_eq_ps (a, b, c, d);
56 f = (v2sf) {33, 123};
57 if (!__builtin_mips_all_c_eq_ps (e, f))
58 abort ();
60 /* movf.ps */
61 e = __builtin_mips_movf_cabs_eq_ps (a, b, c, d);
62 f = (v2sf) {8, 78};
63 if (!__builtin_mips_all_c_eq_ps (e, f))
64 abort ();
66 /* Case 2 {same, diff} */
67 /* movt.ps */
68 a = (v2sf) {5, 12};
69 b = (v2sf) {-5, -6};
70 c = (v2sf) {33, 123};
71 d = (v2sf) {8, 78};
72 e = __builtin_mips_movt_cabs_eq_ps (a, b, c, d);
73 f = (v2sf) {8, 123};
74 if (!__builtin_mips_all_c_eq_ps (e, f))
75 abort ();
77 /* movf.ps */
78 e = __builtin_mips_movf_cabs_eq_ps (a, b, c, d);
79 f = (v2sf) {33, 78};
80 if (!__builtin_mips_all_c_eq_ps (e, f))
81 abort ();
83 /* Case 3 {diff, same} */
84 /* movt.ps */
85 a = (v2sf) {5, 12};
86 b = (v2sf) {-9, -12};
87 c = (v2sf) {33, 123};
88 d = (v2sf) {8, 78};
89 e = __builtin_mips_movt_cabs_eq_ps (a, b, c, d);
90 f = (v2sf) {33, 78};
91 if (!__builtin_mips_all_c_eq_ps (e, f))
92 abort ();
94 /* movf.ps */
95 e = __builtin_mips_movf_cabs_eq_ps (a, b, c, d);
96 f = (v2sf) {8, 123};
97 if (!__builtin_mips_all_c_eq_ps (e, f))
98 abort ();
100 /* Case 4 {same, same} */
101 /* movt.ps */
102 a = (v2sf) {5, 12};
103 b = (v2sf) {-5, -12};
104 c = (v2sf) {33, 123};
105 d = (v2sf) {8, 78};
106 e = __builtin_mips_movt_cabs_eq_ps (a, b, c, d);
107 f = (v2sf) {8, 78};
108 if (!__builtin_mips_all_c_eq_ps (e, f))
109 abort ();
111 /* movf.ps */
112 e = __builtin_mips_movf_cabs_eq_ps (a, b, c, d);
113 f = (v2sf) {33, 123};
114 if (!__builtin_mips_all_c_eq_ps (e, f))
115 abort ();
117 /* Test all 16 operators */
118 a = (v2sf) {-123, 123};
119 b = (v2sf) {1000, -1000};
120 c = (v2sf) {-33, 123};
121 d = (v2sf) {8, -78};
123 e = test0 (a, b, c, d);
124 if (!__builtin_mips_all_c_eq_ps (e, c))
125 abort ();
126 e = test1 (a, b, c, d);
127 if (!__builtin_mips_all_c_eq_ps (e, d))
128 abort ();
130 e = test2 (a, b, c, d);
131 if (!__builtin_mips_all_c_eq_ps (e, c))
132 abort ();
133 e = test3 (a, b, c, d);
134 if (!__builtin_mips_all_c_eq_ps (e, d))
135 abort ();
137 e = test4 (a, b, c, d);
138 if (!__builtin_mips_all_c_eq_ps (e, c))
139 abort ();
140 e = test5 (a, b, c, d);
141 if (!__builtin_mips_all_c_eq_ps (e, d))
142 abort ();
144 e = test6 (a, b, c, d);
145 if (!__builtin_mips_all_c_eq_ps (e, c))
146 abort ();
147 e = test7 (a, b, c, d);
148 if (!__builtin_mips_all_c_eq_ps (e, d))
149 abort ();
151 e = test8 (a, b, c, d);
152 if (!__builtin_mips_all_c_eq_ps (e, d))
153 abort ();
154 e = test9 (a, b, c, d);
155 if (!__builtin_mips_all_c_eq_ps (e, c))
156 abort ();
158 e = test10 (a, b, c, d);
159 if (!__builtin_mips_all_c_eq_ps (e, d))
160 abort ();
161 e = test11 (a, b, c, d);
162 if (!__builtin_mips_all_c_eq_ps (e, c))
163 abort ();
165 e = test12 (a, b, c, d);
166 if (!__builtin_mips_all_c_eq_ps (e, d))
167 abort ();
168 e = test13 (a, b, c, d);
169 if (!__builtin_mips_all_c_eq_ps (e, c))
170 abort ();
172 e = test14 (a, b, c, d);
173 if (!__builtin_mips_all_c_eq_ps (e, d))
174 abort ();
175 e = test15 (a, b, c, d);
176 if (!__builtin_mips_all_c_eq_ps (e, c))
177 abort ();
179 e = test16 (a, b, c, d);
180 if (!__builtin_mips_all_c_eq_ps (e, c))
181 abort ();
182 e = test17 (a, b, c, d);
183 if (!__builtin_mips_all_c_eq_ps (e, d))
184 abort ();
186 e = test18 (a, b, c, d);
187 if (!__builtin_mips_all_c_eq_ps (e, c))
188 abort ();
189 e = test19 (a, b, c, d);
190 if (!__builtin_mips_all_c_eq_ps (e, d))
191 abort ();
193 e = test20 (a, b, c, d);
194 if (!__builtin_mips_all_c_eq_ps (e, c))
195 abort ();
196 e = test21 (a, b, c, d);
197 if (!__builtin_mips_all_c_eq_ps (e, d))
198 abort ();
200 e = test22 (a, b, c, d);
201 if (!__builtin_mips_all_c_eq_ps (e, c))
202 abort ();
203 e = test23 (a, b, c, d);
204 if (!__builtin_mips_all_c_eq_ps (e, d))
205 abort ();
207 e = test24 (a, b, c, d);
208 if (!__builtin_mips_all_c_eq_ps (e, d))
209 abort ();
210 e = test25 (a, b, c, d);
211 if (!__builtin_mips_all_c_eq_ps (e, c))
212 abort ();
214 e = test26 (a, b, c, d);
215 if (!__builtin_mips_all_c_eq_ps (e, d))
216 abort ();
217 e = test27 (a, b, c, d);
218 if (!__builtin_mips_all_c_eq_ps (e, c))
219 abort ();
221 e = test28 (a, b, c, d);
222 if (!__builtin_mips_all_c_eq_ps (e, d))
223 abort ();
224 e = test29 (a, b, c, d);
225 if (!__builtin_mips_all_c_eq_ps (e, c))
226 abort ();
228 e = test30 (a, b, c, d);
229 if (!__builtin_mips_all_c_eq_ps (e, d))
230 abort ();
231 e = test31 (a, b, c, d);
232 if (!__builtin_mips_all_c_eq_ps (e, c))
233 abort ();
235 /* Reversed arguments */
236 e = test0 (b, a, c, d);
237 if (!__builtin_mips_all_c_eq_ps (e, c))
238 abort ();
239 e = test1 (b, a, c, d);
240 if (!__builtin_mips_all_c_eq_ps (e, d))
241 abort ();
243 e = test2 (b, a, c, d);
244 if (!__builtin_mips_all_c_eq_ps (e, c))
245 abort ();
246 e = test3 (b, a, c, d);
247 if (!__builtin_mips_all_c_eq_ps (e, d))
248 abort ();
250 e = test4 (b, a, c, d);
251 if (!__builtin_mips_all_c_eq_ps (e, c))
252 abort ();
253 e = test5 (b, a, c, d);
254 if (!__builtin_mips_all_c_eq_ps (e, d))
255 abort ();
257 e = test6 (b, a, c, d);
258 if (!__builtin_mips_all_c_eq_ps (e, c))
259 abort ();
260 e = test7 (b, a, c, d);
261 if (!__builtin_mips_all_c_eq_ps (e, d))
262 abort ();
264 e = test8 (b, a, c, d);
265 if (!__builtin_mips_all_c_eq_ps (e, c))
266 abort ();
267 e = test9 (b, a, c, d);
268 if (!__builtin_mips_all_c_eq_ps (e, d))
269 abort ();
271 e = test10 (b, a, c, d);
272 if (!__builtin_mips_all_c_eq_ps (e, c))
273 abort ();
274 e = test11 (b, a, c, d);
275 if (!__builtin_mips_all_c_eq_ps (e, d))
276 abort ();
278 e = test12 (b, a, c, d);
279 if (!__builtin_mips_all_c_eq_ps (e, c))
280 abort ();
281 e = test13 (b, a, c, d);
282 if (!__builtin_mips_all_c_eq_ps (e, d))
283 abort ();
285 e = test14 (b, a, c, d);
286 if (!__builtin_mips_all_c_eq_ps (e, c))
287 abort ();
288 e = test15 (b, a, c, d);
289 if (!__builtin_mips_all_c_eq_ps (e, d))
290 abort ();
292 e = test16 (b, a, c, d);
293 if (!__builtin_mips_all_c_eq_ps (e, c))
294 abort ();
295 e = test17 (b, a, c, d);
296 if (!__builtin_mips_all_c_eq_ps (e, d))
297 abort ();
299 e = test18 (b, a, c, d);
300 if (!__builtin_mips_all_c_eq_ps (e, c))
301 abort ();
302 e = test19 (b, a, c, d);
303 if (!__builtin_mips_all_c_eq_ps (e, d))
304 abort ();
306 e = test20 (b, a, c, d);
307 if (!__builtin_mips_all_c_eq_ps (e, c))
308 abort ();
309 e = test21 (b, a, c, d);
310 if (!__builtin_mips_all_c_eq_ps (e, d))
311 abort ();
313 e = test22 (b, a, c, d);
314 if (!__builtin_mips_all_c_eq_ps (e, c))
315 abort ();
316 e = test23 (b, a, c, d);
317 if (!__builtin_mips_all_c_eq_ps (e, d))
318 abort ();
320 e = test24 (b, a, c, d);
321 if (!__builtin_mips_all_c_eq_ps (e, c))
322 abort ();
323 e = test25 (b, a, c, d);
324 if (!__builtin_mips_all_c_eq_ps (e, d))
325 abort ();
327 e = test26 (b, a, c, d);
328 if (!__builtin_mips_all_c_eq_ps (e, c))
329 abort ();
330 e = test27 (b, a, c, d);
331 if (!__builtin_mips_all_c_eq_ps (e, d))
332 abort ();
334 e = test28 (b, a, c, d);
335 if (!__builtin_mips_all_c_eq_ps (e, c))
336 abort ();
337 e = test29 (b, a, c, d);
338 if (!__builtin_mips_all_c_eq_ps (e, d))
339 abort ();
341 e = test30 (b, a, c, d);
342 if (!__builtin_mips_all_c_eq_ps (e, c))
343 abort ();
344 e = test31 (b, a, c, d);
345 if (!__builtin_mips_all_c_eq_ps (e, d))
346 abort ();
348 #ifndef __FAST_MATH__
349 /* Test all 16 operators */
350 a = (v2sf) {qnan, qnan};
351 b = (v2sf) {1000, -1000};
352 c = (v2sf) {8, -78};
353 d = (v2sf) {-33, 123};
355 e = test0 (a, b, c, d);
356 if (!__builtin_mips_all_c_eq_ps (e, c))
357 abort ();
358 e = test1 (a, b, c, d);
359 if (!__builtin_mips_all_c_eq_ps (e, d))
360 abort ();
362 e = test2 (a, b, c, d);
363 if (!__builtin_mips_all_c_eq_ps (e, d))
364 abort ();
365 e = test3 (a, b, c, d);
366 if (!__builtin_mips_all_c_eq_ps (e, c))
367 abort ();
369 e = test4 (a, b, c, d);
370 if (!__builtin_mips_all_c_eq_ps (e, c))
371 abort ();
372 e = test5 (a, b, c, d);
373 if (!__builtin_mips_all_c_eq_ps (e, d))
374 abort ();
376 e = test6 (a, b, c, d);
377 if (!__builtin_mips_all_c_eq_ps (e, d))
378 abort ();
379 e = test7 (a, b, c, d);
380 if (!__builtin_mips_all_c_eq_ps (e, c))
381 abort ();
383 e = test8 (a, b, c, d);
384 if (!__builtin_mips_all_c_eq_ps (e, c))
385 abort ();
386 e = test9 (a, b, c, d);
387 if (!__builtin_mips_all_c_eq_ps (e, d))
388 abort ();
390 e = test10 (a, b, c, d);
391 if (!__builtin_mips_all_c_eq_ps (e, d))
392 abort ();
393 e = test11 (a, b, c, d);
394 if (!__builtin_mips_all_c_eq_ps (e, c))
395 abort ();
397 e = test12 (a, b, c, d);
398 if (!__builtin_mips_all_c_eq_ps (e, c))
399 abort ();
400 e = test13 (a, b, c, d);
401 if (!__builtin_mips_all_c_eq_ps (e, d))
402 abort ();
404 e = test14 (a, b, c, d);
405 if (!__builtin_mips_all_c_eq_ps (e, d))
406 abort ();
407 e = test15 (a, b, c, d);
408 if (!__builtin_mips_all_c_eq_ps (e, c))
409 abort ();
411 e = test16 (a, b, c, d);
412 if (!__builtin_mips_all_c_eq_ps (e, c))
413 abort ();
414 e = test17 (a, b, c, d);
415 if (!__builtin_mips_all_c_eq_ps (e, d))
416 abort ();
418 e = test18 (a, b, c, d);
419 if (!__builtin_mips_all_c_eq_ps (e, d))
420 abort ();
421 e = test19 (a, b, c, d);
422 if (!__builtin_mips_all_c_eq_ps (e, c))
423 abort ();
425 e = test20 (a, b, c, d);
426 if (!__builtin_mips_all_c_eq_ps (e, c))
427 abort ();
428 e = test21 (a, b, c, d);
429 if (!__builtin_mips_all_c_eq_ps (e, d))
430 abort ();
432 e = test22 (a, b, c, d);
433 if (!__builtin_mips_all_c_eq_ps (e, d))
434 abort ();
435 e = test23 (a, b, c, d);
436 if (!__builtin_mips_all_c_eq_ps (e, c))
437 abort ();
439 e = test24 (a, b, c, d);
440 if (!__builtin_mips_all_c_eq_ps (e, c))
441 abort ();
442 e = test25 (a, b, c, d);
443 if (!__builtin_mips_all_c_eq_ps (e, d))
444 abort ();
446 e = test26 (a, b, c, d);
447 if (!__builtin_mips_all_c_eq_ps (e, d))
448 abort ();
449 e = test27 (a, b, c, d);
450 if (!__builtin_mips_all_c_eq_ps (e, c))
451 abort ();
453 e = test28 (a, b, c, d);
454 if (!__builtin_mips_all_c_eq_ps (e, c))
455 abort ();
456 e = test29 (a, b, c, d);
457 if (!__builtin_mips_all_c_eq_ps (e, d))
458 abort ();
460 e = test30 (a, b, c, d);
461 if (!__builtin_mips_all_c_eq_ps (e, d))
462 abort ();
463 e = test31 (a, b, c, d);
464 if (!__builtin_mips_all_c_eq_ps (e, c))
465 abort ();
466 #endif
468 printf ("Test Passes\n");
469 exit (0);
472 v2sf test0 (v2sf a, v2sf b, v2sf c, v2sf d)
474 return __builtin_mips_movt_cabs_f_ps (a, b, c, d);
477 v2sf test1 (v2sf a, v2sf b, v2sf c, v2sf d)
479 return __builtin_mips_movf_cabs_f_ps (a, b, c, d);
482 v2sf test2 (v2sf a, v2sf b, v2sf c, v2sf d)
484 return __builtin_mips_movt_cabs_un_ps (a, b, c, d);
487 v2sf test3 (v2sf a, v2sf b, v2sf c, v2sf d)
489 return __builtin_mips_movf_cabs_un_ps (a, b, c, d);
492 v2sf test4 (v2sf a, v2sf b, v2sf c, v2sf d)
494 return __builtin_mips_movt_cabs_eq_ps (a, b, c, d);
497 v2sf test5 (v2sf a, v2sf b, v2sf c, v2sf d)
499 return __builtin_mips_movf_cabs_eq_ps (a, b, c, d);
502 v2sf test6 (v2sf a, v2sf b, v2sf c, v2sf d)
504 return __builtin_mips_movt_cabs_ueq_ps (a, b, c, d);
507 v2sf test7 (v2sf a, v2sf b, v2sf c, v2sf d)
509 return __builtin_mips_movf_cabs_ueq_ps (a, b, c, d);
512 v2sf test8 (v2sf a, v2sf b, v2sf c, v2sf d)
514 return __builtin_mips_movt_cabs_olt_ps (a, b, c, d);
517 v2sf test9 (v2sf a, v2sf b, v2sf c, v2sf d)
519 return __builtin_mips_movf_cabs_olt_ps (a, b, c, d);
522 v2sf test10 (v2sf a, v2sf b, v2sf c, v2sf d)
524 return __builtin_mips_movt_cabs_ult_ps (a, b, c, d);
527 v2sf test11 (v2sf a, v2sf b, v2sf c, v2sf d)
529 return __builtin_mips_movf_cabs_ult_ps (a, b, c, d);
532 v2sf test12 (v2sf a, v2sf b, v2sf c, v2sf d)
534 return __builtin_mips_movt_cabs_ole_ps (a, b, c, d);
537 v2sf test13 (v2sf a, v2sf b, v2sf c, v2sf d)
539 return __builtin_mips_movf_cabs_ole_ps (a, b, c, d);
542 v2sf test14 (v2sf a, v2sf b, v2sf c, v2sf d)
544 return __builtin_mips_movt_cabs_ule_ps (a, b, c, d);
547 v2sf test15 (v2sf a, v2sf b, v2sf c, v2sf d)
549 return __builtin_mips_movf_cabs_ule_ps (a, b, c, d);
552 v2sf test16 (v2sf a, v2sf b, v2sf c, v2sf d)
554 return __builtin_mips_movt_cabs_sf_ps (a, b, c, d);
557 v2sf test17 (v2sf a, v2sf b, v2sf c, v2sf d)
559 return __builtin_mips_movf_cabs_sf_ps (a, b, c, d);
562 v2sf test18 (v2sf a, v2sf b, v2sf c, v2sf d)
564 return __builtin_mips_movt_cabs_ngle_ps (a, b, c, d);
567 v2sf test19 (v2sf a, v2sf b, v2sf c, v2sf d)
569 return __builtin_mips_movf_cabs_ngle_ps (a, b, c, d);
572 v2sf test20 (v2sf a, v2sf b, v2sf c, v2sf d)
574 return __builtin_mips_movt_cabs_seq_ps (a, b, c, d);
577 v2sf test21 (v2sf a, v2sf b, v2sf c, v2sf d)
579 return __builtin_mips_movf_cabs_seq_ps (a, b, c, d);
582 v2sf test22 (v2sf a, v2sf b, v2sf c, v2sf d)
584 return __builtin_mips_movt_cabs_ngl_ps (a, b, c, d);
587 v2sf test23 (v2sf a, v2sf b, v2sf c, v2sf d)
589 return __builtin_mips_movf_cabs_ngl_ps (a, b, c, d);
592 v2sf test24 (v2sf a, v2sf b, v2sf c, v2sf d)
594 return __builtin_mips_movt_cabs_lt_ps (a, b, c, d);
597 v2sf test25 (v2sf a, v2sf b, v2sf c, v2sf d)
599 return __builtin_mips_movf_cabs_lt_ps (a, b, c, d);
602 v2sf test26 (v2sf a, v2sf b, v2sf c, v2sf d)
604 return __builtin_mips_movt_cabs_nge_ps (a, b, c, d);
607 v2sf test27 (v2sf a, v2sf b, v2sf c, v2sf d)
609 return __builtin_mips_movf_cabs_nge_ps (a, b, c, d);
612 v2sf test28 (v2sf a, v2sf b, v2sf c, v2sf d)
614 return __builtin_mips_movt_cabs_le_ps (a, b, c, d);
617 v2sf test29 (v2sf a, v2sf b, v2sf c, v2sf d)
619 return __builtin_mips_movf_cabs_le_ps (a, b, c, d);
622 v2sf test30 (v2sf a, v2sf b, v2sf c, v2sf d)
624 return __builtin_mips_movt_cabs_ngt_ps (a, b, c, d);
627 v2sf test31 (v2sf a, v2sf b, v2sf c, v2sf d)
629 return __builtin_mips_movf_cabs_ngt_ps (a, b, c, d);