@cpp-linter/clang-tidy-win32-x64 14.0.0 → 16.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy.exe +2 -2
- package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_intrinsics.h +7 -7
- package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_texture_intrinsics.h +2 -0
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_math.h +10 -13
- package/lib/clang/{14.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +1 -0
- package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
- package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
- package/lib/clang/{14.0.0 → 16}/include/altivec.h +501 -262
- package/lib/clang/16/include/amxfp16intrin.h +58 -0
- package/lib/clang/{14.0.0 → 16}/include/amxintrin.h +32 -2
- package/lib/clang/{14.0.0 → 16}/include/arm_acle.h +76 -75
- package/lib/clang/{14.0.0 → 16}/include/arm_fp16.h +90 -90
- package/lib/clang/{14.0.0 → 16}/include/arm_neon.h +28468 -28638
- package/lib/clang/{14.0.0 → 16}/include/arm_neon_sve_bridge.h +0 -2
- package/lib/clang/{14.0.0 → 16}/include/arm_sve.h +7848 -7996
- package/lib/clang/{14.0.0 → 16}/include/avx2intrin.h +8 -8
- package/lib/clang/{14.0.0 → 16}/include/avx512bf16intrin.h +18 -15
- package/lib/clang/{14.0.0 → 16}/include/avx512bwintrin.h +12 -12
- package/lib/clang/{14.0.0 → 16}/include/avx512fintrin.h +78 -75
- package/lib/clang/{14.0.0 → 16}/include/avx512fp16intrin.h +6 -9
- package/lib/clang/{14.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
- package/lib/clang/{14.0.0 → 16}/include/avx512vlbf16intrin.h +31 -38
- package/lib/clang/{14.0.0 → 16}/include/avx512vlbwintrin.h +360 -8
- package/lib/clang/{14.0.0 → 16}/include/avx512vlfp16intrin.h +3 -0
- package/lib/clang/{14.0.0 → 16}/include/avx512vlintrin.h +81 -95
- package/lib/clang/{14.0.0 → 16}/include/avx512vlvnniintrin.h +16 -16
- package/lib/clang/16/include/avxifmaintrin.h +177 -0
- package/lib/clang/{14.0.0 → 16}/include/avxintrin.h +77 -32
- package/lib/clang/16/include/avxneconvertintrin.h +484 -0
- package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
- package/lib/clang/{14.0.0 → 16}/include/avxvnniintrin.h +16 -16
- package/lib/clang/{14.0.0 → 16}/include/bmiintrin.h +6 -2
- package/lib/clang/{14.0.0 → 16}/include/cetintrin.h +12 -6
- package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
- package/lib/clang/{14.0.0 → 16}/include/cpuid.h +12 -1
- package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
- package/lib/clang/{14.0.0 → 16}/include/emmintrin.h +559 -769
- package/lib/clang/{14.0.0 → 16}/include/f16cintrin.h +3 -3
- package/lib/clang/{14.0.0 → 16}/include/float.h +17 -10
- package/lib/clang/{14.0.0 → 16}/include/gfniintrin.h +7 -5
- package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
- package/lib/clang/16/include/hlsl.h +15 -0
- package/lib/clang/{14.0.0 → 16}/include/hresetintrin.h +2 -2
- package/lib/clang/{14.0.0 → 16}/include/ia32intrin.h +11 -11
- package/lib/clang/{14.0.0 → 16}/include/immintrin.h +56 -24
- package/lib/clang/{14.0.0 → 16}/include/intrin.h +12 -21
- package/lib/clang/{14.0.0 → 16}/include/keylockerintrin.h +22 -22
- package/lib/clang/16/include/larchintrin.h +234 -0
- package/lib/clang/{14.0.0 → 16}/include/limits.h +3 -2
- package/lib/clang/{14.0.0 → 16}/include/mm_malloc.h +3 -3
- package/lib/clang/{14.0.0 → 16}/include/opencl-c-base.h +29 -0
- package/lib/clang/{14.0.0 → 16}/include/opencl-c.h +6904 -7100
- package/lib/clang/{14.0.0 → 16}/include/pmmintrin.h +1 -1
- package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
- package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
- package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
- package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
- package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -387
- package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
- package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
- package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
- package/lib/clang/{14.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
- package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
- package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/lib/clang/16/include/prfchiintrin.h +61 -0
- package/lib/clang/16/include/raointintrin.h +203 -0
- package/lib/clang/16/include/rdpruintrin.h +57 -0
- package/lib/clang/{14.0.0 → 16}/include/rdseedintrin.h +3 -3
- package/lib/clang/16/include/riscv_vector.h +211 -0
- package/lib/clang/{14.0.0 → 16}/include/rtmintrin.h +1 -1
- package/lib/clang/{14.0.0 → 16}/include/smmintrin.h +236 -259
- package/lib/clang/{14.0.0 → 16}/include/stdarg.h +23 -7
- package/lib/clang/{14.0.0 → 16}/include/stdatomic.h +7 -7
- package/lib/clang/{14.0.0 → 16}/include/stdbool.h +10 -7
- package/lib/clang/{14.0.0 → 16}/include/stddef.h +9 -2
- package/lib/clang/{14.0.0 → 16}/include/stdint.h +158 -40
- package/lib/clang/16/include/stdnoreturn.h +29 -0
- package/lib/clang/{14.0.0 → 16}/include/uintrintrin.h +8 -8
- package/lib/clang/{14.0.0 → 16}/include/unwind.h +10 -6
- package/lib/clang/16/include/velintrin.h +71 -0
- package/lib/clang/16/include/velintrin_approx.h +120 -0
- package/lib/clang/16/include/velintrin_gen.h +1257 -0
- package/lib/clang/{14.0.0 → 16}/include/wasm_simd128.h +2 -2
- package/lib/clang/16/include/x86gprintrin.h +65 -0
- package/lib/clang/{14.0.0 → 16}/include/x86intrin.h +4 -0
- package/lib/clang/{14.0.0 → 16}/include/xmmintrin.h +10 -5
- package/package.json +6 -6
- package/lib/clang/14.0.0/include/ppc_wrappers/emmintrin.h +0 -2325
- package/lib/clang/14.0.0/include/ppc_wrappers/pmmintrin.h +0 -151
- package/lib/clang/14.0.0/include/ppc_wrappers/smmintrin.h +0 -110
- package/lib/clang/14.0.0/include/ppc_wrappers/tmmintrin.h +0 -496
- package/lib/clang/14.0.0/include/ppc_wrappers/xmmintrin.h +0 -1844
- package/lib/clang/14.0.0/include/riscv_vector.h +0 -95423
- package/lib/clang/14.0.0/include/x86gprintrin.h +0 -35
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/adxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/ammintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm64intr.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_bf16.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_cde.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_cmse.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/arm_mve.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/armintr.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512dqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512erintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vldqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlvbmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/builtins.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cet.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clwbintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/clzerointrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/crc32intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fma4intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fmaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hexagon_types.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/htmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/inttypes.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/iso646.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/lwpintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mm3dnow.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/module.modulemap +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/movdirintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/msa.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/nmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/pkuintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/popcntintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/prfchwintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/s390intrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/serializeintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/sgxintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/shaintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/stdalign.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tbmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tgmath.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vadefs.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vaesintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/varargs.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vecintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/wmmintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xopintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{14.0.0 → 16}/include/xtestintrin.h +0 -0
|
@@ -17,23 +17,25 @@
|
|
|
17
17
|
#include <tmmintrin.h>
|
|
18
18
|
|
|
19
19
|
/* Define the default attributes for the functions in this file. */
|
|
20
|
-
#define __DEFAULT_FN_ATTRS
|
|
20
|
+
#define __DEFAULT_FN_ATTRS \
|
|
21
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sse4.1"), \
|
|
22
|
+
__min_vector_width__(128)))
|
|
21
23
|
|
|
22
24
|
/* SSE4 Rounding macros. */
|
|
23
|
-
#define _MM_FROUND_TO_NEAREST_INT
|
|
24
|
-
#define _MM_FROUND_TO_NEG_INF
|
|
25
|
-
#define _MM_FROUND_TO_POS_INF
|
|
26
|
-
#define _MM_FROUND_TO_ZERO
|
|
27
|
-
#define _MM_FROUND_CUR_DIRECTION
|
|
28
|
-
|
|
29
|
-
#define _MM_FROUND_RAISE_EXC
|
|
30
|
-
#define _MM_FROUND_NO_EXC
|
|
31
|
-
|
|
32
|
-
#define _MM_FROUND_NINT
|
|
33
|
-
#define _MM_FROUND_FLOOR
|
|
34
|
-
#define _MM_FROUND_CEIL
|
|
35
|
-
#define _MM_FROUND_TRUNC
|
|
36
|
-
#define _MM_FROUND_RINT
|
|
25
|
+
#define _MM_FROUND_TO_NEAREST_INT 0x00
|
|
26
|
+
#define _MM_FROUND_TO_NEG_INF 0x01
|
|
27
|
+
#define _MM_FROUND_TO_POS_INF 0x02
|
|
28
|
+
#define _MM_FROUND_TO_ZERO 0x03
|
|
29
|
+
#define _MM_FROUND_CUR_DIRECTION 0x04
|
|
30
|
+
|
|
31
|
+
#define _MM_FROUND_RAISE_EXC 0x00
|
|
32
|
+
#define _MM_FROUND_NO_EXC 0x08
|
|
33
|
+
|
|
34
|
+
#define _MM_FROUND_NINT (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_NEAREST_INT)
|
|
35
|
+
#define _MM_FROUND_FLOOR (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_NEG_INF)
|
|
36
|
+
#define _MM_FROUND_CEIL (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_POS_INF)
|
|
37
|
+
#define _MM_FROUND_TRUNC (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_ZERO)
|
|
38
|
+
#define _MM_FROUND_RINT (_MM_FROUND_RAISE_EXC | _MM_FROUND_CUR_DIRECTION)
|
|
37
39
|
#define _MM_FROUND_NEARBYINT (_MM_FROUND_NO_EXC | _MM_FROUND_CUR_DIRECTION)
|
|
38
40
|
|
|
39
41
|
/// Rounds up each element of the 128-bit vector of [4 x float] to an
|
|
@@ -51,7 +53,7 @@
|
|
|
51
53
|
/// \param X
|
|
52
54
|
/// A 128-bit vector of [4 x float] values to be rounded up.
|
|
53
55
|
/// \returns A 128-bit vector of [4 x float] containing the rounded values.
|
|
54
|
-
#define _mm_ceil_ps(X)
|
|
56
|
+
#define _mm_ceil_ps(X) _mm_round_ps((X), _MM_FROUND_CEIL)
|
|
55
57
|
|
|
56
58
|
/// Rounds up each element of the 128-bit vector of [2 x double] to an
|
|
57
59
|
/// integer and returns the rounded values in a 128-bit vector of
|
|
@@ -68,7 +70,7 @@
|
|
|
68
70
|
/// \param X
|
|
69
71
|
/// A 128-bit vector of [2 x double] values to be rounded up.
|
|
70
72
|
/// \returns A 128-bit vector of [2 x double] containing the rounded values.
|
|
71
|
-
#define _mm_ceil_pd(X)
|
|
73
|
+
#define _mm_ceil_pd(X) _mm_round_pd((X), _MM_FROUND_CEIL)
|
|
72
74
|
|
|
73
75
|
/// Copies three upper elements of the first 128-bit vector operand to
|
|
74
76
|
/// the corresponding three upper elements of the 128-bit result vector of
|
|
@@ -93,7 +95,7 @@
|
|
|
93
95
|
/// of the result.
|
|
94
96
|
/// \returns A 128-bit vector of [4 x float] containing the copied and rounded
|
|
95
97
|
/// values.
|
|
96
|
-
#define _mm_ceil_ss(X, Y)
|
|
98
|
+
#define _mm_ceil_ss(X, Y) _mm_round_ss((X), (Y), _MM_FROUND_CEIL)
|
|
97
99
|
|
|
98
100
|
/// Copies the upper element of the first 128-bit vector operand to the
|
|
99
101
|
/// corresponding upper element of the 128-bit result vector of [2 x double].
|
|
@@ -118,7 +120,7 @@
|
|
|
118
120
|
/// of the result.
|
|
119
121
|
/// \returns A 128-bit vector of [2 x double] containing the copied and rounded
|
|
120
122
|
/// values.
|
|
121
|
-
#define _mm_ceil_sd(X, Y)
|
|
123
|
+
#define _mm_ceil_sd(X, Y) _mm_round_sd((X), (Y), _MM_FROUND_CEIL)
|
|
122
124
|
|
|
123
125
|
/// Rounds down each element of the 128-bit vector of [4 x float] to an
|
|
124
126
|
/// an integer and returns the rounded values in a 128-bit vector of
|
|
@@ -135,7 +137,7 @@
|
|
|
135
137
|
/// \param X
|
|
136
138
|
/// A 128-bit vector of [4 x float] values to be rounded down.
|
|
137
139
|
/// \returns A 128-bit vector of [4 x float] containing the rounded values.
|
|
138
|
-
#define _mm_floor_ps(X)
|
|
140
|
+
#define _mm_floor_ps(X) _mm_round_ps((X), _MM_FROUND_FLOOR)
|
|
139
141
|
|
|
140
142
|
/// Rounds down each element of the 128-bit vector of [2 x double] to an
|
|
141
143
|
/// integer and returns the rounded values in a 128-bit vector of
|
|
@@ -152,7 +154,7 @@
|
|
|
152
154
|
/// \param X
|
|
153
155
|
/// A 128-bit vector of [2 x double].
|
|
154
156
|
/// \returns A 128-bit vector of [2 x double] containing the rounded values.
|
|
155
|
-
#define _mm_floor_pd(X)
|
|
157
|
+
#define _mm_floor_pd(X) _mm_round_pd((X), _MM_FROUND_FLOOR)
|
|
156
158
|
|
|
157
159
|
/// Copies three upper elements of the first 128-bit vector operand to
|
|
158
160
|
/// the corresponding three upper elements of the 128-bit result vector of
|
|
@@ -177,7 +179,7 @@
|
|
|
177
179
|
/// of the result.
|
|
178
180
|
/// \returns A 128-bit vector of [4 x float] containing the copied and rounded
|
|
179
181
|
/// values.
|
|
180
|
-
#define _mm_floor_ss(X, Y)
|
|
182
|
+
#define _mm_floor_ss(X, Y) _mm_round_ss((X), (Y), _MM_FROUND_FLOOR)
|
|
181
183
|
|
|
182
184
|
/// Copies the upper element of the first 128-bit vector operand to the
|
|
183
185
|
/// corresponding upper element of the 128-bit result vector of [2 x double].
|
|
@@ -202,7 +204,7 @@
|
|
|
202
204
|
/// of the result.
|
|
203
205
|
/// \returns A 128-bit vector of [2 x double] containing the copied and rounded
|
|
204
206
|
/// values.
|
|
205
|
-
#define _mm_floor_sd(X, Y)
|
|
207
|
+
#define _mm_floor_sd(X, Y) _mm_round_sd((X), (Y), _MM_FROUND_FLOOR)
|
|
206
208
|
|
|
207
209
|
/// Rounds each element of the 128-bit vector of [4 x float] to an
|
|
208
210
|
/// integer value according to the rounding control specified by the second
|
|
@@ -234,7 +236,7 @@
|
|
|
234
236
|
/// 10: Upward (toward positive infinity) \n
|
|
235
237
|
/// 11: Truncated
|
|
236
238
|
/// \returns A 128-bit vector of [4 x float] containing the rounded values.
|
|
237
|
-
#define _mm_round_ps(X, M)
|
|
239
|
+
#define _mm_round_ps(X, M) \
|
|
238
240
|
((__m128)__builtin_ia32_roundps((__v4sf)(__m128)(X), (M)))
|
|
239
241
|
|
|
240
242
|
/// Copies three upper elements of the first 128-bit vector operand to
|
|
@@ -275,9 +277,9 @@
|
|
|
275
277
|
/// 11: Truncated
|
|
276
278
|
/// \returns A 128-bit vector of [4 x float] containing the copied and rounded
|
|
277
279
|
/// values.
|
|
278
|
-
#define _mm_round_ss(X, Y, M)
|
|
279
|
-
((__m128)__builtin_ia32_roundss((__v4sf)(__m128)(X), \
|
|
280
|
-
(
|
|
280
|
+
#define _mm_round_ss(X, Y, M) \
|
|
281
|
+
((__m128)__builtin_ia32_roundss((__v4sf)(__m128)(X), (__v4sf)(__m128)(Y), \
|
|
282
|
+
(M)))
|
|
281
283
|
|
|
282
284
|
/// Rounds each element of the 128-bit vector of [2 x double] to an
|
|
283
285
|
/// integer value according to the rounding control specified by the second
|
|
@@ -309,7 +311,7 @@
|
|
|
309
311
|
/// 10: Upward (toward positive infinity) \n
|
|
310
312
|
/// 11: Truncated
|
|
311
313
|
/// \returns A 128-bit vector of [2 x double] containing the rounded values.
|
|
312
|
-
#define _mm_round_pd(X, M)
|
|
314
|
+
#define _mm_round_pd(X, M) \
|
|
313
315
|
((__m128d)__builtin_ia32_roundpd((__v2df)(__m128d)(X), (M)))
|
|
314
316
|
|
|
315
317
|
/// Copies the upper element of the first 128-bit vector operand to the
|
|
@@ -350,9 +352,9 @@
|
|
|
350
352
|
/// 11: Truncated
|
|
351
353
|
/// \returns A 128-bit vector of [2 x double] containing the copied and rounded
|
|
352
354
|
/// values.
|
|
353
|
-
#define _mm_round_sd(X, Y, M)
|
|
354
|
-
((__m128d)__builtin_ia32_roundsd((__v2df)(__m128d)(X), \
|
|
355
|
-
(
|
|
355
|
+
#define _mm_round_sd(X, Y, M) \
|
|
356
|
+
((__m128d)__builtin_ia32_roundsd((__v2df)(__m128d)(X), (__v2df)(__m128d)(Y), \
|
|
357
|
+
(M)))
|
|
356
358
|
|
|
357
359
|
/* SSE4 Packed Blending Intrinsics. */
|
|
358
360
|
/// Returns a 128-bit vector of [2 x double] where the values are
|
|
@@ -379,9 +381,9 @@
|
|
|
379
381
|
/// When a mask bit is 1, the corresponding 64-bit element in operand \a V2
|
|
380
382
|
/// is copied to the same position in the result.
|
|
381
383
|
/// \returns A 128-bit vector of [2 x double] containing the copied values.
|
|
382
|
-
#define _mm_blend_pd(V1, V2, M)
|
|
383
|
-
((__m128d)
|
|
384
|
-
|
|
384
|
+
#define _mm_blend_pd(V1, V2, M) \
|
|
385
|
+
((__m128d)__builtin_ia32_blendpd((__v2df)(__m128d)(V1), \
|
|
386
|
+
(__v2df)(__m128d)(V2), (int)(M)))
|
|
385
387
|
|
|
386
388
|
/// Returns a 128-bit vector of [4 x float] where the values are selected
|
|
387
389
|
/// from either the first or second operand as specified by the third
|
|
@@ -407,9 +409,9 @@
|
|
|
407
409
|
/// When a mask bit is 1, the corresponding 32-bit element in operand \a V2
|
|
408
410
|
/// is copied to the same position in the result.
|
|
409
411
|
/// \returns A 128-bit vector of [4 x float] containing the copied values.
|
|
410
|
-
#define _mm_blend_ps(V1, V2, M)
|
|
411
|
-
((__m128)
|
|
412
|
-
|
|
412
|
+
#define _mm_blend_ps(V1, V2, M) \
|
|
413
|
+
((__m128)__builtin_ia32_blendps((__v4sf)(__m128)(V1), (__v4sf)(__m128)(V2), \
|
|
414
|
+
(int)(M)))
|
|
413
415
|
|
|
414
416
|
/// Returns a 128-bit vector of [2 x double] where the values are
|
|
415
417
|
/// selected from either the first or second operand as specified by the
|
|
@@ -431,11 +433,11 @@
|
|
|
431
433
|
/// position in the result. When a mask bit is 1, the corresponding 64-bit
|
|
432
434
|
/// element in operand \a __V2 is copied to the same position in the result.
|
|
433
435
|
/// \returns A 128-bit vector of [2 x double] containing the copied values.
|
|
434
|
-
static __inline__ __m128d __DEFAULT_FN_ATTRS
|
|
435
|
-
|
|
436
|
-
{
|
|
437
|
-
return (__m128d)
|
|
438
|
-
|
|
436
|
+
static __inline__ __m128d __DEFAULT_FN_ATTRS _mm_blendv_pd(__m128d __V1,
|
|
437
|
+
__m128d __V2,
|
|
438
|
+
__m128d __M) {
|
|
439
|
+
return (__m128d)__builtin_ia32_blendvpd((__v2df)__V1, (__v2df)__V2,
|
|
440
|
+
(__v2df)__M);
|
|
439
441
|
}
|
|
440
442
|
|
|
441
443
|
/// Returns a 128-bit vector of [4 x float] where the values are
|
|
@@ -458,11 +460,11 @@ _mm_blendv_pd (__m128d __V1, __m128d __V2, __m128d __M)
|
|
|
458
460
|
/// position in the result. When a mask bit is 1, the corresponding 32-bit
|
|
459
461
|
/// element in operand \a __V2 is copied to the same position in the result.
|
|
460
462
|
/// \returns A 128-bit vector of [4 x float] containing the copied values.
|
|
461
|
-
static __inline__ __m128 __DEFAULT_FN_ATTRS
|
|
462
|
-
|
|
463
|
-
{
|
|
464
|
-
return (__m128)
|
|
465
|
-
|
|
463
|
+
static __inline__ __m128 __DEFAULT_FN_ATTRS _mm_blendv_ps(__m128 __V1,
|
|
464
|
+
__m128 __V2,
|
|
465
|
+
__m128 __M) {
|
|
466
|
+
return (__m128)__builtin_ia32_blendvps((__v4sf)__V1, (__v4sf)__V2,
|
|
467
|
+
(__v4sf)__M);
|
|
466
468
|
}
|
|
467
469
|
|
|
468
470
|
/// Returns a 128-bit vector of [16 x i8] where the values are selected
|
|
@@ -485,11 +487,11 @@ _mm_blendv_ps (__m128 __V1, __m128 __V2, __m128 __M)
|
|
|
485
487
|
/// position in the result. When a mask bit is 1, the corresponding 8-bit
|
|
486
488
|
/// element in operand \a __V2 is copied to the same position in the result.
|
|
487
489
|
/// \returns A 128-bit vector of [16 x i8] containing the copied values.
|
|
488
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
489
|
-
|
|
490
|
-
{
|
|
491
|
-
return (__m128i)
|
|
492
|
-
|
|
490
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_blendv_epi8(__m128i __V1,
|
|
491
|
+
__m128i __V2,
|
|
492
|
+
__m128i __M) {
|
|
493
|
+
return (__m128i)__builtin_ia32_pblendvb128((__v16qi)__V1, (__v16qi)__V2,
|
|
494
|
+
(__v16qi)__M);
|
|
493
495
|
}
|
|
494
496
|
|
|
495
497
|
/// Returns a 128-bit vector of [8 x i16] where the values are selected
|
|
@@ -516,9 +518,9 @@ _mm_blendv_epi8 (__m128i __V1, __m128i __V2, __m128i __M)
|
|
|
516
518
|
/// When a mask bit is 1, the corresponding 16-bit element in operand \a V2
|
|
517
519
|
/// is copied to the same position in the result.
|
|
518
520
|
/// \returns A 128-bit vector of [8 x i16] containing the copied values.
|
|
519
|
-
#define _mm_blend_epi16(V1, V2, M)
|
|
520
|
-
((__m128i)
|
|
521
|
-
|
|
521
|
+
#define _mm_blend_epi16(V1, V2, M) \
|
|
522
|
+
((__m128i)__builtin_ia32_pblendw128((__v8hi)(__m128i)(V1), \
|
|
523
|
+
(__v8hi)(__m128i)(V2), (int)(M)))
|
|
522
524
|
|
|
523
525
|
/* SSE4 Dword Multiply Instructions. */
|
|
524
526
|
/// Multiples corresponding elements of two 128-bit vectors of [4 x i32]
|
|
@@ -534,10 +536,9 @@ _mm_blendv_epi8 (__m128i __V1, __m128i __V2, __m128i __M)
|
|
|
534
536
|
/// \param __V2
|
|
535
537
|
/// A 128-bit integer vector.
|
|
536
538
|
/// \returns A 128-bit integer vector containing the products of both operands.
|
|
537
|
-
static __inline__
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
return (__m128i) ((__v4su)__V1 * (__v4su)__V2);
|
|
539
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mullo_epi32(__m128i __V1,
|
|
540
|
+
__m128i __V2) {
|
|
541
|
+
return (__m128i)((__v4su)__V1 * (__v4su)__V2);
|
|
541
542
|
}
|
|
542
543
|
|
|
543
544
|
/// Multiplies corresponding even-indexed elements of two 128-bit
|
|
@@ -554,10 +555,9 @@ _mm_mullo_epi32 (__m128i __V1, __m128i __V2)
|
|
|
554
555
|
/// A 128-bit vector of [4 x i32].
|
|
555
556
|
/// \returns A 128-bit vector of [2 x i64] containing the products of both
|
|
556
557
|
/// operands.
|
|
557
|
-
static __inline__
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
return (__m128i) __builtin_ia32_pmuldq128 ((__v4si)__V1, (__v4si)__V2);
|
|
558
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_mul_epi32(__m128i __V1,
|
|
559
|
+
__m128i __V2) {
|
|
560
|
+
return (__m128i)__builtin_ia32_pmuldq128((__v4si)__V1, (__v4si)__V2);
|
|
561
561
|
}
|
|
562
562
|
|
|
563
563
|
/* SSE4 Floating Point Dot Product Instructions. */
|
|
@@ -593,9 +593,8 @@ _mm_mul_epi32 (__m128i __V1, __m128i __V2)
|
|
|
593
593
|
/// each [4 x float] subvector. If a bit is set, the dot product is returned
|
|
594
594
|
/// in the corresponding element; otherwise that element is set to zero.
|
|
595
595
|
/// \returns A 128-bit vector of [4 x float] containing the dot product.
|
|
596
|
-
#define _mm_dp_ps(X, Y, M)
|
|
597
|
-
((__m128)
|
|
598
|
-
(__v4sf)(__m128)(Y), (M)))
|
|
596
|
+
#define _mm_dp_ps(X, Y, M) \
|
|
597
|
+
((__m128)__builtin_ia32_dpps((__v4sf)(__m128)(X), (__v4sf)(__m128)(Y), (M)))
|
|
599
598
|
|
|
600
599
|
/// Computes the dot product of the two 128-bit vectors of [2 x double]
|
|
601
600
|
/// and returns it in the elements of the 128-bit result vector of
|
|
@@ -628,9 +627,9 @@ _mm_mul_epi32 (__m128i __V1, __m128i __V2)
|
|
|
628
627
|
/// to the lowest element and bit [1] corresponding to the highest element of
|
|
629
628
|
/// each [2 x double] vector. If a bit is set, the dot product is returned in
|
|
630
629
|
/// the corresponding element; otherwise that element is set to zero.
|
|
631
|
-
#define _mm_dp_pd(X, Y, M)
|
|
632
|
-
((__m128d)
|
|
633
|
-
|
|
630
|
+
#define _mm_dp_pd(X, Y, M) \
|
|
631
|
+
((__m128d)__builtin_ia32_dppd((__v2df)(__m128d)(X), (__v2df)(__m128d)(Y), \
|
|
632
|
+
(M)))
|
|
634
633
|
|
|
635
634
|
/* SSE4 Streaming Load Hint Instruction. */
|
|
636
635
|
/// Loads integer values from a 128-bit aligned memory location to a
|
|
@@ -645,10 +644,9 @@ _mm_mul_epi32 (__m128i __V1, __m128i __V2)
|
|
|
645
644
|
/// values.
|
|
646
645
|
/// \returns A 128-bit integer vector containing the data stored at the
|
|
647
646
|
/// specified memory location.
|
|
648
|
-
static __inline__
|
|
649
|
-
_mm_stream_load_si128
|
|
650
|
-
|
|
651
|
-
return (__m128i) __builtin_nontemporal_load ((const __v2di *) __V);
|
|
647
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
648
|
+
_mm_stream_load_si128(__m128i const *__V) {
|
|
649
|
+
return (__m128i)__builtin_nontemporal_load((const __v2di *)__V);
|
|
652
650
|
}
|
|
653
651
|
|
|
654
652
|
/* SSE4 Packed Integer Min/Max Instructions. */
|
|
@@ -665,10 +663,9 @@ _mm_stream_load_si128 (__m128i const *__V)
|
|
|
665
663
|
/// \param __V2
|
|
666
664
|
/// A 128-bit vector of [16 x i8]
|
|
667
665
|
/// \returns A 128-bit vector of [16 x i8] containing the lesser values.
|
|
668
|
-
static __inline__
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
return (__m128i) __builtin_elementwise_min((__v16qs) __V1, (__v16qs) __V2);
|
|
666
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_min_epi8(__m128i __V1,
|
|
667
|
+
__m128i __V2) {
|
|
668
|
+
return (__m128i)__builtin_elementwise_min((__v16qs)__V1, (__v16qs)__V2);
|
|
672
669
|
}
|
|
673
670
|
|
|
674
671
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -684,10 +681,9 @@ _mm_min_epi8 (__m128i __V1, __m128i __V2)
|
|
|
684
681
|
/// \param __V2
|
|
685
682
|
/// A 128-bit vector of [16 x i8].
|
|
686
683
|
/// \returns A 128-bit vector of [16 x i8] containing the greater values.
|
|
687
|
-
static __inline__
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
return (__m128i) __builtin_elementwise_max((__v16qs) __V1, (__v16qs) __V2);
|
|
684
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_max_epi8(__m128i __V1,
|
|
685
|
+
__m128i __V2) {
|
|
686
|
+
return (__m128i)__builtin_elementwise_max((__v16qs)__V1, (__v16qs)__V2);
|
|
691
687
|
}
|
|
692
688
|
|
|
693
689
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -703,10 +699,9 @@ _mm_max_epi8 (__m128i __V1, __m128i __V2)
|
|
|
703
699
|
/// \param __V2
|
|
704
700
|
/// A 128-bit vector of [8 x u16].
|
|
705
701
|
/// \returns A 128-bit vector of [8 x u16] containing the lesser values.
|
|
706
|
-
static __inline__
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
return (__m128i) __builtin_elementwise_min((__v8hu) __V1, (__v8hu) __V2);
|
|
702
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_min_epu16(__m128i __V1,
|
|
703
|
+
__m128i __V2) {
|
|
704
|
+
return (__m128i)__builtin_elementwise_min((__v8hu)__V1, (__v8hu)__V2);
|
|
710
705
|
}
|
|
711
706
|
|
|
712
707
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -722,10 +717,9 @@ _mm_min_epu16 (__m128i __V1, __m128i __V2)
|
|
|
722
717
|
/// \param __V2
|
|
723
718
|
/// A 128-bit vector of [8 x u16].
|
|
724
719
|
/// \returns A 128-bit vector of [8 x u16] containing the greater values.
|
|
725
|
-
static __inline__
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
return (__m128i) __builtin_elementwise_max((__v8hu) __V1, (__v8hu) __V2);
|
|
720
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_max_epu16(__m128i __V1,
|
|
721
|
+
__m128i __V2) {
|
|
722
|
+
return (__m128i)__builtin_elementwise_max((__v8hu)__V1, (__v8hu)__V2);
|
|
729
723
|
}
|
|
730
724
|
|
|
731
725
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -741,10 +735,9 @@ _mm_max_epu16 (__m128i __V1, __m128i __V2)
|
|
|
741
735
|
/// \param __V2
|
|
742
736
|
/// A 128-bit vector of [4 x i32].
|
|
743
737
|
/// \returns A 128-bit vector of [4 x i32] containing the lesser values.
|
|
744
|
-
static __inline__
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
return (__m128i) __builtin_elementwise_min((__v4si) __V1, (__v4si) __V2);
|
|
738
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_min_epi32(__m128i __V1,
|
|
739
|
+
__m128i __V2) {
|
|
740
|
+
return (__m128i)__builtin_elementwise_min((__v4si)__V1, (__v4si)__V2);
|
|
748
741
|
}
|
|
749
742
|
|
|
750
743
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -760,10 +753,9 @@ _mm_min_epi32 (__m128i __V1, __m128i __V2)
|
|
|
760
753
|
/// \param __V2
|
|
761
754
|
/// A 128-bit vector of [4 x i32].
|
|
762
755
|
/// \returns A 128-bit vector of [4 x i32] containing the greater values.
|
|
763
|
-
static __inline__
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
return (__m128i) __builtin_elementwise_max((__v4si) __V1, (__v4si) __V2);
|
|
756
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_max_epi32(__m128i __V1,
|
|
757
|
+
__m128i __V2) {
|
|
758
|
+
return (__m128i)__builtin_elementwise_max((__v4si)__V1, (__v4si)__V2);
|
|
767
759
|
}
|
|
768
760
|
|
|
769
761
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -779,10 +771,9 @@ _mm_max_epi32 (__m128i __V1, __m128i __V2)
|
|
|
779
771
|
/// \param __V2
|
|
780
772
|
/// A 128-bit vector of [4 x u32].
|
|
781
773
|
/// \returns A 128-bit vector of [4 x u32] containing the lesser values.
|
|
782
|
-
static __inline__
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
return (__m128i) __builtin_elementwise_min((__v4su) __V1, (__v4su) __V2);
|
|
774
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_min_epu32(__m128i __V1,
|
|
775
|
+
__m128i __V2) {
|
|
776
|
+
return (__m128i)__builtin_elementwise_min((__v4su)__V1, (__v4su)__V2);
|
|
786
777
|
}
|
|
787
778
|
|
|
788
779
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -798,10 +789,9 @@ _mm_min_epu32 (__m128i __V1, __m128i __V2)
|
|
|
798
789
|
/// \param __V2
|
|
799
790
|
/// A 128-bit vector of [4 x u32].
|
|
800
791
|
/// \returns A 128-bit vector of [4 x u32] containing the greater values.
|
|
801
|
-
static __inline__
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
return (__m128i) __builtin_elementwise_max((__v4su) __V1, (__v4su) __V2);
|
|
792
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_max_epu32(__m128i __V1,
|
|
793
|
+
__m128i __V2) {
|
|
794
|
+
return (__m128i)__builtin_elementwise_max((__v4su)__V1, (__v4su)__V2);
|
|
805
795
|
}
|
|
806
796
|
|
|
807
797
|
/* SSE4 Insertion and Extraction from XMM Register Instructions. */
|
|
@@ -828,7 +818,7 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
828
818
|
/// parameter, is copied to the result.
|
|
829
819
|
/// \param N
|
|
830
820
|
/// Specifies which bits from operand \a Y will be copied, which bits in the
|
|
831
|
-
/// result they will be
|
|
821
|
+
/// result they will be copied to, and which bits in the result will be
|
|
832
822
|
/// cleared. The following assignments are made: \n
|
|
833
823
|
/// Bits [7:6] specify the bits to copy from operand \a Y: \n
|
|
834
824
|
/// 00: Selects bits [31:0] from operand \a Y. \n
|
|
@@ -869,21 +859,24 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
869
859
|
/// 10: Bits [95:64] of parameter \a X are returned. \n
|
|
870
860
|
/// 11: Bits [127:96] of parameter \a X are returned.
|
|
871
861
|
/// \returns A 32-bit integer containing the extracted 32 bits of float data.
|
|
872
|
-
#define _mm_extract_ps(X, N)
|
|
873
|
-
__builtin_bit_cast(
|
|
862
|
+
#define _mm_extract_ps(X, N) \
|
|
863
|
+
__builtin_bit_cast( \
|
|
864
|
+
int, __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)))
|
|
874
865
|
|
|
875
866
|
/* Miscellaneous insert and extract macros. */
|
|
876
867
|
/* Extract a single-precision float from X at index N into D. */
|
|
877
|
-
#define _MM_EXTRACT_FLOAT(D, X, N)
|
|
878
|
-
do {
|
|
868
|
+
#define _MM_EXTRACT_FLOAT(D, X, N) \
|
|
869
|
+
do { \
|
|
870
|
+
(D) = __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)); \
|
|
871
|
+
} while (0)
|
|
879
872
|
|
|
880
873
|
/* Or together 2 sets of indexes (X and Y) with the zeroing bits (Z) to create
|
|
881
874
|
an index suitable for _mm_insert_ps. */
|
|
882
875
|
#define _MM_MK_INSERTPS_NDX(X, Y, Z) (((X) << 6) | ((Y) << 4) | (Z))
|
|
883
876
|
|
|
884
877
|
/* Extract a float from X at index N into the first index of the return. */
|
|
885
|
-
#define _MM_PICK_OUT_PS(X, N)
|
|
886
|
-
|
|
878
|
+
#define _MM_PICK_OUT_PS(X, N) \
|
|
879
|
+
_mm_insert_ps(_mm_setzero_ps(), (X), _MM_MK_INSERTPS_NDX((N), 0, 0x0e))
|
|
887
880
|
|
|
888
881
|
/* Insert int into packed integer array at index. */
|
|
889
882
|
/// Constructs a 128-bit vector of [16 x i8] by first making a copy of
|
|
@@ -926,9 +919,9 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
926
919
|
/// 1110: Bits [119:112] of the result are used for insertion. \n
|
|
927
920
|
/// 1111: Bits [127:120] of the result are used for insertion.
|
|
928
921
|
/// \returns A 128-bit integer vector containing the constructed values.
|
|
929
|
-
#define _mm_insert_epi8(X, I, N)
|
|
930
|
-
((__m128i)__builtin_ia32_vec_set_v16qi((__v16qi)(__m128i)(X), \
|
|
931
|
-
(int)(
|
|
922
|
+
#define _mm_insert_epi8(X, I, N) \
|
|
923
|
+
((__m128i)__builtin_ia32_vec_set_v16qi((__v16qi)(__m128i)(X), (int)(I), \
|
|
924
|
+
(int)(N)))
|
|
932
925
|
|
|
933
926
|
/// Constructs a 128-bit vector of [4 x i32] by first making a copy of
|
|
934
927
|
/// the 128-bit integer vector parameter, and then inserting the 32-bit
|
|
@@ -958,9 +951,9 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
958
951
|
/// 10: Bits [95:64] of the result are used for insertion. \n
|
|
959
952
|
/// 11: Bits [127:96] of the result are used for insertion.
|
|
960
953
|
/// \returns A 128-bit integer vector containing the constructed values.
|
|
961
|
-
#define _mm_insert_epi32(X, I, N)
|
|
962
|
-
((__m128i)__builtin_ia32_vec_set_v4si((__v4si)(__m128i)(X), \
|
|
963
|
-
(int)(
|
|
954
|
+
#define _mm_insert_epi32(X, I, N) \
|
|
955
|
+
((__m128i)__builtin_ia32_vec_set_v4si((__v4si)(__m128i)(X), (int)(I), \
|
|
956
|
+
(int)(N)))
|
|
964
957
|
|
|
965
958
|
#ifdef __x86_64__
|
|
966
959
|
/// Constructs a 128-bit vector of [2 x i64] by first making a copy of
|
|
@@ -989,9 +982,9 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
989
982
|
/// 0: Bits [63:0] of the result are used for insertion. \n
|
|
990
983
|
/// 1: Bits [127:64] of the result are used for insertion. \n
|
|
991
984
|
/// \returns A 128-bit integer vector containing the constructed values.
|
|
992
|
-
#define _mm_insert_epi64(X, I, N)
|
|
993
|
-
((__m128i)__builtin_ia32_vec_set_v2di((__v2di)(__m128i)(X), \
|
|
994
|
-
(
|
|
985
|
+
#define _mm_insert_epi64(X, I, N) \
|
|
986
|
+
((__m128i)__builtin_ia32_vec_set_v2di((__v2di)(__m128i)(X), (long long)(I), \
|
|
987
|
+
(int)(N)))
|
|
995
988
|
#endif /* __x86_64__ */
|
|
996
989
|
|
|
997
990
|
/* Extract int from packed integer array at index. This returns the element
|
|
@@ -1032,8 +1025,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1032
1025
|
/// \returns An unsigned integer, whose lower 8 bits are selected from the
|
|
1033
1026
|
/// 128-bit integer vector parameter and the remaining bits are assigned
|
|
1034
1027
|
/// zeros.
|
|
1035
|
-
#define _mm_extract_epi8(X, N)
|
|
1036
|
-
((int)(unsigned char)__builtin_ia32_vec_ext_v16qi((__v16qi)(__m128i)(X),
|
|
1028
|
+
#define _mm_extract_epi8(X, N) \
|
|
1029
|
+
((int)(unsigned char)__builtin_ia32_vec_ext_v16qi((__v16qi)(__m128i)(X), \
|
|
1037
1030
|
(int)(N)))
|
|
1038
1031
|
|
|
1039
1032
|
/// Extracts a 32-bit element from the 128-bit integer vector of
|
|
@@ -1058,10 +1051,9 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1058
1051
|
/// 11: Bits [127:96] of the parameter \a X are exracted.
|
|
1059
1052
|
/// \returns An integer, whose lower 32 bits are selected from the 128-bit
|
|
1060
1053
|
/// integer vector parameter and the remaining bits are assigned zeros.
|
|
1061
|
-
#define _mm_extract_epi32(X, N)
|
|
1054
|
+
#define _mm_extract_epi32(X, N) \
|
|
1062
1055
|
((int)__builtin_ia32_vec_ext_v4si((__v4si)(__m128i)(X), (int)(N)))
|
|
1063
1056
|
|
|
1064
|
-
#ifdef __x86_64__
|
|
1065
1057
|
/// Extracts a 64-bit element from the 128-bit integer vector of
|
|
1066
1058
|
/// [2 x i64], using the immediate value parameter \a N as a selector.
|
|
1067
1059
|
///
|
|
@@ -1071,7 +1063,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1071
1063
|
/// long long _mm_extract_epi64(__m128i X, const int N);
|
|
1072
1064
|
/// \endcode
|
|
1073
1065
|
///
|
|
1074
|
-
/// This intrinsic corresponds to the <c> VPEXTRQ / PEXTRQ </c> instruction
|
|
1066
|
+
/// This intrinsic corresponds to the <c> VPEXTRQ / PEXTRQ </c> instruction
|
|
1067
|
+
/// in 64-bit mode.
|
|
1075
1068
|
///
|
|
1076
1069
|
/// \param X
|
|
1077
1070
|
/// A 128-bit integer vector.
|
|
@@ -1081,9 +1074,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1081
1074
|
/// 0: Bits [63:0] are returned. \n
|
|
1082
1075
|
/// 1: Bits [127:64] are returned. \n
|
|
1083
1076
|
/// \returns A 64-bit integer.
|
|
1084
|
-
#define _mm_extract_epi64(X, N)
|
|
1077
|
+
#define _mm_extract_epi64(X, N) \
|
|
1085
1078
|
((long long)__builtin_ia32_vec_ext_v2di((__v2di)(__m128i)(X), (int)(N)))
|
|
1086
|
-
#endif /* __x86_64 */
|
|
1087
1079
|
|
|
1088
1080
|
/* SSE4 128-bit Packed Integer Comparisons. */
|
|
1089
1081
|
/// Tests whether the specified bits in a 128-bit integer vector are all
|
|
@@ -1098,9 +1090,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1098
1090
|
/// \param __V
|
|
1099
1091
|
/// A 128-bit integer vector selecting which bits to test in operand \a __M.
|
|
1100
1092
|
/// \returns TRUE if the specified bits are all zeros; FALSE otherwise.
|
|
1101
|
-
static __inline__ int __DEFAULT_FN_ATTRS
|
|
1102
|
-
|
|
1103
|
-
{
|
|
1093
|
+
static __inline__ int __DEFAULT_FN_ATTRS _mm_testz_si128(__m128i __M,
|
|
1094
|
+
__m128i __V) {
|
|
1104
1095
|
return __builtin_ia32_ptestz128((__v2di)__M, (__v2di)__V);
|
|
1105
1096
|
}
|
|
1106
1097
|
|
|
@@ -1116,9 +1107,8 @@ _mm_testz_si128(__m128i __M, __m128i __V)
|
|
|
1116
1107
|
/// \param __V
|
|
1117
1108
|
/// A 128-bit integer vector selecting which bits to test in operand \a __M.
|
|
1118
1109
|
/// \returns TRUE if the specified bits are all ones; FALSE otherwise.
|
|
1119
|
-
static __inline__ int __DEFAULT_FN_ATTRS
|
|
1120
|
-
|
|
1121
|
-
{
|
|
1110
|
+
static __inline__ int __DEFAULT_FN_ATTRS _mm_testc_si128(__m128i __M,
|
|
1111
|
+
__m128i __V) {
|
|
1122
1112
|
return __builtin_ia32_ptestc128((__v2di)__M, (__v2di)__V);
|
|
1123
1113
|
}
|
|
1124
1114
|
|
|
@@ -1135,9 +1125,8 @@ _mm_testc_si128(__m128i __M, __m128i __V)
|
|
|
1135
1125
|
/// A 128-bit integer vector selecting which bits to test in operand \a __M.
|
|
1136
1126
|
/// \returns TRUE if the specified bits are neither all zeros nor all ones;
|
|
1137
1127
|
/// FALSE otherwise.
|
|
1138
|
-
static __inline__ int __DEFAULT_FN_ATTRS
|
|
1139
|
-
|
|
1140
|
-
{
|
|
1128
|
+
static __inline__ int __DEFAULT_FN_ATTRS _mm_testnzc_si128(__m128i __M,
|
|
1129
|
+
__m128i __V) {
|
|
1141
1130
|
return __builtin_ia32_ptestnzc128((__v2di)__M, (__v2di)__V);
|
|
1142
1131
|
}
|
|
1143
1132
|
|
|
@@ -1156,7 +1145,7 @@ _mm_testnzc_si128(__m128i __M, __m128i __V)
|
|
|
1156
1145
|
/// A 128-bit integer vector containing the bits to be tested.
|
|
1157
1146
|
/// \returns TRUE if the bits specified in the operand are all set to 1; FALSE
|
|
1158
1147
|
/// otherwise.
|
|
1159
|
-
#define _mm_test_all_ones(V) _mm_testc_si128((V),
|
|
1148
|
+
#define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_set1_epi32(-1))
|
|
1160
1149
|
|
|
1161
1150
|
/// Tests whether the specified bits in a 128-bit integer vector are
|
|
1162
1151
|
/// neither all zeros nor all ones.
|
|
@@ -1193,7 +1182,7 @@ _mm_testnzc_si128(__m128i __M, __m128i __V)
|
|
|
1193
1182
|
/// \param V
|
|
1194
1183
|
/// A 128-bit integer vector selecting which bits to test in operand \a M.
|
|
1195
1184
|
/// \returns TRUE if the specified bits are all zeros; FALSE otherwise.
|
|
1196
|
-
#define _mm_test_all_zeros(M, V) _mm_testz_si128
|
|
1185
|
+
#define _mm_test_all_zeros(M, V) _mm_testz_si128((M), (V))
|
|
1197
1186
|
|
|
1198
1187
|
/* SSE4 64-bit Packed Integer Comparisons. */
|
|
1199
1188
|
/// Compares each of the corresponding 64-bit values of the 128-bit
|
|
@@ -1208,9 +1197,8 @@ _mm_testnzc_si128(__m128i __M, __m128i __V)
|
|
|
1208
1197
|
/// \param __V2
|
|
1209
1198
|
/// A 128-bit integer vector.
|
|
1210
1199
|
/// \returns A 128-bit integer vector containing the comparison results.
|
|
1211
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1212
|
-
|
|
1213
|
-
{
|
|
1200
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpeq_epi64(__m128i __V1,
|
|
1201
|
+
__m128i __V2) {
|
|
1214
1202
|
return (__m128i)((__v2di)__V1 == (__v2di)__V2);
|
|
1215
1203
|
}
|
|
1216
1204
|
|
|
@@ -1225,15 +1213,16 @@ _mm_cmpeq_epi64(__m128i __V1, __m128i __V2)
|
|
|
1225
1213
|
/// This intrinsic corresponds to the <c> VPMOVSXBW / PMOVSXBW </c> instruction.
|
|
1226
1214
|
///
|
|
1227
1215
|
/// \param __V
|
|
1228
|
-
/// A 128-bit vector of [16 x i8]. The lower eight 8-bit elements are
|
|
1229
|
-
/// extended to 16-bit values.
|
|
1216
|
+
/// A 128-bit vector of [16 x i8]. The lower eight 8-bit elements are
|
|
1217
|
+
/// sign-extended to 16-bit values.
|
|
1230
1218
|
/// \returns A 128-bit vector of [8 x i16] containing the sign-extended values.
|
|
1231
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1232
|
-
_mm_cvtepi8_epi16(__m128i __V)
|
|
1233
|
-
{
|
|
1219
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi8_epi16(__m128i __V) {
|
|
1234
1220
|
/* This function always performs a signed extension, but __v16qi is a char
|
|
1235
1221
|
which may be signed or unsigned, so use __v16qs. */
|
|
1236
|
-
return (__m128i)__builtin_convertvector(
|
|
1222
|
+
return (__m128i) __builtin_convertvector(
|
|
1223
|
+
__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1, 2, 3, 4, 5, 6,
|
|
1224
|
+
7),
|
|
1225
|
+
__v8hi);
|
|
1237
1226
|
}
|
|
1238
1227
|
|
|
1239
1228
|
/// Sign-extends each of the lower four 8-bit integer elements of a
|
|
@@ -1249,12 +1238,11 @@ _mm_cvtepi8_epi16(__m128i __V)
|
|
|
1249
1238
|
/// A 128-bit vector of [16 x i8]. The lower four 8-bit elements are
|
|
1250
1239
|
/// sign-extended to 32-bit values.
|
|
1251
1240
|
/// \returns A 128-bit vector of [4 x i32] containing the sign-extended values.
|
|
1252
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1253
|
-
_mm_cvtepi8_epi32(__m128i __V)
|
|
1254
|
-
{
|
|
1241
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi8_epi32(__m128i __V) {
|
|
1255
1242
|
/* This function always performs a signed extension, but __v16qi is a char
|
|
1256
1243
|
which may be signed or unsigned, so use __v16qs. */
|
|
1257
|
-
return (__m128i)__builtin_convertvector(
|
|
1244
|
+
return (__m128i) __builtin_convertvector(
|
|
1245
|
+
__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1, 2, 3), __v4si);
|
|
1258
1246
|
}
|
|
1259
1247
|
|
|
1260
1248
|
/// Sign-extends each of the lower two 8-bit integer elements of a
|
|
@@ -1270,12 +1258,11 @@ _mm_cvtepi8_epi32(__m128i __V)
|
|
|
1270
1258
|
/// A 128-bit vector of [16 x i8]. The lower two 8-bit elements are
|
|
1271
1259
|
/// sign-extended to 64-bit values.
|
|
1272
1260
|
/// \returns A 128-bit vector of [2 x i64] containing the sign-extended values.
|
|
1273
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1274
|
-
_mm_cvtepi8_epi64(__m128i __V)
|
|
1275
|
-
{
|
|
1261
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi8_epi64(__m128i __V) {
|
|
1276
1262
|
/* This function always performs a signed extension, but __v16qi is a char
|
|
1277
1263
|
which may be signed or unsigned, so use __v16qs. */
|
|
1278
|
-
return (__m128i)__builtin_convertvector(
|
|
1264
|
+
return (__m128i) __builtin_convertvector(
|
|
1265
|
+
__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1), __v2di);
|
|
1279
1266
|
}
|
|
1280
1267
|
|
|
1281
1268
|
/// Sign-extends each of the lower four 16-bit integer elements of a
|
|
@@ -1291,10 +1278,9 @@ _mm_cvtepi8_epi64(__m128i __V)
|
|
|
1291
1278
|
/// A 128-bit vector of [8 x i16]. The lower four 16-bit elements are
|
|
1292
1279
|
/// sign-extended to 32-bit values.
|
|
1293
1280
|
/// \returns A 128-bit vector of [4 x i32] containing the sign-extended values.
|
|
1294
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1, 2, 3), __v4si);
|
|
1281
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi16_epi32(__m128i __V) {
|
|
1282
|
+
return (__m128i) __builtin_convertvector(
|
|
1283
|
+
__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1, 2, 3), __v4si);
|
|
1298
1284
|
}
|
|
1299
1285
|
|
|
1300
1286
|
/// Sign-extends each of the lower two 16-bit integer elements of a
|
|
@@ -1310,10 +1296,9 @@ _mm_cvtepi16_epi32(__m128i __V)
|
|
|
1310
1296
|
/// A 128-bit vector of [8 x i16]. The lower two 16-bit elements are
|
|
1311
1297
|
/// sign-extended to 64-bit values.
|
|
1312
1298
|
/// \returns A 128-bit vector of [2 x i64] containing the sign-extended values.
|
|
1313
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1), __v2di);
|
|
1299
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi16_epi64(__m128i __V) {
|
|
1300
|
+
return (__m128i) __builtin_convertvector(
|
|
1301
|
+
__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1), __v2di);
|
|
1317
1302
|
}
|
|
1318
1303
|
|
|
1319
1304
|
/// Sign-extends each of the lower two 32-bit integer elements of a
|
|
@@ -1329,10 +1314,9 @@ _mm_cvtepi16_epi64(__m128i __V)
|
|
|
1329
1314
|
/// A 128-bit vector of [4 x i32]. The lower two 32-bit elements are
|
|
1330
1315
|
/// sign-extended to 64-bit values.
|
|
1331
1316
|
/// \returns A 128-bit vector of [2 x i64] containing the sign-extended values.
|
|
1332
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v4si)__V, (__v4si)__V, 0, 1), __v2di);
|
|
1317
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepi32_epi64(__m128i __V) {
|
|
1318
|
+
return (__m128i) __builtin_convertvector(
|
|
1319
|
+
__builtin_shufflevector((__v4si)__V, (__v4si)__V, 0, 1), __v2di);
|
|
1336
1320
|
}
|
|
1337
1321
|
|
|
1338
1322
|
/* SSE4 Packed Integer Zero-Extension. */
|
|
@@ -1349,10 +1333,11 @@ _mm_cvtepi32_epi64(__m128i __V)
|
|
|
1349
1333
|
/// A 128-bit vector of [16 x i8]. The lower eight 8-bit elements are
|
|
1350
1334
|
/// zero-extended to 16-bit values.
|
|
1351
1335
|
/// \returns A 128-bit vector of [8 x i16] containing the zero-extended values.
|
|
1352
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1336
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu8_epi16(__m128i __V) {
|
|
1337
|
+
return (__m128i) __builtin_convertvector(
|
|
1338
|
+
__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3, 4, 5, 6,
|
|
1339
|
+
7),
|
|
1340
|
+
__v8hi);
|
|
1356
1341
|
}
|
|
1357
1342
|
|
|
1358
1343
|
/// Zero-extends each of the lower four 8-bit integer elements of a
|
|
@@ -1368,10 +1353,9 @@ _mm_cvtepu8_epi16(__m128i __V)
|
|
|
1368
1353
|
/// A 128-bit vector of [16 x i8]. The lower four 8-bit elements are
|
|
1369
1354
|
/// zero-extended to 32-bit values.
|
|
1370
1355
|
/// \returns A 128-bit vector of [4 x i32] containing the zero-extended values.
|
|
1371
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3), __v4si);
|
|
1356
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu8_epi32(__m128i __V) {
|
|
1357
|
+
return (__m128i) __builtin_convertvector(
|
|
1358
|
+
__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3), __v4si);
|
|
1375
1359
|
}
|
|
1376
1360
|
|
|
1377
1361
|
/// Zero-extends each of the lower two 8-bit integer elements of a
|
|
@@ -1387,10 +1371,9 @@ _mm_cvtepu8_epi32(__m128i __V)
|
|
|
1387
1371
|
/// A 128-bit vector of [16 x i8]. The lower two 8-bit elements are
|
|
1388
1372
|
/// zero-extended to 64-bit values.
|
|
1389
1373
|
/// \returns A 128-bit vector of [2 x i64] containing the zero-extended values.
|
|
1390
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1), __v2di);
|
|
1374
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu8_epi64(__m128i __V) {
|
|
1375
|
+
return (__m128i) __builtin_convertvector(
|
|
1376
|
+
__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1), __v2di);
|
|
1394
1377
|
}
|
|
1395
1378
|
|
|
1396
1379
|
/// Zero-extends each of the lower four 16-bit integer elements of a
|
|
@@ -1406,10 +1389,9 @@ _mm_cvtepu8_epi64(__m128i __V)
|
|
|
1406
1389
|
/// A 128-bit vector of [8 x i16]. The lower four 16-bit elements are
|
|
1407
1390
|
/// zero-extended to 32-bit values.
|
|
1408
1391
|
/// \returns A 128-bit vector of [4 x i32] containing the zero-extended values.
|
|
1409
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1, 2, 3), __v4si);
|
|
1392
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu16_epi32(__m128i __V) {
|
|
1393
|
+
return (__m128i) __builtin_convertvector(
|
|
1394
|
+
__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1, 2, 3), __v4si);
|
|
1413
1395
|
}
|
|
1414
1396
|
|
|
1415
1397
|
/// Zero-extends each of the lower two 16-bit integer elements of a
|
|
@@ -1425,10 +1407,9 @@ _mm_cvtepu16_epi32(__m128i __V)
|
|
|
1425
1407
|
/// A 128-bit vector of [8 x i16]. The lower two 16-bit elements are
|
|
1426
1408
|
/// zero-extended to 64-bit values.
|
|
1427
1409
|
/// \returns A 128-bit vector of [2 x i64] containing the zero-extended values.
|
|
1428
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1), __v2di);
|
|
1410
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu16_epi64(__m128i __V) {
|
|
1411
|
+
return (__m128i) __builtin_convertvector(
|
|
1412
|
+
__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1), __v2di);
|
|
1432
1413
|
}
|
|
1433
1414
|
|
|
1434
1415
|
/// Zero-extends each of the lower two 32-bit integer elements of a
|
|
@@ -1444,10 +1425,9 @@ _mm_cvtepu16_epi64(__m128i __V)
|
|
|
1444
1425
|
/// A 128-bit vector of [4 x i32]. The lower two 32-bit elements are
|
|
1445
1426
|
/// zero-extended to 64-bit values.
|
|
1446
1427
|
/// \returns A 128-bit vector of [2 x i64] containing the zero-extended values.
|
|
1447
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
return (__m128i)__builtin_convertvector(__builtin_shufflevector((__v4su)__V, (__v4su)__V, 0, 1), __v2di);
|
|
1428
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cvtepu32_epi64(__m128i __V) {
|
|
1429
|
+
return (__m128i) __builtin_convertvector(
|
|
1430
|
+
__builtin_shufflevector((__v4su)__V, (__v4su)__V, 0, 1), __v2di);
|
|
1451
1431
|
}
|
|
1452
1432
|
|
|
1453
1433
|
/* SSE4 Pack with Unsigned Saturation. */
|
|
@@ -1473,10 +1453,9 @@ _mm_cvtepu32_epi64(__m128i __V)
|
|
|
1473
1453
|
/// less than 0x0000 are saturated to 0x0000. The converted [4 x i16] values
|
|
1474
1454
|
/// are written to the higher 64 bits of the result.
|
|
1475
1455
|
/// \returns A 128-bit vector of [8 x i16] containing the converted values.
|
|
1476
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
return (__m128i) __builtin_ia32_packusdw128((__v4si)__V1, (__v4si)__V2);
|
|
1456
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_packus_epi32(__m128i __V1,
|
|
1457
|
+
__m128i __V2) {
|
|
1458
|
+
return (__m128i)__builtin_ia32_packusdw128((__v4si)__V1, (__v4si)__V2);
|
|
1480
1459
|
}
|
|
1481
1460
|
|
|
1482
1461
|
/* SSE4 Multiple Packed Sums of Absolute Difference. */
|
|
@@ -1515,9 +1494,9 @@ _mm_packus_epi32(__m128i __V1, __m128i __V2)
|
|
|
1515
1494
|
/// \endcode
|
|
1516
1495
|
/// \returns A 128-bit integer vector containing the sums of the sets of
|
|
1517
1496
|
/// absolute differences between both operands.
|
|
1518
|
-
#define _mm_mpsadbw_epu8(X, Y, M)
|
|
1519
|
-
((__m128i)
|
|
1520
|
-
|
|
1497
|
+
#define _mm_mpsadbw_epu8(X, Y, M) \
|
|
1498
|
+
((__m128i)__builtin_ia32_mpsadbw128((__v16qi)(__m128i)(X), \
|
|
1499
|
+
(__v16qi)(__m128i)(Y), (M)))
|
|
1521
1500
|
|
|
1522
1501
|
/// Finds the minimum unsigned 16-bit element in the input 128-bit
|
|
1523
1502
|
/// vector of [8 x u16] and returns it and along with its index.
|
|
@@ -1532,10 +1511,8 @@ _mm_packus_epi32(__m128i __V1, __m128i __V2)
|
|
|
1532
1511
|
/// \returns A 128-bit value where bits [15:0] contain the minimum value found
|
|
1533
1512
|
/// in parameter \a __V, bits [18:16] contain the index of the minimum value
|
|
1534
1513
|
/// and the remaining bits are set to 0.
|
|
1535
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
1536
|
-
|
|
1537
|
-
{
|
|
1538
|
-
return (__m128i) __builtin_ia32_phminposuw128((__v8hi)__V);
|
|
1514
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_minpos_epu16(__m128i __V) {
|
|
1515
|
+
return (__m128i)__builtin_ia32_phminposuw128((__v8hi)__V);
|
|
1539
1516
|
}
|
|
1540
1517
|
|
|
1541
1518
|
/* Handle the sse4.2 definitions here. */
|
|
@@ -1544,33 +1521,34 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1544
1521
|
so we'll do the same. */
|
|
1545
1522
|
|
|
1546
1523
|
#undef __DEFAULT_FN_ATTRS
|
|
1547
|
-
#define __DEFAULT_FN_ATTRS
|
|
1524
|
+
#define __DEFAULT_FN_ATTRS \
|
|
1525
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sse4.2")))
|
|
1548
1526
|
|
|
1549
1527
|
/* These specify the type of data that we're comparing. */
|
|
1550
|
-
#define _SIDD_UBYTE_OPS
|
|
1551
|
-
#define _SIDD_UWORD_OPS
|
|
1552
|
-
#define _SIDD_SBYTE_OPS
|
|
1553
|
-
#define _SIDD_SWORD_OPS
|
|
1528
|
+
#define _SIDD_UBYTE_OPS 0x00
|
|
1529
|
+
#define _SIDD_UWORD_OPS 0x01
|
|
1530
|
+
#define _SIDD_SBYTE_OPS 0x02
|
|
1531
|
+
#define _SIDD_SWORD_OPS 0x03
|
|
1554
1532
|
|
|
1555
1533
|
/* These specify the type of comparison operation. */
|
|
1556
|
-
#define _SIDD_CMP_EQUAL_ANY
|
|
1557
|
-
#define _SIDD_CMP_RANGES
|
|
1558
|
-
#define _SIDD_CMP_EQUAL_EACH
|
|
1559
|
-
#define _SIDD_CMP_EQUAL_ORDERED
|
|
1534
|
+
#define _SIDD_CMP_EQUAL_ANY 0x00
|
|
1535
|
+
#define _SIDD_CMP_RANGES 0x04
|
|
1536
|
+
#define _SIDD_CMP_EQUAL_EACH 0x08
|
|
1537
|
+
#define _SIDD_CMP_EQUAL_ORDERED 0x0c
|
|
1560
1538
|
|
|
1561
1539
|
/* These macros specify the polarity of the operation. */
|
|
1562
|
-
#define _SIDD_POSITIVE_POLARITY
|
|
1563
|
-
#define _SIDD_NEGATIVE_POLARITY
|
|
1564
|
-
#define _SIDD_MASKED_POSITIVE_POLARITY
|
|
1565
|
-
#define _SIDD_MASKED_NEGATIVE_POLARITY
|
|
1540
|
+
#define _SIDD_POSITIVE_POLARITY 0x00
|
|
1541
|
+
#define _SIDD_NEGATIVE_POLARITY 0x10
|
|
1542
|
+
#define _SIDD_MASKED_POSITIVE_POLARITY 0x20
|
|
1543
|
+
#define _SIDD_MASKED_NEGATIVE_POLARITY 0x30
|
|
1566
1544
|
|
|
1567
1545
|
/* These macros are used in _mm_cmpXstri() to specify the return. */
|
|
1568
|
-
#define _SIDD_LEAST_SIGNIFICANT
|
|
1569
|
-
#define _SIDD_MOST_SIGNIFICANT
|
|
1546
|
+
#define _SIDD_LEAST_SIGNIFICANT 0x00
|
|
1547
|
+
#define _SIDD_MOST_SIGNIFICANT 0x40
|
|
1570
1548
|
|
|
1571
1549
|
/* These macros are used in _mm_cmpXstri() to specify the return. */
|
|
1572
|
-
#define _SIDD_BIT_MASK
|
|
1573
|
-
#define _SIDD_UNIT_MASK
|
|
1550
|
+
#define _SIDD_BIT_MASK 0x00
|
|
1551
|
+
#define _SIDD_UNIT_MASK 0x40
|
|
1574
1552
|
|
|
1575
1553
|
/* SSE4.2 Packed Comparison Intrinsics. */
|
|
1576
1554
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1625,8 +1603,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1625
1603
|
/// repeating each bit 8 or 16 times).
|
|
1626
1604
|
/// \returns Returns a 128-bit integer vector representing the result mask of
|
|
1627
1605
|
/// the comparison.
|
|
1628
|
-
#define _mm_cmpistrm(A, B, M)
|
|
1629
|
-
((__m128i)__builtin_ia32_pcmpistrm128((__v16qi)(__m128i)(A),
|
|
1606
|
+
#define _mm_cmpistrm(A, B, M) \
|
|
1607
|
+
((__m128i)__builtin_ia32_pcmpistrm128((__v16qi)(__m128i)(A), \
|
|
1630
1608
|
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1631
1609
|
|
|
1632
1610
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1679,9 +1657,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1679
1657
|
/// 0: The index of the least significant set bit. \n
|
|
1680
1658
|
/// 1: The index of the most significant set bit. \n
|
|
1681
1659
|
/// \returns Returns an integer representing the result index of the comparison.
|
|
1682
|
-
#define _mm_cmpistri(A, B, M)
|
|
1683
|
-
((int)__builtin_ia32_pcmpistri128((__v16qi)(__m128i)(A),
|
|
1684
|
-
|
|
1660
|
+
#define _mm_cmpistri(A, B, M) \
|
|
1661
|
+
((int)__builtin_ia32_pcmpistri128((__v16qi)(__m128i)(A), \
|
|
1662
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1685
1663
|
|
|
1686
1664
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1687
1665
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -1739,9 +1717,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1739
1717
|
/// repeating each bit 8 or 16 times). \n
|
|
1740
1718
|
/// \returns Returns a 128-bit integer vector representing the result mask of
|
|
1741
1719
|
/// the comparison.
|
|
1742
|
-
#define _mm_cmpestrm(A, LA, B, LB, M)
|
|
1743
|
-
((__m128i)__builtin_ia32_pcmpestrm128((__v16qi)(__m128i)(A), (int)(LA),
|
|
1744
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
1720
|
+
#define _mm_cmpestrm(A, LA, B, LB, M) \
|
|
1721
|
+
((__m128i)__builtin_ia32_pcmpestrm128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
1722
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
1745
1723
|
(int)(M)))
|
|
1746
1724
|
|
|
1747
1725
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1798,9 +1776,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1798
1776
|
/// 0: The index of the least significant set bit. \n
|
|
1799
1777
|
/// 1: The index of the most significant set bit. \n
|
|
1800
1778
|
/// \returns Returns an integer representing the result index of the comparison.
|
|
1801
|
-
#define _mm_cmpestri(A, LA, B, LB, M)
|
|
1802
|
-
((int)__builtin_ia32_pcmpestri128((__v16qi)(__m128i)(A), (int)(LA),
|
|
1803
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
1779
|
+
#define _mm_cmpestri(A, LA, B, LB, M) \
|
|
1780
|
+
((int)__builtin_ia32_pcmpestri128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
1781
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
1804
1782
|
(int)(M)))
|
|
1805
1783
|
|
|
1806
1784
|
/* SSE4.2 Packed Comparison Intrinsics and EFlag Reading. */
|
|
@@ -1850,8 +1828,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1850
1828
|
/// to the size of \a A or \a B. \n
|
|
1851
1829
|
/// \returns Returns 1 if the bit mask is zero and the length of the string in
|
|
1852
1830
|
/// \a B is the maximum; otherwise, returns 0.
|
|
1853
|
-
#define _mm_cmpistra(A, B, M)
|
|
1854
|
-
((int)__builtin_ia32_pcmpistria128((__v16qi)(__m128i)(A),
|
|
1831
|
+
#define _mm_cmpistra(A, B, M) \
|
|
1832
|
+
((int)__builtin_ia32_pcmpistria128((__v16qi)(__m128i)(A), \
|
|
1855
1833
|
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1856
1834
|
|
|
1857
1835
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1899,8 +1877,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1899
1877
|
/// 11: Negate the bit mask only for bits with an index less than or equal
|
|
1900
1878
|
/// to the size of \a A or \a B.
|
|
1901
1879
|
/// \returns Returns 1 if the bit mask is non-zero, otherwise, returns 0.
|
|
1902
|
-
#define _mm_cmpistrc(A, B, M)
|
|
1903
|
-
((int)__builtin_ia32_pcmpistric128((__v16qi)(__m128i)(A),
|
|
1880
|
+
#define _mm_cmpistrc(A, B, M) \
|
|
1881
|
+
((int)__builtin_ia32_pcmpistric128((__v16qi)(__m128i)(A), \
|
|
1904
1882
|
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1905
1883
|
|
|
1906
1884
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1947,8 +1925,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1947
1925
|
/// 11: Negate the bit mask only for bits with an index less than or equal
|
|
1948
1926
|
/// to the size of \a A or \a B. \n
|
|
1949
1927
|
/// \returns Returns bit 0 of the resulting bit mask.
|
|
1950
|
-
#define _mm_cmpistro(A, B, M)
|
|
1951
|
-
((int)__builtin_ia32_pcmpistrio128((__v16qi)(__m128i)(A),
|
|
1928
|
+
#define _mm_cmpistro(A, B, M) \
|
|
1929
|
+
((int)__builtin_ia32_pcmpistrio128((__v16qi)(__m128i)(A), \
|
|
1952
1930
|
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1953
1931
|
|
|
1954
1932
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1997,8 +1975,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1997
1975
|
/// to the size of \a A or \a B. \n
|
|
1998
1976
|
/// \returns Returns 1 if the length of the string in \a A is less than the
|
|
1999
1977
|
/// maximum, otherwise, returns 0.
|
|
2000
|
-
#define _mm_cmpistrs(A, B, M)
|
|
2001
|
-
((int)__builtin_ia32_pcmpistris128((__v16qi)(__m128i)(A),
|
|
1978
|
+
#define _mm_cmpistrs(A, B, M) \
|
|
1979
|
+
((int)__builtin_ia32_pcmpistris128((__v16qi)(__m128i)(A), \
|
|
2002
1980
|
(__v16qi)(__m128i)(B), (int)(M)))
|
|
2003
1981
|
|
|
2004
1982
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -2047,8 +2025,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2047
2025
|
/// to the size of \a A or \a B.
|
|
2048
2026
|
/// \returns Returns 1 if the length of the string in \a B is less than the
|
|
2049
2027
|
/// maximum, otherwise, returns 0.
|
|
2050
|
-
#define _mm_cmpistrz(A, B, M)
|
|
2051
|
-
((int)__builtin_ia32_pcmpistriz128((__v16qi)(__m128i)(A),
|
|
2028
|
+
#define _mm_cmpistrz(A, B, M) \
|
|
2029
|
+
((int)__builtin_ia32_pcmpistriz128((__v16qi)(__m128i)(A), \
|
|
2052
2030
|
(__v16qi)(__m128i)(B), (int)(M)))
|
|
2053
2031
|
|
|
2054
2032
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -2101,9 +2079,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2101
2079
|
/// to the size of \a A or \a B.
|
|
2102
2080
|
/// \returns Returns 1 if the bit mask is zero and the length of the string in
|
|
2103
2081
|
/// \a B is the maximum, otherwise, returns 0.
|
|
2104
|
-
#define _mm_cmpestra(A, LA, B, LB, M)
|
|
2105
|
-
((int)__builtin_ia32_pcmpestria128((__v16qi)(__m128i)(A), (int)(LA),
|
|
2106
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
2082
|
+
#define _mm_cmpestra(A, LA, B, LB, M) \
|
|
2083
|
+
((int)__builtin_ia32_pcmpestria128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2084
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2107
2085
|
(int)(M)))
|
|
2108
2086
|
|
|
2109
2087
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -2155,9 +2133,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2155
2133
|
/// 11: Negate the bit mask only for bits with an index less than or equal
|
|
2156
2134
|
/// to the size of \a A or \a B. \n
|
|
2157
2135
|
/// \returns Returns 1 if the resulting mask is non-zero, otherwise, returns 0.
|
|
2158
|
-
#define _mm_cmpestrc(A, LA, B, LB, M)
|
|
2159
|
-
((int)__builtin_ia32_pcmpestric128((__v16qi)(__m128i)(A), (int)(LA),
|
|
2160
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
2136
|
+
#define _mm_cmpestrc(A, LA, B, LB, M) \
|
|
2137
|
+
((int)__builtin_ia32_pcmpestric128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2138
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2161
2139
|
(int)(M)))
|
|
2162
2140
|
|
|
2163
2141
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -2208,9 +2186,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2208
2186
|
/// 11: Negate the bit mask only for bits with an index less than or equal
|
|
2209
2187
|
/// to the size of \a A or \a B.
|
|
2210
2188
|
/// \returns Returns bit 0 of the resulting bit mask.
|
|
2211
|
-
#define _mm_cmpestro(A, LA, B, LB, M)
|
|
2212
|
-
((int)__builtin_ia32_pcmpestrio128((__v16qi)(__m128i)(A), (int)(LA),
|
|
2213
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
2189
|
+
#define _mm_cmpestro(A, LA, B, LB, M) \
|
|
2190
|
+
((int)__builtin_ia32_pcmpestrio128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2191
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2214
2192
|
(int)(M)))
|
|
2215
2193
|
|
|
2216
2194
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -2263,9 +2241,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2263
2241
|
/// to the size of \a A or \a B. \n
|
|
2264
2242
|
/// \returns Returns 1 if the length of the string in \a A is less than the
|
|
2265
2243
|
/// maximum, otherwise, returns 0.
|
|
2266
|
-
#define _mm_cmpestrs(A, LA, B, LB, M)
|
|
2267
|
-
((int)__builtin_ia32_pcmpestris128((__v16qi)(__m128i)(A), (int)(LA),
|
|
2268
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
2244
|
+
#define _mm_cmpestrs(A, LA, B, LB, M) \
|
|
2245
|
+
((int)__builtin_ia32_pcmpestris128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2246
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2269
2247
|
(int)(M)))
|
|
2270
2248
|
|
|
2271
2249
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -2317,9 +2295,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2317
2295
|
/// to the size of \a A or \a B.
|
|
2318
2296
|
/// \returns Returns 1 if the length of the string in \a B is less than the
|
|
2319
2297
|
/// maximum, otherwise, returns 0.
|
|
2320
|
-
#define _mm_cmpestrz(A, LA, B, LB, M)
|
|
2321
|
-
((int)__builtin_ia32_pcmpestriz128((__v16qi)(__m128i)(A), (int)(LA),
|
|
2322
|
-
(__v16qi)(__m128i)(B), (int)(LB),
|
|
2298
|
+
#define _mm_cmpestrz(A, LA, B, LB, M) \
|
|
2299
|
+
((int)__builtin_ia32_pcmpestriz128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2300
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2323
2301
|
(int)(M)))
|
|
2324
2302
|
|
|
2325
2303
|
/* SSE4.2 Compare Packed Data -- Greater Than. */
|
|
@@ -2336,9 +2314,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2336
2314
|
/// \param __V2
|
|
2337
2315
|
/// A 128-bit integer vector.
|
|
2338
2316
|
/// \returns A 128-bit integer vector containing the comparison results.
|
|
2339
|
-
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
2340
|
-
|
|
2341
|
-
{
|
|
2317
|
+
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_cmpgt_epi64(__m128i __V1,
|
|
2318
|
+
__m128i __V2) {
|
|
2342
2319
|
return (__m128i)((__v2di)__V1 > (__v2di)__V2);
|
|
2343
2320
|
}
|
|
2344
2321
|
|