123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #pragma once
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #endif
- //===- OMPConstants.h - OpenMP related constants and helpers ------ C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- /// \file
- ///
- /// This file defines constans and helpers used when dealing with OpenMP.
- ///
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_FRONTEND_OPENMP_OMPCONSTANTS_H
- #define LLVM_FRONTEND_OPENMP_OMPCONSTANTS_H
- #include "llvm/ADT/BitmaskEnum.h"
- #include "llvm/ADT/StringRef.h"
- #include "llvm/Frontend/OpenMP/OMP.h.inc"
- namespace llvm {
- namespace omp {
- LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
- /// IDs for all Internal Control Variables (ICVs).
- enum class InternalControlVar {
- #define ICV_DATA_ENV(Enum, ...) Enum,
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- };
- #define ICV_DATA_ENV(Enum, ...) \
- constexpr auto Enum = omp::InternalControlVar::Enum;
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- enum class ICVInitValue {
- #define ICV_INIT_VALUE(Enum, Name) Enum,
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- };
- #define ICV_INIT_VALUE(Enum, Name) \
- constexpr auto Enum = omp::ICVInitValue::Enum;
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- /// IDs for all omp runtime library (RTL) functions.
- enum class RuntimeFunction {
- #define OMP_RTL(Enum, ...) Enum,
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- };
- #define OMP_RTL(Enum, ...) constexpr auto Enum = omp::RuntimeFunction::Enum;
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- /// IDs for the different default kinds.
- enum class DefaultKind {
- #define OMP_DEFAULT_KIND(Enum, Str) Enum,
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- };
- #define OMP_DEFAULT_KIND(Enum, ...) \
- constexpr auto Enum = omp::DefaultKind::Enum;
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- /// IDs for all omp runtime library ident_t flag encodings (see
- /// their defintion in openmp/runtime/src/kmp.h).
- enum class IdentFlag {
- #define OMP_IDENT_FLAG(Enum, Str, Value) Enum = Value,
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- LLVM_MARK_AS_BITMASK_ENUM(0x7FFFFFFF)
- };
- #define OMP_IDENT_FLAG(Enum, ...) constexpr auto Enum = omp::IdentFlag::Enum;
- #include "llvm/Frontend/OpenMP/OMPKinds.def"
- /// \note This needs to be kept in sync with kmp.h enum sched_type.
- /// Todo: Update kmp.h to include this file, and remove the enums in kmp.h
- /// To complete this, more enum values will need to be moved here.
- enum class OMPScheduleType {
- StaticChunked = 33,
- Static = 34, // static unspecialized
- DistributeChunked = 91,
- Distribute = 92,
- DynamicChunked = 35,
- GuidedChunked = 36, // guided unspecialized
- Runtime = 37,
- Auto = 38, // auto
- StaticBalancedChunked = 45, // static with chunk adjustment (e.g., simd)
- GuidedSimd = 46, // guided with chunk adjustment
- RuntimeSimd = 47, // runtime with chunk adjustment
- ModifierMonotonic =
- (1 << 29), // Set if the monotonic schedule modifier was present
- ModifierNonmonotonic =
- (1 << 30), // Set if the nonmonotonic schedule modifier was present
- ModifierMask = ModifierMonotonic | ModifierNonmonotonic,
- LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue */ ModifierMask)
- };
- enum OMPTgtExecModeFlags : int8_t {
- OMP_TGT_EXEC_MODE_GENERIC = 1 << 0,
- OMP_TGT_EXEC_MODE_SPMD = 1 << 1,
- OMP_TGT_EXEC_MODE_GENERIC_SPMD =
- OMP_TGT_EXEC_MODE_GENERIC | OMP_TGT_EXEC_MODE_SPMD,
- LLVM_MARK_AS_BITMASK_ENUM(/* LargestValue */ OMP_TGT_EXEC_MODE_GENERIC_SPMD)
- };
- enum class AddressSpace : unsigned {
- Generic = 0,
- Global = 1,
- Shared = 3,
- Constant = 4,
- Local = 5,
- };
- /// \note This needs to be kept in sync with interop.h enum kmp_interop_type_t.:
- enum class OMPInteropType { Unknown, Target, TargetSync };
- } // end namespace omp
- } // end namespace llvm
- #endif // LLVM_FRONTEND_OPENMP_OMPCONSTANTS_H
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
|