@cpp-linter/clang-tidy-win32-x64 12.0.1 → 13.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy.exe +2 -2
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_device_functions.h +174 -102
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_runtime_wrapper.h +6 -1
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_hip_cmath.h +272 -94
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_hip_libdevice_declares.h +24 -12
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_hip_math.h +48 -2
- package/lib/clang/13.0.0/include/__clang_hip_runtime_wrapper.h +124 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/altivec.h +1165 -423
- package/lib/clang/{12.0.1 → 13.0.0}/include/amxintrin.h +234 -19
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_acle.h +55 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_neon.h +1077 -165
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_sve.h +11791 -5896
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512fintrin.h +177 -37
- package/lib/clang/13.0.0/include/builtins.h +16 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cuda_wrappers/complex +8 -0
- package/lib/clang/13.0.0/include/hexagon_circ_brev_intrinsics.h +298 -0
- package/lib/clang/13.0.0/include/hexagon_protos.h +8450 -0
- package/lib/clang/13.0.0/include/hexagon_types.h +2653 -0
- package/lib/clang/13.0.0/include/hvx_hexagon_protos.h +4392 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/intrin.h +44 -8
- package/lib/clang/{12.0.1 → 13.0.0}/include/keylockerintrin.h +30 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/opencl-c-base.h +144 -3
- package/lib/clang/{12.0.1 → 13.0.0}/include/opencl-c.h +505 -355
- package/lib/clang/13.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h +106 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/cmath +54 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/complex +1 -7
- package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/complex.h +0 -1
- package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/math.h +10 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/new +2 -24
- package/lib/clang/13.0.0/include/riscv_vector.h +123865 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/uintrintrin.h +7 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/vaesintrin.h +21 -20
- package/lib/clang/{12.0.1 → 13.0.0}/include/vecintrin.h +206 -77
- package/lib/clang/{12.0.1 → 13.0.0}/include/vpclmulqdqintrin.h +2 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/wasm_simd128.h +806 -239
- package/package.json +6 -6
- package/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h +0 -69
- package/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -42
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_builtin_vars.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_cmath.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_complex_builtins.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_intrinsics.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_libdevice_declares.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_math.h +2 -2
- package/lib/clang/{12.0.1 → 13.0.0}/include/__clang_cuda_math_forward_declares.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__stddef_max_align_t.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__wmmintrin_aes.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/__wmmintrin_pclmul.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/adxintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/ammintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm64intr.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_bf16.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_cde.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_cmse.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_fp16.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/arm_mve.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/armintr.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx2intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512bf16intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512bitalgintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512bwintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512cdintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512dqintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512erintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512ifmaintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512ifmavlintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512pfintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vbmi2intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vbmiintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vbmivlintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlbf16intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlbitalgintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlbwintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlcdintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vldqintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlvbmi2intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlvnniintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vlvp2intersectintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vnniintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vp2intersectintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vpopcntdqintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avx512vpopcntdqvlintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avxintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/avxvnniintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/bmi2intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/bmiintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cet.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cetintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cldemoteintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/clflushoptintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/clwbintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/clzerointrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cpuid.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cuda_wrappers/algorithm +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/cuda_wrappers/new +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/emmintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/enqcmdintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/f16cintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/float.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/fma4intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/fmaintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/fxsrintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/gfniintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/hresetintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/htmintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/htmxlintrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/ia32intrin.h +0 -0
- package/lib/clang/{12.0.1 → 13.0.0}/include/immintrin.h +5 -5
- /package/lib/clang/{12.0.1 → 13.0.0}/include/inttypes.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/iso646.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/limits.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/lwpintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/mm3dnow.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/mm_malloc.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/mmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/module.modulemap +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/movdirintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/msa.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/nmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/pkuintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/pmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/popcntintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/smmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/rtmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/s390intrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/serializeintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/sgxintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/shaintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/smmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stdalign.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stdarg.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stdatomic.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stdbool.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stddef.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stdint.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/tbmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/tgmath.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/tmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/unwind.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/vadefs.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/varargs.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/wmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/x86gprintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/x86intrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xmmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xopintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 13.0.0}/include/xtestintrin.h +0 -0
|
@@ -9300,8 +9300,11 @@ _mm512_mask_abs_pd(__m512d __W, __mmask8 __K, __m512d __A)
|
|
|
9300
9300
|
* computations. In vector-reduction arithmetic, the evaluation order is
|
|
9301
9301
|
* independent of the order of the input elements of V.
|
|
9302
9302
|
|
|
9303
|
-
* For floating
|
|
9304
|
-
*
|
|
9303
|
+
* For floating-point intrinsics:
|
|
9304
|
+
* 1. When using fadd/fmul intrinsics, the order of operations within the
|
|
9305
|
+
* vector is unspecified (associative math).
|
|
9306
|
+
* 2. When using fmin/fmax intrinsics, NaN or -0.0 elements within the vector
|
|
9307
|
+
* produce unspecified results.
|
|
9305
9308
|
|
|
9306
9309
|
* Used bisection method. At each step, we partition the vector with previous
|
|
9307
9310
|
* step in half, and the operation is performed on its two halves.
|
|
@@ -9524,75 +9527,49 @@ _mm512_mask_reduce_min_epu32(__mmask16 __M, __m512i __V) {
|
|
|
9524
9527
|
return __builtin_ia32_reduce_umin_d512((__v16si)__V);
|
|
9525
9528
|
}
|
|
9526
9529
|
|
|
9527
|
-
#define _mm512_mask_reduce_operator(op) \
|
|
9528
|
-
__m256d __t1 = _mm512_extractf64x4_pd(__V, 0); \
|
|
9529
|
-
__m256d __t2 = _mm512_extractf64x4_pd(__V, 1); \
|
|
9530
|
-
__m256d __t3 = _mm256_##op(__t1, __t2); \
|
|
9531
|
-
__m128d __t4 = _mm256_extractf128_pd(__t3, 0); \
|
|
9532
|
-
__m128d __t5 = _mm256_extractf128_pd(__t3, 1); \
|
|
9533
|
-
__m128d __t6 = _mm_##op(__t4, __t5); \
|
|
9534
|
-
__m128d __t7 = __builtin_shufflevector(__t6, __t6, 1, 0); \
|
|
9535
|
-
__m128d __t8 = _mm_##op(__t6, __t7); \
|
|
9536
|
-
return __t8[0]
|
|
9537
|
-
|
|
9538
9530
|
static __inline__ double __DEFAULT_FN_ATTRS512
|
|
9539
9531
|
_mm512_reduce_max_pd(__m512d __V) {
|
|
9540
|
-
|
|
9532
|
+
return __builtin_ia32_reduce_fmax_pd512(__V);
|
|
9541
9533
|
}
|
|
9542
9534
|
|
|
9543
9535
|
static __inline__ double __DEFAULT_FN_ATTRS512
|
|
9544
9536
|
_mm512_reduce_min_pd(__m512d __V) {
|
|
9545
|
-
|
|
9537
|
+
return __builtin_ia32_reduce_fmin_pd512(__V);
|
|
9546
9538
|
}
|
|
9547
9539
|
|
|
9548
9540
|
static __inline__ double __DEFAULT_FN_ATTRS512
|
|
9549
9541
|
_mm512_mask_reduce_max_pd(__mmask8 __M, __m512d __V) {
|
|
9550
9542
|
__V = _mm512_mask_mov_pd(_mm512_set1_pd(-__builtin_inf()), __M, __V);
|
|
9551
|
-
|
|
9543
|
+
return __builtin_ia32_reduce_fmax_pd512(__V);
|
|
9552
9544
|
}
|
|
9553
9545
|
|
|
9554
9546
|
static __inline__ double __DEFAULT_FN_ATTRS512
|
|
9555
9547
|
_mm512_mask_reduce_min_pd(__mmask8 __M, __m512d __V) {
|
|
9556
9548
|
__V = _mm512_mask_mov_pd(_mm512_set1_pd(__builtin_inf()), __M, __V);
|
|
9557
|
-
|
|
9558
|
-
}
|
|
9559
|
-
#undef _mm512_mask_reduce_operator
|
|
9560
|
-
|
|
9561
|
-
#define _mm512_mask_reduce_operator(op) \
|
|
9562
|
-
__m256 __t1 = (__m256)_mm512_extractf64x4_pd((__m512d)__V, 0); \
|
|
9563
|
-
__m256 __t2 = (__m256)_mm512_extractf64x4_pd((__m512d)__V, 1); \
|
|
9564
|
-
__m256 __t3 = _mm256_##op(__t1, __t2); \
|
|
9565
|
-
__m128 __t4 = _mm256_extractf128_ps(__t3, 0); \
|
|
9566
|
-
__m128 __t5 = _mm256_extractf128_ps(__t3, 1); \
|
|
9567
|
-
__m128 __t6 = _mm_##op(__t4, __t5); \
|
|
9568
|
-
__m128 __t7 = __builtin_shufflevector(__t6, __t6, 2, 3, 0, 1); \
|
|
9569
|
-
__m128 __t8 = _mm_##op(__t6, __t7); \
|
|
9570
|
-
__m128 __t9 = __builtin_shufflevector(__t8, __t8, 1, 0, 3, 2); \
|
|
9571
|
-
__m128 __t10 = _mm_##op(__t8, __t9); \
|
|
9572
|
-
return __t10[0]
|
|
9549
|
+
return __builtin_ia32_reduce_fmin_pd512(__V);
|
|
9550
|
+
}
|
|
9573
9551
|
|
|
9574
9552
|
static __inline__ float __DEFAULT_FN_ATTRS512
|
|
9575
9553
|
_mm512_reduce_max_ps(__m512 __V) {
|
|
9576
|
-
|
|
9554
|
+
return __builtin_ia32_reduce_fmax_ps512(__V);
|
|
9577
9555
|
}
|
|
9578
9556
|
|
|
9579
9557
|
static __inline__ float __DEFAULT_FN_ATTRS512
|
|
9580
9558
|
_mm512_reduce_min_ps(__m512 __V) {
|
|
9581
|
-
|
|
9559
|
+
return __builtin_ia32_reduce_fmin_ps512(__V);
|
|
9582
9560
|
}
|
|
9583
9561
|
|
|
9584
9562
|
static __inline__ float __DEFAULT_FN_ATTRS512
|
|
9585
9563
|
_mm512_mask_reduce_max_ps(__mmask16 __M, __m512 __V) {
|
|
9586
9564
|
__V = _mm512_mask_mov_ps(_mm512_set1_ps(-__builtin_inff()), __M, __V);
|
|
9587
|
-
|
|
9565
|
+
return __builtin_ia32_reduce_fmax_ps512(__V);
|
|
9588
9566
|
}
|
|
9589
9567
|
|
|
9590
9568
|
static __inline__ float __DEFAULT_FN_ATTRS512
|
|
9591
9569
|
_mm512_mask_reduce_min_ps(__mmask16 __M, __m512 __V) {
|
|
9592
9570
|
__V = _mm512_mask_mov_ps(_mm512_set1_ps(__builtin_inff()), __M, __V);
|
|
9593
|
-
|
|
9571
|
+
return __builtin_ia32_reduce_fmin_ps512(__V);
|
|
9594
9572
|
}
|
|
9595
|
-
#undef _mm512_mask_reduce_operator
|
|
9596
9573
|
|
|
9597
9574
|
/// Moves the least significant 32 bits of a vector of [16 x i32] to a
|
|
9598
9575
|
/// 32-bit signed integer value.
|
|
@@ -9611,6 +9588,169 @@ _mm512_cvtsi512_si32(__m512i __A) {
|
|
|
9611
9588
|
return __b[0];
|
|
9612
9589
|
}
|
|
9613
9590
|
|
|
9591
|
+
/// Loads 8 double-precision (64-bit) floating-point elements stored at memory
|
|
9592
|
+
/// locations starting at location \a base_addr at packed 32-bit integer indices
|
|
9593
|
+
/// stored in the lower half of \a vindex scaled by \a scale them in dst.
|
|
9594
|
+
///
|
|
9595
|
+
/// This intrinsic corresponds to the <c> VGATHERDPD </c> instructions.
|
|
9596
|
+
///
|
|
9597
|
+
/// \operation
|
|
9598
|
+
/// FOR j := 0 to 7
|
|
9599
|
+
/// i := j*64
|
|
9600
|
+
/// m := j*32
|
|
9601
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9602
|
+
/// dst[i+63:i] := MEM[addr+63:addr]
|
|
9603
|
+
/// ENDFOR
|
|
9604
|
+
/// dst[MAX:512] := 0
|
|
9605
|
+
/// \endoperation
|
|
9606
|
+
#define _mm512_i32logather_pd(vindex, base_addr, scale) \
|
|
9607
|
+
_mm512_i32gather_pd(_mm512_castsi512_si256(vindex), (base_addr), (scale))
|
|
9608
|
+
|
|
9609
|
+
/// Loads 8 double-precision (64-bit) floating-point elements from memory
|
|
9610
|
+
/// starting at location \a base_addr at packed 32-bit integer indices stored in
|
|
9611
|
+
/// the lower half of \a vindex scaled by \a scale into dst using writemask
|
|
9612
|
+
/// \a mask (elements are copied from \a src when the corresponding mask bit is
|
|
9613
|
+
/// not set).
|
|
9614
|
+
///
|
|
9615
|
+
/// This intrinsic corresponds to the <c> VGATHERDPD </c> instructions.
|
|
9616
|
+
///
|
|
9617
|
+
/// \operation
|
|
9618
|
+
/// FOR j := 0 to 7
|
|
9619
|
+
/// i := j*64
|
|
9620
|
+
/// m := j*32
|
|
9621
|
+
/// IF mask[j]
|
|
9622
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9623
|
+
/// dst[i+63:i] := MEM[addr+63:addr]
|
|
9624
|
+
/// ELSE
|
|
9625
|
+
/// dst[i+63:i] := src[i+63:i]
|
|
9626
|
+
/// FI
|
|
9627
|
+
/// ENDFOR
|
|
9628
|
+
/// dst[MAX:512] := 0
|
|
9629
|
+
/// \endoperation
|
|
9630
|
+
#define _mm512_mask_i32logather_pd(src, mask, vindex, base_addr, scale) \
|
|
9631
|
+
_mm512_mask_i32gather_pd((src), (mask), _mm512_castsi512_si256(vindex), \
|
|
9632
|
+
(base_addr), (scale))
|
|
9633
|
+
|
|
9634
|
+
/// Loads 8 64-bit integer elements from memory starting at location \a base_addr
|
|
9635
|
+
/// at packed 32-bit integer indices stored in the lower half of \a vindex
|
|
9636
|
+
/// scaled by \a scale and stores them in dst.
|
|
9637
|
+
///
|
|
9638
|
+
/// This intrinsic corresponds to the <c> VPGATHERDQ </c> instructions.
|
|
9639
|
+
///
|
|
9640
|
+
/// \operation
|
|
9641
|
+
/// FOR j := 0 to 7
|
|
9642
|
+
/// i := j*64
|
|
9643
|
+
/// m := j*32
|
|
9644
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9645
|
+
/// dst[i+63:i] := MEM[addr+63:addr]
|
|
9646
|
+
/// ENDFOR
|
|
9647
|
+
/// dst[MAX:512] := 0
|
|
9648
|
+
/// \endoperation
|
|
9649
|
+
#define _mm512_i32logather_epi64(vindex, base_addr, scale) \
|
|
9650
|
+
_mm512_i32gather_epi64(_mm512_castsi512_si256(vindex), (base_addr), (scale))
|
|
9651
|
+
|
|
9652
|
+
/// Loads 8 64-bit integer elements from memory starting at location \a base_addr
|
|
9653
|
+
/// at packed 32-bit integer indices stored in the lower half of \a vindex
|
|
9654
|
+
/// scaled by \a scale and stores them in dst using writemask \a mask (elements
|
|
9655
|
+
/// are copied from \a src when the corresponding mask bit is not set).
|
|
9656
|
+
///
|
|
9657
|
+
/// This intrinsic corresponds to the <c> VPGATHERDQ </c> instructions.
|
|
9658
|
+
///
|
|
9659
|
+
/// \operation
|
|
9660
|
+
/// FOR j := 0 to 7
|
|
9661
|
+
/// i := j*64
|
|
9662
|
+
/// m := j*32
|
|
9663
|
+
/// IF mask[j]
|
|
9664
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9665
|
+
/// dst[i+63:i] := MEM[addr+63:addr]
|
|
9666
|
+
/// ELSE
|
|
9667
|
+
/// dst[i+63:i] := src[i+63:i]
|
|
9668
|
+
/// FI
|
|
9669
|
+
/// ENDFOR
|
|
9670
|
+
/// dst[MAX:512] := 0
|
|
9671
|
+
/// \endoperation
|
|
9672
|
+
#define _mm512_mask_i32logather_epi64(src, mask, vindex, base_addr, scale) \
|
|
9673
|
+
_mm512_mask_i32gather_epi64((src), (mask), _mm512_castsi512_si256(vindex), \
|
|
9674
|
+
(base_addr), (scale))
|
|
9675
|
+
|
|
9676
|
+
/// Stores 8 packed double-precision (64-bit) floating-point elements in \a v1
|
|
9677
|
+
/// and to memory locations starting at location \a base_addr at packed 32-bit
|
|
9678
|
+
/// integer indices stored in \a vindex scaled by \a scale.
|
|
9679
|
+
///
|
|
9680
|
+
/// This intrinsic corresponds to the <c> VSCATTERDPD </c> instructions.
|
|
9681
|
+
///
|
|
9682
|
+
/// \operation
|
|
9683
|
+
/// FOR j := 0 to 7
|
|
9684
|
+
/// i := j*64
|
|
9685
|
+
/// m := j*32
|
|
9686
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9687
|
+
/// MEM[addr+63:addr] := v1[i+63:i]
|
|
9688
|
+
/// ENDFOR
|
|
9689
|
+
/// \endoperation
|
|
9690
|
+
#define _mm512_i32loscatter_pd(base_addr, vindex, v1, scale) \
|
|
9691
|
+
_mm512_i32scatter_pd((base_addr), _mm512_castsi512_si256(vindex), (v1), (scale))
|
|
9692
|
+
|
|
9693
|
+
/// Stores 8 packed double-precision (64-bit) floating-point elements in \a v1
|
|
9694
|
+
/// to memory locations starting at location \a base_addr at packed 32-bit
|
|
9695
|
+
/// integer indices stored in \a vindex scaled by \a scale. Only those elements
|
|
9696
|
+
/// whose corresponding mask bit is set in writemask \a mask are written to
|
|
9697
|
+
/// memory.
|
|
9698
|
+
///
|
|
9699
|
+
/// This intrinsic corresponds to the <c> VSCATTERDPD </c> instructions.
|
|
9700
|
+
///
|
|
9701
|
+
/// \operation
|
|
9702
|
+
/// FOR j := 0 to 7
|
|
9703
|
+
/// i := j*64
|
|
9704
|
+
/// m := j*32
|
|
9705
|
+
/// IF mask[j]
|
|
9706
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9707
|
+
/// MEM[addr+63:addr] := a[i+63:i]
|
|
9708
|
+
/// FI
|
|
9709
|
+
/// ENDFOR
|
|
9710
|
+
/// \endoperation
|
|
9711
|
+
#define _mm512_mask_i32loscatter_pd(base_addr, mask, vindex, v1, scale) \
|
|
9712
|
+
_mm512_mask_i32scatter_pd((base_addr), (mask), \
|
|
9713
|
+
_mm512_castsi512_si256(vindex), (v1), (scale))
|
|
9714
|
+
|
|
9715
|
+
/// Stores 8 packed 64-bit integer elements located in \a v1 and stores them in
|
|
9716
|
+
/// memory locations starting at location \a base_addr at packed 32-bit integer
|
|
9717
|
+
/// indices stored in \a vindex scaled by \a scale.
|
|
9718
|
+
///
|
|
9719
|
+
/// This intrinsic corresponds to the <c> VPSCATTERDQ </c> instructions.
|
|
9720
|
+
///
|
|
9721
|
+
/// \operation
|
|
9722
|
+
/// FOR j := 0 to 7
|
|
9723
|
+
/// i := j*64
|
|
9724
|
+
/// m := j*32
|
|
9725
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9726
|
+
/// MEM[addr+63:addr] := a[i+63:i]
|
|
9727
|
+
/// ENDFOR
|
|
9728
|
+
/// \endoperation
|
|
9729
|
+
#define _mm512_i32loscatter_epi64(base_addr, vindex, v1, scale) \
|
|
9730
|
+
_mm512_i32scatter_epi64((base_addr), \
|
|
9731
|
+
_mm512_castsi512_si256(vindex), (v1), (scale))
|
|
9732
|
+
|
|
9733
|
+
/// Stores 8 packed 64-bit integer elements located in a and stores them in
|
|
9734
|
+
/// memory locations starting at location \a base_addr at packed 32-bit integer
|
|
9735
|
+
/// indices stored in \a vindex scaled by scale using writemask \a mask (elements
|
|
9736
|
+
/// whose corresponding mask bit is not set are not written to memory).
|
|
9737
|
+
///
|
|
9738
|
+
/// This intrinsic corresponds to the <c> VPSCATTERDQ </c> instructions.
|
|
9739
|
+
///
|
|
9740
|
+
/// \operation
|
|
9741
|
+
/// FOR j := 0 to 7
|
|
9742
|
+
/// i := j*64
|
|
9743
|
+
/// m := j*32
|
|
9744
|
+
/// IF mask[j]
|
|
9745
|
+
/// addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
|
|
9746
|
+
/// MEM[addr+63:addr] := a[i+63:i]
|
|
9747
|
+
/// FI
|
|
9748
|
+
/// ENDFOR
|
|
9749
|
+
/// \endoperation
|
|
9750
|
+
#define _mm512_mask_i32loscatter_epi64(base_addr, mask, vindex, v1, scale) \
|
|
9751
|
+
_mm512_mask_i32scatter_epi64((base_addr), (mask), \
|
|
9752
|
+
_mm512_castsi512_si256(vindex), (v1), (scale))
|
|
9753
|
+
|
|
9614
9754
|
#undef __DEFAULT_FN_ATTRS512
|
|
9615
9755
|
#undef __DEFAULT_FN_ATTRS128
|
|
9616
9756
|
#undef __DEFAULT_FN_ATTRS
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*===---- builtins.h - Standard header for extra builtins -----------------===*\
|
|
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
|
+
/// Some legacy compilers have builtin definitions in a file named builtins.h.
|
|
10
|
+
/// This header file has been added to allow compatibility with code that was
|
|
11
|
+
/// written for those compilers. Code may have an include line for this file
|
|
12
|
+
/// and to avoid an error an empty file with this name is provided.
|
|
13
|
+
#ifndef __BUILTINS_H
|
|
14
|
+
#define __BUILTINS_H
|
|
15
|
+
|
|
16
|
+
#endif /* __BUILTINS_H */
|
|
@@ -72,8 +72,16 @@
|
|
|
72
72
|
#define _GLIBCXX_USE_C99_COMPLEX 0
|
|
73
73
|
#define _GLIBCXX_USE_C99_COMPLEX_TR1 0
|
|
74
74
|
|
|
75
|
+
// Work around a compatibility issue with libstdc++ 11.1.0
|
|
76
|
+
// https://bugs.llvm.org/show_bug.cgi?id=50383
|
|
77
|
+
#pragma push_macro("__failed_assertion")
|
|
78
|
+
#if _GLIBCXX_RELEASE == 11
|
|
79
|
+
#define __failed_assertion __cuda_failed_assertion
|
|
80
|
+
#endif
|
|
81
|
+
|
|
75
82
|
#include_next <complex>
|
|
76
83
|
|
|
84
|
+
#pragma pop_macro("__failed_assertion")
|
|
77
85
|
#pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX_TR1")
|
|
78
86
|
#pragma pop_macro("_GLIBCXX_USE_C99_COMPLEX")
|
|
79
87
|
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
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 _HEXAGON_CIRC_BREV_INTRINSICS_H_
|
|
10
|
+
#define _HEXAGON_CIRC_BREV_INTRINSICS_H_ 1
|
|
11
|
+
|
|
12
|
+
#include <hexagon_protos.h>
|
|
13
|
+
#include <stdint.h>
|
|
14
|
+
|
|
15
|
+
/* Circular Load */
|
|
16
|
+
/* ==========================================================================
|
|
17
|
+
Assembly Syntax: Return=instruction()
|
|
18
|
+
C Intrinsic Prototype: void Q6_circ_load_update_D(Word64 dst, Word64 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
19
|
+
Instruction Type: InstructionType
|
|
20
|
+
Execution Slots: SLOT0123
|
|
21
|
+
========================================================================== */
|
|
22
|
+
#define Q6_circ_load_update_D(dest,ptr,incr,bufsize,K) \
|
|
23
|
+
{ ptr = (int64_t *) HEXAGON_circ_ldd (ptr, &(dest), ((((K)+1)<<24)|((bufsize)<<3)), ((incr)*8)); }
|
|
24
|
+
|
|
25
|
+
/* ==========================================================================
|
|
26
|
+
Assembly Syntax: Return=instruction()
|
|
27
|
+
C Intrinsic Prototype: void Q6_circ_load_update_W(Word32 dst, Word32 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
28
|
+
Instruction Type: InstructionType
|
|
29
|
+
Execution Slots: SLOT0123
|
|
30
|
+
========================================================================== */
|
|
31
|
+
#define Q6_circ_load_update_W(dest,ptr,incr,bufsize,K) \
|
|
32
|
+
{ ptr = (int *) HEXAGON_circ_ldw (ptr, &(dest), (((K)<<24)|((bufsize)<<2)), ((incr)*4)); }
|
|
33
|
+
|
|
34
|
+
/* ==========================================================================
|
|
35
|
+
Assembly Syntax: Return=instruction()
|
|
36
|
+
C Intrinsic Prototype: void Q6_circ_load_update_H(Word16 dst, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
37
|
+
Instruction Type: InstructionType
|
|
38
|
+
Execution Slots: SLOT0123
|
|
39
|
+
========================================================================== */
|
|
40
|
+
#define Q6_circ_load_update_H(dest,ptr,incr,bufsize,K) \
|
|
41
|
+
{ ptr = (int16_t *) HEXAGON_circ_ldh (ptr, &(dest), ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
|
42
|
+
|
|
43
|
+
/* ==========================================================================
|
|
44
|
+
Assembly Syntax: Return=instruction()
|
|
45
|
+
C Intrinsic Prototype: void Q6_circ_load_update_UH( UWord16 dst, UWord16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
46
|
+
Instruction Type: InstructionType
|
|
47
|
+
Execution Slots: SLOT0123
|
|
48
|
+
========================================================================== */
|
|
49
|
+
#define Q6_circ_load_update_UH(dest,ptr,incr,bufsize,K) \
|
|
50
|
+
{ ptr = (uint16_t *) HEXAGON_circ_lduh (ptr, &(dest), ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
|
51
|
+
|
|
52
|
+
/* ==========================================================================
|
|
53
|
+
Assembly Syntax: Return=instruction()
|
|
54
|
+
C Intrinsic Prototype: void Q6_circ_load_update_B(Word8 dst, Word8 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
55
|
+
Instruction Type: InstructionType
|
|
56
|
+
Execution Slots: SLOT0123
|
|
57
|
+
========================================================================== */
|
|
58
|
+
#define Q6_circ_load_update_B(dest,ptr,incr,bufsize,K) \
|
|
59
|
+
{ ptr = (int8_t *) HEXAGON_circ_ldb (ptr, &(dest), ((((K)-2)<<24)|(bufsize)), incr); }
|
|
60
|
+
|
|
61
|
+
/* ==========================================================================
|
|
62
|
+
Assembly Syntax: Return=instruction()
|
|
63
|
+
C Intrinsic Prototype: void Q6_circ_load_update_UB(UWord8 dst, UWord8 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
64
|
+
Instruction Type: InstructionType
|
|
65
|
+
Execution Slots: SLOT0123
|
|
66
|
+
========================================================================== */
|
|
67
|
+
#define Q6_circ_load_update_UB(dest,ptr,incr,bufsize,K) \
|
|
68
|
+
{ ptr = (uint8_t *) HEXAGON_circ_ldub (ptr, &(dest), ((((K)-2)<<24)|(bufsize)), incr); }
|
|
69
|
+
|
|
70
|
+
/* Circular Store */
|
|
71
|
+
/* ==========================================================================
|
|
72
|
+
Assembly Syntax: Return=instruction()
|
|
73
|
+
C Intrinsic Prototype: void Q6_circ_store_update_D(Word64 *src, Word64 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
74
|
+
Instruction Type: InstructionType
|
|
75
|
+
Execution Slots: SLOT0123
|
|
76
|
+
========================================================================== */
|
|
77
|
+
#define Q6_circ_store_update_D(src,ptr,incr,bufsize,K) \
|
|
78
|
+
{ ptr = (int64_t *) HEXAGON_circ_std (ptr, src, ((((K)+1)<<24)|((bufsize)<<3)), ((incr)*8)); }
|
|
79
|
+
|
|
80
|
+
/* ==========================================================================
|
|
81
|
+
Assembly Syntax: Return=instruction()
|
|
82
|
+
C Intrinsic Prototype: void Q6_circ_store_update_W(Word32 *src, Word32 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
83
|
+
Instruction Type: InstructionType
|
|
84
|
+
Execution Slots: SLOT0123
|
|
85
|
+
========================================================================== */
|
|
86
|
+
#define Q6_circ_store_update_W(src,ptr,incr,bufsize,K) \
|
|
87
|
+
{ ptr = (int *) HEXAGON_circ_stw (ptr, src, (((K)<<24)|((bufsize)<<2)), ((incr)*4)); }
|
|
88
|
+
|
|
89
|
+
/* ==========================================================================
|
|
90
|
+
Assembly Syntax: Return=instruction()
|
|
91
|
+
C Intrinsic Prototype: void Q6_circ_store_update_HL(Word16 *src, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
92
|
+
Instruction Type: InstructionType
|
|
93
|
+
Execution Slots: SLOT0123
|
|
94
|
+
========================================================================== */
|
|
95
|
+
#define Q6_circ_store_update_HL(src,ptr,incr,bufsize,K) \
|
|
96
|
+
{ ptr = (int16_t *) HEXAGON_circ_sth (ptr, src, ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
|
97
|
+
|
|
98
|
+
/* ==========================================================================
|
|
99
|
+
Assembly Syntax: Return=instruction()
|
|
100
|
+
C Intrinsic Prototype: void Q6_circ_store_update_HH(Word16 *src, Word16 *ptr, UWord32 incr, UWord32 bufsize, UWord32 K)
|
|
101
|
+
Instruction Type: InstructionType
|
|
102
|
+
Execution Slots: SLOT0123
|
|
103
|
+
========================================================================== */
|
|
104
|
+
#define Q6_circ_store_update_HH(src,ptr,incr,bufsize,K) \
|
|
105
|
+
{ ptr = (int16_t *) HEXAGON_circ_sthhi (ptr, src, ((((K)-1)<<24)|((bufsize)<<1)), ((incr)*2)); }
|
|
106
|
+
|
|
107
|
+
/* ==========================================================================
|
|
108
|
+
Assembly Syntax: Return=instruction()
|
|
109
|
+
C Intrinsic Prototype: void Q6_circ_store_update_B(Word8 *src, Word8 *ptr, UWord32 I4, UWord32 bufsize, UWord64 K)
|
|
110
|
+
Instruction Type: InstructionType
|
|
111
|
+
Execution Slots: SLOT0123
|
|
112
|
+
========================================================================== */
|
|
113
|
+
#define Q6_circ_store_update_B(src,ptr,incr,bufsize,K) \
|
|
114
|
+
{ ptr = (int8_t *) HEXAGON_circ_stb (ptr, src, ((((K)-2)<<24)|(bufsize)), incr); }
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
/* Bit Reverse Load */
|
|
118
|
+
/* ==========================================================================
|
|
119
|
+
Assembly Syntax: Return=instruction()
|
|
120
|
+
C Intrinsic Prototype: void Q6_bitrev_load_update_D(Word64 dst, Word64 *ptr, UWord32 Iu4)
|
|
121
|
+
Instruction Type: InstructionType
|
|
122
|
+
Execution Slots: SLOT0123
|
|
123
|
+
========================================================================== */
|
|
124
|
+
#define Q6_bitrev_load_update_D(dest,ptr,log2bufsize) \
|
|
125
|
+
{ ptr = (int64_t *) HEXAGON_brev_ldd (ptr, &(dest), (1<<(16-((log2bufsize) + 3)))); }
|
|
126
|
+
|
|
127
|
+
/* ==========================================================================
|
|
128
|
+
Assembly Syntax: Return=instruction()
|
|
129
|
+
C Intrinsic Prototype: void Q6_bitrev_load_update_W(Word32 dst, Word32 *ptr, UWord32 Iu4)
|
|
130
|
+
Instruction Type: InstructionType
|
|
131
|
+
Execution Slots: SLOT0123
|
|
132
|
+
========================================================================== */
|
|
133
|
+
#define Q6_bitrev_load_update_W(dest,ptr,log2bufsize) \
|
|
134
|
+
{ ptr = (int *) HEXAGON_brev_ldw (ptr, &(dest), (1<<(16-((log2bufsize) + 2)))); }
|
|
135
|
+
|
|
136
|
+
/* ==========================================================================
|
|
137
|
+
Assembly Syntax: Return=instruction()
|
|
138
|
+
C Intrinsic Prototype: void Q6_bitrev_load_update_H(Word16 dst, Word16 *ptr, UWord32 Iu4)
|
|
139
|
+
Instruction Type: InstructionType
|
|
140
|
+
Execution Slots: SLOT0123
|
|
141
|
+
========================================================================== */
|
|
142
|
+
#define Q6_bitrev_load_update_H(dest,ptr,log2bufsize) \
|
|
143
|
+
{ ptr = (int16_t *) HEXAGON_brev_ldh (ptr, &(dest), (1<<(16-((log2bufsize) + 1)))); }
|
|
144
|
+
|
|
145
|
+
/* ==========================================================================
|
|
146
|
+
Assembly Syntax: Return=instruction()
|
|
147
|
+
C Intrinsic Prototype: void Q6_bitrev_load_update_UH(UWord16 dst, UWord16 *ptr, UWord32 Iu4)
|
|
148
|
+
Instruction Type: InstructionType
|
|
149
|
+
Execution Slots: SLOT0123
|
|
150
|
+
========================================================================== */
|
|
151
|
+
#define Q6_bitrev_load_update_UH(dest,ptr,log2bufsize) \
|
|
152
|
+
{ ptr = (uint16_t *) HEXAGON_brev_lduh (ptr, &(dest), (1<<(16-((log2bufsize) + 1)))); }
|
|
153
|
+
|
|
154
|
+
/* ==========================================================================
|
|
155
|
+
Assembly Syntax: Return=instruction()
|
|
156
|
+
C Intrinsic Prototype: void Q6_bitrev_load_update_B(Word8 dst, Word8 *ptr, UWord32 Iu4)
|
|
157
|
+
Instruction Type: InstructionType
|
|
158
|
+
Execution Slots: SLOT0123
|
|
159
|
+
========================================================================== */
|
|
160
|
+
#define Q6_bitrev_load_update_B(dest,ptr,log2bufsize) \
|
|
161
|
+
{ ptr = (int8_t *) HEXAGON_brev_ldb (ptr, &(dest), (1<<(16-((log2bufsize))))); }
|
|
162
|
+
|
|
163
|
+
/* ==========================================================================
|
|
164
|
+
Assembly Syntax: Return=instruction()
|
|
165
|
+
C Intrinsic Prototype: void Q6_bitrev_load_update_UB(UWord8 dst, UWord8 *ptr, UWord32 Iu4)
|
|
166
|
+
Instruction Type: InstructionType
|
|
167
|
+
Execution Slots: SLOT0123
|
|
168
|
+
========================================================================== */
|
|
169
|
+
#define Q6_bitrev_load_update_UB(dest,ptr,log2bufsize) \
|
|
170
|
+
{ ptr = (uint8_t *) HEXAGON_brev_ldub (ptr, &(dest), (1<<(16-((log2bufsize))))); }
|
|
171
|
+
|
|
172
|
+
/* Bit Reverse Store */
|
|
173
|
+
|
|
174
|
+
/* ==========================================================================
|
|
175
|
+
Assembly Syntax: Return=instruction()
|
|
176
|
+
C Intrinsic Prototype: void Q6_bitrev_store_update_D(Word64 *src, Word64 *ptr, UWord32 Iu4)
|
|
177
|
+
Instruction Type: InstructionType
|
|
178
|
+
Execution Slots: SLOT0123
|
|
179
|
+
========================================================================== */
|
|
180
|
+
#define Q6_bitrev_store_update_D(src,ptr,log2bufsize) \
|
|
181
|
+
{ ptr = (int64_t *) HEXAGON_brev_std (ptr, src, (1<<(16-((log2bufsize) + 3)))); }
|
|
182
|
+
|
|
183
|
+
/* ==========================================================================
|
|
184
|
+
Assembly Syntax: Return=instruction()
|
|
185
|
+
C Intrinsic Prototype: void Q6_bitrev_store_update_W(Word32 *src, Word32 *ptr, UWord32 Iu4)
|
|
186
|
+
Instruction Type: InstructionType
|
|
187
|
+
Execution Slots: SLOT0123
|
|
188
|
+
========================================================================== */
|
|
189
|
+
#define Q6_bitrev_store_update_W(src,ptr,log2bufsize) \
|
|
190
|
+
{ ptr = (int *) HEXAGON_brev_stw (ptr, src, (1<<(16-((log2bufsize) + 2)))); }
|
|
191
|
+
|
|
192
|
+
/* ==========================================================================
|
|
193
|
+
Assembly Syntax: Return=instruction()
|
|
194
|
+
C Intrinsic Prototype: void Q6_bitrev_store_update_HL(Word16 *src, Word16 *ptr, Word32 Iu4)
|
|
195
|
+
Instruction Type: InstructionType
|
|
196
|
+
Execution Slots: SLOT0123
|
|
197
|
+
========================================================================== */
|
|
198
|
+
#define Q6_bitrev_store_update_HL(src,ptr,log2bufsize) \
|
|
199
|
+
{ ptr = (int16_t *) HEXAGON_brev_sth (ptr, src, (1<<(16-((log2bufsize) + 1)))); }
|
|
200
|
+
|
|
201
|
+
/* ==========================================================================
|
|
202
|
+
Assembly Syntax: Return=instruction()
|
|
203
|
+
C Intrinsic Prototype: void Q6_bitrev_store_update_HH(Word16 *src, Word16 *ptr, UWord32 Iu4)
|
|
204
|
+
Instruction Type: InstructionType
|
|
205
|
+
Execution Slots: SLOT0123
|
|
206
|
+
========================================================================== */
|
|
207
|
+
#define Q6_bitrev_store_update_HH(src,ptr,log2bufsize) \
|
|
208
|
+
{ ptr = (int16_t *) HEXAGON_brev_sthhi (ptr, src, (1<<(16-((log2bufsize) + 1)))); }
|
|
209
|
+
|
|
210
|
+
/* ==========================================================================
|
|
211
|
+
Assembly Syntax: Return=instruction()
|
|
212
|
+
C Intrinsic Prototype: void Q6_bitrev_store_update_B(Word8 *src, Word8 *ptr, UWord32 Iu4)
|
|
213
|
+
Instruction Type: InstructionType
|
|
214
|
+
Execution Slots: SLOT0123
|
|
215
|
+
========================================================================== */
|
|
216
|
+
#define Q6_bitrev_store_update_B(src,ptr,log2bufsize) \
|
|
217
|
+
{ ptr = (int8_t *) HEXAGON_brev_stb (ptr, src, (1<<(16-((log2bufsize))))); }
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
#define HEXAGON_circ_ldd __builtin_circ_ldd
|
|
221
|
+
#define HEXAGON_circ_ldw __builtin_circ_ldw
|
|
222
|
+
#define HEXAGON_circ_ldh __builtin_circ_ldh
|
|
223
|
+
#define HEXAGON_circ_lduh __builtin_circ_lduh
|
|
224
|
+
#define HEXAGON_circ_ldb __builtin_circ_ldb
|
|
225
|
+
#define HEXAGON_circ_ldub __builtin_circ_ldub
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
#define HEXAGON_circ_std __builtin_circ_std
|
|
229
|
+
#define HEXAGON_circ_stw __builtin_circ_stw
|
|
230
|
+
#define HEXAGON_circ_sth __builtin_circ_sth
|
|
231
|
+
#define HEXAGON_circ_sthhi __builtin_circ_sthhi
|
|
232
|
+
#define HEXAGON_circ_stb __builtin_circ_stb
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
#define HEXAGON_brev_ldd __builtin_brev_ldd
|
|
236
|
+
#define HEXAGON_brev_ldw __builtin_brev_ldw
|
|
237
|
+
#define HEXAGON_brev_ldh __builtin_brev_ldh
|
|
238
|
+
#define HEXAGON_brev_lduh __builtin_brev_lduh
|
|
239
|
+
#define HEXAGON_brev_ldb __builtin_brev_ldb
|
|
240
|
+
#define HEXAGON_brev_ldub __builtin_brev_ldub
|
|
241
|
+
|
|
242
|
+
#define HEXAGON_brev_std __builtin_brev_std
|
|
243
|
+
#define HEXAGON_brev_stw __builtin_brev_stw
|
|
244
|
+
#define HEXAGON_brev_sth __builtin_brev_sth
|
|
245
|
+
#define HEXAGON_brev_sthhi __builtin_brev_sthhi
|
|
246
|
+
#define HEXAGON_brev_stb __builtin_brev_stb
|
|
247
|
+
|
|
248
|
+
#ifdef __HVX__
|
|
249
|
+
/* ==========================================================================
|
|
250
|
+
Assembly Syntax: if (Qt) vmem(Rt+#0) = Vs
|
|
251
|
+
C Intrinsic Prototype: void Q6_vmaskedstoreq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
|
252
|
+
Instruction Type: COPROC_VMEM
|
|
253
|
+
Execution Slots: SLOT0
|
|
254
|
+
========================================================================== */
|
|
255
|
+
|
|
256
|
+
#define Q6_vmaskedstoreq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstoreq)
|
|
257
|
+
|
|
258
|
+
/* ==========================================================================
|
|
259
|
+
Assembly Syntax: if (!Qt) vmem(Rt+#0) = Vs
|
|
260
|
+
C Intrinsic Prototype: void Q6_vmaskedstorenq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
|
261
|
+
Instruction Type: COPROC_VMEM
|
|
262
|
+
Execution Slots: SLOT0
|
|
263
|
+
========================================================================== */
|
|
264
|
+
|
|
265
|
+
#define Q6_vmaskedstorenq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorenq)
|
|
266
|
+
|
|
267
|
+
/* ==========================================================================
|
|
268
|
+
Assembly Syntax: if (Qt) vmem(Rt+#0):nt = Vs
|
|
269
|
+
C Intrinsic Prototype: void Q6_vmaskedstorentq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
|
270
|
+
Instruction Type: COPROC_VMEM
|
|
271
|
+
Execution Slots: SLOT0
|
|
272
|
+
========================================================================== */
|
|
273
|
+
|
|
274
|
+
#define Q6_vmaskedstorentq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorentq)
|
|
275
|
+
|
|
276
|
+
/* ==========================================================================
|
|
277
|
+
Assembly Syntax: if (!Qt) vmem(Rt+#0):nt = Vs
|
|
278
|
+
C Intrinsic Prototype: void Q6_vmaskedstorentnq_QAV(HVX_VectorPred Qt, HVX_VectorAddress A, HVX_Vector Vs)
|
|
279
|
+
Instruction Type: COPROC_VMEM
|
|
280
|
+
Execution Slots: SLOT0
|
|
281
|
+
========================================================================== */
|
|
282
|
+
|
|
283
|
+
#define Q6_vmaskedstorentnq_QAV __BUILTIN_VECTOR_WRAP(__builtin_HEXAGON_V6_vmaskedstorentnq)
|
|
284
|
+
|
|
285
|
+
#endif
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
#endif /* #ifndef _HEXAGON_CIRC_BREV_INTRINSICS_H_ */
|
|
289
|
+
|
|
290
|
+
#ifdef __NOT_DEFINED__
|
|
291
|
+
/*** comment block template ***/
|
|
292
|
+
/* ==========================================================================
|
|
293
|
+
Assembly Syntax: Return=instruction()
|
|
294
|
+
C Intrinsic Prototype: ReturnType Intrinsic(ParamType Rs, ParamType Rt)
|
|
295
|
+
Instruction Type: InstructionType
|
|
296
|
+
Execution Slots: SLOT0123
|
|
297
|
+
========================================================================== */
|
|
298
|
+
#endif /*** __NOT_DEFINED__ ***/
|