@cpp-linter/clang-tidy-darwin-x64 13.0.0 → 16.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy +2 -2
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_complex_builtins.h +3 -3
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_intrinsics.h +38 -6
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +6 -0
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math.h +1 -1
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +62 -7
- package/lib/clang/16/include/__clang_cuda_texture_intrinsics.h +742 -0
- package/lib/clang/{13.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
- package/lib/clang/{13.0.0 → 16}/include/__clang_hip_math.h +10 -13
- package/lib/clang/{13.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +18 -4
- package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
- package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_aes.h +1 -1
- package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
- package/lib/clang/{13.0.0 → 16}/include/altivec.h +691 -342
- package/lib/clang/{13.0.0 → 16}/include/ammintrin.h +4 -0
- package/lib/clang/16/include/amxfp16intrin.h +58 -0
- package/lib/clang/{13.0.0 → 16}/include/amxintrin.h +49 -18
- package/lib/clang/{13.0.0 → 16}/include/arm_acle.h +80 -73
- package/lib/clang/{13.0.0 → 16}/include/arm_fp16.h +90 -90
- package/lib/clang/{13.0.0 → 16}/include/arm_neon.h +28607 -28779
- package/lib/clang/16/include/arm_neon_sve_bridge.h +182 -0
- package/lib/clang/{13.0.0 → 16}/include/arm_sve.h +7848 -7996
- package/lib/clang/{13.0.0 → 16}/include/avx2intrin.h +189 -189
- package/lib/clang/{13.0.0 → 16}/include/avx512bf16intrin.h +21 -18
- package/lib/clang/{13.0.0 → 16}/include/avx512bwintrin.h +83 -83
- package/lib/clang/{13.0.0 → 16}/include/avx512dqintrin.h +365 -365
- package/lib/clang/{13.0.0 → 16}/include/avx512erintrin.h +102 -102
- package/lib/clang/{13.0.0 → 16}/include/avx512fintrin.h +1627 -1620
- package/lib/clang/16/include/avx512fp16intrin.h +3346 -0
- package/lib/clang/{13.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
- package/lib/clang/{13.0.0 → 16}/include/avx512vbmi2intrin.h +48 -48
- package/lib/clang/{13.0.0 → 16}/include/avx512vlbf16intrin.h +82 -41
- package/lib/clang/{13.0.0 → 16}/include/avx512vlbwintrin.h +454 -102
- package/lib/clang/{13.0.0 → 16}/include/avx512vldqintrin.h +134 -134
- package/lib/clang/16/include/avx512vlfp16intrin.h +2071 -0
- package/lib/clang/{13.0.0 → 16}/include/avx512vlintrin.h +596 -610
- package/lib/clang/{13.0.0 → 16}/include/avx512vlvbmi2intrin.h +96 -96
- package/lib/clang/{13.0.0 → 16}/include/avx512vlvnniintrin.h +24 -24
- package/lib/clang/16/include/avxifmaintrin.h +177 -0
- package/lib/clang/{13.0.0 → 16}/include/avxintrin.h +266 -224
- package/lib/clang/16/include/avxneconvertintrin.h +484 -0
- package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
- package/lib/clang/{13.0.0 → 16}/include/avxvnniintrin.h +16 -16
- package/lib/clang/{13.0.0 → 16}/include/bmiintrin.h +6 -2
- package/lib/clang/{13.0.0 → 16}/include/cetintrin.h +20 -4
- package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
- package/lib/clang/{13.0.0 → 16}/include/cpuid.h +14 -2
- package/lib/clang/16/include/crc32intrin.h +100 -0
- package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
- package/lib/clang/{13.0.0 → 16}/include/emmintrin.h +573 -779
- package/lib/clang/{13.0.0 → 16}/include/f16cintrin.h +4 -4
- package/lib/clang/{13.0.0 → 16}/include/float.h +22 -6
- package/lib/clang/{13.0.0 → 16}/include/gfniintrin.h +54 -53
- package/lib/clang/{13.0.0 → 16}/include/hexagon_protos.h +0 -11
- package/lib/clang/{13.0.0 → 16}/include/hexagon_types.h +0 -32
- package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
- package/lib/clang/16/include/hlsl.h +15 -0
- package/lib/clang/{13.0.0 → 16}/include/hresetintrin.h +2 -2
- package/lib/clang/{13.0.0 → 16}/include/hvx_hexagon_protos.h +1200 -409
- package/lib/clang/{13.0.0 → 16}/include/ia32intrin.h +17 -17
- package/lib/clang/{13.0.0 → 16}/include/immintrin.h +74 -24
- package/lib/clang/{13.0.0 → 16}/include/intrin.h +34 -35
- package/lib/clang/{13.0.0 → 16}/include/keylockerintrin.h +24 -30
- package/lib/clang/16/include/larchintrin.h +234 -0
- package/lib/clang/{13.0.0 → 16}/include/limits.h +22 -1
- package/lib/clang/{13.0.0 → 16}/include/mm_malloc.h +3 -3
- package/lib/clang/{13.0.0 → 16}/include/mmintrin.h +4 -0
- package/lib/clang/{13.0.0 → 16}/include/nmmintrin.h +4 -0
- package/lib/clang/{13.0.0 → 16}/include/opencl-c-base.h +98 -11
- package/lib/clang/{13.0.0 → 16}/include/opencl-c.h +7252 -6208
- package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex +10 -1
- package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex.h +9 -0
- package/lib/clang/{13.0.0 → 16}/include/pmmintrin.h +5 -1
- package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
- package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
- package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
- package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
- package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -386
- package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
- package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
- package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
- package/lib/clang/{13.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
- package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
- package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/lib/clang/16/include/prfchiintrin.h +61 -0
- package/lib/clang/{13.0.0 → 16}/include/prfchwintrin.h +5 -2
- package/lib/clang/16/include/raointintrin.h +203 -0
- package/lib/clang/16/include/rdpruintrin.h +57 -0
- package/lib/clang/{13.0.0 → 16}/include/rdseedintrin.h +3 -3
- package/lib/clang/16/include/riscv_vector.h +211 -0
- package/lib/clang/{13.0.0 → 16}/include/rtmintrin.h +1 -1
- package/lib/clang/{13.0.0 → 16}/include/smmintrin.h +260 -362
- package/lib/clang/{13.0.0 → 16}/include/stdarg.h +23 -7
- package/lib/clang/{13.0.0 → 16}/include/stdatomic.h +14 -1
- package/lib/clang/{13.0.0 → 16}/include/stdbool.h +10 -7
- package/lib/clang/{13.0.0 → 16}/include/stddef.h +9 -2
- package/lib/clang/{13.0.0 → 16}/include/stdint.h +311 -25
- package/lib/clang/16/include/stdnoreturn.h +29 -0
- package/lib/clang/{13.0.0 → 16}/include/tmmintrin.h +10 -6
- package/lib/clang/{13.0.0 → 16}/include/uintrintrin.h +8 -8
- package/lib/clang/{13.0.0 → 16}/include/unwind.h +12 -7
- package/lib/clang/{13.0.0 → 16}/include/vaesintrin.h +1 -1
- package/lib/clang/16/include/velintrin.h +71 -0
- package/lib/clang/16/include/velintrin_approx.h +120 -0
- package/lib/clang/16/include/velintrin_gen.h +1257 -0
- package/lib/clang/{13.0.0 → 16}/include/vpclmulqdqintrin.h +6 -6
- package/lib/clang/{13.0.0 → 16}/include/wasm_simd128.h +169 -26
- package/lib/clang/{13.0.0 → 16}/include/wmmintrin.h +4 -0
- package/lib/clang/16/include/x86gprintrin.h +65 -0
- package/lib/clang/{13.0.0 → 16}/include/x86intrin.h +4 -0
- package/lib/clang/{13.0.0 → 16}/include/xmmintrin.h +19 -10
- package/lib/clang/{13.0.0 → 16}/include/xopintrin.h +31 -31
- package/package.json +6 -6
- package/lib/clang/13.0.0/include/ppc_wrappers/emmintrin.h +0 -2324
- package/lib/clang/13.0.0/include/ppc_wrappers/pmmintrin.h +0 -150
- package/lib/clang/13.0.0/include/ppc_wrappers/smmintrin.h +0 -109
- package/lib/clang/13.0.0/include/ppc_wrappers/tmmintrin.h +0 -495
- package/lib/clang/13.0.0/include/ppc_wrappers/xmmintrin.h +0 -1843
- package/lib/clang/13.0.0/include/riscv_vector.h +0 -123865
- package/lib/clang/13.0.0/include/x86gprintrin.h +0 -23
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/adxintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm64intr.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_bf16.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_cde.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_cmse.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_mve.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/armintr.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/builtins.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cet.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/clwbintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/clzerointrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/fma4intrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/fmaintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/htmintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/inttypes.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/iso646.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/lwpintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/mm3dnow.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/module.modulemap +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/movdirintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/msa.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/pkuintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/popcntintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/s390intrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/serializeintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/sgxintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/shaintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/stdalign.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/tbmintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/tgmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/vadefs.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/varargs.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/vecintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xtestintrin.h +0 -0
|
@@ -39,6 +39,16 @@ typedef float __m256_u __attribute__ ((__vector_size__ (32), __aligned__(1)));
|
|
|
39
39
|
typedef double __m256d_u __attribute__((__vector_size__(32), __aligned__(1)));
|
|
40
40
|
typedef long long __m256i_u __attribute__((__vector_size__(32), __aligned__(1)));
|
|
41
41
|
|
|
42
|
+
#ifdef __SSE2__
|
|
43
|
+
/* Both _Float16 and __bf16 require SSE2 being enabled. */
|
|
44
|
+
typedef _Float16 __v16hf __attribute__((__vector_size__(32), __aligned__(32)));
|
|
45
|
+
typedef _Float16 __m256h __attribute__((__vector_size__(32), __aligned__(32)));
|
|
46
|
+
typedef _Float16 __m256h_u __attribute__((__vector_size__(32), __aligned__(1)));
|
|
47
|
+
|
|
48
|
+
typedef __bf16 __v16bf __attribute__((__vector_size__(32), __aligned__(32)));
|
|
49
|
+
typedef __bf16 __m256bh __attribute__((__vector_size__(32), __aligned__(32)));
|
|
50
|
+
#endif
|
|
51
|
+
|
|
42
52
|
/* Define the default attributes for the functions in this file. */
|
|
43
53
|
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx"), __min_vector_width__(256)))
|
|
44
54
|
#define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx"), __min_vector_width__(128)))
|
|
@@ -400,7 +410,7 @@ _mm256_rcp_ps(__m256 __a)
|
|
|
400
410
|
/// 11: Truncated.
|
|
401
411
|
/// \returns A 256-bit vector of [4 x double] containing the rounded values.
|
|
402
412
|
#define _mm256_round_pd(V, M) \
|
|
403
|
-
|
|
413
|
+
((__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M)))
|
|
404
414
|
|
|
405
415
|
/// Rounds the values stored in a 256-bit vector of [8 x float] as
|
|
406
416
|
/// specified by the byte operand. The source values are rounded to integer
|
|
@@ -432,7 +442,7 @@ _mm256_rcp_ps(__m256 __a)
|
|
|
432
442
|
/// 11: Truncated.
|
|
433
443
|
/// \returns A 256-bit vector of [8 x float] containing the rounded values.
|
|
434
444
|
#define _mm256_round_ps(V, M) \
|
|
435
|
-
(__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M))
|
|
445
|
+
((__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M)))
|
|
436
446
|
|
|
437
447
|
/// Rounds up the values stored in a 256-bit vector of [4 x double]. The
|
|
438
448
|
/// source values are rounded up to integer values and returned as 64-bit
|
|
@@ -989,7 +999,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
989
999
|
/// returned vector.
|
|
990
1000
|
/// \returns A 128-bit vector of [2 x double] containing the copied values.
|
|
991
1001
|
#define _mm_permute_pd(A, C) \
|
|
992
|
-
(__m128d)__builtin_ia32_vpermilpd((__v2df)(__m128d)(A), (int)(C))
|
|
1002
|
+
((__m128d)__builtin_ia32_vpermilpd((__v2df)(__m128d)(A), (int)(C)))
|
|
993
1003
|
|
|
994
1004
|
/// Copies the values in a 256-bit vector of [4 x double] as specified by
|
|
995
1005
|
/// the immediate integer operand.
|
|
@@ -1029,7 +1039,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1029
1039
|
/// returned vector.
|
|
1030
1040
|
/// \returns A 256-bit vector of [4 x double] containing the copied values.
|
|
1031
1041
|
#define _mm256_permute_pd(A, C) \
|
|
1032
|
-
(__m256d)__builtin_ia32_vpermilpd256((__v4df)(__m256d)(A), (int)(C))
|
|
1042
|
+
((__m256d)__builtin_ia32_vpermilpd256((__v4df)(__m256d)(A), (int)(C)))
|
|
1033
1043
|
|
|
1034
1044
|
/// Copies the values in a 128-bit vector of [4 x float] as specified by
|
|
1035
1045
|
/// the immediate integer operand.
|
|
@@ -1085,7 +1095,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1085
1095
|
/// returned vector.
|
|
1086
1096
|
/// \returns A 128-bit vector of [4 x float] containing the copied values.
|
|
1087
1097
|
#define _mm_permute_ps(A, C) \
|
|
1088
|
-
(__m128)__builtin_ia32_vpermilps((__v4sf)(__m128)(A), (int)(C))
|
|
1098
|
+
((__m128)__builtin_ia32_vpermilps((__v4sf)(__m128)(A), (int)(C)))
|
|
1089
1099
|
|
|
1090
1100
|
/// Copies the values in a 256-bit vector of [8 x float] as specified by
|
|
1091
1101
|
/// the immediate integer operand.
|
|
@@ -1177,7 +1187,7 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1177
1187
|
/// returned vector.
|
|
1178
1188
|
/// \returns A 256-bit vector of [8 x float] containing the copied values.
|
|
1179
1189
|
#define _mm256_permute_ps(A, C) \
|
|
1180
|
-
(__m256)__builtin_ia32_vpermilps256((__v8sf)(__m256)(A), (int)(C))
|
|
1190
|
+
((__m256)__builtin_ia32_vpermilps256((__v8sf)(__m256)(A), (int)(C)))
|
|
1181
1191
|
|
|
1182
1192
|
/// Permutes 128-bit data values stored in two 256-bit vectors of
|
|
1183
1193
|
/// [4 x double], as specified by the immediate integer operand.
|
|
@@ -1217,8 +1227,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1217
1227
|
/// destination.
|
|
1218
1228
|
/// \returns A 256-bit vector of [4 x double] containing the copied values.
|
|
1219
1229
|
#define _mm256_permute2f128_pd(V1, V2, M) \
|
|
1220
|
-
(__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \
|
|
1221
|
-
|
|
1230
|
+
((__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \
|
|
1231
|
+
(__v4df)(__m256d)(V2), (int)(M)))
|
|
1222
1232
|
|
|
1223
1233
|
/// Permutes 128-bit data values stored in two 256-bit vectors of
|
|
1224
1234
|
/// [8 x float], as specified by the immediate integer operand.
|
|
@@ -1258,8 +1268,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1258
1268
|
/// destination.
|
|
1259
1269
|
/// \returns A 256-bit vector of [8 x float] containing the copied values.
|
|
1260
1270
|
#define _mm256_permute2f128_ps(V1, V2, M) \
|
|
1261
|
-
(__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \
|
|
1262
|
-
|
|
1271
|
+
((__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \
|
|
1272
|
+
(__v8sf)(__m256)(V2), (int)(M)))
|
|
1263
1273
|
|
|
1264
1274
|
/// Permutes 128-bit data values stored in two 256-bit integer vectors,
|
|
1265
1275
|
/// as specified by the immediate integer operand.
|
|
@@ -1298,8 +1308,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1298
1308
|
/// destination.
|
|
1299
1309
|
/// \returns A 256-bit integer vector containing the copied values.
|
|
1300
1310
|
#define _mm256_permute2f128_si256(V1, V2, M) \
|
|
1301
|
-
(__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \
|
|
1302
|
-
|
|
1311
|
+
((__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \
|
|
1312
|
+
(__v8si)(__m256i)(V2), (int)(M)))
|
|
1303
1313
|
|
|
1304
1314
|
/* Vector Blend */
|
|
1305
1315
|
/// Merges 64-bit double-precision data values stored in either of the
|
|
@@ -1327,8 +1337,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1327
1337
|
/// operand \a V2 is copied to the same position in the destination.
|
|
1328
1338
|
/// \returns A 256-bit vector of [4 x double] containing the copied values.
|
|
1329
1339
|
#define _mm256_blend_pd(V1, V2, M) \
|
|
1330
|
-
(__m256d)__builtin_ia32_blendpd256((__v4df)(__m256d)(V1), \
|
|
1331
|
-
|
|
1340
|
+
((__m256d)__builtin_ia32_blendpd256((__v4df)(__m256d)(V1), \
|
|
1341
|
+
(__v4df)(__m256d)(V2), (int)(M)))
|
|
1332
1342
|
|
|
1333
1343
|
/// Merges 32-bit single-precision data values stored in either of the
|
|
1334
1344
|
/// two 256-bit vectors of [8 x float], as specified by the immediate
|
|
@@ -1355,8 +1365,8 @@ _mm256_permutevar_ps(__m256 __a, __m256i __c)
|
|
|
1355
1365
|
/// operand \a V2 is copied to the same position in the destination.
|
|
1356
1366
|
/// \returns A 256-bit vector of [8 x float] containing the copied values.
|
|
1357
1367
|
#define _mm256_blend_ps(V1, V2, M) \
|
|
1358
|
-
(__m256)__builtin_ia32_blendps256((__v8sf)(__m256)(V1), \
|
|
1359
|
-
|
|
1368
|
+
((__m256)__builtin_ia32_blendps256((__v8sf)(__m256)(V1), \
|
|
1369
|
+
(__v8sf)(__m256)(V2), (int)(M)))
|
|
1360
1370
|
|
|
1361
1371
|
/// Merges 64-bit double-precision data values stored in either of the
|
|
1362
1372
|
/// two 256-bit vectors of [4 x double], as specified by the 256-bit vector
|
|
@@ -1453,8 +1463,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1453
1463
|
/// two parallel dot product computations.
|
|
1454
1464
|
/// \returns A 256-bit vector of [8 x float] containing the two dot products.
|
|
1455
1465
|
#define _mm256_dp_ps(V1, V2, M) \
|
|
1456
|
-
(__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \
|
|
1457
|
-
|
|
1466
|
+
((__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \
|
|
1467
|
+
(__v8sf)(__m256)(V2), (M)))
|
|
1458
1468
|
|
|
1459
1469
|
/* Vector shuffle */
|
|
1460
1470
|
/// Selects 8 float values from the 256-bit operands of [8 x float], as
|
|
@@ -1504,11 +1514,14 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1504
1514
|
/// 00: Bits [31:0] and [159:128] are copied from the selected operand. \n
|
|
1505
1515
|
/// 01: Bits [63:32] and [191:160] are copied from the selected operand. \n
|
|
1506
1516
|
/// 10: Bits [95:64] and [223:192] are copied from the selected operand. \n
|
|
1507
|
-
/// 11: Bits [127:96] and [255:224] are copied from the selected operand.
|
|
1517
|
+
/// 11: Bits [127:96] and [255:224] are copied from the selected operand. \n
|
|
1518
|
+
/// Note: To generate a mask, you can use the \c _MM_SHUFFLE macro.
|
|
1519
|
+
/// <c>_MM_SHUFFLE(b6, b4, b2, b0)</c> can create an 8-bit mask of the form
|
|
1520
|
+
/// <c>[b6, b4, b2, b0]</c>.
|
|
1508
1521
|
/// \returns A 256-bit vector of [8 x float] containing the shuffled values.
|
|
1509
1522
|
#define _mm256_shuffle_ps(a, b, mask) \
|
|
1510
|
-
(__m256)__builtin_ia32_shufps256((__v8sf)(__m256)(a), \
|
|
1511
|
-
|
|
1523
|
+
((__m256)__builtin_ia32_shufps256((__v8sf)(__m256)(a), \
|
|
1524
|
+
(__v8sf)(__m256)(b), (int)(mask)))
|
|
1512
1525
|
|
|
1513
1526
|
/// Selects four double-precision values from the 256-bit operands of
|
|
1514
1527
|
/// [4 x double], as specified by the immediate value operand.
|
|
@@ -1553,8 +1566,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1553
1566
|
/// destination.
|
|
1554
1567
|
/// \returns A 256-bit vector of [4 x double] containing the shuffled values.
|
|
1555
1568
|
#define _mm256_shuffle_pd(a, b, mask) \
|
|
1556
|
-
(__m256d)__builtin_ia32_shufpd256((__v4df)(__m256d)(a), \
|
|
1557
|
-
|
|
1569
|
+
((__m256d)__builtin_ia32_shufpd256((__v4df)(__m256d)(a), \
|
|
1570
|
+
(__v4df)(__m256d)(b), (int)(mask)))
|
|
1558
1571
|
|
|
1559
1572
|
/* Compare */
|
|
1560
1573
|
#define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */
|
|
@@ -1647,8 +1660,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1647
1660
|
/// 0x1F: True (unordered, signaling)
|
|
1648
1661
|
/// \returns A 128-bit vector of [2 x double] containing the comparison results.
|
|
1649
1662
|
#define _mm_cmp_pd(a, b, c) \
|
|
1650
|
-
(__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
|
|
1651
|
-
|
|
1663
|
+
((__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
|
|
1664
|
+
(__v2df)(__m128d)(b), (c)))
|
|
1652
1665
|
|
|
1653
1666
|
/// Compares each of the corresponding values of two 128-bit vectors of
|
|
1654
1667
|
/// [4 x float], using the operation specified by the immediate integer
|
|
@@ -1707,8 +1720,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1707
1720
|
/// 0x1F: True (unordered, signaling)
|
|
1708
1721
|
/// \returns A 128-bit vector of [4 x float] containing the comparison results.
|
|
1709
1722
|
#define _mm_cmp_ps(a, b, c) \
|
|
1710
|
-
(__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
|
|
1711
|
-
|
|
1723
|
+
((__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
|
|
1724
|
+
(__v4sf)(__m128)(b), (c)))
|
|
1712
1725
|
|
|
1713
1726
|
/// Compares each of the corresponding double-precision values of two
|
|
1714
1727
|
/// 256-bit vectors of [4 x double], using the operation specified by the
|
|
@@ -1767,8 +1780,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1767
1780
|
/// 0x1F: True (unordered, signaling)
|
|
1768
1781
|
/// \returns A 256-bit vector of [4 x double] containing the comparison results.
|
|
1769
1782
|
#define _mm256_cmp_pd(a, b, c) \
|
|
1770
|
-
(__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
|
|
1771
|
-
|
|
1783
|
+
((__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
|
|
1784
|
+
(__v4df)(__m256d)(b), (c)))
|
|
1772
1785
|
|
|
1773
1786
|
/// Compares each of the corresponding values of two 256-bit vectors of
|
|
1774
1787
|
/// [8 x float], using the operation specified by the immediate integer
|
|
@@ -1827,8 +1840,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1827
1840
|
/// 0x1F: True (unordered, signaling)
|
|
1828
1841
|
/// \returns A 256-bit vector of [8 x float] containing the comparison results.
|
|
1829
1842
|
#define _mm256_cmp_ps(a, b, c) \
|
|
1830
|
-
(__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
|
|
1831
|
-
|
|
1843
|
+
((__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
|
|
1844
|
+
(__v8sf)(__m256)(b), (c)))
|
|
1832
1845
|
|
|
1833
1846
|
/// Compares each of the corresponding scalar double-precision values of
|
|
1834
1847
|
/// two 128-bit vectors of [2 x double], using the operation specified by the
|
|
@@ -1886,8 +1899,8 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1886
1899
|
/// 0x1F: True (unordered, signaling)
|
|
1887
1900
|
/// \returns A 128-bit vector of [2 x double] containing the comparison results.
|
|
1888
1901
|
#define _mm_cmp_sd(a, b, c) \
|
|
1889
|
-
(__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
|
|
1890
|
-
|
|
1902
|
+
((__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
|
|
1903
|
+
(__v2df)(__m128d)(b), (c)))
|
|
1891
1904
|
|
|
1892
1905
|
/// Compares each of the corresponding scalar values of two 128-bit
|
|
1893
1906
|
/// vectors of [4 x float], using the operation specified by the immediate
|
|
@@ -1945,64 +1958,76 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
1945
1958
|
/// 0x1F: True (unordered, signaling)
|
|
1946
1959
|
/// \returns A 128-bit vector of [4 x float] containing the comparison results.
|
|
1947
1960
|
#define _mm_cmp_ss(a, b, c) \
|
|
1948
|
-
(__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \
|
|
1949
|
-
|
|
1961
|
+
((__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \
|
|
1962
|
+
(__v4sf)(__m128)(b), (c)))
|
|
1950
1963
|
|
|
1951
1964
|
/// Takes a [8 x i32] vector and returns the vector element value
|
|
1952
1965
|
/// indexed by the immediate constant operand.
|
|
1953
1966
|
///
|
|
1954
1967
|
/// \headerfile <x86intrin.h>
|
|
1955
1968
|
///
|
|
1969
|
+
/// \code
|
|
1970
|
+
/// int _mm256_extract_epi32(__m256i X, const int N);
|
|
1971
|
+
/// \endcode
|
|
1972
|
+
///
|
|
1956
1973
|
/// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
|
|
1957
1974
|
/// instruction.
|
|
1958
1975
|
///
|
|
1959
|
-
/// \param
|
|
1976
|
+
/// \param X
|
|
1960
1977
|
/// A 256-bit vector of [8 x i32].
|
|
1961
|
-
/// \param
|
|
1978
|
+
/// \param N
|
|
1962
1979
|
/// An immediate integer operand with bits [2:0] determining which vector
|
|
1963
1980
|
/// element is extracted and returned.
|
|
1964
1981
|
/// \returns A 32-bit integer containing the extracted 32 bits of extended
|
|
1965
1982
|
/// packed data.
|
|
1966
1983
|
#define _mm256_extract_epi32(X, N) \
|
|
1967
|
-
(int)__builtin_ia32_vec_ext_v8si((__v8si)(__m256i)(X), (int)(N))
|
|
1984
|
+
((int)__builtin_ia32_vec_ext_v8si((__v8si)(__m256i)(X), (int)(N)))
|
|
1968
1985
|
|
|
1969
1986
|
/// Takes a [16 x i16] vector and returns the vector element value
|
|
1970
1987
|
/// indexed by the immediate constant operand.
|
|
1971
1988
|
///
|
|
1972
1989
|
/// \headerfile <x86intrin.h>
|
|
1973
1990
|
///
|
|
1991
|
+
/// \code
|
|
1992
|
+
/// int _mm256_extract_epi16(__m256i X, const int N);
|
|
1993
|
+
/// \endcode
|
|
1994
|
+
///
|
|
1974
1995
|
/// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
|
|
1975
1996
|
/// instruction.
|
|
1976
1997
|
///
|
|
1977
|
-
/// \param
|
|
1998
|
+
/// \param X
|
|
1978
1999
|
/// A 256-bit integer vector of [16 x i16].
|
|
1979
|
-
/// \param
|
|
2000
|
+
/// \param N
|
|
1980
2001
|
/// An immediate integer operand with bits [3:0] determining which vector
|
|
1981
2002
|
/// element is extracted and returned.
|
|
1982
2003
|
/// \returns A 32-bit integer containing the extracted 16 bits of zero extended
|
|
1983
2004
|
/// packed data.
|
|
1984
2005
|
#define _mm256_extract_epi16(X, N) \
|
|
1985
|
-
(int)(unsigned short)__builtin_ia32_vec_ext_v16hi((__v16hi)(__m256i)(X), \
|
|
1986
|
-
|
|
2006
|
+
((int)(unsigned short)__builtin_ia32_vec_ext_v16hi((__v16hi)(__m256i)(X), \
|
|
2007
|
+
(int)(N)))
|
|
1987
2008
|
|
|
1988
2009
|
/// Takes a [32 x i8] vector and returns the vector element value
|
|
1989
2010
|
/// indexed by the immediate constant operand.
|
|
1990
2011
|
///
|
|
1991
2012
|
/// \headerfile <x86intrin.h>
|
|
1992
2013
|
///
|
|
2014
|
+
/// \code
|
|
2015
|
+
/// int _mm256_extract_epi8(__m256i X, const int N);
|
|
2016
|
+
/// \endcode
|
|
2017
|
+
///
|
|
1993
2018
|
/// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
|
|
1994
2019
|
/// instruction.
|
|
1995
2020
|
///
|
|
1996
|
-
/// \param
|
|
2021
|
+
/// \param X
|
|
1997
2022
|
/// A 256-bit integer vector of [32 x i8].
|
|
1998
|
-
/// \param
|
|
2023
|
+
/// \param N
|
|
1999
2024
|
/// An immediate integer operand with bits [4:0] determining which vector
|
|
2000
2025
|
/// element is extracted and returned.
|
|
2001
2026
|
/// \returns A 32-bit integer containing the extracted 8 bits of zero extended
|
|
2002
2027
|
/// packed data.
|
|
2003
2028
|
#define _mm256_extract_epi8(X, N) \
|
|
2004
|
-
(int)(unsigned char)__builtin_ia32_vec_ext_v32qi((__v32qi)(__m256i)(X), \
|
|
2005
|
-
|
|
2029
|
+
((int)(unsigned char)__builtin_ia32_vec_ext_v32qi((__v32qi)(__m256i)(X), \
|
|
2030
|
+
(int)(N)))
|
|
2006
2031
|
|
|
2007
2032
|
#ifdef __x86_64__
|
|
2008
2033
|
/// Takes a [4 x i64] vector and returns the vector element value
|
|
@@ -2010,18 +2035,22 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
2010
2035
|
///
|
|
2011
2036
|
/// \headerfile <x86intrin.h>
|
|
2012
2037
|
///
|
|
2038
|
+
/// \code
|
|
2039
|
+
/// long long _mm256_extract_epi64(__m256i X, const int N);
|
|
2040
|
+
/// \endcode
|
|
2041
|
+
///
|
|
2013
2042
|
/// This intrinsic corresponds to the <c> VEXTRACTF128+COMPOSITE </c>
|
|
2014
2043
|
/// instruction.
|
|
2015
2044
|
///
|
|
2016
|
-
/// \param
|
|
2045
|
+
/// \param X
|
|
2017
2046
|
/// A 256-bit integer vector of [4 x i64].
|
|
2018
|
-
/// \param
|
|
2047
|
+
/// \param N
|
|
2019
2048
|
/// An immediate integer operand with bits [1:0] determining which vector
|
|
2020
2049
|
/// element is extracted and returned.
|
|
2021
2050
|
/// \returns A 64-bit integer containing the extracted 64 bits of extended
|
|
2022
2051
|
/// packed data.
|
|
2023
2052
|
#define _mm256_extract_epi64(X, N) \
|
|
2024
|
-
(long long)__builtin_ia32_vec_ext_v4di((__v4di)(__m256i)(X), (int)(N))
|
|
2053
|
+
((long long)__builtin_ia32_vec_ext_v4di((__v4di)(__m256i)(X), (int)(N)))
|
|
2025
2054
|
#endif
|
|
2026
2055
|
|
|
2027
2056
|
/// Takes a [8 x i32] vector and replaces the vector element value
|
|
@@ -2030,21 +2059,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
2030
2059
|
///
|
|
2031
2060
|
/// \headerfile <x86intrin.h>
|
|
2032
2061
|
///
|
|
2062
|
+
/// \code
|
|
2063
|
+
/// __m256i _mm256_insert_epi32(__m256i X, int I, const int N);
|
|
2064
|
+
/// \endcode
|
|
2065
|
+
///
|
|
2033
2066
|
/// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
|
|
2034
2067
|
/// instruction.
|
|
2035
2068
|
///
|
|
2036
|
-
/// \param
|
|
2069
|
+
/// \param X
|
|
2037
2070
|
/// A vector of [8 x i32] to be used by the insert operation.
|
|
2038
|
-
/// \param
|
|
2071
|
+
/// \param I
|
|
2039
2072
|
/// An integer value. The replacement value for the insert operation.
|
|
2040
|
-
/// \param
|
|
2073
|
+
/// \param N
|
|
2041
2074
|
/// An immediate integer specifying the index of the vector element to be
|
|
2042
2075
|
/// replaced.
|
|
2043
|
-
/// \returns A copy of vector \a
|
|
2044
|
-
/// \a
|
|
2076
|
+
/// \returns A copy of vector \a X, after replacing its element indexed by
|
|
2077
|
+
/// \a N with \a I.
|
|
2045
2078
|
#define _mm256_insert_epi32(X, I, N) \
|
|
2046
|
-
(__m256i)__builtin_ia32_vec_set_v8si((__v8si)(__m256i)(X), \
|
|
2047
|
-
|
|
2079
|
+
((__m256i)__builtin_ia32_vec_set_v8si((__v8si)(__m256i)(X), \
|
|
2080
|
+
(int)(I), (int)(N)))
|
|
2048
2081
|
|
|
2049
2082
|
|
|
2050
2083
|
/// Takes a [16 x i16] vector and replaces the vector element value
|
|
@@ -2053,21 +2086,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
2053
2086
|
///
|
|
2054
2087
|
/// \headerfile <x86intrin.h>
|
|
2055
2088
|
///
|
|
2089
|
+
/// \code
|
|
2090
|
+
/// __m256i _mm256_insert_epi16(__m256i X, int I, const int N);
|
|
2091
|
+
/// \endcode
|
|
2092
|
+
///
|
|
2056
2093
|
/// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
|
|
2057
2094
|
/// instruction.
|
|
2058
2095
|
///
|
|
2059
|
-
/// \param
|
|
2096
|
+
/// \param X
|
|
2060
2097
|
/// A vector of [16 x i16] to be used by the insert operation.
|
|
2061
|
-
/// \param
|
|
2098
|
+
/// \param I
|
|
2062
2099
|
/// An i16 integer value. The replacement value for the insert operation.
|
|
2063
|
-
/// \param
|
|
2100
|
+
/// \param N
|
|
2064
2101
|
/// An immediate integer specifying the index of the vector element to be
|
|
2065
2102
|
/// replaced.
|
|
2066
|
-
/// \returns A copy of vector \a
|
|
2067
|
-
/// \a
|
|
2103
|
+
/// \returns A copy of vector \a X, after replacing its element indexed by
|
|
2104
|
+
/// \a N with \a I.
|
|
2068
2105
|
#define _mm256_insert_epi16(X, I, N) \
|
|
2069
|
-
(__m256i)__builtin_ia32_vec_set_v16hi((__v16hi)(__m256i)(X), \
|
|
2070
|
-
|
|
2106
|
+
((__m256i)__builtin_ia32_vec_set_v16hi((__v16hi)(__m256i)(X), \
|
|
2107
|
+
(int)(I), (int)(N)))
|
|
2071
2108
|
|
|
2072
2109
|
/// Takes a [32 x i8] vector and replaces the vector element value
|
|
2073
2110
|
/// indexed by the immediate constant operand with a new value. Returns the
|
|
@@ -2075,21 +2112,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
2075
2112
|
///
|
|
2076
2113
|
/// \headerfile <x86intrin.h>
|
|
2077
2114
|
///
|
|
2115
|
+
/// \code
|
|
2116
|
+
/// __m256i _mm256_insert_epi8(__m256i X, int I, const int N);
|
|
2117
|
+
/// \endcode
|
|
2118
|
+
///
|
|
2078
2119
|
/// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
|
|
2079
2120
|
/// instruction.
|
|
2080
2121
|
///
|
|
2081
|
-
/// \param
|
|
2122
|
+
/// \param X
|
|
2082
2123
|
/// A vector of [32 x i8] to be used by the insert operation.
|
|
2083
|
-
/// \param
|
|
2124
|
+
/// \param I
|
|
2084
2125
|
/// An i8 integer value. The replacement value for the insert operation.
|
|
2085
|
-
/// \param
|
|
2126
|
+
/// \param N
|
|
2086
2127
|
/// An immediate integer specifying the index of the vector element to be
|
|
2087
2128
|
/// replaced.
|
|
2088
|
-
/// \returns A copy of vector \a
|
|
2089
|
-
/// \a
|
|
2129
|
+
/// \returns A copy of vector \a X, after replacing its element indexed by
|
|
2130
|
+
/// \a N with \a I.
|
|
2090
2131
|
#define _mm256_insert_epi8(X, I, N) \
|
|
2091
|
-
(__m256i)__builtin_ia32_vec_set_v32qi((__v32qi)(__m256i)(X), \
|
|
2092
|
-
|
|
2132
|
+
((__m256i)__builtin_ia32_vec_set_v32qi((__v32qi)(__m256i)(X), \
|
|
2133
|
+
(int)(I), (int)(N)))
|
|
2093
2134
|
|
|
2094
2135
|
#ifdef __x86_64__
|
|
2095
2136
|
/// Takes a [4 x i64] vector and replaces the vector element value
|
|
@@ -2098,21 +2139,25 @@ _mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
|
|
|
2098
2139
|
///
|
|
2099
2140
|
/// \headerfile <x86intrin.h>
|
|
2100
2141
|
///
|
|
2142
|
+
/// \code
|
|
2143
|
+
/// __m256i _mm256_insert_epi64(__m256i X, int I, const int N);
|
|
2144
|
+
/// \endcode
|
|
2145
|
+
///
|
|
2101
2146
|
/// This intrinsic corresponds to the <c> VINSERTF128+COMPOSITE </c>
|
|
2102
2147
|
/// instruction.
|
|
2103
2148
|
///
|
|
2104
|
-
/// \param
|
|
2149
|
+
/// \param X
|
|
2105
2150
|
/// A vector of [4 x i64] to be used by the insert operation.
|
|
2106
|
-
/// \param
|
|
2151
|
+
/// \param I
|
|
2107
2152
|
/// A 64-bit integer value. The replacement value for the insert operation.
|
|
2108
|
-
/// \param
|
|
2153
|
+
/// \param N
|
|
2109
2154
|
/// An immediate integer specifying the index of the vector element to be
|
|
2110
2155
|
/// replaced.
|
|
2111
|
-
/// \returns A copy of vector \a
|
|
2112
|
-
/// \a
|
|
2156
|
+
/// \returns A copy of vector \a X, after replacing its element indexed by
|
|
2157
|
+
/// \a N with \a I.
|
|
2113
2158
|
#define _mm256_insert_epi64(X, I, N) \
|
|
2114
|
-
(__m256i)__builtin_ia32_vec_set_v4di((__v4di)(__m256i)(X), \
|
|
2115
|
-
|
|
2159
|
+
((__m256i)__builtin_ia32_vec_set_v4di((__v4di)(__m256i)(X), \
|
|
2160
|
+
(long long)(I), (int)(N)))
|
|
2116
2161
|
#endif
|
|
2117
2162
|
|
|
2118
2163
|
/* Conversion */
|
|
@@ -3177,7 +3222,7 @@ _mm256_loadu_si256(__m256i_u const *__p)
|
|
|
3177
3222
|
/// A pointer to a 256-bit integer vector containing integer values.
|
|
3178
3223
|
/// \returns A 256-bit integer vector containing the moved values.
|
|
3179
3224
|
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
3180
|
-
_mm256_lddqu_si256(
|
|
3225
|
+
_mm256_lddqu_si256(__m256i_u const *__p)
|
|
3181
3226
|
{
|
|
3182
3227
|
return (__m256i)__builtin_ia32_lddqu256((char const *)__p);
|
|
3183
3228
|
}
|
|
@@ -4253,7 +4298,7 @@ _mm256_set1_epi64x(long long __q)
|
|
|
4253
4298
|
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4254
4299
|
_mm256_setzero_pd(void)
|
|
4255
4300
|
{
|
|
4256
|
-
return __extension__ (__m256d){ 0, 0, 0, 0 };
|
|
4301
|
+
return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 };
|
|
4257
4302
|
}
|
|
4258
4303
|
|
|
4259
4304
|
/// Constructs a 256-bit floating-point vector of [8 x float] with all
|
|
@@ -4267,7 +4312,7 @@ _mm256_setzero_pd(void)
|
|
|
4267
4312
|
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4268
4313
|
_mm256_setzero_ps(void)
|
|
4269
4314
|
{
|
|
4270
|
-
return __extension__ (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 };
|
|
4315
|
+
return __extension__ (__m256){ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f };
|
|
4271
4316
|
}
|
|
4272
4317
|
|
|
4273
4318
|
/// Constructs a 256-bit integer vector initialized to zero.
|
|
@@ -4592,8 +4637,8 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4592
4637
|
/// result.
|
|
4593
4638
|
/// \returns A 256-bit vector of [8 x float] containing the interleaved values.
|
|
4594
4639
|
#define _mm256_insertf128_ps(V1, V2, M) \
|
|
4595
|
-
(__m256)__builtin_ia32_vinsertf128_ps256((__v8sf)(__m256)(V1), \
|
|
4596
|
-
|
|
4640
|
+
((__m256)__builtin_ia32_vinsertf128_ps256((__v8sf)(__m256)(V1), \
|
|
4641
|
+
(__v4sf)(__m128)(V2), (int)(M)))
|
|
4597
4642
|
|
|
4598
4643
|
/// Constructs a new 256-bit vector of [4 x double] by first duplicating
|
|
4599
4644
|
/// a 256-bit vector of [4 x double] given in the first parameter, and then
|
|
@@ -4630,8 +4675,8 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4630
4675
|
/// result.
|
|
4631
4676
|
/// \returns A 256-bit vector of [4 x double] containing the interleaved values.
|
|
4632
4677
|
#define _mm256_insertf128_pd(V1, V2, M) \
|
|
4633
|
-
(__m256d)__builtin_ia32_vinsertf128_pd256((__v4df)(__m256d)(V1), \
|
|
4634
|
-
|
|
4678
|
+
((__m256d)__builtin_ia32_vinsertf128_pd256((__v4df)(__m256d)(V1), \
|
|
4679
|
+
(__v2df)(__m128d)(V2), (int)(M)))
|
|
4635
4680
|
|
|
4636
4681
|
/// Constructs a new 256-bit integer vector by first duplicating a
|
|
4637
4682
|
/// 256-bit integer vector given in the first parameter, and then replacing
|
|
@@ -4668,8 +4713,8 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4668
4713
|
/// result.
|
|
4669
4714
|
/// \returns A 256-bit integer vector containing the interleaved values.
|
|
4670
4715
|
#define _mm256_insertf128_si256(V1, V2, M) \
|
|
4671
|
-
(__m256i)__builtin_ia32_vinsertf128_si256((__v8si)(__m256i)(V1), \
|
|
4672
|
-
|
|
4716
|
+
((__m256i)__builtin_ia32_vinsertf128_si256((__v8si)(__m256i)(V1), \
|
|
4717
|
+
(__v4si)(__m128i)(V2), (int)(M)))
|
|
4673
4718
|
|
|
4674
4719
|
/*
|
|
4675
4720
|
Vector extract.
|
|
@@ -4698,7 +4743,7 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4698
4743
|
/// If bit [0] of \a M is 1, bits [255:128] of \a V are copied to the result.
|
|
4699
4744
|
/// \returns A 128-bit vector of [4 x float] containing the extracted bits.
|
|
4700
4745
|
#define _mm256_extractf128_ps(V, M) \
|
|
4701
|
-
(__m128)__builtin_ia32_vextractf128_ps256((__v8sf)(__m256)(V), (int)(M))
|
|
4746
|
+
((__m128)__builtin_ia32_vextractf128_ps256((__v8sf)(__m256)(V), (int)(M)))
|
|
4702
4747
|
|
|
4703
4748
|
/// Extracts either the upper or the lower 128 bits from a 256-bit vector
|
|
4704
4749
|
/// of [4 x double], as determined by the immediate integer parameter, and
|
|
@@ -4722,7 +4767,7 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4722
4767
|
/// If bit [0] of \a M is 1, bits [255:128] of \a V are copied to the result.
|
|
4723
4768
|
/// \returns A 128-bit vector of [2 x double] containing the extracted bits.
|
|
4724
4769
|
#define _mm256_extractf128_pd(V, M) \
|
|
4725
|
-
(__m128d)__builtin_ia32_vextractf128_pd256((__v4df)(__m256d)(V), (int)(M))
|
|
4770
|
+
((__m128d)__builtin_ia32_vextractf128_pd256((__v4df)(__m256d)(V), (int)(M)))
|
|
4726
4771
|
|
|
4727
4772
|
/// Extracts either the upper or the lower 128 bits from a 256-bit
|
|
4728
4773
|
/// integer vector, as determined by the immediate integer parameter, and
|
|
@@ -4746,7 +4791,136 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4746
4791
|
/// If bit [0] of \a M is 1, bits [255:128] of \a V are copied to the result.
|
|
4747
4792
|
/// \returns A 128-bit integer vector containing the extracted bits.
|
|
4748
4793
|
#define _mm256_extractf128_si256(V, M) \
|
|
4749
|
-
(__m128i)__builtin_ia32_vextractf128_si256((__v8si)(__m256i)(V), (int)(M))
|
|
4794
|
+
((__m128i)__builtin_ia32_vextractf128_si256((__v8si)(__m256i)(V), (int)(M)))
|
|
4795
|
+
|
|
4796
|
+
/// Constructs a 256-bit floating-point vector of [8 x float] by
|
|
4797
|
+
/// concatenating two 128-bit floating-point vectors of [4 x float].
|
|
4798
|
+
///
|
|
4799
|
+
/// \headerfile <x86intrin.h>
|
|
4800
|
+
///
|
|
4801
|
+
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4802
|
+
///
|
|
4803
|
+
/// \param __hi
|
|
4804
|
+
/// A 128-bit floating-point vector of [4 x float] to be copied to the upper
|
|
4805
|
+
/// 128 bits of the result.
|
|
4806
|
+
/// \param __lo
|
|
4807
|
+
/// A 128-bit floating-point vector of [4 x float] to be copied to the lower
|
|
4808
|
+
/// 128 bits of the result.
|
|
4809
|
+
/// \returns A 256-bit floating-point vector of [8 x float] containing the
|
|
4810
|
+
/// concatenated result.
|
|
4811
|
+
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4812
|
+
_mm256_set_m128 (__m128 __hi, __m128 __lo)
|
|
4813
|
+
{
|
|
4814
|
+
return (__m256) __builtin_shufflevector((__v4sf)__lo, (__v4sf)__hi, 0, 1, 2, 3, 4, 5, 6, 7);
|
|
4815
|
+
}
|
|
4816
|
+
|
|
4817
|
+
/// Constructs a 256-bit floating-point vector of [4 x double] by
|
|
4818
|
+
/// concatenating two 128-bit floating-point vectors of [2 x double].
|
|
4819
|
+
///
|
|
4820
|
+
/// \headerfile <x86intrin.h>
|
|
4821
|
+
///
|
|
4822
|
+
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4823
|
+
///
|
|
4824
|
+
/// \param __hi
|
|
4825
|
+
/// A 128-bit floating-point vector of [2 x double] to be copied to the upper
|
|
4826
|
+
/// 128 bits of the result.
|
|
4827
|
+
/// \param __lo
|
|
4828
|
+
/// A 128-bit floating-point vector of [2 x double] to be copied to the lower
|
|
4829
|
+
/// 128 bits of the result.
|
|
4830
|
+
/// \returns A 256-bit floating-point vector of [4 x double] containing the
|
|
4831
|
+
/// concatenated result.
|
|
4832
|
+
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4833
|
+
_mm256_set_m128d (__m128d __hi, __m128d __lo)
|
|
4834
|
+
{
|
|
4835
|
+
return (__m256d) __builtin_shufflevector((__v2df)__lo, (__v2df)__hi, 0, 1, 2, 3);
|
|
4836
|
+
}
|
|
4837
|
+
|
|
4838
|
+
/// Constructs a 256-bit integer vector by concatenating two 128-bit
|
|
4839
|
+
/// integer vectors.
|
|
4840
|
+
///
|
|
4841
|
+
/// \headerfile <x86intrin.h>
|
|
4842
|
+
///
|
|
4843
|
+
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4844
|
+
///
|
|
4845
|
+
/// \param __hi
|
|
4846
|
+
/// A 128-bit integer vector to be copied to the upper 128 bits of the
|
|
4847
|
+
/// result.
|
|
4848
|
+
/// \param __lo
|
|
4849
|
+
/// A 128-bit integer vector to be copied to the lower 128 bits of the
|
|
4850
|
+
/// result.
|
|
4851
|
+
/// \returns A 256-bit integer vector containing the concatenated result.
|
|
4852
|
+
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
4853
|
+
_mm256_set_m128i (__m128i __hi, __m128i __lo)
|
|
4854
|
+
{
|
|
4855
|
+
return (__m256i) __builtin_shufflevector((__v2di)__lo, (__v2di)__hi, 0, 1, 2, 3);
|
|
4856
|
+
}
|
|
4857
|
+
|
|
4858
|
+
/// Constructs a 256-bit floating-point vector of [8 x float] by
|
|
4859
|
+
/// concatenating two 128-bit floating-point vectors of [4 x float]. This is
|
|
4860
|
+
/// similar to _mm256_set_m128, but the order of the input parameters is
|
|
4861
|
+
/// swapped.
|
|
4862
|
+
///
|
|
4863
|
+
/// \headerfile <x86intrin.h>
|
|
4864
|
+
///
|
|
4865
|
+
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4866
|
+
///
|
|
4867
|
+
/// \param __lo
|
|
4868
|
+
/// A 128-bit floating-point vector of [4 x float] to be copied to the lower
|
|
4869
|
+
/// 128 bits of the result.
|
|
4870
|
+
/// \param __hi
|
|
4871
|
+
/// A 128-bit floating-point vector of [4 x float] to be copied to the upper
|
|
4872
|
+
/// 128 bits of the result.
|
|
4873
|
+
/// \returns A 256-bit floating-point vector of [8 x float] containing the
|
|
4874
|
+
/// concatenated result.
|
|
4875
|
+
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4876
|
+
_mm256_setr_m128 (__m128 __lo, __m128 __hi)
|
|
4877
|
+
{
|
|
4878
|
+
return _mm256_set_m128(__hi, __lo);
|
|
4879
|
+
}
|
|
4880
|
+
|
|
4881
|
+
/// Constructs a 256-bit floating-point vector of [4 x double] by
|
|
4882
|
+
/// concatenating two 128-bit floating-point vectors of [2 x double]. This is
|
|
4883
|
+
/// similar to _mm256_set_m128d, but the order of the input parameters is
|
|
4884
|
+
/// swapped.
|
|
4885
|
+
///
|
|
4886
|
+
/// \headerfile <x86intrin.h>
|
|
4887
|
+
///
|
|
4888
|
+
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4889
|
+
///
|
|
4890
|
+
/// \param __lo
|
|
4891
|
+
/// A 128-bit floating-point vector of [2 x double] to be copied to the lower
|
|
4892
|
+
/// 128 bits of the result.
|
|
4893
|
+
/// \param __hi
|
|
4894
|
+
/// A 128-bit floating-point vector of [2 x double] to be copied to the upper
|
|
4895
|
+
/// 128 bits of the result.
|
|
4896
|
+
/// \returns A 256-bit floating-point vector of [4 x double] containing the
|
|
4897
|
+
/// concatenated result.
|
|
4898
|
+
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4899
|
+
_mm256_setr_m128d (__m128d __lo, __m128d __hi)
|
|
4900
|
+
{
|
|
4901
|
+
return (__m256d)_mm256_set_m128d(__hi, __lo);
|
|
4902
|
+
}
|
|
4903
|
+
|
|
4904
|
+
/// Constructs a 256-bit integer vector by concatenating two 128-bit
|
|
4905
|
+
/// integer vectors. This is similar to _mm256_set_m128i, but the order of
|
|
4906
|
+
/// the input parameters is swapped.
|
|
4907
|
+
///
|
|
4908
|
+
/// \headerfile <x86intrin.h>
|
|
4909
|
+
///
|
|
4910
|
+
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4911
|
+
///
|
|
4912
|
+
/// \param __lo
|
|
4913
|
+
/// A 128-bit integer vector to be copied to the lower 128 bits of the
|
|
4914
|
+
/// result.
|
|
4915
|
+
/// \param __hi
|
|
4916
|
+
/// A 128-bit integer vector to be copied to the upper 128 bits of the
|
|
4917
|
+
/// result.
|
|
4918
|
+
/// \returns A 256-bit integer vector containing the concatenated result.
|
|
4919
|
+
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
4920
|
+
_mm256_setr_m128i (__m128i __lo, __m128i __hi)
|
|
4921
|
+
{
|
|
4922
|
+
return (__m256i)_mm256_set_m128i(__hi, __lo);
|
|
4923
|
+
}
|
|
4750
4924
|
|
|
4751
4925
|
/* SIMD load ops (unaligned) */
|
|
4752
4926
|
/// Loads two 128-bit floating-point vectors of [4 x float] from
|
|
@@ -4773,8 +4947,7 @@ _mm256_zextsi128_si256(__m128i __a)
|
|
|
4773
4947
|
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4774
4948
|
_mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo)
|
|
4775
4949
|
{
|
|
4776
|
-
|
|
4777
|
-
return _mm256_insertf128_ps(__v256, _mm_loadu_ps(__addr_hi), 1);
|
|
4950
|
+
return _mm256_set_m128(_mm_loadu_ps(__addr_hi), _mm_loadu_ps(__addr_lo));
|
|
4778
4951
|
}
|
|
4779
4952
|
|
|
4780
4953
|
/// Loads two 128-bit floating-point vectors of [2 x double] from
|
|
@@ -4801,8 +4974,7 @@ _mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo)
|
|
|
4801
4974
|
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4802
4975
|
_mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo)
|
|
4803
4976
|
{
|
|
4804
|
-
|
|
4805
|
-
return _mm256_insertf128_pd(__v256, _mm_loadu_pd(__addr_hi), 1);
|
|
4977
|
+
return _mm256_set_m128d(_mm_loadu_pd(__addr_hi), _mm_loadu_pd(__addr_lo));
|
|
4806
4978
|
}
|
|
4807
4979
|
|
|
4808
4980
|
/// Loads two 128-bit integer vectors from unaligned memory locations and
|
|
@@ -4826,8 +4998,7 @@ _mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo)
|
|
|
4826
4998
|
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
4827
4999
|
_mm256_loadu2_m128i(__m128i_u const *__addr_hi, __m128i_u const *__addr_lo)
|
|
4828
5000
|
{
|
|
4829
|
-
|
|
4830
|
-
return _mm256_insertf128_si256(__v256, _mm_loadu_si128(__addr_hi), 1);
|
|
5001
|
+
return _mm256_set_m128i(_mm_loadu_si128(__addr_hi), _mm_loadu_si128(__addr_lo));
|
|
4831
5002
|
}
|
|
4832
5003
|
|
|
4833
5004
|
/* SIMD store ops (unaligned) */
|
|
@@ -4918,135 +5089,6 @@ _mm256_storeu2_m128i(__m128i_u *__addr_hi, __m128i_u *__addr_lo, __m256i __a)
|
|
|
4918
5089
|
_mm_storeu_si128(__addr_hi, __v128);
|
|
4919
5090
|
}
|
|
4920
5091
|
|
|
4921
|
-
/// Constructs a 256-bit floating-point vector of [8 x float] by
|
|
4922
|
-
/// concatenating two 128-bit floating-point vectors of [4 x float].
|
|
4923
|
-
///
|
|
4924
|
-
/// \headerfile <x86intrin.h>
|
|
4925
|
-
///
|
|
4926
|
-
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4927
|
-
///
|
|
4928
|
-
/// \param __hi
|
|
4929
|
-
/// A 128-bit floating-point vector of [4 x float] to be copied to the upper
|
|
4930
|
-
/// 128 bits of the result.
|
|
4931
|
-
/// \param __lo
|
|
4932
|
-
/// A 128-bit floating-point vector of [4 x float] to be copied to the lower
|
|
4933
|
-
/// 128 bits of the result.
|
|
4934
|
-
/// \returns A 256-bit floating-point vector of [8 x float] containing the
|
|
4935
|
-
/// concatenated result.
|
|
4936
|
-
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
4937
|
-
_mm256_set_m128 (__m128 __hi, __m128 __lo)
|
|
4938
|
-
{
|
|
4939
|
-
return (__m256) __builtin_shufflevector((__v4sf)__lo, (__v4sf)__hi, 0, 1, 2, 3, 4, 5, 6, 7);
|
|
4940
|
-
}
|
|
4941
|
-
|
|
4942
|
-
/// Constructs a 256-bit floating-point vector of [4 x double] by
|
|
4943
|
-
/// concatenating two 128-bit floating-point vectors of [2 x double].
|
|
4944
|
-
///
|
|
4945
|
-
/// \headerfile <x86intrin.h>
|
|
4946
|
-
///
|
|
4947
|
-
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4948
|
-
///
|
|
4949
|
-
/// \param __hi
|
|
4950
|
-
/// A 128-bit floating-point vector of [2 x double] to be copied to the upper
|
|
4951
|
-
/// 128 bits of the result.
|
|
4952
|
-
/// \param __lo
|
|
4953
|
-
/// A 128-bit floating-point vector of [2 x double] to be copied to the lower
|
|
4954
|
-
/// 128 bits of the result.
|
|
4955
|
-
/// \returns A 256-bit floating-point vector of [4 x double] containing the
|
|
4956
|
-
/// concatenated result.
|
|
4957
|
-
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
4958
|
-
_mm256_set_m128d (__m128d __hi, __m128d __lo)
|
|
4959
|
-
{
|
|
4960
|
-
return (__m256d) __builtin_shufflevector((__v2df)__lo, (__v2df)__hi, 0, 1, 2, 3);
|
|
4961
|
-
}
|
|
4962
|
-
|
|
4963
|
-
/// Constructs a 256-bit integer vector by concatenating two 128-bit
|
|
4964
|
-
/// integer vectors.
|
|
4965
|
-
///
|
|
4966
|
-
/// \headerfile <x86intrin.h>
|
|
4967
|
-
///
|
|
4968
|
-
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4969
|
-
///
|
|
4970
|
-
/// \param __hi
|
|
4971
|
-
/// A 128-bit integer vector to be copied to the upper 128 bits of the
|
|
4972
|
-
/// result.
|
|
4973
|
-
/// \param __lo
|
|
4974
|
-
/// A 128-bit integer vector to be copied to the lower 128 bits of the
|
|
4975
|
-
/// result.
|
|
4976
|
-
/// \returns A 256-bit integer vector containing the concatenated result.
|
|
4977
|
-
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
4978
|
-
_mm256_set_m128i (__m128i __hi, __m128i __lo)
|
|
4979
|
-
{
|
|
4980
|
-
return (__m256i) __builtin_shufflevector((__v2di)__lo, (__v2di)__hi, 0, 1, 2, 3);
|
|
4981
|
-
}
|
|
4982
|
-
|
|
4983
|
-
/// Constructs a 256-bit floating-point vector of [8 x float] by
|
|
4984
|
-
/// concatenating two 128-bit floating-point vectors of [4 x float]. This is
|
|
4985
|
-
/// similar to _mm256_set_m128, but the order of the input parameters is
|
|
4986
|
-
/// swapped.
|
|
4987
|
-
///
|
|
4988
|
-
/// \headerfile <x86intrin.h>
|
|
4989
|
-
///
|
|
4990
|
-
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
4991
|
-
///
|
|
4992
|
-
/// \param __lo
|
|
4993
|
-
/// A 128-bit floating-point vector of [4 x float] to be copied to the lower
|
|
4994
|
-
/// 128 bits of the result.
|
|
4995
|
-
/// \param __hi
|
|
4996
|
-
/// A 128-bit floating-point vector of [4 x float] to be copied to the upper
|
|
4997
|
-
/// 128 bits of the result.
|
|
4998
|
-
/// \returns A 256-bit floating-point vector of [8 x float] containing the
|
|
4999
|
-
/// concatenated result.
|
|
5000
|
-
static __inline __m256 __DEFAULT_FN_ATTRS
|
|
5001
|
-
_mm256_setr_m128 (__m128 __lo, __m128 __hi)
|
|
5002
|
-
{
|
|
5003
|
-
return _mm256_set_m128(__hi, __lo);
|
|
5004
|
-
}
|
|
5005
|
-
|
|
5006
|
-
/// Constructs a 256-bit floating-point vector of [4 x double] by
|
|
5007
|
-
/// concatenating two 128-bit floating-point vectors of [2 x double]. This is
|
|
5008
|
-
/// similar to _mm256_set_m128d, but the order of the input parameters is
|
|
5009
|
-
/// swapped.
|
|
5010
|
-
///
|
|
5011
|
-
/// \headerfile <x86intrin.h>
|
|
5012
|
-
///
|
|
5013
|
-
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
5014
|
-
///
|
|
5015
|
-
/// \param __lo
|
|
5016
|
-
/// A 128-bit floating-point vector of [2 x double] to be copied to the lower
|
|
5017
|
-
/// 128 bits of the result.
|
|
5018
|
-
/// \param __hi
|
|
5019
|
-
/// A 128-bit floating-point vector of [2 x double] to be copied to the upper
|
|
5020
|
-
/// 128 bits of the result.
|
|
5021
|
-
/// \returns A 256-bit floating-point vector of [4 x double] containing the
|
|
5022
|
-
/// concatenated result.
|
|
5023
|
-
static __inline __m256d __DEFAULT_FN_ATTRS
|
|
5024
|
-
_mm256_setr_m128d (__m128d __lo, __m128d __hi)
|
|
5025
|
-
{
|
|
5026
|
-
return (__m256d)_mm256_set_m128d(__hi, __lo);
|
|
5027
|
-
}
|
|
5028
|
-
|
|
5029
|
-
/// Constructs a 256-bit integer vector by concatenating two 128-bit
|
|
5030
|
-
/// integer vectors. This is similar to _mm256_set_m128i, but the order of
|
|
5031
|
-
/// the input parameters is swapped.
|
|
5032
|
-
///
|
|
5033
|
-
/// \headerfile <x86intrin.h>
|
|
5034
|
-
///
|
|
5035
|
-
/// This intrinsic corresponds to the <c> VINSERTF128 </c> instruction.
|
|
5036
|
-
///
|
|
5037
|
-
/// \param __lo
|
|
5038
|
-
/// A 128-bit integer vector to be copied to the lower 128 bits of the
|
|
5039
|
-
/// result.
|
|
5040
|
-
/// \param __hi
|
|
5041
|
-
/// A 128-bit integer vector to be copied to the upper 128 bits of the
|
|
5042
|
-
/// result.
|
|
5043
|
-
/// \returns A 256-bit integer vector containing the concatenated result.
|
|
5044
|
-
static __inline __m256i __DEFAULT_FN_ATTRS
|
|
5045
|
-
_mm256_setr_m128i (__m128i __lo, __m128i __hi)
|
|
5046
|
-
{
|
|
5047
|
-
return (__m256i)_mm256_set_m128i(__hi, __lo);
|
|
5048
|
-
}
|
|
5049
|
-
|
|
5050
5092
|
#undef __DEFAULT_FN_ATTRS
|
|
5051
5093
|
#undef __DEFAULT_FN_ATTRS128
|
|
5052
5094
|
|