File indexing completed on 2026-05-10 08:43:55
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef LLVM_FRONTEND_OPENMP_OMPCONSTANTS_H
0015 #define LLVM_FRONTEND_OPENMP_OMPCONSTANTS_H
0016
0017 #include "llvm/ADT/BitmaskEnum.h"
0018 #include "llvm/ADT/StringRef.h"
0019 #include "llvm/Frontend/OpenMP/OMP.h"
0020
0021 namespace llvm {
0022 namespace omp {
0023 LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
0024
0025
0026 enum class InternalControlVar {
0027 #define ICV_DATA_ENV(Enum, ...) Enum,
0028 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0029 };
0030
0031 #define ICV_DATA_ENV(Enum, ...) \
0032 constexpr auto Enum = omp::InternalControlVar::Enum;
0033 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0034
0035 enum class ICVInitValue {
0036 #define ICV_INIT_VALUE(Enum, Name) Enum,
0037 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0038 };
0039
0040 #define ICV_INIT_VALUE(Enum, Name) \
0041 constexpr auto Enum = omp::ICVInitValue::Enum;
0042 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0043
0044
0045 enum class RuntimeFunction {
0046 #define OMP_RTL(Enum, ...) Enum,
0047 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0048 };
0049
0050 #define OMP_RTL(Enum, ...) constexpr auto Enum = omp::RuntimeFunction::Enum;
0051 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0052
0053
0054 enum class DefaultKind {
0055 #define OMP_DEFAULT_KIND(Enum, Str) Enum,
0056 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0057 };
0058
0059 #define OMP_DEFAULT_KIND(Enum, ...) \
0060 constexpr auto Enum = omp::DefaultKind::Enum;
0061 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0062
0063
0064
0065 enum class IdentFlag {
0066 #define OMP_IDENT_FLAG(Enum, Str, Value) Enum = Value,
0067 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0068 LLVM_MARK_AS_BITMASK_ENUM(0x7FFFFFFF)
0069 };
0070
0071 #define OMP_IDENT_FLAG(Enum, ...) constexpr auto Enum = omp::IdentFlag::Enum;
0072 #include "llvm/Frontend/OpenMP/OMPKinds.def"
0073
0074
0075 #define OMP_KERNEL_ARG_VERSION 3
0076
0077
0078 #define OMP_KERNEL_ARG_MIN_VERSION_WITH_DYN_PTR 3
0079
0080
0081
0082 enum class OMPScheduleType {
0083
0084 None = 0,
0085
0086
0087 BaseStaticChunked = 1,
0088 BaseStatic = 2,
0089 BaseDynamicChunked = 3,
0090 BaseGuidedChunked = 4,
0091 BaseRuntime = 5,
0092 BaseAuto = 6,
0093 BaseTrapezoidal = 7,
0094 BaseGreedy = 8,
0095 BaseBalanced = 9,
0096 BaseGuidedIterativeChunked = 10,
0097 BaseGuidedAnalyticalChunked = 11,
0098 BaseSteal = 12,
0099
0100
0101 BaseStaticBalancedChunked = 13,
0102 BaseGuidedSimd = 14,
0103 BaseRuntimeSimd = 15,
0104
0105
0106 BaseDistributeChunked = 27,
0107 BaseDistribute = 28,
0108
0109
0110 ModifierUnordered = (1 << 5),
0111 ModifierOrdered = (1 << 6),
0112 ModifierNomerge = (1 << 7),
0113 ModifierMonotonic = (1 << 29),
0114 ModifierNonmonotonic = (1 << 30),
0115
0116
0117 OrderingMask = ModifierUnordered | ModifierOrdered | ModifierNomerge,
0118 MonotonicityMask = ModifierMonotonic | ModifierNonmonotonic,
0119 ModifierMask = OrderingMask | MonotonicityMask,
0120
0121
0122 UnorderedStaticChunked = BaseStaticChunked | ModifierUnordered,
0123 UnorderedStatic = BaseStatic | ModifierUnordered,
0124 UnorderedDynamicChunked = BaseDynamicChunked | ModifierUnordered,
0125 UnorderedGuidedChunked = BaseGuidedChunked | ModifierUnordered,
0126 UnorderedRuntime = BaseRuntime | ModifierUnordered,
0127 UnorderedAuto = BaseAuto | ModifierUnordered,
0128 UnorderedTrapezoidal = BaseTrapezoidal | ModifierUnordered,
0129 UnorderedGreedy = BaseGreedy | ModifierUnordered,
0130 UnorderedBalanced = BaseBalanced | ModifierUnordered,
0131 UnorderedGuidedIterativeChunked =
0132 BaseGuidedIterativeChunked | ModifierUnordered,
0133 UnorderedGuidedAnalyticalChunked =
0134 BaseGuidedAnalyticalChunked | ModifierUnordered,
0135 UnorderedSteal = BaseSteal | ModifierUnordered,
0136
0137 UnorderedStaticBalancedChunked =
0138 BaseStaticBalancedChunked | ModifierUnordered,
0139 UnorderedGuidedSimd = BaseGuidedSimd | ModifierUnordered,
0140 UnorderedRuntimeSimd = BaseRuntimeSimd | ModifierUnordered,
0141
0142 OrderedStaticChunked = BaseStaticChunked | ModifierOrdered,
0143 OrderedStatic = BaseStatic | ModifierOrdered,
0144 OrderedDynamicChunked = BaseDynamicChunked | ModifierOrdered,
0145 OrderedGuidedChunked = BaseGuidedChunked | ModifierOrdered,
0146 OrderedRuntime = BaseRuntime | ModifierOrdered,
0147 OrderedAuto = BaseAuto | ModifierOrdered,
0148 OrderdTrapezoidal = BaseTrapezoidal | ModifierOrdered,
0149
0150 OrderedDistributeChunked = BaseDistributeChunked | ModifierOrdered,
0151 OrderedDistribute = BaseDistribute | ModifierOrdered,
0152
0153 NomergeUnorderedStaticChunked =
0154 BaseStaticChunked | ModifierUnordered | ModifierNomerge,
0155 NomergeUnorderedStatic =
0156 BaseStatic | ModifierUnordered | ModifierNomerge,
0157 NomergeUnorderedDynamicChunked =
0158 BaseDynamicChunked | ModifierUnordered | ModifierNomerge,
0159 NomergeUnorderedGuidedChunked =
0160 BaseGuidedChunked | ModifierUnordered | ModifierNomerge,
0161 NomergeUnorderedRuntime =
0162 BaseRuntime | ModifierUnordered | ModifierNomerge,
0163 NomergeUnorderedAuto = BaseAuto | ModifierUnordered | ModifierNomerge,
0164 NomergeUnorderedTrapezoidal =
0165 BaseTrapezoidal | ModifierUnordered | ModifierNomerge,
0166 NomergeUnorderedGreedy =
0167 BaseGreedy | ModifierUnordered | ModifierNomerge,
0168 NomergeUnorderedBalanced =
0169 BaseBalanced | ModifierUnordered | ModifierNomerge,
0170 NomergeUnorderedGuidedIterativeChunked =
0171 BaseGuidedIterativeChunked | ModifierUnordered | ModifierNomerge,
0172 NomergeUnorderedGuidedAnalyticalChunked =
0173 BaseGuidedAnalyticalChunked | ModifierUnordered | ModifierNomerge,
0174 NomergeUnorderedSteal =
0175 BaseSteal | ModifierUnordered | ModifierNomerge,
0176
0177 NomergeOrderedStaticChunked =
0178 BaseStaticChunked | ModifierOrdered | ModifierNomerge,
0179 NomergeOrderedStatic = BaseStatic | ModifierOrdered | ModifierNomerge,
0180 NomergeOrderedDynamicChunked =
0181 BaseDynamicChunked | ModifierOrdered | ModifierNomerge,
0182 NomergeOrderedGuidedChunked =
0183 BaseGuidedChunked | ModifierOrdered | ModifierNomerge,
0184 NomergeOrderedRuntime =
0185 BaseRuntime | ModifierOrdered | ModifierNomerge,
0186 NomergeOrderedAuto = BaseAuto | ModifierOrdered | ModifierNomerge,
0187 NomergeOrderedTrapezoidal =
0188 BaseTrapezoidal | ModifierOrdered | ModifierNomerge,
0189
0190 LLVM_MARK_AS_BITMASK_ENUM( ModifierMask)
0191 };
0192
0193
0194
0195 enum class OpenMPOffloadMappingFlags : uint64_t {
0196
0197 OMP_MAP_NONE = 0x0,
0198
0199 OMP_MAP_TO = 0x01,
0200
0201 OMP_MAP_FROM = 0x02,
0202
0203
0204 OMP_MAP_ALWAYS = 0x04,
0205
0206
0207 OMP_MAP_DELETE = 0x08,
0208
0209
0210 OMP_MAP_PTR_AND_OBJ = 0x10,
0211
0212
0213 OMP_MAP_TARGET_PARAM = 0x20,
0214
0215
0216
0217 OMP_MAP_RETURN_PARAM = 0x40,
0218
0219
0220 OMP_MAP_PRIVATE = 0x80,
0221
0222 OMP_MAP_LITERAL = 0x100,
0223
0224 OMP_MAP_IMPLICIT = 0x200,
0225
0226
0227 OMP_MAP_CLOSE = 0x400,
0228
0229
0230 OMP_MAP_PRESENT = 0x1000,
0231
0232
0233
0234
0235
0236
0237
0238 OMP_MAP_OMPX_HOLD = 0x2000,
0239
0240
0241
0242 OMP_MAP_NON_CONTIG = 0x100000000000,
0243
0244
0245 OMP_MAP_MEMBER_OF = 0xffff000000000000,
0246 LLVM_MARK_AS_BITMASK_ENUM( OMP_MAP_MEMBER_OF)
0247 };
0248
0249 enum OpenMPOffloadingReservedDeviceIDs {
0250
0251
0252 OMP_DEVICEID_UNDEF = -1
0253 };
0254
0255 enum class AddressSpace : unsigned {
0256 Generic = 0,
0257 Global = 1,
0258 Shared = 3,
0259 Constant = 4,
0260 Local = 5,
0261 };
0262
0263
0264 enum class OMPInteropType { Unknown, Target, TargetSync };
0265
0266
0267 enum class OMPAtomicCompareOp : unsigned { EQ, MIN, MAX };
0268
0269
0270 enum class RTLDependInfoFields { BaseAddr, Len, Flags };
0271
0272
0273 enum class RTLDependenceKindTy {
0274 DepUnknown = 0x0,
0275 DepIn = 0x01,
0276 DepInOut = 0x3,
0277 DepMutexInOutSet = 0x4,
0278 DepInOutSet = 0x8,
0279 DepOmpAllMem = 0x80,
0280 };
0281
0282
0283 enum class WorksharingLoopType {
0284
0285 ForStaticLoop,
0286
0287 DistributeStaticLoop,
0288
0289 DistributeForStaticLoop
0290 };
0291
0292 }
0293
0294 }
0295
0296 #include "OMPDeviceConstants.h"
0297
0298 #endif