@cpp-linter/clang-tidy-linux-arm64 16.0.3 → 18.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{16 → 18}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{16 → 18}/include/__clang_cuda_intrinsics.h +191 -0
  5. package/lib/clang/{16 → 18}/include/__clang_cuda_libdevice_declares.h +2 -2
  6. package/lib/clang/{16 → 18}/include/__clang_cuda_math.h +3 -3
  7. package/lib/clang/{16 → 18}/include/__clang_cuda_runtime_wrapper.h +2 -2
  8. package/lib/clang/{16 → 18}/include/__clang_hip_cmath.h +1 -1
  9. package/lib/clang/{16 → 18}/include/__clang_hip_libdevice_declares.h +32 -30
  10. package/lib/clang/{16 → 18}/include/__clang_hip_math.h +244 -238
  11. package/lib/clang/{16 → 18}/include/__clang_hip_runtime_wrapper.h +44 -23
  12. package/lib/clang/18/include/__stdarg___gnuc_va_list.h +13 -0
  13. package/lib/clang/18/include/__stdarg___va_copy.h +12 -0
  14. package/lib/clang/18/include/__stdarg_va_arg.h +22 -0
  15. package/lib/clang/18/include/__stdarg_va_copy.h +12 -0
  16. package/lib/clang/18/include/__stdarg_va_list.h +13 -0
  17. package/lib/clang/{16 → 18}/include/__stddef_max_align_t.h +1 -1
  18. package/lib/clang/18/include/__stddef_null.h +29 -0
  19. package/lib/clang/18/include/__stddef_nullptr_t.h +29 -0
  20. package/lib/clang/18/include/__stddef_offsetof.h +17 -0
  21. package/lib/clang/18/include/__stddef_ptrdiff_t.h +20 -0
  22. package/lib/clang/18/include/__stddef_rsize_t.h +20 -0
  23. package/lib/clang/18/include/__stddef_size_t.h +20 -0
  24. package/lib/clang/18/include/__stddef_unreachable.h +21 -0
  25. package/lib/clang/18/include/__stddef_wchar_t.h +28 -0
  26. package/lib/clang/18/include/__stddef_wint_t.h +15 -0
  27. package/lib/clang/18/include/adcintrin.h +160 -0
  28. package/lib/clang/18/include/adxintrin.h +102 -0
  29. package/lib/clang/{16 → 18}/include/altivec.h +167 -136
  30. package/lib/clang/{16 → 18}/include/ammintrin.h +4 -4
  31. package/lib/clang/18/include/amxcomplexintrin.h +169 -0
  32. package/lib/clang/{16 → 18}/include/arm_acle.h +124 -40
  33. package/lib/clang/{16 → 18}/include/arm_neon.h +249 -328
  34. package/lib/clang/18/include/arm_sme.h +2412 -0
  35. package/lib/clang/{16 → 18}/include/arm_sve.h +7454 -364
  36. package/lib/clang/18/include/arm_vector_types.h +345 -0
  37. package/lib/clang/18/include/avx2intrin.h +5284 -0
  38. package/lib/clang/{16 → 18}/include/avx512bf16intrin.h +3 -2
  39. package/lib/clang/{16 → 18}/include/avx512bitalgintrin.h +4 -1
  40. package/lib/clang/{16 → 18}/include/avx512bwintrin.h +28 -38
  41. package/lib/clang/{16 → 18}/include/avx512cdintrin.h +3 -1
  42. package/lib/clang/{16 → 18}/include/avx512dqintrin.h +4 -2
  43. package/lib/clang/{16 → 18}/include/avx512fintrin.h +24 -10
  44. package/lib/clang/{16 → 18}/include/avx512fp16intrin.h +18 -12
  45. package/lib/clang/{16 → 18}/include/avx512ifmaintrin.h +3 -1
  46. package/lib/clang/{16 → 18}/include/avx512ifmavlintrin.h +8 -2
  47. package/lib/clang/{16 → 18}/include/avx512pfintrin.h +0 -5
  48. package/lib/clang/{16 → 18}/include/avx512vbmi2intrin.h +1 -1
  49. package/lib/clang/{16 → 18}/include/avx512vbmiintrin.h +3 -2
  50. package/lib/clang/{16 → 18}/include/avx512vbmivlintrin.h +8 -3
  51. package/lib/clang/{16 → 18}/include/avx512vlbf16intrin.h +8 -6
  52. package/lib/clang/{16 → 18}/include/avx512vlbitalgintrin.h +8 -2
  53. package/lib/clang/{16 → 18}/include/avx512vlbwintrin.h +8 -2
  54. package/lib/clang/{16 → 18}/include/avx512vlcdintrin.h +8 -3
  55. package/lib/clang/{16 → 18}/include/avx512vldqintrin.h +8 -2
  56. package/lib/clang/{16 → 18}/include/avx512vlfp16intrin.h +2 -2
  57. package/lib/clang/{16 → 18}/include/avx512vlintrin.h +8 -2
  58. package/lib/clang/{16 → 18}/include/avx512vlvbmi2intrin.h +8 -2
  59. package/lib/clang/{16 → 18}/include/avx512vlvnniintrin.h +8 -2
  60. package/lib/clang/{16 → 18}/include/avx512vlvp2intersectintrin.h +6 -4
  61. package/lib/clang/{16 → 18}/include/avx512vnniintrin.h +3 -2
  62. package/lib/clang/{16 → 18}/include/avx512vp2intersectintrin.h +3 -2
  63. package/lib/clang/{16 → 18}/include/avx512vpopcntdqintrin.h +3 -1
  64. package/lib/clang/{16 → 18}/include/avx512vpopcntdqvlintrin.h +6 -2
  65. package/lib/clang/{16 → 18}/include/avxintrin.h +29 -12
  66. package/lib/clang/18/include/avxvnniint16intrin.h +473 -0
  67. package/lib/clang/18/include/bmi2intrin.h +255 -0
  68. package/lib/clang/{16 → 18}/include/bmiintrin.h +231 -46
  69. package/lib/clang/{16 → 18}/include/clflushoptintrin.h +9 -0
  70. package/lib/clang/{16 → 18}/include/clzerointrin.h +7 -5
  71. package/lib/clang/18/include/cuda_wrappers/bits/basic_string.h +9 -0
  72. package/lib/clang/18/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  73. package/lib/clang/18/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  74. package/lib/clang/{16 → 18}/include/emmintrin.h +10 -10
  75. package/lib/clang/18/include/fmaintrin.h +780 -0
  76. package/lib/clang/{16 → 18}/include/gfniintrin.h +23 -6
  77. package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +624 -0
  78. package/lib/clang/18/include/ia32intrin.h +863 -0
  79. package/lib/clang/{16 → 18}/include/immintrin.h +182 -11
  80. package/lib/clang/{16 → 18}/include/intrin.h +16 -0
  81. package/lib/clang/{16 → 18}/include/larchintrin.h +13 -1
  82. package/lib/clang/18/include/lasxintrin.h +3884 -0
  83. package/lib/clang/{16 → 18}/include/limits.h +7 -5
  84. package/lib/clang/18/include/llvm_libc_wrappers/assert.h +34 -0
  85. package/lib/clang/18/include/llvm_libc_wrappers/ctype.h +102 -0
  86. package/lib/clang/18/include/llvm_libc_wrappers/inttypes.h +34 -0
  87. package/lib/clang/18/include/llvm_libc_wrappers/stdio.h +80 -0
  88. package/lib/clang/18/include/llvm_libc_wrappers/stdlib.h +45 -0
  89. package/lib/clang/18/include/llvm_libc_wrappers/string.h +96 -0
  90. package/lib/clang/18/include/llvm_libc_wrappers/time.h +34 -0
  91. package/lib/clang/18/include/lsxintrin.h +3750 -0
  92. package/lib/clang/{16 → 18}/include/mmintrin.h +7 -5
  93. package/lib/clang/{16 → 18}/include/module.modulemap +155 -2
  94. package/lib/clang/18/include/mwaitxintrin.h +62 -0
  95. package/lib/clang/{16 → 18}/include/opencl-c-base.h +8 -0
  96. package/lib/clang/{16 → 18}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
  97. package/lib/clang/{16 → 18}/include/openmp_wrappers/cmath +1 -1
  98. package/lib/clang/{16 → 18}/include/openmp_wrappers/new +1 -1
  99. package/lib/clang/{16 → 18}/include/pmmintrin.h +15 -8
  100. package/lib/clang/{16 → 18}/include/ppc_wrappers/emmintrin.h +2 -1
  101. package/lib/clang/18/include/ppc_wrappers/nmmintrin.h +26 -0
  102. package/lib/clang/{16 → 18}/include/ppc_wrappers/smmintrin.h +37 -17
  103. package/lib/clang/18/include/rdseedintrin.h +105 -0
  104. package/lib/clang/18/include/riscv_bitmanip.h +195 -0
  105. package/lib/clang/18/include/riscv_crypto.h +170 -0
  106. package/lib/clang/18/include/riscv_ntlh.h +26 -0
  107. package/lib/clang/18/include/riscv_vector.h +431 -0
  108. package/lib/clang/18/include/sha512intrin.h +200 -0
  109. package/lib/clang/18/include/shaintrin.h +189 -0
  110. package/lib/clang/18/include/sifive_vector.h +16 -0
  111. package/lib/clang/18/include/sm3intrin.h +238 -0
  112. package/lib/clang/18/include/sm4intrin.h +269 -0
  113. package/lib/clang/{16 → 18}/include/smmintrin.h +3 -3
  114. package/lib/clang/{16 → 18}/include/stdalign.h +3 -0
  115. package/lib/clang/18/include/stdarg.h +79 -0
  116. package/lib/clang/{16 → 18}/include/stdatomic.h +7 -2
  117. package/lib/clang/18/include/stdckdint.h +42 -0
  118. package/lib/clang/18/include/stddef.h +123 -0
  119. package/lib/clang/{16 → 18}/include/stdint.h +19 -48
  120. package/lib/clang/{16 → 18}/include/stdnoreturn.h +2 -2
  121. package/lib/clang/{16 → 18}/include/tmmintrin.h +7 -2
  122. package/lib/clang/18/include/usermsrintrin.h +51 -0
  123. package/lib/clang/{16 → 18}/include/vaesintrin.h +4 -2
  124. package/lib/clang/{16 → 18}/include/vecintrin.h +217 -199
  125. package/lib/clang/{16 → 18}/include/wasm_simd128.h +132 -12
  126. package/lib/clang/{16 → 18}/include/x86gprintrin.h +5 -0
  127. package/lib/clang/{16 → 18}/include/xmmintrin.h +9 -5
  128. package/lib/clang/18/include/xsavecintrin.h +84 -0
  129. package/package.json +6 -6
  130. package/lib/clang/16/include/adxintrin.h +0 -72
  131. package/lib/clang/16/include/avx2intrin.h +0 -1148
  132. package/lib/clang/16/include/bmi2intrin.h +0 -81
  133. package/lib/clang/16/include/fmaintrin.h +0 -216
  134. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +0 -223
  135. package/lib/clang/16/include/ia32intrin.h +0 -441
  136. package/lib/clang/16/include/mwaitxintrin.h +0 -33
  137. package/lib/clang/16/include/rdseedintrin.h +0 -42
  138. package/lib/clang/16/include/riscv_vector.h +0 -211
  139. package/lib/clang/16/include/shaintrin.h +0 -61
  140. package/lib/clang/16/include/stdarg.h +0 -51
  141. package/lib/clang/16/include/stddef.h +0 -128
  142. package/lib/clang/16/include/xsavecintrin.h +0 -34
  143. /package/lib/clang/{16 → 18}/include/__clang_cuda_builtin_vars.h +0 -0
  144. /package/lib/clang/{16 → 18}/include/__clang_cuda_cmath.h +0 -0
  145. /package/lib/clang/{16 → 18}/include/__clang_cuda_complex_builtins.h +0 -0
  146. /package/lib/clang/{16 → 18}/include/__clang_cuda_math_forward_declares.h +0 -0
  147. /package/lib/clang/{16 → 18}/include/__clang_cuda_texture_intrinsics.h +0 -0
  148. /package/lib/clang/{16 → 18}/include/__clang_hip_stdlib.h +0 -0
  149. /package/lib/clang/{16 → 18}/include/__wmmintrin_aes.h +0 -0
  150. /package/lib/clang/{16 → 18}/include/__wmmintrin_pclmul.h +0 -0
  151. /package/lib/clang/{16 → 18}/include/amxfp16intrin.h +0 -0
  152. /package/lib/clang/{16 → 18}/include/amxintrin.h +0 -0
  153. /package/lib/clang/{16 → 18}/include/arm64intr.h +0 -0
  154. /package/lib/clang/{16 → 18}/include/arm_bf16.h +0 -0
  155. /package/lib/clang/{16 → 18}/include/arm_cde.h +0 -0
  156. /package/lib/clang/{16 → 18}/include/arm_cmse.h +0 -0
  157. /package/lib/clang/{16 → 18}/include/arm_fp16.h +0 -0
  158. /package/lib/clang/{16 → 18}/include/arm_mve.h +0 -0
  159. /package/lib/clang/{16 → 18}/include/arm_neon_sve_bridge.h +0 -0
  160. /package/lib/clang/{16 → 18}/include/armintr.h +0 -0
  161. /package/lib/clang/{16 → 18}/include/avx512erintrin.h +0 -0
  162. /package/lib/clang/{16 → 18}/include/avxifmaintrin.h +0 -0
  163. /package/lib/clang/{16 → 18}/include/avxneconvertintrin.h +0 -0
  164. /package/lib/clang/{16 → 18}/include/avxvnniint8intrin.h +0 -0
  165. /package/lib/clang/{16 → 18}/include/avxvnniintrin.h +0 -0
  166. /package/lib/clang/{16 → 18}/include/builtins.h +0 -0
  167. /package/lib/clang/{16 → 18}/include/cet.h +0 -0
  168. /package/lib/clang/{16 → 18}/include/cetintrin.h +0 -0
  169. /package/lib/clang/{16 → 18}/include/cldemoteintrin.h +0 -0
  170. /package/lib/clang/{16 → 18}/include/clwbintrin.h +0 -0
  171. /package/lib/clang/{16 → 18}/include/cmpccxaddintrin.h +0 -0
  172. /package/lib/clang/{16 → 18}/include/cpuid.h +0 -0
  173. /package/lib/clang/{16 → 18}/include/crc32intrin.h +0 -0
  174. /package/lib/clang/{16 → 18}/include/cuda_wrappers/algorithm +0 -0
  175. /package/lib/clang/{16 → 18}/include/cuda_wrappers/cmath +0 -0
  176. /package/lib/clang/{16 → 18}/include/cuda_wrappers/complex +0 -0
  177. /package/lib/clang/{16 → 18}/include/cuda_wrappers/new +0 -0
  178. /package/lib/clang/{16 → 18}/include/enqcmdintrin.h +0 -0
  179. /package/lib/clang/{16 → 18}/include/f16cintrin.h +0 -0
  180. /package/lib/clang/{16 → 18}/include/float.h +0 -0
  181. /package/lib/clang/{16 → 18}/include/fma4intrin.h +0 -0
  182. /package/lib/clang/{16 → 18}/include/fxsrintrin.h +0 -0
  183. /package/lib/clang/{16 → 18}/include/hexagon_circ_brev_intrinsics.h +0 -0
  184. /package/lib/clang/{16 → 18}/include/hexagon_protos.h +0 -0
  185. /package/lib/clang/{16 → 18}/include/hexagon_types.h +0 -0
  186. /package/lib/clang/{16 → 18}/include/hlsl/hlsl_basic_types.h +0 -0
  187. /package/lib/clang/{16 → 18}/include/hlsl.h +0 -0
  188. /package/lib/clang/{16 → 18}/include/hresetintrin.h +0 -0
  189. /package/lib/clang/{16 → 18}/include/htmintrin.h +0 -0
  190. /package/lib/clang/{16 → 18}/include/htmxlintrin.h +0 -0
  191. /package/lib/clang/{16 → 18}/include/hvx_hexagon_protos.h +0 -0
  192. /package/lib/clang/{16 → 18}/include/inttypes.h +0 -0
  193. /package/lib/clang/{16 → 18}/include/invpcidintrin.h +0 -0
  194. /package/lib/clang/{16 → 18}/include/iso646.h +0 -0
  195. /package/lib/clang/{16 → 18}/include/keylockerintrin.h +0 -0
  196. /package/lib/clang/{16 → 18}/include/lwpintrin.h +0 -0
  197. /package/lib/clang/{16 → 18}/include/lzcntintrin.h +0 -0
  198. /package/lib/clang/{16 → 18}/include/mm3dnow.h +0 -0
  199. /package/lib/clang/{16 → 18}/include/mm_malloc.h +0 -0
  200. /package/lib/clang/{16 → 18}/include/movdirintrin.h +0 -0
  201. /package/lib/clang/{16 → 18}/include/msa.h +0 -0
  202. /package/lib/clang/{16 → 18}/include/nmmintrin.h +0 -0
  203. /package/lib/clang/{16 → 18}/include/opencl-c.h +0 -0
  204. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex +0 -0
  205. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex.h +0 -0
  206. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex_cmath.h +0 -0
  207. /package/lib/clang/{16 → 18}/include/openmp_wrappers/math.h +0 -0
  208. /package/lib/clang/{16 → 18}/include/pconfigintrin.h +0 -0
  209. /package/lib/clang/{16 → 18}/include/pkuintrin.h +0 -0
  210. /package/lib/clang/{16 → 18}/include/popcntintrin.h +0 -0
  211. /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmi2intrin.h +0 -0
  212. /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmiintrin.h +0 -0
  213. /package/lib/clang/{16 → 18}/include/ppc_wrappers/immintrin.h +0 -0
  214. /package/lib/clang/{16 → 18}/include/ppc_wrappers/mm_malloc.h +0 -0
  215. /package/lib/clang/{16 → 18}/include/ppc_wrappers/mmintrin.h +0 -0
  216. /package/lib/clang/{16 → 18}/include/ppc_wrappers/pmmintrin.h +0 -0
  217. /package/lib/clang/{16 → 18}/include/ppc_wrappers/tmmintrin.h +0 -0
  218. /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86gprintrin.h +0 -0
  219. /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86intrin.h +0 -0
  220. /package/lib/clang/{16 → 18}/include/ppc_wrappers/xmmintrin.h +0 -0
  221. /package/lib/clang/{16 → 18}/include/prfchiintrin.h +0 -0
  222. /package/lib/clang/{16 → 18}/include/prfchwintrin.h +0 -0
  223. /package/lib/clang/{16 → 18}/include/ptwriteintrin.h +0 -0
  224. /package/lib/clang/{16 → 18}/include/raointintrin.h +0 -0
  225. /package/lib/clang/{16 → 18}/include/rdpruintrin.h +0 -0
  226. /package/lib/clang/{16 → 18}/include/rtmintrin.h +0 -0
  227. /package/lib/clang/{16 → 18}/include/s390intrin.h +0 -0
  228. /package/lib/clang/{16 → 18}/include/serializeintrin.h +0 -0
  229. /package/lib/clang/{16 → 18}/include/sgxintrin.h +0 -0
  230. /package/lib/clang/{16 → 18}/include/stdbool.h +0 -0
  231. /package/lib/clang/{16 → 18}/include/tbmintrin.h +0 -0
  232. /package/lib/clang/{16 → 18}/include/tgmath.h +0 -0
  233. /package/lib/clang/{16 → 18}/include/tsxldtrkintrin.h +0 -0
  234. /package/lib/clang/{16 → 18}/include/uintrintrin.h +0 -0
  235. /package/lib/clang/{16 → 18}/include/unwind.h +0 -0
  236. /package/lib/clang/{16 → 18}/include/vadefs.h +0 -0
  237. /package/lib/clang/{16 → 18}/include/varargs.h +0 -0
  238. /package/lib/clang/{16 → 18}/include/velintrin.h +0 -0
  239. /package/lib/clang/{16 → 18}/include/velintrin_approx.h +0 -0
  240. /package/lib/clang/{16 → 18}/include/velintrin_gen.h +0 -0
  241. /package/lib/clang/{16 → 18}/include/vpclmulqdqintrin.h +0 -0
  242. /package/lib/clang/{16 → 18}/include/waitpkgintrin.h +0 -0
  243. /package/lib/clang/{16 → 18}/include/wbnoinvdintrin.h +0 -0
  244. /package/lib/clang/{16 → 18}/include/wmmintrin.h +0 -0
  245. /package/lib/clang/{16 → 18}/include/x86intrin.h +0 -0
  246. /package/lib/clang/{16 → 18}/include/xopintrin.h +0 -0
  247. /package/lib/clang/{16 → 18}/include/xsaveintrin.h +0 -0
  248. /package/lib/clang/{16 → 18}/include/xsaveoptintrin.h +0 -0
  249. /package/lib/clang/{16 → 18}/include/xsavesintrin.h +0 -0
  250. /package/lib/clang/{16 → 18}/include/xtestintrin.h +0 -0
