2 /* { dg-options "-mpaired-single" } */
4 /* Test MIPS paired-single comparisons */
8 typedef float v2sf
__attribute__((vector_size(8)));
10 NOMIPS16
int test0 (v2sf a
, v2sf b
);
11 NOMIPS16
int test1 (v2sf a
, v2sf b
);
12 NOMIPS16
int test2 (v2sf a
, v2sf b
);
13 NOMIPS16
int test3 (v2sf a
, v2sf b
);
14 NOMIPS16
int test4 (v2sf a
, v2sf b
);
15 NOMIPS16
int test5 (v2sf a
, v2sf b
);
16 NOMIPS16
int test6 (v2sf a
, v2sf b
);
17 NOMIPS16
int test7 (v2sf a
, v2sf b
);
18 NOMIPS16
int test8 (v2sf a
, v2sf b
);
19 NOMIPS16
int test9 (v2sf a
, v2sf b
);
20 NOMIPS16
int test10 (v2sf a
, v2sf b
);
21 NOMIPS16
int test11 (v2sf a
, v2sf b
);
22 NOMIPS16
int test12 (v2sf a
, v2sf b
);
23 NOMIPS16
int test13 (v2sf a
, v2sf b
);
24 NOMIPS16
int test14 (v2sf a
, v2sf b
);
25 NOMIPS16
int test15 (v2sf a
, v2sf b
);
26 NOMIPS16
int test16 (v2sf a
, v2sf b
);
27 NOMIPS16
int test17 (v2sf a
, v2sf b
);
28 NOMIPS16
int test18 (v2sf a
, v2sf b
);
29 NOMIPS16
int test19 (v2sf a
, v2sf b
);
30 NOMIPS16
int test20 (v2sf a
, v2sf b
);
31 NOMIPS16
int test21 (v2sf a
, v2sf b
);
32 NOMIPS16
int test22 (v2sf a
, v2sf b
);
33 NOMIPS16
int test23 (v2sf a
, v2sf b
);
34 NOMIPS16
int test24 (v2sf a
, v2sf b
);
35 NOMIPS16
int test25 (v2sf a
, v2sf b
);
36 NOMIPS16
int test26 (v2sf a
, v2sf b
);
37 NOMIPS16
int test27 (v2sf a
, v2sf b
);
38 NOMIPS16
int test28 (v2sf a
, v2sf b
);
39 NOMIPS16
int test29 (v2sf a
, v2sf b
);
40 NOMIPS16
int test30 (v2sf a
, v2sf b
);
41 NOMIPS16
int test31 (v2sf a
, v2sf b
);
43 float qnan
= 1.0f
/0.0f
- 1.0f
/0.0f
;
47 union { long long ll
; int i
[2]; } endianness_test
;
52 endianness_test
.ll
= 1;
53 little_endian
= endianness_test
.i
[0];
55 /* Case 1 {diff, diff} */
58 i
= __builtin_mips_upper_c_eq_ps (a
, b
);
59 j
= __builtin_mips_lower_c_eq_ps (a
, b
);
63 /* Case 2 {same, diff} */
64 a
= (v2sf
) {1.0, 2.0};
65 b
= (v2sf
) {1.0, 4.0};
66 i
= __builtin_mips_upper_c_eq_ps (a
, b
);
67 j
= __builtin_mips_lower_c_eq_ps (a
, b
);
79 /* Case 3 {diff, same} */
82 i
= __builtin_mips_upper_c_eq_ps (a
, b
);
83 j
= __builtin_mips_lower_c_eq_ps (a
, b
);
95 /* Case 4 {same, same} */
98 i
= __builtin_mips_upper_c_eq_ps (a
, b
);
99 j
= __builtin_mips_lower_c_eq_ps (a
, b
);
100 if (i
!= 1 || j
!= 1)
103 /* Test upper/lower with 16 operators */
106 a
= (v2sf
) {1984.0, 10.58};
107 b
= (v2sf
) {1984.0, 567.345};
111 a
= (v2sf
) {10.58, 1984.0};
112 b
= (v2sf
) {567.345, 1984.0};
212 /* Reverse arguments */
310 #ifndef __FAST_MATH__
311 /* Test upper/lower with 16 operators */
314 a
= (v2sf
) {qnan
, qnan
};
315 b
= (v2sf
) {1984.0, 567.345};
319 a
= (v2sf
) {qnan
, qnan
};
320 b
= (v2sf
) {567.345, 1984.0};
421 printf ("Test Passes\n");
425 NOMIPS16
int test0 (v2sf a
, v2sf b
)
427 return __builtin_mips_upper_c_f_ps (a
, b
);
430 NOMIPS16
int test1 (v2sf a
, v2sf b
)
432 return __builtin_mips_lower_c_f_ps (a
, b
);
435 NOMIPS16
int test2 (v2sf a
, v2sf b
)
437 return __builtin_mips_upper_c_un_ps (a
, b
);
440 NOMIPS16
int test3 (v2sf a
, v2sf b
)
442 return __builtin_mips_lower_c_un_ps (a
, b
);
445 NOMIPS16
int test4 (v2sf a
, v2sf b
)
447 return __builtin_mips_upper_c_eq_ps (a
, b
);
450 NOMIPS16
int test5 (v2sf a
, v2sf b
)
452 return __builtin_mips_lower_c_eq_ps (a
, b
);
455 NOMIPS16
int test6 (v2sf a
, v2sf b
)
457 return __builtin_mips_upper_c_ueq_ps (a
, b
);
460 NOMIPS16
int test7 (v2sf a
, v2sf b
)
462 return __builtin_mips_lower_c_ueq_ps (a
, b
);
465 NOMIPS16
int test8 (v2sf a
, v2sf b
)
467 return __builtin_mips_upper_c_olt_ps (a
, b
);
470 NOMIPS16
int test9 (v2sf a
, v2sf b
)
472 return __builtin_mips_lower_c_olt_ps (a
, b
);
475 NOMIPS16
int test10 (v2sf a
, v2sf b
)
477 return __builtin_mips_upper_c_ult_ps (a
, b
);
480 NOMIPS16
int test11 (v2sf a
, v2sf b
)
482 return __builtin_mips_lower_c_ult_ps (a
, b
);
485 NOMIPS16
int test12 (v2sf a
, v2sf b
)
487 return __builtin_mips_upper_c_ole_ps (a
, b
);
490 NOMIPS16
int test13 (v2sf a
, v2sf b
)
492 return __builtin_mips_lower_c_ole_ps (a
, b
);
495 NOMIPS16
int test14 (v2sf a
, v2sf b
)
497 return __builtin_mips_upper_c_ule_ps (a
, b
);
500 NOMIPS16
int test15 (v2sf a
, v2sf b
)
502 return __builtin_mips_lower_c_ule_ps (a
, b
);
505 NOMIPS16
int test16 (v2sf a
, v2sf b
)
507 return __builtin_mips_upper_c_sf_ps (a
, b
);
510 NOMIPS16
int test17 (v2sf a
, v2sf b
)
512 return __builtin_mips_lower_c_sf_ps (a
, b
);
515 NOMIPS16
int test18 (v2sf a
, v2sf b
)
517 return __builtin_mips_upper_c_ngle_ps (a
, b
);
520 NOMIPS16
int test19 (v2sf a
, v2sf b
)
522 return __builtin_mips_lower_c_ngle_ps (a
, b
);
525 NOMIPS16
int test20 (v2sf a
, v2sf b
)
527 return __builtin_mips_upper_c_seq_ps (a
, b
);
530 NOMIPS16
int test21 (v2sf a
, v2sf b
)
532 return __builtin_mips_lower_c_seq_ps (a
, b
);
535 NOMIPS16
int test22 (v2sf a
, v2sf b
)
537 return __builtin_mips_upper_c_ngl_ps (a
, b
);
540 NOMIPS16
int test23 (v2sf a
, v2sf b
)
542 return __builtin_mips_lower_c_ngl_ps (a
, b
);
545 NOMIPS16
int test24 (v2sf a
, v2sf b
)
547 return __builtin_mips_upper_c_lt_ps (a
, b
);
550 NOMIPS16
int test25 (v2sf a
, v2sf b
)
552 return __builtin_mips_lower_c_lt_ps (a
, b
);
555 NOMIPS16
int test26 (v2sf a
, v2sf b
)
557 return __builtin_mips_upper_c_nge_ps (a
, b
);
560 NOMIPS16
int test27 (v2sf a
, v2sf b
)
562 return __builtin_mips_lower_c_nge_ps (a
, b
);
565 NOMIPS16
int test28 (v2sf a
, v2sf b
)
567 return __builtin_mips_upper_c_le_ps (a
, b
);
570 NOMIPS16
int test29 (v2sf a
, v2sf b
)
572 return __builtin_mips_lower_c_le_ps (a
, b
);
575 NOMIPS16
int test30 (v2sf a
, v2sf b
)
577 return __builtin_mips_upper_c_ngt_ps (a
, b
);
580 NOMIPS16
int test31 (v2sf a
, v2sf b
)
582 return __builtin_mips_lower_c_ngt_ps (a
, b
);