llvm-runtime-resources-darwin 0.0.0 → 22.1.8

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 (350) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +33 -0
  3. package/include/__clang_cuda_builtin_vars.h +121 -0
  4. package/include/__clang_cuda_cmath.h +512 -0
  5. package/include/__clang_cuda_complex_builtins.h +229 -0
  6. package/include/__clang_cuda_device_functions.h +1572 -0
  7. package/include/__clang_cuda_intrinsics.h +994 -0
  8. package/include/__clang_cuda_libdevice_declares.h +468 -0
  9. package/include/__clang_cuda_math.h +353 -0
  10. package/include/__clang_cuda_math_forward_declares.h +284 -0
  11. package/include/__clang_cuda_runtime_wrapper.h +522 -0
  12. package/include/__clang_cuda_texture_intrinsics.h +1177 -0
  13. package/include/__clang_hip_cmath.h +848 -0
  14. package/include/__clang_hip_libdevice_declares.h +340 -0
  15. package/include/__clang_hip_math.h +1405 -0
  16. package/include/__clang_hip_runtime_wrapper.h +165 -0
  17. package/include/__clang_hip_stdlib.h +43 -0
  18. package/include/__clang_spirv_builtins.h +217 -0
  19. package/include/__float_float.h +176 -0
  20. package/include/__float_header_macro.h +12 -0
  21. package/include/__float_infinity_nan.h +20 -0
  22. package/include/__stdarg___gnuc_va_list.h +13 -0
  23. package/include/__stdarg___va_copy.h +12 -0
  24. package/include/__stdarg_header_macro.h +12 -0
  25. package/include/__stdarg_va_arg.h +22 -0
  26. package/include/__stdarg_va_copy.h +12 -0
  27. package/include/__stdarg_va_list.h +13 -0
  28. package/include/__stddef_header_macro.h +12 -0
  29. package/include/__stddef_max_align_t.h +27 -0
  30. package/include/__stddef_null.h +29 -0
  31. package/include/__stddef_nullptr_t.h +29 -0
  32. package/include/__stddef_offsetof.h +17 -0
  33. package/include/__stddef_ptrdiff_t.h +20 -0
  34. package/include/__stddef_rsize_t.h +20 -0
  35. package/include/__stddef_size_t.h +20 -0
  36. package/include/__stddef_unreachable.h +21 -0
  37. package/include/__stddef_wchar_t.h +28 -0
  38. package/include/__stddef_wint_t.h +15 -0
  39. package/include/__wmmintrin_aes.h +140 -0
  40. package/include/__wmmintrin_pclmul.h +48 -0
  41. package/include/adcintrin.h +165 -0
  42. package/include/adxintrin.h +107 -0
  43. package/include/altivec.h +19364 -0
  44. package/include/amdgpuintrin.h +191 -0
  45. package/include/ammintrin.h +183 -0
  46. package/include/amo.h +131 -0
  47. package/include/amxavx512intrin.h +596 -0
  48. package/include/amxcomplexintrin.h +167 -0
  49. package/include/amxfp16intrin.h +93 -0
  50. package/include/amxfp8intrin.h +230 -0
  51. package/include/amxintrin.h +492 -0
  52. package/include/amxmovrsintrin.h +48 -0
  53. package/include/amxtf32intrin.h +108 -0
  54. package/include/andes_vector.h +16 -0
  55. package/include/arm64intr.h +35 -0
  56. package/include/arm_acle.h +865 -0
  57. package/include/arm_bf16.h +20 -0
  58. package/include/arm_cde.h +410 -0
  59. package/include/arm_cmse.h +217 -0
  60. package/include/arm_fp16.h +596 -0
  61. package/include/arm_mve.h +19187 -0
  62. package/include/arm_neon.h +74183 -0
  63. package/include/arm_neon_sve_bridge.h +182 -0
  64. package/include/arm_sme.h +3741 -0
  65. package/include/arm_sve.h +32278 -0
  66. package/include/arm_vector_types.h +432 -0
  67. package/include/armintr.h +31 -0
  68. package/include/avx10_2_512bf16intrin.h +568 -0
  69. package/include/avx10_2_512convertintrin.h +322 -0
  70. package/include/avx10_2_512minmaxintrin.h +127 -0
  71. package/include/avx10_2_512niintrin.h +314 -0
  72. package/include/avx10_2_512satcvtdsintrin.h +307 -0
  73. package/include/avx10_2_512satcvtintrin.h +301 -0
  74. package/include/avx10_2bf16intrin.h +1094 -0
  75. package/include/avx10_2convertintrin.h +3257 -0
  76. package/include/avx10_2copyintrin.h +66 -0
  77. package/include/avx10_2minmaxintrin.h +232 -0
  78. package/include/avx10_2niintrin.h +409 -0
  79. package/include/avx10_2satcvtdsintrin.h +376 -0
  80. package/include/avx10_2satcvtintrin.h +312 -0
  81. package/include/avx2intrin.h +5191 -0
  82. package/include/avx512bf16intrin.h +292 -0
  83. package/include/avx512bitalgintrin.h +75 -0
  84. package/include/avx512bwintrin.h +1895 -0
  85. package/include/avx512cdintrin.h +112 -0
  86. package/include/avx512dqintrin.h +1350 -0
  87. package/include/avx512fintrin.h +9378 -0
  88. package/include/avx512fp16intrin.h +3355 -0
  89. package/include/avx512ifmaintrin.h +68 -0
  90. package/include/avx512ifmavlintrin.h +138 -0
  91. package/include/avx512vbmi2intrin.h +368 -0
  92. package/include/avx512vbmiintrin.h +98 -0
  93. package/include/avx512vbmivlintrin.h +179 -0
  94. package/include/avx512vlbf16intrin.h +527 -0
  95. package/include/avx512vlbitalgintrin.h +135 -0
  96. package/include/avx512vlbwintrin.h +3064 -0
  97. package/include/avx512vlcdintrin.h +202 -0
  98. package/include/avx512vldqintrin.h +1156 -0
  99. package/include/avx512vlfp16intrin.h +2090 -0
  100. package/include/avx512vlintrin.h +8083 -0
  101. package/include/avx512vlvbmi2intrin.h +710 -0
  102. package/include/avx512vlvnniintrin.h +313 -0
  103. package/include/avx512vlvp2intersectintrin.h +123 -0
  104. package/include/avx512vnniintrin.h +116 -0
  105. package/include/avx512vp2intersectintrin.h +77 -0
  106. package/include/avx512vpopcntdqintrin.h +62 -0
  107. package/include/avx512vpopcntdqvlintrin.h +105 -0
  108. package/include/avxifmaintrin.h +193 -0
  109. package/include/avxintrin.h +5064 -0
  110. package/include/avxneconvertintrin.h +484 -0
  111. package/include/avxvnniint16intrin.h +451 -0
  112. package/include/avxvnniint8intrin.h +454 -0
  113. package/include/avxvnniintrin.h +233 -0
  114. package/include/bmi2intrin.h +253 -0
  115. package/include/bmiintrin.h +604 -0
  116. package/include/builtins.h +19 -0
  117. package/include/cet.h +66 -0
  118. package/include/cetintrin.h +115 -0
  119. package/include/cldemoteintrin.h +36 -0
  120. package/include/clflushoptintrin.h +36 -0
  121. package/include/clwbintrin.h +38 -0
  122. package/include/clzerointrin.h +38 -0
  123. package/include/cmpccxaddintrin.h +70 -0
  124. package/include/cpuid.h +451 -0
  125. package/include/crc32intrin.h +100 -0
  126. package/include/cuda_wrappers/__utility/declval.h +28 -0
  127. package/include/cuda_wrappers/algorithm +116 -0
  128. package/include/cuda_wrappers/bits/basic_string.h +9 -0
  129. package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  130. package/include/cuda_wrappers/bits/c++config.h +61 -0
  131. package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  132. package/include/cuda_wrappers/cmath +44 -0
  133. package/include/cuda_wrappers/complex +90 -0
  134. package/include/cuda_wrappers/new +108 -0
  135. package/include/emmintrin.h +4940 -0
  136. package/include/enqcmdintrin.h +63 -0
  137. package/include/f16cintrin.h +176 -0
  138. package/include/float.h +48 -0
  139. package/include/fma4intrin.h +220 -0
  140. package/include/fmaintrin.h +826 -0
  141. package/include/fuzzer/FuzzedDataProvider.h +397 -0
  142. package/include/fxsrintrin.h +91 -0
  143. package/include/gfniintrin.h +238 -0
  144. package/include/gpuintrin.h +330 -0
  145. package/include/hexagon_circ_brev_intrinsics.h +298 -0
  146. package/include/hexagon_protos.h +8439 -0
  147. package/include/hexagon_types.h +2628 -0
  148. package/include/hresetintrin.h +49 -0
  149. package/include/htmintrin.h +212 -0
  150. package/include/htmxlintrin.h +345 -0
  151. package/include/hvx_hexagon_protos.h +5399 -0
  152. package/include/ia32intrin.h +863 -0
  153. package/include/immintrin.h +595 -0
  154. package/include/intrin.h +491 -0
  155. package/include/intrin0.h +256 -0
  156. package/include/inttypes.h +101 -0
  157. package/include/invpcidintrin.h +23 -0
  158. package/include/iso646.h +31 -0
  159. package/include/keylockerintrin.h +518 -0
  160. package/include/larchintrin.h +260 -0
  161. package/include/lasxintrin.h +3999 -0
  162. package/include/limits.h +133 -0
  163. package/include/llvm_libc_wrappers/assert.h +32 -0
  164. package/include/llvm_libc_wrappers/ctype.h +28 -0
  165. package/include/llvm_libc_wrappers/inttypes.h +32 -0
  166. package/include/llvm_libc_wrappers/stdio.h +52 -0
  167. package/include/llvm_libc_wrappers/stdlib.h +32 -0
  168. package/include/llvm_libc_wrappers/string.h +28 -0
  169. package/include/llvm_libc_wrappers/time.h +28 -0
  170. package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  171. package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  172. package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  173. package/include/lsxintrin.h +3752 -0
  174. package/include/lwpintrin.h +136 -0
  175. package/include/lzcntintrin.h +109 -0
  176. package/include/mm3dnow.h +22 -0
  177. package/include/mm_malloc.h +67 -0
  178. package/include/mmintrin.h +1541 -0
  179. package/include/module.modulemap +360 -0
  180. package/include/movdirintrin.h +49 -0
  181. package/include/movrs_avx10_2_512intrin.h +98 -0
  182. package/include/movrs_avx10_2intrin.h +174 -0
  183. package/include/movrsintrin.h +59 -0
  184. package/include/msa.h +573 -0
  185. package/include/mwaitxintrin.h +62 -0
  186. package/include/nmmintrin.h +20 -0
  187. package/include/nvptxintrin.h +219 -0
  188. package/include/opencl-c-base.h +758 -0
  189. package/include/opencl-c.h +18676 -0
  190. package/include/openmp_wrappers/__clang_openmp_device_functions.h +104 -0
  191. package/include/openmp_wrappers/cmath +132 -0
  192. package/include/openmp_wrappers/complex +55 -0
  193. package/include/openmp_wrappers/complex.h +35 -0
  194. package/include/openmp_wrappers/complex_cmath.h +393 -0
  195. package/include/openmp_wrappers/math.h +61 -0
  196. package/include/openmp_wrappers/new +48 -0
  197. package/include/pconfigintrin.h +40 -0
  198. package/include/pkuintrin.h +34 -0
  199. package/include/pmmintrin.h +302 -0
  200. package/include/popcntintrin.h +59 -0
  201. package/include/ppc_wrappers/bmi2intrin.h +134 -0
  202. package/include/ppc_wrappers/bmiintrin.h +165 -0
  203. package/include/ppc_wrappers/emmintrin.h +2269 -0
  204. package/include/ppc_wrappers/immintrin.h +27 -0
  205. package/include/ppc_wrappers/mm_malloc.h +45 -0
  206. package/include/ppc_wrappers/mmintrin.h +1453 -0
  207. package/include/ppc_wrappers/nmmintrin.h +26 -0
  208. package/include/ppc_wrappers/pmmintrin.h +145 -0
  209. package/include/ppc_wrappers/smmintrin.h +683 -0
  210. package/include/ppc_wrappers/tmmintrin.h +453 -0
  211. package/include/ppc_wrappers/x86gprintrin.h +17 -0
  212. package/include/ppc_wrappers/x86intrin.h +28 -0
  213. package/include/ppc_wrappers/xmmintrin.h +1827 -0
  214. package/include/prfchiintrin.h +61 -0
  215. package/include/prfchwintrin.h +57 -0
  216. package/include/profile/InstrProfData.inc +1001 -0
  217. package/include/profile/instr_prof_interface.h +88 -0
  218. package/include/ptrauth.h +407 -0
  219. package/include/ptwriteintrin.h +37 -0
  220. package/include/raointintrin.h +203 -0
  221. package/include/rdpruintrin.h +57 -0
  222. package/include/rdseedintrin.h +105 -0
  223. package/include/riscv_bitmanip.h +195 -0
  224. package/include/riscv_corev_alu.h +128 -0
  225. package/include/riscv_crypto.h +170 -0
  226. package/include/riscv_mips.h +34 -0
  227. package/include/riscv_nds.h +89 -0
  228. package/include/riscv_ntlh.h +26 -0
  229. package/include/riscv_vector.h +422 -0
  230. package/include/rtmintrin.h +45 -0
  231. package/include/s390intrin.h +25 -0
  232. package/include/sanitizer/allocator_interface.h +106 -0
  233. package/include/sanitizer/asan_interface.h +348 -0
  234. package/include/sanitizer/common_interface_defs.h +544 -0
  235. package/include/sanitizer/coverage_interface.h +36 -0
  236. package/include/sanitizer/dfsan_interface.h +220 -0
  237. package/include/sanitizer/hwasan_interface.h +109 -0
  238. package/include/sanitizer/linux_syscall_hooks.h +3112 -0
  239. package/include/sanitizer/lsan_interface.h +89 -0
  240. package/include/sanitizer/msan_interface.h +135 -0
  241. package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
  242. package/include/sanitizer/rtsan_interface.h +75 -0
  243. package/include/sanitizer/scudo_interface.h +38 -0
  244. package/include/sanitizer/tsan_interface.h +316 -0
  245. package/include/sanitizer/tsan_interface_atomic.h +223 -0
  246. package/include/sanitizer/ubsan_interface.h +34 -0
  247. package/include/serializeintrin.h +30 -0
  248. package/include/sgxintrin.h +60 -0
  249. package/include/sha512intrin.h +200 -0
  250. package/include/shaintrin.h +190 -0
  251. package/include/sifive_vector.h +174 -0
  252. package/include/sm3intrin.h +238 -0
  253. package/include/sm4evexintrin.h +32 -0
  254. package/include/sm4intrin.h +269 -0
  255. package/include/smmintrin.h +2352 -0
  256. package/include/spirvintrin.h +194 -0
  257. package/include/stdalign.h +24 -0
  258. package/include/stdarg.h +75 -0
  259. package/include/stdatomic.h +204 -0
  260. package/include/stdbool.h +39 -0
  261. package/include/stdckdint.h +42 -0
  262. package/include/stdcountof.h +15 -0
  263. package/include/stddef.h +139 -0
  264. package/include/stddefer.h +19 -0
  265. package/include/stdint.h +844 -0
  266. package/include/stdnoreturn.h +35 -0
  267. package/include/tbmintrin.h +128 -0
  268. package/include/tgmath.h +1368 -0
  269. package/include/tmmintrin.h +779 -0
  270. package/include/tsxldtrkintrin.h +56 -0
  271. package/include/uintrintrin.h +157 -0
  272. package/include/unwind.h +332 -0
  273. package/include/usermsrintrin.h +51 -0
  274. package/include/vadefs.h +51 -0
  275. package/include/vaesintrin.h +86 -0
  276. package/include/varargs.h +16 -0
  277. package/include/vecintrin.h +12868 -0
  278. package/include/velintrin.h +71 -0
  279. package/include/velintrin_approx.h +120 -0
  280. package/include/velintrin_gen.h +1257 -0
  281. package/include/vpclmulqdqintrin.h +30 -0
  282. package/include/waitpkgintrin.h +42 -0
  283. package/include/wasm_simd128.h +2143 -0
  284. package/include/wbnoinvdintrin.h +24 -0
  285. package/include/wmmintrin.h +23 -0
  286. package/include/x86gprintrin.h +49 -0
  287. package/include/x86intrin.h +35 -0
  288. package/include/xmmintrin.h +3175 -0
  289. package/include/xopintrin.h +780 -0
  290. package/include/xsavecintrin.h +84 -0
  291. package/include/xsaveintrin.h +63 -0
  292. package/include/xsaveoptintrin.h +34 -0
  293. package/include/xsavesintrin.h +44 -0
  294. package/include/xtestintrin.h +27 -0
  295. package/include/yvals_core.h +25 -0
  296. package/include/zos_wrappers/builtins.h +18 -0
  297. package/index.js +5 -0
  298. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  299. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  300. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  301. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  302. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  303. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  304. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  305. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  306. package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
  307. package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
  308. package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
  309. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  310. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  311. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  312. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  313. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  314. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  315. package/lib/darwin/libclang_rt.ios.a +0 -0
  316. package/lib/darwin/libclang_rt.iossim.a +0 -0
  317. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  318. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  319. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  320. package/lib/darwin/libclang_rt.osx.a +0 -0
  321. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  322. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  323. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  324. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  325. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  326. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  327. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  328. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  329. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  330. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  331. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  332. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  333. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  334. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  335. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  336. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  337. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  338. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  339. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  340. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  341. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  342. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  343. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  344. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  345. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  346. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  347. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  348. package/package.json +40 -1
  349. package/share/asan_ignorelist.txt +14 -0
  350. package/share/cfi_ignorelist.txt +17 -0
