@cpp-linter/clang-tidy-win32-x64 16.0.3 → 17.0.6
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/{16 → 17}/include/__clang_cuda_intrinsics.h +191 -0
- package/lib/clang/{16 → 17}/include/__clang_cuda_math.h +1 -1
- package/lib/clang/{16 → 17}/include/__clang_hip_cmath.h +1 -1
- package/lib/clang/{16 → 17}/include/__clang_hip_libdevice_declares.h +32 -30
- package/lib/clang/{16 → 17}/include/__clang_hip_math.h +56 -71
- package/lib/clang/{16 → 17}/include/__clang_hip_runtime_wrapper.h +13 -0
- package/lib/clang/17/include/adxintrin.h +227 -0
- package/lib/clang/{16 → 17}/include/altivec.h +136 -124
- package/lib/clang/17/include/amxcomplexintrin.h +169 -0
- package/lib/clang/{16 → 17}/include/arm_acle.h +13 -9
- package/lib/clang/{16 → 17}/include/arm_neon.h +164 -1
- package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +642 -0
- package/lib/clang/{16 → 17}/include/arm_sve.h +68 -13
- package/lib/clang/17/include/avx2intrin.h +5263 -0
- package/lib/clang/{16 → 17}/include/avx512fintrin.h +17 -7
- package/lib/clang/{16 → 17}/include/avx512fp16intrin.h +12 -8
- package/lib/clang/{16 → 17}/include/avxintrin.h +20 -7
- package/lib/clang/17/include/avxvnniint16intrin.h +473 -0
- package/lib/clang/17/include/bmi2intrin.h +255 -0
- package/lib/clang/{16 → 17}/include/clflushoptintrin.h +9 -0
- package/lib/clang/{16 → 17}/include/clzerointrin.h +7 -5
- package/lib/clang/17/include/cuda_wrappers/bits/basic_string.h +9 -0
- package/lib/clang/17/include/cuda_wrappers/bits/basic_string.tcc +9 -0
- package/lib/clang/17/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
- package/lib/clang/17/include/fmaintrin.h +780 -0
- package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +480 -0
- package/lib/clang/{16 → 17}/include/immintrin.h +116 -8
- package/lib/clang/{16 → 17}/include/limits.h +5 -1
- package/lib/clang/17/include/llvm_libc_wrappers/ctype.h +85 -0
- package/lib/clang/17/include/llvm_libc_wrappers/inttypes.h +34 -0
- package/lib/clang/17/include/llvm_libc_wrappers/stdio.h +34 -0
- package/lib/clang/17/include/llvm_libc_wrappers/stdlib.h +42 -0
- package/lib/clang/17/include/llvm_libc_wrappers/string.h +37 -0
- package/lib/clang/17/include/mwaitxintrin.h +62 -0
- package/lib/clang/{16 → 17}/include/opencl-c-base.h +3 -0
- package/lib/clang/{16 → 17}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
- package/lib/clang/{16 → 17}/include/openmp_wrappers/new +1 -1
- package/lib/clang/{16 → 17}/include/pmmintrin.h +12 -6
- package/lib/clang/{16 → 17}/include/ppc_wrappers/emmintrin.h +2 -1
- package/lib/clang/{16 → 17}/include/ppc_wrappers/smmintrin.h +2 -2
- package/lib/clang/17/include/rdseedintrin.h +105 -0
- package/lib/clang/17/include/riscv_ntlh.h +28 -0
- package/lib/clang/17/include/riscv_vector.h +400 -0
- package/lib/clang/17/include/sha512intrin.h +200 -0
- package/lib/clang/17/include/shaintrin.h +189 -0
- package/lib/clang/17/include/sifive_vector.h +16 -0
- package/lib/clang/17/include/sm3intrin.h +238 -0
- package/lib/clang/17/include/sm4intrin.h +269 -0
- package/lib/clang/{16 → 17}/include/stdalign.h +5 -0
- package/lib/clang/{16 → 17}/include/stdatomic.h +9 -2
- package/lib/clang/{16 → 17}/include/stddef.h +5 -0
- package/lib/clang/{16 → 17}/include/wasm_simd128.h +132 -12
- package/lib/clang/17/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/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/xsavecintrin.h +0 -34
- /package/lib/clang/{16 → 17}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{16 → 17}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{16 → 17}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{16 → 17}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{16 → 17}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{16 → 17}/include/ammintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/amxfp16intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/amxintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm64intr.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm_bf16.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm_cde.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm_cmse.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm_fp16.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm_mve.h +0 -0
- /package/lib/clang/{16 → 17}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{16 → 17}/include/armintr.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512bf16intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512bwintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512erintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512ifmavlintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlbf16intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlbwintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlfp16intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlvnniintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avxvnniint8intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/bmiintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/builtins.h +0 -0
- /package/lib/clang/{16 → 17}/include/cet.h +0 -0
- /package/lib/clang/{16 → 17}/include/cetintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/clwbintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/cmpccxaddintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/cpuid.h +0 -0
- /package/lib/clang/{16 → 17}/include/crc32intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{16 → 17}/include/cuda_wrappers/cmath +0 -0
- /package/lib/clang/{16 → 17}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{16 → 17}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{16 → 17}/include/emmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/f16cintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/float.h +0 -0
- /package/lib/clang/{16 → 17}/include/fma4intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/gfniintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{16 → 17}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{16 → 17}/include/hexagon_types.h +0 -0
- /package/lib/clang/{16 → 17}/include/hlsl/hlsl_basic_types.h +0 -0
- /package/lib/clang/{16 → 17}/include/hlsl.h +0 -0
- /package/lib/clang/{16 → 17}/include/hresetintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/htmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{16 → 17}/include/ia32intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/inttypes.h +0 -0
- /package/lib/clang/{16 → 17}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/iso646.h +0 -0
- /package/lib/clang/{16 → 17}/include/keylockerintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/larchintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/lwpintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/mm3dnow.h +0 -0
- /package/lib/clang/{16 → 17}/include/mm_malloc.h +0 -0
- /package/lib/clang/{16 → 17}/include/mmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/module.modulemap +0 -0
- /package/lib/clang/{16 → 17}/include/movdirintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/msa.h +0 -0
- /package/lib/clang/{16 → 17}/include/nmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/opencl-c.h +0 -0
- /package/lib/clang/{16 → 17}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{16 → 17}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{16 → 17}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{16 → 17}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{16 → 17}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{16 → 17}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/pkuintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/popcntintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/raointintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/rtmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/s390intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/serializeintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/sgxintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/smmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/stdarg.h +0 -0
- /package/lib/clang/{16 → 17}/include/stdbool.h +0 -0
- /package/lib/clang/{16 → 17}/include/stdint.h +0 -0
- /package/lib/clang/{16 → 17}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{16 → 17}/include/tbmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/tgmath.h +0 -0
- /package/lib/clang/{16 → 17}/include/tmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/uintrintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/unwind.h +0 -0
- /package/lib/clang/{16 → 17}/include/vadefs.h +0 -0
- /package/lib/clang/{16 → 17}/include/vaesintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/varargs.h +0 -0
- /package/lib/clang/{16 → 17}/include/vecintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/velintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{16 → 17}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{16 → 17}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/wmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/x86gprintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/x86intrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/xmmintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/xopintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{16 → 17}/include/xtestintrin.h +0 -0
|
@@ -397,14 +397,15 @@ _mm512_broadcastsd_pd(__m128d __A)
|
|
|
397
397
|
static __inline __m512d __DEFAULT_FN_ATTRS512
|
|
398
398
|
_mm512_castpd256_pd512(__m256d __a)
|
|
399
399
|
{
|
|
400
|
-
return __builtin_shufflevector(__a, __a, 0,
|
|
400
|
+
return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a), 0,
|
|
401
|
+
1, 2, 3, 4, 5, 6, 7);
|
|
401
402
|
}
|
|
402
403
|
|
|
403
404
|
static __inline __m512 __DEFAULT_FN_ATTRS512
|
|
404
405
|
_mm512_castps256_ps512(__m256 __a)
|
|
405
406
|
{
|
|
406
|
-
return __builtin_shufflevector(__a, __a, 0,
|
|
407
|
-
|
|
407
|
+
return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a), 0,
|
|
408
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
|
408
409
|
}
|
|
409
410
|
|
|
410
411
|
static __inline __m128d __DEFAULT_FN_ATTRS512
|
|
@@ -446,7 +447,10 @@ _mm512_castpd_si512 (__m512d __A)
|
|
|
446
447
|
static __inline__ __m512d __DEFAULT_FN_ATTRS512
|
|
447
448
|
_mm512_castpd128_pd512 (__m128d __A)
|
|
448
449
|
{
|
|
449
|
-
|
|
450
|
+
__m256d __B = __builtin_nondeterministic_value(__B);
|
|
451
|
+
return __builtin_shufflevector(
|
|
452
|
+
__builtin_shufflevector(__A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3),
|
|
453
|
+
__B, 0, 1, 2, 3, 4, 5, 6, 7);
|
|
450
454
|
}
|
|
451
455
|
|
|
452
456
|
static __inline __m512d __DEFAULT_FN_ATTRS512
|
|
@@ -464,19 +468,25 @@ _mm512_castps_si512 (__m512 __A)
|
|
|
464
468
|
static __inline__ __m512 __DEFAULT_FN_ATTRS512
|
|
465
469
|
_mm512_castps128_ps512 (__m128 __A)
|
|
466
470
|
{
|
|
467
|
-
|
|
471
|
+
__m256 __B = __builtin_nondeterministic_value(__B);
|
|
472
|
+
return __builtin_shufflevector(
|
|
473
|
+
__builtin_shufflevector(__A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3, 4, 5, 6, 7),
|
|
474
|
+
__B, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
|
468
475
|
}
|
|
469
476
|
|
|
470
477
|
static __inline__ __m512i __DEFAULT_FN_ATTRS512
|
|
471
478
|
_mm512_castsi128_si512 (__m128i __A)
|
|
472
479
|
{
|
|
473
|
-
|
|
480
|
+
__m256i __B = __builtin_nondeterministic_value(__B);
|
|
481
|
+
return __builtin_shufflevector(
|
|
482
|
+
__builtin_shufflevector(__A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3),
|
|
483
|
+
__B, 0, 1, 2, 3, 4, 5, 6, 7);
|
|
474
484
|
}
|
|
475
485
|
|
|
476
486
|
static __inline__ __m512i __DEFAULT_FN_ATTRS512
|
|
477
487
|
_mm512_castsi256_si512 (__m256i __A)
|
|
478
488
|
{
|
|
479
|
-
return __builtin_shufflevector( __A, __A, 0, 1, 2, 3,
|
|
489
|
+
return __builtin_shufflevector( __A, __builtin_nondeterministic_value(__A), 0, 1, 2, 3, 4, 5, 6, 7);
|
|
480
490
|
}
|
|
481
491
|
|
|
482
492
|
static __inline __m512 __DEFAULT_FN_ATTRS512
|
|
@@ -192,22 +192,26 @@ _mm512_castph512_ph256(__m512h __a) {
|
|
|
192
192
|
|
|
193
193
|
static __inline__ __m256h __DEFAULT_FN_ATTRS256
|
|
194
194
|
_mm256_castph128_ph256(__m128h __a) {
|
|
195
|
-
return __builtin_shufflevector(__a, __a,
|
|
196
|
-
|
|
195
|
+
return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a),
|
|
196
|
+
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
|
|
197
197
|
}
|
|
198
198
|
|
|
199
199
|
static __inline__ __m512h __DEFAULT_FN_ATTRS512
|
|
200
200
|
_mm512_castph128_ph512(__m128h __a) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
201
|
+
__m256h __b = __builtin_nondeterministic_value(__b);
|
|
202
|
+
return __builtin_shufflevector(
|
|
203
|
+
__builtin_shufflevector(__a, __builtin_nondeterministic_value(__a),
|
|
204
|
+
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15),
|
|
205
|
+
__b, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
|
206
|
+
20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31);
|
|
204
207
|
}
|
|
205
208
|
|
|
206
209
|
static __inline__ __m512h __DEFAULT_FN_ATTRS512
|
|
207
210
|
_mm512_castph256_ph512(__m256h __a) {
|
|
208
|
-
return __builtin_shufflevector(__a, __a, 0,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
+
return __builtin_shufflevector(__a, __builtin_nondeterministic_value(__a), 0,
|
|
212
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
|
|
213
|
+
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
|
|
214
|
+
27, 28, 29, 30, 31);
|
|
211
215
|
}
|
|
212
216
|
|
|
213
217
|
/// Constructs a 256-bit floating-point vector of [16 x half] from a
|
|
@@ -3017,8 +3017,11 @@ _mm256_zeroupper(void)
|
|
|
3017
3017
|
static __inline __m128 __DEFAULT_FN_ATTRS128
|
|
3018
3018
|
_mm_broadcast_ss(float const *__a)
|
|
3019
3019
|
{
|
|
3020
|
-
|
|
3021
|
-
|
|
3020
|
+
struct __mm_broadcast_ss_struct {
|
|
3021
|
+
float __f;
|
|
3022
|
+
} __attribute__((__packed__, __may_alias__));
|
|
3023
|
+
float __f = ((const struct __mm_broadcast_ss_struct*)__a)->__f;
|
|
3024
|
+
return __extension__ (__m128){ __f, __f, __f, __f };
|
|
3022
3025
|
}
|
|
3023
3026
|
|
|
3024
3027
|
/// Loads a scalar double-precision floating point value from the
|
|
@@ -3036,7 +3039,10 @@ _mm_broadcast_ss(float const *__a)
|
|
|
3036
3039
|
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
3037
3040
|
_mm256_broadcast_sd(double const *__a)
|
|
3038
3041
|
{
|
|
3039
|
-
|
|
3042
|
+
struct __mm256_broadcast_sd_struct {
|
|
3043
|
+
double __d;
|
|
3044
|
+
} __attribute__((__packed__, __may_alias__));
|
|
3045
|
+
double __d = ((const struct __mm256_broadcast_sd_struct*)__a)->__d;
|
|
3040
3046
|
return __extension__ (__m256d)(__v4df){ __d, __d, __d, __d };
|
|
3041
3047
|
}
|
|
3042
3048
|
|
|
@@ -3055,7 +3061,10 @@ _mm256_broadcast_sd(double const *__a)
|
|
|
3055
3061
|
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
3056
3062
|
_mm256_broadcast_ss(float const *__a)
|
|
3057
3063
|
{
|
|
3058
|
-
|
|
3064
|
+
struct __mm256_broadcast_ss_struct {
|
|
3065
|
+
float __f;
|
|
3066
|
+
} __attribute__((__packed__, __may_alias__));
|
|
3067
|
+
float __f = ((const struct __mm256_broadcast_ss_struct*)__a)->__f;
|
|
3059
3068
|
return __extension__ (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f };
|
|
3060
3069
|
}
|
|
3061
3070
|
|
|
@@ -4499,7 +4508,8 @@ _mm256_castsi256_si128(__m256i __a)
|
|
|
4499
4508
|
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4500
4509
|
_mm256_castpd128_pd256(__m128d __a)
|
|
4501
4510
|
{
|
|
4502
|
-
return __builtin_shufflevector(
|
|
4511
|
+
return __builtin_shufflevector(
|
|
4512
|
+
(__v2df)__a, (__v2df)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
|
|
4503
4513
|
}
|
|
4504
4514
|
|
|
4505
4515
|
/// Constructs a 256-bit floating-point vector of [8 x float] from a
|
|
@@ -4520,7 +4530,9 @@ _mm256_castpd128_pd256(__m128d __a)
|
|
|
4520
4530
|
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4521
4531
|
_mm256_castps128_ps256(__m128 __a)
|
|
4522
4532
|
{
|
|
4523
|
-
return __builtin_shufflevector((__v4sf)__a,
|
|
4533
|
+
return __builtin_shufflevector((__v4sf)__a,
|
|
4534
|
+
(__v4sf)__builtin_nondeterministic_value(__a),
|
|
4535
|
+
0, 1, 2, 3, 4, 5, 6, 7);
|
|
4524
4536
|
}
|
|
4525
4537
|
|
|
4526
4538
|
/// Constructs a 256-bit integer vector from a 128-bit integer vector.
|
|
@@ -4539,7 +4551,8 @@ _mm256_castps128_ps256(__m128 __a)
|
|
|
4539
4551
|
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
4540
4552
|
_mm256_castsi128_si256(__m128i __a)
|
|
4541
4553
|
{
|
|
4542
|
-
return __builtin_shufflevector(
|
|
4554
|
+
return __builtin_shufflevector(
|
|
4555
|
+
(__v2di)__a, (__v2di)__builtin_nondeterministic_value(__a), 0, 1, 2, 3);
|
|
4543
4556
|
}
|
|
4544
4557
|
|
|
4545
4558
|
/// 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
|