Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.dg/vect/vect-alias-check-10.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
111:04ced10e8804 | 131:84e7813d76e9 |
---|---|
1 #define N 87 | |
2 #define M 6 | |
3 | |
4 typedef signed char sc; | |
5 typedef unsigned char uc; | |
6 typedef signed short ss; | |
7 typedef unsigned short us; | |
8 typedef int si; | |
9 typedef unsigned int ui; | |
10 typedef signed long long sll; | |
11 typedef unsigned long long ull; | |
12 | |
13 #define FOR_EACH_TYPE(M) \ | |
14 M (sc) M (uc) \ | |
15 M (ss) M (us) \ | |
16 M (si) M (ui) \ | |
17 M (sll) M (ull) \ | |
18 M (float) M (double) | |
19 | |
20 #define TEST_VALUE(I) ((I) * 5 / 2) | |
21 | |
22 #define ADD_TEST(TYPE) \ | |
23 void __attribute__((noinline, noclone)) \ | |
24 test_##TYPE (TYPE *a, int step) \ | |
25 { \ | |
26 for (int i = 0; i < N; ++i) \ | |
27 { \ | |
28 a[i * step + 0] = a[i * step + 0] + 1; \ | |
29 a[i * step + 1] = a[i * step + 1] + 2; \ | |
30 a[i * step + 2] = a[i * step + 2] + 4; \ | |
31 a[i * step + 3] = a[i * step + 3] + 8; \ | |
32 } \ | |
33 } \ | |
34 void __attribute__((noinline, noclone)) \ | |
35 ref_##TYPE (TYPE *a, int step) \ | |
36 { \ | |
37 for (int i = 0; i < N; ++i) \ | |
38 { \ | |
39 a[i * step + 0] = a[i * step + 0] + 1; \ | |
40 a[i * step + 1] = a[i * step + 1] + 2; \ | |
41 a[i * step + 2] = a[i * step + 2] + 4; \ | |
42 a[i * step + 3] = a[i * step + 3] + 8; \ | |
43 asm volatile (""); \ | |
44 } \ | |
45 } | |
46 | |
47 #define DO_TEST(TYPE) \ | |
48 for (int j = -M; j <= M; ++j) \ | |
49 { \ | |
50 TYPE a[N * M], b[N * M]; \ | |
51 for (int i = 0; i < N * M; ++i) \ | |
52 a[i] = b[i] = TEST_VALUE (i); \ | |
53 int offset = (j < 0 ? N * M - 4 : 0); \ | |
54 test_##TYPE (a + offset, j); \ | |
55 ref_##TYPE (b + offset, j); \ | |
56 if (__builtin_memcmp (a, b, sizeof (a)) != 0) \ | |
57 __builtin_abort (); \ | |
58 } | |
59 | |
60 FOR_EACH_TYPE (ADD_TEST) | |
61 | |
62 int | |
63 main (void) | |
64 { | |
65 FOR_EACH_TYPE (DO_TEST) | |
66 return 0; | |
67 } |