llvm-runtime-resources-darwin 0.0.0 → 23.1.0

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 (372) 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 +236 -0
  6. package/include/__clang_cuda_device_functions.h +1572 -0
  7. package/include/__clang_cuda_intrinsics.h +975 -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 +289 -0
  11. package/include/__clang_cuda_runtime_wrapper.h +526 -0
  12. package/include/__clang_cuda_texture_intrinsics.h +1177 -0
  13. package/include/__clang_gpu_builtin_vars.h +71 -0
  14. package/include/__clang_gpu_device_functions.h +411 -0
  15. package/include/__clang_gpu_intrinsics.h +242 -0
  16. package/include/__clang_hip_cmath.h +848 -0
  17. package/include/__clang_hip_libdevice_declares.h +238 -0
  18. package/include/__clang_hip_math.h +1405 -0
  19. package/include/__clang_hip_runtime_wrapper.h +170 -0
  20. package/include/__clang_hip_stdlib.h +43 -0
  21. package/include/__clang_spirv_builtins.h +217 -0
  22. package/include/__clang_spirv_libdevice_declares.h +170 -0
  23. package/include/__clang_spirv_math.h +719 -0
  24. package/include/__float_float.h +176 -0
  25. package/include/__float_header_macro.h +12 -0
  26. package/include/__float_infinity_nan.h +20 -0
  27. package/include/__stdarg___gnuc_va_list.h +13 -0
  28. package/include/__stdarg___va_copy.h +12 -0
  29. package/include/__stdarg_header_macro.h +12 -0
  30. package/include/__stdarg_va_arg.h +22 -0
  31. package/include/__stdarg_va_copy.h +12 -0
  32. package/include/__stdarg_va_list.h +13 -0
  33. package/include/__stddef_header_macro.h +12 -0
  34. package/include/__stddef_max_align_t.h +27 -0
  35. package/include/__stddef_null.h +29 -0
  36. package/include/__stddef_nullptr_t.h +29 -0
  37. package/include/__stddef_offsetof.h +17 -0
  38. package/include/__stddef_ptrdiff_t.h +20 -0
  39. package/include/__stddef_rsize_t.h +20 -0
  40. package/include/__stddef_size_t.h +20 -0
  41. package/include/__stddef_unreachable.h +21 -0
  42. package/include/__stddef_wchar_t.h +28 -0
  43. package/include/__stddef_wint_t.h +15 -0
  44. package/include/__wmmintrin_aes.h +140 -0
  45. package/include/__wmmintrin_pclmul.h +48 -0
  46. package/include/adcintrin.h +165 -0
  47. package/include/adxintrin.h +107 -0
  48. package/include/altivec.h +19434 -0
  49. package/include/amdgpuintrin.h +164 -0
  50. package/include/amdhsa_abi.h +83 -0
  51. package/include/ammintrin.h +183 -0
  52. package/include/amo.h +220 -0
  53. package/include/amxavx512intrin.h +596 -0
  54. package/include/amxcomplexintrin.h +167 -0
  55. package/include/amxfp16intrin.h +93 -0
  56. package/include/amxfp8intrin.h +230 -0
  57. package/include/amxintrin.h +492 -0
  58. package/include/amxmovrsintrin.h +48 -0
  59. package/include/andes_vector.h +21 -0
  60. package/include/arm64_neon.h +21 -0
  61. package/include/arm64intr.h +45 -0
  62. package/include/arm_acle.h +866 -0
  63. package/include/arm_bf16.h +20 -0
  64. package/include/arm_cde.h +410 -0
  65. package/include/arm_cmse.h +217 -0
  66. package/include/arm_fp16.h +596 -0
  67. package/include/arm_mve.h +19187 -0
  68. package/include/arm_neon.h +74351 -0
  69. package/include/arm_neon_sve_bridge.h +182 -0
  70. package/include/arm_sme.h +3753 -0
  71. package/include/arm_sve.h +32698 -0
  72. package/include/arm_vector_types.h +432 -0
  73. package/include/armintr.h +31 -0
  74. package/include/avx10_2_512bf16intrin.h +568 -0
  75. package/include/avx10_2_512convertintrin.h +322 -0
  76. package/include/avx10_2_512minmaxintrin.h +127 -0
  77. package/include/avx10_2_512niintrin.h +314 -0
  78. package/include/avx10_2_512satcvtdsintrin.h +307 -0
  79. package/include/avx10_2_512satcvtintrin.h +301 -0
  80. package/include/avx10_2bf16intrin.h +1094 -0
  81. package/include/avx10_2convertintrin.h +3257 -0
  82. package/include/avx10_2copyintrin.h +66 -0
  83. package/include/avx10_2minmaxintrin.h +232 -0
  84. package/include/avx10_2niintrin.h +409 -0
  85. package/include/avx10_2satcvtdsintrin.h +376 -0
  86. package/include/avx10_2satcvtintrin.h +312 -0
  87. package/include/avx2intrin.h +5190 -0
  88. package/include/avx512bf16intrin.h +292 -0
  89. package/include/avx512bitalgintrin.h +75 -0
  90. package/include/avx512bmmintrin.h +174 -0
  91. package/include/avx512bmmvlintrin.h +245 -0
  92. package/include/avx512bwintrin.h +1885 -0
  93. package/include/avx512cdintrin.h +112 -0
  94. package/include/avx512dqintrin.h +1350 -0
  95. package/include/avx512fintrin.h +9351 -0
  96. package/include/avx512fp16intrin.h +3349 -0
  97. package/include/avx512ifmaintrin.h +68 -0
  98. package/include/avx512ifmavlintrin.h +138 -0
  99. package/include/avx512vbmi2intrin.h +364 -0
  100. package/include/avx512vbmiintrin.h +98 -0
  101. package/include/avx512vbmivlintrin.h +179 -0
  102. package/include/avx512vlbf16intrin.h +527 -0
  103. package/include/avx512vlbitalgintrin.h +135 -0
  104. package/include/avx512vlbwintrin.h +3052 -0
  105. package/include/avx512vlcdintrin.h +202 -0
  106. package/include/avx512vldqintrin.h +1156 -0
  107. package/include/avx512vlfp16intrin.h +2090 -0
  108. package/include/avx512vlintrin.h +8067 -0
  109. package/include/avx512vlvbmi2intrin.h +702 -0
  110. package/include/avx512vlvnniintrin.h +308 -0
  111. package/include/avx512vlvp2intersectintrin.h +123 -0
  112. package/include/avx512vnniintrin.h +113 -0
  113. package/include/avx512vp2intersectintrin.h +77 -0
  114. package/include/avx512vpopcntdqintrin.h +62 -0
  115. package/include/avx512vpopcntdqvlintrin.h +105 -0
  116. package/include/avxifmaintrin.h +193 -0
  117. package/include/avxintrin.h +5064 -0
  118. package/include/avxneconvertintrin.h +484 -0
  119. package/include/avxvnniint16intrin.h +451 -0
  120. package/include/avxvnniint8intrin.h +454 -0
  121. package/include/avxvnniintrin.h +238 -0
  122. package/include/bmi2intrin.h +253 -0
  123. package/include/bmiintrin.h +604 -0
  124. package/include/builtins.h +19 -0
  125. package/include/cet.h +66 -0
  126. package/include/cetintrin.h +115 -0
  127. package/include/cldemoteintrin.h +36 -0
  128. package/include/clflushoptintrin.h +36 -0
  129. package/include/clwbintrin.h +38 -0
  130. package/include/clzerointrin.h +38 -0
  131. package/include/cmpccxaddintrin.h +70 -0
  132. package/include/cpuid.h +451 -0
  133. package/include/crc32intrin.h +102 -0
  134. package/include/cuda_wrappers/__utility/declval.h +28 -0
  135. package/include/cuda_wrappers/algorithm +116 -0
  136. package/include/cuda_wrappers/bits/basic_string.h +9 -0
  137. package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  138. package/include/cuda_wrappers/bits/c++config.h +61 -0
  139. package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  140. package/include/cuda_wrappers/cmath +44 -0
  141. package/include/cuda_wrappers/complex +90 -0
  142. package/include/cuda_wrappers/new +108 -0
  143. package/include/emmintrin.h +4940 -0
  144. package/include/endian.h +91 -0
  145. package/include/enqcmdintrin.h +63 -0
  146. package/include/f16cintrin.h +176 -0
  147. package/include/float.h +48 -0
  148. package/include/fma4intrin.h +220 -0
  149. package/include/fmaintrin.h +826 -0
  150. package/include/fuzzer/FuzzedDataProvider.h +397 -0
  151. package/include/fxsrintrin.h +91 -0
  152. package/include/gfniintrin.h +238 -0
  153. package/include/gpuintrin.h +348 -0
  154. package/include/hexagon_circ_brev_intrinsics.h +298 -0
  155. package/include/hexagon_protos.h +8439 -0
  156. package/include/hexagon_types.h +2628 -0
  157. package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
  158. package/include/hlsl_inline_intrinsics_gen.inc +546 -0
  159. package/include/hresetintrin.h +49 -0
  160. package/include/htmintrin.h +212 -0
  161. package/include/htmxlintrin.h +345 -0
  162. package/include/hvx_hexagon_protos.h +5421 -0
  163. package/include/ia32intrin.h +863 -0
  164. package/include/immintrin.h +597 -0
  165. package/include/intrin.h +501 -0
  166. package/include/intrin0.h +256 -0
  167. package/include/inttypes.h +101 -0
  168. package/include/invpcidintrin.h +23 -0
  169. package/include/iso646.h +31 -0
  170. package/include/keylockerintrin.h +518 -0
  171. package/include/larchintrin.h +262 -0
  172. package/include/lasxintrin.h +3999 -0
  173. package/include/limits.h +133 -0
  174. package/include/llvm_libc_wrappers/assert.h +32 -0
  175. package/include/llvm_libc_wrappers/ctype.h +29 -0
  176. package/include/llvm_libc_wrappers/inttypes.h +32 -0
  177. package/include/llvm_libc_wrappers/stdio.h +52 -0
  178. package/include/llvm_libc_wrappers/stdlib.h +32 -0
  179. package/include/llvm_libc_wrappers/string.h +29 -0
  180. package/include/llvm_libc_wrappers/time.h +28 -0
  181. package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  182. package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  183. package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  184. package/include/lsxintrin.h +3752 -0
  185. package/include/lwpintrin.h +136 -0
  186. package/include/lzcntintrin.h +109 -0
  187. package/include/mm3dnow.h +22 -0
  188. package/include/mm_malloc.h +67 -0
  189. package/include/mmintrin.h +1541 -0
  190. package/include/module.modulemap +375 -0
  191. package/include/movdirintrin.h +49 -0
  192. package/include/movrs_avx10_2_512intrin.h +98 -0
  193. package/include/movrs_avx10_2intrin.h +174 -0
  194. package/include/movrsintrin.h +59 -0
  195. package/include/msa.h +573 -0
  196. package/include/mwaitxintrin.h +62 -0
  197. package/include/nmmintrin.h +20 -0
  198. package/include/nvptxintrin.h +208 -0
  199. package/include/opencl-c-base.h +765 -0
  200. package/include/opencl-c.h +18737 -0
  201. package/include/openmp_wrappers/__clang_openmp_device_functions.h +118 -0
  202. package/include/openmp_wrappers/cmath +132 -0
  203. package/include/openmp_wrappers/complex +61 -0
  204. package/include/openmp_wrappers/complex.h +41 -0
  205. package/include/openmp_wrappers/complex_cmath.h +393 -0
  206. package/include/openmp_wrappers/math.h +71 -0
  207. package/include/openmp_wrappers/new +48 -0
  208. package/include/pconfigintrin.h +40 -0
  209. package/include/pkuintrin.h +34 -0
  210. package/include/pmmintrin.h +302 -0
  211. package/include/popcntintrin.h +59 -0
  212. package/include/ppc_wrappers/bmi2intrin.h +134 -0
  213. package/include/ppc_wrappers/bmiintrin.h +165 -0
  214. package/include/ppc_wrappers/emmintrin.h +2269 -0
  215. package/include/ppc_wrappers/immintrin.h +27 -0
  216. package/include/ppc_wrappers/mm_malloc.h +45 -0
  217. package/include/ppc_wrappers/mmintrin.h +1453 -0
  218. package/include/ppc_wrappers/nmmintrin.h +26 -0
  219. package/include/ppc_wrappers/pmmintrin.h +145 -0
  220. package/include/ppc_wrappers/smmintrin.h +683 -0
  221. package/include/ppc_wrappers/tmmintrin.h +453 -0
  222. package/include/ppc_wrappers/x86gprintrin.h +17 -0
  223. package/include/ppc_wrappers/x86intrin.h +28 -0
  224. package/include/ppc_wrappers/xmmintrin.h +1827 -0
  225. package/include/prfchiintrin.h +61 -0
  226. package/include/prfchwintrin.h +57 -0
  227. package/include/profile/InstrProfData.inc +1063 -0
  228. package/include/profile/instr_prof_interface.h +88 -0
  229. package/include/ptrauth.h +485 -0
  230. package/include/ptwriteintrin.h +37 -0
  231. package/include/raointintrin.h +203 -0
  232. package/include/rdpruintrin.h +57 -0
  233. package/include/rdseedintrin.h +105 -0
  234. package/include/riscv_bitmanip.h +202 -0
  235. package/include/riscv_corev_alu.h +130 -0
  236. package/include/riscv_crypto.h +178 -0
  237. package/include/riscv_mips.h +36 -0
  238. package/include/riscv_nds.h +92 -0
  239. package/include/riscv_ntlh.h +28 -0
  240. package/include/riscv_packed_simd.h +644 -0
  241. package/include/riscv_vector.h +465 -0
  242. package/include/rtmintrin.h +45 -0
  243. package/include/s390intrin.h +25 -0
  244. package/include/sanitizer/allocator_interface.h +106 -0
  245. package/include/sanitizer/asan_interface.h +398 -0
  246. package/include/sanitizer/common_interface_defs.h +507 -0
  247. package/include/sanitizer/coverage_interface.h +36 -0
  248. package/include/sanitizer/dfsan_interface.h +220 -0
  249. package/include/sanitizer/hwasan_interface.h +109 -0
  250. package/include/sanitizer/linux_syscall_hooks.h +3112 -0
  251. package/include/sanitizer/lsan_interface.h +89 -0
  252. package/include/sanitizer/msan_interface.h +135 -0
  253. package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
  254. package/include/sanitizer/rtsan_interface.h +75 -0
  255. package/include/sanitizer/safestack_interface.h +50 -0
  256. package/include/sanitizer/scudo_interface.h +38 -0
  257. package/include/sanitizer/tsan_interface.h +316 -0
  258. package/include/sanitizer/tsan_interface_atomic.h +223 -0
  259. package/include/sanitizer/tysan_interface.h +36 -0
  260. package/include/sanitizer/ubsan_interface.h +64 -0
  261. package/include/serializeintrin.h +30 -0
  262. package/include/sgxintrin.h +60 -0
  263. package/include/sha512intrin.h +200 -0
  264. package/include/shaintrin.h +190 -0
  265. package/include/sifive_vector.h +192 -0
  266. package/include/sm3intrin.h +238 -0
  267. package/include/sm4evexintrin.h +32 -0
  268. package/include/sm4intrin.h +269 -0
  269. package/include/smmintrin.h +2352 -0
  270. package/include/spirvintrin.h +167 -0
  271. package/include/stdalign.h +24 -0
  272. package/include/stdarg.h +75 -0
  273. package/include/stdatomic.h +204 -0
  274. package/include/stdbool.h +39 -0
  275. package/include/stdckdint.h +42 -0
  276. package/include/stdcountof.h +15 -0
  277. package/include/stddef.h +139 -0
  278. package/include/stddefer.h +19 -0
  279. package/include/stdint.h +835 -0
  280. package/include/stdnoreturn.h +35 -0
  281. package/include/tbmintrin.h +128 -0
  282. package/include/tgmath.h +1368 -0
  283. package/include/tmmintrin.h +779 -0
  284. package/include/tsxldtrkintrin.h +56 -0
  285. package/include/uintrintrin.h +157 -0
  286. package/include/unwind.h +332 -0
  287. package/include/usermsrintrin.h +51 -0
  288. package/include/vadefs.h +51 -0
  289. package/include/vaesintrin.h +86 -0
  290. package/include/varargs.h +16 -0
  291. package/include/vecintrin.h +12868 -0
  292. package/include/velintrin.h +71 -0
  293. package/include/velintrin_approx.h +120 -0
  294. package/include/velintrin_gen.h +1257 -0
  295. package/include/vpclmulqdqintrin.h +30 -0
  296. package/include/waitpkgintrin.h +42 -0
  297. package/include/wasm_simd128.h +2160 -0
  298. package/include/wbnoinvdintrin.h +24 -0
  299. package/include/wmmintrin.h +23 -0
  300. package/include/x86gprintrin.h +49 -0
  301. package/include/x86intrin.h +35 -0
  302. package/include/xmmintrin.h +3176 -0
  303. package/include/xopintrin.h +780 -0
  304. package/include/xsavecintrin.h +84 -0
  305. package/include/xsaveintrin.h +63 -0
  306. package/include/xsaveoptintrin.h +34 -0
  307. package/include/xsavesintrin.h +44 -0
  308. package/include/xtestintrin.h +27 -0
  309. package/include/yvals_core.h +25 -0
  310. package/include/zos_wrappers/builtins.h +18 -0
  311. package/include/zos_wrappers/grp.h +19 -0
  312. package/include/zos_wrappers/locale.h +19 -0
  313. package/include/zos_wrappers/math.h +31 -0
  314. package/include/zos_wrappers/poll.h +19 -0
  315. package/include/zos_wrappers/stdlib.h +20 -0
  316. package/include/zos_wrappers/string.h +19 -0
  317. package/include/zos_wrappers/time.h +19 -0
  318. package/include/zos_wrappers/variant.h +19 -0
  319. package/index.js +5 -0
  320. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  321. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  322. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  323. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  324. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  325. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  326. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  327. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  328. package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
  329. package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
  330. package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
  331. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  332. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  333. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  334. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  335. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  336. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  337. package/lib/darwin/libclang_rt.ios.a +0 -0
  338. package/lib/darwin/libclang_rt.iossim.a +0 -0
  339. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  340. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  341. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  342. package/lib/darwin/libclang_rt.osx.a +0 -0
  343. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  344. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  345. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  346. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  347. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  348. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  349. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  350. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  351. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  352. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  353. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  354. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  355. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  356. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  357. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  358. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  359. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  360. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  361. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  362. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  363. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  364. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  365. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  366. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  367. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  368. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  369. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  370. package/package.json +40 -1
  371. package/share/asan_ignorelist.txt +14 -0
  372. package/share/cfi_ignorelist.txt +17 -0
