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