1 #include <stdbool.h>
2 
3 int
main()4 main ()
5 {
6   int i, j, k, *a, b;
7 
8 #pragma acc parallel loop tile (10)
9   for (i = 0; i < 100; i++)
10     ;
11 
12 #pragma acc parallel loop tile (*)
13   for (i = 0; i < 100; i++)
14     ;
15 
16 #pragma acc parallel loop tile (10, *)
17   for (i = 0; i < 100; i++)
18     for (j = 0; j < 100; j++)
19       ;
20 
21 #pragma acc parallel loop tile (10, *, i) // { dg-error "" }
22   for (i = 0; i < 100; i++)
23     for (j = 0; j < 100; j++)
24       for (k = 0; k < 100; k++)
25 	;
26 
27 #pragma acc parallel loop tile // { dg-error "expected '\\\('" }
28   for (i = 0; i < 100; i++)
29     ;
30 
31 #pragma acc parallel loop tile () // { dg-error "" }
32   for (i = 0; i < 100; i++)
33     ;
34 
35 #pragma acc parallel loop tile (,1) // { dg-error "" }
36   for (i = 0; i < 100; i++)
37     ;
38 
39 #pragma acc parallel loop tile (,,) // { dg-error "" }
40   for (i = 0; i < 100; i++)
41     ;
42 
43 #pragma acc parallel loop tile (1.1) // { dg-error "'tile' argument needs" }
44   for (i = 0; i < 100; i++)
45     ;
46 
47 #pragma acc parallel loop tile (-3) // { dg-error "'tile' argument needs" }
48   for (i = 0; i < 100; i++)
49     ;
50 
51 #pragma acc parallel loop tile (10,-3) // { dg-error "'tile' argument needs" }
52   for (i = 0; i < 100; i++)
53     for (j = 0; j < 100; j++)
54       ;
55 
56 #pragma acc parallel loop tile (-100,10,5) // { dg-error "'tile' argument needs" }
57   for (i = 0; i < 100; i++)
58     for (j = 0; j < 100; j++)
59       for (k = 0; k < 100; k++)
60 	;
61 
62 #pragma acc parallel loop tile (1,true)
63   for (i = 0; i < 100; i++)
64     for (j = 0; j < 100; j++)
65       ;
66 
67 #pragma acc parallel loop tile (*a, 1) // { dg-error "" }
68   for (i = 0; i < 100; i++)
69     for (j = 0; j < 100; j++)
70       ;
71 
72 #pragma acc parallel loop tile (1, b) // { dg-error "" }
73   for (i = 0; i < 100; i++)
74     for (j = 0; j < 100; j++)
75       ;
76 
77 #pragma acc parallel loop tile (b, 1) // { dg-error "" }
78   for (i = 0; i < 100; i++)
79     for (j = 0; j < 100; j++)
80       ;
81 
82   return 0;
83 }
84 
85 
par(void)86 void par (void)
87 {
88   int i, j, k;
89 
90 #pragma acc parallel
91   {
92 #pragma acc loop tile // { dg-error "expected" }
93     for (i = 0; i < 10; i++)
94       { }
95 #pragma acc loop tile() // { dg-error "expected" }
96     for (i = 0; i < 10; i++)
97       { }
98 #pragma acc loop tile(1)
99     for (i = 0; i < 10; i++)
100       { }
101 #pragma acc loop tile(*)
102     for (i = 0; i < 10; i++)
103       { }
104 #pragma acc loop tile(2)
105     for (i = 0; i < 10; i++)
106       {
107 	for (j = 1; j < 10; j++)
108 	  { }
109       }
110 #pragma acc loop tile(-2)  // { dg-error "'tile' argument needs" }
111     for (i = 1; i < 10; i++)
112       { }
113 #pragma acc loop tile(i)  // { dg-error "" }
114     for (i = 1; i < 10; i++)
115       { }
116 #pragma acc loop tile(2, 2, 1)
117     for (i = 1; i < 3; i++)
118       {
119 	for (j = 4; j < 6; j++)
120 	  for (k = 0; k< 100; k++);
121       }
122 #pragma acc loop tile(2, 2)
123     for (i = 1; i < 5; i+=2)
124       {
125 	for (j = i + 1; j < 7; j+=i) // { dg-error "initializer expression" }
126 	  { }
127       }
128 #pragma acc loop vector tile(*)
129     for (i = 0; i < 10; i++)
130       { }
131 #pragma acc loop worker tile(*)
132     for (i = 0; i < 10; i++)
133       { }
134 #pragma acc loop gang tile(*)
135     for (i = 0; i < 10; i++)
136       { }
137 #pragma acc loop vector gang tile(*)
138     for (i = 0; i < 10; i++)
139       { }
140 #pragma acc loop vector worker tile(*)
141     for (i = 0; i < 10; i++)
142       { }
143 #pragma acc loop gang worker tile(*)
144     for (i = 0; i < 10; i++)
145       { }
146   }
147 }
p3(void)148 void p3 (void)
149 {
150   int i, j;
151 
152 
153 #pragma acc parallel loop tile // { dg-error "expected" }
154   for (i = 0; i < 10; i++)
155     { }
156 #pragma acc parallel loop tile() // { dg-error "expected" }
157   for (i = 0; i < 10; i++)
158     { }
159 #pragma acc parallel loop tile(1)
160   for (i = 0; i < 10; i++)
161     { }
162 #pragma acc parallel loop tile(*)
163   for (i = 0; i < 10; i++)
164     { }
165 #pragma acc parallel loop tile(*, 1)
166   for (i = 0; i < 10; i++)
167     {
168       for (j = 1; j < 10; j++)
169 	{ }
170     }
171 #pragma acc parallel loop tile(-2)   // { dg-error "'tile' argument needs" }
172   for (i = 1; i < 10; i++)
173     { }
174 #pragma acc parallel loop tile(i)   // { dg-error "" }
175   for (i = 1; i < 10; i++)
176     { }
177 #pragma acc parallel loop tile(2, 2, 1)
178   for (i = 1; i < 3; i++)
179     for (j = 4; j < 6; j++)
180       for (int k = 1 ; k < 2; k++)
181 	;
182 #pragma acc parallel loop tile(2, 2)
183   for (i = 1; i < 5; i+=2)
184     for (j = i + 1; j < 7; j++) // { dg-error "initializer expression" }
185       { }
186 #pragma acc parallel loop vector tile(*)
187   for (i = 0; i < 10; i++)
188     { }
189 #pragma acc parallel loop worker tile(*)
190   for (i = 0; i < 10; i++)
191     { }
192 #pragma acc parallel loop gang tile(*)
193   for (i = 0; i < 10; i++)
194     { }
195 #pragma acc parallel loop vector gang tile(*)
196   for (i = 0; i < 10; i++)
197     { }
198 #pragma acc parallel loop vector worker tile(*)
199   for (i = 0; i < 10; i++)
200     { }
201 #pragma acc parallel loop gang worker tile(*)
202   for (i = 0; i < 10; i++)
203     { }
204 
205 }
206 
207 
208 void
kern(void)209 kern (void)
210 {
211   int i, j;
212 
213 #pragma acc kernels
214   {
215 #pragma acc loop tile // { dg-error "expected" }
216     for (i = 0; i < 10; i++)
217       { }
218 #pragma acc loop tile() // { dg-error "expected" }
219     for (i = 0; i < 10; i++)
220       { }
221 #pragma acc loop tile(1)
222     for (i = 0; i < 10; i++)
223       { }
224 #pragma acc loop tile(2)
225     for (i = 0; i < 10; i++)
226       { }
227 #pragma acc loop tile(6-2)
228     for (i = 0; i < 10; i++)
229       { }
230 #pragma acc loop tile(6+2)
231     for (i = 0; i < 10; i++)
232       { }
233 #pragma acc loop tile(*)
234     for (i = 0; i < 10; i++)
235       { }
236 #pragma acc loop tile(*, 1)
237     for (i = 0; i < 10; i++)
238       {
239 	for (j = 0; j < 10; i++) /* { dg-error "increment expression" } */
240 	  { }
241       }
242 #pragma acc loop tile(-2) // { dg-error "'tile' argument needs" }
243     for (i = 0; i < 10; i++)
244       { }
245 #pragma acc loop tile(i) // { dg-error "" }
246     for (i = 0; i < 10; i++)
247       { }
248 #pragma acc loop tile(2, 2, 1)
249     for (i = 2; i < 4; i++)
250       for (j = 4; j < 6; j++)
251 	for (int k = 4; k < 6; k++)
252 	{ }
253 #pragma acc loop tile(2, 2)
254     for (i = 1; i < 5; i+=2)
255       for (j = i+1; j < 7; j++) /* { dg-error "initializer expression" } */
256 	{ }
257 #pragma acc loop vector tile(*)
258     for (i = 0; i < 10; i++)
259       { }
260 #pragma acc loop worker tile(*)
261     for (i = 0; i < 10; i++)
262       { }
263 #pragma acc loop gang tile(*)
264     for (i = 0; i < 10; i++)
265       { }
266 #pragma acc loop vector gang tile(*)
267     for (i = 0; i < 10; i++)
268       { }
269 #pragma acc loop vector worker tile(*)
270     for (i = 0; i < 10; i++)
271       { }
272 #pragma acc loop gang worker tile(*)
273     for (i = 0; i < 10; i++)
274       { }
275    }
276 }
277 
278 
k3(void)279 void k3 (void)
280 {
281   int i, j;
282 
283 #pragma acc kernels loop tile // { dg-error "expected" }
284   for (i = 0; i < 10; i++)
285     { }
286 #pragma acc kernels loop tile() // { dg-error "expected" }
287   for (i = 0; i < 10; i++)
288     { }
289 #pragma acc kernels loop tile(1)
290   for (i = 0; i < 10; i++)
291     { }
292 #pragma acc kernels loop tile(*)
293   for (i = 0; i < 10; i++)
294     { }
295 #pragma acc kernels loop tile(*, 1)
296   for (i = 0; i < 10; i++)
297     {
298       for (j = 1; j < 10; j++)
299 	{ }
300     }
301 #pragma acc kernels loop tile(-2) // { dg-error "'tile' argument needs" }
302   for (i = 1; i < 10; i++)
303     { }
304 #pragma acc kernels loop tile(i) // { dg-error "" }
305   for (i = 1; i < 10; i++)
306     { }
307 #pragma acc kernels loop tile(2, 2, 1)
308   for (i = 1; i < 3; i++)
309     for (j = 4; j < 6; j++)
310       for (int k = 1; k < 7; k++)
311 	;
312 #pragma acc kernels loop tile(2, 2)
313   for (i = 1; i < 5; i++)
314     {
315       for (j = i + 1; j < 7; j += i) /* { dg-error "initializer expression" } */
316 	{ }
317     }
318 #pragma acc kernels loop vector tile(*)
319   for (i = 0; i < 10; i++)
320     { }
321 #pragma acc kernels loop worker tile(*)
322   for (i = 0; i < 10; i++)
323     { }
324 #pragma acc kernels loop gang tile(*)
325   for (i = 0; i < 10; i++)
326     { }
327 #pragma acc kernels loop vector gang tile(*)
328   for (i = 0; i < 10; i++)
329     { }
330 #pragma acc kernels loop vector worker tile(*)
331   for (i = 0; i < 10; i++)
332     { }
333 #pragma acc kernels loop gang worker tile(*)
334   for (i = 0; i < 10; i++)
335     { }
336 }
337