@cpp-linter/clang-tidy-darwin-arm64 16.0.3 → 18.1.5
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 +2 -2
- package/lib/clang/{16 → 18}/include/__clang_cuda_device_functions.h +2 -2
- package/lib/clang/{16 → 18}/include/__clang_cuda_intrinsics.h +191 -0
- package/lib/clang/{16 → 18}/include/__clang_cuda_libdevice_declares.h +2 -2
- package/lib/clang/{16 → 18}/include/__clang_cuda_math.h +3 -3
- package/lib/clang/{16 → 18}/include/__clang_cuda_runtime_wrapper.h +2 -2
- package/lib/clang/{16 → 18}/include/__clang_hip_cmath.h +1 -1
- package/lib/clang/{16 → 18}/include/__clang_hip_libdevice_declares.h +32 -30
- package/lib/clang/{16 → 18}/include/__clang_hip_math.h +244 -238
- package/lib/clang/{16 → 18}/include/__clang_hip_runtime_wrapper.h +44 -23
- package/lib/clang/18/include/__stdarg___gnuc_va_list.h +13 -0
- package/lib/clang/18/include/__stdarg___va_copy.h +12 -0
- package/lib/clang/18/include/__stdarg_va_arg.h +22 -0
- package/lib/clang/18/include/__stdarg_va_copy.h +12 -0
- package/lib/clang/18/include/__stdarg_va_list.h +13 -0
- package/lib/clang/{16 → 18}/include/__stddef_max_align_t.h +1 -1
- package/lib/clang/18/include/__stddef_null.h +29 -0
- package/lib/clang/18/include/__stddef_nullptr_t.h +29 -0
- package/lib/clang/18/include/__stddef_offsetof.h +17 -0
- package/lib/clang/18/include/__stddef_ptrdiff_t.h +20 -0
- package/lib/clang/18/include/__stddef_rsize_t.h +20 -0
- package/lib/clang/18/include/__stddef_size_t.h +20 -0
- package/lib/clang/18/include/__stddef_unreachable.h +21 -0
- package/lib/clang/18/include/__stddef_wchar_t.h +28 -0
- package/lib/clang/18/include/__stddef_wint_t.h +15 -0
- package/lib/clang/18/include/adcintrin.h +160 -0
- package/lib/clang/18/include/adxintrin.h +102 -0
- package/lib/clang/{16 → 18}/include/altivec.h +167 -136
- package/lib/clang/{16 → 18}/include/ammintrin.h +4 -4
- package/lib/clang/18/include/amxcomplexintrin.h +169 -0
- package/lib/clang/{16 → 18}/include/arm_acle.h +124 -40
- package/lib/clang/{16 → 18}/include/arm_neon.h +249 -328
- package/lib/clang/18/include/arm_sme.h +2412 -0
- package/lib/clang/{16 → 18}/include/arm_sve.h +7454 -364
- package/lib/clang/18/include/arm_vector_types.h +345 -0
- package/lib/clang/18/include/avx2intrin.h +5284 -0
- package/lib/clang/{16 → 18}/include/avx512bf16intrin.h +3 -2
- package/lib/clang/{16 → 18}/include/avx512bitalgintrin.h +4 -1
- package/lib/clang/{16 → 18}/include/avx512bwintrin.h +28 -38
- package/lib/clang/{16 → 18}/include/avx512cdintrin.h +3 -1
- package/lib/clang/{16 → 18}/include/avx512dqintrin.h +4 -2
- package/lib/clang/{16 → 18}/include/avx512fintrin.h +24 -10
- package/lib/clang/{16 → 18}/include/avx512fp16intrin.h +18 -12
- package/lib/clang/{16 → 18}/include/avx512ifmaintrin.h +3 -1
- package/lib/clang/{16 → 18}/include/avx512ifmavlintrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512pfintrin.h +0 -5
- package/lib/clang/{16 → 18}/include/avx512vbmi2intrin.h +1 -1
- package/lib/clang/{16 → 18}/include/avx512vbmiintrin.h +3 -2
- package/lib/clang/{16 → 18}/include/avx512vbmivlintrin.h +8 -3
- package/lib/clang/{16 → 18}/include/avx512vlbf16intrin.h +8 -6
- package/lib/clang/{16 → 18}/include/avx512vlbitalgintrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512vlbwintrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512vlcdintrin.h +8 -3
- package/lib/clang/{16 → 18}/include/avx512vldqintrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512vlfp16intrin.h +2 -2
- package/lib/clang/{16 → 18}/include/avx512vlintrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512vlvbmi2intrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512vlvnniintrin.h +8 -2
- package/lib/clang/{16 → 18}/include/avx512vlvp2intersectintrin.h +6 -4
- package/lib/clang/{16 → 18}/include/avx512vnniintrin.h +3 -2
- package/lib/clang/{16 → 18}/include/avx512vp2intersectintrin.h +3 -2
- package/lib/clang/{16 → 18}/include/avx512vpopcntdqintrin.h +3 -1
- package/lib/clang/{16 → 18}/include/avx512vpopcntdqvlintrin.h +6 -2
- package/lib/clang/{16 → 18}/include/avxintrin.h +29 -12
- package/lib/clang/18/include/avxvnniint16intrin.h +473 -0
- package/lib/clang/18/include/bmi2intrin.h +255 -0
- package/lib/clang/{16 → 18}/include/bmiintrin.h +231 -46
- package/lib/clang/{16 → 18}/include/clflushoptintrin.h +9 -0
- package/lib/clang/{16 → 18}/include/clzerointrin.h +7 -5
- package/lib/clang/18/include/cuda_wrappers/bits/basic_string.h +9 -0
- package/lib/clang/18/include/cuda_wrappers/bits/basic_string.tcc +9 -0
- package/lib/clang/18/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
- package/lib/clang/{16 → 18}/include/emmintrin.h +10 -10
- package/lib/clang/18/include/fmaintrin.h +780 -0
- package/lib/clang/{16 → 18}/include/gfniintrin.h +23 -6
- package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +624 -0
- package/lib/clang/18/include/ia32intrin.h +863 -0
- package/lib/clang/{16 → 18}/include/immintrin.h +182 -11
- package/lib/clang/{16 → 18}/include/intrin.h +16 -0
- package/lib/clang/{16 → 18}/include/larchintrin.h +13 -1
- package/lib/clang/18/include/lasxintrin.h +3884 -0
- package/lib/clang/{16 → 18}/include/limits.h +7 -5
- package/lib/clang/18/include/llvm_libc_wrappers/assert.h +34 -0
- package/lib/clang/18/include/llvm_libc_wrappers/ctype.h +102 -0
- package/lib/clang/18/include/llvm_libc_wrappers/inttypes.h +34 -0
- package/lib/clang/18/include/llvm_libc_wrappers/stdio.h +80 -0
- package/lib/clang/18/include/llvm_libc_wrappers/stdlib.h +45 -0
- package/lib/clang/18/include/llvm_libc_wrappers/string.h +96 -0
- package/lib/clang/18/include/llvm_libc_wrappers/time.h +34 -0
- package/lib/clang/18/include/lsxintrin.h +3750 -0
- package/lib/clang/{16 → 18}/include/mmintrin.h +7 -5
- package/lib/clang/{16 → 18}/include/module.modulemap +155 -2
- package/lib/clang/18/include/mwaitxintrin.h +62 -0
- package/lib/clang/{16 → 18}/include/opencl-c-base.h +8 -0
- package/lib/clang/{16 → 18}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
- package/lib/clang/{16 → 18}/include/openmp_wrappers/cmath +1 -1
- package/lib/clang/{16 → 18}/include/openmp_wrappers/new +1 -1
- package/lib/clang/{16 → 18}/include/pmmintrin.h +15 -8
- package/lib/clang/{16 → 18}/include/ppc_wrappers/emmintrin.h +2 -1
- package/lib/clang/18/include/ppc_wrappers/nmmintrin.h +26 -0
- package/lib/clang/{16 → 18}/include/ppc_wrappers/smmintrin.h +37 -17
- package/lib/clang/18/include/rdseedintrin.h +105 -0
- package/lib/clang/18/include/riscv_bitmanip.h +195 -0
- package/lib/clang/18/include/riscv_crypto.h +170 -0
- package/lib/clang/18/include/riscv_ntlh.h +26 -0
- package/lib/clang/18/include/riscv_vector.h +431 -0
- package/lib/clang/18/include/sha512intrin.h +200 -0
- package/lib/clang/18/include/shaintrin.h +189 -0
- package/lib/clang/18/include/sifive_vector.h +16 -0
- package/lib/clang/18/include/sm3intrin.h +238 -0
- package/lib/clang/18/include/sm4intrin.h +269 -0
- package/lib/clang/{16 → 18}/include/smmintrin.h +3 -3
- package/lib/clang/{16 → 18}/include/stdalign.h +3 -0
- package/lib/clang/18/include/stdarg.h +79 -0
- package/lib/clang/{16 → 18}/include/stdatomic.h +7 -2
- package/lib/clang/18/include/stdckdint.h +42 -0
- package/lib/clang/18/include/stddef.h +123 -0
- package/lib/clang/{16 → 18}/include/stdint.h +19 -48
- package/lib/clang/{16 → 18}/include/stdnoreturn.h +2 -2
- package/lib/clang/{16 → 18}/include/tmmintrin.h +7 -2
- package/lib/clang/18/include/usermsrintrin.h +51 -0
- package/lib/clang/{16 → 18}/include/vaesintrin.h +4 -2
- package/lib/clang/{16 → 18}/include/vecintrin.h +217 -199
- package/lib/clang/{16 → 18}/include/wasm_simd128.h +132 -12
- package/lib/clang/{16 → 18}/include/x86gprintrin.h +5 -0
- package/lib/clang/{16 → 18}/include/xmmintrin.h +9 -5
- package/lib/clang/18/include/xsavecintrin.h +84 -0
- package/package.json +6 -6
- package/lib/clang/16/include/adxintrin.h +0 -72
- package/lib/clang/16/include/avx2intrin.h +0 -1148
- package/lib/clang/16/include/bmi2intrin.h +0 -81
- package/lib/clang/16/include/fmaintrin.h +0 -216
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +0 -223
- package/lib/clang/16/include/ia32intrin.h +0 -441
- package/lib/clang/16/include/mwaitxintrin.h +0 -33
- package/lib/clang/16/include/rdseedintrin.h +0 -42
- package/lib/clang/16/include/riscv_vector.h +0 -211
- package/lib/clang/16/include/shaintrin.h +0 -61
- package/lib/clang/16/include/stdarg.h +0 -51
- package/lib/clang/16/include/stddef.h +0 -128
- package/lib/clang/16/include/xsavecintrin.h +0 -34
- /package/lib/clang/{16 → 18}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{16 → 18}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{16 → 18}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{16 → 18}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{16 → 18}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{16 → 18}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{16 → 18}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{16 → 18}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{16 → 18}/include/amxfp16intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/amxintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm64intr.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm_bf16.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm_cde.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm_cmse.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm_fp16.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm_mve.h +0 -0
- /package/lib/clang/{16 → 18}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{16 → 18}/include/armintr.h +0 -0
- /package/lib/clang/{16 → 18}/include/avx512erintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/avxvnniint8intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/builtins.h +0 -0
- /package/lib/clang/{16 → 18}/include/cet.h +0 -0
- /package/lib/clang/{16 → 18}/include/cetintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/clwbintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/cmpccxaddintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/cpuid.h +0 -0
- /package/lib/clang/{16 → 18}/include/crc32intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{16 → 18}/include/cuda_wrappers/cmath +0 -0
- /package/lib/clang/{16 → 18}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{16 → 18}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{16 → 18}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/f16cintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/float.h +0 -0
- /package/lib/clang/{16 → 18}/include/fma4intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{16 → 18}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{16 → 18}/include/hexagon_types.h +0 -0
- /package/lib/clang/{16 → 18}/include/hlsl/hlsl_basic_types.h +0 -0
- /package/lib/clang/{16 → 18}/include/hlsl.h +0 -0
- /package/lib/clang/{16 → 18}/include/hresetintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/htmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{16 → 18}/include/inttypes.h +0 -0
- /package/lib/clang/{16 → 18}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/iso646.h +0 -0
- /package/lib/clang/{16 → 18}/include/keylockerintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/lwpintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/mm3dnow.h +0 -0
- /package/lib/clang/{16 → 18}/include/mm_malloc.h +0 -0
- /package/lib/clang/{16 → 18}/include/movdirintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/msa.h +0 -0
- /package/lib/clang/{16 → 18}/include/nmmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/opencl-c.h +0 -0
- /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{16 → 18}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{16 → 18}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/pkuintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/popcntintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/raointintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/rtmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/s390intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/serializeintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/sgxintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/stdbool.h +0 -0
- /package/lib/clang/{16 → 18}/include/tbmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/tgmath.h +0 -0
- /package/lib/clang/{16 → 18}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/uintrintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/unwind.h +0 -0
- /package/lib/clang/{16 → 18}/include/vadefs.h +0 -0
- /package/lib/clang/{16 → 18}/include/varargs.h +0 -0
- /package/lib/clang/{16 → 18}/include/velintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{16 → 18}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{16 → 18}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/wmmintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/x86intrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/xopintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{16 → 18}/include/xtestintrin.h +0 -0
|
@@ -28,8 +28,9 @@
|
|
|
28
28
|
#ifndef _AVX512VP2INTERSECT_H
|
|
29
29
|
#define _AVX512VP2INTERSECT_H
|
|
30
30
|
|
|
31
|
-
#define __DEFAULT_FN_ATTRS
|
|
32
|
-
__attribute__((__always_inline__, __nodebug__,
|
|
31
|
+
#define __DEFAULT_FN_ATTRS \
|
|
32
|
+
__attribute__((__always_inline__, __nodebug__, \
|
|
33
|
+
__target__("avx512vp2intersect,evex512"), \
|
|
33
34
|
__min_vector_width__(512)))
|
|
34
35
|
|
|
35
36
|
/// Store, in an even/odd pair of mask registers, the indicators of the
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
|
|
18
18
|
/* Define the default attributes for the functions in this file. */
|
|
19
19
|
#define __DEFAULT_FN_ATTRS \
|
|
20
|
-
__attribute__((__always_inline__, __nodebug__,
|
|
20
|
+
__attribute__((__always_inline__, __nodebug__, \
|
|
21
|
+
__target__("avx512vpopcntdq,evex512"), \
|
|
22
|
+
__min_vector_width__(512)))
|
|
21
23
|
|
|
22
24
|
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi64(__m512i __A) {
|
|
23
25
|
return (__m512i)__builtin_ia32_vpopcntq_512((__v8di)__A);
|
|
@@ -17,9 +17,13 @@
|
|
|
17
17
|
|
|
18
18
|
/* Define the default attributes for the functions in this file. */
|
|
19
19
|
#define __DEFAULT_FN_ATTRS128 \
|
|
20
|
-
__attribute__((__always_inline__, __nodebug__,
|
|
20
|
+
__attribute__((__always_inline__, __nodebug__, \
|
|
21
|
+
__target__("avx512vpopcntdq,avx512vl,no-evex512"), \
|
|
22
|
+
__min_vector_width__(128)))
|
|
21
23
|
#define __DEFAULT_FN_ATTRS256 \
|
|
22
|
-
__attribute__((__always_inline__, __nodebug__,
|
|
24
|
+
__attribute__((__always_inline__, __nodebug__, \
|
|
25
|
+
__target__("avx512vpopcntdq,avx512vl,no-evex512"), \
|
|
26
|
+
__min_vector_width__(256)))
|
|
23
27
|
|
|
24
28
|
static __inline__ __m128i __DEFAULT_FN_ATTRS128
|
|
25
29
|
_mm_popcnt_epi64(__m128i __A) {
|
|
@@ -50,8 +50,12 @@ typedef __bf16 __m256bh __attribute__((__vector_size__(32), __aligned__(32)));
|
|
|
50
50
|
#endif
|
|
51
51
|
|
|
52
52
|
/* Define the default attributes for the functions in this file. */
|
|
53
|
-
#define __DEFAULT_FN_ATTRS
|
|
54
|
-
|
|
53
|
+
#define __DEFAULT_FN_ATTRS \
|
|
54
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \
|
|
55
|
+
__min_vector_width__(256)))
|
|
56
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
57
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx,no-evex512"), \
|
|
58
|
+
__min_vector_width__(128)))
|
|
55
59
|
|
|
56
60
|
/* Arithmetic */
|
|
57
61
|
/// Adds two 256-bit vectors of [4 x double].
|
|
@@ -3017,8 +3021,11 @@ _mm256_zeroupper(void)
|
|
|
3017
3021
|
static __inline __m128 __DEFAULT_FN_ATTRS128
|
|
3018
3022
|
_mm_broadcast_ss(float const *__a)
|
|
3019
3023
|
{
|
|
3020
|
-
|
|
3021
|
-
|
|
3024
|
+
struct __mm_broadcast_ss_struct {
|
|
3025
|
+
float __f;
|
|
3026
|
+
} __attribute__((__packed__, __may_alias__));
|
|
3027
|
+
float __f = ((const struct __mm_broadcast_ss_struct*)__a)->__f;
|
|
3028
|
+
return __extension__ (__m128){ __f, __f, __f, __f };
|
|
3022
3029
|
}
|
|
3023
3030
|
|
|
3024
3031
|
/// Loads a scalar double-precision floating point value from the
|
|
@@ -3036,7 +3043,10 @@ _mm_broadcast_ss(float const *__a)
|
|
|
3036
3043
|
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
3037
3044
|
_mm256_broadcast_sd(double const *__a)
|
|
3038
3045
|
{
|
|
3039
|
-
|
|
3046
|
+
struct __mm256_broadcast_sd_struct {
|
|
3047
|
+
double __d;
|
|
3048
|
+
} __attribute__((__packed__, __may_alias__));
|
|
3049
|
+
double __d = ((const struct __mm256_broadcast_sd_struct*)__a)->__d;
|
|
3040
3050
|
return __extension__ (__m256d)(__v4df){ __d, __d, __d, __d };
|
|
3041
3051
|
}
|
|
3042
3052
|
|
|
@@ -3055,7 +3065,10 @@ _mm256_broadcast_sd(double const *__a)
|
|
|
3055
3065
|
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
3056
3066
|
_mm256_broadcast_ss(float const *__a)
|
|
3057
3067
|
{
|
|
3058
|
-
|
|
3068
|
+
struct __mm256_broadcast_ss_struct {
|
|
3069
|
+
float __f;
|
|
3070
|
+
} __attribute__((__packed__, __may_alias__));
|
|
3071
|
+
float __f = ((const struct __mm256_broadcast_ss_struct*)__a)->__f;
|
|
3059
3072
|
return __extension__ (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f };
|
|
3060
3073
|
}
|
|
3061
3074
|
|
|
@@ -3554,7 +3567,7 @@ _mm_maskstore_ps(float *__p, __m128i __m, __m128 __a)
|
|
|
3554
3567
|
/// \param __b
|
|
3555
3568
|
/// A 256-bit integer vector containing the values to be moved.
|
|
3556
3569
|
static __inline void __DEFAULT_FN_ATTRS
|
|
3557
|
-
_mm256_stream_si256(
|
|
3570
|
+
_mm256_stream_si256(void *__a, __m256i __b)
|
|
3558
3571
|
{
|
|
3559
3572
|
typedef __v4di __v4di_aligned __attribute__((aligned(32)));
|
|
3560
3573
|
__builtin_nontemporal_store((__v4di_aligned)__b, (__v4di_aligned*)__a);
|
|
@@ -3574,7 +3587,7 @@ _mm256_stream_si256(__m256i *__a, __m256i __b)
|
|
|
3574
3587
|
/// \param __b
|
|
3575
3588
|
/// A 256-bit vector of [4 x double] containing the values to be moved.
|
|
3576
3589
|
static __inline void __DEFAULT_FN_ATTRS
|
|
3577
|
-
_mm256_stream_pd(
|
|
3590
|
+
_mm256_stream_pd(void *__a, __m256d __b)
|
|
3578
3591
|
{
|
|
3579
3592
|
typedef __v4df __v4df_aligned __attribute__((aligned(32)));
|
|
3580
3593
|
__builtin_nontemporal_store((__v4df_aligned)__b, (__v4df_aligned*)__a);
|
|
@@ -3595,7 +3608,7 @@ _mm256_stream_pd(double *__a, __m256d __b)
|
|
|
3595
3608
|
/// \param __a
|
|
3596
3609
|
/// A 256-bit vector of [8 x float] containing the values to be moved.
|
|
3597
3610
|
static __inline void __DEFAULT_FN_ATTRS
|
|
3598
|
-
_mm256_stream_ps(
|
|
3611
|
+
_mm256_stream_ps(void *__p, __m256 __a)
|
|
3599
3612
|
{
|
|
3600
3613
|
typedef __v8sf __v8sf_aligned __attribute__((aligned(32)));
|
|
3601
3614
|
__builtin_nontemporal_store((__v8sf_aligned)__a, (__v8sf_aligned*)__p);
|
|
@@ -4499,7 +4512,8 @@ _mm256_castsi256_si128(__m256i __a)
|
|
|
4499
4512
|
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4500
4513
|
_mm256_castpd128_pd256(__m128d __a)
|
|
4501
4514
|
{
|
|
4502
|
-
return __builtin_shufflevector(
|
|
4515
|
+
return __builtin_shufflevector(
|
|
4516
|
+
(__v2df)__a, (__v2df)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
|
|
4503
4517
|
}
|
|
4504
4518
|
|
|
4505
4519
|
/// Constructs a 256-bit floating-point vector of [8 x float] from a
|
|
@@ -4520,7 +4534,9 @@ _mm256_castpd128_pd256(__m128d __a)
|
|
|
4520
4534
|
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4521
4535
|
_mm256_castps128_ps256(__m128 __a)
|
|
4522
4536
|
{
|
|
4523
|
-
return __builtin_shufflevector((__v4sf)__a,
|
|
4537
|
+
return __builtin_shufflevector((__v4sf)__a,
|
|
4538
|
+
(__v4sf)__builtin_nondeterministic_value(__a),
|
|
4539
|
+
0, 1, 2, 3, 4, 5, 6, 7);
|
|
4524
4540
|
}
|
|
4525
4541
|
|
|
4526
4542
|
/// Constructs a 256-bit integer vector from a 128-bit integer vector.
|
|
@@ -4539,7 +4555,8 @@ _mm256_castps128_ps256(__m128 __a)
|
|
|
4539
4555
|
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
4540
4556
|
_mm256_castsi128_si256(__m128i __a)
|
|
4541
4557
|
{
|
|
4542
|
-
return __builtin_shufflevector(
|
|
4558
|
+
return __builtin_shufflevector(
|
|
4559
|
+
(__v2di)__a, (__v2di)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
|
|
4543
4560
|
}
|
|
4544
4561
|
|
|
4545
4562
|
/// Constructs a 256-bit floating-point vector of [4 x double] from a
|
|
@@ -0,0 +1,473 @@
|
|
|
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
|
+
/* Define the default attributes for the functions in this file. */
|
|
19
|
+
#define __DEFAULT_FN_ATTRS128 \
|
|
20
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnniint16"), \
|
|
21
|
+
__min_vector_width__(128)))
|
|
22
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
23
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avxvnniint16"), \
|
|
24
|
+
__min_vector_width__(256)))
|
|
25
|
+
|
|
26
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
27
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
28
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
29
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
30
|
+
///
|
|
31
|
+
/// \headerfile <immintrin.h>
|
|
32
|
+
///
|
|
33
|
+
/// \code
|
|
34
|
+
/// __m128i _mm_dpwsud_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
35
|
+
/// \endcode
|
|
36
|
+
///
|
|
37
|
+
/// This intrinsic corresponds to the \c VPDPWSUD instruction.
|
|
38
|
+
///
|
|
39
|
+
/// \param __W
|
|
40
|
+
/// A 128-bit vector of [4 x int].
|
|
41
|
+
/// \param __A
|
|
42
|
+
/// A 128-bit vector of [8 x short].
|
|
43
|
+
/// \param __B
|
|
44
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
45
|
+
/// \returns
|
|
46
|
+
/// A 128-bit vector of [4 x int].
|
|
47
|
+
///
|
|
48
|
+
/// \code{.operation}
|
|
49
|
+
/// FOR j := 0 to 3
|
|
50
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
51
|
+
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
52
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
53
|
+
/// ENDFOR
|
|
54
|
+
/// dst[MAX:128] := 0
|
|
55
|
+
/// \endcode
|
|
56
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsud_epi32(__m128i __W,
|
|
57
|
+
__m128i __A,
|
|
58
|
+
__m128i __B) {
|
|
59
|
+
return (__m128i)__builtin_ia32_vpdpwsud128((__v4si)__W, (__v4si)__A,
|
|
60
|
+
(__v4si)__B);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
64
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
65
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
66
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
67
|
+
///
|
|
68
|
+
/// \headerfile <immintrin.h>
|
|
69
|
+
///
|
|
70
|
+
/// \code
|
|
71
|
+
/// __m256i _mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
72
|
+
/// \endcode
|
|
73
|
+
///
|
|
74
|
+
/// This intrinsic corresponds to the \c VPDPWSUD instruction.
|
|
75
|
+
///
|
|
76
|
+
/// \param __W
|
|
77
|
+
/// A 256-bit vector of [8 x int].
|
|
78
|
+
/// \param __A
|
|
79
|
+
/// A 256-bit vector of [16 x short].
|
|
80
|
+
/// \param __B
|
|
81
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
82
|
+
/// \returns
|
|
83
|
+
/// A 256-bit vector of [8 x int].
|
|
84
|
+
///
|
|
85
|
+
/// \code{.operation}
|
|
86
|
+
/// FOR j := 0 to 7
|
|
87
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
88
|
+
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
89
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
90
|
+
/// ENDFOR
|
|
91
|
+
/// dst[MAX:256] := 0
|
|
92
|
+
/// \endcode
|
|
93
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
94
|
+
_mm256_dpwsud_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
95
|
+
return (__m256i)__builtin_ia32_vpdpwsud256((__v8si)__W, (__v8si)__A,
|
|
96
|
+
(__v8si)__B);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
100
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
101
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
102
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
103
|
+
/// 32-bit results in \a dst.
|
|
104
|
+
///
|
|
105
|
+
/// \headerfile <immintrin.h>
|
|
106
|
+
///
|
|
107
|
+
/// \code
|
|
108
|
+
/// __m128i _mm_dpwsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
109
|
+
/// \endcode
|
|
110
|
+
///
|
|
111
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
112
|
+
///
|
|
113
|
+
/// \param __W
|
|
114
|
+
/// A 128-bit vector of [4 x int].
|
|
115
|
+
/// \param __A
|
|
116
|
+
/// A 128-bit vector of [8 x short].
|
|
117
|
+
/// \param __B
|
|
118
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
119
|
+
/// \returns
|
|
120
|
+
/// A 128-bit vector of [4 x int].
|
|
121
|
+
///
|
|
122
|
+
/// \code{.operation}
|
|
123
|
+
/// FOR j := 0 to 3
|
|
124
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
125
|
+
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
126
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
127
|
+
/// ENDFOR
|
|
128
|
+
/// dst[MAX:128] := 0
|
|
129
|
+
/// \endcode
|
|
130
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwsuds_epi32(__m128i __W,
|
|
131
|
+
__m128i __A,
|
|
132
|
+
__m128i __B) {
|
|
133
|
+
return (__m128i)__builtin_ia32_vpdpwsuds128((__v4si)__W, (__v4si)__A,
|
|
134
|
+
(__v4si)__B);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/// Multiply groups of 2 adjacent pairs of signed 16-bit integers in \a __A with
|
|
138
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
139
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
140
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
141
|
+
/// 32-bit results in \a dst.
|
|
142
|
+
///
|
|
143
|
+
/// \headerfile <immintrin.h>
|
|
144
|
+
///
|
|
145
|
+
/// \code
|
|
146
|
+
/// __m256i _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
147
|
+
/// \endcode
|
|
148
|
+
///
|
|
149
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
150
|
+
///
|
|
151
|
+
/// \param __W
|
|
152
|
+
/// A 256-bit vector of [8 x int].
|
|
153
|
+
/// \param __A
|
|
154
|
+
/// A 256-bit vector of [16 x short].
|
|
155
|
+
/// \param __B
|
|
156
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
157
|
+
/// \returns
|
|
158
|
+
/// A 256-bit vector of [8 x int].
|
|
159
|
+
///
|
|
160
|
+
/// \code{.operation}
|
|
161
|
+
/// FOR j := 0 to 7
|
|
162
|
+
/// tmp1.dword := SignExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
163
|
+
/// tmp2.dword := SignExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
164
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
165
|
+
/// ENDFOR
|
|
166
|
+
/// dst[MAX:256] := 0
|
|
167
|
+
/// \endcode
|
|
168
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
169
|
+
_mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
170
|
+
return (__m256i)__builtin_ia32_vpdpwsuds256((__v8si)__W, (__v8si)__A,
|
|
171
|
+
(__v8si)__B);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
175
|
+
/// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
|
|
176
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
177
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
178
|
+
///
|
|
179
|
+
/// \headerfile <immintrin.h>
|
|
180
|
+
///
|
|
181
|
+
/// \code
|
|
182
|
+
/// __m128i _mm_dpbusd_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
183
|
+
/// \endcode
|
|
184
|
+
///
|
|
185
|
+
/// This intrinsic corresponds to the \c VPDPWUSD instruction.
|
|
186
|
+
///
|
|
187
|
+
/// \param __W
|
|
188
|
+
/// A 128-bit vector of [4 x int].
|
|
189
|
+
/// \param __A
|
|
190
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
191
|
+
/// \param __B
|
|
192
|
+
/// A 128-bit vector of [8 x short].
|
|
193
|
+
/// \returns
|
|
194
|
+
/// A 128-bit vector of [4 x int].
|
|
195
|
+
///
|
|
196
|
+
/// \code{.operation}
|
|
197
|
+
/// FOR j := 0 to 3
|
|
198
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
199
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
200
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
201
|
+
/// ENDFOR
|
|
202
|
+
/// dst[MAX:128] := 0
|
|
203
|
+
/// \endcode
|
|
204
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusd_epi32(__m128i __W,
|
|
205
|
+
__m128i __A,
|
|
206
|
+
__m128i __B) {
|
|
207
|
+
return (__m128i)__builtin_ia32_vpdpwusd128((__v4si)__W, (__v4si)__A,
|
|
208
|
+
(__v4si)__B);
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
212
|
+
/// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
|
|
213
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
214
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
215
|
+
///
|
|
216
|
+
/// \headerfile <immintrin.h>
|
|
217
|
+
///
|
|
218
|
+
/// \code
|
|
219
|
+
/// __m256i _mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
220
|
+
/// \endcode
|
|
221
|
+
///
|
|
222
|
+
/// This intrinsic corresponds to the \c VPDPWUSD instruction.
|
|
223
|
+
///
|
|
224
|
+
/// \param __W
|
|
225
|
+
/// A 256-bit vector of [8 x int].
|
|
226
|
+
/// \param __A
|
|
227
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
228
|
+
/// \param __B
|
|
229
|
+
/// A 256-bit vector of [16 x short].
|
|
230
|
+
/// \returns
|
|
231
|
+
/// A 256-bit vector of [8 x int].
|
|
232
|
+
///
|
|
233
|
+
/// \code{.operation}
|
|
234
|
+
/// FOR j := 0 to 7
|
|
235
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
236
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
237
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
238
|
+
/// ENDFOR
|
|
239
|
+
/// dst[MAX:256] := 0
|
|
240
|
+
/// \endcode
|
|
241
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
242
|
+
_mm256_dpwusd_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
243
|
+
return (__m256i)__builtin_ia32_vpdpwusd256((__v8si)__W, (__v8si)__A,
|
|
244
|
+
(__v8si)__B);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
248
|
+
/// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
|
|
249
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
250
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
251
|
+
/// 32-bit results in \a dst.
|
|
252
|
+
///
|
|
253
|
+
/// \headerfile <immintrin.h>
|
|
254
|
+
///
|
|
255
|
+
/// \code
|
|
256
|
+
/// __m128i _mm_dpwusds_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
257
|
+
/// \endcode
|
|
258
|
+
///
|
|
259
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
260
|
+
///
|
|
261
|
+
/// \param __W
|
|
262
|
+
/// A 128-bit vector of [4 x int].
|
|
263
|
+
/// \param __A
|
|
264
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
265
|
+
/// \param __B
|
|
266
|
+
/// A 128-bit vector of [8 x short].
|
|
267
|
+
/// \returns
|
|
268
|
+
/// A 128-bit vector of [4 x int].
|
|
269
|
+
///
|
|
270
|
+
/// \code{.operation}
|
|
271
|
+
/// FOR j := 0 to 3
|
|
272
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
273
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
274
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
275
|
+
/// ENDFOR
|
|
276
|
+
/// dst[MAX:128] := 0
|
|
277
|
+
/// \endcode
|
|
278
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwusds_epi32(__m128i __W,
|
|
279
|
+
__m128i __A,
|
|
280
|
+
__m128i __B) {
|
|
281
|
+
return (__m128i)__builtin_ia32_vpdpwusds128((__v4si)__W, (__v4si)__A,
|
|
282
|
+
(__v4si)__B);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
286
|
+
/// corresponding signed 16-bit integers in \a __B, producing 2 intermediate
|
|
287
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
288
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
289
|
+
/// 32-bit results in \a dst.
|
|
290
|
+
///
|
|
291
|
+
/// \headerfile <immintrin.h>
|
|
292
|
+
///
|
|
293
|
+
/// \code
|
|
294
|
+
/// __m256i _mm256_dpwsuds_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
295
|
+
/// \endcode
|
|
296
|
+
///
|
|
297
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
298
|
+
///
|
|
299
|
+
/// \param __W
|
|
300
|
+
/// A 256-bit vector of [8 x int].
|
|
301
|
+
/// \param __A
|
|
302
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
303
|
+
/// \param __B
|
|
304
|
+
/// A 256-bit vector of [16 x short].
|
|
305
|
+
/// \returns
|
|
306
|
+
/// A 256-bit vector of [8 x int].
|
|
307
|
+
///
|
|
308
|
+
/// \code{.operation}
|
|
309
|
+
/// FOR j := 0 to 7
|
|
310
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * SignExtend32(__B.word[2*j])
|
|
311
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * SignExtend32(__B.word[2*j+1])
|
|
312
|
+
/// dst.dword[j] := SIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
313
|
+
/// ENDFOR
|
|
314
|
+
/// dst[MAX:256] := 0
|
|
315
|
+
/// \endcode
|
|
316
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
317
|
+
_mm256_dpwusds_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
318
|
+
return (__m256i)__builtin_ia32_vpdpwusds256((__v8si)__W, (__v8si)__A,
|
|
319
|
+
(__v8si)__B);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
323
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
324
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
325
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
326
|
+
///
|
|
327
|
+
/// \headerfile <immintrin.h>
|
|
328
|
+
///
|
|
329
|
+
/// \code
|
|
330
|
+
/// __m128i _mm_dpwuud_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
331
|
+
/// \endcode
|
|
332
|
+
///
|
|
333
|
+
/// This intrinsic corresponds to the \c VPDPWUUD instruction.
|
|
334
|
+
///
|
|
335
|
+
/// \param __W
|
|
336
|
+
/// A 128-bit vector of [4 x unsigned int].
|
|
337
|
+
/// \param __A
|
|
338
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
339
|
+
/// \param __B
|
|
340
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
341
|
+
/// \returns
|
|
342
|
+
/// A 128-bit vector of [4 x unsigned int].
|
|
343
|
+
///
|
|
344
|
+
/// \code{.operation}
|
|
345
|
+
/// FOR j := 0 to 3
|
|
346
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
347
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
348
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
349
|
+
/// ENDFOR
|
|
350
|
+
/// dst[MAX:128] := 0
|
|
351
|
+
/// \endcode
|
|
352
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuud_epi32(__m128i __W,
|
|
353
|
+
__m128i __A,
|
|
354
|
+
__m128i __B) {
|
|
355
|
+
return (__m128i)__builtin_ia32_vpdpwuud128((__v4si)__W, (__v4si)__A,
|
|
356
|
+
(__v4si)__B);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
360
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
361
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
362
|
+
/// 32-bit integer in \a __W, and store the packed 32-bit results in \a dst.
|
|
363
|
+
///
|
|
364
|
+
/// \headerfile <immintrin.h>
|
|
365
|
+
///
|
|
366
|
+
/// \code
|
|
367
|
+
/// __m256i _mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
368
|
+
/// \endcode
|
|
369
|
+
///
|
|
370
|
+
/// This intrinsic corresponds to the \c VPDPWUUD instruction.
|
|
371
|
+
///
|
|
372
|
+
/// \param __W
|
|
373
|
+
/// A 256-bit vector of [8 x unsigned int].
|
|
374
|
+
/// \param __A
|
|
375
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
376
|
+
/// \param __B
|
|
377
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
378
|
+
/// \returns
|
|
379
|
+
/// A 256-bit vector of [8 x unsigned int].
|
|
380
|
+
///
|
|
381
|
+
/// \code{.operation}
|
|
382
|
+
/// FOR j := 0 to 7
|
|
383
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
384
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
385
|
+
/// dst.dword[j] := __W.dword[j] + tmp1 + tmp2
|
|
386
|
+
/// ENDFOR
|
|
387
|
+
/// dst[MAX:256] := 0
|
|
388
|
+
/// \endcode
|
|
389
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
390
|
+
_mm256_dpwuud_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
391
|
+
return (__m256i)__builtin_ia32_vpdpwuud256((__v8si)__W, (__v8si)__A,
|
|
392
|
+
(__v8si)__B);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
396
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
397
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
398
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
399
|
+
/// 32-bit results in \a dst.
|
|
400
|
+
///
|
|
401
|
+
/// \headerfile <immintrin.h>
|
|
402
|
+
///
|
|
403
|
+
/// \code
|
|
404
|
+
/// __m128i _mm_dpwsuds_epi32(__m128i __W, __m128i __A, __m128i __B)
|
|
405
|
+
/// \endcode
|
|
406
|
+
///
|
|
407
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
408
|
+
///
|
|
409
|
+
/// \param __W
|
|
410
|
+
/// A 128-bit vector of [4 x unsigned int].
|
|
411
|
+
/// \param __A
|
|
412
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
413
|
+
/// \param __B
|
|
414
|
+
/// A 128-bit vector of [8 x unsigned short].
|
|
415
|
+
/// \returns
|
|
416
|
+
/// A 128-bit vector of [4 x unsigned int].
|
|
417
|
+
///
|
|
418
|
+
/// \code{.operation}
|
|
419
|
+
/// FOR j := 0 to 3
|
|
420
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
421
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
422
|
+
/// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
423
|
+
/// ENDFOR
|
|
424
|
+
/// dst[MAX:128] := 0
|
|
425
|
+
/// \endcode
|
|
426
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_dpwuuds_epi32(__m128i __W,
|
|
427
|
+
__m128i __A,
|
|
428
|
+
__m128i __B) {
|
|
429
|
+
return (__m128i)__builtin_ia32_vpdpwuuds128((__v4si)__W, (__v4si)__A,
|
|
430
|
+
(__v4si)__B);
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/// Multiply groups of 2 adjacent pairs of unsigned 16-bit integers in \a __A with
|
|
434
|
+
/// corresponding unsigned 16-bit integers in \a __B, producing 2 intermediate
|
|
435
|
+
/// signed 16-bit results. Sum these 2 results with the corresponding
|
|
436
|
+
/// 32-bit integer in \a __W with signed saturation, and store the packed
|
|
437
|
+
/// 32-bit results in \a dst.
|
|
438
|
+
///
|
|
439
|
+
/// \headerfile <immintrin.h>
|
|
440
|
+
///
|
|
441
|
+
/// \code
|
|
442
|
+
/// __m256i _mm256_dpwuuds_epi32(__m256i __W, __m256i __A, __m256i __B)
|
|
443
|
+
/// \endcode
|
|
444
|
+
///
|
|
445
|
+
/// This intrinsic corresponds to the \c VPDPWSUDS instruction.
|
|
446
|
+
///
|
|
447
|
+
/// \param __W
|
|
448
|
+
/// A 256-bit vector of [8 x unsigned int].
|
|
449
|
+
/// \param __A
|
|
450
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
451
|
+
/// \param __B
|
|
452
|
+
/// A 256-bit vector of [16 x unsigned short].
|
|
453
|
+
/// \returns
|
|
454
|
+
/// A 256-bit vector of [8 x unsigned int].
|
|
455
|
+
///
|
|
456
|
+
/// \code{.operation}
|
|
457
|
+
/// FOR j := 0 to 7
|
|
458
|
+
/// tmp1.dword := ZeroExtend32(__A.word[2*j]) * ZeroExtend32(__B.word[2*j])
|
|
459
|
+
/// tmp2.dword := ZeroExtend32(__A.word[2*j+1]) * ZeroExtend32(__B.word[2*j+1])
|
|
460
|
+
/// dst.dword[j] := UNSIGNED_DWORD_SATURATE(__W.dword[j] + tmp1 + tmp2)
|
|
461
|
+
/// ENDFOR
|
|
462
|
+
/// dst[MAX:256] := 0
|
|
463
|
+
/// \endcode
|
|
464
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
465
|
+
_mm256_dpwuuds_epi32(__m256i __W, __m256i __A, __m256i __B) {
|
|
466
|
+
return (__m256i)__builtin_ia32_vpdpwuuds256((__v8si)__W, (__v8si)__A,
|
|
467
|
+
(__v8si)__B);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
#undef __DEFAULT_FN_ATTRS128
|
|
471
|
+
#undef __DEFAULT_FN_ATTRS256
|
|
472
|
+
|
|
473
|
+
#endif // __AVXVNNIINT16INTRIN_H
|