diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h b/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h --- a/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h +++ b/llvm/include/llvm/Frontend/OpenMP/OMPConstants.h @@ -80,6 +80,11 @@ #define OMP_IDENT_FLAG(Enum, ...) constexpr auto Enum = omp::IdentFlag::Enum; #include "llvm/Frontend/OpenMP/OMPKinds.def" +enum class SchedType { +#define OMP_SCHED_TYPE(Enum, Str, Value) Enum = Value, +#include "llvm/Frontend/OpenMP/OMPKinds.def" +}; + /// Helper to describe assume clauses. struct AssumptionClauseMappingInfo { /// The identifier describing the (beginning of the) clause. diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def --- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def +++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def @@ -941,6 +941,52 @@ ///} +/// OMP Scheduler Type Kinds +/// +/// Source: +/// openmp/runtime/src/kmp.h - enum sched_type +///{ + +#ifndef OMP_SCHED_TYPE +#define OMP_SCHED_TYPE(Enum, Str, Value) +#endif + +#define __OMP_SCHED_TYPE(Name, Value) \ + OMP_SCHED_TYPE(OMP_SCHED_TYPE_##Name, #Name, Value) + +/// Lower bound for default (unordered) versions. +__OMP_SCHED_TYPE(SCH_LOWER, 32) +__OMP_SCHED_TYPE(SCH_STATIC_CHUNKED, 33) +__OMP_SCHED_TYPE(SCH_STATIC, 34) +__OMP_SCHED_TYPE(SCH_DYNAMIC_CHUNKED, 35) +__OMP_SCHED_TYPE(SCH_GUIDED_CHUNKED, 36) +__OMP_SCHED_TYPE(SCH_RUNTIME, 37) +__OMP_SCHED_TYPE(SCH_AUTO, 38) +/// static with chunk adjustment (e.g., simd) +__OMP_SCHED_TYPE(SCH_STATIC_BALANCED_CHUNKED, 45) +/// Lower bound for 'ordered' versions. +__OMP_SCHED_TYPE(ORD_LOWER, 64) +__OMP_SCHED_TYPE(ORD_STATIC_CHUNKED, 65) +__OMP_SCHED_TYPE(ORD_STATIC, 66) +__OMP_SCHED_TYPE(ORD_DYNAMIC_CHUNKED, 67) +__OMP_SCHED_TYPE(ORD_GUIDED_CHUNKED, 68) +__OMP_SCHED_TYPE(ORD_RUNTIME, 69) +__OMP_SCHED_TYPE(ORD_AUTO, 70) +__OMP_SCHED_TYPE(SCH_DEFAULT, 34) // = SCH_STATIC +/// dist_schedule types +__OMP_SCHED_TYPE(DIST_SCH_STATIC_CHUNKED, 91) +__OMP_SCHED_TYPE(DIST_SCH_STATIC, 92) +/// Support for OpenMP 4.5 monotonic and nonmonotonic schedule modifiers. +/// Set if the monotonic schedule modifier was present. +__OMP_SCHED_TYPE(SCH_MODIFIER_MONOTONIC, 1 << 29) +/// Set if the nonmonotonic schedule modifier was present. +__OMP_SCHED_TYPE(SCH_MODIFIER_NONMONOTONIC, 1 << 30) + +#undef __OMP_SCHED_TYPE +#undef OMP_SCHED_TYPE + +///} + /// Proc bind kinds /// ///{