@@ -14,9 +14,6 @@
14
14
  #endif
15
15
 
16
16
  #if !defined(__HIPCC_RTC__)
17
- #if defined(__cplusplus)
18
- #include <algorithm>
19
- #endif
20
17
  #include <limits.h>
21
18
  #include <stdint.h>
22
19
  #ifdef __OPENMP_AMDGCN__
@@ -32,6 +29,17 @@
32
29
  #define __DEVICE__ static __device__ inline __attribute__((always_inline))
33
30
  #endif
34
31
 
32
+ // Device library provides fast low precision and slow full-recision
33
+ // implementations for some functions. Which one gets selected depends on
34
+ // __CLANG_GPU_APPROX_TRANSCENDENTALS__ which gets defined by clang if
35
+ // -ffast-math or -fgpu-approx-transcendentals are in effect.
36
+ #pragma push_macro("__FAST_OR_SLOW")
37
+ #if defined(__CLANG_GPU_APPROX_TRANSCENDENTALS__)
38
+ #define __FAST_OR_SLOW(fast, slow) fast
39
+ #else
40
+ #define __FAST_OR_SLOW(fast, slow) slow
41
+ #endif
42
+
35
43
  // A few functions return bool type starting only in C++11.
36
44
  #pragma push_macro("__RETURN_TYPE")
