Warning, /include/llvm/Frontend/OpenMP/OMPKinds.def is written in an unsupported language. File is not indexed.
0001 //===--- OMPKinds.def - OpenMP directives, clauses, rt-calls -*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 /// \file
0009 ///
0010 /// This file defines the list of supported OpenMP runtime
0011 /// calls, and other things that need to be listed in enums.
0012 ///
0013 /// This file is under transition to OMP.td with TableGen code generation.
0014 ///
0015 //===----------------------------------------------------------------------===//
0016
0017 /// OpenMP Directives, combined directives and Clauses
0018 /// - Moved to OMP.td
0019
0020 /// Types used in runtime structs or runtime functions
0021 ///
0022 ///{
0023
0024 #ifndef OMP_TYPE
0025 #define OMP_TYPE(VarName, InitValue)
0026 #endif
0027
0028 #define __OMP_TYPE(VarName) OMP_TYPE(VarName, Type::get##VarName##Ty(Ctx))
0029 #define __OMP_PTR_TYPE(VarName) OMP_TYPE(VarName, PointerType::get(Ctx, 0))
0030
0031 __OMP_TYPE(Void)
0032 __OMP_TYPE(Int1)
0033 __OMP_TYPE(Int8)
0034 __OMP_TYPE(Int16)
0035 __OMP_TYPE(Int32)
0036 __OMP_TYPE(Int64)
0037 __OMP_PTR_TYPE(Int8Ptr)
0038 __OMP_PTR_TYPE(Int16Ptr)
0039 __OMP_PTR_TYPE(Int32Ptr)
0040 __OMP_PTR_TYPE(Int64Ptr)
0041 __OMP_TYPE(Double)
0042
0043 OMP_TYPE(SizeTy, M.getDataLayout().getIntPtrType(Ctx))
0044 OMP_TYPE(Int63, Type::getIntNTy(Ctx, 63))
0045
0046 __OMP_PTR_TYPE(VoidPtr)
0047 __OMP_PTR_TYPE(VoidPtrPtr)
0048 __OMP_PTR_TYPE(VoidPtrPtrPtr)
0049
0050 __OMP_PTR_TYPE(Int8PtrPtr)
0051 __OMP_PTR_TYPE(Int8PtrPtrPtr)
0052
0053 #undef __OMP_PTR_TYPE
0054
0055 #undef __OMP_TYPE
0056 #undef OMP_TYPE
0057
0058 ///}
0059
0060 /// array types
0061 ///
0062 ///{
0063
0064 #ifndef OMP_ARRAY_TYPE
0065 #define OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize)
0066 #endif
0067
0068 #define __OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize) \
0069 OMP_ARRAY_TYPE(VarName, ElemTy, ArraySize)
0070
0071 __OMP_ARRAY_TYPE(KmpCriticalName, Int32, 8)
0072 __OMP_ARRAY_TYPE(Int32Arr3, Int32, 3)
0073
0074 #undef __OMP_ARRAY_TYPE
0075 #undef OMP_ARRAY_TYPE
0076
0077 ///}
0078
0079 /// Struct and function types
0080 ///
0081 ///{
0082
0083 #ifndef OMP_STRUCT_TYPE
0084 #define OMP_STRUCT_TYPE(VarName, StructName, Packed, ...)
0085 #endif
0086
0087 #define __OMP_STRUCT_TYPE(VarName, Name, Packed, ...) \
0088 OMP_STRUCT_TYPE(VarName, "struct." #Name, Packed, __VA_ARGS__)
0089
0090 __OMP_STRUCT_TYPE(Ident, ident_t, false, Int32, Int32, Int32, Int32, Int8Ptr)
0091 __OMP_STRUCT_TYPE(KernelArgs, __tgt_kernel_arguments, false, Int32, Int32, VoidPtrPtr,
0092 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr,
0093 Int64, Int64, Int32Arr3Ty, Int32Arr3Ty, Int32)
0094 __OMP_STRUCT_TYPE(AsyncInfo, __tgt_async_info, false, Int8Ptr)
0095 __OMP_STRUCT_TYPE(DependInfo, kmp_dep_info, false, SizeTy, SizeTy, Int8)
0096 __OMP_STRUCT_TYPE(Task, kmp_task_ompbuilder_t, false, VoidPtr, VoidPtr, Int32, VoidPtr, VoidPtr)
0097 __OMP_STRUCT_TYPE(ConfigurationEnvironment, ConfigurationEnvironmentTy, false,
0098 Int8, Int8, Int8, Int32, Int32, Int32, Int32, Int32, Int32)
0099 __OMP_STRUCT_TYPE(DynamicEnvironment, DynamicEnvironmentTy, false, Int16)
0100 __OMP_STRUCT_TYPE(KernelEnvironment, KernelEnvironmentTy, false,
0101 ConfigurationEnvironment, IdentPtr, DynamicEnvironmentPtr)
0102 __OMP_STRUCT_TYPE(KernelLaunchEnvironment, KernelLaunchEnvironmentTy, false,
0103 Int32, Int32)
0104
0105 #undef __OMP_STRUCT_TYPE
0106 #undef OMP_STRUCT_TYPE
0107
0108 #ifndef OMP_FUNCTION_TYPE
0109 #define OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...)
0110 #endif
0111
0112 #define __OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, ...) \
0113 OMP_FUNCTION_TYPE(VarName, IsVarArg, ReturnType, __VA_ARGS__)
0114
0115 __OMP_FUNCTION_TYPE(ParallelTask, true, Void, Int32Ptr, Int32Ptr)
0116 __OMP_FUNCTION_TYPE(ReduceFunction, false, Void, VoidPtr, VoidPtr)
0117 __OMP_FUNCTION_TYPE(CopyFunction, false, Void, VoidPtr, VoidPtr)
0118 __OMP_FUNCTION_TYPE(KmpcCtor, false, VoidPtr, VoidPtr)
0119 __OMP_FUNCTION_TYPE(KmpcDtor, false, Void, VoidPtr)
0120 __OMP_FUNCTION_TYPE(KmpcCopyCtor, false, VoidPtr, VoidPtr, VoidPtr)
0121 __OMP_FUNCTION_TYPE(TaskRoutineEntry, false, Int32, Int32,
0122 /* kmp_task_t */ VoidPtr)
0123 __OMP_FUNCTION_TYPE(ShuffleReduce, false, Void, VoidPtr, Int16, Int16, Int16)
0124 __OMP_FUNCTION_TYPE(InterWarpCopy, false, Void, VoidPtr, Int32)
0125 __OMP_FUNCTION_TYPE(GlobalList, false, Void, VoidPtr, Int32, VoidPtr)
0126
0127 #undef __OMP_FUNCTION_TYPE
0128 #undef OMP_FUNCTION_TYPE
0129
0130 ///}
0131
0132 /// Internal Control Variables information
0133 ///
0134 ///{
0135
0136 #ifndef ICV_INIT_VALUE
0137 #define ICV_INIT_VALUE(Enum, Name)
0138 #endif
0139
0140 #define __ICV_INIT_VALUE(Name) ICV_INIT_VALUE(ICV_##Name, #Name)
0141
0142 __ICV_INIT_VALUE(ZERO)
0143 __ICV_INIT_VALUE(FALSE)
0144 __ICV_INIT_VALUE(IMPLEMENTATION_DEFINED)
0145 __ICV_INIT_VALUE(LAST)
0146
0147 #undef __ICV_INIT_VALUE
0148 #undef ICV_INIT_VALUE
0149
0150 #ifndef ICV_DATA_ENV
0151 #define ICV_DATA_ENV(Enum, Name, EnvVarName, Init)
0152 #endif
0153
0154 #define __ICV_DATA_ENV(Name, EnvVarName, Init) \
0155 ICV_DATA_ENV(ICV_##Name, #Name, #EnvVarName, Init)
0156
0157 __ICV_DATA_ENV(nthreads, OMP_NUM_THREADS, ICV_IMPLEMENTATION_DEFINED)
0158 __ICV_DATA_ENV(active_levels, NONE, ICV_ZERO)
0159 __ICV_DATA_ENV(cancel, OMP_CANCELLATION, ICV_FALSE)
0160 __ICV_DATA_ENV(proc_bind, OMP_PROC_BIND, ICV_IMPLEMENTATION_DEFINED)
0161 __ICV_DATA_ENV(__last, last, ICV_LAST)
0162
0163 #undef __ICV_DATA_ENV
0164 #undef ICV_DATA_ENV
0165
0166 #ifndef ICV_RT_SET
0167 #define ICV_RT_SET(Name, RTL)
0168 #endif
0169
0170 #define __ICV_RT_SET(Name, RTL) ICV_RT_SET(ICV_##Name, OMPRTL_##RTL)
0171
0172 __ICV_RT_SET(nthreads, omp_set_num_threads)
0173
0174 #undef __ICV_RT_SET
0175 #undef ICV_RT_SET
0176
0177 #ifndef ICV_RT_GET
0178 #define ICV_RT_GET(Name, RTL)
0179 #endif
0180
0181 #define __ICV_RT_GET(Name, RTL) ICV_RT_GET(ICV_##Name, OMPRTL_##RTL)
0182
0183 __ICV_RT_GET(nthreads, omp_get_max_threads)
0184 __ICV_RT_GET(active_levels, omp_get_active_level)
0185 __ICV_RT_GET(cancel, omp_get_cancellation)
0186 __ICV_RT_GET(proc_bind, omp_get_proc_bind)
0187
0188 #undef __ICV_RT_GET
0189 #undef ICV_RT_GET
0190
0191 ///}
0192
0193 /// Runtime library function (and their attributes)
0194 ///
0195 ///{
0196
0197 #ifndef OMP_RTL
0198 #define OMP_RTL(Enum, Str, IsVarArg, ReturnType, ...)
0199 #endif
0200
0201 #define __OMP_RTL(Name, IsVarArg, ReturnType, ...) \
0202 OMP_RTL(OMPRTL_##Name, #Name, IsVarArg, ReturnType, __VA_ARGS__)
0203
0204
0205
0206 __OMP_RTL(__kmpc_barrier, false, Void, IdentPtr, Int32)
0207 __OMP_RTL(__kmpc_cancel, false, Int32, IdentPtr, Int32, Int32)
0208 __OMP_RTL(__kmpc_cancel_barrier, false, Int32, IdentPtr, Int32)
0209 __OMP_RTL(__kmpc_error, false, Void, IdentPtr, Int32, Int8Ptr)
0210 __OMP_RTL(__kmpc_flush, false, Void, IdentPtr)
0211 __OMP_RTL(__kmpc_global_thread_num, false, Int32, IdentPtr)
0212 __OMP_RTL(__kmpc_get_hardware_thread_id_in_block, false, Int32, )
0213 __OMP_RTL(__kmpc_fork_call, true, Void, IdentPtr, Int32, ParallelTaskPtr)
0214 __OMP_RTL(__kmpc_fork_call_if, false, Void, IdentPtr, Int32, ParallelTaskPtr,
0215 Int32, VoidPtr)
0216 __OMP_RTL(__kmpc_omp_taskwait, false, Int32, IdentPtr, Int32)
0217 __OMP_RTL(__kmpc_omp_taskyield, false, Int32, IdentPtr, Int32, /* Int */ Int32)
0218 __OMP_RTL(__kmpc_push_num_threads, false, Void, IdentPtr, Int32,
0219 /* Int */ Int32)
0220 __OMP_RTL(__kmpc_push_proc_bind, false, Void, IdentPtr, Int32, /* Int */ Int32)
0221 __OMP_RTL(__kmpc_omp_reg_task_with_affinity, false, Int32, IdentPtr, Int32,
0222 /* kmp_task_t */ VoidPtr, Int32,
0223 /* kmp_task_affinity_info_t */ VoidPtr)
0224
0225 __OMP_RTL(__kmpc_get_hardware_num_blocks, false, Int32, )
0226 __OMP_RTL(__kmpc_get_hardware_num_threads_in_block, false, Int32, )
0227 __OMP_RTL(__kmpc_get_warp_size, false, Int32, )
0228
0229 __OMP_RTL(omp_get_thread_num, false, Int32, )
0230 __OMP_RTL(omp_get_num_threads, false, Int32, )
0231 __OMP_RTL(omp_get_max_threads, false, Int32, )
0232 __OMP_RTL(omp_in_parallel, false, Int32, )
0233 __OMP_RTL(omp_get_dynamic, false, Int32, )
0234 __OMP_RTL(omp_get_cancellation, false, Int32, )
0235 __OMP_RTL(omp_get_nested, false, Int32, )
0236 __OMP_RTL(omp_get_schedule, false, Void, Int32Ptr, Int32Ptr)
0237 __OMP_RTL(omp_get_thread_limit, false, Int32, )
0238 __OMP_RTL(omp_get_supported_active_levels, false, Int32, )
0239 __OMP_RTL(omp_get_max_active_levels, false, Int32, )
0240 __OMP_RTL(omp_get_level, false, Int32, )
0241 __OMP_RTL(omp_get_ancestor_thread_num, false, Int32, Int32)
0242 __OMP_RTL(omp_get_team_size, false, Int32, Int32)
0243 __OMP_RTL(omp_get_active_level, false, Int32, )
0244 __OMP_RTL(omp_in_final, false, Int32, )
0245 __OMP_RTL(omp_get_proc_bind, false, Int32, )
0246 __OMP_RTL(omp_get_num_places, false, Int32, )
0247 __OMP_RTL(omp_get_num_procs, false, Int32, )
0248 __OMP_RTL(omp_get_place_proc_ids, false, Void, Int32, Int32Ptr)
0249 __OMP_RTL(omp_get_place_num, false, Int32, )
0250 __OMP_RTL(omp_get_partition_num_places, false, Int32, )
0251 __OMP_RTL(omp_get_partition_place_nums, false, Void, Int32Ptr)
0252 __OMP_RTL(omp_get_wtime, false, Double,)
0253
0254 __OMP_RTL(omp_set_num_threads, false, Void, Int32)
0255 __OMP_RTL(omp_set_dynamic, false, Void, Int32)
0256 __OMP_RTL(omp_set_nested, false, Void, Int32)
0257 __OMP_RTL(omp_set_schedule, false, Void, Int32, Int32)
0258 __OMP_RTL(omp_set_max_active_levels, false, Void, Int32)
0259
0260 __OMP_RTL(__kmpc_master, false, Int32, IdentPtr, Int32)
0261 __OMP_RTL(__kmpc_end_master, false, Void, IdentPtr, Int32)
0262 __OMP_RTL(__kmpc_masked, false, Int32, IdentPtr, Int32, Int32)
0263 __OMP_RTL(__kmpc_end_masked, false, Void, IdentPtr, Int32)
0264 __OMP_RTL(__kmpc_critical, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy)
0265 __OMP_RTL(__kmpc_critical_with_hint, false, Void, IdentPtr, Int32,
0266 KmpCriticalNamePtrTy, Int32)
0267 __OMP_RTL(__kmpc_end_critical, false, Void, IdentPtr, Int32,
0268 KmpCriticalNamePtrTy)
0269
0270 __OMP_RTL(__kmpc_begin, false, Void, IdentPtr, Int32)
0271 __OMP_RTL(__kmpc_end, false, Void, IdentPtr)
0272
0273 __OMP_RTL(__kmpc_reduce, false, Int32, IdentPtr, Int32, Int32, SizeTy, VoidPtr,
0274 ReduceFunctionPtr, KmpCriticalNamePtrTy)
0275 __OMP_RTL(__kmpc_reduce_nowait, false, Int32, IdentPtr, Int32, Int32, SizeTy,
0276 VoidPtr, ReduceFunctionPtr, KmpCriticalNamePtrTy)
0277 __OMP_RTL(__kmpc_end_reduce, false, Void, IdentPtr, Int32, KmpCriticalNamePtrTy)
0278 __OMP_RTL(__kmpc_end_reduce_nowait, false, Void, IdentPtr, Int32,
0279 KmpCriticalNamePtrTy)
0280
0281 __OMP_RTL(__kmpc_ordered, false, Void, IdentPtr, Int32)
0282 __OMP_RTL(__kmpc_end_ordered, false, Void, IdentPtr, Int32)
0283
0284 __OMP_RTL(__kmpc_for_static_init_4, false, Void, IdentPtr, Int32, Int32,
0285 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0286 __OMP_RTL(__kmpc_for_static_init_4u, false, Void, IdentPtr, Int32, Int32,
0287 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0288 __OMP_RTL(__kmpc_for_static_init_8, false, Void, IdentPtr, Int32, Int32,
0289 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0290 __OMP_RTL(__kmpc_for_static_init_8u, false, Void, IdentPtr, Int32, Int32,
0291 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0292 __OMP_RTL(__kmpc_for_static_fini, false, Void, IdentPtr, Int32)
0293 __OMP_RTL(__kmpc_distribute_static_init_4, false, Void, IdentPtr, Int32, Int32,
0294 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0295 __OMP_RTL(__kmpc_distribute_static_init_4u, false, Void, IdentPtr, Int32, Int32,
0296 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0297 __OMP_RTL(__kmpc_distribute_static_init_8, false, Void, IdentPtr, Int32, Int32,
0298 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0299 __OMP_RTL(__kmpc_distribute_static_init_8u, false, Void, IdentPtr, Int32, Int32,
0300 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0301 __OMP_RTL(__kmpc_distribute_static_fini, false, Void, IdentPtr, Int32)
0302 __OMP_RTL(__kmpc_dist_dispatch_init_4, false, Void, IdentPtr, Int32, Int32,
0303 Int32Ptr, Int32, Int32, Int32, Int32)
0304 __OMP_RTL(__kmpc_dist_dispatch_init_4u, false, Void, IdentPtr, Int32, Int32,
0305 Int32Ptr, Int32, Int32, Int32, Int32)
0306 __OMP_RTL(__kmpc_dist_dispatch_init_8, false, Void, IdentPtr, Int32, Int32,
0307 Int32Ptr, Int64, Int64, Int64, Int64)
0308 __OMP_RTL(__kmpc_dist_dispatch_init_8u, false, Void, IdentPtr, Int32, Int32,
0309 Int32Ptr, Int64, Int64, Int64, Int64)
0310 __OMP_RTL(__kmpc_dispatch_init_4, false, Void, IdentPtr, Int32, Int32, Int32,
0311 Int32, Int32, Int32)
0312 __OMP_RTL(__kmpc_dispatch_init_4u, false, Void, IdentPtr, Int32, Int32, Int32,
0313 Int32, Int32, Int32)
0314 __OMP_RTL(__kmpc_dispatch_init_8, false, Void, IdentPtr, Int32, Int32, Int64,
0315 Int64, Int64, Int64)
0316 __OMP_RTL(__kmpc_dispatch_init_8u, false, Void, IdentPtr, Int32, Int32, Int64,
0317 Int64, Int64, Int64)
0318 __OMP_RTL(__kmpc_dispatch_next_4, false, Int32, IdentPtr, Int32, Int32Ptr,
0319 Int32Ptr, Int32Ptr, Int32Ptr)
0320 __OMP_RTL(__kmpc_dispatch_next_4u, false, Int32, IdentPtr, Int32, Int32Ptr,
0321 Int32Ptr, Int32Ptr, Int32Ptr)
0322 __OMP_RTL(__kmpc_dispatch_next_8, false, Int32, IdentPtr, Int32, Int32Ptr,
0323 Int64Ptr, Int64Ptr, Int64Ptr)
0324 __OMP_RTL(__kmpc_dispatch_next_8u, false, Int32, IdentPtr, Int32, Int32Ptr,
0325 Int64Ptr, Int64Ptr, Int64Ptr)
0326 __OMP_RTL(__kmpc_dispatch_fini_4, false, Void, IdentPtr, Int32)
0327 __OMP_RTL(__kmpc_dispatch_fini_4u, false, Void, IdentPtr, Int32)
0328 __OMP_RTL(__kmpc_dispatch_fini_8, false, Void, IdentPtr, Int32)
0329 __OMP_RTL(__kmpc_dispatch_fini_8u, false, Void, IdentPtr, Int32)
0330 __OMP_RTL(__kmpc_dispatch_deinit, false, Void, IdentPtr, Int32)
0331 __OMP_RTL(__kmpc_team_static_init_4, false, Void, IdentPtr, Int32, Int32Ptr,
0332 Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0333 __OMP_RTL(__kmpc_team_static_init_4u, false, Void, IdentPtr, Int32, Int32Ptr,
0334 Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0335 __OMP_RTL(__kmpc_team_static_init_8, false, Void, IdentPtr, Int32, Int32Ptr,
0336 Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0337 __OMP_RTL(__kmpc_team_static_init_8u, false, Void, IdentPtr, Int32, Int32Ptr,
0338 Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0339 __OMP_RTL(__kmpc_dist_for_static_init_4, false, Void, IdentPtr, Int32, Int32,
0340 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0341 __OMP_RTL(__kmpc_dist_for_static_init_4u, false, Void, IdentPtr, Int32, Int32,
0342 Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32Ptr, Int32, Int32)
0343 __OMP_RTL(__kmpc_dist_for_static_init_8, false, Void, IdentPtr, Int32, Int32,
0344 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0345 __OMP_RTL(__kmpc_dist_for_static_init_8u, false, Void, IdentPtr, Int32, Int32,
0346 Int32Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64Ptr, Int64, Int64)
0347
0348 __OMP_RTL(__kmpc_single, false, Int32, IdentPtr, Int32)
0349 __OMP_RTL(__kmpc_end_single, false, Void, IdentPtr, Int32)
0350
0351 __OMP_RTL(__kmpc_omp_task_alloc, false, /* kmp_task_t */ VoidPtr, IdentPtr,
0352 Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr)
0353 __OMP_RTL(__kmpc_omp_task, false, Int32, IdentPtr, Int32,
0354 /* kmp_task_t */ VoidPtr)
0355 __OMP_RTL(__kmpc_end_taskgroup, false, Void, IdentPtr, Int32)
0356 __OMP_RTL(__kmpc_taskgroup, false, Void, IdentPtr, Int32)
0357 __OMP_RTL(__kmpc_omp_task_begin_if0, false, Void, IdentPtr, Int32,
0358 /* kmp_task_t */ VoidPtr)
0359 __OMP_RTL(__kmpc_omp_task_complete_if0, false, Void, IdentPtr, Int32,
0360 /* kmp_tasK_t */ VoidPtr)
0361 __OMP_RTL(__kmpc_omp_task_with_deps, false, Int32, IdentPtr, Int32,
0362 /* kmp_task_t */ VoidPtr, Int32,
0363 /* kmp_depend_info_t */ VoidPtr, Int32,
0364 /* kmp_depend_info_t */ VoidPtr)
0365 __OMP_RTL(__kmpc_taskloop, false, Void, IdentPtr, /* Int */ Int32, VoidPtr,
0366 /* Int */ Int32, Int64Ptr, Int64Ptr, Int64, /* Int */ Int32,
0367 /* Int */ Int32, Int64, VoidPtr)
0368 __OMP_RTL(__kmpc_taskloop_5, false, Void, IdentPtr, /* Int */ Int32, VoidPtr,
0369 /* Int */ Int32, Int64Ptr, Int64Ptr, Int64, /* Int */ Int32,
0370 /* Int */ Int32, Int64, Int32, VoidPtr)
0371 __OMP_RTL(__kmpc_omp_target_task_alloc, false, /* kmp_task_t */ VoidPtr,
0372 IdentPtr, Int32, Int32, SizeTy, SizeTy, TaskRoutineEntryPtr, Int64)
0373 __OMP_RTL(__kmpc_taskred_modifier_init, false, /* kmp_taskgroup */ VoidPtr,
0374 IdentPtr, /* Int */ Int32, /* Int */ Int32, /* Int */ Int32, VoidPtr)
0375 __OMP_RTL(__kmpc_taskred_init, false, /* kmp_taskgroup */ VoidPtr,
0376 /* Int */ Int32, /* Int */ Int32, VoidPtr)
0377 __OMP_RTL(__kmpc_task_reduction_modifier_fini, false, Void, IdentPtr,
0378 /* Int */ Int32, /* Int */ Int32)
0379 __OMP_RTL(__kmpc_task_reduction_get_th_data, false, VoidPtr, Int32, VoidPtr,
0380 VoidPtr)
0381 __OMP_RTL(__kmpc_task_reduction_init, false, VoidPtr, Int32, Int32, VoidPtr)
0382 __OMP_RTL(__kmpc_task_reduction_modifier_init, false, VoidPtr, VoidPtr, Int32,
0383 Int32, Int32, VoidPtr)
0384 __OMP_RTL(__kmpc_proxy_task_completed_ooo, false, Void, VoidPtr)
0385
0386 __OMP_RTL(__kmpc_omp_wait_deps, false, Void, IdentPtr, Int32, Int32,
0387 /* kmp_depend_info_t */ VoidPtr, Int32, VoidPtr)
0388 __OMP_RTL(__kmpc_omp_taskwait_deps_51, false, Void, IdentPtr, Int32, Int32,
0389 /* kmp_depend_info_t */ VoidPtr, Int32, VoidPtr, Int32)
0390 __OMP_RTL(__kmpc_cancellationpoint, false, Int32, IdentPtr, Int32, Int32)
0391
0392 __OMP_RTL(__kmpc_fork_teams, true, Void, IdentPtr, Int32, ParallelTaskPtr)
0393 __OMP_RTL(__kmpc_push_num_teams, false, Void, IdentPtr, Int32, Int32, Int32)
0394 __OMP_RTL(__kmpc_push_num_teams_51, false, Void, IdentPtr, Int32, Int32, Int32, Int32)
0395 __OMP_RTL(__kmpc_set_thread_limit, false, Void, IdentPtr, Int32, Int32)
0396
0397 __OMP_RTL(__kmpc_copyprivate, false, Void, IdentPtr, Int32, SizeTy, VoidPtr,
0398 CopyFunctionPtr, Int32)
0399 __OMP_RTL(__kmpc_threadprivate_cached, false, VoidPtr, IdentPtr, Int32, VoidPtr,
0400 SizeTy, VoidPtrPtrPtr)
0401 __OMP_RTL(__kmpc_threadprivate_register, false, Void, IdentPtr, VoidPtr,
0402 KmpcCtorPtr, KmpcCopyCtorPtr, KmpcDtorPtr)
0403
0404 __OMP_RTL(__kmpc_doacross_init, false, Void, IdentPtr, Int32, Int32,
0405 /* kmp_dim */ VoidPtr)
0406 __OMP_RTL(__kmpc_doacross_post, false, Void, IdentPtr, Int32, Int64Ptr)
0407 __OMP_RTL(__kmpc_doacross_wait, false, Void, IdentPtr, Int32, Int64Ptr)
0408 __OMP_RTL(__kmpc_doacross_fini, false, Void, IdentPtr, Int32)
0409
0410 __OMP_RTL(__kmpc_alloc, false, VoidPtr, /* Int */ Int32, SizeTy, VoidPtr)
0411 __OMP_RTL(__kmpc_aligned_alloc, false, VoidPtr, /* Int */ Int32, SizeTy, SizeTy,
0412 VoidPtr)
0413 __OMP_RTL(__kmpc_free, false, Void, /* Int */ Int32, VoidPtr, VoidPtr)
0414
0415 __OMP_RTL(__tgt_interop_init, false, Void, IdentPtr, Int32, VoidPtrPtr, Int32,
0416 Int32, Int32, VoidPtr, Int32)
0417 __OMP_RTL(__tgt_interop_destroy, false, Void, IdentPtr, Int32, VoidPtrPtr,
0418 Int32, Int32, VoidPtr, Int32)
0419 __OMP_RTL(__tgt_interop_use, false, Void, IdentPtr, Int32, VoidPtrPtr, Int32,
0420 Int32, VoidPtr, Int32)
0421
0422 __OMP_RTL(__kmpc_init_allocator, false, /* omp_allocator_handle_t */ VoidPtr,
0423 /* Int */ Int32, /* omp_memespace_handle_t */ VoidPtr,
0424 /* Int */ Int32, /* omp_alloctrait_t */ VoidPtr)
0425 __OMP_RTL(__kmpc_destroy_allocator, false, Void, /* Int */ Int32,
0426 /* omp_allocator_handle_t */ VoidPtr)
0427
0428 __OMP_RTL(__kmpc_push_target_tripcount_mapper, false, Void, IdentPtr, Int64, Int64)
0429 __OMP_RTL(__tgt_target_mapper, false, Int32, IdentPtr, Int64, VoidPtr, Int32, VoidPtrPtr,
0430 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr)
0431 __OMP_RTL(__tgt_target_nowait_mapper, false, Int32, IdentPtr, Int64, VoidPtr,
0432 Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr,
0433 VoidPtrPtr, Int32, VoidPtr, Int32, VoidPtr)
0434 __OMP_RTL(__tgt_target_teams_mapper, false, Int32, IdentPtr, Int64, VoidPtr, Int32,
0435 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, Int32, Int32)
0436 __OMP_RTL(__tgt_target_teams_nowait_mapper, false, Int32, IdentPtr, Int64,
0437 VoidPtr, Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr,
0438 VoidPtrPtr, VoidPtrPtr, Int32, Int32, Int32, VoidPtr, Int32, VoidPtr)
0439 __OMP_RTL(__tgt_target_kernel, false, Int32, IdentPtr, Int64, Int32, Int32,
0440 VoidPtr, KernelArgsPtr)
0441 __OMP_RTL(__tgt_target_kernel_nowait, false, Int32, IdentPtr, Int64, Int32,
0442 Int32, VoidPtr, KernelArgsPtr, Int32, VoidPtr, Int32, VoidPtr)
0443 __OMP_RTL(__tgt_target_data_begin_mapper, false, Void, IdentPtr, Int64, Int32, VoidPtrPtr,
0444 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr)
0445 __OMP_RTL(__tgt_target_data_begin_nowait_mapper, false, Void, IdentPtr, Int64,
0446 Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr,
0447 VoidPtrPtr, Int32, VoidPtr, Int32, VoidPtr)
0448 __OMP_RTL(__tgt_target_data_begin_mapper_issue, false, Void, IdentPtr, Int64, Int32,
0449 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr, AsyncInfoPtr)
0450 __OMP_RTL(__tgt_target_data_begin_mapper_wait, false, Void, Int64, AsyncInfoPtr)
0451 __OMP_RTL(__tgt_target_data_end_mapper, false, Void, IdentPtr, Int64, Int32, VoidPtrPtr,
0452 VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr)
0453 __OMP_RTL(__tgt_target_data_end_nowait_mapper, false, Void, IdentPtr, Int64,
0454 Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr,
0455 VoidPtrPtr, Int32, VoidPtr, Int32, VoidPtr)
0456 __OMP_RTL(__tgt_target_data_update_mapper, false, Void, IdentPtr, Int64, Int32,
0457 VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr, VoidPtrPtr)
0458 __OMP_RTL(__tgt_target_data_update_nowait_mapper, false, Void, IdentPtr, Int64,
0459 Int32, VoidPtrPtr, VoidPtrPtr, Int64Ptr, Int64Ptr, VoidPtrPtr,
0460 VoidPtrPtr, Int32, VoidPtr, Int32, VoidPtr)
0461 __OMP_RTL(__tgt_mapper_num_components, false, Int64, VoidPtr)
0462 __OMP_RTL(__tgt_push_mapper_component, false, Void, VoidPtr, VoidPtr, VoidPtr,
0463 Int64, Int64, VoidPtr)
0464 __OMP_RTL(__kmpc_task_allow_completion_event, false, VoidPtr, IdentPtr,
0465 /* Int */ Int32, /* kmp_task_t */ VoidPtr)
0466
0467 /// OpenMP Device runtime functions
0468 __OMP_RTL(__kmpc_target_init, false, Int32, KernelEnvironmentPtr, KernelLaunchEnvironmentPtr)
0469 __OMP_RTL(__kmpc_target_deinit, false, Void,)
0470 __OMP_RTL(__kmpc_kernel_prepare_parallel, false, Void, VoidPtr)
0471 __OMP_RTL(__kmpc_parallel_51, false, Void, IdentPtr, Int32, Int32, Int32, Int32,
0472 VoidPtr, VoidPtr, VoidPtrPtr, SizeTy)
0473 __OMP_RTL(__kmpc_for_static_loop_4, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32)
0474 __OMP_RTL(__kmpc_for_static_loop_4u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32)
0475 __OMP_RTL(__kmpc_for_static_loop_8, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64)
0476 __OMP_RTL(__kmpc_for_static_loop_8u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64)
0477 __OMP_RTL(__kmpc_distribute_static_loop_4, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32)
0478 __OMP_RTL(__kmpc_distribute_static_loop_4u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32)
0479 __OMP_RTL(__kmpc_distribute_static_loop_8, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64)
0480 __OMP_RTL(__kmpc_distribute_static_loop_8u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64)
0481 __OMP_RTL(__kmpc_distribute_for_static_loop_4, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32, Int32)
0482 __OMP_RTL(__kmpc_distribute_for_static_loop_4u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int32, Int32, Int32, Int32)
0483 __OMP_RTL(__kmpc_distribute_for_static_loop_8, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64, Int64)
0484 __OMP_RTL(__kmpc_distribute_for_static_loop_8u, false, Void, IdentPtr, VoidPtr, VoidPtr, Int64, Int64, Int64, Int64)
0485 __OMP_RTL(__kmpc_kernel_parallel, false, Int1, VoidPtrPtr)
0486 __OMP_RTL(__kmpc_kernel_end_parallel, false, Void, )
0487 __OMP_RTL(__kmpc_serialized_parallel, false, Void, IdentPtr, Int32)
0488 __OMP_RTL(__kmpc_end_serialized_parallel, false, Void, IdentPtr, Int32)
0489 __OMP_RTL(__kmpc_shuffle_int32, false, Int32, Int32, Int16, Int16)
0490 __OMP_RTL(__kmpc_nvptx_parallel_reduce_nowait_v2, false, Int32, IdentPtr,
0491 Int64, VoidPtr, ShuffleReducePtr, InterWarpCopyPtr)
0492 __OMP_RTL(__kmpc_nvptx_teams_reduce_nowait_v2, false, Int32, IdentPtr,
0493 VoidPtr, Int32, Int64, VoidPtr, ShuffleReducePtr, InterWarpCopyPtr,
0494 GlobalListPtr, GlobalListPtr, GlobalListPtr, GlobalListPtr)
0495 __OMP_RTL(__kmpc_reduction_get_fixed_buffer, false, VoidPtr, )
0496
0497 __OMP_RTL(__kmpc_shuffle_int64, false, Int64, Int64, Int16, Int16)
0498
0499 __OMP_RTL(__kmpc_alloc_shared, false, VoidPtr, SizeTy)
0500 __OMP_RTL(__kmpc_free_shared, false, Void, VoidPtr, SizeTy)
0501 __OMP_RTL(__kmpc_begin_sharing_variables, false, Void, VoidPtrPtrPtr, SizeTy)
0502 __OMP_RTL(__kmpc_end_sharing_variables, false, Void, )
0503 __OMP_RTL(__kmpc_get_shared_variables, false, Void, VoidPtrPtrPtr)
0504 __OMP_RTL(__kmpc_parallel_level, false, Int16, IdentPtr, Int32)
0505 __OMP_RTL(__kmpc_is_spmd_exec_mode, false, Int8, )
0506 __OMP_RTL(__kmpc_barrier_simple_spmd, false, Void, IdentPtr, Int32)
0507 __OMP_RTL(__kmpc_barrier_simple_generic, false, Void, IdentPtr, Int32)
0508
0509 __OMP_RTL(__kmpc_warp_active_thread_mask, false, Int64,)
0510 __OMP_RTL(__kmpc_syncwarp, false, Void, Int64)
0511
0512 __OMP_RTL(__llvm_profile_register_function, false, Void, VoidPtr)
0513 __OMP_RTL(__llvm_profile_register_names_function, false, Void, VoidPtr, Int64)
0514
0515 __OMP_RTL(__last, false, Void, )
0516
0517 #undef __OMP_RTL
0518 #undef OMP_RTL
0519
0520 #define ParamAttrs(...) ArrayRef<AttributeSet>({__VA_ARGS__})
0521 #define EnumAttr(Kind) Attribute::get(Ctx, Attribute::AttrKind::Kind)
0522 #define EnumAttrInt(Kind, N) Attribute::get(Ctx, Attribute::AttrKind::Kind, N)
0523 #define AllocSizeAttr(N, M) Attribute::getWithAllocSizeArgs(Ctx, N, M)
0524 #define MemoryAttr(ME) Attribute::getWithMemoryEffects(Ctx, ME)
0525 #define AttributeSet(...) \
0526 AttributeSet::get(Ctx, ArrayRef<Attribute>({__VA_ARGS__}))
0527
0528 #ifndef OMP_ATTRS_SET
0529 #define OMP_ATTRS_SET(VarName, AttrSet)
0530 #endif
0531
0532 #define __OMP_ATTRS_SET(VarName, AttrSet) OMP_ATTRS_SET(VarName, AttrSet)
0533
0534 __OMP_ATTRS_SET(
0535 GetterAttrs,
0536 OptimisticAttributes
0537 ? AttributeSet(
0538 EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree),
0539 EnumAttr(WillReturn),
0540 MemoryAttr(MemoryEffects::inaccessibleMemOnly(ModRefInfo::Ref)))
0541 : AttributeSet(EnumAttr(NoUnwind)))
0542 __OMP_ATTRS_SET(
0543 GetterArgReadAttrs,
0544 OptimisticAttributes
0545 ? AttributeSet(
0546 EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree),
0547 EnumAttr(WillReturn),
0548 MemoryAttr(MemoryEffects::inaccessibleOrArgMemOnly(ModRefInfo::Ref)))
0549 : AttributeSet(EnumAttr(NoUnwind)))
0550 __OMP_ATTRS_SET(
0551 GetterArgWriteAttrs,
0552 OptimisticAttributes
0553 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree),
0554 EnumAttr(WillReturn),
0555 MemoryAttr(MemoryEffects::argMemOnly() | MemoryEffects::inaccessibleMemOnly(ModRefInfo::Ref)))
0556 : AttributeSet(EnumAttr(NoUnwind)))
0557 __OMP_ATTRS_SET(
0558 SetterAttrs,
0559 OptimisticAttributes
0560 ? AttributeSet(
0561 EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree),
0562 EnumAttr(WillReturn),
0563 MemoryAttr(MemoryEffects::inaccessibleMemOnly(ModRefInfo::Mod)))
0564 : AttributeSet(EnumAttr(NoUnwind)))
0565
0566 __OMP_ATTRS_SET(DefaultAttrs,
0567 OptimisticAttributes
0568 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),
0569 EnumAttr(WillReturn), EnumAttr(NoFree))
0570 : AttributeSet(EnumAttr(NoUnwind)))
0571
0572 __OMP_ATTRS_SET(BarrierAttrs,
0573 OptimisticAttributes
0574 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(Convergent))
0575 : AttributeSet(EnumAttr(NoUnwind), EnumAttr(Convergent)))
0576
0577 __OMP_ATTRS_SET(
0578 InaccessibleArgOnlyAttrs,
0579 OptimisticAttributes
0580 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree),
0581 EnumAttr(WillReturn),
0582 MemoryAttr(MemoryEffects::inaccessibleOrArgMemOnly()))
0583 : AttributeSet(EnumAttr(NoUnwind)))
0584
0585 __OMP_ATTRS_SET(AlwaysInlineAttrs,
0586 OptimisticAttributes
0587 ? AttributeSet(EnumAttr(AlwaysInline))
0588 : AttributeSet(EnumAttr(AlwaysInline)))
0589
0590 #if 0
0591 __OMP_ATTRS_SET(
0592 InaccessibleOnlyAttrs,
0593 OptimisticAttributes
0594 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync), EnumAttr(NoFree),
0595 EnumAttr(WillReturn),
0596 MemoryAttr(MemoryEffects::inaccessibleMemOnly()))
0597 : AttributeSet(EnumAttr(NoUnwind)))
0598 #endif
0599
0600 __OMP_ATTRS_SET(AllocAttrs,
0601 OptimisticAttributes
0602 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),
0603 EnumAttr(WillReturn))
0604 : AttributeSet(EnumAttr(NoUnwind)))
0605
0606 __OMP_ATTRS_SET(ForkAttrs, OptimisticAttributes
0607 ? AttributeSet(EnumAttr(NoUnwind))
0608 : AttributeSet(EnumAttr(NoUnwind)))
0609
0610 __OMP_ATTRS_SET(ReadOnlyPtrAttrs,
0611 OptimisticAttributes
0612 ? AttributeSet(EnumAttr(ReadOnly), EnumAttr(NoFree),
0613 EnumAttr(NoCapture))
0614 : AttributeSet())
0615
0616 __OMP_ATTRS_SET(DeviceAllocAttrs,
0617 OptimisticAttributes
0618 ? AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync))
0619 : AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync)))
0620
0621 #if 0
0622 __OMP_ATTRS_SET(WriteOnlyPtrAttrs,
0623 OptimisticAttributes
0624 ? AttributeSet(EnumAttr(WriteOnly), EnumAttr(NoFree),
0625 EnumAttr(NoCapture))
0626 : AttributeSet())
0627 #endif
0628
0629 __OMP_ATTRS_SET(ArgPtrAttrs,
0630 OptimisticAttributes
0631 ? AttributeSet(EnumAttr(NoCapture), EnumAttr(NoFree))
0632 : AttributeSet())
0633
0634 __OMP_ATTRS_SET(ReturnPtrAttrs, AttributeSet(EnumAttr(NoAlias)))
0635
0636 __OMP_ATTRS_SET(ZExt, AttributeSet(EnumAttr(ZExt)))
0637 __OMP_ATTRS_SET(SExt, AttributeSet(EnumAttr(SExt)))
0638 __OMP_ATTRS_SET(SizeTyExt,
0639 M.getDataLayout().getIntPtrType(Ctx)->getBitWidth() < 64
0640 ? AttributeSet(EnumAttr(ZExt))
0641 : AttributeSet())
0642
0643 #if 0
0644 __OMP_ATTRS_SET(ReturnAlignedPtrAttrs,
0645 OptimisticAttributes
0646 ? AttributeSet(EnumAttr(NoAlias), EnumAttrInt(Alignment, 8),
0647 EnumAttrInt(DereferenceableOrNull, 8))
0648 : AttributeSet())
0649 #endif
0650
0651 #undef __OMP_ATTRS_SET
0652 #undef OMP_ATTRS_SET
0653
0654 #ifndef OMP_RTL_ATTRS
0655 #define OMP_RTL_ATTRS(Enum, FnAttrSet, RetAttrSet, ArgAttrSets)
0656 #endif
0657
0658 #define __OMP_RTL_ATTRS(Name, FnAttrSet, RetAttrSet, ArgAttrSets) \
0659 OMP_RTL_ATTRS(OMPRTL_##Name, FnAttrSet, RetAttrSet, ArgAttrSets)
0660
0661 __OMP_RTL_ATTRS(__kmpc_barrier, BarrierAttrs, AttributeSet(),
0662 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0663 __OMP_RTL_ATTRS(__kmpc_barrier_simple_spmd, BarrierAttrs, AttributeSet(),
0664 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0665 __OMP_RTL_ATTRS(__kmpc_barrier_simple_generic, BarrierAttrs, AttributeSet(),
0666 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0667 __OMP_RTL_ATTRS(__kmpc_warp_active_thread_mask, BarrierAttrs, AttributeSet(),
0668 ParamAttrs())
0669 __OMP_RTL_ATTRS(__kmpc_syncwarp, BarrierAttrs, AttributeSet(), ParamAttrs())
0670 __OMP_RTL_ATTRS(__kmpc_cancel, InaccessibleArgOnlyAttrs, SExt,
0671 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0672 __OMP_RTL_ATTRS(__kmpc_cancel_barrier, BarrierAttrs, SExt,
0673 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0674 __OMP_RTL_ATTRS(__kmpc_distribute_for_static_loop_4, AlwaysInlineAttrs, AttributeSet(),
0675 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),
0676 SExt, SExt, SExt, SExt))
0677 __OMP_RTL_ATTRS(__kmpc_distribute_for_static_loop_4u, AlwaysInlineAttrs, AttributeSet(),
0678 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),
0679 ZExt, ZExt, ZExt, ZExt))
0680 __OMP_RTL_ATTRS(__kmpc_distribute_static_loop_4, AlwaysInlineAttrs, AttributeSet(),
0681 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),
0682 SExt, SExt))
0683 __OMP_RTL_ATTRS(__kmpc_distribute_static_loop_4u, AlwaysInlineAttrs, AttributeSet(),
0684 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),
0685 ZExt, ZExt))
0686 __OMP_RTL_ATTRS(__kmpc_for_static_loop_4, AlwaysInlineAttrs, AttributeSet(),
0687 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),
0688 SExt, SExt, SExt))
0689 __OMP_RTL_ATTRS(__kmpc_for_static_loop_4u, AlwaysInlineAttrs, AttributeSet(),
0690 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), AttributeSet(),
0691 ZExt, ZExt, ZExt))
0692 __OMP_RTL_ATTRS(__kmpc_error, AttributeSet(), AttributeSet(),
0693 ParamAttrs(AttributeSet(), SExt))
0694 __OMP_RTL_ATTRS(__kmpc_flush, BarrierAttrs, AttributeSet(),
0695 ParamAttrs(ReadOnlyPtrAttrs))
0696 __OMP_RTL_ATTRS(__kmpc_global_thread_num, GetterArgReadAttrs, SExt,
0697 ParamAttrs(ReadOnlyPtrAttrs))
0698 __OMP_RTL_ATTRS(__kmpc_get_hardware_thread_id_in_block, GetterAttrs, ZExt,
0699 ParamAttrs())
0700 __OMP_RTL_ATTRS(__kmpc_fork_call, ForkAttrs, AttributeSet(),
0701 ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs))
0702 __OMP_RTL_ATTRS(__kmpc_fork_call_if, AttributeSet(), AttributeSet(),
0703 ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs, SExt))
0704 __OMP_RTL_ATTRS(__kmpc_omp_taskwait, BarrierAttrs, SExt,
0705 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0706 __OMP_RTL_ATTRS(__kmpc_omp_taskyield, InaccessibleArgOnlyAttrs, SExt,
0707 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0708 __OMP_RTL_ATTRS(__kmpc_push_num_threads, InaccessibleArgOnlyAttrs,
0709 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0710 __OMP_RTL_ATTRS(__kmpc_push_proc_bind, InaccessibleArgOnlyAttrs, AttributeSet(),
0711 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0712 __OMP_RTL_ATTRS(__kmpc_omp_reg_task_with_affinity, DefaultAttrs, SExt,
0713 ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs,
0714 SExt, ReadOnlyPtrAttrs))
0715
0716 __OMP_RTL_ATTRS(__kmpc_get_hardware_num_blocks, GetterAttrs, ZExt, ParamAttrs())
0717 __OMP_RTL_ATTRS(__kmpc_get_hardware_num_threads_in_block, GetterAttrs, ZExt, ParamAttrs())
0718 __OMP_RTL_ATTRS(__kmpc_get_warp_size, GetterAttrs, ZExt, ParamAttrs())
0719
0720 __OMP_RTL_ATTRS(omp_get_thread_num, GetterAttrs, SExt, ParamAttrs())
0721 __OMP_RTL_ATTRS(omp_get_num_threads, GetterAttrs, SExt, ParamAttrs())
0722 __OMP_RTL_ATTRS(omp_get_max_threads, GetterAttrs, SExt, ParamAttrs())
0723 __OMP_RTL_ATTRS(omp_in_parallel, GetterAttrs, SExt, ParamAttrs())
0724 __OMP_RTL_ATTRS(omp_get_dynamic, GetterAttrs, SExt, ParamAttrs())
0725 __OMP_RTL_ATTRS(omp_get_cancellation, GetterAttrs, SExt, ParamAttrs())
0726 __OMP_RTL_ATTRS(omp_get_nested, GetterAttrs, SExt, ParamAttrs())
0727 __OMP_RTL_ATTRS(
0728 omp_get_schedule, GetterArgWriteAttrs, AttributeSet(),
0729 ParamAttrs(AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly)),
0730 AttributeSet(EnumAttr(NoCapture), EnumAttr(WriteOnly))))
0731 __OMP_RTL_ATTRS(omp_get_thread_limit, GetterAttrs, SExt, ParamAttrs())
0732 __OMP_RTL_ATTRS(omp_get_supported_active_levels, GetterAttrs, SExt, ParamAttrs())
0733 __OMP_RTL_ATTRS(omp_get_max_active_levels, GetterAttrs, SExt, ParamAttrs())
0734 __OMP_RTL_ATTRS(omp_get_level, GetterAttrs, SExt, ParamAttrs())
0735 __OMP_RTL_ATTRS(omp_get_ancestor_thread_num, GetterAttrs, SExt, ParamAttrs(SExt))
0736 __OMP_RTL_ATTRS(omp_get_team_size, GetterAttrs, SExt, ParamAttrs(SExt))
0737 __OMP_RTL_ATTRS(omp_get_active_level, GetterAttrs, SExt, ParamAttrs())
0738 __OMP_RTL_ATTRS(omp_in_final, GetterAttrs, SExt, ParamAttrs())
0739 __OMP_RTL_ATTRS(omp_get_proc_bind, GetterAttrs, SExt, ParamAttrs())
0740 __OMP_RTL_ATTRS(omp_get_num_places, GetterAttrs, SExt, ParamAttrs())
0741 __OMP_RTL_ATTRS(omp_get_num_procs, GetterAttrs, SExt, ParamAttrs())
0742 __OMP_RTL_ATTRS(omp_get_place_proc_ids, GetterArgWriteAttrs, AttributeSet(),
0743 ParamAttrs(SExt, AttributeSet(EnumAttr(NoCapture),
0744 EnumAttr(WriteOnly))))
0745 __OMP_RTL_ATTRS(omp_get_place_num, GetterAttrs, SExt, ParamAttrs())
0746 __OMP_RTL_ATTRS(omp_get_partition_num_places, GetterAttrs, SExt, ParamAttrs())
0747 __OMP_RTL_ATTRS(omp_get_partition_place_nums, GetterArgWriteAttrs, AttributeSet(),
0748 ParamAttrs())
0749 __OMP_RTL_ATTRS(omp_get_wtime, GetterAttrs, AttributeSet(), ParamAttrs())
0750
0751 __OMP_RTL_ATTRS(omp_set_num_threads, SetterAttrs, AttributeSet(),
0752 ParamAttrs(SExt))
0753 __OMP_RTL_ATTRS(omp_set_dynamic, SetterAttrs, AttributeSet(), ParamAttrs(SExt))
0754 __OMP_RTL_ATTRS(omp_set_nested, SetterAttrs, AttributeSet(), ParamAttrs(SExt))
0755 __OMP_RTL_ATTRS(omp_set_schedule, SetterAttrs, AttributeSet(),
0756 ParamAttrs(SExt, SExt))
0757 __OMP_RTL_ATTRS(omp_set_max_active_levels, SetterAttrs, AttributeSet(),
0758 ParamAttrs(SExt))
0759
0760 __OMP_RTL_ATTRS(__kmpc_master, InaccessibleArgOnlyAttrs, SExt,
0761 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0762 __OMP_RTL_ATTRS(__kmpc_end_master, InaccessibleArgOnlyAttrs, AttributeSet(),
0763 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0764 __OMP_RTL_ATTRS(__kmpc_masked, InaccessibleArgOnlyAttrs, SExt,
0765 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0766 __OMP_RTL_ATTRS(__kmpc_end_masked, InaccessibleArgOnlyAttrs, AttributeSet(),
0767 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0768 __OMP_RTL_ATTRS(__kmpc_critical, BarrierAttrs, AttributeSet(),
0769 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet()))
0770 __OMP_RTL_ATTRS(__kmpc_critical_with_hint, BarrierAttrs, AttributeSet(),
0771 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), ZExt))
0772 __OMP_RTL_ATTRS(__kmpc_end_critical, BarrierAttrs, AttributeSet(),
0773 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet()))
0774
0775 __OMP_RTL_ATTRS(__kmpc_begin, DefaultAttrs, AttributeSet(),
0776 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0777 __OMP_RTL_ATTRS(__kmpc_end, DefaultAttrs, AttributeSet(),
0778 ParamAttrs(ReadOnlyPtrAttrs))
0779
0780 __OMP_RTL_ATTRS(__kmpc_reduce, BarrierAttrs, SExt,
0781 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt,
0782 ReadOnlyPtrAttrs, AttributeSet()))
0783 __OMP_RTL_ATTRS(__kmpc_reduce_nowait, BarrierAttrs, SExt,
0784 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt,
0785 ReadOnlyPtrAttrs, AttributeSet()))
0786 __OMP_RTL_ATTRS(__kmpc_end_reduce, BarrierAttrs, AttributeSet(),
0787 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet()))
0788 __OMP_RTL_ATTRS(__kmpc_end_reduce_nowait, BarrierAttrs, AttributeSet(),
0789 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet()))
0790
0791 __OMP_RTL_ATTRS(__kmpc_ordered, BarrierAttrs, AttributeSet(),
0792 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0793 __OMP_RTL_ATTRS(__kmpc_end_ordered, BarrierAttrs, AttributeSet(),
0794 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0795
0796 __OMP_RTL_ATTRS(__kmpc_for_static_init_4, GetterArgWriteAttrs, AttributeSet(),
0797 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0798 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
0799 __OMP_RTL_ATTRS(__kmpc_for_static_init_4u, GetterArgWriteAttrs, AttributeSet(),
0800 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0801 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
0802 __OMP_RTL_ATTRS(__kmpc_for_static_init_8, GetterArgWriteAttrs, AttributeSet(),
0803 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0804 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,
0805 AttributeSet(), AttributeSet()))
0806 __OMP_RTL_ATTRS(__kmpc_for_static_init_8u, GetterArgWriteAttrs, AttributeSet(),
0807 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0808 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,
0809 AttributeSet(), AttributeSet()))
0810 __OMP_RTL_ATTRS(__kmpc_for_static_fini, InaccessibleArgOnlyAttrs,
0811 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0812 __OMP_RTL_ATTRS(__kmpc_distribute_static_init_4, GetterArgWriteAttrs,
0813 AttributeSet(),
0814 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0815 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
0816 __OMP_RTL_ATTRS(__kmpc_distribute_static_init_4u, GetterArgWriteAttrs,
0817 AttributeSet(),
0818 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0819 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
0820 __OMP_RTL_ATTRS(__kmpc_distribute_static_init_8, GetterArgWriteAttrs,
0821 AttributeSet(),
0822 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0823 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,
0824 AttributeSet(), AttributeSet()))
0825 __OMP_RTL_ATTRS(__kmpc_distribute_static_init_8u, GetterArgWriteAttrs,
0826 AttributeSet(),
0827 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0828 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,
0829 AttributeSet(), AttributeSet()))
0830 __OMP_RTL_ATTRS(__kmpc_distribute_static_fini, InaccessibleArgOnlyAttrs,
0831 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0832 __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4, GetterArgWriteAttrs,
0833 AttributeSet(),
0834 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, SExt,
0835 SExt, SExt, SExt))
0836 __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_4u, GetterArgWriteAttrs,
0837 AttributeSet(),
0838 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs, ZExt,
0839 ZExt, SExt, SExt))
0840 __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8, GetterArgWriteAttrs,
0841 AttributeSet(),
0842 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs))
0843 __OMP_RTL_ATTRS(__kmpc_dist_dispatch_init_8u, GetterArgWriteAttrs,
0844 AttributeSet(),
0845 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs))
0846 __OMP_RTL_ATTRS(__kmpc_dispatch_init_4, GetterArgWriteAttrs, AttributeSet(),
0847 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt, SExt, SExt, SExt))
0848 __OMP_RTL_ATTRS(__kmpc_dispatch_init_4u, GetterArgWriteAttrs, AttributeSet(),
0849 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ZExt, ZExt, SExt, SExt))
0850 __OMP_RTL_ATTRS(__kmpc_dispatch_init_8, GetterArgWriteAttrs, AttributeSet(),
0851 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0852 __OMP_RTL_ATTRS(__kmpc_dispatch_init_8u, GetterArgWriteAttrs, AttributeSet(),
0853 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0854 __OMP_RTL_ATTRS(__kmpc_dispatch_next_4, GetterArgWriteAttrs, SExt,
0855 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0856 ArgPtrAttrs, ArgPtrAttrs))
0857 __OMP_RTL_ATTRS(__kmpc_dispatch_next_4u, GetterArgWriteAttrs, SExt,
0858 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0859 ArgPtrAttrs, ArgPtrAttrs))
0860 __OMP_RTL_ATTRS(__kmpc_dispatch_next_8, GetterArgWriteAttrs, SExt,
0861 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0862 ArgPtrAttrs, ArgPtrAttrs))
0863 __OMP_RTL_ATTRS(__kmpc_dispatch_next_8u, GetterArgWriteAttrs, SExt,
0864 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0865 ArgPtrAttrs, ArgPtrAttrs))
0866 __OMP_RTL_ATTRS(__kmpc_dispatch_fini_4, InaccessibleArgOnlyAttrs,
0867 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0868 __OMP_RTL_ATTRS(__kmpc_dispatch_fini_4u, InaccessibleArgOnlyAttrs,
0869 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0870 __OMP_RTL_ATTRS(__kmpc_dispatch_fini_8, InaccessibleArgOnlyAttrs,
0871 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0872 __OMP_RTL_ATTRS(__kmpc_dispatch_fini_8u, InaccessibleArgOnlyAttrs,
0873 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0874 __OMP_RTL_ATTRS(__kmpc_dispatch_deinit, InaccessibleArgOnlyAttrs,
0875 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
0876 __OMP_RTL_ATTRS(__kmpc_team_static_init_4, GetterArgWriteAttrs, AttributeSet(),
0877 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0878 ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
0879 __OMP_RTL_ATTRS(__kmpc_team_static_init_4u, GetterArgWriteAttrs, AttributeSet(),
0880 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0881 ArgPtrAttrs, ArgPtrAttrs, SExt, SExt))
0882 __OMP_RTL_ATTRS(__kmpc_team_static_init_8, GetterArgWriteAttrs, AttributeSet(),
0883 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0884 ArgPtrAttrs, ArgPtrAttrs))
0885 __OMP_RTL_ATTRS(__kmpc_team_static_init_8u, GetterArgWriteAttrs, AttributeSet(),
0886 ParamAttrs(ReadOnlyPtrAttrs, SExt, ArgPtrAttrs, ArgPtrAttrs,
0887 ArgPtrAttrs, ArgPtrAttrs))
0888 __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4, GetterArgWriteAttrs,
0889 AttributeSet(),
0890 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0891 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,
0892 ArgPtrAttrs, SExt, SExt))
0893 __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_4u, GetterArgWriteAttrs,
0894 AttributeSet(),
0895 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0896 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs,
0897 ArgPtrAttrs, SExt, SExt))
0898 __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8, GetterArgWriteAttrs,
0899 AttributeSet(),
0900 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0901 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))
0902 __OMP_RTL_ATTRS(__kmpc_dist_for_static_init_8u, GetterArgWriteAttrs,
0903 AttributeSet(),
0904 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ArgPtrAttrs,
0905 ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs, ArgPtrAttrs))
0906
0907 __OMP_RTL_ATTRS(__kmpc_single, BarrierAttrs, SExt,
0908 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0909 __OMP_RTL_ATTRS(__kmpc_end_single, BarrierAttrs, AttributeSet(),
0910 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0911
0912 __OMP_RTL_ATTRS(__kmpc_omp_task_alloc, DefaultAttrs, ReturnPtrAttrs,
0913 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt, SizeTyExt,
0914 ReadOnlyPtrAttrs))
0915 __OMP_RTL_ATTRS(__kmpc_omp_task, DefaultAttrs, SExt,
0916 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet()))
0917 __OMP_RTL_ATTRS(__kmpc_end_taskgroup, BarrierAttrs, AttributeSet(),
0918 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0919 __OMP_RTL_ATTRS(__kmpc_taskgroup, BarrierAttrs, AttributeSet(),
0920 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0921 __OMP_RTL_ATTRS(__kmpc_omp_task_begin_if0, DefaultAttrs, AttributeSet(),
0922 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0923 __OMP_RTL_ATTRS(__kmpc_omp_task_complete_if0, DefaultAttrs, AttributeSet(),
0924 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0925 __OMP_RTL_ATTRS(__kmpc_omp_task_with_deps, DefaultAttrs, SExt,
0926 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SExt,
0927 ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs))
0928 __OMP_RTL_ATTRS(__kmpc_taskloop, DefaultAttrs, AttributeSet(),
0929 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SExt,
0930 ArgPtrAttrs, ArgPtrAttrs, AttributeSet(), SExt, SExt))
0931 __OMP_RTL_ATTRS(__kmpc_omp_target_task_alloc, DefaultAttrs, ReturnPtrAttrs,
0932 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SizeTyExt, SizeTyExt,
0933 ReadOnlyPtrAttrs, AttributeSet()))
0934 __OMP_RTL_ATTRS(__kmpc_taskred_modifier_init, DefaultAttrs, AttributeSet(),
0935 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt))
0936 __OMP_RTL_ATTRS(__kmpc_taskred_init, DefaultAttrs, AttributeSet(),
0937 ParamAttrs(SExt, SExt))
0938 __OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_fini, BarrierAttrs,
0939 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0940 __OMP_RTL_ATTRS(__kmpc_task_reduction_get_th_data, DefaultAttrs, AttributeSet(),
0941 ParamAttrs(SExt))
0942 __OMP_RTL_ATTRS(__kmpc_task_reduction_init, DefaultAttrs, AttributeSet(),
0943 ParamAttrs(SExt, SExt))
0944 __OMP_RTL_ATTRS(__kmpc_task_reduction_modifier_init, DefaultAttrs,
0945 AttributeSet(), ParamAttrs(AttributeSet(), SExt, SExt, SExt))
0946 __OMP_RTL_ATTRS(__kmpc_proxy_task_completed_ooo, DefaultAttrs, AttributeSet(),
0947 ParamAttrs())
0948
0949 __OMP_RTL_ATTRS(__kmpc_omp_wait_deps, BarrierAttrs, AttributeSet(),
0950 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ReadOnlyPtrAttrs, SExt))
0951 __OMP_RTL_ATTRS(__kmpc_omp_taskwait_deps_51, BarrierAttrs, AttributeSet(),
0952 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, ReadOnlyPtrAttrs, SExt,
0953 AttributeSet(), SExt))
0954 __OMP_RTL_ATTRS(__kmpc_cancellationpoint, DefaultAttrs, SExt,
0955 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0956
0957 __OMP_RTL_ATTRS(__kmpc_fork_teams, ForkAttrs, AttributeSet(),
0958 ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs))
0959 __OMP_RTL_ATTRS(__kmpc_push_num_teams, InaccessibleArgOnlyAttrs, AttributeSet(),
0960 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt, SExt))
0961 __OMP_RTL_ATTRS(__kmpc_set_thread_limit, InaccessibleArgOnlyAttrs, AttributeSet(),
0962 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0963
0964 __OMP_RTL_ATTRS(__kmpc_copyprivate, DefaultAttrs, AttributeSet(),
0965 ParamAttrs(ReadOnlyPtrAttrs, SExt, SizeTyExt,
0966 ReadOnlyPtrAttrs, AttributeSet(), SExt))
0967 __OMP_RTL_ATTRS(__kmpc_threadprivate_cached, DefaultAttrs, AttributeSet(),
0968 ParamAttrs(ReadOnlyPtrAttrs, SExt, AttributeSet(), SizeTyExt))
0969 __OMP_RTL_ATTRS(__kmpc_threadprivate_register, DefaultAttrs, AttributeSet(),
0970 ParamAttrs(ReadOnlyPtrAttrs, AttributeSet(), ReadOnlyPtrAttrs,
0971 ReadOnlyPtrAttrs, ReadOnlyPtrAttrs))
0972
0973 __OMP_RTL_ATTRS(__kmpc_doacross_init, BarrierAttrs, AttributeSet(),
0974 ParamAttrs(ReadOnlyPtrAttrs, SExt, SExt))
0975 __OMP_RTL_ATTRS(__kmpc_doacross_post, BarrierAttrs, AttributeSet(),
0976 ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs))
0977 __OMP_RTL_ATTRS(__kmpc_doacross_wait, BarrierAttrs, AttributeSet(),
0978 ParamAttrs(ReadOnlyPtrAttrs, SExt, ReadOnlyPtrAttrs))
0979 __OMP_RTL_ATTRS(__kmpc_doacross_fini, BarrierAttrs, AttributeSet(),
0980 ParamAttrs(ReadOnlyPtrAttrs, SExt))
0981
0982 __OMP_RTL_ATTRS(__kmpc_alloc_shared,
0983 AttributeSet(EnumAttr(NoUnwind), EnumAttr(NoSync),
0984 AllocSizeAttr(0, std::nullopt)),
0985 ReturnPtrAttrs, ParamAttrs(SizeTyExt))
0986 __OMP_RTL_ATTRS(__kmpc_free_shared, DeviceAllocAttrs, AttributeSet(),
0987 ParamAttrs(AttributeSet(EnumAttr(NoCapture),
0988 EnumAttr(AllocatedPointer)),
0989 SizeTyExt))
0990 __OMP_RTL_ATTRS(__kmpc_begin_sharing_variables, AttributeSet(), AttributeSet(),
0991 ParamAttrs(AttributeSet(), SizeTyExt))
0992
0993 __OMP_RTL_ATTRS(__kmpc_alloc, DefaultAttrs, ReturnPtrAttrs,
0994 ParamAttrs(SExt, SizeTyExt))
0995 __OMP_RTL_ATTRS(__kmpc_aligned_alloc, DefaultAttrs, ReturnPtrAttrs,
0996 ParamAttrs(SExt, SizeTyExt, SizeTyExt))
0997 __OMP_RTL_ATTRS(__kmpc_free, AllocAttrs, AttributeSet(),
0998 ParamAttrs(SExt))
0999
1000 __OMP_RTL_ATTRS(__tgt_interop_init, AttributeSet(), AttributeSet(),
1001 ParamAttrs(AttributeSet(), SExt, AttributeSet(), SExt,
1002 SExt, AttributeSet(), AttributeSet(), SExt))
1003 __OMP_RTL_ATTRS(__tgt_interop_destroy, AttributeSet(), AttributeSet(),
1004 ParamAttrs(AttributeSet(), SExt, AttributeSet(), SExt, SExt,
1005 AttributeSet(), SExt))
1006 __OMP_RTL_ATTRS(__tgt_interop_use, AttributeSet(), AttributeSet(),
1007 ParamAttrs(AttributeSet(), SExt, AttributeSet(), SExt, SExt,
1008 AttributeSet(), SExt))
1009
1010 __OMP_RTL_ATTRS(__kmpc_init_allocator, DefaultAttrs, AttributeSet(),
1011 ParamAttrs(SExt, AttributeSet(), SExt))
1012 __OMP_RTL_ATTRS(__kmpc_destroy_allocator, AllocAttrs, AttributeSet(),
1013 ParamAttrs(SExt))
1014
1015 __OMP_RTL_ATTRS(__kmpc_push_target_tripcount_mapper, SetterAttrs,
1016 AttributeSet(), ParamAttrs())
1017 __OMP_RTL_ATTRS(__tgt_target_mapper, ForkAttrs, SExt,
1018 ParamAttrs(AttributeSet(),AttributeSet(),AttributeSet(), SExt))
1019 __OMP_RTL_ATTRS(__tgt_target_nowait_mapper, ForkAttrs, SExt,
1020 ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), SExt,
1021 AttributeSet(), AttributeSet(), AttributeSet(),
1022 AttributeSet(), AttributeSet(), AttributeSet(),
1023 SExt, AttributeSet(), SExt))
1024 __OMP_RTL_ATTRS(__tgt_target_teams_mapper, ForkAttrs, SExt,
1025 ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), SExt,
1026 AttributeSet(), AttributeSet(), AttributeSet(),
1027 AttributeSet(), AttributeSet(), AttributeSet(), SExt,
1028 SExt))
1029 __OMP_RTL_ATTRS(__tgt_target_teams_nowait_mapper, ForkAttrs, SExt,
1030 ParamAttrs(AttributeSet(), AttributeSet(), AttributeSet(), SExt,
1031 AttributeSet(), AttributeSet(), AttributeSet(),
1032 AttributeSet(), AttributeSet(), AttributeSet(),
1033 SExt, SExt, SExt, AttributeSet(), SExt))
1034 __OMP_RTL_ATTRS(__tgt_target_kernel, ForkAttrs, SExt,
1035 ParamAttrs(AttributeSet(), AttributeSet(), SExt, SExt))
1036 __OMP_RTL_ATTRS(__tgt_target_kernel_nowait, ForkAttrs, SExt,
1037 ParamAttrs(AttributeSet(), AttributeSet(), SExt, SExt,
1038 AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1039 SExt))
1040 __OMP_RTL_ATTRS(__tgt_target_data_begin_mapper, ForkAttrs, AttributeSet(),
1041 ParamAttrs(AttributeSet(), AttributeSet(), SExt))
1042 __OMP_RTL_ATTRS(__tgt_target_data_begin_nowait_mapper, ForkAttrs,
1043 AttributeSet(),
1044 ParamAttrs(AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1045 AttributeSet(), AttributeSet(), AttributeSet(),
1046 AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1047 SExt, AttributeSet()))
1048 __OMP_RTL_ATTRS(__tgt_target_data_begin_mapper_issue, AttributeSet(),
1049 AttributeSet(),
1050 ParamAttrs(AttributeSet(), AttributeSet(), SExt))
1051 __OMP_RTL_ATTRS(__tgt_target_data_end_mapper, ForkAttrs, AttributeSet(),
1052 ParamAttrs(AttributeSet(), AttributeSet(), SExt))
1053 __OMP_RTL_ATTRS(__tgt_target_data_end_nowait_mapper, ForkAttrs, AttributeSet(),
1054 ParamAttrs(AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1055 AttributeSet(), AttributeSet(), AttributeSet(),
1056 AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1057 SExt, AttributeSet()))
1058 __OMP_RTL_ATTRS(__tgt_target_data_update_mapper, ForkAttrs, AttributeSet(),
1059 ParamAttrs(AttributeSet(), AttributeSet(), SExt))
1060 __OMP_RTL_ATTRS(__tgt_target_data_update_nowait_mapper, ForkAttrs,
1061 AttributeSet(),
1062 ParamAttrs(AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1063 AttributeSet(), AttributeSet(), AttributeSet(),
1064 AttributeSet(), AttributeSet(), SExt, AttributeSet(),
1065 SExt, AttributeSet()))
1066 __OMP_RTL_ATTRS(__tgt_mapper_num_components, ForkAttrs, AttributeSet(),
1067 ParamAttrs())
1068 __OMP_RTL_ATTRS(__tgt_push_mapper_component, ForkAttrs, AttributeSet(),
1069 ParamAttrs())
1070 __OMP_RTL_ATTRS(__kmpc_task_allow_completion_event, DefaultAttrs,
1071 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
1072
1073 __OMP_RTL_ATTRS(__kmpc_target_init, AttributeSet(), SExt,
1074 ParamAttrs(AttributeSet()))
1075 __OMP_RTL_ATTRS(__kmpc_target_deinit, AttributeSet(), AttributeSet(),
1076 ParamAttrs())
1077 __OMP_RTL_ATTRS(__kmpc_parallel_51, AlwaysInlineAttrs, AttributeSet(),
1078 ParamAttrs(AttributeSet(), SExt, SExt, SExt, SExt,
1079 AttributeSet(), AttributeSet(), AttributeSet(),
1080 SizeTyExt))
1081 __OMP_RTL_ATTRS(__kmpc_serialized_parallel, InaccessibleArgOnlyAttrs,
1082 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
1083 __OMP_RTL_ATTRS(__kmpc_end_serialized_parallel, InaccessibleArgOnlyAttrs,
1084 AttributeSet(), ParamAttrs(ReadOnlyPtrAttrs, SExt))
1085 __OMP_RTL_ATTRS(__kmpc_shuffle_int32, AttributeSet(), SExt,
1086 ParamAttrs(SExt, SExt, SExt))
1087 __OMP_RTL_ATTRS(__kmpc_nvptx_parallel_reduce_nowait_v2, AttributeSet(), SExt,
1088 ParamAttrs())
1089 __OMP_RTL_ATTRS(__kmpc_nvptx_teams_reduce_nowait_v2, AttributeSet(), SExt,
1090 ParamAttrs(AttributeSet(), AttributeSet(), ZExt))
1091 __OMP_RTL_ATTRS(__kmpc_reduction_get_fixed_buffer, GetterAttrs, AttributeSet(), ParamAttrs())
1092
1093 __OMP_RTL_ATTRS(__kmpc_shuffle_int64, AttributeSet(), AttributeSet(),
1094 ParamAttrs(AttributeSet(), SExt, SExt))
1095
1096 __OMP_RTL_ATTRS(__kmpc_is_spmd_exec_mode, AttributeSet(), SExt, ParamAttrs())
1097
1098 #undef __OMP_RTL_ATTRS
1099 #undef OMP_RTL_ATTRS
1100 #undef AttributeSet
1101 #undef EnumAttr
1102 #undef EnumAttrInt
1103 #undef ParamAttrs
1104 #undef AllocSizeAttr
1105
1106 ///}
1107
1108 /// KMP ident_t bit flags
1109 ///
1110 /// In accordance with the values in `openmp/runtime/src/kmp.h`.
1111 ///
1112 ///{
1113
1114 #ifndef OMP_IDENT_FLAG
1115 #define OMP_IDENT_FLAG(Enum, Str, Value)
1116 #endif
1117
1118 #define __OMP_IDENT_FLAG(Name, Value) \
1119 OMP_IDENT_FLAG(OMP_IDENT_FLAG_##Name, #Name, Value)
1120
1121 __OMP_IDENT_FLAG(KMPC, 0x02)
1122 __OMP_IDENT_FLAG(ATOMIC_REDUCE, 0x10)
1123 __OMP_IDENT_FLAG(BARRIER_EXPL, 0x20)
1124 __OMP_IDENT_FLAG(BARRIER_IMPL, 0x0040)
1125 __OMP_IDENT_FLAG(BARRIER_IMPL_MASK, 0x01C0)
1126 __OMP_IDENT_FLAG(BARRIER_IMPL_FOR, 0x0040)
1127 __OMP_IDENT_FLAG(BARRIER_IMPL_SECTIONS, 0x00C0)
1128 __OMP_IDENT_FLAG(BARRIER_IMPL_SINGLE, 0x0140)
1129 __OMP_IDENT_FLAG(BARRIER_IMPL_WORKSHARE, 0x01C0)
1130
1131 #undef __OMP_IDENT_FLAG
1132 #undef OMP_IDENT_FLAG
1133
1134 ///}
1135
1136 /// KMP cancel kind
1137 ///
1138 ///{
1139
1140 #ifndef OMP_CANCEL_KIND
1141 #define OMP_CANCEL_KIND(Enum, Str, DirectiveEnum, Value)
1142 #endif
1143
1144 #define __OMP_CANCEL_KIND(Name, Value) \
1145 OMP_CANCEL_KIND(OMP_CANCEL_KIND_##Name, #Name, OMPD_##Name, Value)
1146
1147 __OMP_CANCEL_KIND(parallel, 1)
1148 __OMP_CANCEL_KIND(for, 2)
1149 __OMP_CANCEL_KIND(sections, 3)
1150 __OMP_CANCEL_KIND(taskgroup, 4)
1151
1152 #undef __OMP_CANCEL_KIND
1153 #undef OMP_CANCEL_KIND
1154
1155 ///}
1156
1157 /// Default kinds
1158 ///
1159 ///{
1160
1161 #ifndef OMP_DEFAULT_KIND
1162 #define OMP_DEFAULT_KIND(Enum, Str)
1163 #endif
1164
1165 #define __OMP_DEFAULT_KIND(Name) OMP_DEFAULT_KIND(OMP_DEFAULT_##Name, #Name)
1166
1167 __OMP_DEFAULT_KIND(none)
1168 __OMP_DEFAULT_KIND(shared)
1169 __OMP_DEFAULT_KIND(private)
1170 __OMP_DEFAULT_KIND(firstprivate)
1171 __OMP_DEFAULT_KIND(unknown)
1172
1173 #undef __OMP_DEFAULT_KIND
1174 #undef OMP_DEFAULT_KIND
1175
1176 ///}
1177
1178 /// Proc bind kinds
1179 ///
1180 ///{
1181
1182 #ifndef OMP_PROC_BIND_KIND
1183 #define OMP_PROC_BIND_KIND(Enum, Str, Value)
1184 #endif
1185
1186 #define __OMP_PROC_BIND_KIND(Name, Value) \
1187 OMP_PROC_BIND_KIND(OMP_PROC_BIND_##Name, #Name, Value)
1188
1189 __OMP_PROC_BIND_KIND(master, 2)
1190 __OMP_PROC_BIND_KIND(close, 3)
1191 __OMP_PROC_BIND_KIND(spread, 4)
1192 __OMP_PROC_BIND_KIND(primary, 5)
1193 __OMP_PROC_BIND_KIND(default, 6)
1194 __OMP_PROC_BIND_KIND(unknown, 7)
1195
1196 #undef __OMP_PROC_BIND_KIND
1197 #undef OMP_PROC_BIND_KIND
1198
1199 ///}
1200
1201 /// OpenMP context related definitions:
1202 /// - trait set selector
1203 /// - trait selector
1204 /// - trait property
1205 ///
1206 ///{
1207
1208 #ifndef OMP_TRAIT_SET
1209 #define OMP_TRAIT_SET(Enum, Str)
1210 #endif
1211 #ifndef OMP_TRAIT_SELECTOR
1212 #define OMP_TRAIT_SELECTOR(Enum, TraitSetEnum, Str, RequiresProperty)
1213 #endif
1214 #ifndef OMP_TRAIT_PROPERTY
1215 #define OMP_TRAIT_PROPERTY(Enum, TraitSetEnum, TraitSelectorEnum, Str)
1216 #endif
1217 #ifndef OMP_LAST_TRAIT_PROPERTY
1218 #define OMP_LAST_TRAIT_PROPERTY(Enum)
1219 #endif
1220
1221 #define __OMP_TRAIT_SET(Name) OMP_TRAIT_SET(Name, #Name)
1222 #define __OMP_TRAIT_SELECTOR(TraitSet, Name, RequiresProperty) \
1223 OMP_TRAIT_SELECTOR(TraitSet##_##Name, TraitSet, #Name, RequiresProperty)
1224 #define __OMP_TRAIT_SELECTOR_AND_PROPERTY(TraitSet, Name) \
1225 OMP_TRAIT_SELECTOR(TraitSet##_##Name, TraitSet, #Name, false) \
1226 OMP_TRAIT_PROPERTY(TraitSet##_##Name##_##Name, TraitSet, TraitSet##_##Name, \
1227 #Name)
1228 #define __OMP_TRAIT_PROPERTY(TraitSet, TraitSelector, Name) \
1229 OMP_TRAIT_PROPERTY(TraitSet##_##TraitSelector##_##Name, TraitSet, \
1230 TraitSet##_##TraitSelector, #Name)
1231
1232 // "invalid" must go first.
1233 OMP_TRAIT_SET(invalid, "invalid")
1234 OMP_TRAIT_SELECTOR(invalid, invalid, "invalid", false)
1235 OMP_TRAIT_PROPERTY(invalid, invalid, invalid, "invalid")
1236
1237 __OMP_TRAIT_SET(construct)
1238 __OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, target)
1239 __OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, teams)
1240 __OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, parallel)
1241 __OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, for)
1242 __OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, simd)
1243
1244 __OMP_TRAIT_SET(device)
1245
1246 __OMP_TRAIT_SELECTOR(device, kind, true)
1247
1248 __OMP_TRAIT_PROPERTY(device, kind, host)
1249 __OMP_TRAIT_PROPERTY(device, kind, nohost)
1250 __OMP_TRAIT_PROPERTY(device, kind, cpu)
1251 __OMP_TRAIT_PROPERTY(device, kind, gpu)
1252 __OMP_TRAIT_PROPERTY(device, kind, fpga)
1253 __OMP_TRAIT_PROPERTY(device, kind, any)
1254
1255 __OMP_TRAIT_SELECTOR(device, arch, true)
1256
1257 __OMP_TRAIT_PROPERTY(device, arch, arm)
1258 __OMP_TRAIT_PROPERTY(device, arch, armeb)
1259 __OMP_TRAIT_PROPERTY(device, arch, aarch64)
1260 __OMP_TRAIT_PROPERTY(device, arch, aarch64_be)
1261 __OMP_TRAIT_PROPERTY(device, arch, aarch64_32)
1262 __OMP_TRAIT_PROPERTY(device, arch, ppc)
1263 __OMP_TRAIT_PROPERTY(device, arch, ppcle)
1264 __OMP_TRAIT_PROPERTY(device, arch, ppc64)
1265 __OMP_TRAIT_PROPERTY(device, arch, ppc64le)
1266 __OMP_TRAIT_PROPERTY(device, arch, x86)
1267 __OMP_TRAIT_PROPERTY(device, arch, x86_64)
1268 __OMP_TRAIT_PROPERTY(device, arch, amdgcn)
1269 __OMP_TRAIT_PROPERTY(device, arch, nvptx)
1270 __OMP_TRAIT_PROPERTY(device, arch, nvptx64)
1271
1272 __OMP_TRAIT_SET(implementation)
1273
1274 __OMP_TRAIT_SELECTOR(implementation, vendor, true)
1275
1276 __OMP_TRAIT_PROPERTY(implementation, vendor, amd)
1277 __OMP_TRAIT_PROPERTY(implementation, vendor, arm)
1278 __OMP_TRAIT_PROPERTY(implementation, vendor, bsc)
1279 __OMP_TRAIT_PROPERTY(implementation, vendor, cray)
1280 __OMP_TRAIT_PROPERTY(implementation, vendor, fujitsu)
1281 __OMP_TRAIT_PROPERTY(implementation, vendor, gnu)
1282 __OMP_TRAIT_PROPERTY(implementation, vendor, ibm)
1283 __OMP_TRAIT_PROPERTY(implementation, vendor, intel)
1284 __OMP_TRAIT_PROPERTY(implementation, vendor, llvm)
1285 __OMP_TRAIT_PROPERTY(implementation, vendor, nec)
1286 __OMP_TRAIT_PROPERTY(implementation, vendor, nvidia)
1287 __OMP_TRAIT_PROPERTY(implementation, vendor, pgi)
1288 __OMP_TRAIT_PROPERTY(implementation, vendor, ti)
1289 __OMP_TRAIT_PROPERTY(implementation, vendor, unknown)
1290
1291 __OMP_TRAIT_SELECTOR(implementation, extension, true)
1292 __OMP_TRAIT_PROPERTY(implementation, extension, match_all)
1293 __OMP_TRAIT_PROPERTY(implementation, extension, match_any)
1294 __OMP_TRAIT_PROPERTY(implementation, extension, match_none)
1295 __OMP_TRAIT_PROPERTY(implementation, extension, disable_implicit_base)
1296 __OMP_TRAIT_PROPERTY(implementation, extension, allow_templates)
1297 __OMP_TRAIT_PROPERTY(implementation, extension, bind_to_declaration)
1298
1299 __OMP_TRAIT_SET(user)
1300
1301 __OMP_TRAIT_SELECTOR(user, condition, true)
1302
1303 __OMP_TRAIT_PROPERTY(user, condition, true)
1304 __OMP_TRAIT_PROPERTY(user, condition, false)
1305 __OMP_TRAIT_PROPERTY(user, condition, unknown)
1306
1307 __OMP_TRAIT_SELECTOR_AND_PROPERTY(construct, dispatch)
1308
1309 // Note that we put isa last so that the other conditions are checked first.
1310 // This allows us to issue warnings wrt. isa only if we match otherwise.
1311 __OMP_TRAIT_SELECTOR(device, isa, true)
1312
1313 // We use "__ANY" as a placeholder in the isa property to denote the
1314 // conceptual "any", not the literal `any` used in kind. The string we
1315 // we use is not important except that it will show up in diagnostics.
1316 OMP_TRAIT_PROPERTY(device_isa___ANY, device, device_isa,
1317 "<any, entirely target dependent>")
1318
1319
1320 #undef OMP_TRAIT_SET
1321 #undef __OMP_TRAIT_SET
1322 ///}
1323
1324 /// Traits for the requires directive
1325 ///
1326 /// These will (potentially) become trait selectors for the OpenMP context if
1327 /// the OMP_REQUIRES_TRAIT macro is not defined.
1328 ///
1329 ///{
1330
1331 #ifdef OMP_REQUIRES_TRAIT
1332 #define __OMP_REQUIRES_TRAIT(Name) \
1333 OMP_REQUIRES_TRAIT(OMP_REQUIRES_TRAIT_##Name, #Name)
1334 #else
1335 #define __OMP_REQUIRES_TRAIT(Name) \
1336 __OMP_TRAIT_SELECTOR_AND_PROPERTY(implementation, Name)
1337 #endif
1338
1339 __OMP_REQUIRES_TRAIT(unified_address)
1340 __OMP_REQUIRES_TRAIT(unified_shared_memory)
1341 __OMP_REQUIRES_TRAIT(reverse_offload)
1342 __OMP_REQUIRES_TRAIT(dynamic_allocators)
1343 __OMP_REQUIRES_TRAIT(atomic_default_mem_order)
1344
1345 OMP_LAST_TRAIT_PROPERTY(
1346 implementation_atomic_default_mem_order_atomic_default_mem_order)
1347
1348 #undef __OMP_TRAIT_SELECTOR_AND_PROPERTY
1349 #undef OMP_TRAIT_SELECTOR
1350 #undef __OMP_TRAIT_SELECTOR
1351 #undef OMP_TRAIT_PROPERTY
1352 #undef OMP_LAST_TRAIT_PROPERTY
1353 #undef __OMP_TRAIT_PROPERTY
1354 #undef __OMP_REQUIRES_TRAIT
1355 #undef OMP_REQUIRES_TRAIT
1356 ///}
1357
1358
1359 /// Assumption clauses
1360 ///
1361 ///{
1362
1363 #ifdef OMP_ASSUME_CLAUSE
1364 #define __OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression) \
1365 OMP_ASSUME_CLAUSE(Identifier, StartsWith, HasDirectiveList, HasExpression)
1366 #else
1367 #define __OMP_ASSUME_CLAUSE(...)
1368 #endif
1369
1370 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("ext_"), true, false, false)
1371 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("absent"), false, true, false)
1372 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("contains"), false, true, false)
1373 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("holds"), false, false, true)
1374 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_openmp"), false, false, false)
1375 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_openmp_routines"), false, false, false)
1376 __OMP_ASSUME_CLAUSE(llvm::StringLiteral("no_parallelism"), false, false, false)
1377
1378 #undef __OMP_ASSUME_CLAUSE
1379 #undef OMP_ASSUME_CLAUSE
1380 ///}