annotate gcc/testsuite/c-c++-common/goacc/cache-1.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* OpenACC cache directive: valid usage. */
kono
parents:
diff changeset
2 /* For execution testing, this file is "#include"d from
kono
parents:
diff changeset
3 libgomp/testsuite/libgomp.oacc-c-c++-common/cache-1.c. */
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 int
kono
parents:
diff changeset
6 main (int argc, char **argv)
kono
parents:
diff changeset
7 {
kono
parents:
diff changeset
8 #define N 2
kono
parents:
diff changeset
9 int a[N], b[N];
kono
parents:
diff changeset
10 int i;
kono
parents:
diff changeset
11
kono
parents:
diff changeset
12 for (i = 0; i < N; i++)
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 a[i] = 3;
kono
parents:
diff changeset
15 b[i] = 0;
kono
parents:
diff changeset
16 }
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 #pragma acc parallel copyin (a[0:N]) copyout (b[0:N])
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 int ii;
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 for (ii = 0; ii < N; ii++)
kono
parents:
diff changeset
23 {
kono
parents:
diff changeset
24 const int idx = ii;
kono
parents:
diff changeset
25 int n = 1;
kono
parents:
diff changeset
26 const int len = n;
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 /* Have at it, GCC! */
kono
parents:
diff changeset
29 #pragma acc cache (a[0:N])
kono
parents:
diff changeset
30 #pragma acc cache (a[0:N], a[0:N])
kono
parents:
diff changeset
31 #pragma acc cache (a[0:N], b[0:N])
kono
parents:
diff changeset
32 #pragma acc cache (a[0])
kono
parents:
diff changeset
33 #pragma acc cache (a[0], a[1], b[0:N])
kono
parents:
diff changeset
34 #pragma acc cache (a[i - 5])
kono
parents:
diff changeset
35 #pragma acc cache (a[i + 5:len])
kono
parents:
diff changeset
36 #pragma acc cache (a[i + 5:len - 1])
kono
parents:
diff changeset
37 #pragma acc cache (b[i])
kono
parents:
diff changeset
38 #pragma acc cache (b[i:len])
kono
parents:
diff changeset
39 #pragma acc cache (a[ii])
kono
parents:
diff changeset
40 #pragma acc cache (a[ii:len])
kono
parents:
diff changeset
41 #pragma acc cache (b[ii - 1])
kono
parents:
diff changeset
42 #pragma acc cache (b[ii - 1:len])
kono
parents:
diff changeset
43 #pragma acc cache (b[i - ii + 1])
kono
parents:
diff changeset
44 #pragma acc cache (b[i + ii - 1:len])
kono
parents:
diff changeset
45 #pragma acc cache (b[i * ii - 1:len + 1])
kono
parents:
diff changeset
46 #pragma acc cache (a[idx + 2])
kono
parents:
diff changeset
47 #pragma acc cache (a[idx:len + 2])
kono
parents:
diff changeset
48 #pragma acc cache (a[idx])
kono
parents:
diff changeset
49 #pragma acc cache (a[idx:len])
kono
parents:
diff changeset
50 #pragma acc cache (a[idx + 2:len])
kono
parents:
diff changeset
51 #pragma acc cache (a[idx + 2 + i:len])
kono
parents:
diff changeset
52 #pragma acc cache (a[idx + 2 + i + ii:len])
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 b[ii] = a[ii];
kono
parents:
diff changeset
55 }
kono
parents:
diff changeset
56 }
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 for (i = 0; i < N; i++)
kono
parents:
diff changeset
60 {
kono
parents:
diff changeset
61 if (a[i] != b[i])
kono
parents:
diff changeset
62 __builtin_abort ();
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 return 0;
kono
parents:
diff changeset
66 }