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.
- package/LICENSE +201 -0
- package/NOTICE +33 -0
- package/include/__clang_cuda_builtin_vars.h +121 -0
- package/include/__clang_cuda_cmath.h +512 -0
- package/include/__clang_cuda_complex_builtins.h +236 -0
- package/include/__clang_cuda_device_functions.h +1572 -0
- package/include/__clang_cuda_intrinsics.h +975 -0
- package/include/__clang_cuda_libdevice_declares.h +468 -0
- package/include/__clang_cuda_math.h +353 -0
- package/include/__clang_cuda_math_forward_declares.h +289 -0
- package/include/__clang_cuda_runtime_wrapper.h +526 -0
- package/include/__clang_cuda_texture_intrinsics.h +1177 -0
- package/include/__clang_gpu_builtin_vars.h +71 -0
- package/include/__clang_gpu_device_functions.h +411 -0
- package/include/__clang_gpu_intrinsics.h +242 -0
- package/include/__clang_hip_cmath.h +848 -0
- package/include/__clang_hip_libdevice_declares.h +238 -0
- package/include/__clang_hip_math.h +1405 -0
- package/include/__clang_hip_runtime_wrapper.h +170 -0
- package/include/__clang_hip_stdlib.h +43 -0
- package/include/__clang_spirv_builtins.h +217 -0
- package/include/__clang_spirv_libdevice_declares.h +170 -0
- package/include/__clang_spirv_math.h +719 -0
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/__stdarg___gnuc_va_list.h +13 -0
- package/include/__stdarg___va_copy.h +12 -0
- package/include/__stdarg_header_macro.h +12 -0
- package/include/__stdarg_va_arg.h +22 -0
- package/include/__stdarg_va_copy.h +12 -0
- package/include/__stdarg_va_list.h +13 -0
- package/include/__stddef_header_macro.h +12 -0
- package/include/__stddef_max_align_t.h +27 -0
- package/include/__stddef_null.h +29 -0
- package/include/__stddef_nullptr_t.h +29 -0
- package/include/__stddef_offsetof.h +17 -0
- package/include/__stddef_ptrdiff_t.h +20 -0
- package/include/__stddef_rsize_t.h +20 -0
- package/include/__stddef_size_t.h +20 -0
- package/include/__stddef_unreachable.h +21 -0
- package/include/__stddef_wchar_t.h +28 -0
- package/include/__stddef_wint_t.h +15 -0
- package/include/__wmmintrin_aes.h +140 -0
- package/include/__wmmintrin_pclmul.h +48 -0
- package/include/adcintrin.h +165 -0
- package/include/adxintrin.h +107 -0
- package/include/altivec.h +19434 -0
- package/include/amdgpuintrin.h +164 -0
- package/include/amdhsa_abi.h +83 -0
- package/include/ammintrin.h +183 -0
- package/include/amo.h +220 -0
- package/include/amxavx512intrin.h +596 -0
- package/include/amxcomplexintrin.h +167 -0
- package/include/amxfp16intrin.h +93 -0
- package/include/amxfp8intrin.h +230 -0
- package/include/amxintrin.h +492 -0
- package/include/amxmovrsintrin.h +48 -0
- package/include/andes_vector.h +21 -0
- package/include/arm64_neon.h +21 -0
- package/include/arm64intr.h +45 -0
- package/include/arm_acle.h +866 -0
- package/include/arm_bf16.h +20 -0
- package/include/arm_cde.h +410 -0
- package/include/arm_cmse.h +217 -0
- package/include/arm_fp16.h +596 -0
- package/include/arm_mve.h +19187 -0
- package/include/arm_neon.h +74351 -0
- package/include/arm_neon_sve_bridge.h +182 -0
- package/include/arm_sme.h +3753 -0
- package/include/arm_sve.h +32698 -0
- package/include/arm_vector_types.h +432 -0
- package/include/armintr.h +31 -0
- package/include/avx10_2_512bf16intrin.h +568 -0
- package/include/avx10_2_512convertintrin.h +322 -0
- package/include/avx10_2_512minmaxintrin.h +127 -0
- package/include/avx10_2_512niintrin.h +314 -0
- package/include/avx10_2_512satcvtdsintrin.h +307 -0
- package/include/avx10_2_512satcvtintrin.h +301 -0
- package/include/avx10_2bf16intrin.h +1094 -0
- package/include/avx10_2convertintrin.h +3257 -0
- package/include/avx10_2copyintrin.h +66 -0
- package/include/avx10_2minmaxintrin.h +232 -0
- package/include/avx10_2niintrin.h +409 -0
- package/include/avx10_2satcvtdsintrin.h +376 -0
- package/include/avx10_2satcvtintrin.h +312 -0
- package/include/avx2intrin.h +5190 -0
- package/include/avx512bf16intrin.h +292 -0
- package/include/avx512bitalgintrin.h +75 -0
- package/include/avx512bmmintrin.h +174 -0
- package/include/avx512bmmvlintrin.h +245 -0
- package/include/avx512bwintrin.h +1885 -0
- package/include/avx512cdintrin.h +112 -0
- package/include/avx512dqintrin.h +1350 -0
- package/include/avx512fintrin.h +9351 -0
- package/include/avx512fp16intrin.h +3349 -0
- package/include/avx512ifmaintrin.h +68 -0
- package/include/avx512ifmavlintrin.h +138 -0
- package/include/avx512vbmi2intrin.h +364 -0
- package/include/avx512vbmiintrin.h +98 -0
- package/include/avx512vbmivlintrin.h +179 -0
- package/include/avx512vlbf16intrin.h +527 -0
- package/include/avx512vlbitalgintrin.h +135 -0
- package/include/avx512vlbwintrin.h +3052 -0
- package/include/avx512vlcdintrin.h +202 -0
- package/include/avx512vldqintrin.h +1156 -0
- package/include/avx512vlfp16intrin.h +2090 -0
- package/include/avx512vlintrin.h +8067 -0
- package/include/avx512vlvbmi2intrin.h +702 -0
- package/include/avx512vlvnniintrin.h +308 -0
- package/include/avx512vlvp2intersectintrin.h +123 -0
- package/include/avx512vnniintrin.h +113 -0
- package/include/avx512vp2intersectintrin.h +77 -0
- package/include/avx512vpopcntdqintrin.h +62 -0
- package/include/avx512vpopcntdqvlintrin.h +105 -0
- package/include/avxifmaintrin.h +193 -0
- package/include/avxintrin.h +5064 -0
- package/include/avxneconvertintrin.h +484 -0
- package/include/avxvnniint16intrin.h +451 -0
- package/include/avxvnniint8intrin.h +454 -0
- package/include/avxvnniintrin.h +238 -0
- package/include/bmi2intrin.h +253 -0
- package/include/bmiintrin.h +604 -0
- package/include/builtins.h +19 -0
- package/include/cet.h +66 -0
- package/include/cetintrin.h +115 -0
- package/include/cldemoteintrin.h +36 -0
- package/include/clflushoptintrin.h +36 -0
- package/include/clwbintrin.h +38 -0
- package/include/clzerointrin.h +38 -0
- package/include/cmpccxaddintrin.h +70 -0
- package/include/cpuid.h +451 -0
- package/include/crc32intrin.h +102 -0
- package/include/cuda_wrappers/__utility/declval.h +28 -0
- package/include/cuda_wrappers/algorithm +116 -0
- package/include/cuda_wrappers/bits/basic_string.h +9 -0
- package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
- package/include/cuda_wrappers/bits/c++config.h +61 -0
- package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
- package/include/cuda_wrappers/cmath +44 -0
- package/include/cuda_wrappers/complex +90 -0
- package/include/cuda_wrappers/new +108 -0
- package/include/emmintrin.h +4940 -0
- package/include/endian.h +91 -0
- package/include/enqcmdintrin.h +63 -0
- package/include/f16cintrin.h +176 -0
- package/include/float.h +48 -0
- package/include/fma4intrin.h +220 -0
- package/include/fmaintrin.h +826 -0
- package/include/fuzzer/FuzzedDataProvider.h +397 -0
- package/include/fxsrintrin.h +91 -0
- package/include/gfniintrin.h +238 -0
- package/include/gpuintrin.h +348 -0
- package/include/hexagon_circ_brev_intrinsics.h +298 -0
- package/include/hexagon_protos.h +8439 -0
- package/include/hexagon_types.h +2628 -0
- package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
- package/include/hlsl_inline_intrinsics_gen.inc +546 -0
- package/include/hresetintrin.h +49 -0
- package/include/htmintrin.h +212 -0
- package/include/htmxlintrin.h +345 -0
- package/include/hvx_hexagon_protos.h +5421 -0
- package/include/ia32intrin.h +863 -0
- package/include/immintrin.h +597 -0
- package/include/intrin.h +501 -0
- package/include/intrin0.h +256 -0
- package/include/inttypes.h +101 -0
- package/include/invpcidintrin.h +23 -0
- package/include/iso646.h +31 -0
- package/include/keylockerintrin.h +518 -0
- package/include/larchintrin.h +262 -0
- package/include/lasxintrin.h +3999 -0
- package/include/limits.h +133 -0
- package/include/llvm_libc_wrappers/assert.h +32 -0
- package/include/llvm_libc_wrappers/ctype.h +29 -0
- package/include/llvm_libc_wrappers/inttypes.h +32 -0
- package/include/llvm_libc_wrappers/stdio.h +52 -0
- package/include/llvm_libc_wrappers/stdlib.h +32 -0
- package/include/llvm_libc_wrappers/string.h +29 -0
- package/include/llvm_libc_wrappers/time.h +28 -0
- package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/include/lsxintrin.h +3752 -0
- package/include/lwpintrin.h +136 -0
- package/include/lzcntintrin.h +109 -0
- package/include/mm3dnow.h +22 -0
- package/include/mm_malloc.h +67 -0
- package/include/mmintrin.h +1541 -0
- package/include/module.modulemap +375 -0
- package/include/movdirintrin.h +49 -0
- package/include/movrs_avx10_2_512intrin.h +98 -0
- package/include/movrs_avx10_2intrin.h +174 -0
- package/include/movrsintrin.h +59 -0
- package/include/msa.h +573 -0
- package/include/mwaitxintrin.h +62 -0
- package/include/nmmintrin.h +20 -0
- package/include/nvptxintrin.h +208 -0
- package/include/opencl-c-base.h +765 -0
- package/include/opencl-c.h +18737 -0
- package/include/openmp_wrappers/__clang_openmp_device_functions.h +118 -0
- package/include/openmp_wrappers/cmath +132 -0
- package/include/openmp_wrappers/complex +61 -0
- package/include/openmp_wrappers/complex.h +41 -0
- package/include/openmp_wrappers/complex_cmath.h +393 -0
- package/include/openmp_wrappers/math.h +71 -0
- package/include/openmp_wrappers/new +48 -0
- package/include/pconfigintrin.h +40 -0
- package/include/pkuintrin.h +34 -0
- package/include/pmmintrin.h +302 -0
- package/include/popcntintrin.h +59 -0
- package/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/include/ppc_wrappers/bmiintrin.h +165 -0
- package/include/ppc_wrappers/emmintrin.h +2269 -0
- package/include/ppc_wrappers/immintrin.h +27 -0
- package/include/ppc_wrappers/mm_malloc.h +45 -0
- package/include/ppc_wrappers/mmintrin.h +1453 -0
- package/include/ppc_wrappers/nmmintrin.h +26 -0
- package/include/ppc_wrappers/pmmintrin.h +145 -0
- package/include/ppc_wrappers/smmintrin.h +683 -0
- package/include/ppc_wrappers/tmmintrin.h +453 -0
- package/include/ppc_wrappers/x86gprintrin.h +17 -0
- package/include/ppc_wrappers/x86intrin.h +28 -0
- package/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/include/prfchiintrin.h +61 -0
- package/include/prfchwintrin.h +57 -0
- package/include/profile/InstrProfData.inc +1063 -0
- package/include/profile/instr_prof_interface.h +88 -0
- package/include/ptrauth.h +485 -0
- package/include/ptwriteintrin.h +37 -0
- package/include/raointintrin.h +203 -0
- package/include/rdpruintrin.h +57 -0
- package/include/rdseedintrin.h +105 -0
- package/include/riscv_bitmanip.h +202 -0
- package/include/riscv_corev_alu.h +130 -0
- package/include/riscv_crypto.h +178 -0
- package/include/riscv_mips.h +36 -0
- package/include/riscv_nds.h +92 -0
- package/include/riscv_ntlh.h +28 -0
- package/include/riscv_packed_simd.h +644 -0
- package/include/riscv_vector.h +465 -0
- package/include/rtmintrin.h +45 -0
- package/include/s390intrin.h +25 -0
- package/include/sanitizer/allocator_interface.h +106 -0
- package/include/sanitizer/asan_interface.h +398 -0
- package/include/sanitizer/common_interface_defs.h +507 -0
- package/include/sanitizer/coverage_interface.h +36 -0
- package/include/sanitizer/dfsan_interface.h +220 -0
- package/include/sanitizer/hwasan_interface.h +109 -0
- package/include/sanitizer/linux_syscall_hooks.h +3112 -0
- package/include/sanitizer/lsan_interface.h +89 -0
- package/include/sanitizer/msan_interface.h +135 -0
- package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
- package/include/sanitizer/rtsan_interface.h +75 -0
- package/include/sanitizer/safestack_interface.h +50 -0
- package/include/sanitizer/scudo_interface.h +38 -0
- package/include/sanitizer/tsan_interface.h +316 -0
- package/include/sanitizer/tsan_interface_atomic.h +223 -0
- package/include/sanitizer/tysan_interface.h +36 -0
- package/include/sanitizer/ubsan_interface.h +64 -0
- package/include/serializeintrin.h +30 -0
- package/include/sgxintrin.h +60 -0
- package/include/sha512intrin.h +200 -0
- package/include/shaintrin.h +190 -0
- package/include/sifive_vector.h +192 -0
- package/include/sm3intrin.h +238 -0
- package/include/sm4evexintrin.h +32 -0
- package/include/sm4intrin.h +269 -0
- package/include/smmintrin.h +2352 -0
- package/include/spirvintrin.h +167 -0
- package/include/stdalign.h +24 -0
- package/include/stdarg.h +75 -0
- package/include/stdatomic.h +204 -0
- package/include/stdbool.h +39 -0
- package/include/stdckdint.h +42 -0
- package/include/stdcountof.h +15 -0
- package/include/stddef.h +139 -0
- package/include/stddefer.h +19 -0
- package/include/stdint.h +835 -0
- package/include/stdnoreturn.h +35 -0
- package/include/tbmintrin.h +128 -0
- package/include/tgmath.h +1368 -0
- package/include/tmmintrin.h +779 -0
- package/include/tsxldtrkintrin.h +56 -0
- package/include/uintrintrin.h +157 -0
- package/include/unwind.h +332 -0
- package/include/usermsrintrin.h +51 -0
- package/include/vadefs.h +51 -0
- package/include/vaesintrin.h +86 -0
- package/include/varargs.h +16 -0
- package/include/vecintrin.h +12868 -0
- package/include/velintrin.h +71 -0
- package/include/velintrin_approx.h +120 -0
- package/include/velintrin_gen.h +1257 -0
- package/include/vpclmulqdqintrin.h +30 -0
- package/include/waitpkgintrin.h +42 -0
- package/include/wasm_simd128.h +2160 -0
- package/include/wbnoinvdintrin.h +24 -0
- package/include/wmmintrin.h +23 -0
- package/include/x86gprintrin.h +49 -0
- package/include/x86intrin.h +35 -0
- package/include/xmmintrin.h +3176 -0
- package/include/xopintrin.h +780 -0
- package/include/xsavecintrin.h +84 -0
- package/include/xsaveintrin.h +63 -0
- package/include/xsaveoptintrin.h +34 -0
- package/include/xsavesintrin.h +44 -0
- package/include/xtestintrin.h +27 -0
- package/include/yvals_core.h +25 -0
- package/include/zos_wrappers/builtins.h +18 -0
- package/include/zos_wrappers/grp.h +19 -0
- package/include/zos_wrappers/locale.h +19 -0
- package/include/zos_wrappers/math.h +31 -0
- package/include/zos_wrappers/poll.h +19 -0
- package/include/zos_wrappers/stdlib.h +20 -0
- package/include/zos_wrappers/string.h +19 -0
- package/include/zos_wrappers/time.h +19 -0
- package/include/zos_wrappers/variant.h +19 -0
- package/index.js +5 -0
- package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
- package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
- package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
- package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.cc_kext.a +0 -0
- package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
- package/lib/darwin/libclang_rt.ios.a +0 -0
- package/lib/darwin/libclang_rt.iossim.a +0 -0
- package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.osx.a +0 -0
- package/lib/darwin/libclang_rt.profile_ios.a +0 -0
- package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
- package/lib/darwin/libclang_rt.profile_osx.a +0 -0
- package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
- package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
- package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
- package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
- package/package.json +40 -1
- package/share/asan_ignorelist.txt +14 -0
- package/share/cfi_ignorelist.txt +17 -0
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
/*===----------- avxvnniint16intrin.h - AVXVNNIINT16 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
|
+
|
|
10
|
+
#ifndef __IMMINTRIN_H
|
|
11
|
+
#error \
|
|
12
|
+
"Never use <avxvnniint16intrin.h> directly; include <immintrin.h> instead."
|
|
13
|
+
#endif // __IMMINTRIN_H
|
|
14
|
+
|
|
15
|
+
#ifndef __AVXVNNIINT16INTRIN_H
|
|
16
|
+
#define __AVXVNNIINT16INTRIN_H
|
|
17
|
+
|
|
18
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
19
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
20
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
21
|
+
/// corresponding 32-bit integer in \a __W, and store the packed 32-bit
|
|
22
|
+
/// results in \a dst.
|
|
23
|
+
///
|
|
24
|
+
/// \headerfile <immintrin.h>
|
|
25
|
+
///
|
|
26
|
+
/// \code
|
|
27
|
+
/// __m128i _mm_dpwsud_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
28
|
+
/// \endcode
|
|
29
|
+
///
|
|
30
|
+
/// This intrinsic corresponds to the \c VPDPWSUD instruction.
|
|
31
|
+
///
|
|
32
|
+
/// \param __W
|
|
33
|
+
/// A 128-bit vector of [4 x int].
|
|
34
|
+
/// \param __A
|
|
35
|
+
/// A 128-bit vector of [8 x short].
|
|
36
|
+
/// \param __B
|
|
37
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
38
|
+
/// \returns
|
|
39
|
+
/// A 128-bit vector of [4 x int].
|
|
40
|
+
///
|
|
41
|
+
/// \code{.operation}
|
|
42
|
+
/// FOR j := 0 to 3
|
|
43
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
44
|
+
/// tmp2.dword :=
|
|
45
|
+
/// SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
46
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
47
|
+
/// ENDFOR
|
|
48
|
+
/// dst[MAX:128] := 0
|
|
49
|
+
/// \endcode
|
|
50
|
+
#define _mm_dpwsud_epi32(__W, __A, __B) \
|
|
51
|
+
((__m128i)__builtin_ia32_vpdpwsud128((__v4si)(__W), (__v8hi)(__A), \
|
|
52
|
+
(__v8hu)(__B)))
|
|
53
|
+
|
|
54
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
55
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
56
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
57
|
+
/// corresponding 32-bit integer in \a __W, and store the packed 32-bit
|
|
58
|
+
/// results in \a dst.
|
|
59
|
+
///
|
|
60
|
+
/// \headerfile <immintrin.h>
|
|
61
|
+
///
|
|
62
|
+
/// \code
|
|
63
|
+
/// __m256i _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
64
|
+
/// \endcode
|
|
65
|
+
///
|
|
66
|
+
/// This intrinsic corresponds to the \c VPDPWSUD instruction.
|
|
67
|
+
///
|
|
68
|
+
/// \param __W
|
|
69
|
+
/// A 256-bit vector of [8 x int].
|
|
70
|
+
/// \param __A
|
|
71
|
+
/// A 256-bit vector of [16 x short].
|
|
72
|
+
/// \param __B
|
|
73
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
74
|
+
/// \returns
|
|
75
|
+
/// A 256-bit vector of [8 x int].
|
|
76
|
+
///
|
|
77
|
+
/// \code{.operation}
|
|
78
|
+
/// FOR j := 0 to 7
|
|
79
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
80
|
+
/// tmp2.dword :=
|
|
81
|
+
/// SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
82
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
83
|
+
/// ENDFOR
|
|
84
|
+
/// dst[MAX:256] := 0
|
|
85
|
+
/// \endcode
|
|
86
|
+
#define _mm256_dpwsud_epi32(__W, __A, __B) \
|
|
87
|
+
((__m256i)__builtin_ia32_vpdpwsud256((__v8si)(__W), (__v16hi)(__A), \
|
|
88
|
+
(__v16hu)(__B)))
|
|
89
|
+
|
|
90
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
91
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
92
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
93
|
+
/// corresponding 32-bit integer in \a __W with signed saturation, and store
|
|
94
|
+
/// the packed 32-bit results in \a dst.
|
|
95
|
+
///
|
|
96
|
+
/// \headerfile <immintrin.h>
|
|
97
|
+
///
|
|
98
|
+
/// \code
|
|
99
|
+
/// __m128i _mm_dpwsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
100
|
+
/// \endcode
|
|
101
|
+
///
|
|
102
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
103
|
+
///
|
|
104
|
+
/// \param __W
|
|
105
|
+
/// A 128-bit vector of [4 x int].
|
|
106
|
+
/// \param __A
|
|
107
|
+
/// A 128-bit vector of [8 x short].
|
|
108
|
+
/// \param __B
|
|
109
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
110
|
+
/// \returns
|
|
111
|
+
/// A 128-bit vector of [4 x int].
|
|
112
|
+
///
|
|
113
|
+
/// \code{.operation}
|
|
114
|
+
/// FOR j := 0 to 3
|
|
115
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
116
|
+
/// tmp2.dword :=
|
|
117
|
+
/// SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
118
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
119
|
+
/// ENDFOR
|
|
120
|
+
/// dst[MAX:128] := 0
|
|
121
|
+
/// \endcode
|
|
122
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
123
|
+
#define _mm_dpwsuds_epi32(__W, __A, __B) \
|
|
124
|
+
((__m128i)__builtin_ia32_vpdpwsuds128((__v4si)(__W), (__v8hi)(__A), \
|
|
125
|
+
(__v8hu)(__B)))
|
|
126
|
+
|
|
127
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
128
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
129
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
130
|
+
/// corresponding 32-bit integer in \a __W with signed saturation, and store
|
|
131
|
+
/// the packed 32-bit results in \a dst.
|
|
132
|
+
///
|
|
133
|
+
/// \headerfile <immintrin.h>
|
|
134
|
+
///
|
|
135
|
+
/// \code
|
|
136
|
+
/// __m256i _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
137
|
+
/// \endcode
|
|
138
|
+
///
|
|
139
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
140
|
+
///
|
|
141
|
+
/// \param __W
|
|
142
|
+
/// A 256-bit vector of [8 x int].
|
|
143
|
+
/// \param __A
|
|
144
|
+
/// A 256-bit vector of [16 x short].
|
|
145
|
+
/// \param __B
|
|
146
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
147
|
+
/// \returns
|
|
148
|
+
/// A 256-bit vector of [8 x int].
|
|
149
|
+
///
|
|
150
|
+
/// \code{.operation}
|
|
151
|
+
/// FOR j := 0 to 7
|
|
152
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
153
|
+
/// tmp2.dword :=
|
|
154
|
+
/// SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
155
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
156
|
+
/// ENDFOR
|
|
157
|
+
/// dst[MAX:256] := 0
|
|
158
|
+
/// \endcode
|
|
159
|
+
#define _mm256_dpwsuds_epi32(__W, __A, __B) \
|
|
160
|
+
((__m256i)__builtin_ia32_vpdpwsuds256((__v8si)(__W), (__v16hi)(__A), \
|
|
161
|
+
(__v16hu)(__B)))
|
|
162
|
+
|
|
163
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
164
|
+
/// with corresponding signed 16-bit integers in \a __B, producing 2
|
|
165
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
166
|
+
/// corresponding 32-bit integer in \a __W, and store the packed 32-bit
|
|
167
|
+
/// results in \a dst.
|
|
168
|
+
///
|
|
169
|
+
/// \headerfile <immintrin.h>
|
|
170
|
+
///
|
|
171
|
+
/// \code
|
|
172
|
+
/// __m128i _mm_dpbusd_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
173
|
+
/// \endcode
|
|
174
|
+
///
|
|
175
|
+
/// This intrinsic corresponds to the \c VPDPWUSD instruction.
|
|
176
|
+
///
|
|
177
|
+
/// \param __W
|
|
178
|
+
/// A 128-bit vector of [4 x int].
|
|
179
|
+
/// \param __A
|
|
180
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
181
|
+
/// \param __B
|
|
182
|
+
/// A 128-bit vector of [8 x short].
|
|
183
|
+
/// \returns
|
|
184
|
+
/// A 128-bit vector of [4 x int].
|
|
185
|
+
///
|
|
186
|
+
/// \code{.operation}
|
|
187
|
+
/// FOR j := 0 to 3
|
|
188
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
189
|
+
/// tmp2.dword :=
|
|
190
|
+
/// ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
191
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
192
|
+
/// ENDFOR
|
|
193
|
+
/// dst[MAX:128] := 0
|
|
194
|
+
/// \endcode
|
|
195
|
+
#define _mm_dpwusd_epi32(__W, __A, __B) \
|
|
196
|
+
((__m128i)__builtin_ia32_vpdpwusd128((__v4si)(__W), (__v8hu)(__A), \
|
|
197
|
+
(__v8hi)(__B)))
|
|
198
|
+
|
|
199
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
200
|
+
/// with corresponding signed 16-bit integers in \a __B, producing 2
|
|
201
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
202
|
+
/// corresponding 32-bit integer in \a __W, and store the packed 32-bit
|
|
203
|
+
/// results in \a dst.
|
|
204
|
+
///
|
|
205
|
+
/// \headerfile <immintrin.h>
|
|
206
|
+
///
|
|
207
|
+
/// \code
|
|
208
|
+
/// __m256i _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
209
|
+
/// \endcode
|
|
210
|
+
///
|
|
211
|
+
/// This intrinsic corresponds to the \c VPDPWUSD instruction.
|
|
212
|
+
///
|
|
213
|
+
/// \param __W
|
|
214
|
+
/// A 256-bit vector of [8 x int].
|
|
215
|
+
/// \param __A
|
|
216
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
217
|
+
/// \param __B
|
|
218
|
+
/// A 256-bit vector of [16 x short].
|
|
219
|
+
/// \returns
|
|
220
|
+
/// A 256-bit vector of [8 x int].
|
|
221
|
+
///
|
|
222
|
+
/// \code{.operation}
|
|
223
|
+
/// FOR j := 0 to 7
|
|
224
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
225
|
+
/// tmp2.dword :=
|
|
226
|
+
/// ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
227
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
228
|
+
/// ENDFOR
|
|
229
|
+
/// dst[MAX:256] := 0
|
|
230
|
+
/// \endcode
|
|
231
|
+
#define _mm256_dpwusd_epi32(__W, __A, __B) \
|
|
232
|
+
((__m256i)__builtin_ia32_vpdpwusd256((__v8si)(__W), (__v16hu)(__A), \
|
|
233
|
+
(__v16hi)(__B)))
|
|
234
|
+
|
|
235
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
236
|
+
/// with corresponding signed 16-bit integers in \a __B, producing 2
|
|
237
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
238
|
+
/// corresponding 32-bit integer in \a __W with signed saturation, and
|
|
239
|
+
/// store the packed 32-bit results in \a dst.
|
|
240
|
+
///
|
|
241
|
+
/// \headerfile <immintrin.h>
|
|
242
|
+
///
|
|
243
|
+
/// \code
|
|
244
|
+
/// __m128i _mm_dpwusds_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
245
|
+
/// \endcode
|
|
246
|
+
///
|
|
247
|
+
/// This intrinsic corresponds to the \c VPDPWUSDS instruction.
|
|
248
|
+
///
|
|
249
|
+
/// \param __W
|
|
250
|
+
/// A 128-bit vector of [4 x int].
|
|
251
|
+
/// \param __A
|
|
252
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
253
|
+
/// \param __B
|
|
254
|
+
/// A 128-bit vector of [8 x short].
|
|
255
|
+
/// \returns
|
|
256
|
+
/// A 128-bit vector of [4 x int].
|
|
257
|
+
///
|
|
258
|
+
/// \code{.operation}
|
|
259
|
+
/// FOR j := 0 to 3
|
|
260
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
261
|
+
/// tmp2.dword :=
|
|
262
|
+
/// ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
263
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
264
|
+
/// ENDFOR
|
|
265
|
+
/// dst[MAX:128] := 0
|
|
266
|
+
/// \endcode
|
|
267
|
+
#define _mm_dpwusds_epi32(__W, __A, __B) \
|
|
268
|
+
((__m128i)__builtin_ia32_vpdpwusds128((__v4si)(__W), (__v8hu)(__A), \
|
|
269
|
+
(__v8hi)(__B)))
|
|
270
|
+
|
|
271
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
272
|
+
/// with corresponding signed 16-bit integers in \a __B, producing 2
|
|
273
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
274
|
+
/// corresponding 32-bit integer in \a __W with signed saturation, and
|
|
275
|
+
/// store the packed 32-bit results in \a dst.
|
|
276
|
+
///
|
|
277
|
+
/// \headerfile <immintrin.h>
|
|
278
|
+
///
|
|
279
|
+
/// \code
|
|
280
|
+
/// __m256i _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
281
|
+
/// \endcode
|
|
282
|
+
///
|
|
283
|
+
/// This intrinsic corresponds to the \c VPDPWUSDS instruction.
|
|
284
|
+
///
|
|
285
|
+
/// \param __W
|
|
286
|
+
/// A 256-bit vector of [8 x int].
|
|
287
|
+
/// \param __A
|
|
288
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
289
|
+
/// \param __B
|
|
290
|
+
/// A 256-bit vector of [16 x short].
|
|
291
|
+
/// \returns
|
|
292
|
+
/// A 256-bit vector of [8 x int].
|
|
293
|
+
///
|
|
294
|
+
/// \code{.operation}
|
|
295
|
+
/// FOR j := 0 to 7
|
|
296
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
297
|
+
/// tmp2.dword :=
|
|
298
|
+
/// ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
299
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
300
|
+
/// ENDFOR
|
|
301
|
+
/// dst[MAX:256] := 0
|
|
302
|
+
/// \endcode
|
|
303
|
+
#define _mm256_dpwusds_epi32(__W, __A, __B) \
|
|
304
|
+
((__m256i)__builtin_ia32_vpdpwusds256((__v8si)(__W), (__v16hu)(__A), \
|
|
305
|
+
(__v16hi)(__B)))
|
|
306
|
+
|
|
307
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
308
|
+
/// with corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
309
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
310
|
+
/// corresponding 32-bit integer in \a __W, and store the packed 32-bit
|
|
311
|
+
/// results in \a dst.
|
|
312
|
+
///
|
|
313
|
+
/// \headerfile <immintrin.h>
|
|
314
|
+
///
|
|
315
|
+
/// \code
|
|
316
|
+
/// __m128i _mm_dpwuud_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
317
|
+
/// \endcode
|
|
318
|
+
///
|
|
319
|
+
/// This intrinsic corresponds to the \c VPDPWUUD instruction.
|
|
320
|
+
///
|
|
321
|
+
/// \param __W
|
|
322
|
+
/// A 128-bit vector of [4 x int].
|
|
323
|
+
/// \param __A
|
|
324
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
325
|
+
/// \param __B
|
|
326
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
327
|
+
/// \returns
|
|
328
|
+
/// A 128-bit vector of [4 x int].
|
|
329
|
+
///
|
|
330
|
+
/// \code{.operation}
|
|
331
|
+
/// FOR j := 0 to 3
|
|
332
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
333
|
+
/// tmp2.dword :=
|
|
334
|
+
/// ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
335
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
336
|
+
/// ENDFOR
|
|
337
|
+
/// dst[MAX:128] := 0
|
|
338
|
+
/// \endcode
|
|
339
|
+
#define _mm_dpwuud_epi32(__W, __A, __B) \
|
|
340
|
+
((__m128i)__builtin_ia32_vpdpwuud128((__v4si)(__W), (__v8hu)(__A), \
|
|
341
|
+
(__v8hu)(__B)))
|
|
342
|
+
|
|
343
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
344
|
+
/// with corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
345
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
346
|
+
/// corresponding 32-bit integer in \a __W, and store the packed 32-bit
|
|
347
|
+
/// results in \a dst.
|
|
348
|
+
///
|
|
349
|
+
/// \headerfile <immintrin.h>
|
|
350
|
+
///
|
|
351
|
+
/// \code
|
|
352
|
+
/// __m256i _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
353
|
+
/// \endcode
|
|
354
|
+
///
|
|
355
|
+
/// This intrinsic corresponds to the \c VPDPWUUD instruction.
|
|
356
|
+
///
|
|
357
|
+
/// \param __W
|
|
358
|
+
/// A 256-bit vector of [8 x int].
|
|
359
|
+
/// \param __A
|
|
360
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
361
|
+
/// \param __B
|
|
362
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
363
|
+
/// \returns
|
|
364
|
+
/// A 256-bit vector of [8 x int].
|
|
365
|
+
///
|
|
366
|
+
/// \code{.operation}
|
|
367
|
+
/// FOR j := 0 to 7
|
|
368
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
369
|
+
/// tmp2.dword :=
|
|
370
|
+
/// ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
371
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
372
|
+
/// ENDFOR
|
|
373
|
+
/// dst[MAX:256] := 0
|
|
374
|
+
/// \endcode
|
|
375
|
+
#define _mm256_dpwuud_epi32(__W, __A, __B) \
|
|
376
|
+
((__m256i)__builtin_ia32_vpdpwuud256((__v8si)(__W), (__v16hu)(__A), \
|
|
377
|
+
(__v16hu)(__B)))
|
|
378
|
+
|
|
379
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
380
|
+
/// with corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
381
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
382
|
+
/// corresponding 32-bit integer in \a __W with signed saturation, and store
|
|
383
|
+
/// the packed 32-bit results in \a dst.
|
|
384
|
+
///
|
|
385
|
+
/// \headerfile <immintrin.h>
|
|
386
|
+
///
|
|
387
|
+
/// \code
|
|
388
|
+
/// __m128i _mm_dpwsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
389
|
+
/// \endcode
|
|
390
|
+
///
|
|
391
|
+
/// This intrinsic corresponds to the \c VPDPWUUDS instruction.
|
|
392
|
+
///
|
|
393
|
+
/// \param __W
|
|
394
|
+
/// A 128-bit vector of [4 x int].
|
|
395
|
+
/// \param __A
|
|
396
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
397
|
+
/// \param __B
|
|
398
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
399
|
+
/// \returns
|
|
400
|
+
/// A 128-bit vector of [4 x int].
|
|
401
|
+
///
|
|
402
|
+
/// \code{.operation}
|
|
403
|
+
/// FOR j := 0 to 3
|
|
404
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
405
|
+
/// tmp2.dword :=
|
|
406
|
+
/// ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
407
|
+
/// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
408
|
+
/// ENDFOR
|
|
409
|
+
/// dst[MAX:128] := 0
|
|
410
|
+
/// \endcode
|
|
411
|
+
#define _mm_dpwuuds_epi32(__W, __A, __B) \
|
|
412
|
+
((__m128i)__builtin_ia32_vpdpwuuds128((__v4si)(__W), (__v8hu)(__A), \
|
|
413
|
+
(__v8hu)(__B)))
|
|
414
|
+
|
|
415
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A
|
|
416
|
+
/// with corresponding unsigned 16-bit integers in \a __B, producing 2
|
|
417
|
+
/// intermediate signed 16-bit results. Sum these 2 results with the
|
|
418
|
+
/// corresponding 32-bit integer in \a __W with signed saturation, and store
|
|
419
|
+
/// the packed 32-bit results in \a dst.
|
|
420
|
+
///
|
|
421
|
+
/// \headerfile <immintrin.h>
|
|
422
|
+
///
|
|
423
|
+
/// \code
|
|
424
|
+
/// __m256i _mm256_dpwuuds_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
425
|
+
/// \endcode
|
|
426
|
+
///
|
|
427
|
+
/// This intrinsic corresponds to the \c VPDPWUUDS instruction.
|
|
428
|
+
///
|
|
429
|
+
/// \param __W
|
|
430
|
+
/// A 256-bit vector of [8 x int].
|
|
431
|
+
/// \param __A
|
|
432
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
433
|
+
/// \param __B
|
|
434
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
435
|
+
/// \returns
|
|
436
|
+
/// A 256-bit vector of [8 x int].
|
|
437
|
+
///
|
|
438
|
+
/// \code{.operation}
|
|
439
|
+
/// FOR j := 0 to 7
|
|
440
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
441
|
+
/// tmp2.dword :=
|
|
442
|
+
/// ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
443
|
+
/// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
444
|
+
/// ENDFOR
|
|
445
|
+
/// dst[MAX:256] := 0
|
|
446
|
+
/// \endcode
|
|
447
|
+
#define _mm256_dpwuuds_epi32(__W, __A, __B) \
|
|
448
|
+
((__m256i)__builtin_ia32_vpdpwuuds256((__v8si)(__W), (__v16hu)(__A), \
|
|
449
|
+
(__v16hu)(__B)))
|
|
450
|
+
|
|
451
|
+
#endif // __AVXVNNIINT16INTRIN_H
|