37
45
  #ifdef __OPENMP_AMDGCN__
@@ -139,21 +147,180 @@ uint64_t __make_mantissa(const char *__tagp __attribute__((nonnull))) {
139
147
  }
140
148
 
141
149
  // BEGIN FLOAT
150
+
151
+ // BEGIN INTRINSICS
152
+
153
+ __DEVICE__
154
+ float __cosf(float __x) { return __ocml_native_cos_f32(__x); }
155
+
156
+ __DEVICE__
157
+ float __exp10f(float __x) {
158
+ const float __log2_10 = 0x1.a934f0p+1f;
159
+ return __builtin_amdgcn_exp2f(__log2_10 * __x);
160
+ }
161
+
162
+ __DEVICE__
163
+ float __expf(float __x) {
164
+ const float __log2_e = 0x1.715476p+0;
165
+ return __builtin_amdgcn_exp2f(__log2_e * __x);
166
+ }
167
+
168
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
169
+ __DEVICE__
170
+ float __fadd_rd(float __x, float __y) { return __ocml_add_rtn_f32(__x, __y); }
171
+ __DEVICE__
172
+ float __fadd_rn(float __x, float __y) { return __ocml_add_rte_f32(__x, __y); }
173
+ __DEVICE__
174
+ float __fadd_ru(float __x, float __y) { return __ocml_add_rtp_f32(__x, __y); }
175
+ __DEVICE__
176
+ float __fadd_rz(float __x, float __y) { return __ocml_add_rtz_f32(__x, __y); }
177
+ #else
178
+ __DEVICE__
179
+ float __fadd_rn(float __x, float __y) { return __x + __y; }
180
+ #endif
181
+
182
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
183
+ __DEVICE__
184
+ float __fdiv_rd(float __x, float __y) { return __ocml_div_rtn_f32(__x, __y); }
185
+ __DEVICE__
186
+ float __fdiv_rn(float __x, float __y) { return __ocml_div_rte_f32(__x, __y); }
187
+ __DEVICE__
188
+ float __fdiv_ru(float __x, float __y) { return __ocml_div_rtp_f32(__x, __y); }
189
+ __DEVICE__
190
+ float __fdiv_rz(float __x, float __y) { return __ocml_div_rtz_f32(__x, __y); }
191
+ #else
192
+ __DEVICE__
193
+ float __fdiv_rn(float __x, float __y) { return __x / __y; }
194
+ #endif
195
+
196
+ __DEVICE__
197
+ float __fdividef(float __x, float __y) { return __x / __y; }
198
+
199
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
200
+ __DEVICE__
201
+ float __fmaf_rd(float __x, float __y, float __z) {
202
+ return __ocml_fma_rtn_f32(__x, __y, __z);
203
+ }
204
+ __DEVICE__
205
+ float __fmaf_rn(float __x, float __y, float __z) {
206
+ return __ocml_fma_rte_f32(__x, __y, __z);
207
+ }
208
+ __DEVICE__
209
+ float __fmaf_ru(float __x, float __y, float __z) {
210
+ return __ocml_fma_rtp_f32(__x, __y, __z);
211
+ }
212
+ __DEVICE__
213
+ float __fmaf_rz(float __x, float __y, float __z) {
214
+ return __ocml_fma_rtz_f32(__x, __y, __z);
215
+ }
216
+ #else
217
+ __DEVICE__
218
+ float __fmaf_rn(float __x, float __y, float __z) {
219
+ return __builtin_fmaf(__x, __y, __z);
220
+ }
221
+ #endif
222
+
223
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
224
+ __DEVICE__
225
+ float __fmul_rd(float __x, float __y) { return __ocml_mul_rtn_f32(__x, __y); }
226
+ __DEVICE__
227
+ float __fmul_rn(float __x, float __y) { return __ocml_mul_rte_f32(__x, __y); }
228
+ __DEVICE__
229
+ float __fmul_ru(float __x, float __y) { return __ocml_mul_rtp_f32(__x, __y); }
230
+ __DEVICE__
231
+ float __fmul_rz(float __x, float __y) { return __ocml_mul_rtz_f32(__x, __y); }
232
+ #else
233
+ __DEVICE__
234
+ float __fmul_rn(float __x, float __y) { return __x * __y; }
235
+ #endif
236
+
237
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
238
+ __DEVICE__
239
+ float __frcp_rd(float __x) { return __ocml_div_rtn_f32(1.0f, __x); }
240
+ __DEVICE__
241
+ float __frcp_rn(float __x) { return __ocml_div_rte_f32(1.0f, __x); }
242
+ __DEVICE__
243
+ float __frcp_ru(float __x) { return __ocml_div_rtp_f32(1.0f, __x); }
244
+ __DEVICE__
245
+ float __frcp_rz(float __x) { return __ocml_div_rtz_f32(1.0f, __x); }
246
+ #else
247
+ __DEVICE__
248
+ float __frcp_rn(float __x) { return 1.0f / __x; }
249
+ #endif
250
+
251
+ __DEVICE__
252
+ float __frsqrt_rn(float __x) { return __builtin_amdgcn_rsqf(__x); }
253
+
254
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
255
+ __DEVICE__
256
+ float __fsqrt_rd(float __x) { return __ocml_sqrt_rtn_f32(__x); }
257
+ __DEVICE__
258
+ float __fsqrt_rn(float __x) { return __ocml_sqrt_rte_f32(__x); }
259
+ __DEVICE__
260
+ float __fsqrt_ru(float __x) { return __ocml_sqrt_rtp_f32(__x); }
261
+ __DEVICE__
262
+ float __fsqrt_rz(float __x) { return __ocml_sqrt_rtz_f32(__x); }
263
+ #else
264
+ __DEVICE__
265
+ float __fsqrt_rn(float __x) { return __ocml_native_sqrt_f32(__x); }
266
+ #endif
267
+
268
+ #if defined OCML_BASIC_ROUNDED_OPERATIONS
269
+ __DEVICE__
270
+ float __fsub_rd(float __x, float __y) { return __ocml_sub_rtn_f32(__x, __y); }
271
+ __DEVICE__
272
+ float __fsub_rn(float __x, float __y) { return __ocml_sub_rte_f32(__x, __y); }
273
+ __DEVICE__
274
+ float __fsub_ru(float __x, float __y) { return __ocml_sub_rtp_f32(__x, __y); }
275
+ __DEVICE__
276
+ float __fsub_rz(float __x, float __y) { return __ocml_sub_rtz_f32(__x, __y); }
277
+ #else
278
+ __DEVICE__
279
+ float __fsub_rn(float __x, float __y) { return __x - __y; }
280
+ #endif
281
+
282
+ __DEVICE__
283
+ float __log10f(float __x) { return __builtin_log10f(__x); }
284
+
285
+ __DEVICE__
286
+ float __log2f(float __x) { return __builtin_amdgcn_logf(__x); }
287
+
288
+ __DEVICE__
289
+ float __logf(float __x) { return __builtin_logf(__x); }
290
+
291
+ __DEVICE__
292
+ float __powf(float __x, float __y) { return __ocml_pow_f32(__x, __y); }
293
+
294
+ __DEVICE__
295
+ float __saturatef(float __x) { return (__x < 0) ? 0 : ((__x > 1) ? 1 : __x); }
296
+
297
+ __DEVICE__
298
+ void __sincosf(float __x, float *__sinptr, float *__cosptr) {
299
+ *__sinptr = __ocml_native_sin_f32(__x);
300
+ *__cosptr = __ocml_native_cos_f32(__x);
301
+ }
302
+
303
+ __DEVICE__
304
+ float __sinf(float __x) { return __ocml_native_sin_f32(__x); }
305
+
306
+ __DEVICE__
307
+ float __tanf(float __x) {
308
+ return __sinf(__x) * __builtin_amdgcn_rcpf(__cosf(__x));
309
+ }
310
+ // END INTRINSICS
311
+
142
312
  #if defined(__cplusplus)
