1480093f4SDimitry Andric//===--- OMPKinds.def - OpenMP directives, clauses, rt-calls -*- C++ -*-===// 2480093f4SDimitry Andric// 3480093f4SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4480093f4SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 5480093f4SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6480093f4SDimitry Andric// 7480093f4SDimitry Andric//===----------------------------------------------------------------------===// 8480093f4SDimitry Andric/// \file 9480093f4SDimitry Andric/// 10e8d8bef9SDimitry Andric/// This file defines the list of supported OpenMP runtime 11480093f4SDimitry Andric/// calls, and other things that need to be listed in enums. 12480093f4SDimitry Andric/// 13e8d8bef9SDimitry Andric/// This file is under transition to OMP.td with TableGen code generation. 14e8d8bef9SDimitry Andric/// 15480093f4SDimitry Andric//===----------------------------------------------------------------------===// 16480093f4SDimitry Andric 17e8d8bef9SDimitry Andric/// OpenMP Directives, combined directives and Clauses 18e8d8bef9SDimitry Andric/// - Moved to OMP.td 195ffd83dbSDimitry Andric 20480093f4SDimitry Andric/// Types used in runtime structs or runtime functions 21480093f4SDimitry Andric/// 22480093f4SDimitry Andric///{ 23480093f4SDimitry Andric 24480093f4SDimitry Andric#ifndef OMP_TYPE 25480093f4SDimitry Andric#define OMP_TYPE(VarName, InitValue) 26480093f4SDimitry Andric#endif 27480093f4SDimitry Andric 28480093f4SDimitry Andric#define __OMP_TYPE(VarName) OMP_TYPE(VarName, Type::get##VarName##Ty(Ctx)) 29*5f757f3fSDimitry Andric#define __OMP_PTR_TYPE(VarName) OMP_TYPE(VarName, PointerType::get(Ctx, 0)) 30480093f4SDimitry Andric 31480093f4SDimitry Andric__OMP_TYPE(Void) 325ffd83dbSDimitry Andric__OMP_TYPE(Int1) 33480093f4SDimitry Andric__OMP_TYPE(Int8) 34e8d8bef9SDimitry Andric__OMP_TYPE(Int16) 35480093f4SDimitry Andric__OMP_TYPE(Int32) 365ffd83dbSDimitry Andric__OMP_TYPE(Int64) 37*5f757f3fSDimitry Andric__OMP_PTR_TYPE(Int8Ptr) 38*5f757f3fSDimitry Andric__OMP_PTR_TYPE(Int16Ptr) 39*5f757f3fSDimitry Andric__OMP_PTR_TYPE(Int32Ptr) 40*5f757f3fSDimitry Andric__OMP_PTR_TYPE(Int64Ptr) 41fcaf7f86SDimitry Andric__OMP_TYPE(Double) 425ffd83dbSDimitry Andric 435ffd83dbSDimitry AndricOMP_TYPE(SizeTy, M.getDataLayout().getIntPtrType(Ctx)) 44bdd1243dSDimitry AndricOMP_TYPE(Int63, Type::getIntNTy(Ctx, 63)) 455ffd83dbSDimitry Andric 46*5f757f3fSDimitry Andric__OMP_PTR_TYPE(VoidPtr) 47*5f757f3fSDimitry Andric__OMP_PTR_TYPE(VoidPtrPtr) 48*5f757f3fSDimitry Andric__OMP_PTR_TYPE(VoidPtrPtrPtr) 495ffd83dbSDimitry Andric 50*5f757f3fSDimitry Andric__OMP_PTR_TYPE(Int8PtrPtr) 51*5f757f3fSDimitry Andric__OMP_PTR_TYPE(Int8PtrPtrPtr) 525ffd83dbSDimitry Andric 535ffd83dbSDimitry Andric#undef __OMP_PTR_TYPE 54480093f4SDimitry Andric 55480093f4SDimitry Andric#undef __OMP_TYPE 56480093f4SDimitry Andric#undef OMP_TYPE 57480093f4SDimitry Andric 58480093f4SDimitry Andric///} 59480093f4SDimitry Andric 605ffd83dbSDimitry Andric/// array types 615ffd83dbSDimitry Andric/// 625ffd83dbSDimitry Andric///{ 635ffd83dbSDimitry Andric 645ffd83dbSDimitry Andric#ifndef OMP_ARRAY_TYPE 655ffd83dbSDimitry Andric#define OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) 665ffd83dbSDimitry Andric#endif 675ffd83dbSDimitry Andric 685ffd83dbSDimitry Andric#define __OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) \ 695ffd83dbSDimitry Andric OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) 705ffd83dbSDimitry Andric 715ffd83dbSDimitry Andric__OMP_ARRAY_TYPE(KmpCriticalName, Int32, 8) 72bdd1243dSDimitry Andric__OMP_ARRAY_TYPE(Int32Arr3, Int32, 3) 735ffd83dbSDimitry Andric 745ffd83dbSDimitry Andric#undef __OMP_ARRAY_TYPE 755ffd83dbSDimitry Andric#undef OMP_ARRAY_TYPE 765ffd83dbSDimitry Andric 775ffd83dbSDimitry Andric///} 785ffd83dbSDimitry Andric 79480093f4SDimitry Andric/// Struct and function types 80480093f4SDimitry Andric/// 81480093f4SDimitry Andric///{ 82480093f4SDimitry Andric 83480093f4SDimitry Andric#ifndef OMP_STRUCT_TYPE 84bdd1243dSDimitry Andric#define OMP_STRUCT_TYPE(VarName, StructName, Packed, ...) 85480093f4SDimitry Andric#endif 86480093f4SDimitry Andric 87bdd1243dSDimitry Andric#define __OMP_STRUCT_TYPE(VarName, Name, Packed, ...) \ 88bdd1243dSDimitry Andric OMP_STRUCT_TYPE(VarName, "struct." #Name, Packed, __VA_ARGS__) 89480093f4SDimitry Andric 90bdd1243dSDimitry Andric__OMP_STRUCT_TYPE(Ident, ident_t, false, Int32, Int32, Int32, Int32, Int8Ptr) 91bdd1243dSDimitry Andric__OMP_STRUCT_TYPE(KernelArgs, __tgt_kernel_arguments, false, Int32, Int32, VoidPtrPtr, 92bdd1243dSDimitry Andric VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, 93bdd1243dSDimitry Andric Int64, Int64, Int32Arr3Ty, Int32Arr3Ty, Int32) 94bdd1243dSDimitry Andric__OMP_STRUCT_TYPE(AsyncInfo, __tgt_async_info, false, Int8Ptr) 95bdd1243dSDimitry Andric__OMP_STRUCT_TYPE(DependInfo, kmp_dep_info, false, SizeTy, SizeTy, Int8) 96*5f757f3fSDimitry Andric__OMP_STRUCT_TYPE(Task, kmp_task_ompbuilder_t, false, VoidPtr, VoidPtr, Int32, VoidPtr, VoidPtr) 97*5f757f3fSDimitry Andric__OMP_STRUCT_TYPE(ConfigurationEnvironment, ConfigurationEnvironmentTy, false, 98*5f757f3fSDimitry Andric Int8, Int8, Int8, Int32, Int32, Int32, Int32, Int32, Int32) 99*5f757f3fSDimitry Andric__OMP_STRUCT_TYPE(DynamicEnvironment, DynamicEnvironmentTy, false, Int16) 100*5f757f3fSDimitry Andric__OMP_STRUCT_TYPE(KernelEnvironment, KernelEnvironmentTy, false, 101*5f757f3fSDimitry Andric ConfigurationEnvironment, IdentPtr, DynamicEnvironmentPtr) 102*5f757f3fSDimitry Andric__OMP_STRUCT_TYPE(KernelLaunchEnvironment, KernelLaunchEnvironmentTy, false, 103*5f757f3fSDimitry Andric Int32, Int32) 104480093f4SDimitry Andric 105480093f4SDimitry Andric#undef __OMP_STRUCT_TYPE 106480093f4SDimitry Andric#undef OMP_STRUCT_TYPE 107480093f4SDimitry Andric 108480093f4SDimitry Andric#ifndef OMP_FUNCTION_TYPE 109480093f4SDimitry Andric#define OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) 110480093f4SDimitry Andric#endif 111480093f4SDimitry Andric 112480093f4SDimitry Andric#define __OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) \ 113480093f4SDimitry Andric OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, __VA_ARGS__) 114480093f4SDimitry Andric 115480093f4SDimitry Andric__OMP_FUNCTION_TYPE(ParallelTask, true, Void, Int32Ptr, Int32Ptr) 1165ffd83dbSDimitry Andric__OMP_FUNCTION_TYPE(ReduceFunction, false, Void, VoidPtr, VoidPtr) 1175ffd83dbSDimitry Andric__OMP_FUNCTION_TYPE(CopyFunction, false, Void, VoidPtr, VoidPtr) 1185ffd83dbSDimitry Andric__OMP_FUNCTION_TYPE(KmpcCtor, false, VoidPtr, VoidPtr) 1195ffd83dbSDimitry Andric__OMP_FUNCTION_TYPE(KmpcDtor, false, Void, VoidPtr) 1205ffd83dbSDimitry Andric__OMP_FUNCTION_TYPE(KmpcCopyCtor, false, VoidPtr, VoidPtr, VoidPtr) 1215ffd83dbSDimitry Andric__OMP_FUNCTION_TYPE(TaskRoutineEntry, false, Int32, Int32, 1225ffd83dbSDimitry Andric /* kmp_task_t */ VoidPtr) 123e8d8bef9SDimitry Andric__OMP_FUNCTION_TYPE(ShuffleReduce, false, Void, VoidPtr, Int16, Int16, Int16) 124e8d8bef9SDimitry Andric__OMP_FUNCTION_TYPE(InterWarpCopy, false, Void, VoidPtr, Int32) 125e8d8bef9SDimitry Andric__OMP_FUNCTION_TYPE(GlobalList, false, Void, VoidPtr, Int32, VoidPtr) 126480093f4SDimitry Andric 127480093f4SDimitry Andric#undef __OMP_FUNCTION_TYPE 128480093f4SDimitry Andric#undef OMP_FUNCTION_TYPE 129480093f4SDimitry Andric 130480093f4SDimitry Andric///} 131480093f4SDimitry Andric 1325ffd83dbSDimitry Andric/// Internal Control Variables information 1335ffd83dbSDimitry Andric/// 1345ffd83dbSDimitry Andric///{ 1355ffd83dbSDimitry Andric 136e8d8bef9SDimitry Andric#ifndef ICV_INIT_VALUE 137e8d8bef9SDimitry Andric#define ICV_INIT_VALUE(Enum, Name) 138e8d8bef9SDimitry Andric#endif 139e8d8bef9SDimitry Andric 140e8d8bef9SDimitry Andric#define __ICV_INIT_VALUE(Name) ICV_INIT_VALUE(ICV_##Name, #Name) 141e8d8bef9SDimitry Andric 142e8d8bef9SDimitry Andric__ICV_INIT_VALUE(ZERO) 143e8d8bef9SDimitry Andric__ICV_INIT_VALUE(FALSE) 144e8d8bef9SDimitry Andric__ICV_INIT_VALUE(IMPLEMENTATION_DEFINED) 145e8d8bef9SDimitry Andric__ICV_INIT_VALUE(LAST) 146e8d8bef9SDimitry Andric 147e8d8bef9SDimitry Andric#undef __ICV_INIT_VALUE 148e8d8bef9SDimitry Andric#undef ICV_INIT_VALUE 149e8d8bef9SDimitry Andric 1505ffd83dbSDimitry Andric#ifndef ICV_DATA_ENV 1515ffd83dbSDimitry Andric#define ICV_DATA_ENV(Enum, Name, EnvVarName, Init) 1525ffd83dbSDimitry Andric#endif 1535ffd83dbSDimitry Andric 1545ffd83dbSDimitry Andric#define __ICV_DATA_ENV(Name, EnvVarName, Init) \ 1555ffd83dbSDimitry Andric ICV_DATA_ENV(ICV_##Name, #Name, #EnvVarName, Init) 1565ffd83dbSDimitry Andric 1575ffd83dbSDimitry Andric__ICV_DATA_ENV(nthreads, OMP_NUM_THREADS, ICV_IMPLEMENTATION_DEFINED) 1585ffd83dbSDimitry Andric__ICV_DATA_ENV(active_levels, NONE, ICV_ZERO) 1595ffd83dbSDimitry Andric__ICV_DATA_ENV(cancel, OMP_CANCELLATION, ICV_FALSE) 160e8d8bef9SDimitry Andric__ICV_DATA_ENV(proc_bind, OMP_PROC_BIND, ICV_IMPLEMENTATION_DEFINED) 1615ffd83dbSDimitry Andric__ICV_DATA_ENV(__last, last, ICV_LAST) 1625ffd83dbSDimitry Andric 1635ffd83dbSDimitry Andric#undef __ICV_DATA_ENV 1645ffd83dbSDimitry Andric#undef ICV_DATA_ENV 1655ffd83dbSDimitry Andric 1665ffd83dbSDimitry Andric#ifndef ICV_RT_SET 1675ffd83dbSDimitry Andric#define ICV_RT_SET(Name, RTL) 1685ffd83dbSDimitry Andric#endif 1695ffd83dbSDimitry Andric 1705ffd83dbSDimitry Andric#define __ICV_RT_SET(Name, RTL) ICV_RT_SET(ICV_##Name, OMPRTL_##RTL) 1715ffd83dbSDimitry Andric 1725ffd83dbSDimitry Andric__ICV_RT_SET(nthreads, omp_set_num_threads) 1735ffd83dbSDimitry Andric 1745ffd83dbSDimitry Andric#undef __ICV_RT_SET 1755ffd83dbSDimitry Andric#undef ICV_RT_SET 1765ffd83dbSDimitry Andric 1775ffd83dbSDimitry Andric#ifndef ICV_RT_GET 1785ffd83dbSDimitry Andric#define ICV_RT_GET(Name, RTL) 1795ffd83dbSDimitry Andric#endif 1805ffd83dbSDimitry Andric 1815ffd83dbSDimitry Andric#define __ICV_RT_GET(Name, RTL) ICV_RT_GET(ICV_##Name, OMPRTL_##RTL) 1825ffd83dbSDimitry Andric 1835ffd83dbSDimitry Andric__ICV_RT_GET(nthreads, omp_get_max_threads) 1845ffd83dbSDimitry Andric__ICV_RT_GET(active_levels, omp_get_active_level) 1855ffd83dbSDimitry Andric__ICV_RT_GET(cancel, omp_get_cancellation) 186e8d8bef9SDimitry Andric__ICV_RT_GET(proc_bind, omp_get_proc_bind) 1875ffd83dbSDimitry Andric 1885ffd83dbSDimitry Andric#undef __ICV_RT_GET 1895ffd83dbSDimitry Andric#undef ICV_RT_GET 1905ffd83dbSDimitry Andric 1915ffd83dbSDimitry Andric///} 1925ffd83dbSDimitry Andric 193480093f4SDimitry Andric/// Runtime library function (and their attributes) 194480093f4SDimitry Andric/// 195480093f4SDimitry Andric///{ 196480093f4SDimitry Andric 197480093f4SDimitry Andric#ifndef OMP_RTL 198480093f4SDimitry Andric#define OMP_RTL(Enum, Str, IsVarArg, ReturnType, ...) 199480093f4SDimitry Andric#endif 200480093f4SDimitry Andric 201480093f4SDimitry Andric#define __OMP_RTL(Name, IsVarArg, ReturnType, ...) \ 202480093f4SDimitry Andric OMP_RTL(OMPRTL_##Name, #Name, IsVarArg, ReturnType, __VA_ARGS__) 203480093f4SDimitry Andric 2045ffd83dbSDimitry Andric 2055ffd83dbSDimitry Andric 206480093f4SDimitry Andric__OMP_RTL(__kmpc_barrier, false, Void, IdentPtr, Int32) 207480093f4SDimitry Andric__OMP_RTL(__kmpc_cancel, false, Int32, IdentPtr, Int32, Int32) 208480093f4SDimitry Andric__OMP_RTL(__kmpc_cancel_barrier, false, Int32, IdentPtr, Int32) 209bdd1243dSDimitry Andric__OMP_RTL(__kmpc_error, false, Void, IdentPtr, Int32, Int8Ptr) 2105ffd83dbSDimitry Andric__OMP_RTL(__kmpc_flush, false, Void, IdentPtr) 211480093f4SDimitry Andric__OMP_RTL(__kmpc_global_thread_num, false, Int32, IdentPtr) 212fe6060f1SDimitry Andric__OMP_RTL(__kmpc_get_hardware_thread_id_in_block, false, Int32, ) 213480093f4SDimitry Andric__OMP_RTL(__kmpc_fork_call, true, Void, IdentPtr, Int32, ParallelTaskPtr) 214bdd1243dSDimitry Andric__OMP_RTL(__kmpc_fork_call_if, false, Void, IdentPtr, Int32, ParallelTaskPtr, 215bdd1243dSDimitry Andric Int32, VoidPtr) 2165ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_taskwait, false, Int32, IdentPtr, Int32) 2175ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_taskyield, false, Int32, IdentPtr, Int32, /* Int */ Int32) 218480093f4SDimitry Andric__OMP_RTL(__kmpc_push_num_threads, false, Void, IdentPtr, Int32, 219480093f4SDimitry Andric /* Int */ Int32) 220480093f4SDimitry Andric__OMP_RTL(__kmpc_push_proc_bind, false, Void, IdentPtr, Int32, /* Int */ Int32) 2215ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_reg_task_with_affinity, false, Int32, IdentPtr, Int32, 222e8d8bef9SDimitry Andric /* kmp_task_t */ VoidPtr, Int32, 223e8d8bef9SDimitry Andric /* kmp_task_affinity_info_t */ VoidPtr) 224480093f4SDimitry Andric 225fe6060f1SDimitry Andric__OMP_RTL(__kmpc_get_hardware_num_blocks, false, Int32, ) 226fe6060f1SDimitry Andric__OMP_RTL(__kmpc_get_hardware_num_threads_in_block, false, Int32, ) 2270eae32dcSDimitry Andric__OMP_RTL(__kmpc_get_warp_size, false, Int32, ) 228fe6060f1SDimitry Andric 229480093f4SDimitry Andric__OMP_RTL(omp_get_thread_num, false, Int32, ) 2305ffd83dbSDimitry Andric__OMP_RTL(omp_get_num_threads, false, Int32, ) 2315ffd83dbSDimitry Andric__OMP_RTL(omp_get_max_threads, false, Int32, ) 2325ffd83dbSDimitry Andric__OMP_RTL(omp_in_parallel, false, Int32, ) 2335ffd83dbSDimitry Andric__OMP_RTL(omp_get_dynamic, false, Int32, ) 2345ffd83dbSDimitry Andric__OMP_RTL(omp_get_cancellation, false, Int32, ) 2355ffd83dbSDimitry Andric__OMP_RTL(omp_get_nested, false, Int32, ) 2365ffd83dbSDimitry Andric__OMP_RTL(omp_get_schedule, false, Void, Int32Ptr, Int32Ptr) 2375ffd83dbSDimitry Andric__OMP_RTL(omp_get_thread_limit, false, Int32, ) 2385ffd83dbSDimitry Andric__OMP_RTL(omp_get_supported_active_levels, false, Int32, ) 2395ffd83dbSDimitry Andric__OMP_RTL(omp_get_max_active_levels, false, Int32, ) 2405ffd83dbSDimitry Andric__OMP_RTL(omp_get_level, false, Int32, ) 2415ffd83dbSDimitry Andric__OMP_RTL(omp_get_ancestor_thread_num, false, Int32, Int32) 2425ffd83dbSDimitry Andric__OMP_RTL(omp_get_team_size, false, Int32, Int32) 2435ffd83dbSDimitry Andric__OMP_RTL(omp_get_active_level, false, Int32, ) 2445ffd83dbSDimitry Andric__OMP_RTL(omp_in_final, false, Int32, ) 2455ffd83dbSDimitry Andric__OMP_RTL(omp_get_proc_bind, false, Int32, ) 2465ffd83dbSDimitry Andric__OMP_RTL(omp_get_num_places, false, Int32, ) 2475ffd83dbSDimitry Andric__OMP_RTL(omp_get_num_procs, false, Int32, ) 2485ffd83dbSDimitry Andric__OMP_RTL(omp_get_place_proc_ids, false, Void, Int32, Int32Ptr) 2495ffd83dbSDimitry Andric__OMP_RTL(omp_get_place_num, false, Int32, ) 2505ffd83dbSDimitry Andric__OMP_RTL(omp_get_partition_num_places, false, Int32, ) 2515ffd83dbSDimitry Andric__OMP_RTL(omp_get_partition_place_nums, false, Void, Int32Ptr) 252fcaf7f86SDimitry Andric__OMP_RTL(omp_get_wtime, false, Double,) 2535ffd83dbSDimitry Andric 2545ffd83dbSDimitry Andric__OMP_RTL(omp_set_num_threads, false, Void, Int32) 2555ffd83dbSDimitry Andric__OMP_RTL(omp_set_dynamic, false, Void, Int32) 2565ffd83dbSDimitry Andric__OMP_RTL(omp_set_nested, false, Void, Int32) 2575ffd83dbSDimitry Andric__OMP_RTL(omp_set_schedule, false, Void, Int32, Int32) 2585ffd83dbSDimitry Andric__OMP_RTL(omp_set_max_active_levels, false, Void, Int32) 2595ffd83dbSDimitry Andric 2605ffd83dbSDimitry Andric__OMP_RTL(__kmpc_master, false, Int32, IdentPtr, Int32) 2615ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end_master, false, Void, IdentPtr, Int32) 262fe6060f1SDimitry Andric__OMP_RTL(__kmpc_masked, false, Int32, IdentPtr, Int32, Int32) 263fe6060f1SDimitry Andric__OMP_RTL(__kmpc_end_masked, false, Void, IdentPtr, Int32) 2645ffd83dbSDimitry Andric__OMP_RTL(__kmpc_critical, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) 2655ffd83dbSDimitry Andric__OMP_RTL(__kmpc_critical_with_hint, false, Void, IdentPtr, Int32, 2665ffd83dbSDimitry Andric KmpCriticalNamePtrTy, Int32) 2675ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end_critical, false, Void, IdentPtr, Int32, 2685ffd83dbSDimitry Andric KmpCriticalNamePtrTy) 2695ffd83dbSDimitry Andric 2705ffd83dbSDimitry Andric__OMP_RTL(__kmpc_begin, false, Void, IdentPtr, Int32) 2715ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end, false, Void, IdentPtr) 2725ffd83dbSDimitry Andric 2735ffd83dbSDimitry Andric__OMP_RTL(__kmpc_reduce, false, Int32, IdentPtr, Int32, Int32, SizeTy, VoidPtr, 2745ffd83dbSDimitry Andric ReduceFunctionPtr, KmpCriticalNamePtrTy) 2755ffd83dbSDimitry Andric__OMP_RTL(__kmpc_reduce_nowait, false, Int32, IdentPtr, Int32, Int32, SizeTy, 2765ffd83dbSDimitry Andric VoidPtr, ReduceFunctionPtr, KmpCriticalNamePtrTy) 277e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy) 2785ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end_reduce_nowait, false, Void, IdentPtr, Int32, 2795ffd83dbSDimitry Andric KmpCriticalNamePtrTy) 2805ffd83dbSDimitry Andric 2815ffd83dbSDimitry Andric__OMP_RTL(__kmpc_ordered, false, Void, IdentPtr, Int32) 2825ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end_ordered, false, Void, IdentPtr, Int32) 2835ffd83dbSDimitry Andric 2845ffd83dbSDimitry Andric__OMP_RTL(__kmpc_for_static_init_4, false, Void, IdentPtr, Int32, Int32, 2855ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 2865ffd83dbSDimitry Andric__OMP_RTL(__kmpc_for_static_init_4u, false, Void, IdentPtr, Int32, Int32, 2875ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 2885ffd83dbSDimitry Andric__OMP_RTL(__kmpc_for_static_init_8, false, Void, IdentPtr, Int32, Int32, 2895ffd83dbSDimitry Andric Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 2905ffd83dbSDimitry Andric__OMP_RTL(__kmpc_for_static_init_8u, false, Void, IdentPtr, Int32, Int32, 2915ffd83dbSDimitry Andric Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 2925ffd83dbSDimitry Andric__OMP_RTL(__kmpc_for_static_fini, false, Void, IdentPtr, Int32) 293349cc55cSDimitry Andric__OMP_RTL(__kmpc_distribute_static_init_4, false, Void, IdentPtr, Int32, Int32, 294349cc55cSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 295349cc55cSDimitry Andric__OMP_RTL(__kmpc_distribute_static_init_4u, false, Void, IdentPtr, Int32, Int32, 296349cc55cSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 297349cc55cSDimitry Andric__OMP_RTL(__kmpc_distribute_static_init_8, false, Void, IdentPtr, Int32, Int32, 298349cc55cSDimitry Andric Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 299349cc55cSDimitry Andric__OMP_RTL(__kmpc_distribute_static_init_8u, false, Void, IdentPtr, Int32, Int32, 300349cc55cSDimitry Andric Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 301349cc55cSDimitry Andric__OMP_RTL(__kmpc_distribute_static_fini, false, Void, IdentPtr, Int32) 3025ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_dispatch_init_4, false, Void, IdentPtr, Int32, Int32, 3035ffd83dbSDimitry Andric Int32Ptr, Int32, Int32, Int32, Int32) 3045ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_dispatch_init_4u, false, Void, IdentPtr, Int32, Int32, 3055ffd83dbSDimitry Andric Int32Ptr, Int32, Int32, Int32, Int32) 3065ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_dispatch_init_8, false, Void, IdentPtr, Int32, Int32, 3075ffd83dbSDimitry Andric Int32Ptr, Int64, Int64, Int64, Int64) 3085ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_dispatch_init_8u, false, Void, IdentPtr, Int32, Int32, 3095ffd83dbSDimitry Andric Int32Ptr, Int64, Int64, Int64, Int64) 3105ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_init_4, false, Void, IdentPtr, Int32, Int32, Int32, 3115ffd83dbSDimitry Andric Int32, Int32, Int32) 3125ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_init_4u, false, Void, IdentPtr, Int32, Int32, Int32, 3135ffd83dbSDimitry Andric Int32, Int32, Int32) 3145ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_init_8, false, Void, IdentPtr, Int32, Int32, Int64, 3155ffd83dbSDimitry Andric Int64, Int64, Int64) 3165ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_init_8u, false, Void, IdentPtr, Int32, Int32, Int64, 3175ffd83dbSDimitry Andric Int64, Int64, Int64) 3185ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_next_4, false, Int32, IdentPtr, Int32, Int32Ptr, 3195ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr) 3205ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_next_4u, false, Int32, IdentPtr, Int32, Int32Ptr, 3215ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr) 3225ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_next_8, false, Int32, IdentPtr, Int32, Int32Ptr, 3235ffd83dbSDimitry Andric Int64Ptr, Int64Ptr, Int64Ptr) 3245ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_next_8u, false, Int32, IdentPtr, Int32, Int32Ptr, 3255ffd83dbSDimitry Andric Int64Ptr, Int64Ptr, Int64Ptr) 3265ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_fini_4, false, Void, IdentPtr, Int32) 3275ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_fini_4u, false, Void, IdentPtr, Int32) 3285ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_fini_8, false, Void, IdentPtr, Int32) 3295ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dispatch_fini_8u, false, Void, IdentPtr, Int32) 3305ffd83dbSDimitry Andric__OMP_RTL(__kmpc_team_static_init_4, false, Void, IdentPtr, Int32, Int32Ptr, 3315ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 3325ffd83dbSDimitry Andric__OMP_RTL(__kmpc_team_static_init_4u, false, Void, IdentPtr, Int32, Int32Ptr, 3335ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 3345ffd83dbSDimitry Andric__OMP_RTL(__kmpc_team_static_init_8, false, Void, IdentPtr, Int32, Int32Ptr, 3355ffd83dbSDimitry Andric Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 3365ffd83dbSDimitry Andric__OMP_RTL(__kmpc_team_static_init_8u, false, Void, IdentPtr, Int32, Int32Ptr, 3375ffd83dbSDimitry Andric Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 3385ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_for_static_init_4, false, Void, IdentPtr, Int32, Int32, 3395ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 3405ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_for_static_init_4u, false, Void, IdentPtr, Int32, Int32, 3415ffd83dbSDimitry Andric Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32) 3425ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_for_static_init_8, false, Void, IdentPtr, Int32, Int32, 3435ffd83dbSDimitry Andric Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 3445ffd83dbSDimitry Andric__OMP_RTL(__kmpc_dist_for_static_init_8u, false, Void, IdentPtr, Int32, Int32, 3455ffd83dbSDimitry Andric Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64) 3465ffd83dbSDimitry Andric 3475ffd83dbSDimitry Andric__OMP_RTL(__kmpc_single, false, Int32, IdentPtr, Int32) 3485ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end_single, false, Void, IdentPtr, Int32) 3495ffd83dbSDimitry Andric 3505ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_task_alloc, false, /* kmp_task_t */ VoidPtr, IdentPtr, 3515ffd83dbSDimitry Andric Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr) 3525ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_task, false, Int32, IdentPtr, Int32, 3535ffd83dbSDimitry Andric /* kmp_task_t */ VoidPtr) 3545ffd83dbSDimitry Andric__OMP_RTL(__kmpc_end_taskgroup, false, Void, IdentPtr, Int32) 3555ffd83dbSDimitry Andric__OMP_RTL(__kmpc_taskgroup, false, Void, IdentPtr, Int32) 3565ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_task_begin_if0, false, Void, IdentPtr, Int32, 3575ffd83dbSDimitry Andric /* kmp_task_t */ VoidPtr) 3585ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_task_complete_if0, false, Void, IdentPtr, Int32, 3595ffd83dbSDimitry Andric /* kmp_tasK_t */ VoidPtr) 3605ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_task_with_deps, false, Int32, IdentPtr, Int32, 3615ffd83dbSDimitry Andric /* kmp_task_t */ VoidPtr, Int32, 3625ffd83dbSDimitry Andric /* kmp_depend_info_t */ VoidPtr, Int32, 3635ffd83dbSDimitry Andric /* kmp_depend_info_t */ VoidPtr) 3645ffd83dbSDimitry Andric__OMP_RTL(__kmpc_taskloop, false, Void, IdentPtr, /* Int */ Int32, VoidPtr, 3655ffd83dbSDimitry Andric /* Int */ Int32, Int64Ptr, Int64Ptr, Int64, /* Int */ Int32, 3665ffd83dbSDimitry Andric /* Int */ Int32, Int64, VoidPtr) 3675ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_target_task_alloc, false, /* kmp_task_t */ VoidPtr, 3685ffd83dbSDimitry Andric IdentPtr, Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr, Int64) 369e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_taskred_modifier_init, false, /* kmp_taskgroup */ VoidPtr, 370e8d8bef9SDimitry Andric IdentPtr, /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr) 371e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_taskred_init, false, /* kmp_taskgroup */ VoidPtr, 372e8d8bef9SDimitry Andric /* Int */ Int32, /* Int */ Int32, VoidPtr) 3735ffd83dbSDimitry Andric__OMP_RTL(__kmpc_task_reduction_modifier_fini, false, Void, IdentPtr, 3745ffd83dbSDimitry Andric /* Int */ Int32, /* Int */ Int32) 3755ffd83dbSDimitry Andric__OMP_RTL(__kmpc_task_reduction_get_th_data, false, VoidPtr, Int32, VoidPtr, 3765ffd83dbSDimitry Andric VoidPtr) 3775ffd83dbSDimitry Andric__OMP_RTL(__kmpc_task_reduction_init, false, VoidPtr, Int32, Int32, VoidPtr) 3785ffd83dbSDimitry Andric__OMP_RTL(__kmpc_task_reduction_modifier_init, false, VoidPtr, VoidPtr, Int32, 3795ffd83dbSDimitry Andric Int32, Int32, VoidPtr) 3805ffd83dbSDimitry Andric__OMP_RTL(__kmpc_proxy_task_completed_ooo, false, Void, VoidPtr) 3815ffd83dbSDimitry Andric 3825ffd83dbSDimitry Andric__OMP_RTL(__kmpc_omp_wait_deps, false, Void, IdentPtr, Int32, Int32, 3835ffd83dbSDimitry Andric /* kmp_depend_info_t */ VoidPtr, Int32, VoidPtr) 384bdd1243dSDimitry Andric__OMP_RTL(__kmpc_omp_taskwait_deps_51, false, Void, IdentPtr, Int32, Int32, 385bdd1243dSDimitry Andric /* kmp_depend_info_t */ VoidPtr, Int32, VoidPtr, Int32) 3865ffd83dbSDimitry Andric__OMP_RTL(__kmpc_cancellationpoint, false, Int32, IdentPtr, Int32, Int32) 3875ffd83dbSDimitry Andric 3885ffd83dbSDimitry Andric__OMP_RTL(__kmpc_fork_teams, true, Void, IdentPtr, Int32, ParallelTaskPtr) 3895ffd83dbSDimitry Andric__OMP_RTL(__kmpc_push_num_teams, false, Void, IdentPtr, Int32, Int32, Int32) 390*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_push_num_teams_51, false, Void, IdentPtr, Int32, Int32, Int32, Int32) 391*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_set_thread_limit, false, Void, IdentPtr, Int32, Int32) 3925ffd83dbSDimitry Andric 3935ffd83dbSDimitry Andric__OMP_RTL(__kmpc_copyprivate, false, Void, IdentPtr, Int32, SizeTy, VoidPtr, 3945ffd83dbSDimitry Andric CopyFunctionPtr, Int32) 3955ffd83dbSDimitry Andric__OMP_RTL(__kmpc_threadprivate_cached, false, VoidPtr, IdentPtr, Int32, VoidPtr, 3965ffd83dbSDimitry Andric SizeTy, VoidPtrPtrPtr) 3975ffd83dbSDimitry Andric__OMP_RTL(__kmpc_threadprivate_register, false, Void, IdentPtr, VoidPtr, 3985ffd83dbSDimitry Andric KmpcCtorPtr, KmpcCopyCtorPtr, KmpcDtorPtr) 3995ffd83dbSDimitry Andric 4005ffd83dbSDimitry Andric__OMP_RTL(__kmpc_doacross_init, false, Void, IdentPtr, Int32, Int32, 4015ffd83dbSDimitry Andric /* kmp_dim */ VoidPtr) 4025ffd83dbSDimitry Andric__OMP_RTL(__kmpc_doacross_post, false, Void, IdentPtr, Int32, Int64Ptr) 4035ffd83dbSDimitry Andric__OMP_RTL(__kmpc_doacross_wait, false, Void, IdentPtr, Int32, Int64Ptr) 4045ffd83dbSDimitry Andric__OMP_RTL(__kmpc_doacross_fini, false, Void, IdentPtr, Int32) 4055ffd83dbSDimitry Andric 4065ffd83dbSDimitry Andric__OMP_RTL(__kmpc_alloc, false, VoidPtr, /* Int */ Int32, SizeTy, VoidPtr) 40704eeddc0SDimitry Andric__OMP_RTL(__kmpc_aligned_alloc, false, VoidPtr, /* Int */ Int32, SizeTy, SizeTy, 40804eeddc0SDimitry Andric VoidPtr) 4095ffd83dbSDimitry Andric__OMP_RTL(__kmpc_free, false, Void, /* Int */ Int32, VoidPtr, VoidPtr) 4105ffd83dbSDimitry Andric 411bdd1243dSDimitry Andric__OMP_RTL(__tgt_interop_init, false, Void, IdentPtr, Int32, VoidPtrPtr, Int32, 41206c3fb27SDimitry Andric Int32, Int32, VoidPtr, Int32) 4131fd87a68SDimitry Andric__OMP_RTL(__tgt_interop_destroy, false, Void, IdentPtr, Int32, VoidPtrPtr, 4141fd87a68SDimitry Andric Int32, Int32, VoidPtr, Int32) 4151fd87a68SDimitry Andric__OMP_RTL(__tgt_interop_use, false, Void, IdentPtr, Int32, VoidPtrPtr, Int32, 4161fd87a68SDimitry Andric Int32, VoidPtr, Int32) 4171fd87a68SDimitry Andric 4185ffd83dbSDimitry Andric__OMP_RTL(__kmpc_init_allocator, false, /* omp_allocator_handle_t */ VoidPtr, 4195ffd83dbSDimitry Andric /* Int */ Int32, /* omp_memespace_handle_t */ VoidPtr, 4205ffd83dbSDimitry Andric /* Int */ Int32, /* omp_alloctrait_t */ VoidPtr) 4215ffd83dbSDimitry Andric__OMP_RTL(__kmpc_destroy_allocator, false, Void, /* Int */ Int32, 4225ffd83dbSDimitry Andric /* omp_allocator_handle_t */ VoidPtr) 4235ffd83dbSDimitry Andric 424d409305fSDimitry Andric__OMP_RTL(__kmpc_push_target_tripcount_mapper, false, Void, IdentPtr, Int64, Int64) 425e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_mapper, false, Int32, IdentPtr, Int64, VoidPtr, Int32, VoidPtrPtr, 426e8d8bef9SDimitry Andric VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 427fe6060f1SDimitry Andric__OMP_RTL(__tgt_target_nowait_mapper, false, Int32, IdentPtr, Int64, VoidPtr, 428fe6060f1SDimitry Andric Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, 429fe6060f1SDimitry Andric VoidPtrPtr, Int32, VoidPtr, Int32, VoidPtr) 430e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_teams_mapper, false, Int32, IdentPtr, Int64, VoidPtr, Int32, 431e8d8bef9SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, Int32, Int32) 432fe6060f1SDimitry Andric__OMP_RTL(__tgt_target_teams_nowait_mapper, false, Int32, IdentPtr, Int64, 433fe6060f1SDimitry Andric VoidPtr, Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, 434fe6060f1SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int32, Int32, Int32, VoidPtr, Int32, VoidPtr) 435753f127fSDimitry Andric__OMP_RTL(__tgt_target_kernel, false, Int32, IdentPtr, Int64, Int32, Int32, 436753f127fSDimitry Andric VoidPtr, KernelArgsPtr) 437753f127fSDimitry Andric__OMP_RTL(__tgt_target_kernel_nowait, false, Int32, IdentPtr, Int64, Int32, 438753f127fSDimitry Andric Int32, VoidPtr, KernelArgsPtr, Int32, VoidPtr, Int32, VoidPtr) 4395ffd83dbSDimitry Andric__OMP_RTL(__tgt_register_requires, false, Void, Int64) 440e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_begin_mapper, false, Void, IdentPtr, Int64, Int32, VoidPtrPtr, 441e8d8bef9SDimitry Andric VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 442e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_begin_nowait_mapper, false, Void, IdentPtr, Int64, Int32, 443e8d8bef9SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 444e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_begin_mapper_issue, false, Void, IdentPtr, Int64, Int32, 445e8d8bef9SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, AsyncInfoPtr) 446e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_begin_mapper_wait, false, Void, Int64, AsyncInfoPtr) 447e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_end_mapper, false, Void, IdentPtr, Int64, Int32, VoidPtrPtr, 448e8d8bef9SDimitry Andric VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 449e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_end_nowait_mapper, false, Void, IdentPtr, Int64, Int32, 450e8d8bef9SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 451e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_update_mapper, false, Void, IdentPtr, Int64, Int32, 452e8d8bef9SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 453e8d8bef9SDimitry Andric__OMP_RTL(__tgt_target_data_update_nowait_mapper, false, Void, IdentPtr, Int64, Int32, 454e8d8bef9SDimitry Andric VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr) 4555ffd83dbSDimitry Andric__OMP_RTL(__tgt_mapper_num_components, false, Int64, VoidPtr) 4565ffd83dbSDimitry Andric__OMP_RTL(__tgt_push_mapper_component, false, Void, VoidPtr, VoidPtr, VoidPtr, 457e8d8bef9SDimitry Andric Int64, Int64, VoidPtr) 4585ffd83dbSDimitry Andric__OMP_RTL(__kmpc_task_allow_completion_event, false, VoidPtr, IdentPtr, 4595ffd83dbSDimitry Andric /* Int */ Int32, /* kmp_task_t */ VoidPtr) 4605ffd83dbSDimitry Andric 461e8d8bef9SDimitry Andric/// OpenMP Device runtime functions 462*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_target_init, false, Int32, KernelEnvironmentPtr, KernelLaunchEnvironmentPtr) 463*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_target_deinit, false, Void,) 4645ffd83dbSDimitry Andric__OMP_RTL(__kmpc_kernel_prepare_parallel, false, Void, VoidPtr) 465fe6060f1SDimitry Andric__OMP_RTL(__kmpc_parallel_51, false, Void, IdentPtr, Int32, Int32, Int32, Int32, 466fe6060f1SDimitry Andric VoidPtr, VoidPtr, VoidPtrPtr, SizeTy) 467*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_for_static_loop_4, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32) 468*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_for_static_loop_4u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32) 469*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_for_static_loop_8, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64) 470*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_for_static_loop_8u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64) 471*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_static_loop_4, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32) 472*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_static_loop_4u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32) 473*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_static_loop_8, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64) 474*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_static_loop_8u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64) 475*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_for_static_loop_4, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32, Int32) 476*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_for_static_loop_4u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32, Int32) 477*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_for_static_loop_8, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64, Int64) 478*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_distribute_for_static_loop_8u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64, Int64) 479e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_kernel_parallel, false, Int1, VoidPtrPtr) 480e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_kernel_end_parallel, false, Void, ) 481e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_serialized_parallel, false, Void, IdentPtr, Int32) 482e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_end_serialized_parallel, false, Void, IdentPtr, Int32) 483e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_shuffle_int32, false, Int32, Int32, Int16, Int16) 484*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_nvptx_parallel_reduce_nowait_v2, false, Int32, IdentPtr, 485*5f757f3fSDimitry Andric Int64, VoidPtr, ShuffleReducePtr, InterWarpCopyPtr) 486*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_nvptx_teams_reduce_nowait_v2, false, Int32, IdentPtr, 487*5f757f3fSDimitry Andric VoidPtr, Int32, Int64, VoidPtr, ShuffleReducePtr, InterWarpCopyPtr, 488e8d8bef9SDimitry Andric GlobalListPtr, GlobalListPtr, GlobalListPtr, GlobalListPtr) 489*5f757f3fSDimitry Andric__OMP_RTL(__kmpc_reduction_get_fixed_buffer, false, VoidPtr, ) 490e8d8bef9SDimitry Andric 491e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_shuffle_int64, false, Int64, Int64, Int16, Int16) 492e8d8bef9SDimitry Andric 493fe6060f1SDimitry Andric__OMP_RTL(__kmpc_alloc_shared, false, VoidPtr, SizeTy) 494fe6060f1SDimitry Andric__OMP_RTL(__kmpc_free_shared, false, Void, VoidPtr, SizeTy) 495e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_begin_sharing_variables, false, Void, VoidPtrPtrPtr, SizeTy) 496e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_end_sharing_variables, false, Void, ) 497e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_get_shared_variables, false, Void, VoidPtrPtrPtr) 498bdd1243dSDimitry Andric__OMP_RTL(__kmpc_parallel_level, false, Int16, IdentPtr, Int32) 499e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_is_spmd_exec_mode, false, Int8, ) 500e8d8bef9SDimitry Andric__OMP_RTL(__kmpc_barrier_simple_spmd, false, Void, IdentPtr, Int32) 501349cc55cSDimitry Andric__OMP_RTL(__kmpc_barrier_simple_generic, false, Void, IdentPtr, Int32) 502e8d8bef9SDimitry Andric 503349cc55cSDimitry Andric__OMP_RTL(__kmpc_warp_active_thread_mask, false, Int64,) 504349cc55cSDimitry Andric__OMP_RTL(__kmpc_syncwarp, false, Void, Int64) 505349cc55cSDimitry Andric 5065ffd83dbSDimitry Andric__OMP_RTL(__last, false, Void, ) 507480093f4SDimitry Andric 508480093f4SDimitry Andric#undef __OMP_RTL 509480093f4SDimitry Andric#undef OMP_RTL 510480093f4SDimitry Andric 511e8d8bef9SDimitry Andric#define ParamAttrs(...) ArrayRef<AttributeSet>({__VA_ARGS__}) 512480093f4SDimitry Andric#define EnumAttr(Kind) Attribute::get(Ctx, Attribute::AttrKind::Kind) 513e8d8bef9SDimitry Andric#define EnumAttrInt(Kind, N) Attribute::get(Ctx, Attribute::AttrKind::Kind, N) 51481ad6265SDimitry Andric#define AllocSizeAttr(N, M) Attribute::getWithAllocSizeArgs(Ctx, N, M) 515bdd1243dSDimitry Andric#define MemoryAttr(ME) Attribute::getWithMemoryEffects(Ctx, ME) 516480093f4SDimitry Andric#define AttributeSet(...) \ 517480093f4SDimitry Andric AttributeSet::get(Ctx, ArrayRef<Attribute>({__VA_ARGS__})) 518480093f4SDimitry Andric 519480093f4SDimitry Andric#ifndef OMP_ATTRS_SET 520480093f4SDimitry Andric#define OMP_ATTRS_SET(VarName, AttrSet) 521480093f4SDimitry Andric#endif 522480093f4SDimitry Andric 523480093f4SDimitry Andric#define __OMP_ATTRS_SET(VarName, AttrSet) OMP_ATTRS_SET(VarName, AttrSet) 524480093f4SDimitry Andric 525bdd1243dSDimitry Andric__OMP_ATTRS_SET( 526bdd1243dSDimitry Andric GetterAttrs, 527480093f4SDimitry Andric OptimisticAttributes 528bdd1243dSDimitry Andric ? AttributeSet( 529bdd1243dSDimitry Andric EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree), 530bdd1243dSDimitry Andric EnumAttr(WillReturn), 531bdd1243dSDimitry Andric MemoryAttr(MemoryEffects::inaccessibleMemOnly(ModRefInfo::Ref))) 5325ffd83dbSDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 533bdd1243dSDimitry Andric__OMP_ATTRS_SET( 53406c3fb27SDimitry Andric GetterArgReadAttrs, 53506c3fb27SDimitry Andric OptimisticAttributes 53606c3fb27SDimitry Andric ? AttributeSet( 53706c3fb27SDimitry Andric EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree), 53806c3fb27SDimitry Andric EnumAttr(WillReturn), 53906c3fb27SDimitry Andric MemoryAttr(MemoryEffects::inaccessibleOrArgMemOnly(ModRefInfo::Ref))) 54006c3fb27SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 54106c3fb27SDimitry Andric__OMP_ATTRS_SET( 542bdd1243dSDimitry Andric GetterArgWriteAttrs, 5435ffd83dbSDimitry Andric OptimisticAttributes 544bdd1243dSDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree), 545bdd1243dSDimitry Andric EnumAttr(WillReturn), 54606c3fb27SDimitry Andric MemoryAttr(MemoryEffects::argMemOnly() | MemoryEffects::inaccessibleMemOnly(ModRefInfo::Ref))) 5475ffd83dbSDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 548bdd1243dSDimitry Andric__OMP_ATTRS_SET( 549bdd1243dSDimitry Andric SetterAttrs, 5505ffd83dbSDimitry Andric OptimisticAttributes 551bdd1243dSDimitry Andric ? AttributeSet( 552bdd1243dSDimitry Andric EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree), 553bdd1243dSDimitry Andric EnumAttr(WillReturn), 554bdd1243dSDimitry Andric MemoryAttr(MemoryEffects::inaccessibleMemOnly(ModRefInfo::Mod))) 555480093f4SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 556480093f4SDimitry Andric 557e8d8bef9SDimitry Andric__OMP_ATTRS_SET(DefaultAttrs, 558e8d8bef9SDimitry Andric OptimisticAttributes 559e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 560e8d8bef9SDimitry Andric EnumAttr(WillReturn), EnumAttr(NoFree)) 561e8d8bef9SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 562e8d8bef9SDimitry Andric 563e8d8bef9SDimitry Andric__OMP_ATTRS_SET(BarrierAttrs, 564e8d8bef9SDimitry Andric OptimisticAttributes 565e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(Convergent)) 566e8d8bef9SDimitry Andric : AttributeSet(EnumAttr(NoUnwind), EnumAttr(Convergent))) 567e8d8bef9SDimitry Andric 568bdd1243dSDimitry Andric__OMP_ATTRS_SET( 569bdd1243dSDimitry Andric InaccessibleArgOnlyAttrs, 570e8d8bef9SDimitry Andric OptimisticAttributes 571bdd1243dSDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree), 572bdd1243dSDimitry Andric EnumAttr(WillReturn), 573bdd1243dSDimitry Andric MemoryAttr(MemoryEffects::inaccessibleOrArgMemOnly())) 574e8d8bef9SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 575e8d8bef9SDimitry Andric 576349cc55cSDimitry Andric__OMP_ATTRS_SET(AlwaysInlineAttrs, 577349cc55cSDimitry Andric OptimisticAttributes 578349cc55cSDimitry Andric ? AttributeSet(EnumAttr(AlwaysInline)) 579349cc55cSDimitry Andric : AttributeSet(EnumAttr(AlwaysInline))) 580349cc55cSDimitry Andric 581e8d8bef9SDimitry Andric#if 0 582bdd1243dSDimitry Andric__OMP_ATTRS_SET( 583bdd1243dSDimitry Andric InaccessibleOnlyAttrs, 584e8d8bef9SDimitry Andric OptimisticAttributes 585bdd1243dSDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree), 586bdd1243dSDimitry Andric EnumAttr(WillReturn), 587bdd1243dSDimitry Andric MemoryAttr(MemoryEffects::inaccessibleMemOnly())) 588e8d8bef9SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 589e8d8bef9SDimitry Andric#endif 590e8d8bef9SDimitry Andric 591e8d8bef9SDimitry Andric__OMP_ATTRS_SET(AllocAttrs, 592e8d8bef9SDimitry Andric OptimisticAttributes 593e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 594e8d8bef9SDimitry Andric EnumAttr(WillReturn)) 595e8d8bef9SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 596e8d8bef9SDimitry Andric 597e8d8bef9SDimitry Andric__OMP_ATTRS_SET(ForkAttrs, OptimisticAttributes 598e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(NoUnwind)) 599e8d8bef9SDimitry Andric : AttributeSet(EnumAttr(NoUnwind))) 600e8d8bef9SDimitry Andric 601e8d8bef9SDimitry Andric__OMP_ATTRS_SET(ReadOnlyPtrAttrs, 602e8d8bef9SDimitry Andric OptimisticAttributes 603e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(ReadOnly), EnumAttr(NoFree), 604e8d8bef9SDimitry Andric EnumAttr(NoCapture)) 605e8d8bef9SDimitry Andric : AttributeSet()) 606e8d8bef9SDimitry Andric 607349cc55cSDimitry Andric__OMP_ATTRS_SET(DeviceAllocAttrs, 608349cc55cSDimitry Andric OptimisticAttributes 609349cc55cSDimitry Andric ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync)) 610349cc55cSDimitry Andric : AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync))) 611349cc55cSDimitry Andric 612e8d8bef9SDimitry Andric#if 0 613e8d8bef9SDimitry Andric__OMP_ATTRS_SET(WriteOnlyPtrAttrs, 614e8d8bef9SDimitry Andric OptimisticAttributes 615e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(WriteOnly), EnumAttr(NoFree), 616e8d8bef9SDimitry Andric EnumAttr(NoCapture)) 617e8d8bef9SDimitry Andric : AttributeSet()) 618e8d8bef9SDimitry Andric#endif 619e8d8bef9SDimitry Andric 620e8d8bef9SDimitry Andric__OMP_ATTRS_SET(ArgPtrAttrs, 621e8d8bef9SDimitry Andric OptimisticAttributes 622e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(NoCapture), EnumAttr(NoFree)) 623e8d8bef9SDimitry Andric : AttributeSet()) 624e8d8bef9SDimitry Andric 625*5f757f3fSDimitry Andric__OMP_ATTRS_SET(ReturnPtrAttrs, AttributeSet(EnumAttr(NoAlias))) 626e8d8bef9SDimitry Andric 627bdd1243dSDimitry Andric__OMP_ATTRS_SET(ZExt, AttributeSet(EnumAttr(ZExt))) 628bdd1243dSDimitry Andric__OMP_ATTRS_SET(SExt, AttributeSet(EnumAttr(SExt))) 629bdd1243dSDimitry Andric__OMP_ATTRS_SET(SizeTyExt, 630bdd1243dSDimitry Andric M.getDataLayout().getIntPtrType(Ctx)->getBitWidth() < 64 631bdd1243dSDimitry Andric ? AttributeSet(EnumAttr(ZExt)) 632bdd1243dSDimitry Andric : AttributeSet()) 633bdd1243dSDimitry Andric 634e8d8bef9SDimitry Andric#if 0 635e8d8bef9SDimitry Andric__OMP_ATTRS_SET(ReturnAlignedPtrAttrs, 636e8d8bef9SDimitry Andric OptimisticAttributes 637e8d8bef9SDimitry Andric ? AttributeSet(EnumAttr(NoAlias), EnumAttrInt(Alignment, 8), 638e8d8bef9SDimitry Andric EnumAttrInt(DereferenceableOrNull, 8)) 639e8d8bef9SDimitry Andric : AttributeSet()) 640e8d8bef9SDimitry Andric#endif 641e8d8bef9SDimitry Andric 642480093f4SDimitry Andric#undef __OMP_ATTRS_SET 643480093f4SDimitry Andric#undef OMP_ATTRS_SET 644480093f4SDimitry Andric 645480093f4SDimitry Andric#ifndef OMP_RTL_ATTRS 646480093f4SDimitry Andric#define OMP_RTL_ATTRS(Enum, FnAttrSet, RetAttrSet, ArgAttrSets) 647480093f4SDimitry Andric#endif 648480093f4SDimitry Andric 649480093f4SDimitry Andric#define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets) \ 650480093f4SDimitry Andric OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets) 651480093f4SDimitry Andric 652e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_barrier, BarrierAttrs, AttributeSet(), 653bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 654e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_barrier_simple_spmd, BarrierAttrs, AttributeSet(), 655bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 656349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_barrier_simple_generic, BarrierAttrs, AttributeSet(), 657bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 658e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_warp_active_thread_mask, BarrierAttrs, AttributeSet(), 659e8d8bef9SDimitry Andric ParamAttrs()) 660e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_syncwarp, BarrierAttrs, AttributeSet(), ParamAttrs()) 661bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, SExt, 662bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 663bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, SExt, 664bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 665*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_for_static_loop_4, AlwaysInlineAttrs, AttributeSet(), 666*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 667*5f757f3fSDimitry Andric SExt, SExt, SExt, SExt)) 668*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_for_static_loop_4u, AlwaysInlineAttrs, AttributeSet(), 669*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 670*5f757f3fSDimitry Andric ZExt, ZExt, ZExt, ZExt)) 671*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_loop_4, AlwaysInlineAttrs, AttributeSet(), 672*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 673*5f757f3fSDimitry Andric SExt, SExt)) 674*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_loop_4u, AlwaysInlineAttrs, AttributeSet(), 675*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 676*5f757f3fSDimitry Andric ZExt, ZExt)) 677*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_loop_4, AlwaysInlineAttrs, AttributeSet(), 678*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 679*5f757f3fSDimitry Andric SExt, SExt, SExt)) 680*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_loop_4u, AlwaysInlineAttrs, AttributeSet(), 681*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(), 682*5f757f3fSDimitry Andric ZExt, ZExt, ZExt)) 683bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_error, AttributeSet(), AttributeSet(), 684bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SExt)) 685e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, AttributeSet(), 686e8d8bef9SDimitry Andric ParamAttrs(ReadOnlyPtrAttrs)) 68706c3fb27SDimitry Andric__OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterArgReadAttrs, SExt, 688e8d8bef9SDimitry Andric ParamAttrs(ReadOnlyPtrAttrs)) 689bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_get_hardware_thread_id_in_block, GetterAttrs, ZExt, 690bdd1243dSDimitry Andric ParamAttrs()) 691e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_fork_call, ForkAttrs, AttributeSet(), 692bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs)) 693bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_fork_call_if, AttributeSet(), AttributeSet(), 694bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs, SExt)) 695bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, SExt, 696bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 697bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, SExt, 698bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 699e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs, 700bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 701e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(), 702bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 703bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, SExt, 704bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs, 705bdd1243dSDimitry Andric SExt, ReadOnlyPtrAttrs)) 706480093f4SDimitry Andric 707bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_get_hardware_num_blocks, GetterAttrs, ZExt, ParamAttrs()) 708bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_get_hardware_num_threads_in_block, GetterAttrs, ZExt, ParamAttrs()) 709bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_get_warp_size, GetterAttrs, ZExt, ParamAttrs()) 710fe6060f1SDimitry Andric 711bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, SExt, ParamAttrs()) 712bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, SExt, ParamAttrs()) 713bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, SExt, ParamAttrs()) 714bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, SExt, ParamAttrs()) 715bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, SExt, ParamAttrs()) 716bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, SExt, ParamAttrs()) 717bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, SExt, ParamAttrs()) 718e8d8bef9SDimitry Andric__OMP_RTL_ATTRS( 719e8d8bef9SDimitry Andric omp_get_schedule, GetterArgWriteAttrs, AttributeSet(), 720e8d8bef9SDimitry Andric ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)), 721e8d8bef9SDimitry Andric AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)))) 722bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, SExt, ParamAttrs()) 723bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, SExt, ParamAttrs()) 724bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, SExt, ParamAttrs()) 725bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_level, GetterAttrs, SExt, ParamAttrs()) 726bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, SExt, ParamAttrs(SExt)) 727bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, SExt, ParamAttrs(SExt)) 728bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, SExt, ParamAttrs()) 729bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_in_final, GetterAttrs, SExt, ParamAttrs()) 730bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, SExt, ParamAttrs()) 731bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, SExt, ParamAttrs()) 732bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, SExt, ParamAttrs()) 7335ffd83dbSDimitry Andric__OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(), 734bdd1243dSDimitry Andric ParamAttrs(SExt, AttributeSet(EnumAttr(NoCapture), 735e8d8bef9SDimitry Andric EnumAttr(WriteOnly)))) 736bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, SExt, ParamAttrs()) 737bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, SExt, ParamAttrs()) 73806c3fb27SDimitry Andric__OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterArgWriteAttrs, AttributeSet(), 739e8d8bef9SDimitry Andric ParamAttrs()) 74006c3fb27SDimitry Andric__OMP_RTL_ATTRS(omp_get_wtime, GetterAttrs, AttributeSet(), ParamAttrs()) 7415ffd83dbSDimitry Andric 742bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(), 743bdd1243dSDimitry Andric ParamAttrs(SExt)) 744bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs(SExt)) 745bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs(SExt)) 746bdd1243dSDimitry Andric__OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(), 747bdd1243dSDimitry Andric ParamAttrs(SExt, SExt)) 748e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(), 749bdd1243dSDimitry Andric ParamAttrs(SExt)) 7505ffd83dbSDimitry Andric 751bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, SExt, 752bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 753e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(), 754bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 755bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_masked, InaccessibleArgOnlyAttrs, SExt, 756bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 757fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_masked, InaccessibleArgOnlyAttrs, AttributeSet(), 758bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 759e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(), 760bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet())) 761e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(), 762bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), ZExt)) 763e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(), 764bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet())) 7655ffd83dbSDimitry Andric 766e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(), 767bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 768e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, AttributeSet(), 769e8d8bef9SDimitry Andric ParamAttrs(ReadOnlyPtrAttrs)) 7705ffd83dbSDimitry Andric 771bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, SExt, 772bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt, 773bdd1243dSDimitry Andric ReadOnlyPtrAttrs, AttributeSet())) 774bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, SExt, 775bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt, 776bdd1243dSDimitry Andric ReadOnlyPtrAttrs, AttributeSet())) 777e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(), 778bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet())) 779e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(), 780bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet())) 7815ffd83dbSDimitry Andric 782e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(), 783bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 784e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(), 785bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 7865ffd83dbSDimitry Andric 787e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(), 788bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 789bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt)) 790e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(), 791bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 792bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt)) 793e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(), 794bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 795bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 796e8d8bef9SDimitry Andric AttributeSet(), AttributeSet())) 797e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(), 798bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 799bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 800e8d8bef9SDimitry Andric AttributeSet(), AttributeSet())) 801e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs, 802bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 803349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_init_4, GetterArgWriteAttrs, 804349cc55cSDimitry Andric AttributeSet(), 805bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 806bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt)) 807349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_init_4u, GetterArgWriteAttrs, 808349cc55cSDimitry Andric AttributeSet(), 809bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 810bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt)) 811349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_init_8, GetterArgWriteAttrs, 812349cc55cSDimitry Andric AttributeSet(), 813bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 814bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 815349cc55cSDimitry Andric AttributeSet(), AttributeSet())) 816349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_init_8u, GetterArgWriteAttrs, 817349cc55cSDimitry Andric AttributeSet(), 818bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 819bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 820349cc55cSDimitry Andric AttributeSet(), AttributeSet())) 821349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_distribute_static_fini, InaccessibleArgOnlyAttrs, 822bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 823e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs, 824e8d8bef9SDimitry Andric AttributeSet(), 825bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, SExt, 826bdd1243dSDimitry Andric SExt, SExt, SExt)) 827e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs, 828e8d8bef9SDimitry Andric AttributeSet(), 829bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, ZExt, 830bdd1243dSDimitry Andric ZExt, SExt, SExt)) 831e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs, 832e8d8bef9SDimitry Andric AttributeSet(), 833bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs)) 834e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs, 835e8d8bef9SDimitry Andric AttributeSet(), 836bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs)) 837e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(), 838bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt, SExt, SExt, SExt)) 839e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(), 840bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ZExt, ZExt, SExt, SExt)) 841e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(), 842bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 843e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(), 844bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 845bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, SExt, 846bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 847bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs)) 848bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, SExt, 849bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 850bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs)) 851bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, SExt, 852bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 853bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs)) 854bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, SExt, 855bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 856bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs)) 857e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs, 858bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 859e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs, 860bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 861e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs, 862bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 863e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs, 864bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 865e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(), 866bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 867bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, SExt, SExt)) 868e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(), 869bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 870bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, SExt, SExt)) 871e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(), 872bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 873bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs)) 874e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(), 875bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs, 876bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs)) 877e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs, 878e8d8bef9SDimitry Andric AttributeSet(), 879bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 880bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 881bdd1243dSDimitry Andric ArgPtrAttrs, SExt, SExt)) 882e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs, 883e8d8bef9SDimitry Andric AttributeSet(), 884bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 885bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, 886bdd1243dSDimitry Andric ArgPtrAttrs, SExt, SExt)) 887e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs, 888e8d8bef9SDimitry Andric AttributeSet(), 889bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 890bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 891e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs, 892e8d8bef9SDimitry Andric AttributeSet(), 893bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, 894bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs)) 8955ffd83dbSDimitry Andric 896bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_single, BarrierAttrs, SExt, 897bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 898e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_single, BarrierAttrs, AttributeSet(), 899bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 9005ffd83dbSDimitry Andric 901e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, ReturnPtrAttrs, 902bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt, SizeTyExt, 903e8d8bef9SDimitry Andric ReadOnlyPtrAttrs)) 904bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, SExt, 905bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet())) 906bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_taskgroup, BarrierAttrs, AttributeSet(), 907bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 908bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_taskgroup, BarrierAttrs, AttributeSet(), 909bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 910bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(), 911bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 912bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(), 913bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 914bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, SExt, 915bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SExt, 916bdd1243dSDimitry Andric ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs)) 917e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(), 918bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SExt, 919bdd1243dSDimitry Andric ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), SExt, SExt)) 920e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, ReturnPtrAttrs, 921bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt, SizeTyExt, 922bdd1243dSDimitry Andric ReadOnlyPtrAttrs, AttributeSet())) 923*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, AttributeSet(), 924bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt)) 925bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(), 926bdd1243dSDimitry Andric ParamAttrs(SExt, SExt)) 927e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs, 928bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 929*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, AttributeSet(), 930bdd1243dSDimitry Andric ParamAttrs(SExt)) 931*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, AttributeSet(), 932bdd1243dSDimitry Andric ParamAttrs(SExt, SExt)) 933e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs, 934*5f757f3fSDimitry Andric AttributeSet(), ParamAttrs(AttributeSet(), SExt, SExt, SExt)) 935e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, AttributeSet(), 936e8d8bef9SDimitry Andric ParamAttrs()) 9375ffd83dbSDimitry Andric 938e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_wait_deps, BarrierAttrs, AttributeSet(), 939bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ReadOnlyPtrAttrs, SExt)) 940bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_omp_taskwait_deps_51, BarrierAttrs, AttributeSet(), 941bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ReadOnlyPtrAttrs)) 942bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, SExt, 943bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 9445ffd83dbSDimitry Andric 945e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_fork_teams, ForkAttrs, AttributeSet(), 946bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs)) 947e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, AttributeSet(), 948bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt)) 949*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_set_thread_limit, InaccessibleArgOnlyAttrs, AttributeSet(), 950*5f757f3fSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 9515ffd83dbSDimitry Andric 952e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_copyprivate, DefaultAttrs, AttributeSet(), 953bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SizeTyExt, 954bdd1243dSDimitry Andric ReadOnlyPtrAttrs, AttributeSet(), SExt)) 955*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, AttributeSet(), 956bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SizeTyExt)) 957e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, AttributeSet(), 958e8d8bef9SDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs, 959e8d8bef9SDimitry Andric ReadOnlyPtrAttrs, ReadOnlyPtrAttrs)) 9605ffd83dbSDimitry Andric 961e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_doacross_init, BarrierAttrs, AttributeSet(), 962bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt)) 963e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_doacross_post, BarrierAttrs, AttributeSet(), 964bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs)) 965e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_doacross_wait, BarrierAttrs, AttributeSet(), 966bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs)) 967e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_doacross_fini, BarrierAttrs, AttributeSet(), 968bdd1243dSDimitry Andric ParamAttrs(ReadOnlyPtrAttrs, SExt)) 9695ffd83dbSDimitry Andric 970bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_alloc_shared, 971bdd1243dSDimitry Andric AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), 972bdd1243dSDimitry Andric AllocSizeAttr(0, std::nullopt)), 973bdd1243dSDimitry Andric ReturnPtrAttrs, ParamAttrs(SizeTyExt)) 974349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_free_shared, DeviceAllocAttrs, AttributeSet(), 975bdd1243dSDimitry Andric ParamAttrs(AttributeSet(EnumAttr(NoCapture), 976bdd1243dSDimitry Andric EnumAttr(AllocatedPointer)), 977bdd1243dSDimitry Andric SizeTyExt)) 978bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_begin_sharing_variables, AttributeSet(), AttributeSet(), 979bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SizeTyExt)) 9805ffd83dbSDimitry Andric 981bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs, 982bdd1243dSDimitry Andric ParamAttrs(SExt, SizeTyExt)) 98304eeddc0SDimitry Andric__OMP_RTL_ATTRS(__kmpc_aligned_alloc, DefaultAttrs, ReturnPtrAttrs, 984bdd1243dSDimitry Andric ParamAttrs(SExt, SizeTyExt, SizeTyExt)) 985bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(), 986bdd1243dSDimitry Andric ParamAttrs(SExt)) 987bdd1243dSDimitry Andric 988bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_interop_init, AttributeSet(), AttributeSet(), 989bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SExt, AttributeSet(), SExt, 990bdd1243dSDimitry Andric SExt, AttributeSet(), AttributeSet(), SExt)) 991bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_interop_destroy, AttributeSet(), AttributeSet(), 992bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SExt, AttributeSet(), SExt, SExt, 993bdd1243dSDimitry Andric AttributeSet(), SExt)) 994bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_interop_use, AttributeSet(), AttributeSet(), 995bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SExt, AttributeSet(), SExt, SExt, 996bdd1243dSDimitry Andric AttributeSet(), SExt)) 9975ffd83dbSDimitry Andric 998*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_init_allocator, DefaultAttrs, AttributeSet(), 999bdd1243dSDimitry Andric ParamAttrs(SExt, AttributeSet(), SExt)) 1000fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, AttributeSet(), 1001bdd1243dSDimitry Andric ParamAttrs(SExt)) 1002fe6060f1SDimitry Andric 1003fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__kmpc_push_target_tripcount_mapper, SetterAttrs, 1004fe6060f1SDimitry Andric AttributeSet(), ParamAttrs()) 1005bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_mapper, ForkAttrs, SExt, 1006bdd1243dSDimitry Andric ParamAttrs(AttributeSet(),AttributeSet(),AttributeSet(), SExt)) 1007bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, SExt, 1008bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), SExt, 1009bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1010bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1011bdd1243dSDimitry Andric SExt, AttributeSet(), SExt)) 1012bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, SExt, 1013bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), SExt, 1014bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1015bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), SExt, 1016bdd1243dSDimitry Andric SExt)) 1017bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs, SExt, 1018bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), SExt, 1019bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1020bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1021bdd1243dSDimitry Andric SExt, SExt, SExt, AttributeSet(), SExt)) 1022bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_kernel, ForkAttrs, SExt, 1023bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt, SExt)) 1024bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_kernel_nowait, ForkAttrs, SExt, 1025bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt, SExt, 1026bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), SExt, AttributeSet(), 1027bdd1243dSDimitry Andric SExt)) 1028fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__tgt_register_requires, ForkAttrs, AttributeSet(), 1029fe6060f1SDimitry Andric ParamAttrs()) 1030fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper, ForkAttrs, AttributeSet(), 1031bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt)) 1032bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs, AttributeSet(), 1033bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt, AttributeSet(), 1034bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1035bdd1243dSDimitry Andric AttributeSet(), AttributeSet())) 1036bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_begin_mapper_issue, AttributeSet(), 1037bdd1243dSDimitry Andric AttributeSet(), 1038bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt)) 1039fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_end_mapper, ForkAttrs, AttributeSet(), 1040bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt)) 1041bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs, AttributeSet(), 1042bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt, AttributeSet(), 1043bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1044bdd1243dSDimitry Andric AttributeSet(), AttributeSet())) 1045fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_update_mapper, ForkAttrs, AttributeSet(), 1046bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt)) 1047bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, ForkAttrs, AttributeSet(), 1048bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), SExt, AttributeSet(), 1049bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1050bdd1243dSDimitry Andric AttributeSet(), AttributeSet())) 1051fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__tgt_mapper_num_components, ForkAttrs, AttributeSet(), 1052fe6060f1SDimitry Andric ParamAttrs()) 1053fe6060f1SDimitry Andric__OMP_RTL_ATTRS(__tgt_push_mapper_component, ForkAttrs, AttributeSet(), 1054fe6060f1SDimitry Andric ParamAttrs()) 1055e8d8bef9SDimitry Andric__OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs, 1056*5f757f3fSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 1057480093f4SDimitry Andric 1058bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_target_init, AttributeSet(), SExt, 1059*5f757f3fSDimitry Andric ParamAttrs(AttributeSet())) 1060bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_target_deinit, AttributeSet(), AttributeSet(), 1061*5f757f3fSDimitry Andric ParamAttrs()) 1062349cc55cSDimitry Andric__OMP_RTL_ATTRS(__kmpc_parallel_51, AlwaysInlineAttrs, AttributeSet(), 1063bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SExt, SExt, SExt, SExt, 1064bdd1243dSDimitry Andric AttributeSet(), AttributeSet(), AttributeSet(), 1065bdd1243dSDimitry Andric SizeTyExt)) 1066bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs, 1067bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 1068bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs, 1069bdd1243dSDimitry Andric AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt)) 1070bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_shuffle_int32, AttributeSet(), SExt, 1071bdd1243dSDimitry Andric ParamAttrs(SExt, SExt, SExt)) 1072bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_nvptx_parallel_reduce_nowait_v2, AttributeSet(), SExt, 1073*5f757f3fSDimitry Andric ParamAttrs()) 1074bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_nvptx_teams_reduce_nowait_v2, AttributeSet(), SExt, 1075*5f757f3fSDimitry Andric ParamAttrs(AttributeSet(), AttributeSet(), ZExt)) 1076*5f757f3fSDimitry Andric__OMP_RTL_ATTRS(__kmpc_reduction_get_fixed_buffer, GetterAttrs, AttributeSet(), ParamAttrs()) 1077bdd1243dSDimitry Andric 1078bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_shuffle_int64, AttributeSet(), AttributeSet(), 1079bdd1243dSDimitry Andric ParamAttrs(AttributeSet(), SExt, SExt)) 1080bdd1243dSDimitry Andric 1081bdd1243dSDimitry Andric__OMP_RTL_ATTRS(__kmpc_is_spmd_exec_mode, AttributeSet(), SExt, ParamAttrs()) 1082349cc55cSDimitry Andric 1083480093f4SDimitry Andric#undef __OMP_RTL_ATTRS 1084480093f4SDimitry Andric#undef OMP_RTL_ATTRS 1085480093f4SDimitry Andric#undef AttributeSet 1086480093f4SDimitry Andric#undef EnumAttr 1087e8d8bef9SDimitry Andric#undef EnumAttrInt 1088e8d8bef9SDimitry Andric#undef ParamAttrs 108981ad6265SDimitry Andric#undef AllocSizeAttr 1090480093f4SDimitry Andric 1091480093f4SDimitry Andric///} 1092480093f4SDimitry Andric 1093480093f4SDimitry Andric/// KMP ident_t bit flags 1094480093f4SDimitry Andric/// 1095480093f4SDimitry Andric/// In accordance with the values in `openmp/runtime/src/kmp.h`. 1096480093f4SDimitry Andric/// 1097480093f4SDimitry Andric///{ 1098480093f4SDimitry Andric 1099480093f4SDimitry Andric#ifndef OMP_IDENT_FLAG 1100480093f4SDimitry Andric#define OMP_IDENT_FLAG(Enum, Str, Value) 1101480093f4SDimitry Andric#endif 1102480093f4SDimitry Andric 1103480093f4SDimitry Andric#define __OMP_IDENT_FLAG(Name, Value) \ 1104480093f4SDimitry Andric OMP_IDENT_FLAG(OMP_IDENT_FLAG_##Name, #Name, Value) 1105480093f4SDimitry Andric 1106480093f4SDimitry Andric__OMP_IDENT_FLAG(KMPC, 0x02) 1107349cc55cSDimitry Andric__OMP_IDENT_FLAG(ATOMIC_REDUCE, 0x10) 1108480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_EXPL, 0x20) 1109480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_IMPL, 0x0040) 1110480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_IMPL_MASK, 0x01C0) 1111480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_IMPL_FOR, 0x0040) 1112480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_IMPL_SECTIONS, 0x00C0) 1113480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_IMPL_SINGLE, 0x0140) 1114480093f4SDimitry Andric__OMP_IDENT_FLAG(BARRIER_IMPL_WORKSHARE, 0x01C0) 1115480093f4SDimitry Andric 1116480093f4SDimitry Andric#undef __OMP_IDENT_FLAG 1117480093f4SDimitry Andric#undef OMP_IDENT_FLAG 1118480093f4SDimitry Andric 1119480093f4SDimitry Andric///} 1120480093f4SDimitry Andric 1121480093f4SDimitry Andric/// KMP cancel kind 1122480093f4SDimitry Andric/// 1123480093f4SDimitry Andric///{ 1124480093f4SDimitry Andric 1125480093f4SDimitry Andric#ifndef OMP_CANCEL_KIND 1126480093f4SDimitry Andric#define OMP_CANCEL_KIND(Enum, Str, DirectiveEnum, Value) 1127480093f4SDimitry Andric#endif 1128480093f4SDimitry Andric 1129480093f4SDimitry Andric#define __OMP_CANCEL_KIND(Name, Value) \ 1130480093f4SDimitry Andric OMP_CANCEL_KIND(OMP_CANCEL_KIND_##Name, #Name, OMPD_##Name, Value) 1131480093f4SDimitry Andric 1132480093f4SDimitry Andric__OMP_CANCEL_KIND(parallel, 1) 1133480093f4SDimitry Andric__OMP_CANCEL_KIND(for, 2) 1134480093f4SDimitry Andric__OMP_CANCEL_KIND(sections, 3) 1135480093f4SDimitry Andric__OMP_CANCEL_KIND(taskgroup, 4) 1136480093f4SDimitry Andric 1137480093f4SDimitry Andric#undef __OMP_CANCEL_KIND 1138480093f4SDimitry Andric#undef OMP_CANCEL_KIND 1139480093f4SDimitry Andric 1140480093f4SDimitry Andric///} 1141480093f4SDimitry Andric 11425ffd83dbSDimitry Andric/// Default kinds 11435ffd83dbSDimitry Andric/// 11445ffd83dbSDimitry Andric///{ 11455ffd83dbSDimitry Andric 11465ffd83dbSDimitry Andric#ifndef OMP_DEFAULT_KIND 11475ffd83dbSDimitry Andric#define OMP_DEFAULT_KIND(Enum, Str) 11485ffd83dbSDimitry Andric#endif 11495ffd83dbSDimitry Andric 11505ffd83dbSDimitry Andric#define __OMP_DEFAULT_KIND(Name) OMP_DEFAULT_KIND(OMP_DEFAULT_##Name, #Name) 11515ffd83dbSDimitry Andric 11525ffd83dbSDimitry Andric__OMP_DEFAULT_KIND(none) 11535ffd83dbSDimitry Andric__OMP_DEFAULT_KIND(shared) 115481ad6265SDimitry Andric__OMP_DEFAULT_KIND(private) 11555ffd83dbSDimitry Andric__OMP_DEFAULT_KIND(firstprivate) 11565ffd83dbSDimitry Andric__OMP_DEFAULT_KIND(unknown) 11575ffd83dbSDimitry Andric 11585ffd83dbSDimitry Andric#undef __OMP_DEFAULT_KIND 11595ffd83dbSDimitry Andric#undef OMP_DEFAULT_KIND 11605ffd83dbSDimitry Andric 11615ffd83dbSDimitry Andric///} 11625ffd83dbSDimitry Andric 1163480093f4SDimitry Andric/// Proc bind kinds 1164480093f4SDimitry Andric/// 1165480093f4SDimitry Andric///{ 1166480093f4SDimitry Andric 1167480093f4SDimitry Andric#ifndef OMP_PROC_BIND_KIND 1168480093f4SDimitry Andric#define OMP_PROC_BIND_KIND(Enum, Str, Value) 1169480093f4SDimitry Andric#endif 1170480093f4SDimitry Andric 1171480093f4SDimitry Andric#define __OMP_PROC_BIND_KIND(Name, Value) \ 1172480093f4SDimitry Andric OMP_PROC_BIND_KIND(OMP_PROC_BIND_##Name, #Name, Value) 1173480093f4SDimitry Andric 1174480093f4SDimitry Andric__OMP_PROC_BIND_KIND(master, 2) 1175480093f4SDimitry Andric__OMP_PROC_BIND_KIND(close, 3) 1176480093f4SDimitry Andric__OMP_PROC_BIND_KIND(spread, 4) 1177fe6060f1SDimitry Andric__OMP_PROC_BIND_KIND(primary, 5) 1178480093f4SDimitry Andric__OMP_PROC_BIND_KIND(default, 6) 1179480093f4SDimitry Andric__OMP_PROC_BIND_KIND(unknown, 7) 1180480093f4SDimitry Andric 1181480093f4SDimitry Andric#undef __OMP_PROC_BIND_KIND 1182480093f4SDimitry Andric#undef OMP_PROC_BIND_KIND 1183480093f4SDimitry Andric 1184480093f4SDimitry Andric///} 11855ffd83dbSDimitry Andric 11865ffd83dbSDimitry Andric/// OpenMP context related definitions: 11875ffd83dbSDimitry Andric/// - trait set selector 11885ffd83dbSDimitry Andric/// - trait selector 11895ffd83dbSDimitry Andric/// - trait property 11905ffd83dbSDimitry Andric/// 11915ffd83dbSDimitry Andric///{ 11925ffd83dbSDimitry Andric 11935ffd83dbSDimitry Andric#ifndef OMP_TRAIT_SET 11945ffd83dbSDimitry Andric#define OMP_TRAIT_SET(Enum, Str) 11955ffd83dbSDimitry Andric#endif 11965ffd83dbSDimitry Andric#ifndef OMP_TRAIT_SELECTOR 11975ffd83dbSDimitry Andric#define OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, RequiresProperty) 11985ffd83dbSDimitry Andric#endif 11995ffd83dbSDimitry Andric#ifndef OMP_TRAIT_PROPERTY 12005ffd83dbSDimitry Andric#define OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str) 12015ffd83dbSDimitry Andric#endif 12025ffd83dbSDimitry Andric#ifndef OMP_LAST_TRAIT_PROPERTY 12035ffd83dbSDimitry Andric#define OMP_LAST_TRAIT_PROPERTY(Enum) 12045ffd83dbSDimitry Andric#endif 12055ffd83dbSDimitry Andric 12065ffd83dbSDimitry Andric#define __OMP_TRAIT_SET(Name) OMP_TRAIT_SET(Name, #Name) 12075ffd83dbSDimitry Andric#define __OMP_TRAIT_SELECTOR(TraitSet, Name, RequiresProperty) \ 12085ffd83dbSDimitry Andric OMP_TRAIT_SELECTOR(TraitSet##_##Name, TraitSet, #Name, RequiresProperty) 12095ffd83dbSDimitry Andric#define __OMP_TRAIT_SELECTOR_AND_PROPERTY(TraitSet, Name) \ 12105ffd83dbSDimitry Andric OMP_TRAIT_SELECTOR(TraitSet##_##Name, TraitSet, #Name, false) \ 12115ffd83dbSDimitry Andric OMP_TRAIT_PROPERTY(TraitSet##_##Name##_##Name, TraitSet, TraitSet##_##Name, \ 12125ffd83dbSDimitry Andric #Name) 12135ffd83dbSDimitry Andric#define __OMP_TRAIT_PROPERTY(TraitSet, TraitSelector, Name) \ 12145ffd83dbSDimitry Andric OMP_TRAIT_PROPERTY(TraitSet##_##TraitSelector##_##Name, TraitSet, \ 12155ffd83dbSDimitry Andric TraitSet##_##TraitSelector, #Name) 12165ffd83dbSDimitry Andric 12175ffd83dbSDimitry Andric// "invalid" must go first. 12185ffd83dbSDimitry AndricOMP_TRAIT_SET(invalid, "invalid") 12195ffd83dbSDimitry AndricOMP_TRAIT_SELECTOR(invalid, invalid, "invalid", false) 12205ffd83dbSDimitry AndricOMP_TRAIT_PROPERTY(invalid, invalid, invalid, "invalid") 12215ffd83dbSDimitry Andric 12225ffd83dbSDimitry Andric__OMP_TRAIT_SET(construct) 12235ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, target) 12245ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, teams) 12255ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, parallel) 12265ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, for) 12275ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, simd) 12285ffd83dbSDimitry Andric 12295ffd83dbSDimitry Andric__OMP_TRAIT_SET(device) 12305ffd83dbSDimitry Andric 12315ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR(device, kind, true) 12325ffd83dbSDimitry Andric 12335ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, kind, host) 12345ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, kind, nohost) 12355ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, kind, cpu) 12365ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, kind, gpu) 12375ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, kind, fpga) 12385ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, kind, any) 12395ffd83dbSDimitry Andric 12405ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR(device, arch, true) 12415ffd83dbSDimitry Andric 12425ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, arm) 12435ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, armeb) 12445ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, aarch64) 12455ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, aarch64_be) 12465ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, aarch64_32) 12475ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, ppc) 1248e8d8bef9SDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, ppcle) 12495ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, ppc64) 12505ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, ppc64le) 12515ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, x86) 12525ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, x86_64) 12535ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, amdgcn) 12545ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, nvptx) 12555ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(device, arch, nvptx64) 12565ffd83dbSDimitry Andric 12575ffd83dbSDimitry Andric__OMP_TRAIT_SET(implementation) 12585ffd83dbSDimitry Andric 12595ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR(implementation, vendor, true) 12605ffd83dbSDimitry Andric 12615ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, amd) 12625ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, arm) 12635ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, bsc) 12645ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, cray) 12655ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, fujitsu) 12665ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, gnu) 12675ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, ibm) 12685ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, intel) 12695ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, llvm) 127004eeddc0SDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, nec) 127104eeddc0SDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, nvidia) 12725ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, pgi) 12735ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, ti) 12745ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, vendor, unknown) 12755ffd83dbSDimitry Andric 12765ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR(implementation, extension, true) 12775ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, extension, match_all) 12785ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, extension, match_any) 12795ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(implementation, extension, match_none) 1280e8d8bef9SDimitry Andric__OMP_TRAIT_PROPERTY(implementation, extension, disable_implicit_base) 1281e8d8bef9SDimitry Andric__OMP_TRAIT_PROPERTY(implementation, extension, allow_templates) 128281ad6265SDimitry Andric__OMP_TRAIT_PROPERTY(implementation, extension, bind_to_declaration) 12835ffd83dbSDimitry Andric 12845ffd83dbSDimitry Andric__OMP_TRAIT_SET(user) 12855ffd83dbSDimitry Andric 12865ffd83dbSDimitry Andric__OMP_TRAIT_SELECTOR(user, condition, true) 12875ffd83dbSDimitry Andric 12885ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(user, condition, true) 12895ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(user, condition, false) 12905ffd83dbSDimitry Andric__OMP_TRAIT_PROPERTY(user, condition, unknown) 12915ffd83dbSDimitry Andric 1292fe6060f1SDimitry Andric__OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, dispatch) 1293e8d8bef9SDimitry Andric 1294e8d8bef9SDimitry Andric// Note that we put isa last so that the other conditions are checked first. 1295e8d8bef9SDimitry Andric// This allows us to issue warnings wrt. isa only if we match otherwise. 1296e8d8bef9SDimitry Andric__OMP_TRAIT_SELECTOR(device, isa, true) 1297e8d8bef9SDimitry Andric 1298e8d8bef9SDimitry Andric// We use "__ANY" as a placeholder in the isa property to denote the 1299e8d8bef9SDimitry Andric// conceptual "any", not the literal `any` used in kind. The string we 1300e8d8bef9SDimitry Andric// we use is not important except that it will show up in diagnostics. 1301e8d8bef9SDimitry AndricOMP_TRAIT_PROPERTY(device_isa___ANY, device, device_isa, 1302e8d8bef9SDimitry Andric "<any, entirely target dependent>") 1303e8d8bef9SDimitry Andric 1304e8d8bef9SDimitry Andric 13055ffd83dbSDimitry Andric#undef OMP_TRAIT_SET 13065ffd83dbSDimitry Andric#undef __OMP_TRAIT_SET 13075ffd83dbSDimitry Andric///} 13085ffd83dbSDimitry Andric 13095ffd83dbSDimitry Andric/// Traits for the requires directive 13105ffd83dbSDimitry Andric/// 13115ffd83dbSDimitry Andric/// These will (potentially) become trait selectors for the OpenMP context if 13125ffd83dbSDimitry Andric/// the OMP_REQUIRES_TRAIT macro is not defined. 13135ffd83dbSDimitry Andric/// 13145ffd83dbSDimitry Andric///{ 13155ffd83dbSDimitry Andric 13165ffd83dbSDimitry Andric#ifdef OMP_REQUIRES_TRAIT 13175ffd83dbSDimitry Andric#define __OMP_REQUIRES_TRAIT(Name) \ 13185ffd83dbSDimitry Andric OMP_REQUIRES_TRAIT(OMP_REQUIRES_TRAIT_##Name, #Name) 13195ffd83dbSDimitry Andric#else 13205ffd83dbSDimitry Andric#define __OMP_REQUIRES_TRAIT(Name) \ 13215ffd83dbSDimitry Andric __OMP_TRAIT_SELECTOR_AND_PROPERTY(implementation, Name) 13225ffd83dbSDimitry Andric#endif 13235ffd83dbSDimitry Andric 13245ffd83dbSDimitry Andric__OMP_REQUIRES_TRAIT(unified_address) 13255ffd83dbSDimitry Andric__OMP_REQUIRES_TRAIT(unified_shared_memory) 13265ffd83dbSDimitry Andric__OMP_REQUIRES_TRAIT(reverse_offload) 13275ffd83dbSDimitry Andric__OMP_REQUIRES_TRAIT(dynamic_allocators) 13285ffd83dbSDimitry Andric__OMP_REQUIRES_TRAIT(atomic_default_mem_order) 13295ffd83dbSDimitry Andric 13305ffd83dbSDimitry AndricOMP_LAST_TRAIT_PROPERTY( 13315ffd83dbSDimitry Andric implementation_atomic_default_mem_order_atomic_default_mem_order) 13325ffd83dbSDimitry Andric 13335ffd83dbSDimitry Andric#undef __OMP_TRAIT_SELECTOR_AND_PROPERTY 13345ffd83dbSDimitry Andric#undef OMP_TRAIT_SELECTOR 13355ffd83dbSDimitry Andric#undef __OMP_TRAIT_SELECTOR 13365ffd83dbSDimitry Andric#undef OMP_TRAIT_PROPERTY 13375ffd83dbSDimitry Andric#undef OMP_LAST_TRAIT_PROPERTY 13385ffd83dbSDimitry Andric#undef __OMP_TRAIT_PROPERTY 13395ffd83dbSDimitry Andric#undef __OMP_REQUIRES_TRAIT 13405ffd83dbSDimitry Andric#undef OMP_REQUIRES_TRAIT 13415ffd83dbSDimitry Andric///} 1342e8d8bef9SDimitry Andric 1343e8d8bef9SDimitry Andric 1344e8d8bef9SDimitry Andric/// Assumption clauses 1345e8d8bef9SDimitry Andric/// 1346e8d8bef9SDimitry Andric///{ 1347e8d8bef9SDimitry Andric 1348e8d8bef9SDimitry Andric#ifdef OMP_ASSUME_CLAUSE 1349e8d8bef9SDimitry Andric#define __OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression) \ 1350e8d8bef9SDimitry AndricOMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression) 1351e8d8bef9SDimitry Andric#else 1352e8d8bef9SDimitry Andric#define __OMP_ASSUME_CLAUSE(...) 1353e8d8bef9SDimitry Andric#endif 1354e8d8bef9SDimitry Andric 1355e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("ext_"), true, false, false) 1356e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("absent"), false, true, false) 1357e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("contains"), false, true, false) 1358e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("holds"), false, false, true) 1359e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_openmp"), false, false, false) 1360e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_openmp_routines"), false, false, false) 1361e8d8bef9SDimitry Andric__OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_parallelism"), false, false, false) 1362e8d8bef9SDimitry Andric 1363e8d8bef9SDimitry Andric#undef __OMP_ASSUME_CLAUSE 1364e8d8bef9SDimitry Andric#undef OMP_ASSUME_CLAUSE 1365e8d8bef9SDimitry Andric///} 1366