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 ScheduleType { +#define OMP_SCHEDULE_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_SCHEDULE_TYPE +#define OMP_SCHEDULE_TYPE(Enum, Str, Value) +#endif + +#define __OMP_SCHEDULE_TYPE(Name, Value) \ + OMP_SCHEDULE_TYPE(OMP_SCHEDULE_TYPE_##Name, #Name, Value) + +/// Lower bound for default (unordered) versions. +__OMP_SCHEDULE_TYPE(SCHEDULE_LOWER, 32) +__OMP_SCHEDULE_TYPE(SCHEDULE_STATIC_CHUNKED, 33) +__OMP_SCHEDULE_TYPE(SCHEDULE_STATIC, 34) +__OMP_SCHEDULE_TYPE(SCHEDULE_DYNAMIC_CHUNKED, 35) +__OMP_SCHEDULE_TYPE(SCHEDULE_GUIDED_CHUNKED, 36) +__OMP_SCHEDULE_TYPE(SCHEDULE_RUNTIME, 37) +__OMP_SCHEDULE_TYPE(SCHEDULE_AUTO, 38) +/// static with chunk adjustment (e.g., simd) +__OMP_SCHEDULE_TYPE(SCHEDULE_STATIC_BALANCED_CHUNKED, 45) +/// Lower bound for 'ordered' versions. +__OMP_SCHEDULE_TYPE(ORDER_LOWER, 64) +__OMP_SCHEDULE_TYPE(ORDER_STATIC_CHUNKED, 65) +__OMP_SCHEDULE_TYPE(ORDER_STATIC, 66) +__OMP_SCHEDULE_TYPE(ORDER_DYNAMIC_CHUNKED, 67) +__OMP_SCHEDULE_TYPE(ORDER_GUIDED_CHUNKED, 68) +__OMP_SCHEDULE_TYPE(ORDER_RUNTIME, 69) +__OMP_SCHEDULE_TYPE(ORDER_AUTO, 70) +__OMP_SCHEDULE_TYPE(SCHEDULE_DEFAULT, OMP_SCHEDULE_TYPE_SCHEDULE_STATIC) +/// dist_schedule types +__OMP_SCHEDULE_TYPE(DIST_SCHEDULE_STATIC_CHUNKED, 91) +__OMP_SCHEDULE_TYPE(DIST_SCHEDULE_STATIC, 92) +/// Support for OpenMP 4.5 monotonic and nonmonotonic schedule modifiers. +/// Set if the monotonic schedule modifier was present. +__OMP_SCHEDULE_TYPE(SCHEDULE_MODIFIER_MONOTONIC, 1 << 29) +/// Set if the nonmonotonic schedule modifier was present. +__OMP_SCHEDULE_TYPE(SCHEDULE_MODIFIER_NONMONOTONIC, 1 << 30) + +#undef __OMP_SCHEDULE_TYPE +#undef OMP_SCHEDULE_TYPE + +///} + /// Proc bind kinds /// ///{