blob: e897fa9c808d92398755328196fd078f58da8e24 [file] [log] [blame]
Olivier Deprezf4ef2d02021-04-20 13:36:24 +02001#ifdef GEN_FLANG_DIRECTIVE_CLAUSE_SETS
2#undef GEN_FLANG_DIRECTIVE_CLAUSE_SETS
3
4namespace llvm {
5namespace acc {
6
7 // Sets for atomic
8
9 static AccClauseSet allowedClauses_ACCD_atomic {
10 };
11
12 static AccClauseSet allowedOnceClauses_ACCD_atomic {
13 };
14
15 static AccClauseSet allowedExclusiveClauses_ACCD_atomic {
16 };
17
18 static AccClauseSet requiredClauses_ACCD_atomic {
19 };
20
21 // Sets for cache
22
23 static AccClauseSet allowedClauses_ACCD_cache {
24 };
25
26 static AccClauseSet allowedOnceClauses_ACCD_cache {
27 };
28
29 static AccClauseSet allowedExclusiveClauses_ACCD_cache {
30 };
31
32 static AccClauseSet requiredClauses_ACCD_cache {
33 };
34
35 // Sets for data
36
37 static AccClauseSet allowedClauses_ACCD_data {
38 };
39
40 static AccClauseSet allowedOnceClauses_ACCD_data {
41 llvm::acc::Clause::ACCC_if,
42 llvm::acc::Clause::ACCC_default,
43 };
44
45 static AccClauseSet allowedExclusiveClauses_ACCD_data {
46 };
47
48 static AccClauseSet requiredClauses_ACCD_data {
49 llvm::acc::Clause::ACCC_attach,
50 llvm::acc::Clause::ACCC_copy,
51 llvm::acc::Clause::ACCC_copyin,
52 llvm::acc::Clause::ACCC_copyout,
53 llvm::acc::Clause::ACCC_create,
54 llvm::acc::Clause::ACCC_default,
55 llvm::acc::Clause::ACCC_deviceptr,
56 llvm::acc::Clause::ACCC_no_create,
57 llvm::acc::Clause::ACCC_present,
58 };
59
60 // Sets for declare
61
62 static AccClauseSet allowedClauses_ACCD_declare {
63 llvm::acc::Clause::ACCC_copy,
64 llvm::acc::Clause::ACCC_copyin,
65 llvm::acc::Clause::ACCC_copyout,
66 llvm::acc::Clause::ACCC_create,
67 llvm::acc::Clause::ACCC_present,
68 llvm::acc::Clause::ACCC_deviceptr,
69 llvm::acc::Clause::ACCC_device_resident,
70 llvm::acc::Clause::ACCC_link,
71 };
72
73 static AccClauseSet allowedOnceClauses_ACCD_declare {
74 };
75
76 static AccClauseSet allowedExclusiveClauses_ACCD_declare {
77 };
78
79 static AccClauseSet requiredClauses_ACCD_declare {
80 };
81
82 // Sets for enter data
83
84 static AccClauseSet allowedClauses_ACCD_enter_data {
85 };
86
87 static AccClauseSet allowedOnceClauses_ACCD_enter_data {
88 llvm::acc::Clause::ACCC_async,
89 llvm::acc::Clause::ACCC_if,
90 llvm::acc::Clause::ACCC_wait,
91 };
92
93 static AccClauseSet allowedExclusiveClauses_ACCD_enter_data {
94 };
95
96 static AccClauseSet requiredClauses_ACCD_enter_data {
97 llvm::acc::Clause::ACCC_attach,
98 llvm::acc::Clause::ACCC_create,
99 llvm::acc::Clause::ACCC_copyin,
100 };
101
102 // Sets for exit data
103
104 static AccClauseSet allowedClauses_ACCD_exit_data {
105 llvm::acc::Clause::ACCC_async,
106 llvm::acc::Clause::ACCC_if,
107 llvm::acc::Clause::ACCC_wait,
108 llvm::acc::Clause::ACCC_finalize,
109 };
110
111 static AccClauseSet allowedOnceClauses_ACCD_exit_data {
112 };
113
114 static AccClauseSet allowedExclusiveClauses_ACCD_exit_data {
115 };
116
117 static AccClauseSet requiredClauses_ACCD_exit_data {
118 llvm::acc::Clause::ACCC_copyout,
119 llvm::acc::Clause::ACCC_delete,
120 llvm::acc::Clause::ACCC_detach,
121 };
122
123 // Sets for host_data
124
125 static AccClauseSet allowedClauses_ACCD_host_data {
126 llvm::acc::Clause::ACCC_if,
127 llvm::acc::Clause::ACCC_if_present,
128 };
129
130 static AccClauseSet allowedOnceClauses_ACCD_host_data {
131 };
132
133 static AccClauseSet allowedExclusiveClauses_ACCD_host_data {
134 };
135
136 static AccClauseSet requiredClauses_ACCD_host_data {
137 llvm::acc::Clause::ACCC_use_device,
138 };
139
140 // Sets for init
141
142 static AccClauseSet allowedClauses_ACCD_init {
143 };
144
145 static AccClauseSet allowedOnceClauses_ACCD_init {
146 llvm::acc::Clause::ACCC_device_num,
147 llvm::acc::Clause::ACCC_device_type,
148 llvm::acc::Clause::ACCC_if,
149 };
150
151 static AccClauseSet allowedExclusiveClauses_ACCD_init {
152 };
153
154 static AccClauseSet requiredClauses_ACCD_init {
155 };
156
157 // Sets for kernels
158
159 static AccClauseSet allowedClauses_ACCD_kernels {
160 llvm::acc::Clause::ACCC_attach,
161 llvm::acc::Clause::ACCC_copy,
162 llvm::acc::Clause::ACCC_copyin,
163 llvm::acc::Clause::ACCC_copyout,
164 llvm::acc::Clause::ACCC_create,
165 llvm::acc::Clause::ACCC_device_type,
166 llvm::acc::Clause::ACCC_no_create,
167 llvm::acc::Clause::ACCC_present,
168 llvm::acc::Clause::ACCC_deviceptr,
169 llvm::acc::Clause::ACCC_wait,
170 };
171
172 static AccClauseSet allowedOnceClauses_ACCD_kernels {
173 llvm::acc::Clause::ACCC_async,
174 llvm::acc::Clause::ACCC_default,
175 llvm::acc::Clause::ACCC_if,
176 llvm::acc::Clause::ACCC_num_gangs,
177 llvm::acc::Clause::ACCC_num_workers,
178 llvm::acc::Clause::ACCC_self,
179 llvm::acc::Clause::ACCC_vector_length,
180 };
181
182 static AccClauseSet allowedExclusiveClauses_ACCD_kernels {
183 };
184
185 static AccClauseSet requiredClauses_ACCD_kernels {
186 };
187
188 // Sets for kernels loop
189
190 static AccClauseSet allowedClauses_ACCD_kernels_loop {
191 llvm::acc::Clause::ACCC_copy,
192 llvm::acc::Clause::ACCC_copyin,
193 llvm::acc::Clause::ACCC_copyout,
194 llvm::acc::Clause::ACCC_create,
195 llvm::acc::Clause::ACCC_device_type,
196 llvm::acc::Clause::ACCC_no_create,
197 llvm::acc::Clause::ACCC_present,
198 llvm::acc::Clause::ACCC_private,
199 llvm::acc::Clause::ACCC_deviceptr,
200 llvm::acc::Clause::ACCC_attach,
201 };
202
203 static AccClauseSet allowedOnceClauses_ACCD_kernels_loop {
204 llvm::acc::Clause::ACCC_async,
205 llvm::acc::Clause::ACCC_collapse,
206 llvm::acc::Clause::ACCC_default,
207 llvm::acc::Clause::ACCC_gang,
208 llvm::acc::Clause::ACCC_if,
209 llvm::acc::Clause::ACCC_num_gangs,
210 llvm::acc::Clause::ACCC_num_workers,
211 llvm::acc::Clause::ACCC_reduction,
212 llvm::acc::Clause::ACCC_self,
213 llvm::acc::Clause::ACCC_tile,
214 llvm::acc::Clause::ACCC_vector,
215 llvm::acc::Clause::ACCC_vector_length,
216 llvm::acc::Clause::ACCC_wait,
217 llvm::acc::Clause::ACCC_worker,
218 };
219
220 static AccClauseSet allowedExclusiveClauses_ACCD_kernels_loop {
221 llvm::acc::Clause::ACCC_auto,
222 llvm::acc::Clause::ACCC_independent,
223 llvm::acc::Clause::ACCC_seq,
224 };
225
226 static AccClauseSet requiredClauses_ACCD_kernels_loop {
227 };
228
229 // Sets for loop
230
231 static AccClauseSet allowedClauses_ACCD_loop {
232 llvm::acc::Clause::ACCC_device_type,
233 llvm::acc::Clause::ACCC_private,
234 };
235
236 static AccClauseSet allowedOnceClauses_ACCD_loop {
237 llvm::acc::Clause::ACCC_collapse,
238 llvm::acc::Clause::ACCC_gang,
239 llvm::acc::Clause::ACCC_reduction,
240 llvm::acc::Clause::ACCC_tile,
241 llvm::acc::Clause::ACCC_vector,
242 llvm::acc::Clause::ACCC_worker,
243 };
244
245 static AccClauseSet allowedExclusiveClauses_ACCD_loop {
246 llvm::acc::Clause::ACCC_auto,
247 llvm::acc::Clause::ACCC_independent,
248 llvm::acc::Clause::ACCC_seq,
249 };
250
251 static AccClauseSet requiredClauses_ACCD_loop {
252 };
253
254 // Sets for parallel
255
256 static AccClauseSet allowedClauses_ACCD_parallel {
257 llvm::acc::Clause::ACCC_attach,
258 llvm::acc::Clause::ACCC_copy,
259 llvm::acc::Clause::ACCC_copyin,
260 llvm::acc::Clause::ACCC_copyout,
261 llvm::acc::Clause::ACCC_create,
262 llvm::acc::Clause::ACCC_deviceptr,
263 llvm::acc::Clause::ACCC_device_type,
264 llvm::acc::Clause::ACCC_no_create,
265 llvm::acc::Clause::ACCC_present,
266 llvm::acc::Clause::ACCC_private,
267 llvm::acc::Clause::ACCC_firstprivate,
268 llvm::acc::Clause::ACCC_wait,
269 };
270
271 static AccClauseSet allowedOnceClauses_ACCD_parallel {
272 llvm::acc::Clause::ACCC_async,
273 llvm::acc::Clause::ACCC_default,
274 llvm::acc::Clause::ACCC_if,
275 llvm::acc::Clause::ACCC_num_gangs,
276 llvm::acc::Clause::ACCC_num_workers,
277 llvm::acc::Clause::ACCC_reduction,
278 llvm::acc::Clause::ACCC_self,
279 llvm::acc::Clause::ACCC_vector_length,
280 };
281
282 static AccClauseSet allowedExclusiveClauses_ACCD_parallel {
283 };
284
285 static AccClauseSet requiredClauses_ACCD_parallel {
286 };
287
288 // Sets for parallel loop
289
290 static AccClauseSet allowedClauses_ACCD_parallel_loop {
291 llvm::acc::Clause::ACCC_attach,
292 llvm::acc::Clause::ACCC_copy,
293 llvm::acc::Clause::ACCC_copyin,
294 llvm::acc::Clause::ACCC_copyout,
295 llvm::acc::Clause::ACCC_create,
296 llvm::acc::Clause::ACCC_deviceptr,
297 llvm::acc::Clause::ACCC_device_type,
298 llvm::acc::Clause::ACCC_firstprivate,
299 llvm::acc::Clause::ACCC_no_create,
300 llvm::acc::Clause::ACCC_present,
301 llvm::acc::Clause::ACCC_private,
302 llvm::acc::Clause::ACCC_tile,
303 llvm::acc::Clause::ACCC_wait,
304 };
305
306 static AccClauseSet allowedOnceClauses_ACCD_parallel_loop {
307 llvm::acc::Clause::ACCC_async,
308 llvm::acc::Clause::ACCC_collapse,
309 llvm::acc::Clause::ACCC_default,
310 llvm::acc::Clause::ACCC_gang,
311 llvm::acc::Clause::ACCC_if,
312 llvm::acc::Clause::ACCC_num_gangs,
313 llvm::acc::Clause::ACCC_num_workers,
314 llvm::acc::Clause::ACCC_reduction,
315 llvm::acc::Clause::ACCC_self,
316 llvm::acc::Clause::ACCC_vector,
317 llvm::acc::Clause::ACCC_vector_length,
318 llvm::acc::Clause::ACCC_worker,
319 };
320
321 static AccClauseSet allowedExclusiveClauses_ACCD_parallel_loop {
322 llvm::acc::Clause::ACCC_auto,
323 llvm::acc::Clause::ACCC_independent,
324 llvm::acc::Clause::ACCC_seq,
325 };
326
327 static AccClauseSet requiredClauses_ACCD_parallel_loop {
328 };
329
330 // Sets for routine
331
332 static AccClauseSet allowedClauses_ACCD_routine {
333 };
334
335 static AccClauseSet allowedOnceClauses_ACCD_routine {
336 llvm::acc::Clause::ACCC_bind,
337 llvm::acc::Clause::ACCC_device_type,
338 llvm::acc::Clause::ACCC_nohost,
339 };
340
341 static AccClauseSet allowedExclusiveClauses_ACCD_routine {
342 };
343
344 static AccClauseSet requiredClauses_ACCD_routine {
345 llvm::acc::Clause::ACCC_gang,
346 llvm::acc::Clause::ACCC_seq,
347 llvm::acc::Clause::ACCC_vector,
348 llvm::acc::Clause::ACCC_worker,
349 };
350
351 // Sets for serial
352
353 static AccClauseSet allowedClauses_ACCD_serial {
354 llvm::acc::Clause::ACCC_attach,
355 llvm::acc::Clause::ACCC_copy,
356 llvm::acc::Clause::ACCC_copyin,
357 llvm::acc::Clause::ACCC_copyout,
358 llvm::acc::Clause::ACCC_create,
359 llvm::acc::Clause::ACCC_deviceptr,
360 llvm::acc::Clause::ACCC_device_type,
361 llvm::acc::Clause::ACCC_no_create,
362 llvm::acc::Clause::ACCC_present,
363 llvm::acc::Clause::ACCC_private,
364 llvm::acc::Clause::ACCC_firstprivate,
365 llvm::acc::Clause::ACCC_wait,
366 };
367
368 static AccClauseSet allowedOnceClauses_ACCD_serial {
369 llvm::acc::Clause::ACCC_async,
370 llvm::acc::Clause::ACCC_default,
371 llvm::acc::Clause::ACCC_if,
372 llvm::acc::Clause::ACCC_reduction,
373 llvm::acc::Clause::ACCC_self,
374 };
375
376 static AccClauseSet allowedExclusiveClauses_ACCD_serial {
377 };
378
379 static AccClauseSet requiredClauses_ACCD_serial {
380 };
381
382 // Sets for serial loop
383
384 static AccClauseSet allowedClauses_ACCD_serial_loop {
385 llvm::acc::Clause::ACCC_attach,
386 llvm::acc::Clause::ACCC_copy,
387 llvm::acc::Clause::ACCC_copyin,
388 llvm::acc::Clause::ACCC_copyout,
389 llvm::acc::Clause::ACCC_create,
390 llvm::acc::Clause::ACCC_deviceptr,
391 llvm::acc::Clause::ACCC_device_type,
392 llvm::acc::Clause::ACCC_firstprivate,
393 llvm::acc::Clause::ACCC_no_create,
394 llvm::acc::Clause::ACCC_present,
395 llvm::acc::Clause::ACCC_private,
396 llvm::acc::Clause::ACCC_wait,
397 };
398
399 static AccClauseSet allowedOnceClauses_ACCD_serial_loop {
400 llvm::acc::Clause::ACCC_async,
401 llvm::acc::Clause::ACCC_collapse,
402 llvm::acc::Clause::ACCC_default,
403 llvm::acc::Clause::ACCC_gang,
404 llvm::acc::Clause::ACCC_if,
405 llvm::acc::Clause::ACCC_reduction,
406 llvm::acc::Clause::ACCC_self,
407 llvm::acc::Clause::ACCC_tile,
408 llvm::acc::Clause::ACCC_vector,
409 llvm::acc::Clause::ACCC_worker,
410 };
411
412 static AccClauseSet allowedExclusiveClauses_ACCD_serial_loop {
413 llvm::acc::Clause::ACCC_auto,
414 llvm::acc::Clause::ACCC_independent,
415 llvm::acc::Clause::ACCC_seq,
416 };
417
418 static AccClauseSet requiredClauses_ACCD_serial_loop {
419 };
420
421 // Sets for set
422
423 static AccClauseSet allowedClauses_ACCD_set {
424 };
425
426 static AccClauseSet allowedOnceClauses_ACCD_set {
427 llvm::acc::Clause::ACCC_default_async,
428 llvm::acc::Clause::ACCC_device_num,
429 llvm::acc::Clause::ACCC_device_type,
430 llvm::acc::Clause::ACCC_if,
431 };
432
433 static AccClauseSet allowedExclusiveClauses_ACCD_set {
434 };
435
436 static AccClauseSet requiredClauses_ACCD_set {
437 llvm::acc::Clause::ACCC_default_async,
438 llvm::acc::Clause::ACCC_device_num,
439 llvm::acc::Clause::ACCC_device_type,
440 };
441
442 // Sets for shutdown
443
444 static AccClauseSet allowedClauses_ACCD_shutdown {
445 };
446
447 static AccClauseSet allowedOnceClauses_ACCD_shutdown {
448 llvm::acc::Clause::ACCC_device_num,
449 llvm::acc::Clause::ACCC_device_type,
450 llvm::acc::Clause::ACCC_if,
451 };
452
453 static AccClauseSet allowedExclusiveClauses_ACCD_shutdown {
454 };
455
456 static AccClauseSet requiredClauses_ACCD_shutdown {
457 };
458
459 // Sets for unknown
460
461 static AccClauseSet allowedClauses_ACCD_unknown {
462 };
463
464 static AccClauseSet allowedOnceClauses_ACCD_unknown {
465 };
466
467 static AccClauseSet allowedExclusiveClauses_ACCD_unknown {
468 };
469
470 static AccClauseSet requiredClauses_ACCD_unknown {
471 };
472
473 // Sets for update
474
475 static AccClauseSet allowedClauses_ACCD_update {
476 llvm::acc::Clause::ACCC_device_type,
477 llvm::acc::Clause::ACCC_wait,
478 };
479
480 static AccClauseSet allowedOnceClauses_ACCD_update {
481 llvm::acc::Clause::ACCC_async,
482 llvm::acc::Clause::ACCC_if,
483 llvm::acc::Clause::ACCC_if_present,
484 };
485
486 static AccClauseSet allowedExclusiveClauses_ACCD_update {
487 };
488
489 static AccClauseSet requiredClauses_ACCD_update {
490 llvm::acc::Clause::ACCC_device,
491 llvm::acc::Clause::ACCC_host,
492 llvm::acc::Clause::ACCC_self,
493 };
494
495 // Sets for wait
496
497 static AccClauseSet allowedClauses_ACCD_wait {
498 };
499
500 static AccClauseSet allowedOnceClauses_ACCD_wait {
501 llvm::acc::Clause::ACCC_async,
502 llvm::acc::Clause::ACCC_if,
503 };
504
505 static AccClauseSet allowedExclusiveClauses_ACCD_wait {
506 };
507
508 static AccClauseSet requiredClauses_ACCD_wait {
509 };
510} // namespace acc
511} // namespace llvm
512
513#endif // GEN_FLANG_DIRECTIVE_CLAUSE_SETS
514
515#ifdef GEN_FLANG_DIRECTIVE_CLAUSE_MAP
516#undef GEN_FLANG_DIRECTIVE_CLAUSE_MAP
517
518{
519 {llvm::acc::Directive::ACCD_atomic,
520 {
521 llvm::acc::allowedClauses_ACCD_atomic,
522 llvm::acc::allowedOnceClauses_ACCD_atomic,
523 llvm::acc::allowedExclusiveClauses_ACCD_atomic,
524 llvm::acc::requiredClauses_ACCD_atomic,
525 }
526 },
527 {llvm::acc::Directive::ACCD_cache,
528 {
529 llvm::acc::allowedClauses_ACCD_cache,
530 llvm::acc::allowedOnceClauses_ACCD_cache,
531 llvm::acc::allowedExclusiveClauses_ACCD_cache,
532 llvm::acc::requiredClauses_ACCD_cache,
533 }
534 },
535 {llvm::acc::Directive::ACCD_data,
536 {
537 llvm::acc::allowedClauses_ACCD_data,
538 llvm::acc::allowedOnceClauses_ACCD_data,
539 llvm::acc::allowedExclusiveClauses_ACCD_data,
540 llvm::acc::requiredClauses_ACCD_data,
541 }
542 },
543 {llvm::acc::Directive::ACCD_declare,
544 {
545 llvm::acc::allowedClauses_ACCD_declare,
546 llvm::acc::allowedOnceClauses_ACCD_declare,
547 llvm::acc::allowedExclusiveClauses_ACCD_declare,
548 llvm::acc::requiredClauses_ACCD_declare,
549 }
550 },
551 {llvm::acc::Directive::ACCD_enter_data,
552 {
553 llvm::acc::allowedClauses_ACCD_enter_data,
554 llvm::acc::allowedOnceClauses_ACCD_enter_data,
555 llvm::acc::allowedExclusiveClauses_ACCD_enter_data,
556 llvm::acc::requiredClauses_ACCD_enter_data,
557 }
558 },
559 {llvm::acc::Directive::ACCD_exit_data,
560 {
561 llvm::acc::allowedClauses_ACCD_exit_data,
562 llvm::acc::allowedOnceClauses_ACCD_exit_data,
563 llvm::acc::allowedExclusiveClauses_ACCD_exit_data,
564 llvm::acc::requiredClauses_ACCD_exit_data,
565 }
566 },
567 {llvm::acc::Directive::ACCD_host_data,
568 {
569 llvm::acc::allowedClauses_ACCD_host_data,
570 llvm::acc::allowedOnceClauses_ACCD_host_data,
571 llvm::acc::allowedExclusiveClauses_ACCD_host_data,
572 llvm::acc::requiredClauses_ACCD_host_data,
573 }
574 },
575 {llvm::acc::Directive::ACCD_init,
576 {
577 llvm::acc::allowedClauses_ACCD_init,
578 llvm::acc::allowedOnceClauses_ACCD_init,
579 llvm::acc::allowedExclusiveClauses_ACCD_init,
580 llvm::acc::requiredClauses_ACCD_init,
581 }
582 },
583 {llvm::acc::Directive::ACCD_kernels,
584 {
585 llvm::acc::allowedClauses_ACCD_kernels,
586 llvm::acc::allowedOnceClauses_ACCD_kernels,
587 llvm::acc::allowedExclusiveClauses_ACCD_kernels,
588 llvm::acc::requiredClauses_ACCD_kernels,
589 }
590 },
591 {llvm::acc::Directive::ACCD_kernels_loop,
592 {
593 llvm::acc::allowedClauses_ACCD_kernels_loop,
594 llvm::acc::allowedOnceClauses_ACCD_kernels_loop,
595 llvm::acc::allowedExclusiveClauses_ACCD_kernels_loop,
596 llvm::acc::requiredClauses_ACCD_kernels_loop,
597 }
598 },
599 {llvm::acc::Directive::ACCD_loop,
600 {
601 llvm::acc::allowedClauses_ACCD_loop,
602 llvm::acc::allowedOnceClauses_ACCD_loop,
603 llvm::acc::allowedExclusiveClauses_ACCD_loop,
604 llvm::acc::requiredClauses_ACCD_loop,
605 }
606 },
607 {llvm::acc::Directive::ACCD_parallel,
608 {
609 llvm::acc::allowedClauses_ACCD_parallel,
610 llvm::acc::allowedOnceClauses_ACCD_parallel,
611 llvm::acc::allowedExclusiveClauses_ACCD_parallel,
612 llvm::acc::requiredClauses_ACCD_parallel,
613 }
614 },
615 {llvm::acc::Directive::ACCD_parallel_loop,
616 {
617 llvm::acc::allowedClauses_ACCD_parallel_loop,
618 llvm::acc::allowedOnceClauses_ACCD_parallel_loop,
619 llvm::acc::allowedExclusiveClauses_ACCD_parallel_loop,
620 llvm::acc::requiredClauses_ACCD_parallel_loop,
621 }
622 },
623 {llvm::acc::Directive::ACCD_routine,
624 {
625 llvm::acc::allowedClauses_ACCD_routine,
626 llvm::acc::allowedOnceClauses_ACCD_routine,
627 llvm::acc::allowedExclusiveClauses_ACCD_routine,
628 llvm::acc::requiredClauses_ACCD_routine,
629 }
630 },
631 {llvm::acc::Directive::ACCD_serial,
632 {
633 llvm::acc::allowedClauses_ACCD_serial,
634 llvm::acc::allowedOnceClauses_ACCD_serial,
635 llvm::acc::allowedExclusiveClauses_ACCD_serial,
636 llvm::acc::requiredClauses_ACCD_serial,
637 }
638 },
639 {llvm::acc::Directive::ACCD_serial_loop,
640 {
641 llvm::acc::allowedClauses_ACCD_serial_loop,
642 llvm::acc::allowedOnceClauses_ACCD_serial_loop,
643 llvm::acc::allowedExclusiveClauses_ACCD_serial_loop,
644 llvm::acc::requiredClauses_ACCD_serial_loop,
645 }
646 },
647 {llvm::acc::Directive::ACCD_set,
648 {
649 llvm::acc::allowedClauses_ACCD_set,
650 llvm::acc::allowedOnceClauses_ACCD_set,
651 llvm::acc::allowedExclusiveClauses_ACCD_set,
652 llvm::acc::requiredClauses_ACCD_set,
653 }
654 },
655 {llvm::acc::Directive::ACCD_shutdown,
656 {
657 llvm::acc::allowedClauses_ACCD_shutdown,
658 llvm::acc::allowedOnceClauses_ACCD_shutdown,
659 llvm::acc::allowedExclusiveClauses_ACCD_shutdown,
660 llvm::acc::requiredClauses_ACCD_shutdown,
661 }
662 },
663 {llvm::acc::Directive::ACCD_unknown,
664 {
665 llvm::acc::allowedClauses_ACCD_unknown,
666 llvm::acc::allowedOnceClauses_ACCD_unknown,
667 llvm::acc::allowedExclusiveClauses_ACCD_unknown,
668 llvm::acc::requiredClauses_ACCD_unknown,
669 }
670 },
671 {llvm::acc::Directive::ACCD_update,
672 {
673 llvm::acc::allowedClauses_ACCD_update,
674 llvm::acc::allowedOnceClauses_ACCD_update,
675 llvm::acc::allowedExclusiveClauses_ACCD_update,
676 llvm::acc::requiredClauses_ACCD_update,
677 }
678 },
679 {llvm::acc::Directive::ACCD_wait,
680 {
681 llvm::acc::allowedClauses_ACCD_wait,
682 llvm::acc::allowedOnceClauses_ACCD_wait,
683 llvm::acc::allowedExclusiveClauses_ACCD_wait,
684 llvm::acc::requiredClauses_ACCD_wait,
685 }
686 },
687}
688
689#endif // GEN_FLANG_DIRECTIVE_CLAUSE_MAP
690
691#ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES
692#undef GEN_FLANG_CLAUSE_PARSER_CLASSES
693
694WRAPPER_CLASS(Async, std::optional<ScalarIntExpr>);
695WRAPPER_CLASS(Attach, AccObjectList);
696EMPTY_CLASS(Auto);
697WRAPPER_CLASS(Bind, AccBindClause);
698EMPTY_CLASS(Capture);
699WRAPPER_CLASS(Collapse, ScalarIntConstantExpr);
700WRAPPER_CLASS(Copy, AccObjectList);
701WRAPPER_CLASS(Copyin, AccObjectListWithModifier);
702WRAPPER_CLASS(Copyout, AccObjectListWithModifier);
703WRAPPER_CLASS(Create, AccObjectListWithModifier);
704WRAPPER_CLASS(Default, AccDefaultClause);
705WRAPPER_CLASS(DefaultAsync, ScalarIntExpr);
706WRAPPER_CLASS(Delete, AccObjectList);
707WRAPPER_CLASS(Detach, AccObjectList);
708WRAPPER_CLASS(Device, AccObjectList);
709WRAPPER_CLASS(DeviceNum, ScalarIntExpr);
710WRAPPER_CLASS(Deviceptr, AccObjectList);
711WRAPPER_CLASS(DeviceResident, AccObjectList);
712WRAPPER_CLASS(DeviceType, std::optional<std::list<ScalarIntExpr>>);
713EMPTY_CLASS(Finalize);
714WRAPPER_CLASS(Firstprivate, AccObjectList);
715WRAPPER_CLASS(Gang, std::optional<AccGangArgument>);
716WRAPPER_CLASS(Host, AccObjectList);
717WRAPPER_CLASS(If, ScalarLogicalExpr);
718EMPTY_CLASS(IfPresent);
719EMPTY_CLASS(Independent);
720WRAPPER_CLASS(Link, AccObjectList);
721WRAPPER_CLASS(NoCreate, AccObjectList);
722EMPTY_CLASS(Nohost);
723WRAPPER_CLASS(NumGangs, ScalarIntExpr);
724WRAPPER_CLASS(NumWorkers, ScalarIntExpr);
725WRAPPER_CLASS(Present, AccObjectList);
726WRAPPER_CLASS(Private, AccObjectList);
727EMPTY_CLASS(Read);
728WRAPPER_CLASS(Reduction, AccObjectListWithReduction);
729WRAPPER_CLASS(Self, AccSelfClause);
730EMPTY_CLASS(Seq);
731WRAPPER_CLASS(Tile, AccTileExprList);
732EMPTY_CLASS(Unknown);
733WRAPPER_CLASS(UseDevice, AccObjectList);
734WRAPPER_CLASS(Vector, std::optional<ScalarIntExpr>);
735WRAPPER_CLASS(VectorLength, ScalarIntExpr);
736WRAPPER_CLASS(Wait, std::optional<AccWaitArgument>);
737WRAPPER_CLASS(Worker, std::optional<ScalarIntExpr>);
738EMPTY_CLASS(Write);
739
740#endif // GEN_FLANG_CLAUSE_PARSER_CLASSES
741
742#ifdef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
743#undef GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
744
745Async
746, Attach
747, Auto
748, Bind
749, Capture
750, Collapse
751, Copy
752, Copyin
753, Copyout
754, Create
755, Default
756, DefaultAsync
757, Delete
758, Detach
759, Device
760, DeviceNum
761, Deviceptr
762, DeviceResident
763, DeviceType
764, Finalize
765, Firstprivate
766, Gang
767, Host
768, If
769, IfPresent
770, Independent
771, Link
772, NoCreate
773, Nohost
774, NumGangs
775, NumWorkers
776, Present
777, Private
778, Read
779, Reduction
780, Self
781, Seq
782, Tile
783, Unknown
784, UseDevice
785, Vector
786, VectorLength
787, Wait
788, Worker
789, Write
790
791#endif // GEN_FLANG_CLAUSE_PARSER_CLASSES_LIST
792
793#ifdef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
794#undef GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
795
796NODE(AccClause, Async)
797NODE(AccClause, Attach)
798NODE(AccClause, Auto)
799NODE(AccClause, Bind)
800NODE(AccClause, Capture)
801NODE(AccClause, Collapse)
802NODE(AccClause, Copy)
803NODE(AccClause, Copyin)
804NODE(AccClause, Copyout)
805NODE(AccClause, Create)
806NODE(AccClause, Default)
807NODE(AccClause, DefaultAsync)
808NODE(AccClause, Delete)
809NODE(AccClause, Detach)
810NODE(AccClause, Device)
811NODE(AccClause, DeviceNum)
812NODE(AccClause, Deviceptr)
813NODE(AccClause, DeviceResident)
814NODE(AccClause, DeviceType)
815NODE(AccClause, Finalize)
816NODE(AccClause, Firstprivate)
817NODE(AccClause, Gang)
818NODE(AccClause, Host)
819NODE(AccClause, If)
820NODE(AccClause, IfPresent)
821NODE(AccClause, Independent)
822NODE(AccClause, Link)
823NODE(AccClause, NoCreate)
824NODE(AccClause, Nohost)
825NODE(AccClause, NumGangs)
826NODE(AccClause, NumWorkers)
827NODE(AccClause, Present)
828NODE(AccClause, Private)
829NODE(AccClause, Read)
830NODE(AccClause, Reduction)
831NODE(AccClause, Self)
832NODE(AccClause, Seq)
833NODE(AccClause, Tile)
834NODE(AccClause, Unknown)
835NODE(AccClause, UseDevice)
836NODE(AccClause, Vector)
837NODE(AccClause, VectorLength)
838NODE(AccClause, Wait)
839NODE(AccClause, Worker)
840NODE(AccClause, Write)
841
842#endif // GEN_FLANG_DUMP_PARSE_TREE_CLAUSES
843
844#ifdef GEN_FLANG_CLAUSE_UNPARSE
845#undef GEN_FLANG_CLAUSE_UNPARSE
846
847void Unparse(const AccClause::Async &x) {
848 Word("ASYNC");
849 Walk("(", x.v, ")");
850}
851void Unparse(const AccClause::Attach &x) {
852 Word("ATTACH");
853 Put("(");
854 Walk(x.v);
855 Put(")");
856}
857void Before(const AccClause::Auto &) { Word("AUTO"); }
858void Unparse(const AccClause::Bind &x) {
859 Word("BIND");
860 Put("(");
861 Walk(x.v);
862 Put(")");
863}
864void Before(const AccClause::Capture &) { Word("CAPTURE"); }
865void Unparse(const AccClause::Collapse &x) {
866 Word("COLLAPSE");
867 Put("(");
868 Walk(x.v);
869 Put(")");
870}
871void Unparse(const AccClause::Copy &x) {
872 Word("COPY");
873 Put("(");
874 Walk(x.v);
875 Put(")");
876}
877void Unparse(const AccClause::Copyin &x) {
878 Word("COPYIN");
879 Put("(");
880 Walk(x.v);
881 Put(")");
882}
883void Unparse(const AccClause::Copyout &x) {
884 Word("COPYOUT");
885 Put("(");
886 Walk(x.v);
887 Put(")");
888}
889void Unparse(const AccClause::Create &x) {
890 Word("CREATE");
891 Put("(");
892 Walk(x.v);
893 Put(")");
894}
895void Unparse(const AccClause::Default &x) {
896 Word("DEFAULT");
897 Put("(");
898 Walk(x.v);
899 Put(")");
900}
901void Unparse(const AccClause::DefaultAsync &x) {
902 Word("DEFAULT_ASYNC");
903 Put("(");
904 Walk(x.v);
905 Put(")");
906}
907void Unparse(const AccClause::Delete &x) {
908 Word("DELETE");
909 Put("(");
910 Walk(x.v);
911 Put(")");
912}
913void Unparse(const AccClause::Detach &x) {
914 Word("DETACH");
915 Put("(");
916 Walk(x.v);
917 Put(")");
918}
919void Unparse(const AccClause::Device &x) {
920 Word("DEVICE");
921 Put("(");
922 Walk(x.v);
923 Put(")");
924}
925void Unparse(const AccClause::DeviceNum &x) {
926 Word("DEVICE_NUM");
927 Put("(");
928 Walk(x.v);
929 Put(")");
930}
931void Unparse(const AccClause::Deviceptr &x) {
932 Word("DEVICEPTR");
933 Put("(");
934 Walk(x.v);
935 Put(")");
936}
937void Unparse(const AccClause::DeviceResident &x) {
938 Word("DEVICE_RESIDENT");
939 Put("(");
940 Walk(x.v);
941 Put(")");
942}
943void Unparse(const AccClause::DeviceType &x) {
944 Word("DEVICE_TYPE");
945 Put("(");
946 if (x.v.has_value())
947 Walk(x.v, ",");
948 else
949 Put("*");
950 Put(")");
951}
952void Before(const AccClause::Finalize &) { Word("FINALIZE"); }
953void Unparse(const AccClause::Firstprivate &x) {
954 Word("FIRSTPRIVATE");
955 Put("(");
956 Walk(x.v);
957 Put(")");
958}
959void Unparse(const AccClause::Gang &x) {
960 Word("GANG");
961 Walk("(", x.v, ")");
962}
963void Unparse(const AccClause::Host &x) {
964 Word("HOST");
965 Put("(");
966 Walk(x.v);
967 Put(")");
968}
969void Unparse(const AccClause::If &x) {
970 Word("IF");
971 Put("(");
972 Walk(x.v);
973 Put(")");
974}
975void Before(const AccClause::IfPresent &) { Word("IF_PRESENT"); }
976void Before(const AccClause::Independent &) { Word("INDEPENDENT"); }
977void Unparse(const AccClause::Link &x) {
978 Word("LINK");
979 Put("(");
980 Walk(x.v);
981 Put(")");
982}
983void Unparse(const AccClause::NoCreate &x) {
984 Word("NO_CREATE");
985 Put("(");
986 Walk(x.v);
987 Put(")");
988}
989void Before(const AccClause::Nohost &) { Word("NOHOST"); }
990void Unparse(const AccClause::NumGangs &x) {
991 Word("NUM_GANGS");
992 Put("(");
993 Walk(x.v);
994 Put(")");
995}
996void Unparse(const AccClause::NumWorkers &x) {
997 Word("NUM_WORKERS");
998 Put("(");
999 Walk(x.v);
1000 Put(")");
1001}
1002void Unparse(const AccClause::Present &x) {
1003 Word("PRESENT");
1004 Put("(");
1005 Walk(x.v);
1006 Put(")");
1007}
1008void Unparse(const AccClause::Private &x) {
1009 Word("PRIVATE");
1010 Put("(");
1011 Walk(x.v);
1012 Put(")");
1013}
1014void Before(const AccClause::Read &) { Word("READ"); }
1015void Unparse(const AccClause::Reduction &x) {
1016 Word("REDUCTION");
1017 Put("(");
1018 Walk(x.v);
1019 Put(")");
1020}
1021void Unparse(const AccClause::Self &x) {
1022 Word("SELF");
1023 Put("(");
1024 Walk(x.v);
1025 Put(")");
1026}
1027void Before(const AccClause::Seq &) { Word("SEQ"); }
1028void Unparse(const AccClause::Tile &x) {
1029 Word("TILE");
1030 Put("(");
1031 Walk(x.v);
1032 Put(")");
1033}
1034void Before(const AccClause::Unknown &) { Word("UNKNOWN"); }
1035void Unparse(const AccClause::UseDevice &x) {
1036 Word("USE_DEVICE");
1037 Put("(");
1038 Walk(x.v);
1039 Put(")");
1040}
1041void Unparse(const AccClause::Vector &x) {
1042 Word("VECTOR");
1043 Walk("(", x.v, ")");
1044}
1045void Unparse(const AccClause::VectorLength &x) {
1046 Word("VECTOR_LENGTH");
1047 Put("(");
1048 Walk(x.v);
1049 Put(")");
1050}
1051void Unparse(const AccClause::Wait &x) {
1052 Word("WAIT");
1053 Walk("(", x.v, ")");
1054}
1055void Unparse(const AccClause::Worker &x) {
1056 Word("WORKER");
1057 Walk("(", x.v, ")");
1058}
1059void Before(const AccClause::Write &) { Word("WRITE"); }
1060
1061#endif // GEN_FLANG_CLAUSE_UNPARSE
1062
1063#ifdef GEN_CLANG_CLAUSE_CLASS
1064#undef GEN_CLANG_CLAUSE_CLASS
1065
1066#ifndef CLAUSE
1067#define CLAUSE(Enum, Str, Implicit)
1068#endif
1069#ifndef CLAUSE_CLASS
1070#define CLAUSE_CLASS(Enum, Str, Class)
1071#endif
1072#ifndef CLAUSE_NO_CLASS
1073#define CLAUSE_NO_CLASS(Enum, Str)
1074#endif
1075
1076#define __CLAUSE(Name, Class) \
1077 CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \
1078 CLAUSE_CLASS(ACCC_##Name, #Name, Class)
1079#define __CLAUSE_NO_CLASS(Name) \
1080 CLAUSE(ACCC_##Name, #Name, /* Implicit */ false) \
1081 CLAUSE_NO_CLASS(ACCC_##Name, #Name)
1082#define __IMPLICIT_CLAUSE_CLASS(Name, Str, Class) \
1083 CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \
1084 CLAUSE_CLASS(ACCC_##Name, Str, Class)
1085#define __IMPLICIT_CLAUSE_NO_CLASS(Name, Str) \
1086 CLAUSE(ACCC_##Name, Str, /* Implicit */ true) \
1087 CLAUSE_NO_CLASS(ACCC_##Name, Str)
1088
1089__CLAUSE_NO_CLASS(async)
1090__CLAUSE_NO_CLASS(attach)
1091__CLAUSE_NO_CLASS(auto)
1092__CLAUSE_NO_CLASS(bind)
1093__CLAUSE_NO_CLASS(capture)
1094__CLAUSE_NO_CLASS(collapse)
1095__CLAUSE_NO_CLASS(copy)
1096__CLAUSE_NO_CLASS(copyin)
1097__CLAUSE_NO_CLASS(copyout)
1098__CLAUSE_NO_CLASS(create)
1099__CLAUSE_NO_CLASS(default)
1100__CLAUSE_NO_CLASS(default_async)
1101__CLAUSE_NO_CLASS(delete)
1102__CLAUSE_NO_CLASS(detach)
1103__CLAUSE_NO_CLASS(device)
1104__CLAUSE_NO_CLASS(device_num)
1105__CLAUSE_NO_CLASS(deviceptr)
1106__CLAUSE_NO_CLASS(device_resident)
1107__CLAUSE_NO_CLASS(device_type)
1108__CLAUSE_NO_CLASS(finalize)
1109__CLAUSE_NO_CLASS(firstprivate)
1110__CLAUSE_NO_CLASS(gang)
1111__CLAUSE_NO_CLASS(host)
1112__CLAUSE_NO_CLASS(if)
1113__CLAUSE_NO_CLASS(if_present)
1114__CLAUSE_NO_CLASS(independent)
1115__CLAUSE_NO_CLASS(link)
1116__CLAUSE_NO_CLASS(no_create)
1117__CLAUSE_NO_CLASS(nohost)
1118__CLAUSE_NO_CLASS(num_gangs)
1119__CLAUSE_NO_CLASS(num_workers)
1120__CLAUSE_NO_CLASS(present)
1121__CLAUSE_NO_CLASS(private)
1122__CLAUSE_NO_CLASS(read)
1123__CLAUSE_NO_CLASS(reduction)
1124__CLAUSE_NO_CLASS(self)
1125__CLAUSE_NO_CLASS(seq)
1126__CLAUSE_NO_CLASS(tile)
1127__CLAUSE_NO_CLASS(unknown)
1128__CLAUSE_NO_CLASS(use_device)
1129__CLAUSE_NO_CLASS(vector)
1130__CLAUSE_NO_CLASS(vector_length)
1131__CLAUSE_NO_CLASS(wait)
1132__CLAUSE_NO_CLASS(worker)
1133__CLAUSE_NO_CLASS(write)
1134
1135#undef __IMPLICIT_CLAUSE_NO_CLASS
1136#undef __IMPLICIT_CLAUSE_CLASS
1137#undef __CLAUSE
1138#undef CLAUSE_NO_CLASS
1139#undef CLAUSE_CLASS
1140#undef CLAUSE
1141
1142#endif // GEN_CLANG_CLAUSE_CLASS
1143