3 __attribute__((noinline
, noclone
)) void
4 foo (int (*x
)[3][2], int *y
, long w
[1][2], int p1
, long p2
, long p3
, int p4
,
5 int p5
, long p6
, short p7
, int s
, int t
)
7 unsigned long long a
[p7
+ 4];
10 for (i
= 0; i
< p7
+ 4; i
++)
16 #pragma omp parallel for reduction(+:x[-1:p1 + 1][:p2], z[t + 2:p3]) \
17 reduction(*:y[-s:p4]) reduction(|:a[s + 3:p5]) \
18 reduction(&:w[s + 1:p6 - 1][t:p6]) reduction(max:b[2:])
19 for (i
= 0; i
< 128; i
++)
21 x
[i
/ 64 - 1][i
% 3][(i
/ 4) & 1] += i
;
28 z
[i
/ 32 + 2] += (i
& 3);
31 a
[i
/ 32 + 2] |= 1ULL << (i
& 30);
32 w
[0][i
& 1] &= ~(1L << (i
/ 17 * 3));
40 for (i
= 0; i
< 9; i
++)
41 if (a
[i
] != ((i
< 6 && i
>= 2) ? 0x55555555ULL
: 0))
43 if (b
[0] != -6 || b
[1] != -6 || b
[2] != 22 || b
[3] != 84 || b
[4] != 127)
51 static int a2
[4][3][2] = {{{ 0, 0 }, { 0, 0 }, { 0, 0 }},
52 {{ 312, 381 }, { 295, 356 }, { 337, 335 }},
53 {{ 1041, 975 }, { 1016, 1085 }, { 935, 1060 }},
54 {{ 0, 0 }, { 0, 0 }, { 0, 0 }}};
55 int y
[5] = { 0, 1, 1, 1, 0 };
56 int y2
[5] = { 0, 6561, 2401, 289, 0 };
57 char z2
[10] = { 0, 0, 48, 49, 50, 51, 0, 0, 0, 0 };
58 long w
[1][2] = { ~0L, ~0L };
59 foo (&a
[2], y
, w
, 1, 3L, 4L, 3, 4, 2L, 5, -1, 0);
60 if (__builtin_memcmp (a
, a2
, sizeof (a
))
61 || __builtin_memcmp (y
, y2
, sizeof (y
))
62 || __builtin_memcmp (z
, z2
, sizeof (z
))
63 || w
[0][0] != ~0x249249L
64 || w
[0][1] != ~0x249249L
)