Back to home page

EIC code displayed by LXR

 
 

    


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 ///}