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