2 /* { dg-options "-mips3d forbid_cpu=octeon.* (REQUIRES_STDLIB)" } */
4 /* Test MIPS-3D absolute-compare & branch-if-any-four builtin functions */
8 typedef float v2sf
__attribute__ ((vector_size(8)));
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
);
43 float qnan
= 1.0f
/0.0f
- 1.0f
/0.0f
;
52 b
= (v2sf
) {-33, -44};
54 d
= (v2sf
) {-77, -88};
57 if (__builtin_mips_any_cabs_eq_4s(a
, b
, c
, d
) != i
)
59 if (__builtin_mips_all_cabs_eq_4s(a
, b
, c
, d
) != j
)
64 b
= (v2sf
) {-11, -44};
66 d
= (v2sf
) {-77, -88};
69 if (__builtin_mips_any_cabs_eq_4s(a
, b
, c
, d
) != i
)
71 if (__builtin_mips_all_cabs_eq_4s(a
, b
, c
, d
) != j
)
76 b
= (v2sf
) {-33, -22};
78 d
= (v2sf
) {-77, -88};
81 if (__builtin_mips_any_cabs_eq_4s(a
, b
, c
, d
) != i
)
83 if (__builtin_mips_all_cabs_eq_4s(a
, b
, c
, d
) != j
)
88 b
= (v2sf
) {-33, -44};
90 d
= (v2sf
) {-55, -88};
93 if (__builtin_mips_any_cabs_eq_4s(a
, b
, c
, d
) != i
)
95 if (__builtin_mips_all_cabs_eq_4s(a
, b
, c
, d
) != j
)
100 b
= (v2sf
) {-33, -44};
102 d
= (v2sf
) {-77, -66};
105 if (__builtin_mips_any_cabs_eq_4s(a
, b
, c
, d
) != i
)
107 if (__builtin_mips_all_cabs_eq_4s(a
, b
, c
, d
) != j
)
112 b
= (v2sf
) {-11, -22};
114 d
= (v2sf
) {-55, -66};
117 if (__builtin_mips_any_cabs_eq_4s(a
, b
, c
, d
) != i
)
119 if (__builtin_mips_all_cabs_eq_4s(a
, b
, c
, d
) != j
)
122 /* Test all comparisons */
124 b
= (v2sf
) {-33, -11};
126 d
= (v2sf
) {-55, -88};
128 i
= test0 (a
, b
, c
, d
);
131 i
= test1 (a
, b
, c
, d
);
134 i
= test2 (a
, b
, c
, d
);
137 i
= test3 (a
, b
, c
, d
);
140 i
= test4 (a
, b
, c
, d
);
143 i
= test5 (a
, b
, c
, d
);
146 i
= test6 (a
, b
, c
, d
);
149 i
= test7 (a
, b
, c
, d
);
152 i
= test8 (a
, b
, c
, d
);
155 i
= test9 (a
, b
, c
, d
);
158 i
= test10 (a
, b
, c
, d
);
161 i
= test11 (a
, b
, c
, d
);
164 i
= test12 (a
, b
, c
, d
);
167 i
= test13 (a
, b
, c
, d
);
170 i
= test14 (a
, b
, c
, d
);
173 i
= test15 (a
, b
, c
, d
);
176 i
= test16 (a
, b
, c
, d
);
179 i
= test17 (a
, b
, c
, d
);
182 i
= test18 (a
, b
, c
, d
);
185 i
= test19 (a
, b
, c
, d
);
188 i
= test20 (a
, b
, c
, d
);
191 i
= test21 (a
, b
, c
, d
);
194 i
= test22 (a
, b
, c
, d
);
197 i
= test23 (a
, b
, c
, d
);
200 i
= test24 (a
, b
, c
, d
);
203 i
= test25 (a
, b
, c
, d
);
206 i
= test26 (a
, b
, c
, d
);
209 i
= test27 (a
, b
, c
, d
);
212 i
= test28 (a
, b
, c
, d
);
215 i
= test29 (a
, b
, c
, d
);
218 i
= test30 (a
, b
, c
, d
);
221 i
= test31 (a
, b
, c
, d
);
225 /* Reversed arguments */
226 i
= test0 (b
, a
, d
, c
);
229 i
= test1 (b
, a
, d
, c
);
232 i
= test2 (b
, a
, d
, c
);
235 i
= test3 (b
, a
, d
, c
);
238 i
= test4 (b
, a
, d
, c
);
241 i
= test5 (b
, a
, d
, c
);
244 i
= test6 (b
, a
, d
, c
);
247 i
= test7 (b
, a
, d
, c
);
250 i
= test8 (b
, a
, d
, c
);
253 i
= test9 (b
, a
, d
, c
);
256 i
= test10 (b
, a
, d
, c
);
259 i
= test11 (b
, a
, d
, c
);
262 i
= test12 (b
, a
, d
, c
);
265 i
= test13 (b
, a
, d
, c
);
268 i
= test14 (b
, a
, d
, c
);
271 i
= test15 (b
, a
, d
, c
);
274 i
= test16 (b
, a
, d
, c
);
277 i
= test17 (b
, a
, d
, c
);
280 i
= test18 (b
, a
, d
, c
);
283 i
= test19 (b
, a
, d
, c
);
286 i
= test20 (b
, a
, d
, c
);
289 i
= test21 (b
, a
, d
, c
);
292 i
= test22 (b
, a
, d
, c
);
295 i
= test23 (b
, a
, d
, c
);
298 i
= test24 (b
, a
, d
, c
);
301 i
= test25 (b
, a
, d
, c
);
304 i
= test26 (b
, a
, d
, c
);
307 i
= test27 (b
, a
, d
, c
);
310 i
= test28 (b
, a
, d
, c
);
313 i
= test29 (b
, a
, d
, c
);
316 i
= test30 (b
, a
, d
, c
);
319 i
= test31 (b
, a
, d
, c
);
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};
330 i
= test0 (a
, b
, c
, d
);
333 i
= test1 (a
, b
, c
, d
);
336 i
= test2 (a
, b
, c
, d
);
339 i
= test3 (a
, b
, c
, d
);
342 i
= test4 (a
, b
, c
, d
);
345 i
= test5 (a
, b
, c
, d
);
348 i
= test6 (a
, b
, c
, d
);
351 i
= test7 (a
, b
, c
, d
);
354 i
= test8 (a
, b
, c
, d
);
357 i
= test9 (a
, b
, c
, d
);
360 i
= test10 (a
, b
, c
, d
);
363 i
= test11 (a
, b
, c
, d
);
366 i
= test12 (a
, b
, c
, d
);
369 i
= test13 (a
, b
, c
, d
);
372 i
= test14 (a
, b
, c
, d
);
375 i
= test15 (a
, b
, c
, d
);
378 i
= test16 (a
, b
, c
, d
);
381 i
= test17 (a
, b
, c
, d
);
384 i
= test18 (a
, b
, c
, d
);
387 i
= test19 (a
, b
, c
, d
);
390 i
= test20 (a
, b
, c
, d
);
393 i
= test21 (a
, b
, c
, d
);
396 i
= test22 (a
, b
, c
, d
);
399 i
= test23 (a
, b
, c
, d
);
402 i
= test24 (a
, b
, c
, d
);
405 i
= test25 (a
, b
, c
, d
);
408 i
= test26 (a
, b
, c
, d
);
411 i
= test27 (a
, b
, c
, d
);
414 i
= test28 (a
, b
, c
, d
);
417 i
= test29 (a
, b
, c
, d
);
420 i
= test30 (a
, b
, c
, d
);
423 i
= test31 (a
, b
, c
, d
);
428 printf ("Test Passes\n");
432 NOMIPS16
int test0 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
434 return __builtin_mips_any_cabs_f_4s (a
, b
, c
, d
);
437 NOMIPS16
int test1 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
439 return __builtin_mips_all_cabs_f_4s (a
, b
, c
, d
);
442 NOMIPS16
int test2 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
444 return __builtin_mips_any_cabs_un_4s (a
, b
, c
, d
);
447 NOMIPS16
int test3 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
449 return __builtin_mips_all_cabs_un_4s (a
, b
, c
, d
);
452 NOMIPS16
int test4 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
454 return __builtin_mips_any_cabs_eq_4s (a
, b
, c
, d
);
457 NOMIPS16
int test5 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
459 return __builtin_mips_all_cabs_eq_4s (a
, b
, c
, d
);
462 NOMIPS16
int test6 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
464 return __builtin_mips_any_cabs_ueq_4s (a
, b
, c
, d
);
467 NOMIPS16
int test7 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
469 return __builtin_mips_all_cabs_ueq_4s (a
, b
, c
, d
);
472 NOMIPS16
int test8 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
474 return __builtin_mips_any_cabs_olt_4s (a
, b
, c
, d
);
477 NOMIPS16
int test9 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
479 return __builtin_mips_all_cabs_olt_4s (a
, b
, c
, d
);
482 NOMIPS16
int test10 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
484 return __builtin_mips_any_cabs_ult_4s (a
, b
, c
, d
);
487 NOMIPS16
int test11 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
489 return __builtin_mips_all_cabs_ult_4s (a
, b
, c
, d
);
492 NOMIPS16
int test12 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
494 return __builtin_mips_any_cabs_ole_4s (a
, b
, c
, d
);
497 NOMIPS16
int test13 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
499 return __builtin_mips_all_cabs_ole_4s (a
, b
, c
, d
);
502 NOMIPS16
int test14 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
504 return __builtin_mips_any_cabs_ule_4s (a
, b
, c
, d
);
507 NOMIPS16
int test15 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
509 return __builtin_mips_all_cabs_ule_4s (a
, b
, c
, d
);
512 NOMIPS16
int test16 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
514 return __builtin_mips_any_cabs_sf_4s (a
, b
, c
, d
);
517 NOMIPS16
int test17 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
519 return __builtin_mips_all_cabs_sf_4s (a
, b
, c
, d
);
522 NOMIPS16
int test18 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
524 return __builtin_mips_any_cabs_ngle_4s (a
, b
, c
, d
);
527 NOMIPS16
int test19 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
529 return __builtin_mips_all_cabs_ngle_4s (a
, b
, c
, d
);
532 NOMIPS16
int test20 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
534 return __builtin_mips_any_cabs_seq_4s (a
, b
, c
, d
);
537 NOMIPS16
int test21 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
539 return __builtin_mips_all_cabs_seq_4s (a
, b
, c
, d
);
542 NOMIPS16
int test22 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
544 return __builtin_mips_any_cabs_ngl_4s (a
, b
, c
, d
);
547 NOMIPS16
int test23 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
549 return __builtin_mips_all_cabs_ngl_4s (a
, b
, c
, d
);
552 NOMIPS16
int test24 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
554 return __builtin_mips_any_cabs_lt_4s (a
, b
, c
, d
);
557 NOMIPS16
int test25 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
559 return __builtin_mips_all_cabs_lt_4s (a
, b
, c
, d
);
562 NOMIPS16
int test26 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
564 return __builtin_mips_any_cabs_nge_4s (a
, b
, c
, d
);
567 NOMIPS16
int test27 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
569 return __builtin_mips_all_cabs_nge_4s (a
, b
, c
, d
);
572 NOMIPS16
int test28 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
574 return __builtin_mips_any_cabs_le_4s (a
, b
, c
, d
);
577 NOMIPS16
int test29 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
579 return __builtin_mips_all_cabs_le_4s (a
, b
, c
, d
);
582 NOMIPS16
int test30 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
584 return __builtin_mips_any_cabs_ngt_4s (a
, b
, c
, d
);
587 NOMIPS16
int test31 (v2sf a
, v2sf b
, v2sf c
, v2sf d
)
589 return __builtin_mips_all_cabs_ngt_4s (a
, b
, c
, d
);