* c-c++-common/Wrestrict.c (test_strcpy_range): Revert latest change.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / par-loop-comb-reduction-2.c
bloba339f327956e14a69636ccd1274c52f7112fcc85
1 #include <assert.h>
3 /* Test of reduction on both parallel and loop directives (workers and vectors
4 in gang-partitioned mode, int type with XOR). */
6 int
7 main (int argc, char *argv[])
9 int i, j, arr[32768], res = 0, hres = 0;
11 for (i = 0; i < 32768; i++)
12 arr[i] = i;
14 #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \
15 reduction(^:res)
17 #pragma acc loop gang
18 for (j = 0; j < 32; j++)
20 #pragma acc loop worker vector reduction(^:res)
21 for (i = 0; i < 1024; i++)
22 res ^= 3 * arr[j * 1024 + i];
24 #pragma acc loop worker vector reduction(^:res)
25 for (i = 0; i < 1024; i++)
26 res ^= arr[j * 1024 + (1023 - i)];
30 for (j = 0; j < 32; j++)
31 for (i = 0; i < 1024; i++)
33 hres ^= 3 * arr[j * 1024 + i];
34 hres ^= arr[j * 1024 + (1023 - i)];
37 assert (res == hres);
39 return 0;