1 /* mips-ps-2.c with an extra -ffinite-math-only option. This option
2 changes the way that abs.ps is handled. */
4 /* { dg-options "-mpaired-single -ffinite-math-only" } */
6 /* Test MIPS paired-single builtin functions */
10 typedef float v2sf
__attribute__ ((vector_size(8)));
19 union { long long ll
; int i
[2]; } endianness_test
;
20 endianness_test
.ll
= 1;
21 little_endian
= endianness_test
.i
[0];
26 c
= __builtin_mips_pll_ps (a
, b
);
27 if (little_endian
) // little endian
32 if (!__builtin_mips_upper_c_eq_ps (c
, d
) ||
33 !__builtin_mips_lower_c_eq_ps (c
, d
))
39 c
= __builtin_mips_pul_ps (a
, b
);
40 if (little_endian
) // little endian
44 if (!__builtin_mips_upper_c_eq_ps (c
, d
) ||
45 !__builtin_mips_lower_c_eq_ps (c
, d
))
51 c
= __builtin_mips_plu_ps (a
, b
);
52 if (little_endian
) // little endian
56 if (!__builtin_mips_upper_c_eq_ps (c
, d
) ||
57 !__builtin_mips_lower_c_eq_ps (c
, d
))
63 c
= __builtin_mips_puu_ps (a
, b
);
64 if (little_endian
) // little endian
68 if (!__builtin_mips_upper_c_eq_ps (c
, d
) ||
69 !__builtin_mips_lower_c_eq_ps (c
, d
))
75 a
= __builtin_mips_cvt_ps_s (e
, f
);
76 if (little_endian
) // little endian
77 b
= (v2sf
) {4.5, 3.4};
79 b
= (v2sf
) {3.4, 4.5};
80 if (!__builtin_mips_upper_c_eq_ps (a
, b
) ||
81 !__builtin_mips_lower_c_eq_ps (a
, b
))
85 a
= (v2sf
) {35.1, 120.2};
86 e
= __builtin_mips_cvt_s_pl (a
);
87 if (little_endian
) // little endian
95 a
= (v2sf
) {30.0, 100.0};
96 e
= __builtin_mips_cvt_s_pu (a
);
97 if (little_endian
) // little endian
105 a
= (v2sf
) {-3.4, -5.8};
106 b
= __builtin_mips_abs_ps (a
);
107 c
= (v2sf
) {3.4, 5.8};
108 if (!__builtin_mips_upper_c_eq_ps (b
, c
) ||
109 !__builtin_mips_lower_c_eq_ps (b
, c
))
112 /* alnv.ps with rs = 4*/
116 c
= __builtin_mips_alnv_ps (a
, b
, i
);
119 if (!__builtin_mips_upper_c_eq_ps (c
, d
) ||
120 !__builtin_mips_lower_c_eq_ps (c
, d
))
123 /* alnv.ps with rs = 0 */
127 c
= __builtin_mips_alnv_ps (a
, b
, i
);
130 if (!__builtin_mips_upper_c_eq_ps (c
, d
) ||
131 !__builtin_mips_lower_c_eq_ps (c
, d
))
134 printf ("Test Passes\n");