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_DEFAULTMAP_MODIFIER
45#define OPENMP_DEFAULTMAP_MODIFIER(Name)
46#endif
47#ifndef OPENMP_DEVICE_TYPE_KIND
48#define OPENMP_DEVICE_TYPE_KIND(Name)
49#endif
50#ifndef OPENMP_LASTPRIVATE_KIND
51#define OPENMP_LASTPRIVATE_KIND(Name)
52#endif
53#ifndef OPENMP_ORDER_KIND
54#define OPENMP_ORDER_KIND(Name)
55#endif
56#ifndef OPENMP_DEVICE_MODIFIER
57#define OPENMP_DEVICE_MODIFIER(Name)
58#endif
59#ifndef OPENMP_REDUCTION_MODIFIER
60#define OPENMP_REDUCTION_MODIFIER(Name)
61#endif
62
63// Static attributes for 'schedule' clause.
64OPENMP_SCHEDULE_KIND(static)
65OPENMP_SCHEDULE_KIND(dynamic)
66OPENMP_SCHEDULE_KIND(guided)
67OPENMP_SCHEDULE_KIND(auto)
68OPENMP_SCHEDULE_KIND(runtime)
69
70// Modifiers for 'schedule' clause.
71OPENMP_SCHEDULE_MODIFIER(monotonic)
72OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
73OPENMP_SCHEDULE_MODIFIER(simd)
74
75// Modifiers for 'device' clause.
76OPENMP_DEVICE_MODIFIER(ancestor)
77OPENMP_DEVICE_MODIFIER(device_num)
78
79// Static attributes for 'defaultmap' clause.
80OPENMP_DEFAULTMAP_KIND(scalar)
81OPENMP_DEFAULTMAP_KIND(aggregate)
82OPENMP_DEFAULTMAP_KIND(pointer)
83
84// Modifiers for 'defaultmap' clause.
85OPENMP_DEFAULTMAP_MODIFIER(alloc)
86OPENMP_DEFAULTMAP_MODIFIER(to)
87OPENMP_DEFAULTMAP_MODIFIER(from)
88OPENMP_DEFAULTMAP_MODIFIER(tofrom)
89OPENMP_DEFAULTMAP_MODIFIER(firstprivate)
90OPENMP_DEFAULTMAP_MODIFIER(none)
91OPENMP_DEFAULTMAP_MODIFIER(default)
92OPENMP_DEFAULTMAP_MODIFIER(present)
93
94// Static attributes for 'depend' clause.
95OPENMP_DEPEND_KIND(in)
96OPENMP_DEPEND_KIND(out)
97OPENMP_DEPEND_KIND(inout)
98OPENMP_DEPEND_KIND(mutexinoutset)
99OPENMP_DEPEND_KIND(depobj)
100OPENMP_DEPEND_KIND(source)
101OPENMP_DEPEND_KIND(sink)
102
103// Modifiers for 'linear' clause.
104OPENMP_LINEAR_KIND(val)
105OPENMP_LINEAR_KIND(ref)
106OPENMP_LINEAR_KIND(uval)
107
108// Modifiers for 'atomic_default_mem_order' clause.
109OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst)
110OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel)
111OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed)
112
113// Map types for 'map' clause.
114OPENMP_MAP_KIND(alloc)
115OPENMP_MAP_KIND(to)
116OPENMP_MAP_KIND(from)
117OPENMP_MAP_KIND(tofrom)
118OPENMP_MAP_KIND(delete)
119OPENMP_MAP_KIND(release)
120
121// Map-type-modifiers for 'map' clause.
122OPENMP_MAP_MODIFIER_KIND(always)
123OPENMP_MAP_MODIFIER_KIND(close)
124OPENMP_MAP_MODIFIER_KIND(mapper)
125OPENMP_MAP_MODIFIER_KIND(present)
126
127// Modifiers for 'to' or 'from' clause.
128OPENMP_MOTION_MODIFIER_KIND(mapper)
129OPENMP_MOTION_MODIFIER_KIND(present)
130
131// Static attributes for 'dist_schedule' clause.
132OPENMP_DIST_SCHEDULE_KIND(static)
133
134// Device types for 'device_type' clause.
135OPENMP_DEVICE_TYPE_KIND(host)
136OPENMP_DEVICE_TYPE_KIND(nohost)
137OPENMP_DEVICE_TYPE_KIND(any)
138
139// Type of the 'lastprivate' clause.
140OPENMP_LASTPRIVATE_KIND(conditional)
141
142// Type of the 'order' clause.
143OPENMP_ORDER_KIND(concurrent)
144
145// Modifiers for 'reduction' clause.
146OPENMP_REDUCTION_MODIFIER(default)
147OPENMP_REDUCTION_MODIFIER(inscan)
148OPENMP_REDUCTION_MODIFIER(task)
149
150#undef OPENMP_REDUCTION_MODIFIER
151#undef OPENMP_DEVICE_MODIFIER
152#undef OPENMP_ORDER_KIND
153#undef OPENMP_LASTPRIVATE_KIND
154#undef OPENMP_DEVICE_TYPE_KIND
155#undef OPENMP_LINEAR_KIND
156#undef OPENMP_DEPEND_KIND
157#undef OPENMP_SCHEDULE_MODIFIER
158#undef OPENMP_SCHEDULE_KIND
159#undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
160#undef OPENMP_MAP_KIND
161#undef OPENMP_MAP_MODIFIER_KIND
162#undef OPENMP_MOTION_MODIFIER_KIND
163#undef OPENMP_DIST_SCHEDULE_KIND
164#undef OPENMP_DEFAULTMAP_KIND
165#undef OPENMP_DEFAULTMAP_MODIFIER
166
167