1 /* mips-ps-2.c with an extra -ffinite-math-only option. This option
2 changes the way that abs.ps is handled. */
3 /* { dg-do run { target mpaired_single } } */
4 /* { dg-mips-options "-O2 -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");