libgomp testsuite: OpenACC C++ testing.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / data-1.c
blobe7564cc12b27d576b5382fb31bdc3f13f7cd8c02
1 /* { dg-do run } */
3 #include <stdlib.h>
4 #include <openacc.h>
6 int i;
8 int
9 is_mapped (void *p, size_t n)
11 #if ACC_MEM_SHARED
12 return 1;
13 #else
14 return acc_is_present (p, n);
15 #endif
18 int main(void)
20 int j;
22 i = -1;
23 j = -2;
24 #pragma acc data copyin (i, j)
26 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
27 abort ();
28 if (i != -1 || j != -2)
29 abort ();
30 i = 2;
31 j = 1;
32 if (i != 2 || j != 1)
33 abort ();
35 if (i != 2 || j != 1)
36 abort ();
38 i = -1;
39 j = -2;
40 #pragma acc data copyout (i, j)
42 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
43 abort ();
44 if (i != -1 || j != -2)
45 abort ();
46 i = 2;
47 j = 1;
48 if (i != 2 || j != 1)
49 abort ();
51 #pragma acc parallel present (i, j)
53 i = 4;
54 j = 2;
57 if (i != 4 || j != 2)
58 abort ();
60 i = -1;
61 j = -2;
62 #pragma acc data create (i, j)
64 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
65 abort ();
66 if (i != -1 || j != -2)
67 abort ();
68 i = 2;
69 j = 1;
70 if (i != 2 || j != 1)
71 abort ();
73 if (i != 2 || j != 1)
74 abort ();
76 i = -1;
77 j = -2;
78 #pragma acc data present_or_copyin (i, j)
80 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
81 abort ();
82 if (i != -1 || j != -2)
83 abort ();
84 i = 2;
85 j = 1;
86 if (i != 2 || j != 1)
87 abort ();
89 if (i != 2 || j != 1)
90 abort ();
92 i = -1;
93 j = -2;
94 #pragma acc data present_or_copyout (i, j)
96 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
97 abort ();
98 if (i != -1 || j != -2)
99 abort ();
100 i = 2;
101 j = 1;
102 if (i != 2 || j != 1)
103 abort ();
105 #pragma acc parallel present (i, j)
107 i = 4;
108 j = 2;
111 if (i != 4 || j != 2)
112 abort ();
114 i = -1;
115 j = -2;
116 #pragma acc data present_or_copy (i, j)
118 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
119 abort ();
120 if (i != -1 || j != -2)
121 abort ();
122 i = 2;
123 j = 1;
124 if (i != 2 || j != 1)
125 abort ();
127 #if ACC_MEM_SHARED
128 if (i != 2 || j != 1)
129 abort ();
130 #else
131 if (i != -1 || j != -2)
132 abort ();
133 #endif
135 i = -1;
136 j = -2;
137 #pragma acc data present_or_create (i, j)
139 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
140 abort ();
141 i = 2;
142 j = 1;
143 if (i != 2 || j != 1)
144 abort ();
147 if (i != 2 || j != 1)
148 abort ();
150 i = -1;
151 j = -2;
152 #pragma acc data copyin (i, j)
154 #pragma acc data present (i, j)
156 if (!is_mapped (&i, sizeof (i)) || !is_mapped (&j, sizeof (j)))
157 abort ();
158 if (i != -1 || j != -2)
159 abort ();
160 i = 2;
161 j = 1;
162 if (i != 2 || j != 1)
163 abort ();
166 if (i != 2 || j != 1)
167 abort ();
169 i = -1;
170 j = -2;
171 #pragma acc data
173 #if !ACC_MEM_SHARED
174 if (is_mapped (&i, sizeof (i)) || is_mapped (&j, sizeof (j)))
175 abort ();
176 #endif
177 if (i != -1 || j != -2)
178 abort ();
179 i = 2;
180 j = 1;
181 if (i != 2 || j != 1)
182 abort ();
184 if (i != 2 || j != 1)
185 abort ();
187 return 0;