@@ -0,0 +1,308 @@
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
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
19
+ #define __DEFAULT_FN_ATTRS128 \
20
+ __attribute__((__always_inline__, __nodebug__, \
21
+ __target__("avx512vl,avx512vnni"), \
22
+ __min_vector_width__(128))) constexpr
23
+ #define __DEFAULT_FN_ATTRS256 \
24
+ __attribute__((__always_inline__, __nodebug__, \
25
+ __target__("avx512vl,avx512vnni"), \
26
+ __min_vector_width__(256))) constexpr
27
+ #else
28
+ #define __DEFAULT_FN_ATTRS128 \
29
+ __attribute__((__always_inline__, __nodebug__, \
30
+ __target__("avx512vl,avx512vnni"), \
31
+ __min_vector_width__(128)))
32
+ #define __DEFAULT_FN_ATTRS256 \
33
+ __attribute__((__always_inline__, __nodebug__, \
34
+ __target__("avx512vl,avx512vnni"), \
35
+ __min_vector_width__(256)))
36
+ #endif
37
+
38
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
39
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
40
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
41
+ /// in \a S, and store the packed 32-bit results in DST.
42
+ ///
43
+ /// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
44
+ ///
45
+ /// \code{.operation}
46
+ /// FOR j := 0 to 7
47
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
48
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
49
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
50
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
51
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
52
+ /// ENDFOR
53
+ /// DST[MAX:256] := 0
54
+ /// \endcode
55
+ #define _mm256_dpbusd_epi32(S, A, B) \
56
+ ((__m256i)__builtin_ia32_vpdpbusd256((__v8si)(S), (__v32qu)(A), (__v32qi)(B)))
57
+
58
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
59
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
60
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
61
+ /// in \a S using signed saturation, and store the packed 32-bit results in DST.
62
+ ///
63
+ /// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
64
+ ///
65
+ /// \code{.operation}
66
+ /// FOR j := 0 to 7
67
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
68
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
69
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
70
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
71
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
72
+ /// ENDFOR
73
+ /// DST[MAX:256] := 0
74
+ /// \endcode
75
+ #define _mm256_dpbusds_epi32(S, A, B) \
76
+ ((__m256i)__builtin_ia32_vpdpbusds256((__v8si)(S), (__v32qu)(A), \
77
+ (__v32qi)(B)))
78
+
79
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
80
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
81
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S,
82
+ /// and store the packed 32-bit results in DST.
83
+ ///
84
+ /// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
85
+ ///
86
+ /// \code{.operation}
87
+ /// FOR j := 0 to 7
88
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
89
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
90
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2
91
+ /// ENDFOR
92
+ /// DST[MAX:256] := 0
93
+ /// \endcode
94
+ #define _mm256_dpwssd_epi32(S, A, B) \
95
+ ((__m256i)__builtin_ia32_vpdpwssd256((__v8si)(S), (__v16hi)(A), (__v16hi)(B)))
96
+
97
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
98
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
99
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S
100
+ /// using signed saturation, and store the packed 32-bit results in DST.
101
+ ///
102
+ /// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
103
+ ///
104
+ /// \code{.operation}
105
+ /// FOR j := 0 to 7
106
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
107
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
108
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2)
109
+ /// ENDFOR
110
+ /// DST[MAX:256] := 0
111
+ /// \endcode
112
+ #define _mm256_dpwssds_epi32(S, A, B) \
113
+ ((__m256i)__builtin_ia32_vpdpwssds256((__v8si)(S), (__v16hi)(A), \
114
+ (__v16hi)(B)))
115
+
116
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
117
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
118
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
119
+ /// in \a S, and store the packed 32-bit results in DST.
120
+ ///
121
+ /// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
122
+ ///
123
+ /// \code{.operation}
124
+ /// FOR j := 0 to 3
125
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
126
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
127
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
128
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
129
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
130
+ /// ENDFOR
131
+ /// DST[MAX:128] := 0
132
+ /// \endcode
133
+ #define _mm_dpbusd_epi32(S, A, B) \
134
+ ((__m128i)__builtin_ia32_vpdpbusd128((__v4si)(S), (__v16qu)(A), (__v16qi)(B)))
135
+
136
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a A with
137
+ /// corresponding signed 8-bit integers in \a B, producing 4 intermediate signed
138
+ /// 16-bit results. Sum these 4 results with the corresponding 32-bit integer
139
+ /// in \a S using signed saturation, and store the packed 32-bit results in DST.
140
+ ///
141
+ /// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
142
+ ///
143
+ /// \code{.operation}
144
+ /// FOR j := 0 to 3
145
+ /// tmp1.word := Signed(ZeroExtend16(A.byte[4*j]) * SignExtend16(B.byte[4*j]))
146
+ /// tmp2.word := Signed(ZeroExtend16(A.byte[4*j+1]) * SignExtend16(B.byte[4*j+1]))
147
+ /// tmp3.word := Signed(ZeroExtend16(A.byte[4*j+2]) * SignExtend16(B.byte[4*j+2]))
148
+ /// tmp4.word := Signed(ZeroExtend16(A.byte[4*j+3]) * SignExtend16(B.byte[4*j+3]))
149
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
150
+ /// ENDFOR
151
+ /// DST[MAX:128] := 0
152
+ /// \endcode
153
+ #define _mm_dpbusds_epi32(S, A, B) \
154
+ ((__m128i)__builtin_ia32_vpdpbusds128((__v4si)(S), (__v16qu)(A), \
155
+ (__v16qi)(B)))
156
+
157
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
158
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
159
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S,
160
+ /// and store the packed 32-bit results in DST.
161
+ ///
162
+ /// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
163
+ ///
164
+ /// \code{.operation}
165
+ /// FOR j := 0 to 3
166
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
167
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
168
+ /// DST.dword[j] := S.dword[j] + tmp1 + tmp2
169
+ /// ENDFOR
170
+ /// DST[MAX:128] := 0
171
+ /// \endcode
172
+ #define _mm_dpwssd_epi32(S, A, B) \
173
+ ((__m128i)__builtin_ia32_vpdpwssd128((__v4si)(S), (__v8hi)(A), (__v8hi)(B)))
174
+
175
+ /// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a A with
176
+ /// corresponding 16-bit integers in \a B, producing 2 intermediate signed 32-bit
177
+ /// results. Sum these 2 results with the corresponding 32-bit integer in \a S
178
+ /// using signed saturation, and store the packed 32-bit results in DST.
179
+ ///
180
+ /// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
181
+ ///
182
+ /// \code{.operation}
183
+ /// FOR j := 0 to 3
184
+ /// tmp1.dword := SignExtend32(A.word[2*j]) * SignExtend32(B.word[2*j])
185
+ /// tmp2.dword := SignExtend32(A.word[2*j+1]) * SignExtend32(B.word[2*j+1])
186
+ /// DST.dword[j] := Saturate32(S.dword[j] + tmp1 + tmp2)
187
+ /// ENDFOR
188
+ /// DST[MAX:128] := 0
189
+ /// \endcode
190
+ #define _mm_dpwssds_epi32(S, A, B) \
191
+ ((__m128i)__builtin_ia32_vpdpwssds128((__v4si)(S), (__v8hi)(A), (__v8hi)(B)))
192
+
193
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
194
+ _mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
195
+ return (__m256i)__builtin_ia32_selectd_256(__U,
196
+ (__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
197
+ (__v8si)__S);
198
+ }
199
+
200
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
201
+ _mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
202
+ return (__m256i)__builtin_ia32_selectd_256(__U,
203
+ (__v8si)_mm256_dpbusd_epi32(__S, __A, __B),
204
+ (__v8si)_mm256_setzero_si256());
205
+ }
206
+
207
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
208
+ _mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
209
+ return (__m256i)__builtin_ia32_selectd_256(__U,
210
+ (__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
211
+ (__v8si)__S);
212
+ }
213
+
214
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpbusds_epi32(
215
+ __mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
216
+ return (__m256i)__builtin_ia32_selectd_256(__U,
217
+ (__v8si)_mm256_dpbusds_epi32(__S, __A, __B),
218
+ (__v8si)_mm256_setzero_si256());
219
+ }
220
+
221
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
222
+ _mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
223
+ return (__m256i)__builtin_ia32_selectd_256(__U,
224
+ (__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
225
+ (__v8si)__S);
226
+ }
227
+
228
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
229
+ _mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
230
+ return (__m256i)__builtin_ia32_selectd_256(__U,
231
+ (__v8si)_mm256_dpwssd_epi32(__S, __A, __B),
232
+ (__v8si)_mm256_setzero_si256());
233
+ }
234
+
235
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256
236
+ _mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
237
+ return (__m256i)__builtin_ia32_selectd_256(__U,
238
+ (__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
239
+ (__v8si)__S);
240
+ }
241
+
242
+ static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_dpwssds_epi32(
243
+ __mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
244
+ return (__m256i)__builtin_ia32_selectd_256(__U,
245
+ (__v8si)_mm256_dpwssds_epi32(__S, __A, __B),
246
+ (__v8si)_mm256_setzero_si256());
247
+ }
248
+
249
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
250
+ _mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
251
+ return (__m128i)__builtin_ia32_selectd_128(__U,
252
+ (__v4si)_mm_dpbusd_epi32(__S, __A, __B),
253
+ (__v4si)__S);
254
+ }
255
+
256
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
257
+ _mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
258
+ return (__m128i)__builtin_ia32_selectd_128(__U,
259
+ (__v4si)_mm_dpbusd_epi32(__S, __A, __B),
260
+ (__v4si)_mm_setzero_si128());
261
+ }
262
+
263
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
264
+ _mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
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
+ return (__m128i)__builtin_ia32_selectd_128(__U,
273
+ (__v4si)_mm_dpbusds_epi32(__S, __A, __B),
274
+ (__v4si)_mm_setzero_si128());
275
+ }
276
+
277
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
278
+ _mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
279
+ return (__m128i)__builtin_ia32_selectd_128(__U,
280
+ (__v4si)_mm_dpwssd_epi32(__S, __A, __B),
281
+ (__v4si)__S);
282
+ }
283
+
284
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
285
+ _mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
286
+ return (__m128i)__builtin_ia32_selectd_128(__U,
287
+ (__v4si)_mm_dpwssd_epi32(__S, __A, __B),
288
+ (__v4si)_mm_setzero_si128());
289
+ }
290
+
291
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
292
+ _mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
293
+ return (__m128i)__builtin_ia32_selectd_128(__U,
294
+ (__v4si)_mm_dpwssds_epi32(__S, __A, __B),
295
+ (__v4si)__S);
296
+ }
297
+
298
+ static __inline__ __m128i __DEFAULT_FN_ATTRS128
299
+ _mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
300
+ return (__m128i)__builtin_ia32_selectd_128(__U,
301
+ (__v4si)_mm_dpwssds_epi32(__S, __A, __B),
302
+ (__v4si)_mm_setzero_si128());
303
+ }
304
+
305
+ #undef __DEFAULT_FN_ATTRS128
306
+ #undef __DEFAULT_FN_ATTRS256
307
+
308
+ #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,113 @@
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
+ #if defined(__cplusplus) && (__cplusplus >= 201103L)
19
+ #define __DEFAULT_FN_ATTRS \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
21
+ __min_vector_width__(512))) constexpr
22
+ #else
23
+ #define __DEFAULT_FN_ATTRS \
24
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512vnni"), \
25
+ __min_vector_width__(512)))
26
+ #endif
27
+
28
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusd_epi32(__m512i __S,
29
+ __m512i __A,
30
+ __m512i __B) {
31
+ return (__m512i)__builtin_ia32_vpdpbusd512((__v16si)__S, (__v64qu)__A,
32
+ (__v64qi)__B);
33
+ }
34
+
35
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
36
+ _mm512_mask_dpbusd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
37
+ return (__m512i)__builtin_ia32_selectd_512(__U,
38
+ (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
39
+ (__v16si)__S);
40
+ }
41
+
42
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbusd_epi32(
43
+ __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
44
+ return (__m512i)__builtin_ia32_selectd_512(__U,
45
+ (__v16si)_mm512_dpbusd_epi32(__S, __A, __B),
46
+ (__v16si)_mm512_setzero_si512());
47
+ }
48
+
49
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpbusds_epi32(__m512i __S,
50
+ __m512i __A,
51
+ __m512i __B) {
52
+ return (__m512i)__builtin_ia32_vpdpbusds512((__v16si)__S, (__v64qu)__A,
53
+ (__v64qi)__B);
54
+ }
55
+
56
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpbusds_epi32(
57
+ __m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
58
+ return (__m512i)__builtin_ia32_selectd_512(__U,
59
+ (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
60
+ (__v16si)__S);
61
+ }
62
+
63
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpbusds_epi32(
64
+ __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
65
+ return (__m512i)__builtin_ia32_selectd_512(__U,
66
+ (__v16si)_mm512_dpbusds_epi32(__S, __A, __B),
67
+ (__v16si)_mm512_setzero_si512());
68
+ }
69
+
70
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_dpwssd_epi32(__m512i __S,
71
+ __m512i __A,
72
+ __m512i __B) {
73
+ return (__m512i)__builtin_ia32_vpdpwssd512((__v16si)__S, (__v32hi)__A,
74
+ (__v32hi)__B);
75
+ }
76
+
77
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
78
+ _mm512_mask_dpwssd_epi32(__m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
79
+ return (__m512i)__builtin_ia32_selectd_512(__U,
80
+ (__v16si)_mm512_dpwssd_epi32(__S, __A, __B),
81
+ (__v16si)__S);
82
+ }
83
+
84
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwssd_epi32(
85
+ __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
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 _mm512_dpwssds_epi32(__m512i __S,
92
+ __m512i __A,
93
+ __m512i __B) {
94
+ return (__m512i)__builtin_ia32_vpdpwssds512((__v16si)__S, (__v32hi)__A,
95
+ (__v32hi)__B);
96
+ }
97
+
98
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_dpwssds_epi32(
99
+ __m512i __S, __mmask16 __U, __m512i __A, __m512i __B) {
100
+ return (__m512i)__builtin_ia32_selectd_512(__U,
101
+ (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
102
+ (__v16si)__S);
103
+ }
104
+
105
+ static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_dpwssds_epi32(
106
+ __mmask16 __U, __m512i __S, __m512i __A, __m512i __B) {
107
+ return (__m512i)__builtin_ia32_selectd_512(__U,
108
+ (__v16si)_mm512_dpwssds_epi32(__S, __A, __B),
109
+ (__v16si)_mm512_setzero_si512());
110
+ }
111
+
112
+ #undef __DEFAULT_FN_ATTRS
113
+ #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 <avx512vp2intersectintrin.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