clang 23.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 6.1 need_device modifier
216#define OPENMP_NEED_DEVICE_PTR_KIND(Name) OMPC_NEED_DEVICE_PTR_##Name,
217#include "clang/Basic/OpenMPKinds.def"
219};
220
221/// OpenMP 6.1 use_device_ptr fallback modifier
223#define OPENMP_USE_DEVICE_PTR_FALLBACK_MODIFIER(Name) \
224 OMPC_USE_DEVICE_PTR_FALLBACK_##Name,
225#include "clang/Basic/OpenMPKinds.def"
227};
228
229/// OpenMP bindings for the 'bind' clause.
231#define OPENMP_BIND_KIND(Name) OMPC_BIND_##Name,
232#include "clang/Basic/OpenMPKinds.def"
234};
235
237#define OPENMP_GRAINSIZE_MODIFIER(Name) OMPC_GRAINSIZE_##Name,
238#include "clang/Basic/OpenMPKinds.def"
240};
241
243#define OPENMP_DYN_GROUPPRIVATE_MODIFIER(Name) OMPC_DYN_GROUPPRIVATE_##Name,
244#include "clang/Basic/OpenMPKinds.def"
246};
247
250#define OPENMP_DYN_GROUPPRIVATE_FALLBACK_MODIFIER(Name) \
251 OMPC_DYN_GROUPPRIVATE_FALLBACK_##Name,
252#include "clang/Basic/OpenMPKinds.def"
254};
255
257#define OPENMP_NUMTASKS_MODIFIER(Name) OMPC_NUMTASKS_##Name,
258#include "clang/Basic/OpenMPKinds.def"
260};
261
263#define OPENMP_NUMTHREADS_MODIFIER(Name) OMPC_NUMTHREADS_##Name,
264#include "clang/Basic/OpenMPKinds.def"
266};
267
268/// OpenMP dependence types for 'doacross' clause.
270#define OPENMP_DOACROSS_MODIFIER(Name) OMPC_DOACROSS_##Name,
271#include "clang/Basic/OpenMPKinds.def"
273};
274
275/// OpenMP modifiers for 'allocate' clause.
277#define OPENMP_ALLOCATE_MODIFIER(Name) OMPC_ALLOCATE_##Name,
278#include "clang/Basic/OpenMPKinds.def"
280};
281
282/// OpenMP modifiers for 'threadset' clause.
284#define OPENMP_THREADSET_KIND(Name) OMPC_THREADSET_##Name,
285#include "clang/Basic/OpenMPKinds.def"
287};
288
289/// Number of allowed allocate-modifiers.
290static constexpr unsigned NumberOfOMPAllocateClauseModifiers =
292
293/// Contains 'interop' data for 'append_args' and 'init' clauses.
294class Expr;
302
304getOpenMPDefaultVariableCategory(StringRef Str, const LangOptions &LangOpts);
305const char *getOpenMPDefaultVariableCategoryName(unsigned VC);
306
307unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str,
308 const LangOptions &LangOpts);
309const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type);
310
311/// Checks if the specified directive is a directive with an associated
312/// loop construct.
313/// \param DKind Specified directive.
314/// \return true - the directive is a loop-associated directive like 'omp simd'
315/// or 'omp for' directive, otherwise - false.
317
318/// Checks if the specified directive is a worksharing directive.
319/// \param DKind Specified directive.
320/// \return true - the directive is a worksharing directive like 'omp for',
321/// otherwise - false.
323
324/// Checks if the specified directive is a taskloop directive.
325/// \param DKind Specified directive.
326/// \return true - the directive is a worksharing directive like 'omp taskloop',
327/// otherwise - false.
329
330/// Checks if the specified directive is a parallel-kind directive.
331/// \param DKind Specified directive.
332/// \return true - the directive is a parallel-like directive like 'omp
333/// parallel', otherwise - false.
335
336/// Checks if the specified directive is a target code offload directive.
337/// \param DKind Specified directive.
338/// \return true - the directive is a target code offload directive like
339/// 'omp target', 'omp target parallel', 'omp target xxx'
340/// otherwise - false.
342
343/// Checks if the specified directive is a target data offload directive.
344/// \param DKind Specified directive.
345/// \return true - the directive is a target data offload directive like
346/// 'omp target data', 'omp target update', 'omp target enter data',
347/// 'omp target exit data'
348/// otherwise - false.
350
351/// Checks if the specified directive is a map-entering target directive.
352/// \param DKind Specified directive.
353/// \return true - the directive is a map-entering target directive like
354/// 'omp target', 'omp target data', 'omp target enter data',
355/// 'omp target parallel', etc. (excludes 'omp target exit data', 'omp target
356/// update') otherwise - false.
358
359/// Checks if the specified composite/combined directive constitutes a teams
360/// directive in the outermost nest. For example
361/// 'omp teams distribute' or 'omp teams distribute parallel for'.
362/// \param DKind Specified directive.
363/// \return true - the directive has teams on the outermost nest, otherwise -
364/// false.
366
367/// Checks if the specified directive is a teams-kind directive. For example,
368/// 'omp teams distribute' or 'omp target teams'.
369/// \param DKind Specified directive.
370/// \return true - the directive is a teams-like directive, otherwise - false.
372
373/// Checks if the specified directive is a simd directive.
374/// \param DKind Specified directive.
375/// \return true - the directive is a simd directive like 'omp simd',
376/// otherwise - false.
378
379/// Checks if the specified directive is a distribute directive.
380/// \param DKind Specified directive.
381/// \return true - the directive is a distribute-directive like 'omp
382/// distribute',
383/// otherwise - false.
385
386/// Checks if the specified composite/combined directive constitutes a
387/// distribute directive in the outermost nest. For example,
388/// 'omp distribute parallel for' or 'omp distribute'.
389/// \param DKind Specified directive.
390/// \return true - the directive has distribute on the outermost nest.
391/// otherwise - false.
393
394/// Checks if the specified directive constitutes a 'loop' directive in the
395/// outermost nest. For example, 'omp teams loop' or 'omp loop'.
396/// \param DKind Specified directive.
397/// \return true - the directive has loop on the outermost nest.
398/// otherwise - false.
400
401/// Checks if the specified clause is one of private clauses like
402/// 'private', 'firstprivate', 'reduction' etc..
403/// \param Kind Clause kind.
404/// \return true - the clause is a private clause, otherwise - false.
406
407/// Checks if the specified clause is one of threadprivate clauses like
408/// 'threadprivate', 'copyin' or 'copyprivate'.
409/// \param Kind Clause kind.
410/// \return true - the clause is a threadprivate clause, otherwise - false.
412
413/// Checks if the specified directive kind is one of tasking directives - task,
414/// taskloop, taksloop simd, master taskloop, parallel master taskloop, master
415/// taskloop simd, or parallel master taskloop simd.
417
418/// Checks if the specified directive kind is one of the composite or combined
419/// directives that need loop bound sharing across loops outlined in nested
420/// functions
422
423/// Checks if the specified directive is a loop transformation directive that
424/// applies to a canonical loop nest.
425/// \param DKind Specified directive.
426/// \return True iff the directive is a loop transformation.
428 OpenMPDirectiveKind DKind);
429
430/// Checks if the specified directive is a loop transformation directive that
431/// applies to a canonical loop sequence.
432/// \param DKind Specified directive.
433/// \return True iff the directive is a loop transformation.
435 OpenMPDirectiveKind DKind);
436
437/// Checks if the specified directive is a loop transformation directive.
438/// \param DKind Specified directive.
439/// \return True iff the directive is a loop transformation.
441
442/// Return the captured regions of an OpenMP directive.
445 OpenMPDirectiveKind DKind);
446
447/// Checks if the specified directive is a combined construct for which
448/// the first construct is a parallel construct.
449/// \param DKind Specified directive.
450/// \return true - if the above condition is met for this directive
451/// otherwise - false.
453
454/// Checks if the specified target directive, combined or not, needs task based
455/// thread_limit
456/// \param DKind Specified directive.
457/// \return true - if the above condition is met for this directive
458/// otherwise - false.
460
461/// Checks if the parameter to the fail clause in "#pragma atomic compare fail"
462/// is restricted only to memory order clauses of "OMPC_acquire",
463/// "OMPC_relaxed" and "OMPC_seq_cst".
464bool checkFailClauseParameter(OpenMPClauseKind FailClauseParameter);
465
466/// Checks if the specified directive is considered as "executable". This
467/// combines the OpenMP categories of "executable" and "subsidiary", plus
468/// any other directives that should be treated as executable.
469/// \param DKind Specified directive.
470/// \return true - if the above condition is met for this directive
471/// otherwise - false.
473
474/// Checks if the specified directive is considered as "informational".
475/// \param DKind Specified directive.
476/// \return true if it is an informational directive, false otherwise.
478
479/// Checks if the specified directive can capture variables.
480/// \param DKind Specified directive.
481/// \return true - if the above condition is met for this directive
482/// otherwise - false.
484
485/// Checks if the specified directive is an order concurrent nestable
486/// directive that can be nested within region corresponding to construct
487/// on which order clause was specified with concurrent as ordering argument.
488/// \param DKind Specified directive.
489/// \param LangOpts Used for getting the OpenMP version.
490/// \return true - if the above condition is met for this directive
491/// otherwise - false.
493 const LangOptions &LangOpts);
494}
495
496template <>
497struct llvm::enum_iteration_traits<clang::OpenMPDefaultmapClauseKind> {
498 static constexpr bool is_iterable = true;
499};
500#endif
501
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
OpenMPNeedDevicePtrModifier
OpenMP 6.1 need_device modifier.
@ OMPC_NEED_DEVICE_PTR_unknown
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.
OpenMPUseDevicePtrFallbackModifier
OpenMP 6.1 use_device_ptr fallback modifier.
@ OMPC_USE_DEVICE_PTR_FALLBACK_unknown
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