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_AT_KIND
45#define OPENMP_AT_KIND(Name)
46#endif
47#ifndef OPENMP_SEVERITY_KIND
48#define OPENMP_SEVERITY_KIND(Name)
49#endif
50#ifndef OPENMP_DEFAULTMAP_MODIFIER
51#define OPENMP_DEFAULTMAP_MODIFIER(Name)
52#endif
53#ifndef OPENMP_DEVICE_TYPE_KIND
54#define OPENMP_DEVICE_TYPE_KIND(Name)
55#endif
56#ifndef OPENMP_LASTPRIVATE_KIND
57#define OPENMP_LASTPRIVATE_KIND(Name)
58#endif
59#ifndef OPENMP_ORDER_KIND
60#define OPENMP_ORDER_KIND(Name)
61#endif
62#ifndef OPENMP_ORDER_MODIFIER
63#define OPENMP_ORDER_MODIFIER(Name)
64#endif
65#ifndef OPENMP_DEVICE_MODIFIER
66#define OPENMP_DEVICE_MODIFIER(Name)
67#endif
68#ifndef OPENMP_REDUCTION_MODIFIER
69#define OPENMP_REDUCTION_MODIFIER(Name)
70#endif
71#ifndef OPENMP_ADJUST_ARGS_KIND
72#define OPENMP_ADJUST_ARGS_KIND(Name)
73#endif
74#ifndef OPENMP_BIND_KIND
75#define OPENMP_BIND_KIND(Name)
76#endif
77#ifndef OPENMP_GRAINSIZE_MODIFIER
78#define OPENMP_GRAINSIZE_MODIFIER(Name)
79#endif
80#ifndef OPENMP_NUMTASKS_MODIFIER
81#define OPENMP_NUMTASKS_MODIFIER(Name)
82#endif
83#ifndef OPENMP_DOACROSS_MODIFIER
84#define OPENMP_DOACROSS_MODIFIER(Name)
85#endif
86
87// Static attributes for 'schedule' clause.
88OPENMP_SCHEDULE_KIND(static)
89OPENMP_SCHEDULE_KIND(dynamic)
90OPENMP_SCHEDULE_KIND(guided)
91OPENMP_SCHEDULE_KIND(auto)
92OPENMP_SCHEDULE_KIND(runtime)
93
94// Modifiers for 'schedule' clause.
95OPENMP_SCHEDULE_MODIFIER(monotonic)
96OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
97OPENMP_SCHEDULE_MODIFIER(simd)
98
99// Modifiers for 'device' clause.
100OPENMP_DEVICE_MODIFIER(ancestor)
101OPENMP_DEVICE_MODIFIER(device_num)
102
103// Static attributes for 'defaultmap' clause.
104OPENMP_DEFAULTMAP_KIND(scalar)
105OPENMP_DEFAULTMAP_KIND(aggregate)
106OPENMP_DEFAULTMAP_KIND(pointer)
107
108// Modifiers for 'defaultmap' clause.
109OPENMP_DEFAULTMAP_MODIFIER(alloc)
110OPENMP_DEFAULTMAP_MODIFIER(to)
111OPENMP_DEFAULTMAP_MODIFIER(from)
112OPENMP_DEFAULTMAP_MODIFIER(tofrom)
113OPENMP_DEFAULTMAP_MODIFIER(firstprivate)
114OPENMP_DEFAULTMAP_MODIFIER(none)
115OPENMP_DEFAULTMAP_MODIFIER(default)
116OPENMP_DEFAULTMAP_MODIFIER(present)
117
118// Static attributes for 'depend' clause.
119OPENMP_DEPEND_KIND(in)
120OPENMP_DEPEND_KIND(out)
121OPENMP_DEPEND_KIND(inout)
122OPENMP_DEPEND_KIND(mutexinoutset)
123OPENMP_DEPEND_KIND(depobj)
124OPENMP_DEPEND_KIND(source)
125OPENMP_DEPEND_KIND(sink)
126OPENMP_DEPEND_KIND(inoutset)
127OPENMP_DEPEND_KIND(outallmemory)
128OPENMP_DEPEND_KIND(inoutallmemory)
129
130// Modifiers for 'linear' clause.
131OPENMP_LINEAR_KIND(val)
132OPENMP_LINEAR_KIND(ref)
133OPENMP_LINEAR_KIND(uval)
134
135// Modifiers for 'atomic_default_mem_order' clause.
136OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst)
137OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel)
138OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed)
139
140// Modifiers for 'at' clause.
141OPENMP_AT_KIND(compilation)
142OPENMP_AT_KIND(execution)
143
144// Modifiers for 'severity' clause.
145OPENMP_SEVERITY_KIND(fatal)
146OPENMP_SEVERITY_KIND(warning)
147
148// Map types for 'map' clause.
149OPENMP_MAP_KIND(alloc)
150OPENMP_MAP_KIND(to)
151OPENMP_MAP_KIND(from)
152OPENMP_MAP_KIND(tofrom)
153OPENMP_MAP_KIND(delete)
154OPENMP_MAP_KIND(release)
155
156// Map-type-modifiers for 'map' clause.
157OPENMP_MAP_MODIFIER_KIND(always)
158OPENMP_MAP_MODIFIER_KIND(close)
159OPENMP_MAP_MODIFIER_KIND(mapper)
160OPENMP_MAP_MODIFIER_KIND(iterator)
161OPENMP_MAP_MODIFIER_KIND(present)
162// This is an OpenMP extension for the sake of OpenACC support.
163OPENMP_MAP_MODIFIER_KIND(ompx_hold)
164
165// Modifiers for 'to' or 'from' clause.
166OPENMP_MOTION_MODIFIER_KIND(mapper)
167OPENMP_MOTION_MODIFIER_KIND(present)
168
169// Static attributes for 'dist_schedule' clause.
170OPENMP_DIST_SCHEDULE_KIND(static)
171
172// Device types for 'device_type' clause.
173OPENMP_DEVICE_TYPE_KIND(host)
174OPENMP_DEVICE_TYPE_KIND(nohost)
175OPENMP_DEVICE_TYPE_KIND(any)
176
177// Type of the 'lastprivate' clause.
178OPENMP_LASTPRIVATE_KIND(conditional)
179
180// Type of the 'order' clause.
181OPENMP_ORDER_KIND(concurrent)
182
183// Modifiers for the 'order' clause.
184OPENMP_ORDER_MODIFIER(reproducible)
185OPENMP_ORDER_MODIFIER(unconstrained)
186
187// Modifiers for 'reduction' clause.
188OPENMP_REDUCTION_MODIFIER(default)
189OPENMP_REDUCTION_MODIFIER(inscan)
190OPENMP_REDUCTION_MODIFIER(task)
191
192// Adjust-op kinds for the 'adjust_args' clause.
193OPENMP_ADJUST_ARGS_KIND(nothing)
194OPENMP_ADJUST_ARGS_KIND(need_device_ptr)
195
196// Binding kinds for the 'bind' clause.
197OPENMP_BIND_KIND(teams)
198OPENMP_BIND_KIND(parallel)
199OPENMP_BIND_KIND(thread)
200
201// Modifiers for the 'grainsize' clause.
202OPENMP_GRAINSIZE_MODIFIER(strict)
203
204// Modifiers for the 'num_tasks' clause.
205OPENMP_NUMTASKS_MODIFIER(strict)
206
207// Modifiers for the 'doacross' clause.
208OPENMP_DOACROSS_MODIFIER(source)
209OPENMP_DOACROSS_MODIFIER(sink)
210OPENMP_DOACROSS_MODIFIER(sink_omp_cur_iteration)
211OPENMP_DOACROSS_MODIFIER(source_omp_cur_iteration)
212
213#undef OPENMP_NUMTASKS_MODIFIER
214#undef OPENMP_GRAINSIZE_MODIFIER
215#undef OPENMP_BIND_KIND
216#undef OPENMP_ADJUST_ARGS_KIND
217#undef OPENMP_REDUCTION_MODIFIER
218#undef OPENMP_DEVICE_MODIFIER
219#undef OPENMP_ORDER_KIND
220#undef OPENMP_ORDER_MODIFIER
221#undef OPENMP_LASTPRIVATE_KIND
222#undef OPENMP_DEVICE_TYPE_KIND
223#undef OPENMP_LINEAR_KIND
224#undef OPENMP_DEPEND_KIND
225#undef OPENMP_SCHEDULE_MODIFIER
226#undef OPENMP_SCHEDULE_KIND
227#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
228#undef OPENMP_AT_KIND
229#undef OPENMP_SEVERITY_KIND
230#undef OPENMP_MAP_KIND
231#undef OPENMP_MAP_MODIFIER_KIND
232#undef OPENMP_MOTION_MODIFIER_KIND
233#undef OPENMP_DIST_SCHEDULE_KIND
234#undef OPENMP_DEFAULTMAP_KIND
235#undef OPENMP_DEFAULTMAP_MODIFIER
236#undef OPENMP_DOACROSS_MODIFIER
237
238