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 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 bindings for the 'bind' clause.
223#define OPENMP_BIND_KIND(Name) OMPC_BIND_##Name,
224#include "clang/Basic/OpenMPKinds.def"
226};
227
229#define OPENMP_GRAINSIZE_MODIFIER(Name) OMPC_GRAINSIZE_##Name,
230#include "clang/Basic/OpenMPKinds.def"
232};
233
235#define OPENMP_DYN_GROUPPRIVATE_MODIFIER(Name) OMPC_DYN_GROUPPRIVATE_##Name,
236#include "clang/Basic/OpenMPKinds.def"
238};
239
242#define OPENMP_DYN_GROUPPRIVATE_FALLBACK_MODIFIER(Name) \
243 OMPC_DYN_GROUPPRIVATE_FALLBACK_##Name,
244#include "clang/Basic/OpenMPKinds.def"
246};
247
249#define OPENMP_NUMTASKS_MODIFIER(Name) OMPC_NUMTASKS_##Name,
250#include "clang/Basic/OpenMPKinds.def"
252};
253
255#define OPENMP_NUMTHREADS_MODIFIER(Name) OMPC_NUMTHREADS_##Name,
256#include "clang/Basic/OpenMPKinds.def"
258};
259
260/// OpenMP dependence types for 'doacross' clause.
262#define OPENMP_DOACROSS_MODIFIER(Name) OMPC_DOACROSS_##Name,
263#include "clang/Basic/OpenMPKinds.def"
265};
266
267/// OpenMP modifiers for 'allocate' clause.
269#define OPENMP_ALLOCATE_MODIFIER(Name) OMPC_ALLOCATE_##Name,
270#include "clang/Basic/OpenMPKinds.def"
272};
273
274/// OpenMP modifiers for 'threadset' clause.
276#define OPENMP_THREADSET_KIND(Name) OMPC_THREADSET_##Name,
277#include "clang/Basic/OpenMPKinds.def"
279};
280
281/// Number of allowed allocate-modifiers.
282static constexpr unsigned NumberOfOMPAllocateClauseModifiers =
284
285/// Contains 'interop' data for 'append_args' and 'init' clauses.
286class Expr;
294
296getOpenMPDefaultVariableCategory(StringRef Str, const LangOptions &LangOpts);
297const char *getOpenMPDefaultVariableCategoryName(unsigned VC);
298
299unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str,
300 const LangOptions &LangOpts);
301const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type);
302
303/// Checks if the specified directive is a directive with an associated
304/// loop construct.
305/// \param DKind Specified directive.
306/// \return true - the directive is a loop-associated directive like 'omp simd'
307/// or 'omp for' directive, otherwise - false.
309
310/// Checks if the specified directive is a worksharing directive.
311/// \param DKind Specified directive.
312/// \return true - the directive is a worksharing directive like 'omp for',
313/// otherwise - false.
315
316/// Checks if the specified directive is a taskloop directive.
317/// \param DKind Specified directive.
318/// \return true - the directive is a worksharing directive like 'omp taskloop',
319/// otherwise - false.
321
322/// Checks if the specified directive is a parallel-kind directive.
323/// \param DKind Specified directive.
324/// \return true - the directive is a parallel-like directive like 'omp
325/// parallel', otherwise - false.
327
328/// Checks if the specified directive is a target code offload directive.
329/// \param DKind Specified directive.
330/// \return true - the directive is a target code offload directive like
331/// 'omp target', 'omp target parallel', 'omp target xxx'
332/// otherwise - false.
334
335/// Checks if the specified directive is a target data offload directive.
336/// \param DKind Specified directive.
337/// \return true - the directive is a target data offload directive like
338/// 'omp target data', 'omp target update', 'omp target enter data',
339/// 'omp target exit data'
340/// otherwise - false.
342
343/// Checks if the specified directive is a map-entering target directive.
344/// \param DKind Specified directive.
345/// \return true - the directive is a map-entering target directive like
346/// 'omp target', 'omp target data', 'omp target enter data',
347/// 'omp target parallel', etc. (excludes 'omp target exit data', 'omp target
348/// update') otherwise - false.
350
351/// Checks if the specified composite/combined directive constitutes a teams
352/// directive in the outermost nest. For example
353/// 'omp teams distribute' or 'omp teams distribute parallel for'.
354/// \param DKind Specified directive.
355/// \return true - the directive has teams on the outermost nest, otherwise -
356/// false.
358
359/// Checks if the specified directive is a teams-kind directive. For example,
360/// 'omp teams distribute' or 'omp target teams'.
361/// \param DKind Specified directive.
362/// \return true - the directive is a teams-like directive, otherwise - false.
364
365/// Checks if the specified directive is a simd directive.
366/// \param DKind Specified directive.
367/// \return true - the directive is a simd directive like 'omp simd',
368/// otherwise - false.
370
371/// Checks if the specified directive is a distribute directive.
372/// \param DKind Specified directive.
373/// \return true - the directive is a distribute-directive like 'omp
374/// distribute',
375/// otherwise - false.
377
378/// Checks if the specified composite/combined directive constitutes a
379/// distribute directive in the outermost nest. For example,
380/// 'omp distribute parallel for' or 'omp distribute'.
381/// \param DKind Specified directive.
382/// \return true - the directive has distribute on the outermost nest.
383/// otherwise - false.
385
386/// Checks if the specified directive constitutes a 'loop' directive in the
387/// outermost nest. For example, 'omp teams loop' or 'omp loop'.
388/// \param DKind Specified directive.
389/// \return true - the directive has loop on the outermost nest.
390/// otherwise - false.
392
393/// Checks if the specified clause is one of private clauses like
394/// 'private', 'firstprivate', 'reduction' etc..
395/// \param Kind Clause kind.
396/// \return true - the clause is a private clause, otherwise - false.
398
399/// Checks if the specified clause is one of threadprivate clauses like
400/// 'threadprivate', 'copyin' or 'copyprivate'.
401/// \param Kind Clause kind.
402/// \return true - the clause is a threadprivate clause, otherwise - false.
404
405/// Checks if the specified directive kind is one of tasking directives - task,
406/// taskloop, taksloop simd, master taskloop, parallel master taskloop, master
407/// taskloop simd, or parallel master taskloop simd.
409
410/// Checks if the specified directive kind is one of the composite or combined
411/// directives that need loop bound sharing across loops outlined in nested
412/// functions
414
415/// Checks if the specified directive is a loop transformation directive that
416/// applies to a canonical loop nest.
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 that
423/// applies to a canonical loop sequence.
424/// \param DKind Specified directive.
425/// \return True iff the directive is a loop transformation.
427 OpenMPDirectiveKind DKind);
428
429/// Checks if the specified directive is a loop transformation directive.
430/// \param DKind Specified directive.
431/// \return True iff the directive is a loop transformation.
433
434/// Return the captured regions of an OpenMP directive.
437 OpenMPDirectiveKind DKind);
438
439/// Checks if the specified directive is a combined construct for which
440/// the first construct is a parallel construct.
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 specified target directive, combined or not, needs task based
447/// thread_limit
448/// \param DKind Specified directive.
449/// \return true - if the above condition is met for this directive
450/// otherwise - false.
452
453/// Checks if the parameter to the fail clause in "#pragma atomic compare fail"
454/// is restricted only to memory order clauses of "OMPC_acquire",
455/// "OMPC_relaxed" and "OMPC_seq_cst".
456bool checkFailClauseParameter(OpenMPClauseKind FailClauseParameter);
457
458/// Checks if the specified directive is considered as "executable". This
459/// combines the OpenMP categories of "executable" and "subsidiary", plus
460/// any other directives that should be treated as executable.
461/// \param DKind Specified directive.
462/// \return true - if the above condition is met for this directive
463/// otherwise - false.
465
466/// Checks if the specified directive is considered as "informational".
467/// \param DKind Specified directive.
468/// \return true if it is an informational directive, false otherwise.
470
471/// Checks if the specified directive can capture variables.
472/// \param DKind Specified directive.
473/// \return true - if the above condition is met for this directive
474/// otherwise - false.
476
477/// Checks if the specified directive is an order concurrent nestable
478/// directive that can be nested within region corresponding to construct
479/// on which order clause was specified with concurrent as ordering argument.
480/// \param DKind Specified directive.
481/// \param LangOpts Used for getting the OpenMP version.
482/// \return true - if the above condition is met for this directive
483/// otherwise - false.
485 const LangOptions &LangOpts);
486}
487
488template <>
489struct llvm::enum_iteration_traits<clang::OpenMPDefaultmapClauseKind> {
490 static constexpr bool is_iterable = true;
491};
492#endif
493
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.
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