3 /* { dg-options "-O3" } */
7 extern void abort (void);
9 void set_vector (int *a
, int n
)
16 void check_vector (pRINT c
, pRINT result
, char *str
)
20 if (c
[i
] != result
[i
])
24 #define TEST(func, sign) set_vector (sign##c, 0); \
25 func (sign##a, sign##b, sign##c); \
26 check_vector (sign##c, func##_vector, #func);
29 #define TESTV(func, sign) \
30 if (func (sign##a) != func##_value) \
33 #define TESTVLL(func, sign) \
34 if (func (ll##sign##a) != func##_value) \
46 unsigned long long llua
[16];
49 /* Table of standard values to compare against. */
50 unsigned int test_bic_vector
[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
51 unsigned int test_orn_vector
[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
52 int mla_vector
[] = {0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225};
53 int mls_vector
[] = {0, -1, -4, -9, -16, -25, -36, -49, -64, -81, -100, -121, -144, -169, -196, -225};
54 int smax_vector
[] = {0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15};
55 int smin_vector
[] = {0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15};
56 unsigned int umax_vector
[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
57 unsigned int umin_vector
[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
58 int sabd_vector
[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
59 int saba_vector
[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
60 int reduce_smax_value
= 0;
61 int reduce_smin_value
= -15;
62 unsigned int reduce_umax_value
= 15;
63 unsigned int reduce_umin_value
= 0;
64 unsigned int reduce_add_u32_value
= 120;
65 int reduce_add_s32_value
= -120;
66 long long reduce_add_s64_value
= -120;
67 unsigned long long reduce_add_u64_value
= 120;
69 /* Set up input vectors. */
70 for (i
=0; i
< 16; i
++)
73 llsa
[i
] = (long long)-i
;
75 llua
[i
] = (unsigned long long)i
;
88 TESTV (reduce_smax
, s
);
89 TESTV (reduce_smin
, s
);
90 TESTV (reduce_umax
, u
);
91 TESTV (reduce_umin
, u
);
92 TESTV (reduce_add_u32
, u
);
93 TESTV (reduce_add_s32
, s
);
94 TESTVLL (reduce_add_u64
, u
);
95 TESTVLL (reduce_add_s64
, s
);