//===- 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_OPENMP_CONSTANTS_H #define LLVM_OPENMP_CONSTANTS_H #include "llvm/ADT/BitmaskEnum.h" #include "llvm/Frontend/OpenMP/OMP.h.inc" namespace llvm { class Type; class Module; class ArrayType; class StructType; class PointerType; class StringRef; class FunctionType; 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_DATA_ENV(Enum, Name, EnvVar, Init) Init, #include "llvm/Frontend/OpenMP/OMPKinds.def" }; #define ICV_DATA_ENV(Enum, Name, EnvVar, Init) \ constexpr auto Init = omp::ICVInitValue::Init; #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 the different proc bind kinds. enum class ProcBindKind { #define OMP_PROC_BIND_KIND(Enum, Str, Value) Enum = Value, #include "llvm/Frontend/OpenMP/OMPKinds.def" }; #define OMP_PROC_BIND_KIND(Enum, ...) \ constexpr auto Enum = omp::ProcBindKind::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" } // end namespace omp } // end namespace llvm #endif // LLVM_OPENMP_CONSTANTS_H