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