1//===--- OMPKinds.def - OpenMP directives, clauses, rt-calls -*- C++ -*-===// 2// 3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4// See https://llvm.org/LICENSE.txt for license information. 5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6// 7//===----------------------------------------------------------------------===// 8/// \file 9/// 10/// This file defines the list of supported OpenMP runtime 11/// calls, and other things that need to be listed in enums. 12/// 13/// This file is under transition to OMP.td with TableGen code generation. 14/// 15//===----------------------------------------------------------------------===// 16 17/// OpenMP Directives, combined directives and Clauses 18/// - Moved to OMP.td 19 20/// Types used in runtime structs or runtime functions 21/// 22///{ 23 24#ifndef OMP_TYPE 25#define OMP_TYPE(VarName, InitValue) 26#endif 27 28#define __OMP_TYPE(VarName) OMP_TYPE(VarName, Type::get##VarName##Ty(Ctx)) 29 30__OMP_TYPE(Void) 31__OMP_TYPE(Int1) 32__OMP_TYPE(Int8) 33__OMP_TYPE(Int16) 34__OMP_TYPE(Int32) 35__OMP_TYPE(Int64) 36__OMP_TYPE(Int8Ptr) 37__OMP_TYPE(Int16Ptr) 38__OMP_TYPE(Int32Ptr) 39__OMP_TYPE(Int64Ptr) 40__OMP_TYPE(Double) 41 42OMP_TYPE(SizeTy, M.getDataLayout().getIntPtrType(Ctx)) 43 44#define __OMP_PTR_TYPE(NAME, BASE) OMP_TYPE(NAME, BASE->getPointerTo()) 45 46__OMP_PTR_TYPE(VoidPtr, Int8) 47__OMP_PTR_TYPE(VoidPtrPtr, VoidPtr) 48__OMP_PTR_TYPE(VoidPtrPtrPtr, VoidPtrPtr) 49 50__OMP_PTR_TYPE(Int8PtrPtr, Int8Ptr) 51__OMP_PTR_TYPE(Int8PtrPtrPtr, Int8PtrPtr) 52 53#undef __OMP_PTR_TYPE 54 55#undef __OMP_TYPE 56#undef OMP_TYPE 57 58///} 59 60/// array types 61/// 62///{ 63 64#ifndef OMP_ARRAY_TYPE 65#define OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) 66#endif 67 68#define __OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) \ 69 OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) 70 71__OMP_ARRAY_TYPE(KmpCriticalName, Int32, 8) 72 73#undef __OMP_ARRAY_TYPE 74#undef OMP_ARRAY_TYPE 75 76///} 77 78/// Struct and function types 79/// 80///{ 81 82#ifndef OMP_STRUCT_TYPE 83#define OMP_STRUCT_TYPE(VarName, StructName, ...) 84#endif 85 86#define __OMP_STRUCT_TYPE(VarName, Name, ...) \ 87 OMP_STRUCT_TYPE(VarName, "struct." #Name, __VA_ARGS__) 88 89__OMP_STRUCT_TYPE(Ident, ident_t, Int32, Int32, Int32, Int32, Int8Ptr) 90__OMP_STRUCT_TYPE(OffloadEntry, __tgt_offload_entry, Int8Ptr, Int8Ptr, SizeTy, 91 Int32, Int32) 92__OMP_STRUCT_TYPE(KernelArgs, __tgt_kernel_arguments, Int32, Int32, VoidPtrPtr, 93 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, Int64) 94__OMP_STRUCT_TYPE(AsyncInfo, __tgt_async_info, Int8Ptr) 95 96#undef __OMP_STRUCT_TYPE 97#undef OMP_STRUCT_TYPE 98 99#ifndef OMP_FUNCTION_TYPE 100#define OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) 101#endif 102 103#define __OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) \ 104 OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, __VA_ARGS__) 105 106__OMP_FUNCTION_TYPE(ParallelTask, true, Void, Int32Ptr, Int32Ptr) 107__OMP_FUNCTION_TYPE(ReduceFunction, false, Void, VoidPtr, VoidPtr) 108__OMP_FUNCTION_TYPE(CopyFunction, false, Void, VoidPtr, VoidPtr) 109__OMP_FUNCTION_TYPE(KmpcCtor, false, VoidPtr, VoidPtr) 110__OMP_FUNCTION_TYPE(KmpcDtor, false, Void, VoidPtr) 111__OMP_FUNCTION_TYPE(KmpcCopyCtor, false, VoidPtr, VoidPtr, VoidPtr) 112__OMP_FUNCTION_TYPE(TaskRoutineEntry, false, Int32, Int32, 113 /* kmp_task_t */ VoidPtr) 114__OMP_FUNCTION_TYPE(ShuffleReduce, false, Void, VoidPtr, Int16, Int16, Int16) 115__OMP_FUNCTION_TYPE(InterWarpCopy, false, Void, VoidPtr, Int32) 116__OMP_FUNCTION_TYPE(GlobalList, false, Void, VoidPtr, Int32, VoidPtr) 117 118#undef __OMP_FUNCTION_TYPE 119#undef OMP_FUNCTION_TYPE 120 121///} 122 123/// Internal Control Variables information 124/// 125///{ 126 127#ifndef ICV_INIT_VALUE 128#define ICV_INIT_VALUE(Enum, Name) 129#endif 130 131#define __ICV_INIT_VALUE(Name) ICV_INIT_VALUE(ICV_##Name, #Name) 132 133__ICV_INIT_VALUE(ZERO) 134__ICV_INIT_VALUE(FALSE) 135__ICV_INIT_VALUE(IMPLEMENTATION_DEFINED) 136__ICV_INIT_VALUE(LAST) 137 138#undef __ICV_INIT_VALUE 139#undef ICV_INIT_VALUE 140 141#ifndef ICV_DATA_ENV 142#define ICV_DATA_ENV(Enum, Name, EnvVarName, Init) 143#endif 144 145#define __ICV_DATA_ENV(Name, EnvVarName, Init) \ 146 ICV_DATA_ENV(ICV_##Name, #Name, #EnvVarName, Init) 147 148__ICV_DATA_ENV(nthreads, OMP_NUM_THREADS, ICV_IMPLEMENTATION_DEFINED) 149__ICV_DATA_ENV(active_levels, NONE, ICV_ZERO) 150__ICV_DATA_ENV(cancel, OMP_CANCELLATION, ICV_FALSE) 151__ICV_DATA_ENV(proc_bind, OMP_PROC_BIND, ICV_IMPLEMENTATION_DEFINED) 152__ICV_DATA_ENV(__last, last, ICV_LAST) 153 154#undef __ICV_DATA_ENV 155#undef ICV_DATA_ENV 156 157#ifndef ICV_RT_SET 158#define ICV_RT_SET(Name, RTL) 159#endif 160 161#define __ICV_RT_SET(Name, RTL) ICV_RT_SET(ICV_##Name, OMPRTL_##RTL) 162 163__ICV_RT_SET(nthreads, omp_set_num_threads) 164 165#undef __ICV_RT_SET 166#undef ICV_RT_SET 167 168#ifndef ICV_RT_GET 169#define ICV_RT_GET(Name, RTL) 170#endif 171 172#define __ICV_RT_GET(Name, RTL) ICV_RT_GET(ICV_##Name, OMPRTL_##RTL) 173 174__ICV_RT_GET(nthreads, omp_get_max_threads) 175__ICV_RT_GET(active_levels, omp_get_active_level) 176__ICV_RT_GET(cancel, omp_get_cancellation) 177__ICV_RT_GET(proc_bind, omp_get_proc_bind) 178 179#undef __ICV_RT_GET 180#undef ICV_RT_GET 181 182///} 183 184/// Runtime library function (and their attributes) 185/// 186///{ 187 188#ifndef OMP_RTL 189#define OMP_RTL(Enum, Str, IsVarArg, ReturnType, ...) 190#endif 191 192#define __OMP_RTL(Name, IsVarArg, ReturnType, ...) \ 193 OMP_RTL(OMPRTL_##Name, #Name, IsVarArg, ReturnType, __VA_ARGS__) 194 195 196 197__OMP_RTL(__kmpc_barrier, false, Void, IdentPtr, Int32) 198__OMP_RTL(__kmpc_cancel, false, Int32, IdentPtr, Int32, Int32) 199__OMP_RTL(__kmpc_cancel_barrier, false, Int32, IdentPtr, Int32) 200__OMP_RTL(__kmpc_flush, false, Void, IdentPtr) 201__OMP_RTL(__kmpc_global_thread_num, false, Int32, IdentPtr) 202__OMP_RTL(__kmpc_get_hardware_thread_id_in_block, false, Int32, ) 203__OMP_RTL(__kmpc_fork_call, true, Void, IdentPtr, Int32, ParallelTaskPtr) 204__OMP_RTL(__kmpc_omp_taskwait, false, Int32, IdentPtr, Int32) 205__OMP_RTL(__kmpc_omp_taskyield, false, Int32, IdentPtr, Int32, /* Int */ Int32) 206__OMP_RTL(__kmpc_push_num_threads, false, Void, IdentPtr, Int32, 207 /* Int */ Int32) 208__OMP_RTL(__kmpc_push_proc_bind, false, Void, IdentPtr, Int32, /* Int */ Int32) 209__OMP_RTL(__kmpc_omp_reg_task_with_affinity, false, Int32, IdentPtr, Int32, 210 /* kmp_task_t */ VoidPtr, Int32, 211 /* kmp_task_affinity_info_t */ VoidPtr) 212 213__OMP_RTL(__kmpc_get_hardware_num_blocks, false, Int32, ) 214__OMP_RTL(__kmpc_get_hardware_num_threads_in_block, false, Int32, ) 215__OMP_RTL(__kmpc_get_warp_size, false, Int32, ) 216 217__OMP_RTL(omp_get_thread_num, false, Int32, ) 218__OMP_RTL(omp_get_num_threads, false, Int32, ) 219__OMP_RTL(omp_get_max_threads, false, Int32, ) 220__OMP_RTL(omp_in_parallel, false, Int32, ) 221__OMP_RTL(omp_get_dynamic, false, Int32, ) 222__OMP_RTL(omp_get_cancellation, false, Int32, ) 223__OMP_RTL(omp_get_nested, false, Int32, ) 224__OMP_RTL(omp_get_schedule, false, Void, Int32Ptr, Int32Ptr) 225__OMP_RTL(omp_get_thread_limit, false, Int32, ) 226__OMP_RTL(omp_get_supported_active_levels, false, Int32, ) 227__OMP_RTL(omp_get_max_active_levels, false, Int32, ) 228__OMP_RTL(omp_get_level, false, Int32, ) 229__OMP_RTL(omp_get_ancestor_thread_num, false, Int32, Int32) 230__OMP_RTL(omp_get_team_size, false, Int32, Int32) 231__OMP_RTL(omp_get_active_level, false, Int32, ) 232__OMP_RTL(omp_in_final, false, Int32, ) 233__OMP_RTL(omp_get_proc_bind, false, Int32, ) 234__OMP_RTL(omp_get_num_places, false, Int32, ) 235__OMP_RTL(omp_get_num_procs, false, Int32, ) 236__OMP_RTL(omp_get_place_proc_ids, false, Void, Int32, Int32Ptr) 237__OMP_RTL(omp_get_place_num, false, Int32, ) 238__OMP_RTL(omp_get_partition_num_places, false, Int32, ) 239__OMP_RTL(omp_get_partition_place_nums, false, Void, Int32Ptr) 240__OMP_RTL(omp_get_wtime, false, Double,) 241 242__OMP_RTL(omp_set_num_threads, false, Void, Int32) 243__OMP_RTL(omp_set_dynamic, false, Void, Int32) 244__OMP_RTL(omp_set_nested, false, Void, Int32) 245__OMP_RTL(omp_set_schedule, false, Void, Int32, Int32) 246__OMP_RTL(omp_set_max_active_levels, false, Void, Int32) 247 248__OMP_RTL(__kmpc_master, false, Int32, IdentPtr, Int32) 249__OMP_RTL(__kmpc_end_master, false, Void, IdentPtr, Int32) 250__OMP_RTL(__kmpc_masked, false, Int32, IdentPtr, Int32, Int32) 251__OMP_RTL(__kmpc_end_masked, false, Void, IdentPtr, Int32) 252__OMP_RTL(__kmpc_critical, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) 253__OMP_RTL(__kmpc_critical_with_hint, false, Void, IdentPtr, Int32, 254 KmpCriticalNamePtrTy, Int32) 255__OMP_RTL(__kmpc_end_critical, false, Void, IdentPtr, Int32, 256 KmpCriticalNamePtrTy) 257 258__OMP_RTL(__kmpc_begin, false, Void, IdentPtr, Int32) 259__OMP_RTL(__kmpc_end, false, Void, IdentPtr) 260 261__OMP_RTL(__kmpc_reduce, false, Int32, IdentPtr, Int32, Int32, SizeTy, VoidPtr, 262 ReduceFunctionPtr, KmpCriticalNamePtrTy) 263__OMP_RTL(__kmpc_reduce_nowait, false, Int32, IdentPtr, Int32, Int32, SizeTy, 264 VoidPtr, ReduceFunctionPtr, KmpCriticalNamePtrTy) 265__OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) 266__OMP_RTL(__kmpc_end_reduce_nowait, false, Void, IdentPtr, Int32, 267 KmpCriticalNamePtrTy) 268 269__OMP_RTL(__kmpc_ordered, false, Void, IdentPtr, Int32) 270__OMP_RTL(__kmpc_end_ordered, false, Void, IdentPtr, Int32) 271 272__OMP_RTL(__kmpc_for_static_init_4, false, Void, IdentPtr, Int32, Int32, 273 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 274__OMP_RTL(__kmpc_for_static_init_4u, false, Void, IdentPtr, Int32, Int32, 275 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 276__OMP_RTL(__kmpc_for_static_init_8, false, Void, IdentPtr, Int32, Int32, 277 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 278__OMP_RTL(__kmpc_for_static_init_8u, false, Void, IdentPtr, Int32, Int32, 279 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 280__OMP_RTL(__kmpc_for_static_fini, false, Void, IdentPtr, Int32) 281__OMP_RTL(__kmpc_distribute_static_init_4, false, Void, IdentPtr, Int32, Int32, 282 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 283__OMP_RTL(__kmpc_distribute_static_init_4u, false, Void, IdentPtr, Int32, Int32, 284 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 285__OMP_RTL(__kmpc_distribute_static_init_8, false, Void, IdentPtr, Int32, Int32, 286 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 287__OMP_RTL(__kmpc_distribute_static_init_8u, false, Void, IdentPtr, Int32, Int32, 288 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 289__OMP_RTL(__kmpc_distribute_static_fini, false, Void, IdentPtr, Int32) 290__OMP_RTL(__kmpc_dist_dispatch_init_4, false, Void, IdentPtr, Int32, Int32, 291 Int32Ptr, Int32, Int32, Int32, Int32) 292__OMP_RTL(__kmpc_dist_dispatch_init_4u, false, Void, IdentPtr, Int32, Int32, 293 Int32Ptr, Int32, Int32, Int32, Int32) 294__OMP_RTL(__kmpc_dist_dispatch_init_8, false, Void, IdentPtr, Int32, Int32, 295 Int32Ptr, Int64, Int64, Int64, Int64) 296__OMP_RTL(__kmpc_dist_dispatch_init_8u, false, Void, IdentPtr, Int32, Int32, 297 Int32Ptr, Int64, Int64, Int64, Int64) 298__OMP_RTL(__kmpc_dispatch_init_4, false, Void, IdentPtr, Int32, Int32, Int32, 299 Int32, Int32, Int32) 300__OMP_RTL(__kmpc_dispatch_init_4u, false, Void, IdentPtr, Int32, Int32, Int32, 301 Int32, Int32, Int32) 302__OMP_RTL(__kmpc_dispatch_init_8, false, Void, IdentPtr, Int32, Int32, Int64, 303 Int64, Int64, Int64) 304__OMP_RTL(__kmpc_dispatch_init_8u, false, Void, IdentPtr, Int32, Int32, Int64, 305 Int64, Int64, Int64) 306__OMP_RTL(__kmpc_dispatch_next_4, false, Int32, IdentPtr, Int32, Int32Ptr, 307 Int32Ptr, Int32Ptr, Int32Ptr) 308__OMP_RTL(__kmpc_dispatch_next_4u, false, Int32, IdentPtr, Int32, Int32Ptr, 309 Int32Ptr, Int32Ptr, Int32Ptr) 310__OMP_RTL(__kmpc_dispatch_next_8, false, Int32, IdentPtr, Int32, Int32Ptr, 311 Int64Ptr, Int64Ptr, Int64Ptr) 312__OMP_RTL(__kmpc_dispatch_next_8u, false, Int32, IdentPtr, Int32, Int32Ptr, 313 Int64Ptr, Int64Ptr, Int64Ptr) 314__OMP_RTL(__kmpc_dispatch_fini_4, false, Void, IdentPtr, Int32) 315__OMP_RTL(__kmpc_dispatch_fini_4u, false, Void, IdentPtr, Int32) 316__OMP_RTL(__kmpc_dispatch_fini_8, false, Void, IdentPtr, Int32) 317__OMP_RTL(__kmpc_dispatch_fini_8u, false, Void, IdentPtr, Int32) 318__OMP_RTL(__kmpc_team_static_init_4, false, Void, IdentPtr, Int32, Int32Ptr, 319 Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 320__OMP_RTL(__kmpc_team_static_init_4u, false, Void, IdentPtr, Int32, Int32Ptr, 321 Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 322__OMP_RTL(__kmpc_team_static_init_8, false, Void, IdentPtr, Int32, Int32Ptr, 323 Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 324__OMP_RTL(__kmpc_team_static_init_8u, false, Void, IdentPtr, Int32, Int32Ptr, 325 Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 326__OMP_RTL(__kmpc_dist_for_static_init_4, false, Void, IdentPtr, Int32, Int32, 327 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 328__OMP_RTL(__kmpc_dist_for_static_init_4u, false, Void, IdentPtr, Int32, Int32, 329 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 330__OMP_RTL(__kmpc_dist_for_static_init_8, false, Void, IdentPtr, Int32, Int32, 331 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 332__OMP_RTL(__kmpc_dist_for_static_init_8u, false, Void, IdentPtr, Int32, Int32, 333 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 334 335__OMP_RTL(__kmpc_single, false, Int32, IdentPtr, Int32) 336__OMP_RTL(__kmpc_end_single, false, Void, IdentPtr, Int32) 337 338__OMP_RTL(__kmpc_omp_task_alloc, false, /* kmp_task_t */ VoidPtr, IdentPtr, 339 Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr) 340__OMP_RTL(__kmpc_omp_task, false, Int32, IdentPtr, Int32, 341 /* kmp_task_t */ VoidPtr) 342__OMP_RTL(__kmpc_end_taskgroup, false, Void, IdentPtr, Int32) 343__OMP_RTL(__kmpc_taskgroup, false, Void, IdentPtr, Int32) 344__OMP_RTL(__kmpc_omp_task_begin_if0, false, Void, IdentPtr, Int32, 345 /* kmp_task_t */ VoidPtr) 346__OMP_RTL(__kmpc_omp_task_complete_if0, false, Void, IdentPtr, Int32, 347 /* kmp_tasK_t */ VoidPtr) 348__OMP_RTL(__kmpc_omp_task_with_deps, false, Int32, IdentPtr, Int32, 349 /* kmp_task_t */ VoidPtr, Int32, 350 /* kmp_depend_info_t */ VoidPtr, Int32, 351 /* kmp_depend_info_t */ VoidPtr) 352__OMP_RTL(__kmpc_taskloop, false, Void, IdentPtr, /* Int */ Int32, VoidPtr, 353 /* Int */ Int32, Int64Ptr, Int64Ptr, Int64, /* Int */ Int32, 354 /* Int */ Int32, Int64, VoidPtr) 355__OMP_RTL(__kmpc_omp_target_task_alloc, false, /* kmp_task_t */ VoidPtr, 356 IdentPtr, Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr, Int64) 357__OMP_RTL(__kmpc_taskred_modifier_init, false, /* kmp_taskgroup */ VoidPtr, 358 IdentPtr, /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr) 359__OMP_RTL(__kmpc_taskred_init, false, /* kmp_taskgroup */ VoidPtr, 360 /* Int */ Int32, /* Int */ Int32, VoidPtr) 361__OMP_RTL(__kmpc_task_reduction_modifier_fini, false, Void, IdentPtr, 362 /* Int */ Int32, /* Int */ Int32) 363__OMP_RTL(__kmpc_task_reduction_get_th_data, false, VoidPtr, Int32, VoidPtr, 364 VoidPtr) 365__OMP_RTL(__kmpc_task_reduction_init, false, VoidPtr, Int32, Int32, VoidPtr) 366__OMP_RTL(__kmpc_task_reduction_modifier_init, false, VoidPtr, VoidPtr, Int32, 367 Int32, Int32, VoidPtr) 368__OMP_RTL(__kmpc_proxy_task_completed_ooo, false, Void, VoidPtr) 369 370__OMP_RTL(__kmpc_omp_wait_deps, false, Void, IdentPtr, Int32, Int32, 371 /* kmp_depend_info_t */ VoidPtr, Int32, VoidPtr) 372__OMP_RTL(__kmpc_cancellationpoint, false, Int32, IdentPtr, Int32, Int32) 373 374__OMP_RTL(__kmpc_fork_teams, true, Void, IdentPtr, Int32, ParallelTaskPtr) 375__OMP_RTL(__kmpc_push_num_teams, false, Void, IdentPtr, Int32, Int32, Int32) 376 377__OMP_RTL(__kmpc_copyprivate, false, Void, IdentPtr, Int32, SizeTy, VoidPtr, 378 CopyFunctionPtr, Int32) 379__OMP_RTL(__kmpc_threadprivate_cached, false, VoidPtr, IdentPtr, Int32, VoidPtr, 380 SizeTy, VoidPtrPtrPtr) 381__OMP_RTL(__kmpc_threadprivate_register, false, Void, IdentPtr, VoidPtr, 382 KmpcCtorPtr, KmpcCopyCtorPtr, KmpcDtorPtr) 383 384__OMP_RTL(__kmpc_doacross_init, false, Void, IdentPtr, Int32, Int32, 385 /* kmp_dim */ VoidPtr) 386__OMP_RTL(__kmpc_doacross_post, false, Void, IdentPtr, Int32, Int64Ptr) 387__OMP_RTL(__kmpc_doacross_wait, false, Void, IdentPtr, Int32, Int64Ptr) 388__OMP_RTL(__kmpc_doacross_fini, false, Void, IdentPtr, Int32) 389 390__OMP_RTL(__kmpc_alloc, false, VoidPtr, /* Int */ Int32, SizeTy, VoidPtr) 391__OMP_RTL(__kmpc_aligned_alloc, false, VoidPtr, /* Int */ Int32, SizeTy, SizeTy, 392 VoidPtr) 393__OMP_RTL(__kmpc_free, false, Void, /* Int */ Int32, VoidPtr, VoidPtr) 394 395__OMP_RTL(__tgt_interop_init, false, Void, IdentPtr, Int32, VoidPtrPtr, Int64, 396 Int32, Int32, VoidPtr, Int32) 397__OMP_RTL(__tgt_interop_destroy, false, Void, IdentPtr, Int32, VoidPtrPtr, 398 Int32, Int32, VoidPtr, Int32) 399__OMP_RTL(__tgt_interop_use, false, Void, IdentPtr, Int32, VoidPtrPtr, Int32, 400 Int32, VoidPtr, Int32) 401 402__OMP_RTL(__kmpc_init_allocator, false, /* omp_allocator_handle_t */ VoidPtr, 403 /* Int */ Int32, /* omp_memespace_handle_t */ VoidPtr, 404 /* Int */ Int32, /* omp_alloctrait_t */ VoidPtr) 405__OMP_RTL(__kmpc_destroy_allocator, false, Void, /* Int */ Int32, 406 /* omp_allocator_handle_t */ VoidPtr) 407 408__OMP_RTL(__kmpc_push_target_tripcount_mapper, false, Void, IdentPtr, Int64, Int64) 409__OMP_RTL(__tgt_target_mapper, false, Int32, IdentPtr, Int64, VoidPtr, Int32, VoidPtrPtr, 410 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 411__OMP_RTL(__tgt_target_nowait_mapper, false, Int32, IdentPtr, Int64, VoidPtr, 412 Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, 413 VoidPtrPtr, Int32, VoidPtr, Int32, VoidPtr) 414__OMP_RTL(__tgt_target_teams_mapper, false, Int32, IdentPtr, Int64, VoidPtr, Int32, 415 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, Int32, Int32) 416__OMP_RTL(__tgt_target_teams_nowait_mapper, false, Int32, IdentPtr, Int64, 417 VoidPtr, Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, 418 VoidPtrPtr, VoidPtrPtr, Int32, Int32, Int32, VoidPtr, Int32, VoidPtr) 419__OMP_RTL(__tgt_target_kernel, false, Int32, IdentPtr, Int64, Int32, Int32, 420 VoidPtr, KernelArgsPtr) 421__OMP_RTL(__tgt_target_kernel_nowait, false, Int32, IdentPtr, Int64, Int32, 422 Int32, VoidPtr, KernelArgsPtr, Int32, VoidPtr, Int32, VoidPtr) 423__OMP_RTL(__tgt_register_requires, false, Void, Int64) 424__OMP_RTL(__tgt_target_data_begin_mapper, false, Void, IdentPtr, Int64, Int32, VoidPtrPtr, 425 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 426__OMP_RTL(__tgt_target_data_begin_nowait_mapper, false, Void, IdentPtr, Int64, Int32, 427 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 428__OMP_RTL(__tgt_target_data_begin_mapper_issue, false, Void, IdentPtr, Int64, Int32, 429 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, AsyncInfoPtr) 430__OMP_RTL(__tgt_target_data_begin_mapper_wait, false, Void, Int64, AsyncInfoPtr) 431__OMP_RTL(__tgt_target_data_end_mapper, false, Void, IdentPtr, Int64, Int32, VoidPtrPtr, 432 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 433__OMP_RTL(__tgt_target_data_end_nowait_mapper, false, Void, IdentPtr, Int64, Int32, 434 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 435__OMP_RTL(__tgt_target_data_update_mapper, false, Void, IdentPtr, Int64, Int32, 436 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 437__OMP_RTL(__tgt_target_data_update_nowait_mapper, false, Void, IdentPtr, Int64, Int32, 438 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 439__OMP_RTL(__tgt_mapper_num_components, false, Int64, VoidPtr) 440__OMP_RTL(__tgt_push_mapper_component, false, Void, VoidPtr, VoidPtr, VoidPtr, 441 Int64, Int64, VoidPtr) 442__OMP_RTL(__kmpc_task_allow_completion_event, false, VoidPtr, IdentPtr, 443 /* Int */ Int32, /* kmp_task_t */ VoidPtr) 444 445/// OpenMP Device runtime functions 446__OMP_RTL(__kmpc_target_init, false, Int32, IdentPtr, Int8, Int1, Int1) 447__OMP_RTL(__kmpc_target_deinit, false, Void, IdentPtr, Int8, Int1) 448__OMP_RTL(__kmpc_kernel_prepare_parallel, false, Void, VoidPtr) 449__OMP_RTL(__kmpc_parallel_51, false, Void, IdentPtr, Int32, Int32, Int32, Int32, 450 VoidPtr, VoidPtr, VoidPtrPtr, SizeTy) 451__OMP_RTL(__kmpc_kernel_parallel, false, Int1, VoidPtrPtr) 452__OMP_RTL(__kmpc_kernel_end_parallel, false, Void, ) 453__OMP_RTL(__kmpc_serialized_parallel, false, Void, IdentPtr, Int32) 454__OMP_RTL(__kmpc_end_serialized_parallel, false, Void, IdentPtr, Int32) 455__OMP_RTL(__kmpc_shuffle_int32, false, Int32, Int32, Int16, Int16) 456__OMP_RTL(__kmpc_nvptx_parallel_reduce_nowait_v2, false, Int32, IdentPtr, Int32, 457 Int32, SizeTy, VoidPtr, ShuffleReducePtr, InterWarpCopyPtr) 458__OMP_RTL(__kmpc_nvptx_end_reduce_nowait, false, Void, Int32) 459__OMP_RTL(__kmpc_nvptx_teams_reduce_nowait_v2, false, Int32, IdentPtr, Int32, 460 VoidPtr, Int32, VoidPtr, ShuffleReducePtr, InterWarpCopyPtr, 461 GlobalListPtr, GlobalListPtr, GlobalListPtr, GlobalListPtr) 462 463__OMP_RTL(__kmpc_shuffle_int64, false, Int64, Int64, Int16, Int16) 464 465__OMP_RTL(__kmpc_alloc_shared, false, VoidPtr, SizeTy) 466__OMP_RTL(__kmpc_free_shared, false, Void, VoidPtr, SizeTy) 467__OMP_RTL(__kmpc_begin_sharing_variables, false, Void, VoidPtrPtrPtr, SizeTy) 468__OMP_RTL(__kmpc_end_sharing_variables, false, Void, ) 469__OMP_RTL(__kmpc_get_shared_variables, false, Void, VoidPtrPtrPtr) 470__OMP_RTL(__kmpc_parallel_level, false, Int8, ) 471__OMP_RTL(__kmpc_is_spmd_exec_mode, false, Int8, ) 472__OMP_RTL(__kmpc_barrier_simple_spmd, false, Void, IdentPtr, Int32) 473__OMP_RTL(__kmpc_barrier_simple_generic, false, Void, IdentPtr, Int32) 474 475__OMP_RTL(__kmpc_warp_active_thread_mask, false, Int64,) 476__OMP_RTL(__kmpc_syncwarp, false, Void, Int64) 477 478__OMP_RTL(__kmpc_is_generic_main_thread_id, false, Int8, Int32) 479 480__OMP_RTL(__last, false, Void, ) 481 482#undef __OMP_RTL 483#undef OMP_RTL 484 485#define ParamAttrs(...) ArrayRef<AttributeSet>({__VA_ARGS__}) 486#define EnumAttr(Kind) Attribute::get(Ctx, Attribute::AttrKind::Kind) 487#define EnumAttrInt(Kind, N) Attribute::get(Ctx, Attribute::AttrKind::Kind, N) 488#define AllocSizeAttr(N, M) Attribute::getWithAllocSizeArgs(Ctx, N, M) 489#define AttributeSet(...) \ 490 AttributeSet::get(Ctx, ArrayRef<Attribute>({__VA_ARGS__})) 491 492#ifndef OMP_ATTRS_SET 493#define OMP_ATTRS_SET(VarName, AttrSet) 494#endif 495 496#define __OMP_ATTRS_SET(VarName, AttrSet) OMP_ATTRS_SET(VarName, AttrSet) 497 498__OMP_ATTRS_SET(GetterAttrs, 499 OptimisticAttributes 500 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(ReadOnly), 501 EnumAttr(NoSync), EnumAttr(NoFree), 502 EnumAttr(InaccessibleMemOnly), 503 EnumAttr(WillReturn)) 504 : AttributeSet(EnumAttr(NoUnwind))) 505__OMP_ATTRS_SET(GetterArgWriteAttrs, 506 OptimisticAttributes 507 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 508 EnumAttr(NoFree), 509 EnumAttr(InaccessibleMemOrArgMemOnly), 510 EnumAttr(WillReturn)) 511 : AttributeSet(EnumAttr(NoUnwind))) 512__OMP_ATTRS_SET(SetterAttrs, 513 OptimisticAttributes 514 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(WriteOnly), 515 EnumAttr(NoSync), EnumAttr(NoFree), 516 EnumAttr(InaccessibleMemOnly), 517 EnumAttr(WillReturn)) 518 : AttributeSet(EnumAttr(NoUnwind))) 519 520__OMP_ATTRS_SET(DefaultAttrs, 521 OptimisticAttributes 522 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 523 EnumAttr(WillReturn), EnumAttr(NoFree)) 524 : AttributeSet(EnumAttr(NoUnwind))) 525 526__OMP_ATTRS_SET(BarrierAttrs, 527 OptimisticAttributes 528 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(Convergent)) 529 : AttributeSet(EnumAttr(NoUnwind), EnumAttr(Convergent))) 530 531__OMP_ATTRS_SET(InaccessibleArgOnlyAttrs, 532 OptimisticAttributes 533 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 534 EnumAttr(InaccessibleMemOrArgMemOnly), 535 EnumAttr(WillReturn), EnumAttr(NoFree)) 536 : AttributeSet(EnumAttr(NoUnwind))) 537 538__OMP_ATTRS_SET(NoCaptureAttrs, 539 OptimisticAttributes 540 ? AttributeSet(EnumAttr(NoCapture)) 541 : AttributeSet(EnumAttr(NoCapture))) 542 543__OMP_ATTRS_SET(AlwaysInlineAttrs, 544 OptimisticAttributes 545 ? AttributeSet(EnumAttr(AlwaysInline)) 546 : AttributeSet(EnumAttr(AlwaysInline))) 547 548#if 0 549__OMP_ATTRS_SET(InaccessibleOnlyAttrs, 550 OptimisticAttributes 551 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 552 EnumAttr(InaccessibleMemOnly), 553 EnumAttr(WillReturn), EnumAttr(NoFree)) 554 : AttributeSet(EnumAttr(NoUnwind))) 555#endif 556 557__OMP_ATTRS_SET(AllocAttrs, 558 OptimisticAttributes 559 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 560 EnumAttr(WillReturn)) 561 : AttributeSet(EnumAttr(NoUnwind))) 562 563__OMP_ATTRS_SET(ForkAttrs, OptimisticAttributes 564 ? AttributeSet(EnumAttr(NoUnwind)) 565 : AttributeSet(EnumAttr(NoUnwind))) 566 567__OMP_ATTRS_SET(ReadOnlyPtrAttrs, 568 OptimisticAttributes 569 ? AttributeSet(EnumAttr(ReadOnly), EnumAttr(NoFree), 570 EnumAttr(NoCapture)) 571 : AttributeSet()) 572 573__OMP_ATTRS_SET(DeviceAllocAttrs, 574 OptimisticAttributes 575 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync)) 576 : AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync))) 577 578#if 0 579__OMP_ATTRS_SET(WriteOnlyPtrAttrs, 580 OptimisticAttributes 581 ? AttributeSet(EnumAttr(WriteOnly), EnumAttr(NoFree), 582 EnumAttr(NoCapture)) 583 : AttributeSet()) 584#endif 585 586__OMP_ATTRS_SET(ArgPtrAttrs, 587 OptimisticAttributes 588 ? AttributeSet(EnumAttr(NoCapture), EnumAttr(NoFree)) 589 : AttributeSet()) 590 591__OMP_ATTRS_SET(ReturnPtrAttrs, 592 OptimisticAttributes 593 ? AttributeSet(EnumAttr(NoAlias)) 594 : AttributeSet()) 595 596#if 0 597__OMP_ATTRS_SET(ReturnAlignedPtrAttrs, 598 OptimisticAttributes 599 ? AttributeSet(EnumAttr(NoAlias), EnumAttrInt(Alignment, 8), 600 EnumAttrInt(DereferenceableOrNull, 8)) 601 : AttributeSet()) 602#endif 603 604#undef __OMP_ATTRS_SET 605#undef OMP_ATTRS_SET 606 607#ifndef OMP_RTL_ATTRS 608#define OMP_RTL_ATTRS(Enum, FnAttrSet, RetAttrSet, ArgAttrSets) 609#endif 610 611#define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets) \ 612 OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets) 613 614__OMP_RTL_ATTRS(__kmpc_barrier, BarrierAttrs, AttributeSet(), 615 ParamAttrs(ReadOnlyPtrAttrs)) 616__OMP_RTL_ATTRS(__kmpc_barrier_simple_spmd, BarrierAttrs, AttributeSet(), 617 ParamAttrs(ReadOnlyPtrAttrs)) 618__OMP_RTL_ATTRS(__kmpc_barrier_simple_generic, BarrierAttrs, AttributeSet(), 619 ParamAttrs(ReadOnlyPtrAttrs)) 620__OMP_RTL_ATTRS(__kmpc_warp_active_thread_mask, BarrierAttrs, AttributeSet(), 621 ParamAttrs()) 622__OMP_RTL_ATTRS(__kmpc_syncwarp, BarrierAttrs, AttributeSet(), ParamAttrs()) 623__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, AttributeSet(), 624 ParamAttrs(ReadOnlyPtrAttrs)) 625__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, AttributeSet(), 626 ParamAttrs(ReadOnlyPtrAttrs)) 627__OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, AttributeSet(), 628 ParamAttrs(ReadOnlyPtrAttrs)) 629__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterAttrs, AttributeSet(), 630 ParamAttrs(ReadOnlyPtrAttrs)) 631__OMP_RTL_ATTRS(__kmpc_fork_call, ForkAttrs, AttributeSet(), 632 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) 633__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, AttributeSet(), 634 ParamAttrs(ReadOnlyPtrAttrs)) 635__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, AttributeSet(), 636 ParamAttrs(ReadOnlyPtrAttrs)) 637__OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs, 638 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 639__OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(), 640 ParamAttrs(ReadOnlyPtrAttrs)) 641__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs, 642 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 643__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs, 644 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 645__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, AttributeSet(), 646 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, 647 AttributeSet(), ReadOnlyPtrAttrs)) 648 649__OMP_RTL_ATTRS(__kmpc_get_hardware_num_blocks, GetterAttrs, AttributeSet(), ParamAttrs()) 650__OMP_RTL_ATTRS(__kmpc_get_hardware_num_threads_in_block, GetterAttrs, AttributeSet(), ParamAttrs()) 651__OMP_RTL_ATTRS(__kmpc_get_warp_size, GetterAttrs, AttributeSet(), ParamAttrs()) 652 653__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, AttributeSet(), ParamAttrs()) 654__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, AttributeSet(), ParamAttrs()) 655__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, AttributeSet(), ParamAttrs()) 656__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, AttributeSet(), ParamAttrs()) 657__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, AttributeSet(), ParamAttrs()) 658__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, AttributeSet(), ParamAttrs()) 659__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, AttributeSet(), ParamAttrs()) 660__OMP_RTL_ATTRS( 661 omp_get_schedule, GetterArgWriteAttrs, AttributeSet(), 662 ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)), 663 AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)))) 664__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, AttributeSet(), ParamAttrs()) 665__OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, AttributeSet(), 666 ParamAttrs()) 667__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, AttributeSet(), 668 ParamAttrs()) 669__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, AttributeSet(), ParamAttrs()) 670__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, AttributeSet(), 671 ParamAttrs()) 672__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, AttributeSet(), ParamAttrs()) 673__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, AttributeSet(), ParamAttrs()) 674__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, AttributeSet(), ParamAttrs()) 675__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, AttributeSet(), ParamAttrs()) 676__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, AttributeSet(), ParamAttrs()) 677__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, AttributeSet(), ParamAttrs()) 678__OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(), 679 ParamAttrs(AttributeSet(), AttributeSet(EnumAttr(NoCapture), 680 EnumAttr(WriteOnly)))) 681__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, AttributeSet(), ParamAttrs()) 682__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, AttributeSet(), 683 ParamAttrs()) 684__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterAttrs, AttributeSet(), 685 ParamAttrs()) 686__OMP_RTL_ATTRS(omp_get_wtime, GetterAttrs, AttributeSet(), ParamAttrs()) 687 688__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), ParamAttrs()) 689__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs()) 690__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs()) 691__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), ParamAttrs()) 692__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(), 693 ParamAttrs()) 694 695__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, AttributeSet(), 696 ParamAttrs(ReadOnlyPtrAttrs)) 697__OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(), 698 ParamAttrs(ReadOnlyPtrAttrs)) 699__OMP_RTL_ATTRS(__kmpc_masked, InaccessibleArgOnlyAttrs, AttributeSet(), 700 ParamAttrs(ReadOnlyPtrAttrs)) 701__OMP_RTL_ATTRS(__kmpc_end_masked, InaccessibleArgOnlyAttrs, AttributeSet(), 702 ParamAttrs(ReadOnlyPtrAttrs)) 703__OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(), 704 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) 705__OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(), 706 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 707 AttributeSet())) 708__OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(), 709 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) 710 711__OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(), 712 ParamAttrs(ReadOnlyPtrAttrs)) 713__OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, AttributeSet(), 714 ParamAttrs(ReadOnlyPtrAttrs)) 715 716__OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, AttributeSet(), 717 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 718 AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) 719__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, AttributeSet(), 720 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 721 AttributeSet(), ReadOnlyPtrAttrs, AttributeSet())) 722__OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(), 723 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) 724__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(), 725 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) 726 727__OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(), 728 ParamAttrs(ReadOnlyPtrAttrs)) 729__OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(), 730 ParamAttrs(ReadOnlyPtrAttrs)) 731 732__OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), 733 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 734 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 735 AttributeSet(), AttributeSet())) 736__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), 737 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 738 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 739 AttributeSet(), AttributeSet())) 740__OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), 741 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 742 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 743 AttributeSet(), AttributeSet())) 744__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), 745 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 746 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 747 AttributeSet(), AttributeSet())) 748__OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs, 749 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 750__OMP_RTL_ATTRS(__kmpc_distribute_static_init_4, GetterArgWriteAttrs, 751 AttributeSet(), 752 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 753 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 754 AttributeSet(), AttributeSet())) 755__OMP_RTL_ATTRS(__kmpc_distribute_static_init_4u, GetterArgWriteAttrs, 756 AttributeSet(), 757 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 758 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 759 AttributeSet(), AttributeSet())) 760__OMP_RTL_ATTRS(__kmpc_distribute_static_init_8, GetterArgWriteAttrs, 761 AttributeSet(), 762 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 763 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 764 AttributeSet(), AttributeSet())) 765__OMP_RTL_ATTRS(__kmpc_distribute_static_init_8u, GetterArgWriteAttrs, 766 AttributeSet(), 767 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 768 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 769 AttributeSet(), AttributeSet())) 770__OMP_RTL_ATTRS(__kmpc_distribute_static_fini, InaccessibleArgOnlyAttrs, 771 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 772__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs, 773 AttributeSet(), 774 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 775 ArgPtrAttrs)) 776__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs, 777 AttributeSet(), 778 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 779 ArgPtrAttrs)) 780__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs, 781 AttributeSet(), 782 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 783 ArgPtrAttrs)) 784__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs, 785 AttributeSet(), 786 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 787 ArgPtrAttrs)) 788__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), 789 ParamAttrs(ReadOnlyPtrAttrs)) 790__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), 791 ParamAttrs(ReadOnlyPtrAttrs)) 792__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), 793 ParamAttrs(ReadOnlyPtrAttrs)) 794__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), 795 ParamAttrs(ReadOnlyPtrAttrs)) 796__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, AttributeSet(), 797 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 798 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 799__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, AttributeSet(), 800 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 801 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 802__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, AttributeSet(), 803 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 804 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 805__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, AttributeSet(), 806 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 807 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 808__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs, 809 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 810__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs, 811 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 812__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs, 813 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 814__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs, 815 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 816__OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(), 817 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 818 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 819__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(), 820 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 821 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 822__OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(), 823 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 824 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 825__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(), 826 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ArgPtrAttrs, 827 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 828__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs, 829 AttributeSet(), 830 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 831 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 832 ArgPtrAttrs)) 833__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs, 834 AttributeSet(), 835 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 836 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 837 ArgPtrAttrs)) 838__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs, 839 AttributeSet(), 840 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 841 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 842 ArgPtrAttrs)) 843__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs, 844 AttributeSet(), 845 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 846 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 847 ArgPtrAttrs)) 848 849__OMP_RTL_ATTRS(__kmpc_single, BarrierAttrs, AttributeSet(), 850 ParamAttrs(ReadOnlyPtrAttrs)) 851__OMP_RTL_ATTRS(__kmpc_end_single, BarrierAttrs, AttributeSet(), 852 ParamAttrs(ReadOnlyPtrAttrs)) 853 854__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, ReturnPtrAttrs, 855 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 856 AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs)) 857__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, AttributeSet(), 858 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet())) 859__OMP_RTL_ATTRS(__kmpc_end_taskgroup, BarrierAttrs, AttributeSet(), 860 ParamAttrs(ReadOnlyPtrAttrs)) 861__OMP_RTL_ATTRS(__kmpc_taskgroup, BarrierAttrs, AttributeSet(), 862 ParamAttrs(ReadOnlyPtrAttrs)) 863__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(), 864 ParamAttrs(ReadOnlyPtrAttrs)) 865__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(), 866 ParamAttrs(ReadOnlyPtrAttrs)) 867__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, AttributeSet(), 868 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 869 AttributeSet(), ReadOnlyPtrAttrs, AttributeSet(), 870 ReadOnlyPtrAttrs)) 871__OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(), 872 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 873 AttributeSet(), ArgPtrAttrs, ArgPtrAttrs, 874 AttributeSet(), AttributeSet(), AttributeSet(), 875 AttributeSet(), AttributeSet())) 876__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, ReturnPtrAttrs, 877 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 878 AttributeSet(), AttributeSet(), ReadOnlyPtrAttrs, 879 AttributeSet())) 880__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, ReturnPtrAttrs, 881 ParamAttrs(ReadOnlyPtrAttrs)) 882__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), ParamAttrs()) 883__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs, 884 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs)) 885__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, ReturnPtrAttrs, 886 ParamAttrs()) 887__OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, ReturnPtrAttrs, 888 ParamAttrs()) 889__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs, 890 ReturnPtrAttrs, ParamAttrs()) 891__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, AttributeSet(), 892 ParamAttrs()) 893 894__OMP_RTL_ATTRS(__kmpc_omp_wait_deps, BarrierAttrs, AttributeSet(), 895 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 896 ReadOnlyPtrAttrs)) 897__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, AttributeSet(), 898 ParamAttrs(ReadOnlyPtrAttrs)) 899 900__OMP_RTL_ATTRS(__kmpc_fork_teams, ForkAttrs, AttributeSet(), 901 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) 902__OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, AttributeSet(), 903 ParamAttrs(ReadOnlyPtrAttrs)) 904 905__OMP_RTL_ATTRS(__kmpc_copyprivate, DefaultAttrs, AttributeSet(), 906 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 907 ReadOnlyPtrAttrs)) 908__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, ReturnPtrAttrs, 909 ParamAttrs(ReadOnlyPtrAttrs)) 910__OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, AttributeSet(), 911 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, 912 ReadOnlyPtrAttrs, ReadOnlyPtrAttrs)) 913 914__OMP_RTL_ATTRS(__kmpc_doacross_init, BarrierAttrs, AttributeSet(), 915 ParamAttrs(ReadOnlyPtrAttrs)) 916__OMP_RTL_ATTRS(__kmpc_doacross_post, BarrierAttrs, AttributeSet(), 917 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) 918__OMP_RTL_ATTRS(__kmpc_doacross_wait, BarrierAttrs, AttributeSet(), 919 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs)) 920__OMP_RTL_ATTRS(__kmpc_doacross_fini, BarrierAttrs, AttributeSet(), 921 ParamAttrs(ReadOnlyPtrAttrs)) 922 923__OMP_RTL_ATTRS(__kmpc_alloc_shared, AttributeSet( 924 EnumAttr(NoUnwind), 925 EnumAttr(NoSync), 926 AllocSizeAttr(0, None)), ReturnPtrAttrs, ParamAttrs()) 927__OMP_RTL_ATTRS(__kmpc_free_shared, DeviceAllocAttrs, AttributeSet(), 928 ParamAttrs(NoCaptureAttrs)) 929 930__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs, ParamAttrs()) 931__OMP_RTL_ATTRS(__kmpc_aligned_alloc, DefaultAttrs, ReturnPtrAttrs, 932 ParamAttrs()) 933__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(), ParamAttrs()) 934 935__OMP_RTL_ATTRS(__kmpc_init_allocator, DefaultAttrs, ReturnPtrAttrs, 936 ParamAttrs()) 937__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, AttributeSet(), 938 ParamAttrs()) 939 940__OMP_RTL_ATTRS(__kmpc_push_target_tripcount_mapper, SetterAttrs, 941 AttributeSet(), ParamAttrs()) 942__OMP_RTL_ATTRS(__tgt_target_mapper, ForkAttrs, AttributeSet(), ParamAttrs()) 943__OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, AttributeSet(), 944 ParamAttrs()) 945__OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, AttributeSet(), 946 ParamAttrs()) 947__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs, AttributeSet(), 948 ParamAttrs()) 949__OMP_RTL_ATTRS(__tgt_target_kernel, ForkAttrs, AttributeSet(), 950 ParamAttrs()) 951__OMP_RTL_ATTRS(__tgt_target_kernel_nowait, ForkAttrs, AttributeSet(), 952 ParamAttrs()) 953__OMP_RTL_ATTRS(__tgt_register_requires, ForkAttrs, AttributeSet(), 954 ParamAttrs()) 955__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper, ForkAttrs, AttributeSet(), 956 ParamAttrs()) 957__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs, 958 AttributeSet(), ParamAttrs()) 959__OMP_RTL_ATTRS(__tgt_target_data_end_mapper, ForkAttrs, AttributeSet(), 960 ParamAttrs()) 961__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs, 962 AttributeSet(), ParamAttrs()) 963__OMP_RTL_ATTRS(__tgt_target_data_update_mapper, ForkAttrs, AttributeSet(), 964 ParamAttrs()) 965__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, ForkAttrs, 966 AttributeSet(), ParamAttrs()) 967__OMP_RTL_ATTRS(__tgt_mapper_num_components, ForkAttrs, AttributeSet(), 968 ParamAttrs()) 969__OMP_RTL_ATTRS(__tgt_push_mapper_component, ForkAttrs, AttributeSet(), 970 ParamAttrs()) 971__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs, 972 ReturnPtrAttrs, ParamAttrs(ReadOnlyPtrAttrs)) 973 974__OMP_RTL_ATTRS(__kmpc_parallel_51, AlwaysInlineAttrs, AttributeSet(), 975 ParamAttrs()) 976 977#undef __OMP_RTL_ATTRS 978#undef OMP_RTL_ATTRS 979#undef AttributeSet 980#undef EnumAttr 981#undef EnumAttrInt 982#undef ParamAttrs 983#undef AllocSizeAttr 984 985///} 986 987/// KMP ident_t bit flags 988/// 989/// In accordance with the values in `openmp/runtime/src/kmp.h`. 990/// 991///{ 992 993#ifndef OMP_IDENT_FLAG 994#define OMP_IDENT_FLAG(Enum, Str, Value) 995#endif 996 997#define __OMP_IDENT_FLAG(Name, Value) \ 998 OMP_IDENT_FLAG(OMP_IDENT_FLAG_##Name, #Name, Value) 999 1000__OMP_IDENT_FLAG(KMPC, 0x02) 1001__OMP_IDENT_FLAG(ATOMIC_REDUCE, 0x10) 1002__OMP_IDENT_FLAG(BARRIER_EXPL, 0x20) 1003__OMP_IDENT_FLAG(BARRIER_IMPL, 0x0040) 1004__OMP_IDENT_FLAG(BARRIER_IMPL_MASK, 0x01C0) 1005__OMP_IDENT_FLAG(BARRIER_IMPL_FOR, 0x0040) 1006__OMP_IDENT_FLAG(BARRIER_IMPL_SECTIONS, 0x00C0) 1007__OMP_IDENT_FLAG(BARRIER_IMPL_SINGLE, 0x0140) 1008__OMP_IDENT_FLAG(BARRIER_IMPL_WORKSHARE, 0x01C0) 1009 1010#undef __OMP_IDENT_FLAG 1011#undef OMP_IDENT_FLAG 1012 1013///} 1014 1015/// KMP cancel kind 1016/// 1017///{ 1018 1019#ifndef OMP_CANCEL_KIND 1020#define OMP_CANCEL_KIND(Enum, Str, DirectiveEnum, Value) 1021#endif 1022 1023#define __OMP_CANCEL_KIND(Name, Value) \ 1024 OMP_CANCEL_KIND(OMP_CANCEL_KIND_##Name, #Name, OMPD_##Name, Value) 1025 1026__OMP_CANCEL_KIND(parallel, 1) 1027__OMP_CANCEL_KIND(for, 2) 1028__OMP_CANCEL_KIND(sections, 3) 1029__OMP_CANCEL_KIND(taskgroup, 4) 1030 1031#undef __OMP_CANCEL_KIND 1032#undef OMP_CANCEL_KIND 1033 1034///} 1035 1036/// Default kinds 1037/// 1038///{ 1039 1040#ifndef OMP_DEFAULT_KIND 1041#define OMP_DEFAULT_KIND(Enum, Str) 1042#endif 1043 1044#define __OMP_DEFAULT_KIND(Name) OMP_DEFAULT_KIND(OMP_DEFAULT_##Name, #Name) 1045 1046__OMP_DEFAULT_KIND(none) 1047__OMP_DEFAULT_KIND(shared) 1048__OMP_DEFAULT_KIND(private) 1049__OMP_DEFAULT_KIND(firstprivate) 1050__OMP_DEFAULT_KIND(unknown) 1051 1052#undef __OMP_DEFAULT_KIND 1053#undef OMP_DEFAULT_KIND 1054 1055///} 1056 1057/// Proc bind kinds 1058/// 1059///{ 1060 1061#ifndef OMP_PROC_BIND_KIND 1062#define OMP_PROC_BIND_KIND(Enum, Str, Value) 1063#endif 1064 1065#define __OMP_PROC_BIND_KIND(Name, Value) \ 1066 OMP_PROC_BIND_KIND(OMP_PROC_BIND_##Name, #Name, Value) 1067 1068__OMP_PROC_BIND_KIND(master, 2) 1069__OMP_PROC_BIND_KIND(close, 3) 1070__OMP_PROC_BIND_KIND(spread, 4) 1071__OMP_PROC_BIND_KIND(primary, 5) 1072__OMP_PROC_BIND_KIND(default, 6) 1073__OMP_PROC_BIND_KIND(unknown, 7) 1074 1075#undef __OMP_PROC_BIND_KIND 1076#undef OMP_PROC_BIND_KIND 1077 1078///} 1079 1080/// OpenMP context related definitions: 1081/// - trait set selector 1082/// - trait selector 1083/// - trait property 1084/// 1085///{ 1086 1087#ifndef OMP_TRAIT_SET 1088#define OMP_TRAIT_SET(Enum, Str) 1089#endif 1090#ifndef OMP_TRAIT_SELECTOR 1091#define OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, RequiresProperty) 1092#endif 1093#ifndef OMP_TRAIT_PROPERTY 1094#define OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) 1095#endif 1096#ifndef OMP_LAST_TRAIT_PROPERTY 1097#define OMP_LAST_TRAIT_PROPERTY(Enum) 1098#endif 1099 1100#define __OMP_TRAIT_SET(Name) OMP_TRAIT_SET(Name, #Name) 1101#define __OMP_TRAIT_SELECTOR(TraitSet, Name, RequiresProperty) \ 1102 OMP_TRAIT_SELECTOR(TraitSet##_##Name, TraitSet, #Name, RequiresProperty) 1103#define __OMP_TRAIT_SELECTOR_AND_PROPERTY(TraitSet, Name) \ 1104 OMP_TRAIT_SELECTOR(TraitSet##_##Name, TraitSet, #Name, false) \ 1105 OMP_TRAIT_PROPERTY(TraitSet##_##Name##_##Name, TraitSet, TraitSet##_##Name, \ 1106 #Name) 1107#define __OMP_TRAIT_PROPERTY(TraitSet, TraitSelector, Name) \ 1108 OMP_TRAIT_PROPERTY(TraitSet##_##TraitSelector##_##Name, TraitSet, \ 1109 TraitSet##_##TraitSelector, #Name) 1110 1111// "invalid" must go first. 1112OMP_TRAIT_SET(invalid, "invalid") 1113OMP_TRAIT_SELECTOR(invalid, invalid, "invalid", false) 1114OMP_TRAIT_PROPERTY(invalid, invalid, invalid, "invalid") 1115 1116__OMP_TRAIT_SET(construct) 1117__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, target) 1118__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, teams) 1119__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, parallel) 1120__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, for) 1121__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, simd) 1122 1123__OMP_TRAIT_SET(device) 1124 1125__OMP_TRAIT_SELECTOR(device, kind, true) 1126 1127__OMP_TRAIT_PROPERTY(device, kind, host) 1128__OMP_TRAIT_PROPERTY(device, kind, nohost) 1129__OMP_TRAIT_PROPERTY(device, kind, cpu) 1130__OMP_TRAIT_PROPERTY(device, kind, gpu) 1131__OMP_TRAIT_PROPERTY(device, kind, fpga) 1132__OMP_TRAIT_PROPERTY(device, kind, any) 1133 1134__OMP_TRAIT_SELECTOR(device, arch, true) 1135 1136__OMP_TRAIT_PROPERTY(device, arch, arm) 1137__OMP_TRAIT_PROPERTY(device, arch, armeb) 1138__OMP_TRAIT_PROPERTY(device, arch, aarch64) 1139__OMP_TRAIT_PROPERTY(device, arch, aarch64_be) 1140__OMP_TRAIT_PROPERTY(device, arch, aarch64_32) 1141__OMP_TRAIT_PROPERTY(device, arch, ppc) 1142__OMP_TRAIT_PROPERTY(device, arch, ppcle) 1143__OMP_TRAIT_PROPERTY(device, arch, ppc64) 1144__OMP_TRAIT_PROPERTY(device, arch, ppc64le) 1145__OMP_TRAIT_PROPERTY(device, arch, x86) 1146__OMP_TRAIT_PROPERTY(device, arch, x86_64) 1147__OMP_TRAIT_PROPERTY(device, arch, amdgcn) 1148__OMP_TRAIT_PROPERTY(device, arch, nvptx) 1149__OMP_TRAIT_PROPERTY(device, arch, nvptx64) 1150 1151__OMP_TRAIT_SET(implementation) 1152 1153__OMP_TRAIT_SELECTOR(implementation, vendor, true) 1154 1155__OMP_TRAIT_PROPERTY(implementation, vendor, amd) 1156__OMP_TRAIT_PROPERTY(implementation, vendor, arm) 1157__OMP_TRAIT_PROPERTY(implementation, vendor, bsc) 1158__OMP_TRAIT_PROPERTY(implementation, vendor, cray) 1159__OMP_TRAIT_PROPERTY(implementation, vendor, fujitsu) 1160__OMP_TRAIT_PROPERTY(implementation, vendor, gnu) 1161__OMP_TRAIT_PROPERTY(implementation, vendor, ibm) 1162__OMP_TRAIT_PROPERTY(implementation, vendor, intel) 1163__OMP_TRAIT_PROPERTY(implementation, vendor, llvm) 1164__OMP_TRAIT_PROPERTY(implementation, vendor, nec) 1165__OMP_TRAIT_PROPERTY(implementation, vendor, nvidia) 1166__OMP_TRAIT_PROPERTY(implementation, vendor, pgi) 1167__OMP_TRAIT_PROPERTY(implementation, vendor, ti) 1168__OMP_TRAIT_PROPERTY(implementation, vendor, unknown) 1169 1170__OMP_TRAIT_SELECTOR(implementation, extension, true) 1171__OMP_TRAIT_PROPERTY(implementation, extension, match_all) 1172__OMP_TRAIT_PROPERTY(implementation, extension, match_any) 1173__OMP_TRAIT_PROPERTY(implementation, extension, match_none) 1174__OMP_TRAIT_PROPERTY(implementation, extension, disable_implicit_base) 1175__OMP_TRAIT_PROPERTY(implementation, extension, allow_templates) 1176__OMP_TRAIT_PROPERTY(implementation, extension, bind_to_declaration) 1177 1178__OMP_TRAIT_SET(user) 1179 1180__OMP_TRAIT_SELECTOR(user, condition, true) 1181 1182__OMP_TRAIT_PROPERTY(user, condition, true) 1183__OMP_TRAIT_PROPERTY(user, condition, false) 1184__OMP_TRAIT_PROPERTY(user, condition, unknown) 1185 1186__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, dispatch) 1187 1188// Note that we put isa last so that the other conditions are checked first. 1189// This allows us to issue warnings wrt. isa only if we match otherwise. 1190__OMP_TRAIT_SELECTOR(device, isa, true) 1191 1192// We use "__ANY" as a placeholder in the isa property to denote the 1193// conceptual "any", not the literal `any` used in kind. The string we 1194// we use is not important except that it will show up in diagnostics. 1195OMP_TRAIT_PROPERTY(device_isa___ANY, device, device_isa, 1196 "<any, entirely target dependent>") 1197 1198 1199#undef OMP_TRAIT_SET 1200#undef __OMP_TRAIT_SET 1201///} 1202 1203/// Traits for the requires directive 1204/// 1205/// These will (potentially) become trait selectors for the OpenMP context if 1206/// the OMP_REQUIRES_TRAIT macro is not defined. 1207/// 1208///{ 1209 1210#ifdef OMP_REQUIRES_TRAIT 1211#define __OMP_REQUIRES_TRAIT(Name) \ 1212 OMP_REQUIRES_TRAIT(OMP_REQUIRES_TRAIT_##Name, #Name) 1213#else 1214#define __OMP_REQUIRES_TRAIT(Name) \ 1215 __OMP_TRAIT_SELECTOR_AND_PROPERTY(implementation, Name) 1216#endif 1217 1218__OMP_REQUIRES_TRAIT(unified_address) 1219__OMP_REQUIRES_TRAIT(unified_shared_memory) 1220__OMP_REQUIRES_TRAIT(reverse_offload) 1221__OMP_REQUIRES_TRAIT(dynamic_allocators) 1222__OMP_REQUIRES_TRAIT(atomic_default_mem_order) 1223 1224OMP_LAST_TRAIT_PROPERTY( 1225 implementation_atomic_default_mem_order_atomic_default_mem_order) 1226 1227#undef __OMP_TRAIT_SELECTOR_AND_PROPERTY 1228#undef OMP_TRAIT_SELECTOR 1229#undef __OMP_TRAIT_SELECTOR 1230#undef OMP_TRAIT_PROPERTY 1231#undef OMP_LAST_TRAIT_PROPERTY 1232#undef __OMP_TRAIT_PROPERTY 1233#undef __OMP_REQUIRES_TRAIT 1234#undef OMP_REQUIRES_TRAIT 1235///} 1236 1237 1238/// Assumption clauses 1239/// 1240///{ 1241 1242#ifdef OMP_ASSUME_CLAUSE 1243#define __OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression) \ 1244OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression) 1245#else 1246#define __OMP_ASSUME_CLAUSE(...) 1247#endif 1248 1249__OMP_ASSUME_CLAUSE(llvm::StringLiteral("ext_"), true, false, false) 1250__OMP_ASSUME_CLAUSE(llvm::StringLiteral("absent"), false, true, false) 1251__OMP_ASSUME_CLAUSE(llvm::StringLiteral("contains"), false, true, false) 1252__OMP_ASSUME_CLAUSE(llvm::StringLiteral("holds"), false, false, true) 1253__OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_openmp"), false, false, false) 1254__OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_openmp_routines"), false, false, false) 1255__OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_parallelism"), false, false, false) 1256 1257#undef __OMP_ASSUME_CLAUSE 1258#undef OMP_ASSUME_CLAUSE 1259///} 1260