@@ -0,0 +1,527 @@
1
+ /*===--------- avx512vlbf16intrin.h - AVX512_BF16 intrinsics ---------------===
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
+ */
9
+ #ifndef __IMMINTRIN_H
10
+ #error "Never use <avx512vlbf16intrin.h> directly; include <immintrin.h> instead."
11
+ #endif
12
+
13
+ #ifdef __SSE2__
14
+
15
+ #ifndef __AVX512VLBF16INTRIN_H
16
+ #define __AVX512VLBF16INTRIN_H
17
+
18
+ #define __DEFAULT_FN_ATTRS128 \
19
+ __attribute__((__always_inline__, __nodebug__, \
20
+ __target__("avx512vl,avx512bf16"), \
21
+ __min_vector_width__(128)))
22
+ #define __DEFAULT_FN_ATTRS256 \
23
+ __attribute__((__always_inline__, __nodebug__, \
24
+ __target__("avx512vl,avx512bf16"), \
25
+ __min_vector_width__(256)))
26
+
27
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
28
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
29
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
30
+ #else
31
+ #define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
32
+ #define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
33
+ #endif
34
+
35
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
36
+ ///
37
+ /// \headerfile <x86intrin.h>
38
+ ///
39
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
40
+ ///
41
+ /// \param __A
42
+ /// A 128-bit vector of [4 x float].
43
+ /// \param __B
44
+ /// A 128-bit vector of [4 x float].
45
+ /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
46
+ /// conversion of __B, and higher 64 bits come from conversion of __A.
47
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS128
48
+ _mm_cvtne2ps_pbh(__m128 __A, __m128 __B) {
49
+ return (__m128bh)__builtin_ia32_cvtne2ps2bf16_128((__v4sf) __A,
50
+ (__v4sf) __B);
51
+ }
52
+
53
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
54
+ ///
55
+ /// \headerfile <x86intrin.h>
56
+ ///
57
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
58
+ ///
59
+ /// \param __A
60
+ /// A 128-bit vector of [4 x float].
61
+ /// \param __B
62
+ /// A 128-bit vector of [4 x float].
63
+ /// \param __W
64
+ /// A 128-bit vector of [8 x bfloat].
65
+ /// \param __U
66
+ /// A 8-bit mask value specifying what is chosen for each element.
67
+ /// A 1 means conversion of __A or __B. A 0 means element from __W.
68
+ /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
69
+ /// conversion of __B, and higher 64 bits come from conversion of __A.
70
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS128
71
+ _mm_mask_cvtne2ps_pbh(__m128bh __W, __mmask8 __U, __m128 __A, __m128 __B) {
72
+ return (__m128bh)__builtin_ia32_selectpbf_128((__mmask8)__U,
73
+ (__v8bf)_mm_cvtne2ps_pbh(__A, __B),
74
+ (__v8bf)__W);
75
+ }
76
+
77
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
78
+ ///
79
+ /// \headerfile <x86intrin.h>
80
+ ///
81
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
82
+ ///
83
+ /// \param __A
84
+ /// A 128-bit vector of [4 x float].
85
+ /// \param __B
86
+ /// A 128-bit vector of [4 x float].
87
+ /// \param __U
88
+ /// A 8-bit mask value specifying what is chosen for each element.
89
+ /// A 1 means conversion of __A or __B. A 0 means element is zero.
90
+ /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
91
+ /// conversion of __B, and higher 64 bits come from conversion of __A.
92
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS128
93
+ _mm_maskz_cvtne2ps_pbh(__mmask8 __U, __m128 __A, __m128 __B) {
94
+ return (__m128bh)__builtin_ia32_selectpbf_128((__mmask8)__U,
95
+ (__v8bf)_mm_cvtne2ps_pbh(__A, __B),
96
+ (__v8bf)_mm_setzero_si128());
97
+ }
98
+
99
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
100
+ ///
101
+ /// \headerfile <x86intrin.h>
102
+ ///
103
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
104
+ ///
105
+ /// \param __A
106
+ /// A 256-bit vector of [8 x float].
107
+ /// \param __B
108
+ /// A 256-bit vector of [8 x float].
109
+ /// \returns A 256-bit vector of [16 x bfloat] whose lower 128 bits come from
110
+ /// conversion of __B, and higher 128 bits come from conversion of __A.
111
+ static __inline__ __m256bh __DEFAULT_FN_ATTRS256
112
+ _mm256_cvtne2ps_pbh(__m256 __A, __m256 __B) {
113
+ return (__m256bh)__builtin_ia32_cvtne2ps2bf16_256((__v8sf) __A,
114
+ (__v8sf) __B);
115
+ }
116
+
117
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
118
+ ///
119
+ /// \headerfile <x86intrin.h>
120
+ ///
121
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
122
+ ///
123
+ /// \param __A
124
+ /// A 256-bit vector of [8 x float].
125
+ /// \param __B
126
+ /// A 256-bit vector of [8 x float].
127
+ /// \param __W
128
+ /// A 256-bit vector of [16 x bfloat].
129
+ /// \param __U
130
+ /// A 16-bit mask value specifying what is chosen for each element.
131
+ /// A 1 means conversion of __A or __B. A 0 means element from __W.
132
+ /// \returns A 256-bit vector of [16 x bfloat] whose lower 128 bits come from
133
+ /// conversion of __B, and higher 128 bits come from conversion of __A.
134
+ static __inline__ __m256bh __DEFAULT_FN_ATTRS256
135
+ _mm256_mask_cvtne2ps_pbh(__m256bh __W, __mmask16 __U, __m256 __A, __m256 __B) {
136
+ return (__m256bh)__builtin_ia32_selectpbf_256((__mmask16)__U,
137
+ (__v16bf)_mm256_cvtne2ps_pbh(__A, __B),
138
+ (__v16bf)__W);
139
+ }
140
+
141
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
142
+ ///
143
+ /// \headerfile <x86intrin.h>
144
+ ///
145
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
146
+ ///
147
+ /// \param __A
148
+ /// A 256-bit vector of [8 x float].
149
+ /// \param __B
150
+ /// A 256-bit vector of [8 x float].
151
+ /// \param __U
152
+ /// A 16-bit mask value specifying what is chosen for each element.
153
+ /// A 1 means conversion of __A or __B. A 0 means element is zero.
154
+ /// \returns A 256-bit vector of [16 x bfloat] whose lower 128 bits come from
155
+ /// conversion of __B, and higher 128 bits come from conversion of __A.
156
+ static __inline__ __m256bh __DEFAULT_FN_ATTRS256
157
+ _mm256_maskz_cvtne2ps_pbh(__mmask16 __U, __m256 __A, __m256 __B) {
158
+ return (__m256bh)__builtin_ia32_selectpbf_256((__mmask16)__U,
159
+ (__v16bf)_mm256_cvtne2ps_pbh(__A, __B),
160
+ (__v16bf)_mm256_setzero_si256());
161
+ }
162
+
163
+ /// Convert Packed Single Data to Packed BF16 Data.
164
+ ///
165
+ /// \headerfile <x86intrin.h>
166
+ ///
167
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
168
+ ///
169
+ /// \param __A
170
+ /// A 128-bit vector of [4 x float].
171
+ /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
172
+ /// conversion of __A, and higher 64 bits are 0.
173
+ #define _mm_cvtneps_pbh(A) \
174
+ ((__m128bh)__builtin_ia32_vcvtneps2bf16128((__v4sf)(A)))
175
+
176
+ /// Convert Packed Single Data to Packed BF16 Data.
177
+ ///
178
+ /// \headerfile <x86intrin.h>
179
+ ///
180
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
181
+ ///
182
+ /// \param __A
183
+ /// A 128-bit vector of [4 x float].
184
+ /// \param __W
185
+ /// A 128-bit vector of [8 x bfloat].
186
+ /// \param __U
187
+ /// A 4-bit mask value specifying what is chosen for each element.
188
+ /// A 1 means conversion of __A. A 0 means element from __W.
189
+ /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
190
+ /// conversion of __A, and higher 64 bits are 0.
191
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS128
192
+ _mm_mask_cvtneps_pbh(__m128bh __W, __mmask8 __U, __m128 __A) {
193
+ return (__m128bh)__builtin_ia32_cvtneps2bf16_128_mask((__v4sf) __A,
194
+ (__v8bf)__W,
195
+ (__mmask8)__U);
196
+ }
197
+
198
+ /// Convert Packed Single Data to Packed BF16 Data.
199
+ ///
200
+ /// \headerfile <x86intrin.h>
201
+ ///
202
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
203
+ ///
204
+ /// \param __A
205
+ /// A 128-bit vector of [4 x float].
206
+ /// \param __U
207
+ /// A 4-bit mask value specifying what is chosen for each element.
208
+ /// A 1 means conversion of __A. A 0 means element is zero.
209
+ /// \returns A 128-bit vector of [8 x bfloat] whose lower 64 bits come from
210
+ /// conversion of __A, and higher 64 bits are 0.
211
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS128
212
+ _mm_maskz_cvtneps_pbh(__mmask8 __U, __m128 __A) {
213
+ return (__m128bh)__builtin_ia32_cvtneps2bf16_128_mask((__v4sf) __A,
214
+ (__v8bf)_mm_setzero_si128(),
215
+ (__mmask8)__U);
216
+ }
217
+
218
+ /// Convert Packed Single Data to Packed BF16 Data.
219
+ ///
220
+ /// \headerfile <x86intrin.h>
221
+ ///
222
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
223
+ ///
224
+ /// \param __A
225
+ /// A 256-bit vector of [8 x float].
226
+ /// \returns A 128-bit vector of [8 x bfloat] comes from conversion of __A.
227
+ #define _mm256_cvtneps_pbh(A) \
228
+ ((__m128bh)__builtin_ia32_vcvtneps2bf16256((__v8sf)(A)))
229
+
230
+ /// Convert Packed Single Data to Packed BF16 Data.
231
+ ///
232
+ /// \headerfile <x86intrin.h>
233
+ ///
234
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
235
+ ///
236
+ /// \param __A
237
+ /// A 256-bit vector of [8 x float].
238
+ /// \param __W
239
+ /// A 256-bit vector of [8 x bfloat].
240
+ /// \param __U
241
+ /// A 8-bit mask value specifying what is chosen for each element.
242
+ /// A 1 means conversion of __A. A 0 means element from __W.
243
+ /// \returns A 128-bit vector of [8 x bfloat] comes from conversion of __A.
244
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS256
245
+ _mm256_mask_cvtneps_pbh(__m128bh __W, __mmask8 __U, __m256 __A) {
246
+ return (__m128bh)__builtin_ia32_cvtneps2bf16_256_mask((__v8sf)__A,
247
+ (__v8bf)__W,
248
+ (__mmask8)__U);
249
+ }
250
+
251
+ /// Convert Packed Single Data to Packed BF16 Data.
252
+ ///
253
+ /// \headerfile <x86intrin.h>
254
+ ///
255
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
256
+ ///
257
+ /// \param __A
258
+ /// A 256-bit vector of [8 x float].
259
+ /// \param __U
260
+ /// A 8-bit mask value specifying what is chosen for each element.
261
+ /// A 1 means conversion of __A. A 0 means element is zero.
262
+ /// \returns A 128-bit vector of [8 x bfloat] comes from conversion of __A.
263
+ static __inline__ __m128bh __DEFAULT_FN_ATTRS256
264
+ _mm256_maskz_cvtneps_pbh(__mmask8 __U, __m256 __A) {
265
+ return (__m128bh)__builtin_ia32_cvtneps2bf16_256_mask((__v8sf)__A,
266
+ (__v8bf)_mm_setzero_si128(),
267
+ (__mmask8)__U);
268
+ }
269
+
270
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
271
+ ///
272
+ /// \headerfile <x86intrin.h>
273
+ ///
274
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
275
+ ///
276
+ /// \param __A
277
+ /// A 128-bit vector of [8 x bfloat].
278
+ /// \param __B
279
+ /// A 128-bit vector of [8 x bfloat].
280
+ /// \param __D
281
+ /// A 128-bit vector of [4 x float].
282
+ /// \returns A 128-bit vector of [4 x float] comes from Dot Product of
283
+ /// __A, __B and __D
284
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
285
+ _mm_dpbf16_ps(__m128 __D, __m128bh __A, __m128bh __B) {
286
+ return (__m128)__builtin_ia32_dpbf16ps_128((__v4sf)__D,
287
+ (__v8bf)__A,
288
+ (__v8bf)__B);
289
+ }
290
+
291
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
292
+ ///
293
+ /// \headerfile <x86intrin.h>
294
+ ///
295
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
296
+ ///
297
+ /// \param __A
298
+ /// A 128-bit vector of [8 x bfloat].
299
+ /// \param __B
300
+ /// A 128-bit vector of [8 x bfloat].
301
+ /// \param __D
302
+ /// A 128-bit vector of [4 x float].
303
+ /// \param __U
304
+ /// A 8-bit mask value specifying what is chosen for each element.
305
+ /// A 1 means __A and __B's dot product accumulated with __D. A 0 means __D.
306
+ /// \returns A 128-bit vector of [4 x float] comes from Dot Product of
307
+ /// __A, __B and __D
308
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
309
+ _mm_mask_dpbf16_ps(__m128 __D, __mmask8 __U, __m128bh __A, __m128bh __B) {
310
+ return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
311
+ (__v4sf)_mm_dpbf16_ps(__D, __A, __B),
312
+ (__v4sf)__D);
313
+ }
314
+
315
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
316
+ ///
317
+ /// \headerfile <x86intrin.h>
318
+ ///
319
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
320
+ ///
321
+ /// \param __A
322
+ /// A 128-bit vector of [8 x bfloat].
323
+ /// \param __B
324
+ /// A 128-bit vector of [8 x bfloat].
325
+ /// \param __D
326
+ /// A 128-bit vector of [4 x float].
327
+ /// \param __U
328
+ /// A 8-bit mask value specifying what is chosen for each element.
329
+ /// A 1 means __A and __B's dot product accumulated with __D. A 0 means 0.
330
+ /// \returns A 128-bit vector of [4 x float] comes from Dot Product of
331
+ /// __A, __B and __D
332
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128
333
+ _mm_maskz_dpbf16_ps(__mmask8 __U, __m128 __D, __m128bh __A, __m128bh __B) {
334
+ return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
335
+ (__v4sf)_mm_dpbf16_ps(__D, __A, __B),
336
+ (__v4sf)_mm_setzero_si128());
337
+ }
338
+
339
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
340
+ ///
341
+ /// \headerfile <x86intrin.h>
342
+ ///
343
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
344
+ ///
345
+ /// \param __A
346
+ /// A 256-bit vector of [16 x bfloat].
347
+ /// \param __B
348
+ /// A 256-bit vector of [16 x bfloat].
349
+ /// \param __D
350
+ /// A 256-bit vector of [8 x float].
351
+ /// \returns A 256-bit vector of [8 x float] comes from Dot Product of
352
+ /// __A, __B and __D
353
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
354
+ _mm256_dpbf16_ps(__m256 __D, __m256bh __A, __m256bh __B) {
355
+ return (__m256)__builtin_ia32_dpbf16ps_256((__v8sf)__D,
356
+ (__v16bf)__A,
357
+ (__v16bf)__B);
358
+ }
359
+
360
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
361
+ ///
362
+ /// \headerfile <x86intrin.h>
363
+ ///
364
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
365
+ ///
366
+ /// \param __A
367
+ /// A 256-bit vector of [16 x bfloat].
368
+ /// \param __B
369
+ /// A 256-bit vector of [16 x bfloat].
370
+ /// \param __D
371
+ /// A 256-bit vector of [8 x float].
372
+ /// \param __U
373
+ /// A 16-bit mask value specifying what is chosen for each element.
374
+ /// A 1 means __A and __B's dot product accumulated with __D. A 0 means __D.
375
+ /// \returns A 256-bit vector of [8 x float] comes from Dot Product of
376
+ /// __A, __B and __D
377
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
378
+ _mm256_mask_dpbf16_ps(__m256 __D, __mmask8 __U, __m256bh __A, __m256bh __B) {
379
+ return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
380
+ (__v8sf)_mm256_dpbf16_ps(__D, __A, __B),
381
+ (__v8sf)__D);
382
+ }
383
+
384
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
385
+ ///
386
+ /// \headerfile <x86intrin.h>
387
+ ///
388
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
389
+ ///
390
+ /// \param __A
391
+ /// A 256-bit vector of [16 x bfloat].
392
+ /// \param __B
393
+ /// A 256-bit vector of [16 x bfloat].
394
+ /// \param __D
395
+ /// A 256-bit vector of [8 x float].
396
+ /// \param __U
397
+ /// A 8-bit mask value specifying what is chosen for each element.
398
+ /// A 1 means __A and __B's dot product accumulated with __D. A 0 means 0.
399
+ /// \returns A 256-bit vector of [8 x float] comes from Dot Product of
400
+ /// __A, __B and __D
401
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256
402
+ _mm256_maskz_dpbf16_ps(__mmask8 __U, __m256 __D, __m256bh __A, __m256bh __B) {
403
+ return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
404
+ (__v8sf)_mm256_dpbf16_ps(__D, __A, __B),
405
+ (__v8sf)_mm256_setzero_si256());
406
+ }
407
+
408
+ /// Convert One Single float Data to One BF16 Data.
409
+ ///
410
+ /// \headerfile <x86intrin.h>
411
+ ///
412
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
413
+ ///
414
+ /// \param __A
415
+ /// A float data.
416
+ /// \returns A bf16 data whose sign field and exponent field keep unchanged,
417
+ /// and fraction field is truncated to 7 bits.
418
+ static __inline__ __bf16 __DEFAULT_FN_ATTRS128 _mm_cvtness_sbh(float __A) {
419
+ __v4sf __V = {__A, 0, 0, 0};
420
+ __v8bf __R = __builtin_ia32_cvtneps2bf16_128_mask(
421
+ (__v4sf)__V, (__v8bf)_mm_undefined_si128(), (__mmask8)-1);
422
+ return (__bf16)__R[0];
423
+ }
424
+
425
+ /// Convert Packed BF16 Data to Packed float Data.
426
+ ///
427
+ /// \headerfile <x86intrin.h>
428
+ ///
429
+ /// \param __A
430
+ /// A 128-bit vector of [4 x bfloat].
431
+ /// \returns A 128-bit vector of [4 x float] come from conversion of __A
432
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
433
+ _mm_cvtpbh_ps(__m128bh __A) {
434
+ return (__m128)_mm256_castps256_ps128(
435
+ (__m256) __builtin_convertvector(__A, __v8sf));
436
+ }
437
+
438
+ /// Convert Packed BF16 Data to Packed float Data.
439
+ ///
440
+ /// \headerfile <x86intrin.h>
441
+ ///
442
+ /// \param __A
443
+ /// A 128-bit vector of [8 x bfloat].
444
+ /// \returns A 256-bit vector of [8 x float] come from conversion of __A
445
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
446
+ _mm256_cvtpbh_ps(__m128bh __A) {
447
+ return (__m256) __builtin_convertvector(__A, __v8sf);
448
+ }
449
+
450
+ /// Convert Packed BF16 Data to Packed float Data using zeroing mask.
451
+ ///
452
+ /// \headerfile <x86intrin.h>
453
+ ///
454
+ /// \param __U
455
+ /// A 4-bit mask. Elements are zeroed out when the corresponding mask
456
+ /// bit is not set.
457
+ /// \param __A
458
+ /// A 128-bit vector of [4 x bfloat].
459
+ /// \returns A 128-bit vector of [4 x float] come from conversion of __A
460
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
461
+ _mm_maskz_cvtpbh_ps(__mmask8 __U, __m128bh __A) {
462
+ return (__m128)__builtin_ia32_selectps_128(
463
+ (__mmask8)__U, (__v4sf)_mm_cvtpbh_ps(__A), (__v4sf)_mm_setzero_ps());
464
+ }
465
+
466
+ /// Convert Packed BF16 Data to Packed float Data using zeroing mask.
467
+ ///
468
+ /// \headerfile <x86intrin.h>
469
+ ///
470
+ /// \param __U
471
+ /// A 8-bit mask. Elements are zeroed out when the corresponding mask
472
+ /// bit is not set.
473
+ /// \param __A
474
+ /// A 128-bit vector of [8 x bfloat].
475
+ /// \returns A 256-bit vector of [8 x float] come from conversion of __A
476
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
477
+ _mm256_maskz_cvtpbh_ps(__mmask8 __U, __m128bh __A) {
478
+ return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
479
+ (__v8sf)_mm256_cvtpbh_ps(__A),
480
+ (__v8sf)_mm256_setzero_ps());
481
+ }
482
+
483
+ /// Convert Packed BF16 Data to Packed float Data using merging mask.
484
+ ///
485
+ /// \headerfile <x86intrin.h>
486
+ ///
487
+ /// \param __S
488
+ /// A 128-bit vector of [4 x float]. Elements are copied from __S when
489
+ /// the corresponding mask bit is not set.
490
+ /// \param __U
491
+ /// A 4-bit mask. Elements are zeroed out when the corresponding mask
492
+ /// bit is not set.
493
+ /// \param __A
494
+ /// A 128-bit vector of [4 x bfloat].
495
+ /// \returns A 128-bit vector of [4 x float] come from conversion of __A
496
+ static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
497
+ _mm_mask_cvtpbh_ps(__m128 __S, __mmask8 __U, __m128bh __A) {
498
+ return (__m128)__builtin_ia32_selectps_128(
499
+ (__mmask8)__U, (__v4sf)_mm_cvtpbh_ps(__A), (__v4sf)__S);
500
+ }
501
+
502
+ /// Convert Packed BF16 Data to Packed float Data using merging mask.
503
+ ///
504
+ /// \headerfile <x86intrin.h>
505
+ ///
506
+ /// \param __S
507
+ /// A 256-bit vector of [8 x float]. Elements are copied from __S when
508
+ /// the corresponding mask bit is not set.
509
+ /// \param __U
510
+ /// A 8-bit mask. Elements are zeroed out when the corresponding mask
511
+ /// bit is not set.
512
+ /// \param __A
513
+ /// A 128-bit vector of [8 x bfloat].
514
+ /// \returns A 256-bit vector of [8 x float] come from conversion of __A
515
+ static __inline__ __m256 __DEFAULT_FN_ATTRS256_CONSTEXPR
516
+ _mm256_mask_cvtpbh_ps(__m256 __S, __mmask8 __U, __m128bh __A) {
517
+ return (__m256)__builtin_ia32_selectps_256(
518
+ (__mmask8)__U, (__v8sf)_mm256_cvtpbh_ps(__A), (__v8sf)__S);
519
+ }
520
+
521
+ #undef __DEFAULT_FN_ATTRS128
522
+ #undef __DEFAULT_FN_ATTRS256
523
+ #undef __DEFAULT_FN_ATTRS128_CONSTEXPR
524
+ #undef __DEFAULT_FN_ATTRS256_CONSTEXPR
525
+
526
+ #endif
527
+ #endif
@@ -0,0 +1,135 @@
1
+ /*===---- avx512vlbitalgintrin.h - BITALG intrinsics -----------------------===
2
+ *
3
+ *
4
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
+ * See https://llvm.org/LICENSE.txt for license information.
6
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
+ *
8
+ *===-----------------------------------------------------------------------===
9
+ */
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <avx512vlbitalgintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __AVX512VLBITALGINTRIN_H
15
+ #define __AVX512VLBITALGINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
19
+ #define __DEFAULT_FN_ATTRS128 \
20
+ __attribute__((__always_inline__, __nodebug__, \
21
+ __target__("avx512vl,avx512bitalg"), \
22
+ __min_vector_width__(128))) constexpr
23
+ #define __DEFAULT_FN_ATTRS256 \
24
+ __attribute__((__always_inline__, __nodebug__, \
25
+ __target__("avx512vl,avx512bitalg"), \
26
+ __min_vector_width__(256))) constexpr
27
+ #else
28
+ #define __DEFAULT_FN_ATTRS128 \
29
+ __attribute__((__always_inline__, __nodebug__, \
30
+ __target__("avx512vl,avx512bitalg"), \
31
+ __min_vector_width__(128)))
32
+ #define __DEFAULT_FN_ATTRS256 \
33
+ __attribute__((__always_inline__, __nodebug__, \
34
+ __target__("avx512vl,avx512bitalg"), \
35
+ __min_vector_width__(256)))
36
+ #endif
37
+
38
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
39
+ _mm256_popcnt_epi16(__m256i __A) {
40
+ return (__m256i)__builtin_elementwise_popcount((__v16hu)__A);
41
+ }
42
+
43
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
44
+ _mm256_mask_popcnt_epi16(__m256i __A, __mmask16 __U, __m256i __B) {
45
+ return (__m256i)__builtin_ia32_selectw_256(
46
+ (__mmask16)__U, (__v16hi)_mm256_popcnt_epi16(__B), (__v16hi)__A);
47
+ }
48
+
49
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
50
+ _mm256_maskz_popcnt_epi16(__mmask16 __U, __m256i __B) {
51
+ return _mm256_mask_popcnt_epi16((__m256i)_mm256_setzero_si256(), __U, __B);
52
+ }
53
+
54
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_popcnt_epi16(__m128i __A) {
55
+ return (__m128i)__builtin_elementwise_popcount((__v8hu)__A);
56
+ }
57
+
58
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
59
+ _mm_mask_popcnt_epi16(__m128i __A, __mmask8 __U, __m128i __B) {
60
+ return (__m128i)__builtin_ia32_selectw_128(
61
+ (__mmask8)__U, (__v8hi)_mm_popcnt_epi16(__B), (__v8hi)__A);
62
+ }
63
+
64
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
65
+ _mm_maskz_popcnt_epi16(__mmask8 __U, __m128i __B) {
66
+ return _mm_mask_popcnt_epi16((__m128i)_mm_setzero_si128(), __U, __B);
67
+ }
68
+
69
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
70
+ _mm256_popcnt_epi8(__m256i __A) {
71
+ return (__m256i)__builtin_elementwise_popcount((__v32qu)__A);
72
+ }
73
+
74
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
75
+ _mm256_mask_popcnt_epi8(__m256i __A, __mmask32 __U, __m256i __B) {
76
+ return (__m256i)__builtin_ia32_selectb_256(
77
+ (__mmask32)__U, (__v32qi)_mm256_popcnt_epi8(__B), (__v32qi)__A);
78
+ }
79
+
80
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
81
+ _mm256_maskz_popcnt_epi8(__mmask32 __U, __m256i __B) {
82
+ return _mm256_mask_popcnt_epi8((__m256i)_mm256_setzero_si256(), __U, __B);
83
+ }
84
+
85
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_popcnt_epi8(__m128i __A) {
86
+ return (__m128i)__builtin_elementwise_popcount((__v16qu)__A);
87
+ }
88
+
89
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
90
+ _mm_mask_popcnt_epi8(__m128i __A, __mmask16 __U, __m128i __B) {
91
+ return (__m128i)__builtin_ia32_selectb_128(
92
+ (__mmask16)__U, (__v16qi)_mm_popcnt_epi8(__B), (__v16qi)__A);
93
+ }
94
+
95
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
96
+ _mm_maskz_popcnt_epi8(__mmask16 __U, __m128i __B) {
97
+ return _mm_mask_popcnt_epi8((__m128i)_mm_setzero_si128(), __U, __B);
98
+ }
99
+
100
+ static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
101
+ _mm256_mask_bitshuffle_epi64_mask(__mmask32 __U, __m256i __A, __m256i __B)
102
+ {
103
+ return (__mmask32) __builtin_ia32_vpshufbitqmb256_mask((__v32qi) __A,
104
+ (__v32qi) __B,
105
+ __U);
106
+ }
107
+
108
+ static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
109
+ _mm256_bitshuffle_epi64_mask(__m256i __A, __m256i __B)
110
+ {
111
+ return _mm256_mask_bitshuffle_epi64_mask((__mmask32) -1,
112
+ __A,
113
+ __B);
114
+ }
115
+
116
+ static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
117
+ _mm_mask_bitshuffle_epi64_mask(__mmask16 __U, __m128i __A, __m128i __B)
118
+ {
119
+ return (__mmask16) __builtin_ia32_vpshufbitqmb128_mask((__v16qi) __A,
120
+ (__v16qi) __B,
121
+ __U);
122
+ }
123
+
124
+ static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
125
+ _mm_bitshuffle_epi64_mask(__m128i __A, __m128i __B)
126
+ {
127
+ return _mm_mask_bitshuffle_epi64_mask((__mmask16) -1,
128
+ __A,
129
+ __B);
130
+ }
131
+
132
+
133
+ #undef __DEFAULT_FN_ATTRS128
134
+ #undef __DEFAULT_FN_ATTRS256
135
+ #endif