OSDN Git Service

* expmed.c (store_bit_field_1): Properly truncate the paradoxical
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / mips / mips-3d-5.c
1 /* { dg-do run } */
2 /* { dg-options "-O2 -mips3d" } */
3
4 /* Test MIPS-3D absolute-compare & branch-if-any-four builtin functions */
5 #include <stdlib.h>
6 #include <stdio.h>
7
8 typedef float v2sf __attribute__ ((vector_size(8)));
9
10 NOMIPS16 int test0 (v2sf a, v2sf b, v2sf c, v2sf d);
11 NOMIPS16 int test1 (v2sf a, v2sf b, v2sf c, v2sf d);
12 NOMIPS16 int test2 (v2sf a, v2sf b, v2sf c, v2sf d);
13 NOMIPS16 int test3 (v2sf a, v2sf b, v2sf c, v2sf d);
14 NOMIPS16 int test4 (v2sf a, v2sf b, v2sf c, v2sf d);
15 NOMIPS16 int test5 (v2sf a, v2sf b, v2sf c, v2sf d);
16 NOMIPS16 int test6 (v2sf a, v2sf b, v2sf c, v2sf d);
17 NOMIPS16 int test7 (v2sf a, v2sf b, v2sf c, v2sf d);
18 NOMIPS16 int test8 (v2sf a, v2sf b, v2sf c, v2sf d);
19 NOMIPS16 int test9 (v2sf a, v2sf b, v2sf c, v2sf d);
20 NOMIPS16 int test10 (v2sf a, v2sf b, v2sf c, v2sf d);
21 NOMIPS16 int test11 (v2sf a, v2sf b, v2sf c, v2sf d);
22 NOMIPS16 int test12 (v2sf a, v2sf b, v2sf c, v2sf d);
23 NOMIPS16 int test13 (v2sf a, v2sf b, v2sf c, v2sf d);
24 NOMIPS16 int test14 (v2sf a, v2sf b, v2sf c, v2sf d);
25 NOMIPS16 int test15 (v2sf a, v2sf b, v2sf c, v2sf d);
26 NOMIPS16 int test16 (v2sf a, v2sf b, v2sf c, v2sf d);
27 NOMIPS16 int test17 (v2sf a, v2sf b, v2sf c, v2sf d);
28 NOMIPS16 int test18 (v2sf a, v2sf b, v2sf c, v2sf d);
29 NOMIPS16 int test19 (v2sf a, v2sf b, v2sf c, v2sf d);
30 NOMIPS16 int test20 (v2sf a, v2sf b, v2sf c, v2sf d);
31 NOMIPS16 int test21 (v2sf a, v2sf b, v2sf c, v2sf d);
32 NOMIPS16 int test22 (v2sf a, v2sf b, v2sf c, v2sf d);
33 NOMIPS16 int test23 (v2sf a, v2sf b, v2sf c, v2sf d);
34 NOMIPS16 int test24 (v2sf a, v2sf b, v2sf c, v2sf d);
35 NOMIPS16 int test25 (v2sf a, v2sf b, v2sf c, v2sf d);
36 NOMIPS16 int test26 (v2sf a, v2sf b, v2sf c, v2sf d);
37 NOMIPS16 int test27 (v2sf a, v2sf b, v2sf c, v2sf d);
38 NOMIPS16 int test28 (v2sf a, v2sf b, v2sf c, v2sf d);
39 NOMIPS16 int test29 (v2sf a, v2sf b, v2sf c, v2sf d);
40 NOMIPS16 int test30 (v2sf a, v2sf b, v2sf c, v2sf d);
41 NOMIPS16 int test31 (v2sf a, v2sf b, v2sf c, v2sf d);
42
43 float qnan = 1.0f/0.0f - 1.0f/0.0f;
44
45 NOMIPS16 int main ()
46 {
47   v2sf a, b, c, d;
48   int i, j;
49
50   /* cabs.eq.ps */
51   a = (v2sf) {11, 22};
52   b = (v2sf) {-33, -44};
53   c = (v2sf) {55, 66};
54   d = (v2sf) {-77, -88};
55   i = 0;
56   j = 0;
57   if (__builtin_mips_any_cabs_eq_4s(a, b, c, d) != i)
58      abort ();
59   if (__builtin_mips_all_cabs_eq_4s(a, b, c, d) != j)
60      abort ();
61
62   /* cabs.eq.ps */
63   a = (v2sf) {11, 22};
64   b = (v2sf) {-11, -44};
65   c = (v2sf) {55, 66};
66   d = (v2sf) {-77, -88};
67   i = 1;
68   j = 0;
69   if (__builtin_mips_any_cabs_eq_4s(a, b, c, d) != i)
70      abort ();
71   if (__builtin_mips_all_cabs_eq_4s(a, b, c, d) != j)
72      abort ();
73
74   /* cabs.eq.ps */
75   a = (v2sf) {11, 22};
76   b = (v2sf) {-33, -22};
77   c = (v2sf) {55, 66};
78   d = (v2sf) {-77, -88};
79   i = 1;
80   j = 0;
81   if (__builtin_mips_any_cabs_eq_4s(a, b, c, d) != i)
82      abort ();
83   if (__builtin_mips_all_cabs_eq_4s(a, b, c, d) != j)
84      abort ();
85
86   /* cabs.eq.ps */
87   a = (v2sf) {11, 22};
88   b = (v2sf) {-33, -44};
89   c = (v2sf) {55, 66};
90   d = (v2sf) {-55, -88};
91   i = 1;
92   j = 0;
93   if (__builtin_mips_any_cabs_eq_4s(a, b, c, d) != i)
94      abort ();
95   if (__builtin_mips_all_cabs_eq_4s(a, b, c, d) != j)
96      abort ();
97
98   /* cabs.eq.ps */
99   a = (v2sf) {11, 22};
100   b = (v2sf) {-33, -44};
101   c = (v2sf) {55, 66};
102   d = (v2sf) {-77, -66};
103   i = 1;
104   j = 0;
105   if (__builtin_mips_any_cabs_eq_4s(a, b, c, d) != i)
106      abort ();
107   if (__builtin_mips_all_cabs_eq_4s(a, b, c, d) != j)
108      abort ();
109
110   /* cabs.eq.ps */
111   a = (v2sf) {11, 22};
112   b = (v2sf) {-11, -22};
113   c = (v2sf) {55, 66};
114   d = (v2sf) {-55, -66};
115   i = 1;
116   j = 1;
117   if (__builtin_mips_any_cabs_eq_4s(a, b, c, d) != i)
118      abort ();
119   if (__builtin_mips_all_cabs_eq_4s(a, b, c, d) != j)
120      abort ();
121
122   /* Test all comparisons */
123   a = (v2sf) {11, 33};
124   b = (v2sf) {-33, -11};
125   c = (v2sf) {55, 66};
126   d = (v2sf) {-55, -88};
127
128   i = test0 (a, b, c, d);
129   if (i != 0)
130     abort ();
131   i = test1 (a, b, c, d);
132   if (i != 0)
133     abort ();
134   i = test2 (a, b, c, d);
135   if (i != 0)
136     abort ();
137   i = test3 (a, b, c, d);
138   if (i != 0)
139     abort ();
140   i = test4 (a, b, c, d);
141   if (i != 1)
142     abort ();
143   i = test5 (a, b, c, d);
144   if (i != 0)
145     abort ();
146   i = test6 (a, b, c, d);
147   if (i != 1)
148     abort ();
149   i = test7 (a, b, c, d);
150   if (i != 0)
151     abort ();
152   i = test8 (a, b, c, d);
153   if (i != 1)
154     abort ();
155   i = test9 (a, b, c, d);
156   if (i != 0)
157     abort ();
158   i = test10 (a, b, c, d);
159   if (i != 1)
160     abort ();
161   i = test11 (a, b, c, d);
162   if (i != 0)
163     abort ();
164   i = test12 (a, b, c, d);
165   if (i != 1)
166     abort ();
167   i = test13 (a, b, c, d);
168   if (i != 0)
169     abort ();
170   i = test14 (a, b, c, d);
171   if (i != 1)
172     abort ();
173   i = test15 (a, b, c, d);
174   if (i != 0)
175     abort ();
176   i = test16 (a, b, c, d);
177   if (i != 0)
178     abort ();
179   i = test17 (a, b, c, d);
180   if (i != 0)
181     abort ();
182   i = test18 (a, b, c, d);
183   if (i != 0)
184     abort ();
185   i = test19 (a, b, c, d);
186   if (i != 0)
187     abort ();
188   i = test20 (a, b, c, d);
189   if (i != 1)
190     abort ();
191   i = test21 (a, b, c, d);
192   if (i != 0)
193     abort ();
194   i = test22 (a, b, c, d);
195   if (i != 1)
196     abort ();
197   i = test23 (a, b, c, d);
198   if (i != 0)
199     abort ();
200   i = test24 (a, b, c, d);
201   if (i != 1)
202     abort ();
203   i = test25 (a, b, c, d);
204   if (i != 0)
205     abort ();
206   i = test26 (a, b, c, d);
207   if (i != 1)
208     abort ();
209   i = test27 (a, b, c, d);
210   if (i != 0)
211     abort ();
212   i = test28 (a, b, c, d);
213   if (i != 1)
214     abort ();
215   i = test29 (a, b, c, d);
216   if (i != 0)
217     abort ();
218   i = test30 (a, b, c, d);
219   if (i != 1)
220     abort ();
221   i = test31 (a, b, c, d);
222   if (i != 0)
223     abort ();
224
225   /* Reversed arguments */
226   i = test0 (b, a, d, c);
227   if (i != 0)
228     abort ();
229   i = test1 (b, a, d, c);
230   if (i != 0)
231     abort ();
232   i = test2 (b, a, d, c);
233   if (i != 0)
234     abort ();
235   i = test3 (b, a, d, c);
236   if (i != 0)
237     abort ();
238   i = test4 (b, a, d, c);
239   if (i != 1)
240     abort ();
241   i = test5 (b, a, d, c);
242   if (i != 0)
243     abort ();
244   i = test6 (b, a, d, c);
245   if (i != 1)
246     abort ();
247   i = test7 (b, a, d, c);
248   if (i != 0)
249     abort ();
250   i = test8 (b, a, d, c);
251   if (i != 1)
252     abort ();
253   i = test9 (b, a, d, c);
254   if (i != 0)
255     abort ();
256   i = test10 (b, a, d, c);
257   if (i != 1)
258     abort ();
259   i = test11 (b, a, d, c);
260   if (i != 0)
261     abort ();
262   i = test12 (b, a, d, c);
263   if (i != 1)
264     abort ();
265   i = test13 (b, a, d, c);
266   if (i != 0)
267     abort ();
268   i = test14 (b, a, d, c);
269   if (i != 1)
270     abort ();
271   i = test15 (b, a, d, c);
272   if (i != 0)
273     abort ();
274   i = test16 (b, a, d, c);
275   if (i != 0)
276     abort ();
277   i = test17 (b, a, d, c);
278   if (i != 0)
279     abort ();
280   i = test18 (b, a, d, c);
281   if (i != 0)
282     abort ();
283   i = test19 (b, a, d, c);
284   if (i != 0)
285     abort ();
286   i = test20 (b, a, d, c);
287   if (i != 1)
288     abort ();
289   i = test21 (b, a, d, c);
290   if (i != 0)
291     abort ();
292   i = test22 (b, a, d, c);
293   if (i != 1)
294     abort ();
295   i = test23 (b, a, d, c);
296   if (i != 0)
297     abort ();
298   i = test24 (b, a, d, c);
299   if (i != 1)
300     abort ();
301   i = test25 (b, a, d, c);
302   if (i != 0)
303     abort ();
304   i = test26 (b, a, d, c);
305   if (i != 1)
306     abort ();
307   i = test27 (b, a, d, c);
308   if (i != 0)
309     abort ();
310   i = test28 (b, a, d, c);
311   if (i != 1)
312     abort ();
313   i = test29 (b, a, d, c);
314   if (i != 0)
315     abort ();
316   i = test30 (b, a, d, c);
317   if (i != 1)
318     abort ();
319   i = test31 (b, a, d, c);
320   if (i != 0)
321     abort ();
322
323 #ifndef __FAST_MATH__
324   /* Test all comparisons */
325   a = (v2sf) {qnan, qnan};
326   b = (v2sf) {-33, -11};
327   c = (v2sf) {qnan, qnan};
328   d = (v2sf) {-55, -88};
329
330   i = test0 (a, b, c, d);
331   if (i != 0)
332     abort ();
333   i = test1 (a, b, c, d);
334   if (i != 0)
335     abort ();
336   i = test2 (a, b, c, d);
337   if (i != 1)
338     abort ();
339   i = test3 (a, b, c, d);
340   if (i != 1)
341     abort ();
342   i = test4 (a, b, c, d);
343   if (i != 0)
344     abort ();
345   i = test5 (a, b, c, d);
346   if (i != 0)
347     abort ();
348   i = test6 (a, b, c, d);
349   if (i != 1)
350     abort ();
351   i = test7 (a, b, c, d);
352   if (i != 1)
353     abort ();
354   i = test8 (a, b, c, d);
355   if (i != 0)
356     abort ();
357   i = test9 (a, b, c, d);
358   if (i != 0)
359     abort ();
360   i = test10 (a, b, c, d);
361   if (i != 1)
362     abort ();
363   i = test11 (a, b, c, d);
364   if (i != 1)
365     abort ();
366   i = test12 (a, b, c, d);
367   if (i != 0)
368     abort ();
369   i = test13 (a, b, c, d);
370   if (i != 0)
371     abort ();
372   i = test14 (a, b, c, d);
373   if (i != 1)
374     abort ();
375   i = test15 (a, b, c, d);
376   if (i != 1)
377     abort ();
378   i = test16 (a, b, c, d);
379   if (i != 0)
380     abort ();
381   i = test17 (a, b, c, d);
382   if (i != 0)
383     abort ();
384   i = test18 (a, b, c, d);
385   if (i != 1)
386     abort ();
387   i = test19 (a, b, c, d);
388   if (i != 1)
389     abort ();
390   i = test20 (a, b, c, d);
391   if (i != 0)
392     abort ();
393   i = test21 (a, b, c, d);
394   if (i != 0)
395     abort ();
396   i = test22 (a, b, c, d);
397   if (i != 1)
398     abort ();
399   i = test23 (a, b, c, d);
400   if (i != 1)
401     abort ();
402   i = test24 (a, b, c, d);
403   if (i != 0)
404     abort ();
405   i = test25 (a, b, c, d);
406   if (i != 0)
407     abort ();
408   i = test26 (a, b, c, d);
409   if (i != 1)
410     abort ();
411   i = test27 (a, b, c, d);
412   if (i != 1)
413     abort ();
414   i = test28 (a, b, c, d);
415   if (i != 0)
416     abort ();
417   i = test29 (a, b, c, d);
418   if (i != 0)
419     abort ();
420   i = test30 (a, b, c, d);
421   if (i != 1)
422     abort ();
423   i = test31 (a, b, c, d);
424   if (i != 1)
425     abort ();
426 #endif
427
428   printf ("Test Passes\n");
429   exit (0);
430 }
431
432 NOMIPS16 int test0 (v2sf a, v2sf b, v2sf c, v2sf d)
433 {
434   return __builtin_mips_any_cabs_f_4s (a, b, c, d);
435 }
436
437 NOMIPS16 int test1 (v2sf a, v2sf b, v2sf c, v2sf d)
438 {
439   return __builtin_mips_all_cabs_f_4s (a, b, c, d);
440 }
441
442 NOMIPS16 int test2 (v2sf a, v2sf b, v2sf c, v2sf d)
443 {
444   return __builtin_mips_any_cabs_un_4s (a, b, c, d);
445 }
446
447 NOMIPS16 int test3 (v2sf a, v2sf b, v2sf c, v2sf d)
448 {
449   return __builtin_mips_all_cabs_un_4s (a, b, c, d);
450 }
451
452 NOMIPS16 int test4 (v2sf a, v2sf b, v2sf c, v2sf d)
453 {
454   return __builtin_mips_any_cabs_eq_4s (a, b, c, d);
455 }
456
457 NOMIPS16 int test5 (v2sf a, v2sf b, v2sf c, v2sf d)
458 {
459   return __builtin_mips_all_cabs_eq_4s (a, b, c, d);
460 }
461
462 NOMIPS16 int test6 (v2sf a, v2sf b, v2sf c, v2sf d)
463 {
464   return __builtin_mips_any_cabs_ueq_4s (a, b, c, d);
465 }
466
467 NOMIPS16 int test7 (v2sf a, v2sf b, v2sf c, v2sf d)
468 {
469   return __builtin_mips_all_cabs_ueq_4s (a, b, c, d);
470 }
471
472 NOMIPS16 int test8 (v2sf a, v2sf b, v2sf c, v2sf d)
473 {
474   return __builtin_mips_any_cabs_olt_4s (a, b, c, d);
475 }
476
477 NOMIPS16 int test9 (v2sf a, v2sf b, v2sf c, v2sf d)
478 {
479   return __builtin_mips_all_cabs_olt_4s (a, b, c, d);
480 }
481
482 NOMIPS16 int test10 (v2sf a, v2sf b, v2sf c, v2sf d)
483 {
484   return __builtin_mips_any_cabs_ult_4s (a, b, c, d);
485 }
486
487 NOMIPS16 int test11 (v2sf a, v2sf b, v2sf c, v2sf d)
488 {
489   return __builtin_mips_all_cabs_ult_4s (a, b, c, d);
490 }
491
492 NOMIPS16 int test12 (v2sf a, v2sf b, v2sf c, v2sf d)
493 {
494   return __builtin_mips_any_cabs_ole_4s (a, b, c, d);
495 }
496
497 NOMIPS16 int test13 (v2sf a, v2sf b, v2sf c, v2sf d)
498 {
499   return __builtin_mips_all_cabs_ole_4s (a, b, c, d);
500 }
501
502 NOMIPS16 int test14 (v2sf a, v2sf b, v2sf c, v2sf d)
503 {
504   return __builtin_mips_any_cabs_ule_4s (a, b, c, d);
505 }
506
507 NOMIPS16 int test15 (v2sf a, v2sf b, v2sf c, v2sf d)
508 {
509   return __builtin_mips_all_cabs_ule_4s (a, b, c, d);
510 }
511
512 NOMIPS16 int test16 (v2sf a, v2sf b, v2sf c, v2sf d)
513 {
514   return __builtin_mips_any_cabs_sf_4s (a, b, c, d);
515 }
516
517 NOMIPS16 int test17 (v2sf a, v2sf b, v2sf c, v2sf d)
518 {
519   return __builtin_mips_all_cabs_sf_4s (a, b, c, d);
520 }
521
522 NOMIPS16 int test18 (v2sf a, v2sf b, v2sf c, v2sf d)
523 {
524   return __builtin_mips_any_cabs_ngle_4s (a, b, c, d);
525 }
526
527 NOMIPS16 int test19 (v2sf a, v2sf b, v2sf c, v2sf d)
528 {
529   return __builtin_mips_all_cabs_ngle_4s (a, b, c, d);
530 }
531
532 NOMIPS16 int test20 (v2sf a, v2sf b, v2sf c, v2sf d)
533 {
534   return __builtin_mips_any_cabs_seq_4s (a, b, c, d);
535 }
536
537 NOMIPS16 int test21 (v2sf a, v2sf b, v2sf c, v2sf d)
538 {
539   return __builtin_mips_all_cabs_seq_4s (a, b, c, d);
540 }
541
542 NOMIPS16 int test22 (v2sf a, v2sf b, v2sf c, v2sf d)
543 {
544   return __builtin_mips_any_cabs_ngl_4s (a, b, c, d);
545 }
546
547 NOMIPS16 int test23 (v2sf a, v2sf b, v2sf c, v2sf d)
548 {
549   return __builtin_mips_all_cabs_ngl_4s (a, b, c, d);
550 }
551
552 NOMIPS16 int test24 (v2sf a, v2sf b, v2sf c, v2sf d)
553 {
554   return __builtin_mips_any_cabs_lt_4s (a, b, c, d);
555 }
556
557 NOMIPS16 int test25 (v2sf a, v2sf b, v2sf c, v2sf d)
558 {
559   return __builtin_mips_all_cabs_lt_4s (a, b, c, d);
560 }
561
562 NOMIPS16 int test26 (v2sf a, v2sf b, v2sf c, v2sf d)
563 {
564   return __builtin_mips_any_cabs_nge_4s (a, b, c, d);
565 }
566
567 NOMIPS16 int test27 (v2sf a, v2sf b, v2sf c, v2sf d)
568 {
569   return __builtin_mips_all_cabs_nge_4s (a, b, c, d);
570 }
571
572 NOMIPS16 int test28 (v2sf a, v2sf b, v2sf c, v2sf d)
573 {
574   return __builtin_mips_any_cabs_le_4s (a, b, c, d);
575 }
576
577 NOMIPS16 int test29 (v2sf a, v2sf b, v2sf c, v2sf d)
578 {
579   return __builtin_mips_all_cabs_le_4s (a, b, c, d);
580 }
581
582 NOMIPS16 int test30 (v2sf a, v2sf b, v2sf c, v2sf d)
583 {
584   return __builtin_mips_any_cabs_ngt_4s (a, b, c, d);
585 }
586
587 NOMIPS16 int test31 (v2sf a, v2sf b, v2sf c, v2sf d)
588 {
589   return __builtin_mips_all_cabs_ngt_4s (a, b, c, d);
590 }