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