@cpp-linter/clang-tidy-win32-x64 14.0.0 → 16.0.3
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/README.md +2 -2
- package/bin/clang-tidy.exe +2 -2
- package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_intrinsics.h +7 -7
- package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_texture_intrinsics.h +2 -0
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_math.h +10 -13
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +1 -0
- package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
- package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
- package/lib/clang/{14.0.0 → 16}/include/altivec.h +501 -262
- package/lib/clang/16/include/amxfp16intrin.h +58 -0
- package/lib/clang/{14.0.0 → 16}/include/amxintrin.h +32 -2
- package/lib/clang/{14.0.0 → 16}/include/arm_acle.h +76 -75
- package/lib/clang/{14.0.0 → 16}/include/arm_fp16.h +90 -90
- package/lib/clang/{14.0.0 → 16}/include/arm_neon.h +28468 -28638
- package/lib/clang/{14.0.0 → 16}/include/arm_neon_sve_bridge.h +0 -2
- package/lib/clang/{14.0.0 → 16}/include/arm_sve.h +7848 -7996
- package/lib/clang/{14.0.0 → 16}/include/avx2intrin.h +8 -8
- package/lib/clang/{14.0.0 → 16}/include/avx512bf16intrin.h +18 -15
- package/lib/clang/{14.0.0 → 16}/include/avx512bwintrin.h +12 -12
- package/lib/clang/{14.0.0 → 16}/include/avx512fintrin.h +78 -75
- package/lib/clang/{14.0.0 → 16}/include/avx512fp16intrin.h +6 -9
- package/lib/clang/{14.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
- package/lib/clang/{14.0.0 → 16}/include/avx512vlbf16intrin.h +31 -38
- package/lib/clang/{14.0.0 → 16}/include/avx512vlbwintrin.h +360 -8
- package/lib/clang/{14.0.0 → 16}/include/avx512vlfp16intrin.h +3 -0
- package/lib/clang/{14.0.0 → 16}/include/avx512vlintrin.h +81 -95
- package/lib/clang/{14.0.0 → 16}/include/avx512vlvnniintrin.h +16 -16
- package/lib/clang/16/include/avxifmaintrin.h +177 -0
- package/lib/clang/{14.0.0 → 16}/include/avxintrin.h +77 -32
- package/lib/clang/16/include/avxneconvertintrin.h +484 -0
- package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
- package/lib/clang/{14.0.0 → 16}/include/avxvnniintrin.h +16 -16
- package/lib/clang/{14.0.0 → 16}/include/bmiintrin.h +6 -2
- package/lib/clang/{14.0.0 → 16}/include/cetintrin.h +12 -6
- package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
- package/lib/clang/{14.0.0 → 16}/include/cpuid.h +12 -1
- package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
- package/lib/clang/{14.0.0 → 16}/include/emmintrin.h +559 -769
- package/lib/clang/{14.0.0 → 16}/include/f16cintrin.h +3 -3
- package/lib/clang/{14.0.0 → 16}/include/float.h +17 -10
- package/lib/clang/{14.0.0 → 16}/include/gfniintrin.h +7 -5
- package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
- package/lib/clang/16/include/hlsl.h +15 -0
- package/lib/clang/{14.0.0 → 16}/include/hresetintrin.h +2 -2
- package/lib/clang/{14.0.0 → 16}/include/ia32intrin.h +11 -11
- package/lib/clang/{14.0.0 → 16}/include/immintrin.h +56 -24
- package/lib/clang/{14.0.0 → 16}/include/intrin.h +12 -21
- package/lib/clang/{14.0.0 → 16}/include/keylockerintrin.h +22 -22
- package/lib/clang/16/include/larchintrin.h +234 -0
- package/lib/clang/{14.0.0 → 16}/include/limits.h +3 -2
- package/lib/clang/{14.0.0 → 16}/include/mm_malloc.h +3 -3
- package/lib/clang/{14.0.0 → 16}/include/opencl-c-base.h +29 -0
- package/lib/clang/{14.0.0 → 16}/include/opencl-c.h +6904 -7100
- package/lib/clang/{14.0.0 → 16}/include/pmmintrin.h +1 -1
- package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
- package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
- package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
- package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
- package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -387
- package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
- package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
- package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
- package/lib/clang/{14.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
- package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
- package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/lib/clang/16/include/prfchiintrin.h +61 -0
- package/lib/clang/16/include/raointintrin.h +203 -0
- package/lib/clang/16/include/rdpruintrin.h +57 -0
- package/lib/clang/{14.0.0 → 16}/include/rdseedintrin.h +3 -3
- package/lib/clang/16/include/riscv_vector.h +211 -0
- package/lib/clang/{14.0.0 → 16}/include/rtmintrin.h +1 -1
- package/lib/clang/{14.0.0 → 16}/include/smmintrin.h +236 -259
- package/lib/clang/{14.0.0 → 16}/include/stdarg.h +23 -7
- package/lib/clang/{14.0.0 → 16}/include/stdatomic.h +7 -7
- package/lib/clang/{14.0.0 → 16}/include/stdbool.h +10 -7
- package/lib/clang/{14.0.0 → 16}/include/stddef.h +9 -2
- package/lib/clang/{14.0.0 → 16}/include/stdint.h +158 -40
- package/lib/clang/16/include/stdnoreturn.h +29 -0
- package/lib/clang/{14.0.0 → 16}/include/uintrintrin.h +8 -8
- package/lib/clang/{14.0.0 → 16}/include/unwind.h +10 -6
- package/lib/clang/16/include/velintrin.h +71 -0
- package/lib/clang/16/include/velintrin_approx.h +120 -0
- package/lib/clang/16/include/velintrin_gen.h +1257 -0
- package/lib/clang/{14.0.0 → 16}/include/wasm_simd128.h +2 -2
- package/lib/clang/16/include/x86gprintrin.h +65 -0
- package/lib/clang/{14.0.0 → 16}/include/x86intrin.h +4 -0
- package/lib/clang/{14.0.0 → 16}/include/xmmintrin.h +10 -5
- package/package.json +6 -6
- package/lib/clang/14.0.0/include/ppc_wrappers/emmintrin.h +0 -2325
- package/lib/clang/14.0.0/include/ppc_wrappers/pmmintrin.h +0 -151
- package/lib/clang/14.0.0/include/ppc_wrappers/smmintrin.h +0 -110
- package/lib/clang/14.0.0/include/ppc_wrappers/tmmintrin.h +0 -496
- package/lib/clang/14.0.0/include/ppc_wrappers/xmmintrin.h +0 -1844
- package/lib/clang/14.0.0/include/riscv_vector.h +0 -95423
- package/lib/clang/14.0.0/include/x86gprintrin.h +0 -35
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/adxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/ammintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm64intr.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_bf16.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_cde.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_cmse.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_mve.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/armintr.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512erintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/builtins.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cet.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clwbintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clzerointrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/crc32intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fma4intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fmaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_types.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/htmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/inttypes.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/iso646.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/lwpintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mm3dnow.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/module.modulemap +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/movdirintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/msa.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/nmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/pkuintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/popcntintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/s390intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/serializeintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/sgxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/shaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/stdalign.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tbmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tgmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vadefs.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vaesintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/varargs.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vecintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/wmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xopintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xtestintrin.h +0 -0
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
/*===-------- avxvnniint8intrin.h - AVXVNNIINT8 intrinsics -----------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
#ifndef __IMMINTRIN_H
|
|
10
|
+
#error \
|
|
11
|
+
"Never use <avxvnniint8intrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __AVXVNNIINT8INTRIN_H
|
|
15
|
+
#define __AVXVNNIINT8INTRIN_H
|
|
16
|
+
|
|
17
|
+
/* Define the default attributes for the functions in this file. */
|
|
18
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
19
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnniint8"), \
|
|
20
|
+
__min_vector_width__(256)))
|
|
21
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
22
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnniint8"), \
|
|
23
|
+
__min_vector_width__(128)))
|
|
24
|
+
|
|
25
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
26
|
+
/// corresponding signed 8-bit integers in \a __B, producing 4 intermediate
|
|
27
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
28
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
29
|
+
///
|
|
30
|
+
/// \headerfile <x86intrin.h>
|
|
31
|
+
///
|
|
32
|
+
/// \code
|
|
33
|
+
/// _mm_dpbssd_epi32(__m128i __W, __m128i __A, __m128i __B);
|
|
34
|
+
/// \endcode
|
|
35
|
+
///
|
|
36
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
37
|
+
///
|
|
38
|
+
/// \param __A
|
|
39
|
+
/// A 128-bit vector of [16 x char].
|
|
40
|
+
/// \param __B
|
|
41
|
+
/// A 128-bit vector of [16 x char].
|
|
42
|
+
/// \returns
|
|
43
|
+
/// A 128-bit vector of [4 x int].
|
|
44
|
+
///
|
|
45
|
+
/// \code{.operation}
|
|
46
|
+
/// FOR j := 0 to 3
|
|
47
|
+
/// tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
|
|
48
|
+
/// tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
|
|
49
|
+
/// tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
|
|
50
|
+
/// tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
|
|
51
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
52
|
+
/// ENDFOR
|
|
53
|
+
/// dst[MAX:128] := 0
|
|
54
|
+
/// \endcode
|
|
55
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssd_epi32(__m128i __W,
|
|
56
|
+
__m128i __A,
|
|
57
|
+
__m128i __B) {
|
|
58
|
+
return (__m128i)__builtin_ia32_vpdpbssd128((__v4si)__W, (__v4si)__A,
|
|
59
|
+
(__v4si)__B);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
63
|
+
/// corresponding signed 8-bit integers in \a __B, producing 4 intermediate
|
|
64
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
65
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
66
|
+
///
|
|
67
|
+
/// \headerfile <x86intrin.h>
|
|
68
|
+
///
|
|
69
|
+
/// \code
|
|
70
|
+
/// _mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B);
|
|
71
|
+
/// \endcode
|
|
72
|
+
///
|
|
73
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
74
|
+
///
|
|
75
|
+
/// \param __A
|
|
76
|
+
/// A 256-bit vector of [32 x char].
|
|
77
|
+
/// \param __B
|
|
78
|
+
/// A 256-bit vector of [32 x char].
|
|
79
|
+
/// \returns
|
|
80
|
+
/// A 256-bit vector of [8 x int].
|
|
81
|
+
///
|
|
82
|
+
/// \code{.operation}
|
|
83
|
+
/// FOR j := 0 to 7
|
|
84
|
+
/// tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
|
|
85
|
+
/// tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
|
|
86
|
+
/// tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
|
|
87
|
+
/// tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
|
|
88
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
89
|
+
/// ENDFOR
|
|
90
|
+
/// dst[MAX:256] := 0
|
|
91
|
+
/// \endcode
|
|
92
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
93
|
+
_mm256_dpbssd_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
94
|
+
return (__m256i)__builtin_ia32_vpdpbssd256((__v8si)__W, (__v8si)__A,
|
|
95
|
+
(__v8si)__B);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
99
|
+
/// corresponding signed 8-bit integers in \a __B, producing 4 intermediate
|
|
100
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
101
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
102
|
+
/// 32-bit results in \a dst.
|
|
103
|
+
///
|
|
104
|
+
/// \headerfile <x86intrin.h>
|
|
105
|
+
///
|
|
106
|
+
/// \code
|
|
107
|
+
/// _mm_dpbssds_epi32( __m128i __W, __m128i __A, __m128i __B);
|
|
108
|
+
/// \endcode
|
|
109
|
+
///
|
|
110
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
111
|
+
///
|
|
112
|
+
/// \param __A
|
|
113
|
+
/// A 128-bit vector of [16 x char].
|
|
114
|
+
/// \param __B
|
|
115
|
+
/// A 128-bit vector of [16 x char].
|
|
116
|
+
/// \returns
|
|
117
|
+
/// A 128-bit vector of [4 x int].
|
|
118
|
+
///
|
|
119
|
+
/// \code{.operation}
|
|
120
|
+
/// FOR j := 0 to 3
|
|
121
|
+
/// tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
|
|
122
|
+
/// tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
|
|
123
|
+
/// tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
|
|
124
|
+
/// tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
|
|
125
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
126
|
+
/// ENDFOR
|
|
127
|
+
/// dst[MAX:128] := 0
|
|
128
|
+
/// \endcode
|
|
129
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbssds_epi32(__m128i __W,
|
|
130
|
+
__m128i __A,
|
|
131
|
+
__m128i __B) {
|
|
132
|
+
return (__m128i)__builtin_ia32_vpdpbssds128((__v4si)__W, (__v4si)__A,
|
|
133
|
+
(__v4si)__B);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
137
|
+
/// corresponding signed 8-bit integers in \a __B, producing 4 intermediate
|
|
138
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
139
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
140
|
+
/// 32-bit results in \a dst.
|
|
141
|
+
///
|
|
142
|
+
/// \headerfile <x86intrin.h>
|
|
143
|
+
///
|
|
144
|
+
/// \code
|
|
145
|
+
/// _mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B);
|
|
146
|
+
/// \endcode
|
|
147
|
+
///
|
|
148
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
149
|
+
///
|
|
150
|
+
/// \param __A
|
|
151
|
+
/// A 256-bit vector of [32 x char].
|
|
152
|
+
/// \param __B
|
|
153
|
+
/// A 256-bit vector of [32 x char].
|
|
154
|
+
/// \returns
|
|
155
|
+
/// A 256-bit vector of [8 x int].
|
|
156
|
+
///
|
|
157
|
+
/// \code{.operation}
|
|
158
|
+
/// FOR j := 0 to 7
|
|
159
|
+
/// tmp1.word := SignExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j])
|
|
160
|
+
/// tmp2.word := SignExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1])
|
|
161
|
+
/// tmp3.word := SignExtend16(__A.byte[4*j+2]) * SignExtend16(__B.byte[4*j+2])
|
|
162
|
+
/// tmp4.word := SignExtend16(__A.byte[4*j+3]) * SignExtend16(__B.byte[4*j+3])
|
|
163
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
164
|
+
/// ENDFOR
|
|
165
|
+
/// dst[MAX:256] := 0
|
|
166
|
+
/// \endcode
|
|
167
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
168
|
+
_mm256_dpbssds_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
169
|
+
return (__m256i)__builtin_ia32_vpdpbssds256((__v8si)__W, (__v8si)__A,
|
|
170
|
+
(__v8si)__B);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
174
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
175
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
176
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
177
|
+
///
|
|
178
|
+
/// \headerfile <x86intrin.h>
|
|
179
|
+
///
|
|
180
|
+
/// \code
|
|
181
|
+
/// _mm_dpbsud_epi32(__m128i __W, __m128i __A, __m128i __B);
|
|
182
|
+
/// \endcode
|
|
183
|
+
///
|
|
184
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
185
|
+
///
|
|
186
|
+
/// \param __A
|
|
187
|
+
/// A 128-bit vector of [16 x char].
|
|
188
|
+
/// \param __B
|
|
189
|
+
/// A 128-bit vector of [16 x unsigned char].
|
|
190
|
+
/// \returns
|
|
191
|
+
/// A 128-bit vector of [4 x int].
|
|
192
|
+
///
|
|
193
|
+
/// \code{.operation}
|
|
194
|
+
/// FOR j := 0 to 3
|
|
195
|
+
/// tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
|
|
196
|
+
/// tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
|
|
197
|
+
/// tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
|
|
198
|
+
/// tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
|
|
199
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
200
|
+
/// ENDFOR
|
|
201
|
+
/// dst[MAX:128] := 0
|
|
202
|
+
/// \endcode
|
|
203
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsud_epi32(__m128i __W,
|
|
204
|
+
__m128i __A,
|
|
205
|
+
__m128i __B) {
|
|
206
|
+
return (__m128i)__builtin_ia32_vpdpbsud128((__v4si)__W, (__v4si)__A,
|
|
207
|
+
(__v4si)__B);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
211
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
212
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
213
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
214
|
+
///
|
|
215
|
+
/// \headerfile <x86intrin.h>
|
|
216
|
+
///
|
|
217
|
+
/// \code
|
|
218
|
+
/// _mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B);
|
|
219
|
+
/// \endcode
|
|
220
|
+
///
|
|
221
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
222
|
+
///
|
|
223
|
+
/// \param __A
|
|
224
|
+
/// A 256-bit vector of [32 x char].
|
|
225
|
+
/// \param __B
|
|
226
|
+
/// A 256-bit vector of [32 x unsigned char].
|
|
227
|
+
/// \returns
|
|
228
|
+
/// A 256-bit vector of [8 x int].
|
|
229
|
+
///
|
|
230
|
+
/// \code{.operation}
|
|
231
|
+
/// FOR j := 0 to 7
|
|
232
|
+
/// tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
|
|
233
|
+
/// tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
|
|
234
|
+
/// tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
|
|
235
|
+
/// tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
|
|
236
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
237
|
+
/// ENDFOR
|
|
238
|
+
/// dst[MAX:256] := 0
|
|
239
|
+
/// \endcode
|
|
240
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
241
|
+
_mm256_dpbsud_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
242
|
+
return (__m256i)__builtin_ia32_vpdpbsud256((__v8si)__W, (__v8si)__A,
|
|
243
|
+
(__v8si)__B);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
247
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
248
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
249
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
250
|
+
/// 32-bit results in \a dst.
|
|
251
|
+
///
|
|
252
|
+
/// \headerfile <x86intrin.h>
|
|
253
|
+
///
|
|
254
|
+
/// \code
|
|
255
|
+
/// _mm_dpbsuds_epi32( __m128i __W, __m128i __A, __m128i __B);
|
|
256
|
+
/// \endcode
|
|
257
|
+
///
|
|
258
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
259
|
+
///
|
|
260
|
+
/// \param __A
|
|
261
|
+
/// A 128-bit vector of [16 x char].
|
|
262
|
+
/// \param __B
|
|
263
|
+
/// A 128-bit vector of [16 x unsigned char].
|
|
264
|
+
/// \returns
|
|
265
|
+
/// A 128-bit vector of [4 x int].
|
|
266
|
+
///
|
|
267
|
+
/// \code{.operation}
|
|
268
|
+
/// FOR j := 0 to 3
|
|
269
|
+
/// tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
|
|
270
|
+
/// tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
|
|
271
|
+
/// tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
|
|
272
|
+
/// tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
|
|
273
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
274
|
+
/// ENDFOR
|
|
275
|
+
/// dst[MAX:128] := 0
|
|
276
|
+
/// \endcode
|
|
277
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbsuds_epi32(__m128i __W,
|
|
278
|
+
__m128i __A,
|
|
279
|
+
__m128i __B) {
|
|
280
|
+
return (__m128i)__builtin_ia32_vpdpbsuds128((__v4si)__W, (__v4si)__A,
|
|
281
|
+
(__v4si)__B);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
285
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
286
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
287
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
288
|
+
/// 32-bit results in \a dst.
|
|
289
|
+
///
|
|
290
|
+
/// \headerfile <x86intrin.h>
|
|
291
|
+
///
|
|
292
|
+
/// \code
|
|
293
|
+
/// _mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B);
|
|
294
|
+
/// \endcode
|
|
295
|
+
///
|
|
296
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
297
|
+
///
|
|
298
|
+
/// \param __A
|
|
299
|
+
/// A 256-bit vector of [32 x char].
|
|
300
|
+
/// \param __B
|
|
301
|
+
/// A 256-bit vector of [32 x unsigned char].
|
|
302
|
+
/// \returns
|
|
303
|
+
/// A 256-bit vector of [8 x int].
|
|
304
|
+
///
|
|
305
|
+
/// \code{.operation}
|
|
306
|
+
/// FOR j := 0 to 7
|
|
307
|
+
/// tmp1.word := Signed(SignExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j]))
|
|
308
|
+
/// tmp2.word := Signed(SignExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1]))
|
|
309
|
+
/// tmp3.word := Signed(SignExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2]))
|
|
310
|
+
/// tmp4.word := Signed(SignExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3]))
|
|
311
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
312
|
+
/// ENDFOR
|
|
313
|
+
/// dst[MAX:256] := 0
|
|
314
|
+
/// \endcode
|
|
315
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
316
|
+
_mm256_dpbsuds_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
317
|
+
return (__m256i)__builtin_ia32_vpdpbsuds256((__v8si)__W, (__v8si)__A,
|
|
318
|
+
(__v8si)__B);
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with
|
|
322
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
323
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
324
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
325
|
+
///
|
|
326
|
+
/// \headerfile <x86intrin.h>
|
|
327
|
+
///
|
|
328
|
+
/// \code
|
|
329
|
+
/// _mm_dpbuud_epi32(__m128i __W, __m128i __A, __m128i __B);
|
|
330
|
+
/// \endcode
|
|
331
|
+
///
|
|
332
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
333
|
+
///
|
|
334
|
+
/// \param __A
|
|
335
|
+
/// A 128-bit vector of [16 x unsigned char].
|
|
336
|
+
/// \param __B
|
|
337
|
+
/// A 128-bit vector of [16 x unsigned char].
|
|
338
|
+
/// \returns
|
|
339
|
+
/// A 128-bit vector of [4 x int].
|
|
340
|
+
///
|
|
341
|
+
/// \code{.operation}
|
|
342
|
+
/// FOR j := 0 to 3
|
|
343
|
+
/// tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
|
|
344
|
+
/// tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
|
|
345
|
+
/// tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
|
|
346
|
+
/// tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
|
|
347
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
348
|
+
/// ENDFOR
|
|
349
|
+
/// dst[MAX:128] := 0
|
|
350
|
+
/// \endcode
|
|
351
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuud_epi32(__m128i __W,
|
|
352
|
+
__m128i __A,
|
|
353
|
+
__m128i __B) {
|
|
354
|
+
return (__m128i)__builtin_ia32_vpdpbuud128((__v4si)__W, (__v4si)__A,
|
|
355
|
+
(__v4si)__B);
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with
|
|
359
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
360
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
361
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
362
|
+
///
|
|
363
|
+
/// \headerfile <x86intrin.h>
|
|
364
|
+
///
|
|
365
|
+
/// \code
|
|
366
|
+
/// _mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B);
|
|
367
|
+
/// \endcode
|
|
368
|
+
///
|
|
369
|
+
/// This intrinsic corresponds to the \c VPDPBSSD instruction.
|
|
370
|
+
///
|
|
371
|
+
/// \param __A
|
|
372
|
+
/// A 256-bit vector of [32 x unsigned char].
|
|
373
|
+
/// \param __B
|
|
374
|
+
/// A 256-bit vector of [32 x unsigned char].
|
|
375
|
+
/// \returns
|
|
376
|
+
/// A 256-bit vector of [8 x int].
|
|
377
|
+
///
|
|
378
|
+
/// \code{.operation}
|
|
379
|
+
/// FOR j := 0 to 7
|
|
380
|
+
/// tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
|
|
381
|
+
/// tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
|
|
382
|
+
/// tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
|
|
383
|
+
/// tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
|
|
384
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
385
|
+
/// ENDFOR
|
|
386
|
+
/// dst[MAX:256] := 0
|
|
387
|
+
/// \endcode
|
|
388
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
389
|
+
_mm256_dpbuud_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
390
|
+
return (__m256i)__builtin_ia32_vpdpbuud256((__v8si)__W, (__v8si)__A,
|
|
391
|
+
(__v8si)__B);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in \a __A with
|
|
395
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
396
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
397
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
398
|
+
/// 32-bit results in \a dst.
|
|
399
|
+
///
|
|
400
|
+
/// \headerfile <x86intrin.h>
|
|
401
|
+
///
|
|
402
|
+
/// \code
|
|
403
|
+
/// _mm_dpbuuds_epi32( __m128i __W, __m128i __A, __m128i __B);
|
|
404
|
+
/// \endcode
|
|
405
|
+
///
|
|
406
|
+
/// This intrinsic corresponds to the \c VPDPBUUDS instruction.
|
|
407
|
+
///
|
|
408
|
+
/// \param __A
|
|
409
|
+
/// A 128-bit vector of [16 x unsigned char].
|
|
410
|
+
/// \param __B
|
|
411
|
+
/// A 128-bit vector of [16 x unsigned char].
|
|
412
|
+
/// \returns
|
|
413
|
+
/// A 128-bit vector of [4 x int].
|
|
414
|
+
///
|
|
415
|
+
/// \code{.operation}
|
|
416
|
+
/// FOR j := 0 to 3
|
|
417
|
+
/// tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
|
|
418
|
+
/// tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
|
|
419
|
+
/// tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
|
|
420
|
+
/// tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
|
|
421
|
+
/// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
422
|
+
/// ENDFOR
|
|
423
|
+
/// dst[MAX:128] := 0
|
|
424
|
+
/// \endcode
|
|
425
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpbuuds_epi32(__m128i __W,
|
|
426
|
+
__m128i __A,
|
|
427
|
+
__m128i __B) {
|
|
428
|
+
return (__m128i)__builtin_ia32_vpdpbuuds128((__v4si)__W, (__v4si)__A,
|
|
429
|
+
(__v4si)__B);
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/// Multiply groups of 4 adjacent pairs of signed 8-bit integers in \a __A with
|
|
433
|
+
/// corresponding unsigned 8-bit integers in \a __B, producing 4 intermediate
|
|
434
|
+
/// signed 16-bit results. Sum these 4 results with the corresponding
|
|
435
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
436
|
+
/// 32-bit results in \a dst.
|
|
437
|
+
///
|
|
438
|
+
/// \headerfile <x86intrin.h>
|
|
439
|
+
///
|
|
440
|
+
/// \code
|
|
441
|
+
/// _mm256_dpbuuds_epi32(__m256i __W, __m256i __A, __m256i __B);
|
|
442
|
+
/// \endcode
|
|
443
|
+
///
|
|
444
|
+
/// This intrinsic corresponds to the \c VPDPBUUDS instruction.
|
|
445
|
+
///
|
|
446
|
+
/// \param __A
|
|
447
|
+
/// A 256-bit vector of [32 x unsigned char].
|
|
448
|
+
/// \param __B
|
|
449
|
+
/// A 256-bit vector of [32 x unsigned char].
|
|
450
|
+
/// \returns
|
|
451
|
+
/// A 256-bit vector of [8 x int].
|
|
452
|
+
///
|
|
453
|
+
/// \code{.operation}
|
|
454
|
+
/// FOR j := 0 to 7
|
|
455
|
+
/// tmp1.word := ZeroExtend16(__A.byte[4*j]) * ZeroExtend16(__B.byte[4*j])
|
|
456
|
+
/// tmp2.word := ZeroExtend16(__A.byte[4*j+1]) * ZeroExtend16(__B.byte[4*j+1])
|
|
457
|
+
/// tmp3.word := ZeroExtend16(__A.byte[4*j+2]) * ZeroExtend16(__B.byte[4*j+2])
|
|
458
|
+
/// tmp4.word := ZeroExtend16(__A.byte[4*j+3]) * ZeroExtend16(__B.byte[4*j+3])
|
|
459
|
+
/// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
460
|
+
/// ENDFOR
|
|
461
|
+
/// dst[MAX:256] := 0
|
|
462
|
+
/// \endcode
|
|
463
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
464
|
+
_mm256_dpbuuds_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
465
|
+
return (__m256i)__builtin_ia32_vpdpbuuds256((__v8si)__W, (__v8si)__A,
|
|
466
|
+
(__v8si)__B);
|
|
467
|
+
}
|
|
468
|
+
#undef __DEFAULT_FN_ATTRS128
|
|
469
|
+
#undef __DEFAULT_FN_ATTRS256
|
|
470
|
+
|
|
471
|
+
#endif // __AVXVNNIINT8INTRIN_H
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
///
|
|
51
51
|
/// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
|
|
52
52
|
///
|
|
53
|
-
/// \operation
|
|
53
|
+
/// \code{.operation}
|
|
54
54
|
/// FOR j := 0 to 7
|
|
55
55
|
/// tmp1.word := Signed(ZeroExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j]))
|
|
56
56
|
/// tmp2.word := Signed(ZeroExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1]))
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
/// DST.dword[j] := __S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
60
60
|
/// ENDFOR
|
|
61
61
|
/// DST[MAX:256] := 0
|
|
62
|
-
/// \
|
|
62
|
+
/// \endcode
|
|
63
63
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
64
64
|
_mm256_dpbusd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
65
65
|
{
|
|
@@ -73,7 +73,7 @@ _mm256_dpbusd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
73
73
|
///
|
|
74
74
|
/// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
|
|
75
75
|
///
|
|
76
|
-
/// \operation
|
|
76
|
+
/// \code{.operation}
|
|
77
77
|
/// FOR j := 0 to 7
|
|
78
78
|
/// tmp1.word := Signed(ZeroExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j]))
|
|
79
79
|
/// tmp2.word := Signed(ZeroExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1]))
|
|
@@ -82,7 +82,7 @@ _mm256_dpbusd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
82
82
|
/// DST.dword[j] := Saturate32(__S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
83
83
|
/// ENDFOR
|
|
84
84
|
/// DST[MAX:256] := 0
|
|
85
|
-
/// \
|
|
85
|
+
/// \endcode
|
|
86
86
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
87
87
|
_mm256_dpbusds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
88
88
|
{
|
|
@@ -96,14 +96,14 @@ _mm256_dpbusds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
96
96
|
///
|
|
97
97
|
/// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
|
|
98
98
|
///
|
|
99
|
-
/// \operation
|
|
99
|
+
/// \code{.operation}
|
|
100
100
|
/// FOR j := 0 to 7
|
|
101
101
|
/// tmp1.dword := SignExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
102
102
|
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
103
103
|
/// DST.dword[j] := __S.dword[j] + tmp1 + tmp2
|
|
104
104
|
/// ENDFOR
|
|
105
105
|
/// DST[MAX:256] := 0
|
|
106
|
-
/// \
|
|
106
|
+
/// \endcode
|
|
107
107
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
108
108
|
_mm256_dpwssd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
109
109
|
{
|
|
@@ -117,14 +117,14 @@ _mm256_dpwssd_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
117
117
|
///
|
|
118
118
|
/// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
|
|
119
119
|
///
|
|
120
|
-
/// \operation
|
|
120
|
+
/// \code{.operation}
|
|
121
121
|
/// FOR j := 0 to 7
|
|
122
122
|
/// tmp1.dword := SignExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
123
123
|
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
124
124
|
/// DST.dword[j] := Saturate32(__S.dword[j] + tmp1 + tmp2)
|
|
125
125
|
/// ENDFOR
|
|
126
126
|
/// DST[MAX:256] := 0
|
|
127
|
-
/// \
|
|
127
|
+
/// \endcode
|
|
128
128
|
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
129
129
|
_mm256_dpwssds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
130
130
|
{
|
|
@@ -138,7 +138,7 @@ _mm256_dpwssds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
138
138
|
///
|
|
139
139
|
/// This intrinsic corresponds to the <c> VPDPBUSD </c> instructions.
|
|
140
140
|
///
|
|
141
|
-
/// \operation
|
|
141
|
+
/// \code{.operation}
|
|
142
142
|
/// FOR j := 0 to 3
|
|
143
143
|
/// tmp1.word := Signed(ZeroExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j]))
|
|
144
144
|
/// tmp2.word := Signed(ZeroExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1]))
|
|
@@ -147,7 +147,7 @@ _mm256_dpwssds_avx_epi32(__m256i __S, __m256i __A, __m256i __B)
|
|
|
147
147
|
/// DST.dword[j] := __S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4
|
|
148
148
|
/// ENDFOR
|
|
149
149
|
/// DST[MAX:128] := 0
|
|
150
|
-
/// \
|
|
150
|
+
/// \endcode
|
|
151
151
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
152
152
|
_mm_dpbusd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
153
153
|
{
|
|
@@ -161,7 +161,7 @@ _mm_dpbusd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
161
161
|
///
|
|
162
162
|
/// This intrinsic corresponds to the <c> VPDPBUSDS </c> instructions.
|
|
163
163
|
///
|
|
164
|
-
/// \operation
|
|
164
|
+
/// \code{.operation}
|
|
165
165
|
/// FOR j := 0 to 3
|
|
166
166
|
/// tmp1.word := Signed(ZeroExtend16(__A.byte[4*j]) * SignExtend16(__B.byte[4*j]))
|
|
167
167
|
/// tmp2.word := Signed(ZeroExtend16(__A.byte[4*j+1]) * SignExtend16(__B.byte[4*j+1]))
|
|
@@ -170,7 +170,7 @@ _mm_dpbusd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
170
170
|
/// DST.dword[j] := Saturate32(__S.dword[j] + tmp1 + tmp2 + tmp3 + tmp4)
|
|
171
171
|
/// ENDFOR
|
|
172
172
|
/// DST[MAX:128] := 0
|
|
173
|
-
/// \
|
|
173
|
+
/// \endcode
|
|
174
174
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
175
175
|
_mm_dpbusds_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
176
176
|
{
|
|
@@ -184,14 +184,14 @@ _mm_dpbusds_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
184
184
|
///
|
|
185
185
|
/// This intrinsic corresponds to the <c> VPDPWSSD </c> instructions.
|
|
186
186
|
///
|
|
187
|
-
/// \operation
|
|
187
|
+
/// \code{.operation}
|
|
188
188
|
/// FOR j := 0 to 3
|
|
189
189
|
/// tmp1.dword := SignExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
190
190
|
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
191
191
|
/// DST.dword[j] := __S.dword[j] + tmp1 + tmp2
|
|
192
192
|
/// ENDFOR
|
|
193
193
|
/// DST[MAX:128] := 0
|
|
194
|
-
/// \
|
|
194
|
+
/// \endcode
|
|
195
195
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
196
196
|
_mm_dpwssd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
197
197
|
{
|
|
@@ -205,14 +205,14 @@ _mm_dpwssd_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
|
205
205
|
///
|
|
206
206
|
/// This intrinsic corresponds to the <c> VPDPWSSDS </c> instructions.
|
|
207
207
|
///
|
|
208
|
-
/// \operation
|
|
208
|
+
/// \code{.operation}
|
|
209
209
|
/// FOR j := 0 to 3
|
|
210
210
|
/// tmp1.dword := SignExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
211
211
|
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
212
212
|
/// DST.dword[j] := Saturate32(__S.dword[j] + tmp1 + tmp2)
|
|
213
213
|
/// ENDFOR
|
|
214
214
|
/// DST[MAX:128] := 0
|
|
215
|
-
/// \
|
|
215
|
+
/// \endcode
|
|
216
216
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
217
217
|
_mm_dpwssds_avx_epi32(__m128i __S, __m128i __A, __m128i __B)
|
|
218
218
|
{
|
|
@@ -47,6 +47,7 @@ __tzcnt_u16(unsigned short __X)
|
|
|
47
47
|
/// An unsigned 32-bit integer whose trailing zeros are to be counted.
|
|
48
48
|
/// \returns An unsigned 32-bit integer containing the number of trailing zero
|
|
49
49
|
/// bits in the operand.
|
|
50
|
+
/// \see _mm_tzcnt_32
|
|
50
51
|
static __inline__ unsigned int __RELAXED_FN_ATTRS
|
|
51
52
|
__tzcnt_u32(unsigned int __X)
|
|
52
53
|
{
|
|
@@ -63,10 +64,11 @@ __tzcnt_u32(unsigned int __X)
|
|
|
63
64
|
/// An unsigned 32-bit integer whose trailing zeros are to be counted.
|
|
64
65
|
/// \returns An 32-bit integer containing the number of trailing zero bits in
|
|
65
66
|
/// the operand.
|
|
67
|
+
/// \see __tzcnt_u32
|
|
66
68
|
static __inline__ int __RELAXED_FN_ATTRS
|
|
67
69
|
_mm_tzcnt_32(unsigned int __X)
|
|
68
70
|
{
|
|
69
|
-
return __builtin_ia32_tzcnt_u32(__X);
|
|
71
|
+
return (int)__builtin_ia32_tzcnt_u32(__X);
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
#define _tzcnt_u32(a) (__tzcnt_u32((a)))
|
|
@@ -83,6 +85,7 @@ _mm_tzcnt_32(unsigned int __X)
|
|
|
83
85
|
/// An unsigned 64-bit integer whose trailing zeros are to be counted.
|
|
84
86
|
/// \returns An unsigned 64-bit integer containing the number of trailing zero
|
|
85
87
|
/// bits in the operand.
|
|
88
|
+
/// \see _mm_tzcnt_64
|
|
86
89
|
static __inline__ unsigned long long __RELAXED_FN_ATTRS
|
|
87
90
|
__tzcnt_u64(unsigned long long __X)
|
|
88
91
|
{
|
|
@@ -99,10 +102,11 @@ __tzcnt_u64(unsigned long long __X)
|
|
|
99
102
|
/// An unsigned 64-bit integer whose trailing zeros are to be counted.
|
|
100
103
|
/// \returns An 64-bit integer containing the number of trailing zero bits in
|
|
101
104
|
/// the operand.
|
|
105
|
+
/// \see __tzcnt_u64
|
|
102
106
|
static __inline__ long long __RELAXED_FN_ATTRS
|
|
103
107
|
_mm_tzcnt_64(unsigned long long __X)
|
|
104
108
|
{
|
|
105
|
-
return __builtin_ia32_tzcnt_u64(__X);
|
|
109
|
+
return (long long)__builtin_ia32_tzcnt_u64(__X);
|
|
106
110
|
}
|
|
107
111
|
|
|
108
112
|
#define _tzcnt_u64(a) (__tzcnt_u64((a)))
|