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,313 @@
1
+ /*===------------- avx512vlvnniintrin.h - VNNI 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 <avx512vlvnniintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __AVX512VLVNNIINTRIN_H
15
+ #define __AVX512VLVNNIINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS128 \
19
+ __attribute__((__always_inline__, __nodebug__, \
20
+ __target__("avx512vl,avx512vnni"), \
21
+ __min_vector_width__(128)))
22
+ #define __DEFAULT_FN_ATTRS256 \
23
+ __attribute__((__always_inline__, __nodebug__, \
24
+ __target__("avx512vl,avx512vnni"), \
25
+ __min_vector_width__(256)))
26
+
27
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
28
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
29
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
30
+ /// in \a S, and store the packed 32-bit results in DST.
31
+ ///
32
+ /// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
33
+ ///
34
+ /// \code{.operation}
35
+ /// FOR j := 0 to 7
36
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
37
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
38
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
39
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
40
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
41
+ /// ENDFOR
42
+ /// DST[MAX:256] := 0
43
+ /// \endcode
44
+ #define _mm256_dpbusd_epi32(S, A, B) \
45
+ ((__m256i)__builtin_ia32_vpdpbusd256((__v8si)(S), (__v32qu)(A), (__v32qi)(B)))
46
+
47
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
48
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
49
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
50
+ /// in \a S using signed saturation, and store the packed 32-bit results in DST.
51
+ ///
52
+ /// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
53
+ ///
54
+ /// \code{.operation}
55
+ /// FOR j := 0 to 7
56
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
57
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
58
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
59
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
60
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
61
+ /// ENDFOR
62
+ /// DST[MAX:256] := 0
63
+ /// \endcode
64
+ #define _mm256_dpbusds_epi32(S, A, B) \
65
+ ((__m256i)__builtin_ia32_vpdpbusds256((__v8si)(S), (__v32qu)(A), \
66
+ (__v32qi)(B)))
67
+
68
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
69
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
70
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S,
71
+ /// and store the packed 32-bit results in DST.
72
+ ///
73
+ /// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
74
+ ///
75
+ /// \code{.operation}
76
+ /// FOR j := 0 to 7
77
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
78
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
79
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2
80
+ /// ENDFOR
81
+ /// DST[MAX:256] := 0
82
+ /// \endcode
83
+ #define _mm256_dpwssd_epi32(S, A, B) \
84
+ ((__m256i)__builtin_ia32_vpdpwssd256((__v8si)(S), (__v16hi)(A), (__v16hi)(B)))
85
+
86
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
87
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
88
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S
89
+ /// using signed saturation, and store the packed 32-bit results in DST.
90
+ ///
91
+ /// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
92
+ ///
93
+ /// \code{.operation}
94
+ /// FOR j := 0 to 7
95
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
96
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
97
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2)
98
+ /// ENDFOR
99
+ /// DST[MAX:256] := 0
100
+ /// \endcode
101
+ #define _mm256_dpwssds_epi32(S, A, B) \
102
+ ((__m256i)__builtin_ia32_vpdpwssds256((__v8si)(S), (__v16hi)(A), \
103
+ (__v16hi)(B)))
104
+
105
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
106
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
107
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
108
+ /// in \a S, and store the packed 32-bit results in DST.
109
+ ///
110
+ /// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
111
+ ///
112
+ /// \code{.operation}
113
+ /// FOR j := 0 to 3
114
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
115
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
116
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
117
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
118
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
119
+ /// ENDFOR
120
+ /// DST[MAX:128] := 0
121
+ /// \endcode
122
+ #define _mm_dpbusd_epi32(S, A, B) \
123
+ ((__m128i)__builtin_ia32_vpdpbusd128((__v4si)(S), (__v16qu)(A), (__v16qi)(B)))
124
+
125
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
126
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
127
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
128
+ /// in \a S using signed saturation, and store the packed 32-bit results in DST.
129
+ ///
130
+ /// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
131
+ ///
132
+ /// \code{.operation}
133
+ /// FOR j := 0 to 3
134
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
135
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
136
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
137
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
138
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
139
+ /// ENDFOR
140
+ /// DST[MAX:128] := 0
141
+ /// \endcode
142
+ #define _mm_dpbusds_epi32(S, A, B) \
143
+ ((__m128i)__builtin_ia32_vpdpbusds128((__v4si)(S), (__v16qu)(A), \
144
+ (__v16qi)(B)))
145
+
146
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
147
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
148
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S,
149
+ /// and store the packed 32-bit results in DST.
150
+ ///
151
+ /// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
152
+ ///
153
+ /// \code{.operation}
154
+ /// FOR j := 0 to 3
155
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
156
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
157
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2
158
+ /// ENDFOR
159
+ /// DST[MAX:128] := 0
160
+ /// \endcode
161
+ #define _mm_dpwssd_epi32(S, A, B) \
162
+ ((__m128i)__builtin_ia32_vpdpwssd128((__v4si)(S), (__v8hi)(A), (__v8hi)(B)))
163
+
164
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
165
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
166
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S
167
+ /// using signed saturation, and store the packed 32-bit results in DST.
168
+ ///
169
+ /// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
170
+ ///
171
+ /// \code{.operation}
172
+ /// FOR j := 0 to 3
173
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
174
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
175
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2)
176
+ /// ENDFOR
177
+ /// DST[MAX:128] := 0
178
+ /// \endcode
179
+ #define _mm_dpwssds_epi32(S, A, B) \
180
+ ((__m128i)__builtin_ia32_vpdpwssds128((__v4si)(S), (__v8hi)(A), (__v8hi)(B)))
181
+
182
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
183
+ _mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
184
+ {
185
+ return (__m256i)__builtin_ia32_selectd_256(__U,
186
+ (__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
187
+ (__v8si)__S);
188
+ }
189
+
190
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
191
+ _mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
192
+ {
193
+ return (__m256i)__builtin_ia32_selectd_256(__U,
194
+ (__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
195
+ (__v8si)_mm256_setzero_si256());
196
+ }
197
+
198
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
199
+ _mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
200
+ {
201
+ return (__m256i)__builtin_ia32_selectd_256(__U,
202
+ (__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
203
+ (__v8si)__S);
204
+ }
205
+
206
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
207
+ _mm256_maskz_dpbusds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
208
+ {
209
+ return (__m256i)__builtin_ia32_selectd_256(__U,
210
+ (__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
211
+ (__v8si)_mm256_setzero_si256());
212
+ }
213
+
214
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
215
+ _mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
216
+ {
217
+ return (__m256i)__builtin_ia32_selectd_256(__U,
218
+ (__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
219
+ (__v8si)__S);
220
+ }
221
+
222
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
223
+ _mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
224
+ {
225
+ return (__m256i)__builtin_ia32_selectd_256(__U,
226
+ (__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
227
+ (__v8si)_mm256_setzero_si256());
228
+ }
229
+
230
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
231
+ _mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
232
+ {
233
+ return (__m256i)__builtin_ia32_selectd_256(__U,
234
+ (__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
235
+ (__v8si)__S);
236
+ }
237
+
238
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
239
+ _mm256_maskz_dpwssds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
240
+ {
241
+ return (__m256i)__builtin_ia32_selectd_256(__U,
242
+ (__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
243
+ (__v8si)_mm256_setzero_si256());
244
+ }
245
+
246
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
247
+ _mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
248
+ {
249
+ return (__m128i)__builtin_ia32_selectd_128(__U,
250
+ (__v4si)_mm_dpbusd_epi32(__S, __A, __B),
251
+ (__v4si)__S);
252
+ }
253
+
254
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
255
+ _mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
256
+ {
257
+ return (__m128i)__builtin_ia32_selectd_128(__U,
258
+ (__v4si)_mm_dpbusd_epi32(__S, __A, __B),
259
+ (__v4si)_mm_setzero_si128());
260
+ }
261
+
262
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
263
+ _mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
264
+ {
265
+ return (__m128i)__builtin_ia32_selectd_128(__U,
266
+ (__v4si)_mm_dpbusds_epi32(__S, __A, __B),
267
+ (__v4si)__S);
268
+ }
269
+
270
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
271
+ _mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
272
+ {
273
+ return (__m128i)__builtin_ia32_selectd_128(__U,
274
+ (__v4si)_mm_dpbusds_epi32(__S, __A, __B),
275
+ (__v4si)_mm_setzero_si128());
276
+ }
277
+
278
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
279
+ _mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
280
+ {
281
+ return (__m128i)__builtin_ia32_selectd_128(__U,
282
+ (__v4si)_mm_dpwssd_epi32(__S, __A, __B),
283
+ (__v4si)__S);
284
+ }
285
+
286
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
287
+ _mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
288
+ {
289
+ return (__m128i)__builtin_ia32_selectd_128(__U,
290
+ (__v4si)_mm_dpwssd_epi32(__S, __A, __B),
291
+ (__v4si)_mm_setzero_si128());
292
+ }
293
+
294
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
295
+ _mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
296
+ {
297
+ return (__m128i)__builtin_ia32_selectd_128(__U,
298
+ (__v4si)_mm_dpwssds_epi32(__S, __A, __B),
299
+ (__v4si)__S);
300
+ }
301
+
302
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
303
+ _mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
304
+ {
305
+ return (__m128i)__builtin_ia32_selectd_128(__U,
306
+ (__v4si)_mm_dpwssds_epi32(__S, __A, __B),
307
+ (__v4si)_mm_setzero_si128());
308
+ }
309
+
310
+ #undef __DEFAULT_FN_ATTRS128
311
+ #undef __DEFAULT_FN_ATTRS256
312
+
313
+ #endif
@@ -0,0 +1,123 @@
1
+ /*===------ avx512vlvp2intersectintrin.h - VL VP2INTERSECT intrinsics ------===
2
+ *
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ * THE SOFTWARE.
21
+ *
22
+ *===-----------------------------------------------------------------------===
23
+ */
24
+ #ifndef __IMMINTRIN_H
25
+ #error "Never use <avx512vlvp2intersectintrin.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef _AVX512VLVP2INTERSECT_H
29
+ #define _AVX512VLVP2INTERSECT_H
30
+
31
+ #define __DEFAULT_FN_ATTRS128 \
32
+ __attribute__((__always_inline__, __nodebug__, \
33
+ __target__("avx512vl,avx512vp2intersect"), \
34
+ __min_vector_width__(128)))
35
+
36
+ #define __DEFAULT_FN_ATTRS256 \
37
+ __attribute__((__always_inline__, __nodebug__, \
38
+ __target__("avx512vl,avx512vp2intersect"), \
39
+ __min_vector_width__(256)))
40
+ /// Store, in an even/odd pair of mask registers, the indicators of the
41
+ /// locations of value matches between dwords in operands __a and __b.
42
+ ///
43
+ /// \headerfile <x86intrin.h>
44
+ ///
45
+ /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
46
+ ///
47
+ /// \param __a
48
+ /// A 256-bit vector of [8 x i32].
49
+ /// \param __b
50
+ /// A 256-bit vector of [8 x i32]
51
+ /// \param __m0
52
+ /// A pointer point to 8-bit mask
53
+ /// \param __m1
54
+ /// A pointer point to 8-bit mask
55
+ static __inline__ void __DEFAULT_FN_ATTRS256
56
+ _mm256_2intersect_epi32(__m256i __a, __m256i __b, __mmask8 *__m0, __mmask8 *__m1) {
57
+ __builtin_ia32_vp2intersect_d_256((__v8si)__a, (__v8si)__b, __m0, __m1);
58
+ }
59
+
60
+ /// Store, in an even/odd pair of mask registers, the indicators of the
61
+ /// locations of value matches between quadwords in operands __a and __b.
62
+ ///
63
+ /// \headerfile <x86intrin.h>
64
+ ///
65
+ /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
66
+ ///
67
+ /// \param __a
68
+ /// A 256-bit vector of [4 x i64].
69
+ /// \param __b
70
+ /// A 256-bit vector of [4 x i64]
71
+ /// \param __m0
72
+ /// A pointer point to 8-bit mask
73
+ /// \param __m1
74
+ /// A pointer point to 8-bit mask
75
+ static __inline__ void __DEFAULT_FN_ATTRS256
76
+ _mm256_2intersect_epi64(__m256i __a, __m256i __b, __mmask8 *__m0, __mmask8 *__m1) {
77
+ __builtin_ia32_vp2intersect_q_256((__v4di)__a, (__v4di)__b, __m0, __m1);
78
+ }
79
+
80
+ /// Store, in an even/odd pair of mask registers, the indicators of the
81
+ /// locations of value matches between dwords in operands __a and __b.
82
+ ///
83
+ /// \headerfile <x86intrin.h>
84
+ ///
85
+ /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
86
+ ///
87
+ /// \param __a
88
+ /// A 128-bit vector of [4 x i32].
89
+ /// \param __b
90
+ /// A 128-bit vector of [4 x i32]
91
+ /// \param __m0
92
+ /// A pointer point to 8-bit mask
93
+ /// \param __m1
94
+ /// A pointer point to 8-bit mask
95
+ static __inline__ void __DEFAULT_FN_ATTRS128
96
+ _mm_2intersect_epi32(__m128i __a, __m128i __b, __mmask8 *__m0, __mmask8 *__m1) {
97
+ __builtin_ia32_vp2intersect_d_128((__v4si)__a, (__v4si)__b, __m0, __m1);
98
+ }
99
+
100
+ /// Store, in an even/odd pair of mask registers, the indicators of the
101
+ /// locations of value matches between quadwords in operands __a and __b.
102
+ ///
103
+ /// \headerfile <x86intrin.h>
104
+ ///
105
+ /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
106
+ ///
107
+ /// \param __a
108
+ /// A 128-bit vector of [2 x i64].
109
+ /// \param __b
110
+ /// A 128-bit vector of [2 x i64]
111
+ /// \param __m0
112
+ /// A pointer point to 8-bit mask
113
+ /// \param __m1
114
+ /// A pointer point to 8-bit mask
115
+ static __inline__ void __DEFAULT_FN_ATTRS128
116
+ _mm_2intersect_epi64(__m128i __a, __m128i __b, __mmask8 *__m0, __mmask8 *__m1) {
117
+ __builtin_ia32_vp2intersect_q_128((__v2di)__a, (__v2di)__b, __m0, __m1);
118
+ }
119
+
120
+ #undef __DEFAULT_FN_ATTRS128
121
+ #undef __DEFAULT_FN_ATTRS256
122
+
123
+ #endif
@@ -0,0 +1,116 @@
1
+ /*===------------- avx512vnniintrin.h - VNNI 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 <avx512vnniintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __AVX512VNNIINTRIN_H
15
+ #define __AVX512VNNIINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
20
+ __min_vector_width__(512)))
21
+
22
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
23
+ _mm512_dpbusd_epi32(__m512i __S, __m512i __A, __m512i __B)
24
+ {
25
+ return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v64qu)__A,
26
+ (__v64qi)__B);
27
+ }
28
+
29
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
30
+ _mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
31
+ {
32
+ return (__m512i)__builtin_ia32_selectd_512(__U,
33
+ (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
34
+ (__v16si)__S);
35
+ }
36
+
37
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
38
+ _mm512_maskz_dpbusd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
39
+ {
40
+ return (__m512i)__builtin_ia32_selectd_512(__U,
41
+ (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
42
+ (__v16si)_mm512_setzero_si512());
43
+ }
44
+
45
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
46
+ _mm512_dpbusds_epi32(__m512i __S, __m512i __A, __m512i __B)
47
+ {
48
+ return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v64qu)__A,
49
+ (__v64qi)__B);
50
+ }
51
+
52
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
53
+ _mm512_mask_dpbusds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
54
+ {
55
+ return (__m512i)__builtin_ia32_selectd_512(__U,
56
+ (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
57
+ (__v16si)__S);
58
+ }
59
+
60
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
61
+ _mm512_maskz_dpbusds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
62
+ {
63
+ return (__m512i)__builtin_ia32_selectd_512(__U,
64
+ (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
65
+ (__v16si)_mm512_setzero_si512());
66
+ }
67
+
68
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
69
+ _mm512_dpwssd_epi32(__m512i __S, __m512i __A, __m512i __B)
70
+ {
71
+ return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v32hi)__A,
72
+ (__v32hi)__B);
73
+ }
74
+
75
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
76
+ _mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
77
+ {
78
+ return (__m512i)__builtin_ia32_selectd_512(__U,
79
+ (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
80
+ (__v16si)__S);
81
+ }
82
+
83
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
84
+ _mm512_maskz_dpwssd_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
85
+ {
86
+ return (__m512i)__builtin_ia32_selectd_512(__U,
87
+ (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
88
+ (__v16si)_mm512_setzero_si512());
89
+ }
90
+
91
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
92
+ _mm512_dpwssds_epi32(__m512i __S, __m512i __A, __m512i __B)
93
+ {
94
+ return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v32hi)__A,
95
+ (__v32hi)__B);
96
+ }
97
+
98
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
99
+ _mm512_mask_dpwssds_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B)
100
+ {
101
+ return (__m512i)__builtin_ia32_selectd_512(__U,
102
+ (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
103
+ (__v16si)__S);
104
+ }
105
+
106
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
107
+ _mm512_maskz_dpwssds_epi32(__mmask16 __U, __m512i __S, __m512i __A, __m512i __B)
108
+ {
109
+ return (__m512i)__builtin_ia32_selectd_512(__U,
110
+ (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
111
+ (__v16si)_mm512_setzero_si512());
112
+ }
113
+
114
+ #undef __DEFAULT_FN_ATTRS
115
+
116
+ #endif
@@ -0,0 +1,77 @@
1
+ /*===------- avx512vpintersectintrin.h - VP2INTERSECT intrinsics ------------===
2
+ *
3
+ *
4
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ * of this software and associated documentation files (the "Software"), to deal
6
+ * in the Software without restriction, including without limitation the rights
7
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ * copies of the Software, and to permit persons to whom the Software is
9
+ * furnished to do so, subject to the following conditions:
10
+ *
11
+ * The above copyright notice and this permission notice shall be included in
12
+ * all copies or substantial portions of the Software.
13
+ *
14
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ * THE SOFTWARE.
21
+ *
22
+ *===-----------------------------------------------------------------------===
23
+ */
24
+ #ifndef __IMMINTRIN_H
25
+ #error "Never use <avx512vp2intersect.h> directly; include <immintrin.h> instead."
26
+ #endif
27
+
28
+ #ifndef _AVX512VP2INTERSECT_H
29
+ #define _AVX512VP2INTERSECT_H
30
+
31
+ #define __DEFAULT_FN_ATTRS \
32
+ __attribute__((__always_inline__, __nodebug__, \
33
+ __target__("avx512vp2intersect"), __min_vector_width__(512)))
34
+
35
+ /// Store, in an even/odd pair of mask registers, the indicators of the
36
+ /// locations of value matches between dwords in operands __a and __b.
37
+ ///
38
+ /// \headerfile <x86intrin.h>
39
+ ///
40
+ /// This intrinsic corresponds to the <c> VP2INTERSECTD </c> instruction.
41
+ ///
42
+ /// \param __a
43
+ /// A 512-bit vector of [16 x i32].
44
+ /// \param __b
45
+ /// A 512-bit vector of [16 x i32]
46
+ /// \param __m0
47
+ /// A pointer point to 16-bit mask
48
+ /// \param __m1
49
+ /// A pointer point to 16-bit mask
50
+ static __inline__ void __DEFAULT_FN_ATTRS
51
+ _mm512_2intersect_epi32(__m512i __a, __m512i __b, __mmask16 *__m0, __mmask16 *__m1) {
52
+ __builtin_ia32_vp2intersect_d_512((__v16si)__a, (__v16si)__b, __m0, __m1);
53
+ }
54
+
55
+ /// Store, in an even/odd pair of mask registers, the indicators of the
56
+ /// locations of value matches between quadwords in operands __a and __b.
57
+ ///
58
+ /// \headerfile <x86intrin.h>
59
+ ///
60
+ /// This intrinsic corresponds to the <c> VP2INTERSECTQ </c> instruction.
61
+ ///
62
+ /// \param __a
63
+ /// A 512-bit vector of [8 x i64].
64
+ /// \param __b
65
+ /// A 512-bit vector of [8 x i64]
66
+ /// \param __m0
67
+ /// A pointer point to 8-bit mask
68
+ /// \param __m1
69
+ /// A pointer point to 8-bit mask
70
+ static __inline__ void __DEFAULT_FN_ATTRS
71
+ _mm512_2intersect_epi64(__m512i __a, __m512i __b, __mmask8 *__m0, __mmask8 *__m1) {
72
+ __builtin_ia32_vp2intersect_q_512((__v8di)__a, (__v8di)__b, __m0, __m1);
73
+ }
74
+
75
+ #undef __DEFAULT_FN_ATTRS
76
+
77
+ #endif