143
313
  __DEVICE__
144
314
  int abs(int __x) {
145
- int __sgn = __x >> (sizeof(int) * CHAR_BIT - 1);
146
- return (__x ^ __sgn) - __sgn;
315
+ return __builtin_abs(__x);
147
316
  }
148
317
  __DEVICE__
149
318
  long labs(long __x) {
150
- long __sgn = __x >> (sizeof(long) * CHAR_BIT - 1);
151
- return (__x ^ __sgn) - __sgn;
319
+ return __builtin_labs(__x);
152
320
  }
153
321
  __DEVICE__
154
322
  long long llabs(long long __x) {
155
- long long __sgn = __x >> (sizeof(long long) * CHAR_BIT - 1);
156
- return (__x ^ __sgn) - __sgn;
323
+ return __builtin_llabs(__x);
157
324
  }
158
325
  #endif
159
326
 
@@ -182,13 +349,13 @@ __DEVICE__
182
349
  float cbrtf(float __x) { return __ocml_cbrt_f32(__x); }
183
350
 
184
351
  __DEVICE__
185
- float ceilf(float __x) { return __ocml_ceil_f32(__x); }
352
+ float ceilf(float __x) { return __builtin_ceilf(__x); }
186
353
 
187
354
  __DEVICE__
188
- float copysignf(float __x, float __y) { return __ocml_copysign_f32(__x, __y); }
355
+ float copysignf(float __x, float __y) { return __builtin_copysignf(__x, __y); }
189
356
 
