1 //===--- OpenMPKinds.def - OpenMP directives and clauses list ---*- C++ -*-===//
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
7 //===----------------------------------------------------------------------===//
9 /// This file defines the list of supported OpenMP directives and
12 //===----------------------------------------------------------------------===//
14 #ifndef OPENMP_SCHEDULE_KIND
15 #define OPENMP_SCHEDULE_KIND(Name)
17 #ifndef OPENMP_SCHEDULE_MODIFIER
18 #define OPENMP_SCHEDULE_MODIFIER(Name)
20 #ifndef OPENMP_DEPEND_KIND
21 #define OPENMP_DEPEND_KIND(Name)
23 #ifndef OPENMP_LINEAR_KIND
24 #define OPENMP_LINEAR_KIND(Name)
26 #ifndef OPENMP_MAP_KIND
27 #define OPENMP_MAP_KIND(Name)
29 #ifndef OPENMP_MAP_MODIFIER_KIND
30 #define OPENMP_MAP_MODIFIER_KIND(Name)
32 #ifndef OPENMP_TO_MODIFIER_KIND
33 #define OPENMP_TO_MODIFIER_KIND(Name)
35 #ifndef OPENMP_FROM_MODIFIER_KIND
36 #define OPENMP_FROM_MODIFIER_KIND(Name)
38 #ifndef OPENMP_DIST_SCHEDULE_KIND
39 #define OPENMP_DIST_SCHEDULE_KIND(Name)
41 #ifndef OPENMP_DEFAULTMAP_KIND
42 #define OPENMP_DEFAULTMAP_KIND(Name)
44 #ifndef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
45 #define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name)
47 #ifndef OPENMP_DEFAULTMAP_MODIFIER
48 #define OPENMP_DEFAULTMAP_MODIFIER(Name)
50 #ifndef OPENMP_DEVICE_TYPE_KIND
51 #define OPENMP_DEVICE_TYPE_KIND(Name)
53 #ifndef OPENMP_LASTPRIVATE_KIND
54 #define OPENMP_LASTPRIVATE_KIND(Name)
56 #ifndef OPENMP_ORDER_KIND
57 #define OPENMP_ORDER_KIND(Name)
59 #ifndef OPENMP_DEVICE_MODIFIER
60 #define OPENMP_DEVICE_MODIFIER(Name)
62 #ifndef OPENMP_REDUCTION_MODIFIER
63 #define OPENMP_REDUCTION_MODIFIER(Name)
66 // Static attributes for 'schedule' clause.
67 OPENMP_SCHEDULE_KIND(static)
68 OPENMP_SCHEDULE_KIND(dynamic)
69 OPENMP_SCHEDULE_KIND(guided)
70 OPENMP_SCHEDULE_KIND(auto)
71 OPENMP_SCHEDULE_KIND(runtime)
73 // Modifiers for 'schedule' clause.
74 OPENMP_SCHEDULE_MODIFIER(monotonic)
75 OPENMP_SCHEDULE_MODIFIER(nonmonotonic)
76 OPENMP_SCHEDULE_MODIFIER(simd)
78 // Modifiers for 'device' clause.
79 OPENMP_DEVICE_MODIFIER(ancestor)
80 OPENMP_DEVICE_MODIFIER(device_num)
82 // Static attributes for 'defaultmap' clause.
83 OPENMP_DEFAULTMAP_KIND(scalar)
84 OPENMP_DEFAULTMAP_KIND(aggregate)
85 OPENMP_DEFAULTMAP_KIND(pointer)
87 // Modifiers for 'defaultmap' clause.
88 OPENMP_DEFAULTMAP_MODIFIER(alloc)
89 OPENMP_DEFAULTMAP_MODIFIER(to)
90 OPENMP_DEFAULTMAP_MODIFIER(from)
91 OPENMP_DEFAULTMAP_MODIFIER(tofrom)
92 OPENMP_DEFAULTMAP_MODIFIER(firstprivate)
93 OPENMP_DEFAULTMAP_MODIFIER(none)
94 OPENMP_DEFAULTMAP_MODIFIER(default)
96 // Static attributes for 'depend' clause.
97 OPENMP_DEPEND_KIND(in)
98 OPENMP_DEPEND_KIND(out)
99 OPENMP_DEPEND_KIND(inout)
100 OPENMP_DEPEND_KIND(mutexinoutset)
101 OPENMP_DEPEND_KIND(depobj)
102 OPENMP_DEPEND_KIND(source)
103 OPENMP_DEPEND_KIND(sink)
105 // Modifiers for 'linear' clause.
106 OPENMP_LINEAR_KIND(val)
107 OPENMP_LINEAR_KIND(ref)
108 OPENMP_LINEAR_KIND(uval)
110 // Modifiers for 'atomic_default_mem_order' clause.
111 OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(seq_cst)
112 OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(acq_rel)
113 OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(relaxed)
115 // Map types for 'map' clause.
116 OPENMP_MAP_KIND(alloc)
118 OPENMP_MAP_KIND(from)
119 OPENMP_MAP_KIND(tofrom)
120 OPENMP_MAP_KIND(delete)
121 OPENMP_MAP_KIND(release)
123 // Map-type-modifiers for 'map' clause.
124 OPENMP_MAP_MODIFIER_KIND(always)
125 OPENMP_MAP_MODIFIER_KIND(close)
126 OPENMP_MAP_MODIFIER_KIND(mapper)
128 // Modifiers for 'to' clause.
129 OPENMP_TO_MODIFIER_KIND(mapper)
131 // Modifiers for 'from' clause.
132 OPENMP_FROM_MODIFIER_KIND(mapper)
134 // Static attributes for 'dist_schedule' clause.
135 OPENMP_DIST_SCHEDULE_KIND(static)
137 // Device types for 'device_type' clause.
138 OPENMP_DEVICE_TYPE_KIND(host)
139 OPENMP_DEVICE_TYPE_KIND(nohost)
140 OPENMP_DEVICE_TYPE_KIND(any)
142 // Type of the 'lastprivate' clause.
143 OPENMP_LASTPRIVATE_KIND(conditional)
145 // Type of the 'order' clause.
146 OPENMP_ORDER_KIND(concurrent)
148 // Modifiers for 'reduction' clause.
149 OPENMP_REDUCTION_MODIFIER(default)
150 OPENMP_REDUCTION_MODIFIER(inscan)
151 OPENMP_REDUCTION_MODIFIER(task)
153 #undef OPENMP_REDUCTION_MODIFIER
154 #undef OPENMP_DEVICE_MODIFIER
155 #undef OPENMP_ORDER_KIND
156 #undef OPENMP_LASTPRIVATE_KIND
157 #undef OPENMP_DEVICE_TYPE_KIND
158 #undef OPENMP_LINEAR_KIND
159 #undef OPENMP_DEPEND_KIND
160 #undef OPENMP_SCHEDULE_MODIFIER
161 #undef OPENMP_SCHEDULE_KIND
162 #undef OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND
163 #undef OPENMP_MAP_KIND
164 #undef OPENMP_MAP_MODIFIER_KIND
165 #undef OPENMP_TO_MODIFIER_KIND
166 #undef OPENMP_FROM_MODIFIER_KIND
167 #undef OPENMP_DIST_SCHEDULE_KIND
168 #undef OPENMP_DEFAULTMAP_KIND
169 #undef OPENMP_DEFAULTMAP_MODIFIER