OMPKinds.def 60 KB

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