190
357
  __DEVICE__
191
- float cosf(float __x) { return __ocml_cos_f32(__x); }
358
+ float cosf(float __x) { return __FAST_OR_SLOW(__cosf, __ocml_cos_f32)(__x); }
192
359
 
193
360
  __DEVICE__
194
361
  float coshf(float __x) { return __ocml_cosh_f32(__x); }
@@ -221,10 +388,10 @@ __DEVICE__
221
388
  float exp10f(float __x) { return __ocml_exp10_f32(__x); }
222
389
 
223
390
  __DEVICE__
224
- float exp2f(float __x) { return __ocml_exp2_f32(__x); }
391
+ float exp2f(float __x) { return __builtin_exp2f(__x); }
225
392
 
226
393
  __DEVICE__
227
- float expf(float __x) { return __ocml_exp_f32(__x); }
394
+ float expf(float __x) { return __builtin_expf(__x); }
228
395
 
229
396
  __DEVICE__
230
397
  float expm1f(float __x) { return __ocml_expm1_f32(__x); }
@@ -239,33 +406,25 @@ __DEVICE__
239
406
  float fdividef(float __x, float __y) { return __x / __y; }
240
407
 
241
408
  __DEVICE__
242
- float floorf(float __x) { return __ocml_floor_f32(__x); }
409
+ float floorf(float __x) { return __builtin_floorf(__x); }
243
410
 
244
411
  __DEVICE__
245
412
  float fmaf(float __x, float __y, float __z) {
246
- return __ocml_fma_f32(__x, __y, __z);
413
+ return __builtin_fmaf(__x, __y, __z);
247
414
  }
248
415
 
249
416
  __DEVICE__
250
- float fmaxf(float __x, float __y) { return __ocml_fmax_f32(__x, __y); }
417
+ float fmaxf(float __x, float __y) { return __builtin_fmaxf(__x, __y); }
251
418
 
252
419
  __DEVICE__
253
- float fminf(float __x, float __y) { return __ocml_fmin_f32(__x, __y); }
420
+ float fminf(float __x, float __y) { return __builtin_fminf(__x, __y); }
254
421
 
255
422
  __DEVICE__
256
423
  float fmodf(float __x, float __y) { return __ocml_fmod_f32(__x, __y); }
257
424
 
258
425
  __DEVICE__
259
426
  float frexpf(float __x, int *__nptr) {
260
- int __tmp;
261
- #ifdef __OPENMP_AMDGCN__
262
- #pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
263
- #endif
264
- float __r =
265
- __ocml_frexp_f32(__x, (__attribute__((address_space(5))) int *)&__tmp);
266
- *__nptr = __tmp;
267
-
268
- return __r;
427
+ return __builtin_frexpf(__x, __nptr);
269
428
  }
270
429
 
271
430
  __DEVICE__
@@ -275,13 +434,13 @@ __DEVICE__
275
434
  int ilogbf(float __x) { return __ocml_ilogb_f32(__x); }
276
435
 
277
436
  __DEVICE__
278
- __RETURN_TYPE __finitef(float __x) { return __ocml_isfinite_f32(__x); }
437
+ __RETURN_TYPE __finitef(float __x) { return __builtin_isfinite(__x); }
279
438
 
280
439
  __DEVICE__
281
- __RETURN_TYPE __isinff(float __x) { return __ocml_isinf_f32(__x); }
440
+ __RETURN_TYPE __isinff(float __x) { return __builtin_isinf(__x); }
282
441
 
283
442
  __DEVICE__
284
- __RETURN_TYPE __isnanf(float __x) { return __ocml_isnan_f32(__x); }
443
+ __RETURN_TYPE __isnanf(float __x) { return __builtin_isnan(__x); }
285
444
 
286
445
  __DEVICE__
287
446
  float j0f(float __x) { return __ocml_j0_f32(__x); }
@@ -311,37 +470,37 @@ float jnf(int __n, float __x) { // TODO: we could use Ahmes multiplication
311
470
  }
312
471
 
313
472
  __DEVICE__
314
- float ldexpf(float __x, int __e) { return __ocml_ldexp_f32(__x, __e); }
473
+ float ldexpf(float __x, int __e) { return __builtin_amdgcn_ldexpf(__x, __e); }
315
474
 
316
475
  __DEVICE__
317
476
  float lgammaf(float __x) { return __ocml_lgamma_f32(__x); }
318
477
 
319
478
  __DEVICE__
320
- long long int llrintf(float __x) { return __ocml_rint_f32(__x); }
479
+ long long int llrintf(float __x) { return __builtin_rintf(__x); }
321
480
 
322
481
  __DEVICE__
323
- long long int llroundf(float __x) { return __ocml_round_f32(__x); }
482
+ long long int llroundf(float __x) { return __builtin_roundf(__x); }
324
483
 
325
484
  __DEVICE__
326
- float log10f(float __x) { return __ocml_log10_f32(__x); }
485
+ float log10f(float __x) { return __builtin_log10f(__x); }
327
486
 
328
487
  __DEVICE__
329
488
  float log1pf(float __x) { return __ocml_log1p_f32(__x); }
330
489
 
331
490
  __DEVICE__
332
- float log2f(float __x) { return __ocml_log2_f32(__x); }
491
+ float log2f(float __x) { return __FAST_OR_SLOW(__log2f, __ocml_log2_f32)(__x); }
333
492
 
334
493
  __DEVICE__
335
494
  float logbf(float __x) { return __ocml_logb_f32(__x); }
336
495
 
337
496
  __DEVICE__
338
- float logf(float __x) { return __ocml_log_f32(__x); }
497
+ float logf(float __x) { return __FAST_OR_SLOW(__logf, __ocml_log_f32)(__x); }
339
498
 
340
499
  __DEVICE__
341
- long int lrintf(float __x) { return __ocml_rint_f32(__x); }
500
+ long int lrintf(float __x) { return __builtin_rintf(__x); }
342
501
 
343
502
  __DEVICE__
344
- long int lroundf(float __x) { return __ocml_round_f32(__x); }
503
+ long int lroundf(float __x) { return __builtin_roundf(__x); }
345
504
 
346
505
  __DEVICE__
