xref: /llvm-project/clang/include/clang/Basic/OpenMPKinds.def (revision ad38e24eb74e97148faec97c4f843b87768b6e9b)
1//===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8/// \file
9/// This file defines the list of supported OpenMP directives and
10/// clauses.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef OPENMP_SCHEDULE_KIND
15#define OPENMP_SCHEDULE_KIND(Name)
16#endif
17#ifndef OPENMP_SCHEDULE_MODIFIER
18#define OPENMP_SCHEDULE_MODIFIER(Name)
19#endif
20#ifndef OPENMP_DEPEND_KIND
21#define OPENMP_DEPEND_KIND(Name)
22#endif
23#ifndef OPENMP_LINEAR_KIND
24#define OPENMP_LINEAR_KIND(Name)
25#endif
26#ifndef OPENMP_MAP_KIND
27#define OPENMP_MAP_KIND(Name)
28#endif
29#ifndef OPENMP_MAP_MODIFIER_KIND
30#define OPENMP_MAP_MODIFIER_KIND(Name)
31#endif
32#ifndef OPENMP_MOTION_MODIFIER_KIND
33#define OPENMP_MOTION_MODIFIER_KIND(Name)
34#endif
35#ifndef OPENMP_DIST_SCHEDULE_KIND
36#define OPENMP_DIST_SCHEDULE_KIND(Name)
37#endif
38#ifndef OPENMP_DEFAULTMAP_KIND
39#define OPENMP_DEFAULTMAP_KIND(Name)
40#endif
41#ifndef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
42#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name)
43#endif
44#ifndef OPENMP_ATOMIC_FAIL_MODIFIER
45#define OPENMP_ATOMIC_FAIL_MODIFIER(Name)
46#endif
47#ifndef OPENMP_AT_KIND
48#define OPENMP_AT_KIND(Name)
49#endif
50#ifndef OPENMP_SEVERITY_KIND
51#define OPENMP_SEVERITY_KIND(Name)
52#endif
53#ifndef OPENMP_DEFAULTMAP_MODIFIER
54#define OPENMP_DEFAULTMAP_MODIFIER(Name)
55#endif
56#ifndef OPENMP_DEVICE_TYPE_KIND
57#define OPENMP_DEVICE_TYPE_KIND(Name)
58#endif
59#ifndef OPENMP_LASTPRIVATE_KIND
60#define OPENMP_LASTPRIVATE_KIND(Name)
61#endif
62#ifndef OPENMP_ORDER_KIND
63#define OPENMP_ORDER_KIND(Name)
64#endif
65#ifndef OPENMP_ORDER_MODIFIER
66#define OPENMP_ORDER_MODIFIER(Name)
67#endif
68#ifndef OPENMP_DEVICE_MODIFIER
69#define OPENMP_DEVICE_MODIFIER(Name)
70#endif
71#ifndef OPENMP_REDUCTION_MODIFIER
72#define OPENMP_REDUCTION_MODIFIER(Name)
73#endif
74#ifndef OPENMP_ADJUST_ARGS_KIND
75#define OPENMP_ADJUST_ARGS_KIND(Name)
76#endif
77#ifndef OPENMP_BIND_KIND
78#define OPENMP_BIND_KIND(Name)
79#endif
80#ifndef OPENMP_GRAINSIZE_MODIFIER
81#define OPENMP_GRAINSIZE_MODIFIER(Name)
82#endif
83#ifndef OPENMP_NUMTASKS_MODIFIER
84#define OPENMP_NUMTASKS_MODIFIER(Name)
85#endif
86#ifndef OPENMP_DOACROSS_MODIFIER
87#define OPENMP_DOACROSS_MODIFIER(Name)
88#endif
89#ifndef OPENMP_ALLOCATE_MODIFIER
90#define OPENMP_ALLOCATE_MODIFIER(Name)
91#endif
92
93// Static attributes for 'schedule' clause.
94OPENMP_SCHEDULE_KIND(static)
95OPENMP_SCHEDULE_KIND(dynamic)
96OPENMP_SCHEDULE_KIND(guided)
97OPENMP_SCHEDULE_KIND(auto)
98OPENMP_SCHEDULE_KIND(runtime)
99
100// Modifiers for 'schedule' clause.
101OPENMP_SCHEDULE_MODIFIER(monotonic)
102OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
103OPENMP_SCHEDULE_MODIFIER(simd)
104
105// Modifiers for 'device' clause.
106OPENMP_DEVICE_MODIFIER(ancestor)
107OPENMP_DEVICE_MODIFIER(device_num)
108
109// Static attributes for 'defaultmap' clause.
110OPENMP_DEFAULTMAP_KIND(scalar)
111OPENMP_DEFAULTMAP_KIND(aggregate)
112OPENMP_DEFAULTMAP_KIND(pointer)
113OPENMP_DEFAULTMAP_KIND(all)
114
115// Modifiers for 'defaultmap' clause.
116OPENMP_DEFAULTMAP_MODIFIER(alloc)
117OPENMP_DEFAULTMAP_MODIFIER(to)
118OPENMP_DEFAULTMAP_MODIFIER(from)
119OPENMP_DEFAULTMAP_MODIFIER(tofrom)
120OPENMP_DEFAULTMAP_MODIFIER(firstprivate)
121OPENMP_DEFAULTMAP_MODIFIER(none)
122OPENMP_DEFAULTMAP_MODIFIER(default)
123OPENMP_DEFAULTMAP_MODIFIER(present)
124
125// Static attributes for 'depend' clause.
126OPENMP_DEPEND_KIND(in)
127OPENMP_DEPEND_KIND(out)
128OPENMP_DEPEND_KIND(inout)
129OPENMP_DEPEND_KIND(mutexinoutset)
130OPENMP_DEPEND_KIND(depobj)
131OPENMP_DEPEND_KIND(source)
132OPENMP_DEPEND_KIND(sink)
133OPENMP_DEPEND_KIND(inoutset)
134OPENMP_DEPEND_KIND(outallmemory)
135OPENMP_DEPEND_KIND(inoutallmemory)
136
137// Modifiers for 'linear' clause.
138OPENMP_LINEAR_KIND(val)
139OPENMP_LINEAR_KIND(ref)
140OPENMP_LINEAR_KIND(uval)
141OPENMP_LINEAR_KIND(step)
142
143// Modifiers for 'atomic_default_mem_order' clause.
144OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst)
145OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel)
146OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed)
147
148// Modifiers for atomic 'fail' clause.
149OPENMP_ATOMIC_FAIL_MODIFIER(seq_cst)
150OPENMP_ATOMIC_FAIL_MODIFIER(acquire)
151OPENMP_ATOMIC_FAIL_MODIFIER(relaxed)
152
153// Modifiers for 'at' clause.
154OPENMP_AT_KIND(compilation)
155OPENMP_AT_KIND(execution)
156
157// Modifiers for 'severity' clause.
158OPENMP_SEVERITY_KIND(fatal)
159OPENMP_SEVERITY_KIND(warning)
160
161// Map types for 'map' clause.
162OPENMP_MAP_KIND(alloc)
163OPENMP_MAP_KIND(to)
164OPENMP_MAP_KIND(from)
165OPENMP_MAP_KIND(tofrom)
166OPENMP_MAP_KIND(delete)
167OPENMP_MAP_KIND(release)
168
169// Map-type-modifiers for 'map' clause.
170OPENMP_MAP_MODIFIER_KIND(always)
171OPENMP_MAP_MODIFIER_KIND(close)
172OPENMP_MAP_MODIFIER_KIND(mapper)
173OPENMP_MAP_MODIFIER_KIND(iterator)
174OPENMP_MAP_MODIFIER_KIND(present)
175// This is an OpenMP extension for the sake of OpenACC support.
176OPENMP_MAP_MODIFIER_KIND(ompx_hold)
177
178// Modifiers for 'to' or 'from' clause.
179OPENMP_MOTION_MODIFIER_KIND(mapper)
180OPENMP_MOTION_MODIFIER_KIND(present)
181
182// Static attributes for 'dist_schedule' clause.
183OPENMP_DIST_SCHEDULE_KIND(static)
184
185// Device types for 'device_type' clause.
186OPENMP_DEVICE_TYPE_KIND(host)
187OPENMP_DEVICE_TYPE_KIND(nohost)
188OPENMP_DEVICE_TYPE_KIND(any)
189
190// Type of the 'lastprivate' clause.
191OPENMP_LASTPRIVATE_KIND(conditional)
192
193// Type of the 'order' clause.
194OPENMP_ORDER_KIND(concurrent)
195
196// Modifiers for the 'order' clause.
197OPENMP_ORDER_MODIFIER(reproducible)
198OPENMP_ORDER_MODIFIER(unconstrained)
199
200// Modifiers for 'reduction' clause.
201OPENMP_REDUCTION_MODIFIER(default)
202OPENMP_REDUCTION_MODIFIER(inscan)
203OPENMP_REDUCTION_MODIFIER(task)
204
205// Adjust-op kinds for the 'adjust_args' clause.
206OPENMP_ADJUST_ARGS_KIND(nothing)
207OPENMP_ADJUST_ARGS_KIND(need_device_ptr)
208
209// Binding kinds for the 'bind' clause.
210OPENMP_BIND_KIND(teams)
211OPENMP_BIND_KIND(parallel)
212OPENMP_BIND_KIND(thread)
213
214// Modifiers for the 'grainsize' clause.
215OPENMP_GRAINSIZE_MODIFIER(strict)
216
217// Modifiers for the 'num_tasks' clause.
218OPENMP_NUMTASKS_MODIFIER(strict)
219
220// Modifiers for 'allocate' clause.
221OPENMP_ALLOCATE_MODIFIER(allocator)
222OPENMP_ALLOCATE_MODIFIER(align)
223
224// Modifiers for the 'doacross' clause.
225OPENMP_DOACROSS_MODIFIER(source)
226OPENMP_DOACROSS_MODIFIER(sink)
227OPENMP_DOACROSS_MODIFIER(sink_omp_cur_iteration)
228OPENMP_DOACROSS_MODIFIER(source_omp_cur_iteration)
229
230#undef OPENMP_NUMTASKS_MODIFIER
231#undef OPENMP_GRAINSIZE_MODIFIER
232#undef OPENMP_BIND_KIND
233#undef OPENMP_ADJUST_ARGS_KIND
234#undef OPENMP_REDUCTION_MODIFIER
235#undef OPENMP_DEVICE_MODIFIER
236#undef OPENMP_ORDER_KIND
237#undef OPENMP_ORDER_MODIFIER
238#undef OPENMP_LASTPRIVATE_KIND
239#undef OPENMP_DEVICE_TYPE_KIND
240#undef OPENMP_LINEAR_KIND
241#undef OPENMP_DEPEND_KIND
242#undef OPENMP_SCHEDULE_MODIFIER
243#undef OPENMP_SCHEDULE_KIND
244#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
245#undef OPENMP_ATOMIC_FAIL_MODIFIER
246#undef OPENMP_AT_KIND
247#undef OPENMP_SEVERITY_KIND
248#undef OPENMP_MAP_KIND
249#undef OPENMP_MAP_MODIFIER_KIND
250#undef OPENMP_MOTION_MODIFIER_KIND
251#undef OPENMP_DIST_SCHEDULE_KIND
252#undef OPENMP_DEFAULTMAP_KIND
253#undef OPENMP_DEFAULTMAP_MODIFIER
254#undef OPENMP_DOACROSS_MODIFIER
255#undef OPENMP_ALLOCATE_MODIFIER
256
257