]> git.ipfire.org Git - thirdparty/gcc.git/blob - libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-1.c
Merge current set of OpenACC changes from gomp-4_0-branch.
[thirdparty/gcc.git] / libgomp / testsuite / libgomp.oacc-c-c++-common / parallel-1.c
1 /* { dg-do run } */
2
3 #include <stdlib.h>
4
5 int i;
6
7 int main(void)
8 {
9 int j, v;
10
11 i = -1;
12 j = -2;
13 v = 0;
14 #pragma acc parallel /* copyout */ present_or_copyout (v) copyin (i, j)
15 {
16 if (i != -1 || j != -2)
17 abort ();
18 i = 2;
19 j = 1;
20 if (i != 2 || j != 1)
21 abort ();
22 v = 1;
23 }
24 #if ACC_MEM_SHARED
25 if (v != 1 || i != 2 || j != 1)
26 abort ();
27 #else
28 if (v != 1 || i != -1 || j != -2)
29 abort ();
30 #endif
31
32 i = -1;
33 j = -2;
34 v = 0;
35 #pragma acc parallel /* copyout */ present_or_copyout (v) copyout (i, j)
36 {
37 i = 2;
38 j = 1;
39 if (i != 2 || j != 1)
40 abort ();
41 v = 1;
42 }
43 if (v != 1 || i != 2 || j != 1)
44 abort ();
45
46 i = -1;
47 j = -2;
48 v = 0;
49 #pragma acc parallel /* copyout */ present_or_copyout (v) copy (i, j)
50 {
51 if (i != -1 || j != -2)
52 abort ();
53 i = 2;
54 j = 1;
55 if (i != 2 || j != 1)
56 abort ();
57 v = 1;
58 }
59 if (v != 1 || i != 2 || j != 1)
60 abort ();
61
62 i = -1;
63 j = -2;
64 v = 0;
65 #pragma acc parallel /* copyout */ present_or_copyout (v) create (i, j)
66 {
67 i = 2;
68 j = 1;
69 if (i != 2 || j != 1)
70 abort ();
71 v = 1;
72 }
73 #if ACC_MEM_SHARED
74 if (v != 1 || i != 2 || j != 1)
75 abort ();
76 #else
77 if (v != 1 || i != -1 || j != -2)
78 abort ();
79 #endif
80
81 i = -1;
82 j = -2;
83 v = 0;
84 #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_copyin (i, j)
85 {
86 if (i != -1 || j != -2)
87 abort ();
88 i = 2;
89 j = 1;
90 if (i != 2 || j != 1)
91 abort ();
92 v = 1;
93 }
94 if (v != 1)
95 abort ();
96 #if ACC_MEM_SHARED
97 if (v != 1 || i != 2 || j != 1)
98 abort ();
99 #else
100 if (v != 1 || i != -1 || j != -2)
101 abort ();
102 #endif
103
104 i = -1;
105 j = -2;
106 v = 0;
107 #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_copyout (i, j)
108 {
109 i = 2;
110 j = 1;
111 if (i != 2 || j != 1)
112 abort ();
113 v = 1;
114 }
115 if (v != 1 || i != 2 || j != 1)
116 abort ();
117
118 i = -1;
119 j = -2;
120 v = 0;
121 #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_copy (i, j)
122 {
123 if (i != -1 || j != -2)
124 abort ();
125 i = 2;
126 j = 1;
127 if (i != 2 || j != 1)
128 abort ();
129 v = 1;
130 }
131 if (v != 1 || i != 2 || j != 1)
132 abort ();
133
134 i = -1;
135 j = -2;
136 v = 0;
137 #pragma acc parallel /* copyout */ present_or_copyout (v) present_or_create (i, j)
138 {
139 i = 2;
140 j = 1;
141 if (i != 2 || j != 1)
142 abort ();
143 v = 1;
144 }
145 if (v != 1)
146 abort ();
147 #if ACC_MEM_SHARED
148 if (v != 1 || i != 2 || j != 1)
149 abort ();
150 #else
151 if (v != 1 || i != -1 || j != -2)
152 abort ();
153 #endif
154
155 i = -1;
156 j = -2;
157 v = 0;
158
159 #pragma acc data copyin (i, j)
160 {
161 #pragma acc parallel /* copyout */ present_or_copyout (v) present (i, j)
162 {
163 if (i != -1 || j != -2)
164 abort ();
165 i = 2;
166 j = 1;
167 if (i != 2 || j != 1)
168 abort ();
169 v = 1;
170 }
171 }
172 #if ACC_MEM_SHARED
173 if (v != 1 || i != 2 || j != 1)
174 abort ();
175 #else
176 if (v != 1 || i != -1 || j != -2)
177 abort ();
178 #endif
179
180 i = -1;
181 j = -2;
182 v = 0;
183
184 #pragma acc data copyin(i, j)
185 {
186 #pragma acc parallel /* copyout */ present_or_copyout (v)
187 {
188 if (i != -1 || j != -2)
189 abort ();
190 i = 2;
191 j = 1;
192 if (i != 2 || j != 1)
193 abort ();
194 v = 1;
195 }
196 }
197 #if ACC_MEM_SHARED
198 if (v != 1 || i != 2 || j != 1)
199 abort ();
200 #else
201 if (v != 1 || i != -1 || j != -2)
202 abort ();
203 #endif
204
205 return 0;
206 }