347
506
  float modff(float __x, float *__iptr) {
@@ -377,7 +536,7 @@ float nanf(const char *__tagp __attribute__((nonnull))) {
377
536
  }
378
537
 
379
538
  __DEVICE__
380
- float nearbyintf(float __x) { return __ocml_nearbyint_f32(__x); }
539
+ float nearbyintf(float __x) { return __builtin_nearbyintf(__x); }
381
540
 
382
541
  __DEVICE__
383
542
  float nextafterf(float __x, float __y) {
@@ -409,7 +568,7 @@ float normf(int __dim,
409
568
  ++__a;
410
569
  }
411
570
 
412
- return __ocml_sqrt_f32(__r);
571
+ return __builtin_sqrtf(__r);
413
572
  }
414
573
 
415
574
  __DEVICE__
@@ -443,7 +602,7 @@ __DEVICE__
443
602
  float rhypotf(float __x, float __y) { return __ocml_rhypot_f32(__x, __y); }
444
603
 
445
604
  __DEVICE__
446
- float rintf(float __x) { return __ocml_rint_f32(__x); }
605
+ float rintf(float __x) { return __builtin_rintf(__x); }
447
606
 
448
607
  __DEVICE__
449
608
  float rnorm3df(float __x, float __y, float __z) {
@@ -468,22 +627,22 @@ float rnormf(int __dim,
468
627
  }
469
628
 
470
629
  __DEVICE__
471
- float roundf(float __x) { return __ocml_round_f32(__x); }
630
+ float roundf(float __x) { return __builtin_roundf(__x); }
472
631
 
473
632
  __DEVICE__
474
633
  float rsqrtf(float __x) { return __ocml_rsqrt_f32(__x); }
475
634
 
476
635
  __DEVICE__
477
636
  float scalblnf(float __x, long int __n) {
478
- return (__n < INT_MAX) ? __ocml_scalbn_f32(__x, __n)
637
+ return (__n < INT_MAX) ? __builtin_amdgcn_ldexpf(__x, __n)
479
638
  : __ocml_scalb_f32(__x, __n);
480
639
  }
481
640
 
482
641
  __DEVICE__
483
- float scalbnf(float __x, int __n) { return __ocml_scalbn_f32(__x, __n); }
642
+ float scalbnf(float __x, int __n) { return __builtin_amdgcn_ldexpf(__x, __n); }
484
643
 
485
644
  __DEVICE__
486
- __RETURN_TYPE __signbitf(float __x) { return __ocml_signbit_f32(__x); }
645
+ __RETURN_TYPE __signbitf(float __x) { return __builtin_signbitf(__x); }
487
646
 
488
647
  __DEVICE__
489
648
  void sincosf(float __x, float *__sinptr, float *__cosptr) {
@@ -491,9 +650,13 @@ void sincosf(float __x, float *__sinptr, float *__cosptr) {
491
650
  #ifdef __OPENMP_AMDGCN__
492
651
  #pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
493
652
  #endif
653
+ #ifdef __CLANG_CUDA_APPROX_TRANSCENDENTALS__
654
+ __sincosf(__x, __sinptr, __cosptr);
655
+ #else
494
656
  *__sinptr =
495
657
  __ocml_sincos_f32(__x, (__attribute__((address_space(5))) float *)&__tmp);
496
658
  *__cosptr = __tmp;
659
+ #endif
497
660
  }
498
661
 
499
662
  __DEVICE__
@@ -508,7 +671,7 @@ void sincospif(float __x, float *__sinptr, float *__cosptr) {
508
671
  }
509
672
 
510
673
  __DEVICE__
511
- float sinf(float __x) { return __ocml_sin_f32(__x); }
674
+ float sinf(float __x) { return __FAST_OR_SLOW(__sinf, __ocml_sin_f32)(__x); }
512
675
 
513
676
  __DEVICE__
514
677
  float sinhf(float __x) { return __ocml_sinh_f32(__x); }
@@ -517,7 +680,7 @@ __DEVICE__
517
680
  float sinpif(float __x) { return __ocml_sinpi_f32(__x); }
518
681
 
519
682
  __DEVICE__
520
- float sqrtf(float __x) { return __ocml_sqrt_f32(__x); }
683
+ float sqrtf(float __x) { return __builtin_sqrtf(__x); }
521
684
 
522
685
  __DEVICE__
523
686
  float tanf(float __x) { return __ocml_tan_f32(__x); }
@@ -529,7 +692,7 @@ __DEVICE__
529
692
  float tgammaf(float __x) { return __ocml_tgamma_f32(__x); }
530
693
 
531
694
  __DEVICE__
532
- float truncf(float __x) { return __ocml_trunc_f32(__x); }
695
+ float truncf(float __x) { return __builtin_truncf(__x); }
533
696
 
534
697
  __DEVICE__
535
698
  float y0f(float __x) { return __ocml_y0_f32(__x); }
@@ -559,158 +722,7 @@ float ynf(int __n, float __x) { // TODO: we could use Ahmes multiplication
559
722
  return __x1;
560
723
  }
561
724
 
562
- // BEGIN INTRINSICS
563
-
564
- __DEVICE__
565
- float __cosf(float __x) { return __ocml_native_cos_f32(__x); }
566
-
567
- __DEVICE__
568
- float __exp10f(float __x) { return __ocml_native_exp10_f32(__x); }
569
-
570
- __DEVICE__
571
- float __expf(float __x) { return __ocml_native_exp_f32(__x); }
572
-
573
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
574
- __DEVICE__
575
- float __fadd_rd(float __x, float __y) { return __ocml_add_rtn_f32(__x, __y); }
576
- __DEVICE__
577
- float __fadd_rn(float __x, float __y) { return __ocml_add_rte_f32(__x, __y); }
578
- __DEVICE__
579
- float __fadd_ru(float __x, float __y) { return __ocml_add_rtp_f32(__x, __y); }
580
- __DEVICE__
581
- float __fadd_rz(float __x, float __y) { return __ocml_add_rtz_f32(__x, __y); }
582
- #else
583
- __DEVICE__
584
- float __fadd_rn(float __x, float __y) { return __x + __y; }
585
- #endif
586
-
587
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
588
- __DEVICE__
589
- float __fdiv_rd(float __x, float __y) { return __ocml_div_rtn_f32(__x, __y); }
590
- __DEVICE__
591
- float __fdiv_rn(float __x, float __y) { return __ocml_div_rte_f32(__x, __y); }
592
- __DEVICE__
593
- float __fdiv_ru(float __x, float __y) { return __ocml_div_rtp_f32(__x, __y); }
594
- __DEVICE__
595
- float __fdiv_rz(float __x, float __y) { return __ocml_div_rtz_f32(__x, __y); }
596
- #else
597
- __DEVICE__
598
- float __fdiv_rn(float __x, float __y) { return __x / __y; }
599
- #endif
600
-
601
- __DEVICE__
602
- float __fdividef(float __x, float __y) { return __x / __y; }
603
-
604
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
605
- __DEVICE__
606
- float __fmaf_rd(float __x, float __y, float __z) {
607
- return __ocml_fma_rtn_f32(__x, __y, __z);
608
- }
609
- __DEVICE__
610
- float __fmaf_rn(float __x, float __y, float __z) {
611
- return __ocml_fma_rte_f32(__x, __y, __z);
612
- }
613
- __DEVICE__
614
- float __fmaf_ru(float __x, float __y, float __z) {
615
- return __ocml_fma_rtp_f32(__x, __y, __z);
616
- }
617
- __DEVICE__
618
- float __fmaf_rz(float __x, float __y, float __z) {
619
- return __ocml_fma_rtz_f32(__x, __y, __z);
620
- }
621
- #else
622
- __DEVICE__
623
- float __fmaf_rn(float __x, float __y, float __z) {
624
- return __ocml_fma_f32(__x, __y, __z);
625
- }
626
- #endif
627
-
628
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
629
- __DEVICE__
630
- float __fmul_rd(float __x, float __y) { return __ocml_mul_rtn_f32(__x, __y); }
631
- __DEVICE__
632
- float __fmul_rn(float __x, float __y) { return __ocml_mul_rte_f32(__x, __y); }
633
- __DEVICE__
634
- float __fmul_ru(float __x, float __y) { return __ocml_mul_rtp_f32(__x, __y); }
635
- __DEVICE__
636
- float __fmul_rz(float __x, float __y) { return __ocml_mul_rtz_f32(__x, __y); }
637
- #else
638
- __DEVICE__
639
- float __fmul_rn(float __x, float __y) { return __x * __y; }
640
- #endif
641
-
642
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
643
- __DEVICE__
644
- float __frcp_rd(float __x) { return __ocml_div_rtn_f32(1.0f, __x); }
645
- __DEVICE__
646
- float __frcp_rn(float __x) { return __ocml_div_rte_f32(1.0f, __x); }
647
- __DEVICE__
648
- float __frcp_ru(float __x) { return __ocml_div_rtp_f32(1.0f, __x); }
649
- __DEVICE__
650
- float __frcp_rz(float __x) { return __ocml_div_rtz_f32(1.0f, __x); }
651
- #else
652
- __DEVICE__
653
- float __frcp_rn(float __x) { return 1.0f / __x; }
654
- #endif
655
-
656
- __DEVICE__
657
- float __frsqrt_rn(float __x) { return __llvm_amdgcn_rsq_f32(__x); }
658
-
659
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
660
- __DEVICE__
661
- float __fsqrt_rd(float __x) { return __ocml_sqrt_rtn_f32(__x); }
662
- __DEVICE__
663
- float __fsqrt_rn(float __x) { return __ocml_sqrt_rte_f32(__x); }
664
- __DEVICE__
665
- float __fsqrt_ru(float __x) { return __ocml_sqrt_rtp_f32(__x); }
666
- __DEVICE__
667
- float __fsqrt_rz(float __x) { return __ocml_sqrt_rtz_f32(__x); }
668
- #else
669
- __DEVICE__
670
- float __fsqrt_rn(float __x) { return __ocml_native_sqrt_f32(__x); }
671
- #endif
672
-
673
- #if defined OCML_BASIC_ROUNDED_OPERATIONS
674
- __DEVICE__
675
- float __fsub_rd(float __x, float __y) { return __ocml_sub_rtn_f32(__x, __y); }
676
- __DEVICE__
677
- float __fsub_rn(float __x, float __y) { return __ocml_sub_rte_f32(__x, __y); }
678
- __DEVICE__
679
- float __fsub_ru(float __x, float __y) { return __ocml_sub_rtp_f32(__x, __y); }
680
- __DEVICE__
681
- float __fsub_rz(float __x, float __y) { return __ocml_sub_rtz_f32(__x, __y); }
682
- #else
683
- __DEVICE__
684
- float __fsub_rn(float __x, float __y) { return __x - __y; }
685
- #endif
686
-
687
- __DEVICE__
688
- float __log10f(float __x) { return __ocml_native_log10_f32(__x); }
689
-
690
- __DEVICE__
691
- float __log2f(float __x) { return __ocml_native_log2_f32(__x); }
692
-
693
- __DEVICE__
694
- float __logf(float __x) { return __ocml_native_log_f32(__x); }
695
-
696
- __DEVICE__
697
- float __powf(float __x, float __y) { return __ocml_pow_f32(__x, __y); }
698
-
699
- __DEVICE__
700
- float __saturatef(float __x) { return (__x < 0) ? 0 : ((__x > 1) ? 1 : __x); }
701
-
702
- __DEVICE__
703
- void __sincosf(float __x, float *__sinptr, float *__cosptr) {
704
- *__sinptr = __ocml_native_sin_f32(__x);
705
- *__cosptr = __ocml_native_cos_f32(__x);
706
- }
707
-
708
- __DEVICE__
709
- float __sinf(float __x) { return __ocml_native_sin_f32(__x); }
710
725
 
711
- __DEVICE__
712
- float __tanf(float __x) { return __ocml_tan_f32(__x); }
713
- // END INTRINSICS
714
726
  // END FLOAT
715
727
 
716
728
  // BEGIN DOUBLE
@@ -739,11 +751,11 @@ __DEVICE__
739
751
  double cbrt(double __x) { return __ocml_cbrt_f64(__x); }
740
752
 
741
753
  __DEVICE__
742
- double ceil(double __x) { return __ocml_ceil_f64(__x); }
754
+ double ceil(double __x) { return __builtin_ceil(__x); }
743
755
 
744
756
  __DEVICE__
745
757
  double copysign(double __x, double __y) {
746
- return __ocml_copysign_f64(__x, __y);
758
+ return __builtin_copysign(__x, __y);
747
759
  }
748
760
 
749
761
  __DEVICE__
@@ -795,32 +807,25 @@ __DEVICE__
795
807
  double fdim(double __x, double __y) { return __ocml_fdim_f64(__x, __y); }
796
808
 
797
809
  __DEVICE__
798
- double floor(double __x) { return __ocml_floor_f64(__x); }
810
+ double floor(double __x) { return __builtin_floor(__x); }
799
811
 
800
812
  __DEVICE__
801
813
  double fma(double __x, double __y, double __z) {
802
- return __ocml_fma_f64(__x, __y, __z);
814
+ return __builtin_fma(__x, __y, __z);
803
815
  }
804
816
 
805
817
  __DEVICE__
806
- double fmax(double __x, double __y) { return __ocml_fmax_f64(__x, __y); }
818
+ double fmax(double __x, double __y) { return __builtin_fmax(__x, __y); }
807
819
 
808
820
  __DEVICE__
809
- double fmin(double __x, double __y) { return __ocml_fmin_f64(__x, __y); }
821
+ double fmin(double __x, double __y) { return __builtin_fmin(__x, __y); }
810
822
 
811
823
  __DEVICE__
812
824
  double fmod(double __x, double __y) { return __ocml_fmod_f64(__x, __y); }
813
825
 
814
826
  __DEVICE__
815
827
  double frexp(double __x, int *__nptr) {
816
- int __tmp;
817
- #ifdef __OPENMP_AMDGCN__
818
- #pragma omp allocate(__tmp) allocator(omp_thread_mem_alloc)
819
- #endif
820
- double __r =
821
- __ocml_frexp_f64(__x, (__attribute__((address_space(5))) int *)&__tmp);
822
- *__nptr = __tmp;
823
- return __r;
828
+ return __builtin_frexp(__x, __nptr);
824
829
  }
825
830
 
826
831
  __DEVICE__
@@ -830,13 +835,13 @@ __DEVICE__
830
835
  int ilogb(double __x) { return __ocml_ilogb_f64(__x); }
831
836
 
832
837
  __DEVICE__
833
- __RETURN_TYPE __finite(double __x) { return __ocml_isfinite_f64(__x); }
838
+ __RETURN_TYPE __finite(double __x) { return __builtin_isfinite(__x); }
834
839
 
835
840
  __DEVICE__
836
- __RETURN_TYPE __isinf(double __x) { return __ocml_isinf_f64(__x); }
841
+ __RETURN_TYPE __isinf(double __x) { return __builtin_isinf(__x); }
837
842
 
838
843
  __DEVICE__
839
- __RETURN_TYPE __isnan(double __x) { return __ocml_isnan_f64(__x); }
844
+ __RETURN_TYPE __isnan(double __x) { return __builtin_isnan(__x); }
840
845
 
841
846
  __DEVICE__
842
847
  double j0(double __x) { return __ocml_j0_f64(__x); }
@@ -866,16 +871,16 @@ double jn(int __n, double __x) { // TODO: we could use Ahmes multiplication
866
871
  }
867
872
 
868
873
  __DEVICE__
869
- double ldexp(double __x, int __e) { return __ocml_ldexp_f64(__x, __e); }
874
+ double ldexp(double __x, int __e) { return __builtin_amdgcn_ldexp(__x, __e); }
870
875
 
871
876
  __DEVICE__
872
877
  double lgamma(double __x) { return __ocml_lgamma_f64(__x); }
873
878
 
874
879
  __DEVICE__
875
- long long int llrint(double __x) { return __ocml_rint_f64(__x); }
880
+ long long int llrint(double __x) { return __builtin_rint(__x); }
876
881
 
877
882
  __DEVICE__
878
- long long int llround(double __x) { return __ocml_round_f64(__x); }
883
+ long long int llround(double __x) { return __builtin_round(__x); }
879
884
 
880
885
  __DEVICE__
881
886
  double log(double __x) { return __ocml_log_f64(__x); }
@@ -893,10 +898,10 @@ __DEVICE__
893
898
  double logb(double __x) { return __ocml_logb_f64(__x); }
894
899
 
895
900
  __DEVICE__
896
- long int lrint(double __x) { return __ocml_rint_f64(__x); }
901
+ long int lrint(double __x) { return __builtin_rint(__x); }
897
902
 
898
903
  __DEVICE__
899
- long int lround(double __x) { return __ocml_round_f64(__x); }
904
+ long int lround(double __x) { return __builtin_round(__x); }
900
905
 
901
906
  __DEVICE__
902
907
  double modf(double __x, double *__iptr) {
@@ -940,7 +945,7 @@ double nan(const char *__tagp) {
940
945
  }
941
946
 
942
947
  __DEVICE__
943
- double nearbyint(double __x) { return __ocml_nearbyint_f64(__x); }
948
+ double nearbyint(double __x) { return __builtin_nearbyint(__x); }
944
949
 
945
950
  __DEVICE__
946
951
  double nextafter(double __x, double __y) {
@@ -956,7 +961,7 @@ double norm(int __dim,
956
961
  ++__a;
957
962
  }
958
963
 
959
- return __ocml_sqrt_f64(__r);
964
+ return __builtin_sqrt(__r);
960
965
  }
961
966
 
962
967
  __DEVICE__
@@ -1006,7 +1011,7 @@ __DEVICE__
1006
1011
  double rhypot(double __x, double __y) { return __ocml_rhypot_f64(__x, __y); }
1007
1012
 
1008
1013
  __DEVICE__
1009
- double rint(double __x) { return __ocml_rint_f64(__x); }
1014
+ double rint(double __x) { return __builtin_rint(__x); }
1010
1015
 
1011
1016
  __DEVICE__
1012
1017
  double rnorm(int __dim,
@@ -1031,21 +1036,21 @@ double rnorm4d(double __x, double __y, double __z, double __w) {
1031
1036
  }
1032
1037
 
1033
1038
  __DEVICE__
1034
- double round(double __x) { return __ocml_round_f64(__x); }
1039
+ double round(double __x) { return __builtin_round(__x); }
1035
1040
 
1036
1041
  __DEVICE__
1037
1042
  double rsqrt(double __x) { return __ocml_rsqrt_f64(__x); }
1038
1043
 
1039
1044
  __DEVICE__
1040
1045
  double scalbln(double __x, long int __n) {
1041
- return (__n < INT_MAX) ? __ocml_scalbn_f64(__x, __n)
1046
+ return (__n < INT_MAX) ? __builtin_amdgcn_ldexp(__x, __n)
1042
1047
  : __ocml_scalb_f64(__x, __n);
1043
1048
  }
1044
1049
  __DEVICE__
1045
- double scalbn(double __x, int __n) { return __ocml_scalbn_f64(__x, __n); }
1050
+ double scalbn(double __x, int __n) { return __builtin_amdgcn_ldexp(__x, __n); }
1046
1051
 
1047
1052
  __DEVICE__
1048
- __RETURN_TYPE __signbit(double __x) { return __ocml_signbit_f64(__x); }
1053
+ __RETURN_TYPE __signbit(double __x) { return __builtin_signbit(__x); }
1049
1054
 
1050
1055
  __DEVICE__
1051
1056
  double sin(double __x) { return __ocml_sin_f64(__x); }
@@ -1079,7 +1084,7 @@ __DEVICE__
1079
1084
  double sinpi(double __x) { return __ocml_sinpi_f64(__x); }
1080
1085
 
1081
1086
  __DEVICE__
1082
- double sqrt(double __x) { return __ocml_sqrt_f64(__x); }
1087
+ double sqrt(double __x) { return __builtin_sqrt(__x); }
1083
1088
 
1084
1089
  __DEVICE__
1085
1090
  double tan(double __x) { return __ocml_tan_f64(__x); }
@@ -1091,7 +1096,7 @@ __DEVICE__
1091
1096
  double tgamma(double __x) { return __ocml_tgamma_f64(__x); }
1092
1097
 
1093
1098
  __DEVICE__
1094
- double trunc(double __x) { return __ocml_trunc_f64(__x); }
1099
+ double trunc(double __x) { return __builtin_trunc(__x); }
1095
1100
 
1096
1101
  __DEVICE__
1097
1102
  double y0(double __x) { return __ocml_y0_f64(__x); }
@@ -1213,7 +1218,7 @@ __DEVICE__
1213
1218
  double __dsqrt_rz(double __x) { return __ocml_sqrt_rtz_f64(__x); }
1214
1219
  #else
1215
1220
  __DEVICE__
1216
- double __dsqrt_rn(double __x) { return __ocml_sqrt_f64(__x); }
1221
+ double __dsqrt_rn(double __x) { return __builtin_sqrt(__x); }
1217
1222
  #endif
1218
1223
 
1219
1224
  #if defined OCML_BASIC_ROUNDED_OPERATIONS
@@ -1258,7 +1263,7 @@ double __fma_rz(double __x, double __y, double __z) {
1258
1263
  #else
1259
1264
  __DEVICE__
1260
1265
  double __fma_rn(double __x, double __y, double __z) {
1261
- return __ocml_fma_f64(__x, __y, __z);
1266
+ return __builtin_fma(__x, __y, __z);
1262
1267
  }
1263
1268
  #endif
1264
1269
  // END INTRINSICS
@@ -1290,29 +1295,30 @@ __DEVICE__ int max(int __arg1, int __arg2) {
1290
1295
  }
1291
1296
 
1292
1297
  __DEVICE__
1293
- float max(float __x, float __y) { return fmaxf(__x, __y); }
1298
+ float max(float __x, float __y) { return __builtin_fmaxf(__x, __y); }
1294
1299
 
1295
1300
  __DEVICE__
1296
- double max(double __x, double __y) { return fmax(__x, __y); }
1301
+ double max(double __x, double __y) { return __builtin_fmax(__x, __y); }
1297
1302
 
1298
1303
  __DEVICE__
1299
- float min(float __x, float __y) { return fminf(__x, __y); }
1304
+ float min(float __x, float __y) { return __builtin_fminf(__x, __y); }
1300
1305
 
1301
1306
  __DEVICE__
1302
- double min(double __x, double __y) { return fmin(__x, __y); }
1307
+ double min(double __x, double __y) { return __builtin_fmin(__x, __y); }
1303
1308
 
1304
1309
  #if !defined(__HIPCC_RTC__) && !defined(__OPENMP_AMDGCN__)
1305
1310
  __host__ inline static int min(int __arg1, int __arg2) {
1306
- return std::min(__arg1, __arg2);
1311
+ return __arg1 < __arg2 ? __arg1 : __arg2;
1307
1312
  }
1308
1313
 
1309
1314
  __host__ inline static int max(int __arg1, int __arg2) {
1310
- return std::max(__arg1, __arg2);
1315
+ return __arg1 > __arg2 ? __arg1 : __arg2;
1311
1316
  }
1312
1317
  #endif // !defined(__HIPCC_RTC__) && !defined(__OPENMP_AMDGCN__)
1313
1318
  #endif
1314
1319
 
1315
1320
  #pragma pop_macro("__DEVICE__")
1316
1321
  #pragma pop_macro("__RETURN_TYPE")
1322
+ #pragma pop_macro("__FAST_OR_SLOW")
1317
1323
 
1318
1324
  #endif // __CLANG_HIP_MATH_H__