Use conditional internal functions in if-conversion
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / vect_hadd_1.h
blobab25a5d84d869349b7b9b6cbb1d4250dac84604f
1 #include <stdint.h>
3 #pragma GCC target "+nosve"
5 #define N 100
7 #define DEF_FUNC(TYPE, B1, B2, C1, C2) \
8 void __attribute__ ((noipa)) \
9 f_##TYPE (TYPE *restrict a, TYPE *restrict b, TYPE *restrict c) \
10 { \
11 for (int i = 0; i < N; ++i) \
12 a[i] = ((__int128) b[i] + c[i] + BIAS) >> 1; \
15 #define TEST_FUNC(TYPE, B1, B2, C1, C2) \
16 { \
17 TYPE a[N], b[N], c[N]; \
18 for (TYPE i = 0; i < N; ++i) \
19 { \
20 b[i] = B1 + i * B2; \
21 c[i] = C1 + i * C2; \
22 } \
23 f_##TYPE (a, b, c); \
24 for (TYPE i = 0; i < N; ++i) \
25 if (a[i] != ((B1 + C1 + BIAS + (__int128) i * (B2 + C2)) >> 1)) \
26 __builtin_abort (); \
29 #define FOR_EACH_SIGNED_TYPE(T) \
30 T (int8_t, -124, 2, -40, 1) \
31 T (int16_t, -32000, 510, -10000, 257) \
32 T (int32_t, -2000000000, 131072, -3277000, 65537) \
33 T (int64_t, -44, 100, -10000, 99)
35 #define FOR_EACH_UNSIGNED_TYPE(T) \
36 T (uint8_t, 4, 2, 40, 1) \
37 T (uint16_t, 12, 510, 10000, 257) \
38 T (uint32_t, 20, 131072, 3277000, 65537) \
39 T (uint64_t, 90, 100, 10000, 99)