clang 22.0.0git
OpenMPKinds.h
Go to the documentation of this file.
1//===--- OpenMPKinds.h - OpenMP enums ---------------------------*- 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///
9/// \file
10/// Defines some OpenMP-specific enums and functions.
11///
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_CLANG_BASIC_OPENMPKINDS_H
15#define LLVM_CLANG_BASIC_OPENMPKINDS_H
16
18#include "llvm/ADT/Sequence.h"
19#include "llvm/ADT/StringRef.h"
20#include "llvm/Frontend/OpenMP/OMPConstants.h"
21
22namespace clang {
23
24/// OpenMP directives.
25using OpenMPDirectiveKind = llvm::omp::Directive;
26
27/// OpenMP clauses.
28using OpenMPClauseKind = llvm::omp::Clause;
29
30/// OpenMP attributes for 'schedule' clause.
32#define OPENMP_SCHEDULE_KIND(Name) \
33 OMPC_SCHEDULE_##Name,
34#include "clang/Basic/OpenMPKinds.def"
36};
37
38/// OpenMP modifiers for 'schedule' clause.
41#define OPENMP_SCHEDULE_MODIFIER(Name) \
42 OMPC_SCHEDULE_MODIFIER_##Name,
43#include "clang/Basic/OpenMPKinds.def"
45};
46
47/// OpenMP modifiers for 'device' clause.
49#define OPENMP_DEVICE_MODIFIER(Name) OMPC_DEVICE_##Name,
50#include "clang/Basic/OpenMPKinds.def"
52};
53
54/// OpenMP attributes for 'depend' clause.
56#define OPENMP_DEPEND_KIND(Name) \
57 OMPC_DEPEND_##Name,
58#include "clang/Basic/OpenMPKinds.def"
60};
61
62/// OpenMP attributes for 'linear' clause.
64#define OPENMP_LINEAR_KIND(Name) \
65 OMPC_LINEAR_##Name,
66#include "clang/Basic/OpenMPKinds.def"
68};
69
70/// OpenMP mapping kind for 'map' clause.
72#define OPENMP_MAP_KIND(Name) \
73 OMPC_MAP_##Name,
74#include "clang/Basic/OpenMPKinds.def"
76};
77
78/// OpenMP modifier kind for 'map' clause.
81#define OPENMP_MAP_MODIFIER_KIND(Name) \
82 OMPC_MAP_MODIFIER_##Name,
83#include "clang/Basic/OpenMPKinds.def"
85};
86
87/// Number of allowed map-type-modifiers.
88static constexpr unsigned NumberOfOMPMapClauseModifiers =
90
91/// OpenMP modifier kind for 'to' or 'from' clause.
93#define OPENMP_MOTION_MODIFIER_KIND(Name) \
94 OMPC_MOTION_MODIFIER_##Name,
95#include "clang/Basic/OpenMPKinds.def"
97};
98
99/// Number of allowed motion-modifiers.
100static constexpr unsigned NumberOfOMPMotionModifiers =
102
103/// OpenMP attributes for 'dist_schedule' clause.
105#define OPENMP_DIST_SCHEDULE_KIND(Name) OMPC_DIST_SCHEDULE_##Name,
106#include "clang/Basic/OpenMPKinds.def"
108};
109
110/// OpenMP variable-category for 'default' clause.
112#define OPENMP_DEFAULT_VARIABLE_CATEGORY(Name) OMPC_DEFAULT_VC_##Name,
113#include "clang/Basic/OpenMPKinds.def"
115};
116
117/// OpenMP attributes for 'defaultmap' clause.
119#define OPENMP_DEFAULTMAP_KIND(Name) \
120 OMPC_DEFAULTMAP_##Name,
121#include "clang/Basic/OpenMPKinds.def"
123};
124
125/// OpenMP modifiers for 'defaultmap' clause.
128#define OPENMP_DEFAULTMAP_MODIFIER(Name) \
129 OMPC_DEFAULTMAP_MODIFIER_##Name,
130#include "clang/Basic/OpenMPKinds.def"
132};
133
134/// OpenMP attributes for 'atomic_default_mem_order' clause.
136#define OPENMP_ATOMIC_DEFAULT_MEM_ORDER_KIND(Name) \
137 OMPC_ATOMIC_DEFAULT_MEM_ORDER_##Name,
138#include "clang/Basic/OpenMPKinds.def"
140};
141
142/// OpenMP attributes for 'at' clause.
144#define OPENMP_AT_KIND(Name) OMPC_AT_##Name,
145#include "clang/Basic/OpenMPKinds.def"
147};
148
149/// OpenMP attributes for 'severity' clause.
151#define OPENMP_SEVERITY_KIND(Name) OMPC_SEVERITY_##Name,
152#include "clang/Basic/OpenMPKinds.def"
154};
155
156/// OpenMP device type for 'device_type' clause.
158#define OPENMP_DEVICE_TYPE_KIND(Name) \
159 OMPC_DEVICE_TYPE_##Name,
160#include "clang/Basic/OpenMPKinds.def"
162};
163
164/// OpenMP 'lastprivate' clause modifier.
166#define OPENMP_LASTPRIVATE_KIND(Name) OMPC_LASTPRIVATE_##Name,
167#include "clang/Basic/OpenMPKinds.def"
169};
170
171/// OpenMP attributes for 'order' clause.
173#define OPENMP_ORDER_KIND(Name) OMPC_ORDER_##Name,
174#include "clang/Basic/OpenMPKinds.def"
176};
177
178/// OpenMP modifiers for 'order' clause.
181#define OPENMP_ORDER_MODIFIER(Name) OMPC_ORDER_MODIFIER_##Name,
182#include "clang/Basic/OpenMPKinds.def"
184};
185
186/// Scheduling data for loop-based OpenMP directives.
192
193/// OpenMP modifiers for 'reduction' clause.
195#define OPENMP_REDUCTION_MODIFIER(Name) OMPC_REDUCTION_##Name,
196#include "clang/Basic/OpenMPKinds.def"
198};
199
200/// OpenMP 6.0 original sharing modifiers
202#define OPENMP_ORIGINAL_SHARING_MODIFIER(Name) OMPC_ORIGINAL_SHARING_##Name,
203#include "clang/Basic/OpenMPKinds.def"
205};
206
207/// OpenMP adjust-op kinds for 'adjust_args' clause.
209#define OPENMP_ADJUST_ARGS_KIND(Name) OMPC_ADJUST_ARGS_##Name,
210#include "clang/Basic/OpenMPKinds.def"
212};
213
214/// OpenMP bindings for the 'bind' clause.
216#define OPENMP_BIND_KIND(Name) OMPC_BIND_##Name,
217#include "clang/Basic/OpenMPKinds.def"
219};
220
222#define OPENMP_GRAINSIZE_MODIFIER(Name) OMPC_GRAINSIZE_##Name,
223#include "clang/Basic/OpenMPKinds.def"
225};
226
228#define OPENMP_DYN_GROUPPRIVATE_MODIFIER(Name) OMPC_DYN_GROUPPRIVATE_##Name,
229#include "clang/Basic/OpenMPKinds.def"
231};
232
235#define OPENMP_DYN_GROUPPRIVATE_FALLBACK_MODIFIER(Name) \
236 OMPC_DYN_GROUPPRIVATE_FALLBACK_##Name,
237#include "clang/Basic/OpenMPKinds.def"
239};
240
242#define OPENMP_NUMTASKS_MODIFIER(Name) OMPC_NUMTASKS_##Name,
243#include "clang/Basic/OpenMPKinds.def"
245};
246
248#define OPENMP_NUMTHREADS_MODIFIER(Name) OMPC_NUMTHREADS_##Name,
249#include "clang/Basic/OpenMPKinds.def"
251};
252
253/// OpenMP dependence types for 'doacross' clause.
255#define OPENMP_DOACROSS_MODIFIER(Name) OMPC_DOACROSS_##Name,
256#include "clang/Basic/OpenMPKinds.def"
258};
259
260/// OpenMP modifiers for 'allocate' clause.
262#define OPENMP_ALLOCATE_MODIFIER(Name) OMPC_ALLOCATE_##Name,
263#include "clang/Basic/OpenMPKinds.def"
265};
266
267/// OpenMP modifiers for 'threadset' clause.
269#define OPENMP_THREADSET_KIND(Name) OMPC_THREADSET_##Name,
270#include "clang/Basic/OpenMPKinds.def"
272};
273
274/// Number of allowed allocate-modifiers.
275static constexpr unsigned NumberOfOMPAllocateClauseModifiers =
277
278/// Contains 'interop' data for 'append_args' and 'init' clauses.
279class Expr;
287
289getOpenMPDefaultVariableCategory(StringRef Str, const LangOptions &LangOpts);
290const char *getOpenMPDefaultVariableCategoryName(unsigned VC);
291
292unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str,
293 const LangOptions &LangOpts);
294const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type);
295
296/// Checks if the specified directive is a directive with an associated
297/// loop construct.
298/// \param DKind Specified directive.
299/// \return true - the directive is a loop-associated directive like 'omp simd'
300/// or 'omp for' directive, otherwise - false.
302
303/// Checks if the specified directive is a worksharing directive.
304/// \param DKind Specified directive.
305/// \return true - the directive is a worksharing directive like 'omp for',
306/// otherwise - false.
308
309/// Checks if the specified directive is a taskloop directive.
310/// \param DKind Specified directive.
311/// \return true - the directive is a worksharing directive like 'omp taskloop',
312/// otherwise - false.
314
315/// Checks if the specified directive is a parallel-kind directive.
316/// \param DKind Specified directive.
317/// \return true - the directive is a parallel-like directive like 'omp
318/// parallel', otherwise - false.
320
321/// Checks if the specified directive is a target code offload directive.
322/// \param DKind Specified directive.
323/// \return true - the directive is a target code offload directive like
324/// 'omp target', 'omp target parallel', 'omp target xxx'
325/// otherwise - false.
327
328/// Checks if the specified directive is a target data offload directive.
329/// \param DKind Specified directive.
330/// \return true - the directive is a target data offload directive like
331/// 'omp target data', 'omp target update', 'omp target enter data',
332/// 'omp target exit data'
333/// otherwise - false.
335
336/// Checks if the specified directive is a map-entering target directive.
337/// \param DKind Specified directive.
338/// \return true - the directive is a map-entering target directive like
339/// 'omp target', 'omp target data', 'omp target enter data',
340/// 'omp target parallel', etc. (excludes 'omp target exit data', 'omp target
341/// update') otherwise - false.
343
344/// Checks if the specified composite/combined directive constitutes a teams
345/// directive in the outermost nest. For example
346/// 'omp teams distribute' or 'omp teams distribute parallel for'.
347/// \param DKind Specified directive.
348/// \return true - the directive has teams on the outermost nest, otherwise -
349/// false.
351
352/// Checks if the specified directive is a teams-kind directive. For example,
353/// 'omp teams distribute' or 'omp target teams'.
354/// \param DKind Specified directive.
355/// \return true - the directive is a teams-like directive, otherwise - false.
357
358/// Checks if the specified directive is a simd directive.
359/// \param DKind Specified directive.
360/// \return true - the directive is a simd directive like 'omp simd',
361/// otherwise - false.
363
364/// Checks if the specified directive is a distribute directive.
365/// \param DKind Specified directive.
366/// \return true - the directive is a distribute-directive like 'omp
367/// distribute',
368/// otherwise - false.
370
371/// Checks if the specified composite/combined directive constitutes a
372/// distribute directive in the outermost nest. For example,
373/// 'omp distribute parallel for' or 'omp distribute'.
374/// \param DKind Specified directive.
375/// \return true - the directive has distribute on the outermost nest.
376/// otherwise - false.
378
379/// Checks if the specified directive constitutes a 'loop' directive in the
380/// outermost nest. For example, 'omp teams loop' or 'omp loop'.
381/// \param DKind Specified directive.
382/// \return true - the directive has loop on the outermost nest.
383/// otherwise - false.
385
386/// Checks if the specified clause is one of private clauses like
387/// 'private', 'firstprivate', 'reduction' etc..
388/// \param Kind Clause kind.
389/// \return true - the clause is a private clause, otherwise - false.
391
392/// Checks if the specified clause is one of threadprivate clauses like
393/// 'threadprivate', 'copyin' or 'copyprivate'.
394/// \param Kind Clause kind.
395/// \return true - the clause is a threadprivate clause, otherwise - false.
397
398/// Checks if the specified directive kind is one of tasking directives - task,
399/// taskloop, taksloop simd, master taskloop, parallel master taskloop, master
400/// taskloop simd, or parallel master taskloop simd.
402
403/// Checks if the specified directive kind is one of the composite or combined
404/// directives that need loop bound sharing across loops outlined in nested
405/// functions
407
408/// Checks if the specified directive is a loop transformation directive that
409/// applies to a canonical loop nest.
410/// \param DKind Specified directive.
411/// \return True iff the directive is a loop transformation.
413 OpenMPDirectiveKind DKind);
414
415/// Checks if the specified directive is a loop transformation directive that
416/// applies to a canonical loop sequence.
417/// \param DKind Specified directive.
418/// \return True iff the directive is a loop transformation.
420 OpenMPDirectiveKind DKind);
421
422/// Checks if the specified directive is a loop transformation directive.
423/// \param DKind Specified directive.
424/// \return True iff the directive is a loop transformation.
426
427/// Return the captured regions of an OpenMP directive.
430 OpenMPDirectiveKind DKind);
431
432/// Checks if the specified directive is a combined construct for which
433/// the first construct is a parallel construct.
434/// \param DKind Specified directive.
435/// \return true - if the above condition is met for this directive
436/// otherwise - false.
438
439/// Checks if the specified target directive, combined or not, needs task based
440/// thread_limit
441/// \param DKind Specified directive.
442/// \return true - if the above condition is met for this directive
443/// otherwise - false.
445
446/// Checks if the parameter to the fail clause in "#pragma atomic compare fail"
447/// is restricted only to memory order clauses of "OMPC_acquire",
448/// "OMPC_relaxed" and "OMPC_seq_cst".
449bool checkFailClauseParameter(OpenMPClauseKind FailClauseParameter);
450
451/// Checks if the specified directive is considered as "executable". This
452/// combines the OpenMP categories of "executable" and "subsidiary", plus
453/// any other directives that should be treated as executable.
454/// \param DKind Specified directive.
455/// \return true - if the above condition is met for this directive
456/// otherwise - false.
458
459/// Checks if the specified directive is considered as "informational".
460/// \param DKind Specified directive.
461/// \return true if it is an informational directive, false otherwise.
463
464/// Checks if the specified directive can capture variables.
465/// \param DKind Specified directive.
466/// \return true - if the above condition is met for this directive
467/// otherwise - false.
469
470/// Checks if the specified directive is an order concurrent nestable
471/// directive that can be nested within region corresponding to construct
472/// on which order clause was specified with concurrent as ordering argument.
473/// \param DKind Specified directive.
474/// \param LangOpts Used for getting the OpenMP version.
475/// \return true - if the above condition is met for this directive
476/// otherwise - false.
478 const LangOptions &LangOpts);
479}
480
481template <>
482struct llvm::enum_iteration_traits<clang::OpenMPDefaultmapClauseKind> {
483 static constexpr bool is_iterable = true;
484};
485#endif
486
Defines the clang::LangOptions interface.
This represents one expression.
Definition Expr.h:112
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
The base class of the type hierarchy.
Definition TypeBase.h:1833
The JSON file list parser is used to communicate input to InstallAPI.
bool isOpenMPWorksharingDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a worksharing directive.
bool needsTaskBasedThreadLimit(OpenMPDirectiveKind DKind)
Checks if the specified target directive, combined or not, needs task based thread_limit.
OpenMPOriginalSharingModifier
OpenMP 6.0 original sharing modifiers.
@ OMPC_ORIGINAL_SHARING_unknown
bool isOpenMPNestingTeamsDirective(OpenMPDirectiveKind DKind)
Checks if the specified composite/combined directive constitutes a teams directive in the outermost n...
bool checkFailClauseParameter(OpenMPClauseKind FailClauseParameter)
Checks if the parameter to the fail clause in "#pragma atomic compare fail" is restricted only to mem...
bool isOpenMPTargetDataManagementDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a target data offload directive.
OpenMPDefaultClauseVariableCategory
OpenMP variable-category for 'default' clause.
@ OMPC_DEFAULT_VC_unknown
bool isOpenMPLoopTransformationDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a loop transformation directive.
OpenMPDefaultmapClauseModifier
OpenMP modifiers for 'defaultmap' clause.
@ OMPC_DEFAULTMAP_MODIFIER_last
@ OMPC_DEFAULTMAP_MODIFIER_unknown
OpenMPOrderClauseModifier
OpenMP modifiers for 'order' clause.
@ OMPC_ORDER_MODIFIER_unknown
@ OMPC_ORDER_MODIFIER_last
OpenMPAdjustArgsOpKind
OpenMP adjust-op kinds for 'adjust_args' clause.
@ OMPC_ADJUST_ARGS_unknown
OpenMPAtClauseKind
OpenMP attributes for 'at' clause.
@ OMPC_AT_unknown
bool isOpenMPDistributeDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a distribute directive.
OpenMPReductionClauseModifier
OpenMP modifiers for 'reduction' clause.
@ OMPC_REDUCTION_unknown
OpenMPDeviceType
OpenMP device type for 'device_type' clause.
@ OMPC_DEVICE_TYPE_unknown
OpenMPScheduleClauseModifier
OpenMP modifiers for 'schedule' clause.
Definition OpenMPKinds.h:39
@ OMPC_SCHEDULE_MODIFIER_last
Definition OpenMPKinds.h:44
@ OMPC_SCHEDULE_MODIFIER_unknown
Definition OpenMPKinds.h:40
const char * getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type)
static constexpr unsigned NumberOfOMPAllocateClauseModifiers
Number of allowed allocate-modifiers.
bool isOpenMPParallelDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a parallel-kind directive.
bool isOpenMPPrivate(OpenMPClauseKind Kind)
Checks if the specified clause is one of private clauses like 'private', 'firstprivate',...
OpenMPDistScheduleClauseKind
OpenMP attributes for 'dist_schedule' clause.
@ OMPC_DIST_SCHEDULE_unknown
OpenMPDoacrossClauseModifier
OpenMP dependence types for 'doacross' clause.
@ OMPC_DOACROSS_unknown
bool isOpenMPTaskingDirective(OpenMPDirectiveKind Kind)
Checks if the specified directive kind is one of tasking directives - task, taskloop,...
static constexpr unsigned NumberOfOMPMapClauseModifiers
Number of allowed map-type-modifiers.
Definition OpenMPKinds.h:88
bool isOpenMPTargetExecutionDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a target code offload directive.
OpenMPDynGroupprivateClauseFallbackModifier
@ OMPC_DYN_GROUPPRIVATE_FALLBACK_unknown
@ OMPC_DYN_GROUPPRIVATE_FALLBACK_last
bool isOpenMPTeamsDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a teams-kind directive.
bool isOpenMPGenericLoopDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive constitutes a 'loop' directive in the outermost nest.
OpenMPBindClauseKind
OpenMP bindings for the 'bind' clause.
@ OMPC_BIND_unknown
OpenMPLastprivateModifier
OpenMP 'lastprivate' clause modifier.
@ OMPC_LASTPRIVATE_unknown
OpenMPDependClauseKind
OpenMP attributes for 'depend' clause.
Definition OpenMPKinds.h:55
@ OMPC_DEPEND_unknown
Definition OpenMPKinds.h:59
bool isOpenMPCanonicalLoopSequenceTransformationDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a loop transformation directive that applies to a canonical loop...
OpenMPGrainsizeClauseModifier
@ OMPC_GRAINSIZE_unknown
unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str, const LangOptions &LangOpts)
bool isOpenMPCanonicalLoopNestTransformationDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a loop transformation directive that applies to a canonical loop...
OpenMPNumTasksClauseModifier
@ OMPC_NUMTASKS_unknown
bool isOpenMPTargetMapEnteringDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a map-entering target directive.
bool isOpenMPOrderConcurrentNestableDirective(OpenMPDirectiveKind DKind, const LangOptions &LangOpts)
Checks if the specified directive is an order concurrent nestable directive that can be nested within...
bool isOpenMPLoopDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a directive with an associated loop construct.
bool isOpenMPCapturingDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive can capture variables.
OpenMPSeverityClauseKind
OpenMP attributes for 'severity' clause.
@ OMPC_SEVERITY_unknown
bool isOpenMPLoopBoundSharingDirective(OpenMPDirectiveKind Kind)
Checks if the specified directive kind is one of the composite or combined directives that need loop ...
static constexpr unsigned NumberOfOMPMotionModifiers
Number of allowed motion-modifiers.
OpenMPMotionModifierKind
OpenMP modifier kind for 'to' or 'from' clause.
Definition OpenMPKinds.h:92
@ OMPC_MOTION_MODIFIER_unknown
Definition OpenMPKinds.h:96
OpenMPDefaultmapClauseKind
OpenMP attributes for 'defaultmap' clause.
@ OMPC_DEFAULTMAP_unknown
OpenMPAllocateClauseModifier
OpenMP modifiers for 'allocate' clause.
@ OMPC_ALLOCATE_unknown
bool isOpenMPThreadPrivate(OpenMPClauseKind Kind)
Checks if the specified clause is one of threadprivate clauses like 'threadprivate',...
OpenMPLinearClauseKind
OpenMP attributes for 'linear' clause.
Definition OpenMPKinds.h:63
@ OMPC_LINEAR_unknown
Definition OpenMPKinds.h:67
bool isOpenMPExecutableDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is considered as "executable".
llvm::omp::Directive OpenMPDirectiveKind
OpenMP directives.
Definition OpenMPKinds.h:25
OpenMPDynGroupprivateClauseModifier
@ OMPC_DYN_GROUPPRIVATE_unknown
bool isOpenMPInformationalDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is considered as "informational".
bool isOpenMPSimdDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a simd directive.
void getOpenMPCaptureRegions(llvm::SmallVectorImpl< OpenMPDirectiveKind > &CaptureRegions, OpenMPDirectiveKind DKind)
Return the captured regions of an OpenMP directive.
OpenMPNumThreadsClauseModifier
@ OMPC_NUMTHREADS_unknown
OpenMPAtomicDefaultMemOrderClauseKind
OpenMP attributes for 'atomic_default_mem_order' clause.
@ OMPC_ATOMIC_DEFAULT_MEM_ORDER_unknown
const char * getOpenMPDefaultVariableCategoryName(unsigned VC)
OpenMPDeviceClauseModifier
OpenMP modifiers for 'device' clause.
Definition OpenMPKinds.h:48
@ OMPC_DEVICE_unknown
Definition OpenMPKinds.h:51
OpenMPMapModifierKind
OpenMP modifier kind for 'map' clause.
Definition OpenMPKinds.h:79
@ OMPC_MAP_MODIFIER_last
Definition OpenMPKinds.h:84
@ OMPC_MAP_MODIFIER_unknown
Definition OpenMPKinds.h:80
bool isOpenMPCombinedParallelADirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a combined construct for which the first construct is a parallel...
llvm::omp::Clause OpenMPClauseKind
OpenMP clauses.
Definition OpenMPKinds.h:28
bool isOpenMPNestingDistributeDirective(OpenMPDirectiveKind DKind)
Checks if the specified composite/combined directive constitutes a distribute directive in the outerm...
OpenMPOrderClauseKind
OpenMP attributes for 'order' clause.
@ OMPC_ORDER_unknown
OpenMPScheduleClauseKind
OpenMP attributes for 'schedule' clause.
Definition OpenMPKinds.h:31
@ OMPC_SCHEDULE_unknown
Definition OpenMPKinds.h:35
bool isOpenMPTaskLoopDirective(OpenMPDirectiveKind DKind)
Checks if the specified directive is a taskloop directive.
OpenMPThreadsetKind
OpenMP modifiers for 'threadset' clause.
@ OMPC_THREADSET_unknown
OpenMPDefaultClauseVariableCategory getOpenMPDefaultVariableCategory(StringRef Str, const LangOptions &LangOpts)
OpenMPMapClauseKind
OpenMP mapping kind for 'map' clause.
Definition OpenMPKinds.h:71
@ OMPC_MAP_unknown
Definition OpenMPKinds.h:75
OMPInteropInfo(bool IsTarget=false, bool IsTargetSync=false)
llvm::SmallVector< Expr *, 4 > PreferTypes
Scheduling data for loop-based OpenMP directives.
OpenMPScheduleClauseModifier M2
OpenMPScheduleClauseModifier M1
OpenMPScheduleClauseKind Schedule