![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/thread-self/root/usr/include/llvm-10/llvm/Frontend/OpenMP/ |
Upload File : |
//===--- OMPKinds.def - OpenMP directives, clauses, rt-calls -*- 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 the list of supported OpenMP directives, clauses, runtime /// calls, and other things that need to be listed in enums. /// //===----------------------------------------------------------------------===// /// OpenMP Directives and combined directives /// ///{ #ifndef OMP_DIRECTIVE #define OMP_DIRECTIVE(Enum, Str) #endif #define __OMP_DIRECTIVE_EXT(Name, Str) OMP_DIRECTIVE(OMPD_##Name, Str) #define __OMP_DIRECTIVE(Name) __OMP_DIRECTIVE_EXT(Name, #Name) __OMP_DIRECTIVE(threadprivate) __OMP_DIRECTIVE(parallel) __OMP_DIRECTIVE(task) __OMP_DIRECTIVE(simd) __OMP_DIRECTIVE(for) __OMP_DIRECTIVE(sections) __OMP_DIRECTIVE(section) __OMP_DIRECTIVE(single) __OMP_DIRECTIVE(master) __OMP_DIRECTIVE(critical) __OMP_DIRECTIVE(taskyield) __OMP_DIRECTIVE(barrier) __OMP_DIRECTIVE(taskwait) __OMP_DIRECTIVE(taskgroup) __OMP_DIRECTIVE(flush) __OMP_DIRECTIVE(ordered) __OMP_DIRECTIVE(atomic) __OMP_DIRECTIVE(target) __OMP_DIRECTIVE(teams) __OMP_DIRECTIVE(cancel) __OMP_DIRECTIVE(requires) __OMP_DIRECTIVE_EXT(target_data, "target data") __OMP_DIRECTIVE_EXT(target_enter_data, "target enter data") __OMP_DIRECTIVE_EXT(target_exit_data, "target exit data") __OMP_DIRECTIVE_EXT(target_parallel, "target parallel") __OMP_DIRECTIVE_EXT(target_parallel_for, "target parallel for") __OMP_DIRECTIVE_EXT(target_update, "target update") __OMP_DIRECTIVE_EXT(parallel_for, "parallel for") __OMP_DIRECTIVE_EXT(parallel_for_simd, "parallel for simd") __OMP_DIRECTIVE_EXT(parallel_master, "parallel master") __OMP_DIRECTIVE_EXT(parallel_sections, "parallel sections") __OMP_DIRECTIVE_EXT(for_simd, "for simd") __OMP_DIRECTIVE_EXT(cancellation_point, "cancellation point") __OMP_DIRECTIVE_EXT(declare_reduction, "declare reduction") __OMP_DIRECTIVE_EXT(declare_mapper, "declare mapper") __OMP_DIRECTIVE_EXT(declare_simd, "declare simd") __OMP_DIRECTIVE(taskloop) __OMP_DIRECTIVE_EXT(taskloop_simd, "taskloop simd") __OMP_DIRECTIVE(distribute) __OMP_DIRECTIVE_EXT(declare_target, "declare target") __OMP_DIRECTIVE_EXT(end_declare_target, "end declare target") __OMP_DIRECTIVE_EXT(distribute_parallel_for, "distribute parallel for") __OMP_DIRECTIVE_EXT(distribute_parallel_for_simd, "distribute parallel for simd") __OMP_DIRECTIVE_EXT(distribute_simd, "distribute simd") __OMP_DIRECTIVE_EXT(target_parallel_for_simd, "target parallel for simd") __OMP_DIRECTIVE_EXT(target_simd, "target simd") __OMP_DIRECTIVE_EXT(teams_distribute, "teams distribute") __OMP_DIRECTIVE_EXT(teams_distribute_simd, "teams distribute simd") __OMP_DIRECTIVE_EXT(teams_distribute_parallel_for_simd, "teams distribute parallel for simd") __OMP_DIRECTIVE_EXT(teams_distribute_parallel_for, "teams distribute parallel for") __OMP_DIRECTIVE_EXT(target_teams, "target teams") __OMP_DIRECTIVE_EXT(target_teams_distribute, "target teams distribute") __OMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for, "target teams distribute parallel for") __OMP_DIRECTIVE_EXT(target_teams_distribute_parallel_for_simd, "target teams distribute parallel for simd") __OMP_DIRECTIVE_EXT(target_teams_distribute_simd, "target teams distribute simd") __OMP_DIRECTIVE(allocate) __OMP_DIRECTIVE_EXT(declare_variant, "declare variant") __OMP_DIRECTIVE_EXT(master_taskloop, "master taskloop") __OMP_DIRECTIVE_EXT(parallel_master_taskloop, "parallel master taskloop") __OMP_DIRECTIVE_EXT(master_taskloop_simd, "master taskloop simd") __OMP_DIRECTIVE_EXT(parallel_master_taskloop_simd, "parallel master taskloop simd") // Has to be the last because Clang implicitly expects it to be. __OMP_DIRECTIVE(unknown) #undef __OMP_DIRECTIVE_EXT #undef __OMP_DIRECTIVE #undef OMP_DIRECTIVE ///} /// Types used in runtime structs or runtime functions /// ///{ #ifndef OMP_TYPE #define OMP_TYPE(VarName, InitValue) #endif #define __OMP_TYPE(VarName) OMP_TYPE(VarName, Type::get##VarName##Ty(Ctx)) __OMP_TYPE(Void) __OMP_TYPE(Int8) __OMP_TYPE(Int32) __OMP_TYPE(Int8Ptr) __OMP_TYPE(Int32Ptr) #undef __OMP_TYPE #undef OMP_TYPE ///} /// Struct and function types /// ///{ #ifndef OMP_STRUCT_TYPE #define OMP_STRUCT_TYPE(VarName, StructName, ...) #endif #define __OMP_STRUCT_TYPE(VarName, Name, ...) \ OMP_STRUCT_TYPE(VarName, "struct." #Name, __VA_ARGS__) __OMP_STRUCT_TYPE(Ident, ident_t, Int32, Int32, Int32, Int32, Int8Ptr) #undef __OMP_STRUCT_TYPE #undef OMP_STRUCT_TYPE #ifndef OMP_FUNCTION_TYPE #define OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) #endif #define __OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) \ OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, __VA_ARGS__) __OMP_FUNCTION_TYPE(ParallelTask, true, Void, Int32Ptr, Int32Ptr) #undef __OMP_FUNCTION_TYPE #undef OMP_FUNCTION_TYPE ///} /// Runtime library function (and their attributes) /// ///{ #ifndef OMP_RTL #define OMP_RTL(Enum, Str, IsVarArg, ReturnType, ...) #endif #define __OMP_RTL(Name, IsVarArg, ReturnType, ...) \ OMP_RTL(OMPRTL_##Name, #Name, IsVarArg, ReturnType, __VA_ARGS__) __OMP_RTL(__kmpc_barrier, false, Void, IdentPtr, Int32) __OMP_RTL(__kmpc_cancel, false, Int32, IdentPtr, Int32, Int32) __OMP_RTL(__kmpc_cancel_barrier, false, Int32, IdentPtr, Int32) __OMP_RTL(__kmpc_global_thread_num, false, Int32, IdentPtr) __OMP_RTL(__kmpc_fork_call, true, Void, IdentPtr, Int32, ParallelTaskPtr) __OMP_RTL(__kmpc_push_num_threads, false, Void, IdentPtr, Int32, /* Int */ Int32) __OMP_RTL(__kmpc_push_proc_bind, false, Void, IdentPtr, Int32, /* Int */ Int32) __OMP_RTL(__kmpc_serialized_parallel, false, Void, IdentPtr, Int32) __OMP_RTL(__kmpc_end_serialized_parallel, false, Void, IdentPtr, Int32) __OMP_RTL(omp_get_thread_num, false, Int32, ) #undef __OMP_RTL #undef OMP_RTL #define EnumAttr(Kind) Attribute::get(Ctx, Attribute::AttrKind::Kind) #define AttributeSet(...) \ AttributeSet::get(Ctx, ArrayRef<Attribute>({__VA_ARGS__})) #ifndef OMP_ATTRS_SET #define OMP_ATTRS_SET(VarName, AttrSet) #endif #define __OMP_ATTRS_SET(VarName, AttrSet) OMP_ATTRS_SET(VarName, AttrSet) __OMP_ATTRS_SET(GetterAttrs, OptimisticAttributes ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(ReadOnly), EnumAttr(NoSync), EnumAttr(NoFree)) : AttributeSet(EnumAttr(NoUnwind))) #undef __OMP_ATTRS_SET #undef OMP_ATTRS_SET #ifndef OMP_RTL_ATTRS #define OMP_RTL_ATTRS(Enum, FnAttrSet, RetAttrSet, ArgAttrSets) #endif #define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets) \ OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets) __OMP_RTL_ATTRS(__kmpc_fork_call, AttributeSet(EnumAttr(NoUnwind)), AttributeSet(), {}) __OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), {}) __OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), {}) #undef __OMP_RTL_ATTRS #undef OMP_RTL_ATTRS #undef AttributeSet #undef EnumAttr ///} /// KMP ident_t bit flags /// /// In accordance with the values in `openmp/runtime/src/kmp.h`. /// ///{ #ifndef OMP_IDENT_FLAG #define OMP_IDENT_FLAG(Enum, Str, Value) #endif #define __OMP_IDENT_FLAG(Name, Value) \ OMP_IDENT_FLAG(OMP_IDENT_FLAG_##Name, #Name, Value) __OMP_IDENT_FLAG(KMPC, 0x02) __OMP_IDENT_FLAG(BARRIER_EXPL, 0x20) __OMP_IDENT_FLAG(BARRIER_IMPL, 0x0040) __OMP_IDENT_FLAG(BARRIER_IMPL_MASK, 0x01C0) __OMP_IDENT_FLAG(BARRIER_IMPL_FOR, 0x0040) __OMP_IDENT_FLAG(BARRIER_IMPL_SECTIONS, 0x00C0) __OMP_IDENT_FLAG(BARRIER_IMPL_SINGLE, 0x0140) __OMP_IDENT_FLAG(BARRIER_IMPL_WORKSHARE, 0x01C0) #undef __OMP_IDENT_FLAG #undef OMP_IDENT_FLAG ///} /// KMP cancel kind /// ///{ #ifndef OMP_CANCEL_KIND #define OMP_CANCEL_KIND(Enum, Str, DirectiveEnum, Value) #endif #define __OMP_CANCEL_KIND(Name, Value) \ OMP_CANCEL_KIND(OMP_CANCEL_KIND_##Name, #Name, OMPD_##Name, Value) __OMP_CANCEL_KIND(parallel, 1) __OMP_CANCEL_KIND(for, 2) __OMP_CANCEL_KIND(sections, 3) __OMP_CANCEL_KIND(taskgroup, 4) #undef __OMP_CANCEL_KIND #undef OMP_CANCEL_KIND ///} /// Proc bind kinds /// ///{ #ifndef OMP_PROC_BIND_KIND #define OMP_PROC_BIND_KIND(Enum, Str, Value) #endif #define __OMP_PROC_BIND_KIND(Name, Value) \ OMP_PROC_BIND_KIND(OMP_PROC_BIND_##Name, #Name, Value) __OMP_PROC_BIND_KIND(master, 2) __OMP_PROC_BIND_KIND(close, 3) __OMP_PROC_BIND_KIND(spread, 4) __OMP_PROC_BIND_KIND(default, 6) __OMP_PROC_BIND_KIND(unknown, 7) #undef __OMP_PROC_BIND_KIND #undef OMP_PROC_BIND_KIND ///}