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.
187struct OpenMPScheduleTy final {
191 /// Request the fused distr_static_chunk + static_chunkone runtime schedule
192 /// in `for_static_init`. The outer `distribute_static_init` is skipped.
194};
195
196/// OpenMP modifiers for 'reduction' clause.
198#define OPENMP_REDUCTION_MODIFIER(Name) OMPC_REDUCTION_##Name,
199#include "clang/Basic/OpenMPKinds.def"
201};
202
203/// OpenMP 6.0 original sharing modifiers
205#define OPENMP_ORIGINAL_SHARING_MODIFIER(Name) OMPC_ORIGINAL_SHARING_##Name,
206#include "clang/Basic/OpenMPKinds.def"
208};
209
210/// OpenMP adjust-op kinds for 'adjust_args' clause.
212#define OPENMP_ADJUST_ARGS_KIND(Name) OMPC_ADJUST_ARGS_##Name,
213#include "clang/Basic/OpenMPKinds.def"
215};
216
217/// OpenMP 6.1 need_device modifier
219#define OPENMP_NEED_DEVICE_PTR_KIND(Name) OMPC_NEED_DEVICE_PTR_##Name,
220#include "clang/Basic/OpenMPKinds.def"
222};
223
224/// OpenMP 6.1 use_device_ptr fallback modifier
226#define OPENMP_USE_DEVICE_PTR_FALLBACK_MODIFIER(Name) \
227 OMPC_USE_DEVICE_PTR_FALLBACK_##Name,
228#include "clang/Basic/OpenMPKinds.def"
230};
231
232/// OpenMP bindings for the 'bind' clause.
234#define OPENMP_BIND_KIND(Name) OMPC_BIND_##Name,
235#include "clang/Basic/OpenMPKinds.def"
237};
238
240#define OPENMP_GRAINSIZE_MODIFIER(Name) OMPC_GRAINSIZE_##Name,
241#include "clang/Basic/OpenMPKinds.def"
243};
244
246#define OPENMP_DYN_GROUPPRIVATE_MODIFIER(Name) OMPC_DYN_GROUPPRIVATE_##Name,
247#include "clang/Basic/OpenMPKinds.def"
249};
250
253#define OPENMP_DYN_GROUPPRIVATE_FALLBACK_MODIFIER(Name) \
254 OMPC_DYN_GROUPPRIVATE_FALLBACK_##Name,
255#include "clang/Basic/OpenMPKinds.def"
257};
258
260#define OPENMP_NUMTASKS_MODIFIER(Name) OMPC_NUMTASKS_##Name,
261#include "clang/Basic/OpenMPKinds.def"
263};
264
266#define OPENMP_NUMTEAMS_MODIFIER(Name) OMPC_NUMTEAMS_##Name,
267#include "clang/Basic/OpenMPKinds.def"
269};
270
272#define OPENMP_NUMTHREADS_MODIFIER(Name) OMPC_NUMTHREADS_##Name,
273#include "clang/Basic/OpenMPKinds.def"
275};
276
277/// OpenMP dependence types for 'doacross' clause.
279#define OPENMP_DOACROSS_MODIFIER(Name) OMPC_DOACROSS_##Name,
280#include "clang/Basic/OpenMPKinds.def"
282};
283
284/// OpenMP modifiers for 'allocate' clause.
286#define OPENMP_ALLOCATE_MODIFIER(Name) OMPC_ALLOCATE_##Name,
287#include "clang/Basic/OpenMPKinds.def"
289};
290
291/// OpenMP modifiers for 'threadset' clause.
293#define OPENMP_THREADSET_KIND(Name) OMPC_THREADSET_##Name,
294#include "clang/Basic/OpenMPKinds.def"
296};
297
298/// Number of allowed allocate-modifiers.
299static constexpr unsigned NumberOfOMPAllocateClauseModifiers =
301
302/// Contains 'interop' data for 'append_args' and 'init' clauses.
303class Expr;
304/// One entry of a prefer_type list. Each pref-spec carries an optional fr()
305/// foreign-runtime-id expression and zero or more attr() ext-string-literal
306/// expressions. Fr is nullptr for attr-only specs.
321
323getOpenMPDefaultVariableCategory(StringRef Str, const LangOptions &LangOpts);
324const char *getOpenMPDefaultVariableCategoryName(unsigned VC);
325
326unsigned getOpenMPSimpleClauseType(OpenMPClauseKind Kind, llvm::StringRef Str,
327 const LangOptions &LangOpts);
328const char *getOpenMPSimpleClauseTypeName(OpenMPClauseKind Kind, unsigned Type);
329
330/// Checks if the specified directive is a directive with an associated
331/// loop construct.
332/// \param DKind Specified directive.
333/// \return true - the directive is a loop-associated directive like 'omp simd'
334/// or 'omp for' directive, otherwise - false.
336
337/// Checks if the specified directive is a worksharing directive.
338/// \param DKind Specified directive.
339/// \return true - the directive is a worksharing directive like 'omp for',
340/// otherwise - false.
342
343/// Checks if the specified directive is a taskloop directive.
344/// \param DKind Specified directive.
345/// \return true - the directive is a worksharing directive like 'omp taskloop',
346/// otherwise - false.
348
349/// Checks if the specified directive is a parallel-kind directive.
350/// \param DKind Specified directive.
351/// \return true - the directive is a parallel-like directive like 'omp
352/// parallel', otherwise - false.
354
355/// Checks if the specified directive is a target code offload directive.
356/// \param DKind Specified directive.
357/// \return true - the directive is a target code offload directive like
358/// 'omp target', 'omp target parallel', 'omp target xxx'
359/// otherwise - false.
361
362/// Checks if the specified directive is a target data offload directive.
363/// \param DKind Specified directive.
364/// \return true - the directive is a target data offload directive like
365/// 'omp target data', 'omp target update', 'omp target enter data',
366/// 'omp target exit data'
367/// otherwise - false.
369
370/// Checks if the specified directive is a map-entering target directive.
371/// \param DKind Specified directive.
372/// \return true - the directive is a map-entering target directive like
373/// 'omp target', 'omp target data', 'omp target enter data',
374/// 'omp target parallel', etc. (excludes 'omp target exit data', 'omp target
375/// update') otherwise - false.
377
378/// Checks if the specified composite/combined directive constitutes a teams
379/// directive in the outermost nest. For example
380/// 'omp teams distribute' or 'omp teams distribute parallel for'.
381/// \param DKind Specified directive.
382/// \return true - the directive has teams on the outermost nest, otherwise -
383/// false.
385
386/// Checks if the specified directive is a teams-kind directive. For example,
387/// 'omp teams distribute' or 'omp target teams'.
388/// \param DKind Specified directive.
389/// \return true - the directive is a teams-like directive, otherwise - false.
391
392/// Checks if the specified directive is a simd directive.
393/// \param DKind Specified directive.
394/// \return true - the directive is a simd directive like 'omp simd',
395/// otherwise - false.
397
398/// Checks if the specified directive is a distribute directive.
399/// \param DKind Specified directive.
400/// \return true - the directive is a distribute-directive like 'omp
401/// distribute',
402/// otherwise - false.
404
405/// Checks if the specified composite/combined directive constitutes a
406/// distribute directive in the outermost nest. For example,
407/// 'omp distribute parallel for' or 'omp distribute'.
408/// \param DKind Specified directive.
409/// \return true - the directive has distribute on the outermost nest.
410/// otherwise - false.
412
413/// Checks if the specified directive constitutes a 'loop' directive in the
414/// outermost nest. For example, 'omp teams loop' or 'omp loop'.
415/// \param DKind Specified directive.
416/// \return true - the directive has loop on the outermost nest.
417/// otherwise - false.
419
420/// Checks if the specified clause is one of private clauses like
421/// 'private', 'firstprivate', 'reduction' etc..
422/// \param Kind Clause kind.
423/// \return true - the clause is a private clause, otherwise - false.
425
426/// Checks if the specified clause is one of threadprivate clauses like
427/// 'threadprivate', 'copyin' or 'copyprivate'.
428/// \param Kind Clause kind.
429/// \return true - the clause is a threadprivate clause, otherwise - false.
431
432/// Checks if the specified directive kind is one of tasking directives - task,
433/// taskloop, taksloop simd, master taskloop, parallel master taskloop, master
434/// taskloop simd, or parallel master taskloop simd.
436
437/// Checks if the specified directive kind is one of the composite or combined
438/// directives that need loop bound sharing across loops outlined in nested
439/// functions
441
442/// Checks if the specified directive is a loop transformation directive that
443/// applies to a canonical loop nest.
444/// \param DKind Specified directive.
445/// \return True iff the directive is a loop transformation.
447 OpenMPDirectiveKind DKind);
448
449/// Checks if the specified directive is a loop transformation directive that
450/// applies to a canonical loop sequence.
451/// \param DKind Specified directive.
452/// \return True iff the directive is a loop transformation.
454 OpenMPDirectiveKind DKind);
455
456/// Checks if the specified directive is a loop transformation directive.
457/// \param DKind Specified directive.
458/// \return True iff the directive is a loop transformation.
460
461/// Return the captured regions of an OpenMP directive.
464 OpenMPDirectiveKind DKind);
465
466/// Checks if the specified directive is a combined construct for which
467/// the first construct is a parallel construct.
468/// \param DKind Specified directive.
469/// \return true - if the above condition is met for this directive
470/// otherwise - false.
472
473/// Checks if the specified target directive, combined or not, needs task based
474/// thread_limit
475/// \param DKind Specified directive.
476/// \return true - if the above condition is met for this directive
477/// otherwise - false.
479
480/// Checks if the parameter to the fail clause in "#pragma atomic compare fail"
481/// is restricted only to memory order clauses of "OMPC_acquire",
482/// "OMPC_relaxed" and "OMPC_seq_cst".
483bool checkFailClauseParameter(OpenMPClauseKind FailClauseParameter);
484
485/// Checks if the specified directive is considered as "executable". This
486/// combines the OpenMP categories of "executable" and "subsidiary", plus
487/// any other directives that should be treated as executable.
488/// \param DKind Specified directive.
489/// \return true - if the above condition is met for this directive
490/// otherwise - false.
492
493/// Checks if the specified directive is considered as "informational".
494/// \param DKind Specified directive.
495/// \return true if it is an informational directive, false otherwise.
497
498/// Checks if the specified directive can capture variables.
499/// \param DKind Specified directive.
500/// \return true - if the above condition is met for this directive
501/// otherwise - false.
503
504/// Checks if the specified directive is an order concurrent nestable
505/// directive that can be nested within region corresponding to construct
506/// on which order clause was specified with concurrent as ordering argument.
507/// \param DKind Specified directive.
508/// \param LangOpts Used for getting the OpenMP version.
509/// \return true - if the above condition is met for this directive
510/// otherwise - false.
512 const LangOptions &LangOpts);
513}
514
515template <>
516struct llvm::enum_iteration_traits<clang::OpenMPDefaultmapClauseKind> {
517 static constexpr bool is_iterable = true;
518};
519#endif
520
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:1875
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)
OpenMPNumTeamsClauseModifier
@ OMPC_NUMTEAMS_unknown
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
llvm::SmallVector< OMPInteropPref, 4 > Prefs
OMPInteropInfo(bool IsTarget=false, bool IsTargetSync=false)
OMPInteropPref(Expr *Fr, llvm::SmallVector< Expr *, 2 > Attrs)
llvm::SmallVector< Expr *, 2 > Attrs
Scheduling data for loop-based OpenMP directives.
bool UseFusedDistChunkSchedule
Request the fused distr_static_chunk + static_chunkone runtime schedule in for_static_init.
OpenMPScheduleClauseModifier M2
OpenMPScheduleClauseModifier M1
OpenMPScheduleClauseKind Schedule