1 //===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 /// \brief This file defines the list of supported OpenMP directives and
13 //===----------------------------------------------------------------------===//
15 #ifndef OPENMP_DIRECTIVE
16 # define OPENMP_DIRECTIVE(Name)
18 #ifndef OPENMP_DIRECTIVE_EXT
19 #define OPENMP_DIRECTIVE_EXT(Name, Str)
22 # define OPENMP_CLAUSE(Name, Class)
24 #ifndef OPENMP_PARALLEL_CLAUSE
25 # define OPENMP_PARALLEL_CLAUSE(Name)
27 #ifndef OPENMP_SIMD_CLAUSE
28 # define OPENMP_SIMD_CLAUSE(Name)
30 #ifndef OPENMP_FOR_CLAUSE
31 # define OPENMP_FOR_CLAUSE(Name)
33 #ifndef OPENMP_FOR_SIMD_CLAUSE
34 # define OPENMP_FOR_SIMD_CLAUSE(Name)
36 #ifndef OPENMP_SECTIONS_CLAUSE
37 # define OPENMP_SECTIONS_CLAUSE(Name)
39 #ifndef OPENMP_SINGLE_CLAUSE
40 # define OPENMP_SINGLE_CLAUSE(Name)
42 #ifndef OPENMP_PARALLEL_FOR_CLAUSE
43 # define OPENMP_PARALLEL_FOR_CLAUSE(Name)
45 #ifndef OPENMP_PARALLEL_FOR_SIMD_CLAUSE
46 # define OPENMP_PARALLEL_FOR_SIMD_CLAUSE(Name)
48 #ifndef OPENMP_PARALLEL_SECTIONS_CLAUSE
49 # define OPENMP_PARALLEL_SECTIONS_CLAUSE(Name)
51 #ifndef OPENMP_TASK_CLAUSE
52 # define OPENMP_TASK_CLAUSE(Name)
54 #ifndef OPENMP_ATOMIC_CLAUSE
55 # define OPENMP_ATOMIC_CLAUSE(Name)
57 #ifndef OPENMP_TARGET_CLAUSE
58 # define OPENMP_TARGET_CLAUSE(Name)
60 #ifndef OPENMP_TARGET_DATA_CLAUSE
61 # define OPENMP_TARGET_DATA_CLAUSE(Name)
63 #ifndef OPENMP_TARGET_ENTER_DATA_CLAUSE
64 #define OPENMP_TARGET_ENTER_DATA_CLAUSE(Name)
66 #ifndef OPENMP_TARGET_EXIT_DATA_CLAUSE
67 #define OPENMP_TARGET_EXIT_DATA_CLAUSE(Name)
69 #ifndef OPENMP_TARGET_PARALLEL_CLAUSE
70 # define OPENMP_TARGET_PARALLEL_CLAUSE(Name)
72 #ifndef OPENMP_TARGET_PARALLEL_FOR_CLAUSE
73 # define OPENMP_TARGET_PARALLEL_FOR_CLAUSE(Name)
75 #ifndef OPENMP_TARGET_UPDATE_CLAUSE
76 # define OPENMP_TARGET_UPDATE_CLAUSE(Name)
78 #ifndef OPENMP_TEAMS_CLAUSE
79 # define OPENMP_TEAMS_CLAUSE(Name)
81 #ifndef OPENMP_CANCEL_CLAUSE
82 # define OPENMP_CANCEL_CLAUSE(Name)
84 #ifndef OPENMP_ORDERED_CLAUSE
85 # define OPENMP_ORDERED_CLAUSE(Name)
87 #ifndef OPENMP_TASKLOOP_CLAUSE
88 # define OPENMP_TASKLOOP_CLAUSE(Name)
90 #ifndef OPENMP_TASKLOOP_SIMD_CLAUSE
91 # define OPENMP_TASKLOOP_SIMD_CLAUSE(Name)
93 #ifndef OPENMP_CRITICAL_CLAUSE
94 # define OPENMP_CRITICAL_CLAUSE(Name)
96 #ifndef OPENMP_DISTRIBUTE_CLAUSE
97 #define OPENMP_DISTRIBUTE_CLAUSE(Name)
99 #ifndef OPENMP_DEFAULT_KIND
100 # define OPENMP_DEFAULT_KIND(Name)
102 #ifndef OPENMP_PROC_BIND_KIND
103 # define OPENMP_PROC_BIND_KIND(Name)
105 #ifndef OPENMP_SCHEDULE_KIND
106 #define OPENMP_SCHEDULE_KIND(Name)
108 #ifndef OPENMP_SCHEDULE_MODIFIER
109 #define OPENMP_SCHEDULE_MODIFIER(Name)
111 #ifndef OPENMP_DEPEND_KIND
112 #define OPENMP_DEPEND_KIND(Name)
114 #ifndef OPENMP_LINEAR_KIND
115 #define OPENMP_LINEAR_KIND(Name)
117 #ifndef OPENMP_MAP_KIND
118 #define OPENMP_MAP_KIND(Name)
120 #ifndef OPENMP_DIST_SCHEDULE_KIND
121 #define OPENMP_DIST_SCHEDULE_KIND(Name)
123 #ifndef OPENMP_DEFAULTMAP_KIND
124 #define OPENMP_DEFAULTMAP_KIND(Name)
126 #ifndef OPENMP_DEFAULTMAP_MODIFIER
127 #define OPENMP_DEFAULTMAP_MODIFIER(Name)
129 #ifndef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE
130 #define OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(Name)
132 #ifndef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
133 #define OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(Name)
135 #ifndef OPENMP_DISTRIBUTE_SIMD_CLAUSE
136 #define OPENMP_DISTRIBUTE_SIMD_CLAUSE(Name)
138 #ifndef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE
139 #define OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(Name)
142 // OpenMP directives.
143 OPENMP_DIRECTIVE(threadprivate)
144 OPENMP_DIRECTIVE(parallel)
145 OPENMP_DIRECTIVE(task)
146 OPENMP_DIRECTIVE(simd)
147 OPENMP_DIRECTIVE(for)
148 OPENMP_DIRECTIVE(sections)
149 OPENMP_DIRECTIVE(section)
150 OPENMP_DIRECTIVE(single)
151 OPENMP_DIRECTIVE(master)
152 OPENMP_DIRECTIVE(critical)
153 OPENMP_DIRECTIVE(taskyield)
154 OPENMP_DIRECTIVE(barrier)
155 OPENMP_DIRECTIVE(taskwait)
156 OPENMP_DIRECTIVE(taskgroup)
157 OPENMP_DIRECTIVE(flush)
158 OPENMP_DIRECTIVE(ordered)
159 OPENMP_DIRECTIVE(atomic)
160 OPENMP_DIRECTIVE(target)
161 OPENMP_DIRECTIVE(teams)
162 OPENMP_DIRECTIVE(cancel)
163 OPENMP_DIRECTIVE_EXT(target_data, "target data")
164 OPENMP_DIRECTIVE_EXT(target_enter_data, "target enter data")
165 OPENMP_DIRECTIVE_EXT(target_exit_data, "target exit data")
166 OPENMP_DIRECTIVE_EXT(target_parallel, "target parallel")
167 OPENMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for")
168 OPENMP_DIRECTIVE_EXT(target_update, "target update")
169 OPENMP_DIRECTIVE_EXT(parallel_for, "parallel for")
170 OPENMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd")
171 OPENMP_DIRECTIVE_EXT(parallel_sections, "parallel sections")
172 OPENMP_DIRECTIVE_EXT(for_simd, "for simd")
173 OPENMP_DIRECTIVE_EXT(cancellation_point, "cancellation point")
174 OPENMP_DIRECTIVE_EXT(declare_reduction, "declare reduction")
175 OPENMP_DIRECTIVE_EXT(declare_simd, "declare simd")
176 OPENMP_DIRECTIVE(taskloop)
177 OPENMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd")
178 OPENMP_DIRECTIVE(distribute)
179 OPENMP_DIRECTIVE_EXT(declare_target, "declare target")
180 OPENMP_DIRECTIVE_EXT(end_declare_target, "end declare target")
181 OPENMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for")
182 OPENMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd")
183 OPENMP_DIRECTIVE_EXT(distribute_simd, "distribute simd")
184 OPENMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd")
187 OPENMP_CLAUSE(if, OMPIfClause)
188 OPENMP_CLAUSE(final, OMPFinalClause)
189 OPENMP_CLAUSE(num_threads, OMPNumThreadsClause)
190 OPENMP_CLAUSE(safelen, OMPSafelenClause)
191 OPENMP_CLAUSE(simdlen, OMPSimdlenClause)
192 OPENMP_CLAUSE(collapse, OMPCollapseClause)
193 OPENMP_CLAUSE(default, OMPDefaultClause)
194 OPENMP_CLAUSE(private, OMPPrivateClause)
195 OPENMP_CLAUSE(firstprivate, OMPFirstprivateClause)
196 OPENMP_CLAUSE(lastprivate, OMPLastprivateClause)
197 OPENMP_CLAUSE(shared, OMPSharedClause)
198 OPENMP_CLAUSE(reduction, OMPReductionClause)
199 OPENMP_CLAUSE(linear, OMPLinearClause)
200 OPENMP_CLAUSE(aligned, OMPAlignedClause)
201 OPENMP_CLAUSE(copyin, OMPCopyinClause)
202 OPENMP_CLAUSE(copyprivate, OMPCopyprivateClause)
203 OPENMP_CLAUSE(proc_bind, OMPProcBindClause)
204 OPENMP_CLAUSE(schedule, OMPScheduleClause)
205 OPENMP_CLAUSE(ordered, OMPOrderedClause)
206 OPENMP_CLAUSE(nowait, OMPNowaitClause)
207 OPENMP_CLAUSE(untied, OMPUntiedClause)
208 OPENMP_CLAUSE(mergeable, OMPMergeableClause)
209 OPENMP_CLAUSE(flush, OMPFlushClause)
210 OPENMP_CLAUSE(read, OMPReadClause)
211 OPENMP_CLAUSE(write, OMPWriteClause)
212 OPENMP_CLAUSE(update, OMPUpdateClause)
213 OPENMP_CLAUSE(capture, OMPCaptureClause)
214 OPENMP_CLAUSE(seq_cst, OMPSeqCstClause)
215 OPENMP_CLAUSE(depend, OMPDependClause)
216 OPENMP_CLAUSE(device, OMPDeviceClause)
217 OPENMP_CLAUSE(threads, OMPThreadsClause)
218 OPENMP_CLAUSE(simd, OMPSIMDClause)
219 OPENMP_CLAUSE(map, OMPMapClause)
220 OPENMP_CLAUSE(num_teams, OMPNumTeamsClause)
221 OPENMP_CLAUSE(thread_limit, OMPThreadLimitClause)
222 OPENMP_CLAUSE(priority, OMPPriorityClause)
223 OPENMP_CLAUSE(grainsize, OMPGrainsizeClause)
224 OPENMP_CLAUSE(nogroup, OMPNogroupClause)
225 OPENMP_CLAUSE(num_tasks, OMPNumTasksClause)
226 OPENMP_CLAUSE(hint, OMPHintClause)
227 OPENMP_CLAUSE(dist_schedule, OMPDistScheduleClause)
228 OPENMP_CLAUSE(defaultmap, OMPDefaultmapClause)
229 OPENMP_CLAUSE(to, OMPToClause)
230 OPENMP_CLAUSE(from, OMPFromClause)
231 OPENMP_CLAUSE(use_device_ptr, OMPUseDevicePtrClause)
232 OPENMP_CLAUSE(is_device_ptr, OMPIsDevicePtrClause)
234 // Clauses allowed for OpenMP directive 'parallel'.
235 OPENMP_PARALLEL_CLAUSE(if)
236 OPENMP_PARALLEL_CLAUSE(num_threads)
237 OPENMP_PARALLEL_CLAUSE(default)
238 OPENMP_PARALLEL_CLAUSE(proc_bind)
239 OPENMP_PARALLEL_CLAUSE(private)
240 OPENMP_PARALLEL_CLAUSE(firstprivate)
241 OPENMP_PARALLEL_CLAUSE(shared)
242 OPENMP_PARALLEL_CLAUSE(reduction)
243 OPENMP_PARALLEL_CLAUSE(copyin)
245 // Clauses allowed for directive 'omp simd'.
246 OPENMP_SIMD_CLAUSE(private)
247 OPENMP_SIMD_CLAUSE(lastprivate)
248 OPENMP_SIMD_CLAUSE(linear)
249 OPENMP_SIMD_CLAUSE(aligned)
250 OPENMP_SIMD_CLAUSE(safelen)
251 OPENMP_SIMD_CLAUSE(simdlen)
252 OPENMP_SIMD_CLAUSE(collapse)
253 OPENMP_SIMD_CLAUSE(reduction)
255 // Clauses allowed for directive 'omp for'.
256 OPENMP_FOR_CLAUSE(private)
257 OPENMP_FOR_CLAUSE(lastprivate)
258 OPENMP_FOR_CLAUSE(firstprivate)
259 OPENMP_FOR_CLAUSE(reduction)
260 OPENMP_FOR_CLAUSE(collapse)
261 OPENMP_FOR_CLAUSE(schedule)
262 OPENMP_FOR_CLAUSE(ordered)
263 OPENMP_FOR_CLAUSE(nowait)
264 OPENMP_FOR_CLAUSE(linear)
266 // Clauses allowed for directive 'omp for simd'.
267 OPENMP_FOR_SIMD_CLAUSE(private)
268 OPENMP_FOR_SIMD_CLAUSE(firstprivate)
269 OPENMP_FOR_SIMD_CLAUSE(lastprivate)
270 OPENMP_FOR_SIMD_CLAUSE(reduction)
271 OPENMP_FOR_SIMD_CLAUSE(schedule)
272 OPENMP_FOR_SIMD_CLAUSE(collapse)
273 OPENMP_FOR_SIMD_CLAUSE(nowait)
274 OPENMP_FOR_SIMD_CLAUSE(safelen)
275 OPENMP_FOR_SIMD_CLAUSE(simdlen)
276 OPENMP_FOR_SIMD_CLAUSE(linear)
277 OPENMP_FOR_SIMD_CLAUSE(aligned)
278 OPENMP_FOR_SIMD_CLAUSE(ordered)
280 // Clauses allowed for OpenMP directive 'omp sections'.
281 OPENMP_SECTIONS_CLAUSE(private)
282 OPENMP_SECTIONS_CLAUSE(lastprivate)
283 OPENMP_SECTIONS_CLAUSE(firstprivate)
284 OPENMP_SECTIONS_CLAUSE(reduction)
285 OPENMP_SECTIONS_CLAUSE(nowait)
287 // Clauses allowed for directive 'omp single'.
288 OPENMP_SINGLE_CLAUSE(private)
289 OPENMP_SINGLE_CLAUSE(firstprivate)
290 OPENMP_SINGLE_CLAUSE(copyprivate)
291 OPENMP_SINGLE_CLAUSE(nowait)
293 // Clauses allowed for OpenMP directive 'cancel'.
294 OPENMP_CANCEL_CLAUSE(if)
296 // Static attributes for 'default' clause.
297 OPENMP_DEFAULT_KIND(none)
298 OPENMP_DEFAULT_KIND(shared)
300 // Static attributes for 'proc_bind' clause.
301 OPENMP_PROC_BIND_KIND(master)
302 OPENMP_PROC_BIND_KIND(close)
303 OPENMP_PROC_BIND_KIND(spread)
305 // Static attributes for 'schedule' clause.
306 OPENMP_SCHEDULE_KIND(static)
307 OPENMP_SCHEDULE_KIND(dynamic)
308 OPENMP_SCHEDULE_KIND(guided)
309 OPENMP_SCHEDULE_KIND(auto)
310 OPENMP_SCHEDULE_KIND(runtime)
312 // Modifiers for 'schedule' clause.
313 OPENMP_SCHEDULE_MODIFIER(monotonic)
314 OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
315 OPENMP_SCHEDULE_MODIFIER(simd)
317 // Static attributes for 'defaultmap' clause.
318 OPENMP_DEFAULTMAP_KIND(scalar)
320 // Modifiers for 'defaultmap' clause.
321 OPENMP_DEFAULTMAP_MODIFIER(tofrom)
323 // Static attributes for 'depend' clause.
324 OPENMP_DEPEND_KIND(in)
325 OPENMP_DEPEND_KIND(out)
326 OPENMP_DEPEND_KIND(inout)
327 OPENMP_DEPEND_KIND(source)
328 OPENMP_DEPEND_KIND(sink)
330 // Modifiers for 'linear' clause.
331 OPENMP_LINEAR_KIND(val)
332 OPENMP_LINEAR_KIND(ref)
333 OPENMP_LINEAR_KIND(uval)
335 // Clauses allowed for OpenMP directive 'parallel for'.
336 OPENMP_PARALLEL_FOR_CLAUSE(if)
337 OPENMP_PARALLEL_FOR_CLAUSE(num_threads)
338 OPENMP_PARALLEL_FOR_CLAUSE(default)
339 OPENMP_PARALLEL_FOR_CLAUSE(proc_bind)
340 OPENMP_PARALLEL_FOR_CLAUSE(private)
341 OPENMP_PARALLEL_FOR_CLAUSE(firstprivate)
342 OPENMP_PARALLEL_FOR_CLAUSE(shared)
343 OPENMP_PARALLEL_FOR_CLAUSE(reduction)
344 OPENMP_PARALLEL_FOR_CLAUSE(copyin)
345 OPENMP_PARALLEL_FOR_CLAUSE(lastprivate)
346 OPENMP_PARALLEL_FOR_CLAUSE(collapse)
347 OPENMP_PARALLEL_FOR_CLAUSE(schedule)
348 OPENMP_PARALLEL_FOR_CLAUSE(ordered)
349 OPENMP_PARALLEL_FOR_CLAUSE(linear)
351 // Clauses allowed for OpenMP directive 'parallel for simd'.
352 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(if)
353 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
354 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(default)
355 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
356 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(private)
357 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
358 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(shared)
359 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(reduction)
360 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(copyin)
361 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
362 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(collapse)
363 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(schedule)
364 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(safelen)
365 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
366 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(linear)
367 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(aligned)
368 OPENMP_PARALLEL_FOR_SIMD_CLAUSE(ordered)
370 // Clauses allowed for OpenMP directive 'parallel sections'.
371 OPENMP_PARALLEL_SECTIONS_CLAUSE(if)
372 OPENMP_PARALLEL_SECTIONS_CLAUSE(num_threads)
373 OPENMP_PARALLEL_SECTIONS_CLAUSE(default)
374 OPENMP_PARALLEL_SECTIONS_CLAUSE(proc_bind)
375 OPENMP_PARALLEL_SECTIONS_CLAUSE(private)
376 OPENMP_PARALLEL_SECTIONS_CLAUSE(firstprivate)
377 OPENMP_PARALLEL_SECTIONS_CLAUSE(shared)
378 OPENMP_PARALLEL_SECTIONS_CLAUSE(reduction)
379 OPENMP_PARALLEL_SECTIONS_CLAUSE(copyin)
380 OPENMP_PARALLEL_SECTIONS_CLAUSE(lastprivate)
382 // Clauses allowed for OpenMP directive 'task'.
383 OPENMP_TASK_CLAUSE(if)
384 OPENMP_TASK_CLAUSE(final)
385 OPENMP_TASK_CLAUSE(default)
386 OPENMP_TASK_CLAUSE(private)
387 OPENMP_TASK_CLAUSE(firstprivate)
388 OPENMP_TASK_CLAUSE(shared)
389 OPENMP_TASK_CLAUSE(untied)
390 OPENMP_TASK_CLAUSE(mergeable)
391 OPENMP_TASK_CLAUSE(depend)
392 OPENMP_TASK_CLAUSE(priority)
394 // Clauses allowed for OpenMP directive 'atomic'.
395 OPENMP_ATOMIC_CLAUSE(read)
396 OPENMP_ATOMIC_CLAUSE(write)
397 OPENMP_ATOMIC_CLAUSE(update)
398 OPENMP_ATOMIC_CLAUSE(capture)
399 OPENMP_ATOMIC_CLAUSE(seq_cst)
401 // Clauses allowed for OpenMP directive 'target'.
402 OPENMP_TARGET_CLAUSE(if)
403 OPENMP_TARGET_CLAUSE(device)
404 OPENMP_TARGET_CLAUSE(map)
405 OPENMP_TARGET_CLAUSE(private)
406 OPENMP_TARGET_CLAUSE(nowait)
407 OPENMP_TARGET_CLAUSE(depend)
408 OPENMP_TARGET_CLAUSE(defaultmap)
409 OPENMP_TARGET_CLAUSE(firstprivate)
410 OPENMP_TARGET_CLAUSE(is_device_ptr)
412 // Clauses allowed for OpenMP directive 'target data'.
413 // TODO More clauses for 'target data' directive.
414 OPENMP_TARGET_DATA_CLAUSE(if)
415 OPENMP_TARGET_DATA_CLAUSE(device)
416 OPENMP_TARGET_DATA_CLAUSE(map)
417 OPENMP_TARGET_DATA_CLAUSE(use_device_ptr)
419 // Clauses allowed for OpenMP directive 'target enter data'.
420 OPENMP_TARGET_ENTER_DATA_CLAUSE(if)
421 OPENMP_TARGET_ENTER_DATA_CLAUSE(device)
422 OPENMP_TARGET_ENTER_DATA_CLAUSE(map)
423 OPENMP_TARGET_ENTER_DATA_CLAUSE(nowait)
424 OPENMP_TARGET_ENTER_DATA_CLAUSE(depend)
426 // Clauses allowed for OpenMP directive 'target exit data'.
427 OPENMP_TARGET_EXIT_DATA_CLAUSE(if)
428 OPENMP_TARGET_EXIT_DATA_CLAUSE(device)
429 OPENMP_TARGET_EXIT_DATA_CLAUSE(map)
430 OPENMP_TARGET_EXIT_DATA_CLAUSE(nowait)
431 OPENMP_TARGET_EXIT_DATA_CLAUSE(depend)
433 // Clauses allowed for OpenMP directive 'target parallel'.
434 // TODO: add target clauses 'is_device_ptr'
435 OPENMP_TARGET_PARALLEL_CLAUSE(if)
436 OPENMP_TARGET_PARALLEL_CLAUSE(device)
437 OPENMP_TARGET_PARALLEL_CLAUSE(map)
438 OPENMP_TARGET_PARALLEL_CLAUSE(private)
439 OPENMP_TARGET_PARALLEL_CLAUSE(firstprivate)
440 OPENMP_TARGET_PARALLEL_CLAUSE(nowait)
441 OPENMP_TARGET_PARALLEL_CLAUSE(depend)
442 OPENMP_TARGET_PARALLEL_CLAUSE(defaultmap)
443 OPENMP_TARGET_PARALLEL_CLAUSE(num_threads)
444 OPENMP_TARGET_PARALLEL_CLAUSE(default)
445 OPENMP_TARGET_PARALLEL_CLAUSE(proc_bind)
446 OPENMP_TARGET_PARALLEL_CLAUSE(shared)
447 OPENMP_TARGET_PARALLEL_CLAUSE(reduction)
449 // Clauses allowed for OpenMP directive 'target parallel for'.
450 // TODO: add target clauses 'is_device_ptr'
451 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(if)
452 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(device)
453 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(map)
454 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(private)
455 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(firstprivate)
456 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(lastprivate)
457 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(nowait)
458 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(depend)
459 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(defaultmap)
460 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(num_threads)
461 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(default)
462 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(proc_bind)
463 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(shared)
464 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(reduction)
465 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(collapse)
466 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(schedule)
467 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(ordered)
468 OPENMP_TARGET_PARALLEL_FOR_CLAUSE(linear)
470 // Clauses allowed for OpenMP directive 'target update'.
471 // TODO More clauses for 'target update' directive.
472 OPENMP_TARGET_UPDATE_CLAUSE(if)
473 OPENMP_TARGET_UPDATE_CLAUSE(device)
474 OPENMP_TARGET_UPDATE_CLAUSE(to)
475 OPENMP_TARGET_UPDATE_CLAUSE(from)
476 OPENMP_TARGET_UPDATE_CLAUSE(nowait)
477 OPENMP_TARGET_UPDATE_CLAUSE(depend)
479 // Clauses allowed for OpenMP directive 'teams'.
480 // TODO More clauses for 'teams' directive.
481 OPENMP_TEAMS_CLAUSE(default)
482 OPENMP_TEAMS_CLAUSE(private)
483 OPENMP_TEAMS_CLAUSE(firstprivate)
484 OPENMP_TEAMS_CLAUSE(shared)
485 OPENMP_TEAMS_CLAUSE(reduction)
486 OPENMP_TEAMS_CLAUSE(num_teams)
487 OPENMP_TEAMS_CLAUSE(thread_limit)
489 // Clauses allowed for OpenMP directive 'ordered'.
490 // TODO More clauses for 'ordered' directive.
491 OPENMP_ORDERED_CLAUSE(threads)
492 OPENMP_ORDERED_CLAUSE(simd)
493 OPENMP_ORDERED_CLAUSE(depend)
495 // Map types and map type modifier for 'map' clause.
496 OPENMP_MAP_KIND(alloc)
498 OPENMP_MAP_KIND(from)
499 OPENMP_MAP_KIND(tofrom)
500 OPENMP_MAP_KIND(delete)
501 OPENMP_MAP_KIND(release)
502 OPENMP_MAP_KIND(always)
504 // Clauses allowed for OpenMP directive 'taskloop'.
505 OPENMP_TASKLOOP_CLAUSE(if)
506 OPENMP_TASKLOOP_CLAUSE(shared)
507 OPENMP_TASKLOOP_CLAUSE(private)
508 OPENMP_TASKLOOP_CLAUSE(firstprivate)
509 OPENMP_TASKLOOP_CLAUSE(lastprivate)
510 OPENMP_TASKLOOP_CLAUSE(default)
511 OPENMP_TASKLOOP_CLAUSE(collapse)
512 OPENMP_TASKLOOP_CLAUSE(final)
513 OPENMP_TASKLOOP_CLAUSE(untied)
514 OPENMP_TASKLOOP_CLAUSE(mergeable)
515 OPENMP_TASKLOOP_CLAUSE(priority)
516 OPENMP_TASKLOOP_CLAUSE(grainsize)
517 OPENMP_TASKLOOP_CLAUSE(nogroup)
518 OPENMP_TASKLOOP_CLAUSE(num_tasks)
520 // Clauses allowed for OpenMP directive 'taskloop simd'.
521 OPENMP_TASKLOOP_SIMD_CLAUSE(if)
522 OPENMP_TASKLOOP_SIMD_CLAUSE(shared)
523 OPENMP_TASKLOOP_SIMD_CLAUSE(private)
524 OPENMP_TASKLOOP_SIMD_CLAUSE(firstprivate)
525 OPENMP_TASKLOOP_SIMD_CLAUSE(lastprivate)
526 OPENMP_TASKLOOP_SIMD_CLAUSE(default)
527 OPENMP_TASKLOOP_SIMD_CLAUSE(collapse)
528 OPENMP_TASKLOOP_SIMD_CLAUSE(final)
529 OPENMP_TASKLOOP_SIMD_CLAUSE(untied)
530 OPENMP_TASKLOOP_SIMD_CLAUSE(mergeable)
531 OPENMP_TASKLOOP_SIMD_CLAUSE(priority)
532 OPENMP_TASKLOOP_SIMD_CLAUSE(linear)
533 OPENMP_TASKLOOP_SIMD_CLAUSE(aligned)
534 OPENMP_TASKLOOP_SIMD_CLAUSE(safelen)
535 OPENMP_TASKLOOP_SIMD_CLAUSE(simdlen)
536 OPENMP_TASKLOOP_SIMD_CLAUSE(grainsize)
537 OPENMP_TASKLOOP_SIMD_CLAUSE(nogroup)
538 OPENMP_TASKLOOP_SIMD_CLAUSE(num_tasks)
540 // Clauses allowed for OpenMP directive 'critical'.
541 OPENMP_CRITICAL_CLAUSE(hint)
543 // Clauses allowed for OpenMP directive 'distribute'
544 OPENMP_DISTRIBUTE_CLAUSE(private)
545 OPENMP_DISTRIBUTE_CLAUSE(firstprivate)
546 OPENMP_DISTRIBUTE_CLAUSE(lastprivate)
547 OPENMP_DISTRIBUTE_CLAUSE(collapse)
548 OPENMP_DISTRIBUTE_CLAUSE(dist_schedule)
550 // Static attributes for 'dist_schedule' clause.
551 OPENMP_DIST_SCHEDULE_KIND(static)
553 // Clauses allowed for OpenMP directive 'distribute parallel for'
554 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(firstprivate)
555 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(lastprivate)
556 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(collapse)
557 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(dist_schedule)
558 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(if)
559 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(num_threads)
560 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(default)
561 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(proc_bind)
562 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(private)
563 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(shared)
564 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(reduction)
565 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(copyin)
566 OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE(schedule)
568 // Clauses allowed for OpenMP directive 'distribute parallel for simd'
569 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
570 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
571 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(collapse)
572 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(dist_schedule)
573 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(if)
574 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
575 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(default)
576 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
577 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(private)
578 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(shared)
579 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(reduction)
580 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(copyin)
581 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(schedule)
582 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(linear)
583 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(aligned)
584 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(safelen)
585 OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
587 // Clauses allowed for OpenMP directive 'distribute simd'
588 OPENMP_DISTRIBUTE_SIMD_CLAUSE(private)
589 OPENMP_DISTRIBUTE_SIMD_CLAUSE(firstprivate)
590 OPENMP_DISTRIBUTE_SIMD_CLAUSE(lastprivate)
591 OPENMP_DISTRIBUTE_SIMD_CLAUSE(collapse)
592 OPENMP_DISTRIBUTE_SIMD_CLAUSE(dist_schedule)
593 OPENMP_DISTRIBUTE_SIMD_CLAUSE(linear)
594 OPENMP_DISTRIBUTE_SIMD_CLAUSE(aligned)
595 OPENMP_DISTRIBUTE_SIMD_CLAUSE(safelen)
596 OPENMP_DISTRIBUTE_SIMD_CLAUSE(simdlen)
597 OPENMP_DISTRIBUTE_SIMD_CLAUSE(reduction)
599 // Clauses allowed for OpenMP directive 'target parallel for simd'.
600 // TODO: add target clauses 'is_device_ptr'
601 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(if)
602 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(device)
603 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(map)
604 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(private)
605 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(firstprivate)
606 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(lastprivate)
607 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(nowait)
608 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(depend)
609 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(defaultmap)
610 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(num_threads)
611 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(default)
612 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(proc_bind)
613 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(shared)
614 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(reduction)
615 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(collapse)
616 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(schedule)
617 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(ordered)
618 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(linear)
619 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(safelen)
620 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(simdlen)
621 OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE(aligned)
623 #undef OPENMP_TASKLOOP_SIMD_CLAUSE
624 #undef OPENMP_TASKLOOP_CLAUSE
625 #undef OPENMP_LINEAR_KIND
626 #undef OPENMP_DEPEND_KIND
627 #undef OPENMP_SCHEDULE_MODIFIER
628 #undef OPENMP_SCHEDULE_KIND
629 #undef OPENMP_PROC_BIND_KIND
630 #undef OPENMP_DEFAULT_KIND
631 #undef OPENMP_DIRECTIVE
632 #undef OPENMP_DIRECTIVE_EXT
634 #undef OPENMP_CRITICAL_CLAUSE
635 #undef OPENMP_ORDERED_CLAUSE
636 #undef OPENMP_CANCEL_CLAUSE
637 #undef OPENMP_SINGLE_CLAUSE
638 #undef OPENMP_SECTIONS_CLAUSE
639 #undef OPENMP_PARALLEL_CLAUSE
640 #undef OPENMP_PARALLEL_FOR_CLAUSE
641 #undef OPENMP_PARALLEL_FOR_SIMD_CLAUSE
642 #undef OPENMP_PARALLEL_SECTIONS_CLAUSE
643 #undef OPENMP_TASK_CLAUSE
644 #undef OPENMP_ATOMIC_CLAUSE
645 #undef OPENMP_TARGET_CLAUSE
646 #undef OPENMP_TARGET_DATA_CLAUSE
647 #undef OPENMP_TARGET_ENTER_DATA_CLAUSE
648 #undef OPENMP_TARGET_EXIT_DATA_CLAUSE
649 #undef OPENMP_TARGET_PARALLEL_CLAUSE
650 #undef OPENMP_TARGET_PARALLEL_FOR_CLAUSE
651 #undef OPENMP_TEAMS_CLAUSE
652 #undef OPENMP_SIMD_CLAUSE
653 #undef OPENMP_FOR_CLAUSE
654 #undef OPENMP_FOR_SIMD_CLAUSE
655 #undef OPENMP_MAP_KIND
656 #undef OPENMP_DISTRIBUTE_CLAUSE
657 #undef OPENMP_DIST_SCHEDULE_KIND
658 #undef OPENMP_DEFAULTMAP_KIND
659 #undef OPENMP_DEFAULTMAP_MODIFIER
660 #undef OPENMP_TARGET_UPDATE_CLAUSE
661 #undef OPENMP_DISTRIBUTE_PARALLEL_FOR_CLAUSE
662 #undef OPENMP_DISTRIBUTE_PARALLEL_FOR_SIMD_CLAUSE
663 #undef OPENMP_DISTRIBUTE_SIMD_CLAUSE
664 #undef OPENMP_TARGET_PARALLEL_FOR_SIMD_CLAUSE