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