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