OMPKinds.def 55 KB

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