@cpp-linter/clang-tidy-win32-x64 12.0.1 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy.exe +2 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_complex_builtins.h +3 -3
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_device_functions.h +174 -102
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_intrinsics.h +32 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_libdevice_declares.h +6 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_math.h +3 -3
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_runtime_wrapper.h +68 -8
- package/lib/clang/14.0.0/include/__clang_cuda_texture_intrinsics.h +740 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_hip_cmath.h +272 -94
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_hip_libdevice_declares.h +24 -12
- package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_hip_math.h +48 -2
- package/lib/clang/14.0.0/include/__clang_hip_runtime_wrapper.h +137 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/__wmmintrin_aes.h +1 -1
- package/lib/clang/{12.0.1 → 14.0.0}/include/altivec.h +1348 -496
- package/lib/clang/{12.0.1 → 14.0.0}/include/ammintrin.h +4 -0
- package/lib/clang/14.0.0/include/amxintrin.h +494 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/arm_acle.h +61 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/arm_neon.h +5544 -4634
- package/lib/clang/14.0.0/include/arm_neon_sve_bridge.h +184 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/arm_sve.h +11791 -5896
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx2intrin.h +181 -181
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512bf16intrin.h +3 -3
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512bwintrin.h +71 -71
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512dqintrin.h +365 -365
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512erintrin.h +102 -102
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512fintrin.h +1750 -1606
- package/lib/clang/14.0.0/include/avx512fp16intrin.h +3349 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vbmi2intrin.h +48 -48
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlbf16intrin.h +51 -3
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlbwintrin.h +94 -94
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vldqintrin.h +134 -134
- package/lib/clang/14.0.0/include/avx512vlfp16intrin.h +2068 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlintrin.h +563 -563
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlvbmi2intrin.h +96 -96
- package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlvnniintrin.h +8 -8
- package/lib/clang/{12.0.1 → 14.0.0}/include/avxintrin.h +189 -192
- package/lib/clang/14.0.0/include/builtins.h +16 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/cetintrin.h +10 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/cpuid.h +2 -1
- package/lib/clang/14.0.0/include/crc32intrin.h +100 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/cuda_wrappers/complex +8 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/emmintrin.h +21 -17
- package/lib/clang/{12.0.1 → 14.0.0}/include/f16cintrin.h +4 -4
- package/lib/clang/{12.0.1 → 14.0.0}/include/float.h +15 -6
- package/lib/clang/{12.0.1 → 14.0.0}/include/gfniintrin.h +47 -48
- package/lib/clang/14.0.0/include/hexagon_circ_brev_intrinsics.h +298 -0
- package/lib/clang/14.0.0/include/hexagon_protos.h +8439 -0
- package/lib/clang/14.0.0/include/hexagon_types.h +2621 -0
- package/lib/clang/14.0.0/include/hvx_hexagon_protos.h +5183 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/ia32intrin.h +6 -6
- package/lib/clang/{12.0.1 → 14.0.0}/include/immintrin.h +31 -13
- package/lib/clang/{12.0.1 → 14.0.0}/include/intrin.h +63 -19
- package/lib/clang/{12.0.1 → 14.0.0}/include/keylockerintrin.h +32 -8
- package/lib/clang/{12.0.1 → 14.0.0}/include/limits.h +20 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/mmintrin.h +4 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/nmmintrin.h +4 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/opencl-c-base.h +206 -7
- package/lib/clang/{12.0.1 → 14.0.0}/include/opencl-c.h +2187 -797
- package/lib/clang/14.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h +106 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/cmath +54 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/complex +11 -8
- package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/complex.h +9 -1
- package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/math.h +10 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/new +2 -24
- package/lib/clang/{12.0.1 → 14.0.0}/include/pmmintrin.h +4 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/emmintrin.h +3 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/mm_malloc.h +2 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/mmintrin.h +3 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/pmmintrin.h +3 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/smmintrin.h +4 -3
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/tmmintrin.h +3 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/xmmintrin.h +3 -2
- package/lib/clang/{12.0.1 → 14.0.0}/include/prfchwintrin.h +5 -2
- package/lib/clang/14.0.0/include/riscv_vector.h +95423 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/smmintrin.h +80 -159
- package/lib/clang/{12.0.1 → 14.0.0}/include/stdatomic.h +14 -1
- package/lib/clang/{12.0.1 → 14.0.0}/include/stdint.h +168 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/tmmintrin.h +10 -6
- package/lib/clang/{12.0.1 → 14.0.0}/include/uintrintrin.h +7 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/unwind.h +2 -1
- package/lib/clang/{12.0.1 → 14.0.0}/include/vaesintrin.h +22 -21
- package/lib/clang/{12.0.1 → 14.0.0}/include/vecintrin.h +206 -77
- package/lib/clang/{12.0.1 → 14.0.0}/include/vpclmulqdqintrin.h +8 -6
- package/lib/clang/14.0.0/include/wasm_simd128.h +1877 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/wmmintrin.h +4 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/x86gprintrin.h +12 -0
- package/lib/clang/{12.0.1 → 14.0.0}/include/xmmintrin.h +9 -5
- package/lib/clang/{12.0.1 → 14.0.0}/include/xopintrin.h +31 -31
- package/package.json +6 -6
- package/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h +0 -69
- package/lib/clang/12.0.1/include/amxintrin.h +0 -278
- package/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -42
- package/lib/clang/12.0.1/include/wasm_simd128.h +0 -1167
- /package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/adxintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/arm64intr.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_bf16.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_cde.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_cmse.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_fp16.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_mve.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/armintr.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512ifmavlintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/bmiintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/cet.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/clwbintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/clzerointrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/fma4intrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/fmaintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/hresetintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/htmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/inttypes.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/iso646.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/lwpintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/mm3dnow.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/mm_malloc.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/module.modulemap +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/movdirintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/msa.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/pkuintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/popcntintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/rtmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/s390intrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/serializeintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/sgxintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/shaintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/stdalign.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/stdarg.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/stdbool.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/stddef.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/stdnoreturn.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/tbmintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/tgmath.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/vadefs.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/varargs.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/x86intrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{12.0.1 → 14.0.0}/include/xtestintrin.h +0 -0
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
#ifndef __SMMINTRIN_H
|
|
11
11
|
#define __SMMINTRIN_H
|
|
12
12
|
|
|
13
|
+
#if !defined(__i386__) && !defined(__x86_64__)
|
|
14
|
+
#error "This header is only meant to be used on x86 and x64 architecture"
|
|
15
|
+
#endif
|
|
16
|
+
|
|
13
17
|
#include <tmmintrin.h>
|
|
14
18
|
|
|
15
19
|
/* Define the default attributes for the functions in this file. */
|
|
@@ -231,7 +235,7 @@
|
|
|
231
235
|
/// 11: Truncated
|
|
232
236
|
/// \returns A 128-bit vector of [4 x float] containing the rounded values.
|
|
233
237
|
#define _mm_round_ps(X, M) \
|
|
234
|
-
(__m128)__builtin_ia32_roundps((__v4sf)(__m128)(X), (M))
|
|
238
|
+
((__m128)__builtin_ia32_roundps((__v4sf)(__m128)(X), (M)))
|
|
235
239
|
|
|
236
240
|
/// Copies three upper elements of the first 128-bit vector operand to
|
|
237
241
|
/// the corresponding three upper elements of the 128-bit result vector of
|
|
@@ -272,8 +276,8 @@
|
|
|
272
276
|
/// \returns A 128-bit vector of [4 x float] containing the copied and rounded
|
|
273
277
|
/// values.
|
|
274
278
|
#define _mm_round_ss(X, Y, M) \
|
|
275
|
-
(__m128)__builtin_ia32_roundss((__v4sf)(__m128)(X), \
|
|
276
|
-
|
|
279
|
+
((__m128)__builtin_ia32_roundss((__v4sf)(__m128)(X), \
|
|
280
|
+
(__v4sf)(__m128)(Y), (M)))
|
|
277
281
|
|
|
278
282
|
/// Rounds each element of the 128-bit vector of [2 x double] to an
|
|
279
283
|
/// integer value according to the rounding control specified by the second
|
|
@@ -306,7 +310,7 @@
|
|
|
306
310
|
/// 11: Truncated
|
|
307
311
|
/// \returns A 128-bit vector of [2 x double] containing the rounded values.
|
|
308
312
|
#define _mm_round_pd(X, M) \
|
|
309
|
-
(__m128d)__builtin_ia32_roundpd((__v2df)(__m128d)(X), (M))
|
|
313
|
+
((__m128d)__builtin_ia32_roundpd((__v2df)(__m128d)(X), (M)))
|
|
310
314
|
|
|
311
315
|
/// Copies the upper element of the first 128-bit vector operand to the
|
|
312
316
|
/// corresponding upper element of the 128-bit result vector of [2 x double].
|
|
@@ -347,8 +351,8 @@
|
|
|
347
351
|
/// \returns A 128-bit vector of [2 x double] containing the copied and rounded
|
|
348
352
|
/// values.
|
|
349
353
|
#define _mm_round_sd(X, Y, M) \
|
|
350
|
-
(__m128d)__builtin_ia32_roundsd((__v2df)(__m128d)(X), \
|
|
351
|
-
|
|
354
|
+
((__m128d)__builtin_ia32_roundsd((__v2df)(__m128d)(X), \
|
|
355
|
+
(__v2df)(__m128d)(Y), (M)))
|
|
352
356
|
|
|
353
357
|
/* SSE4 Packed Blending Intrinsics. */
|
|
354
358
|
/// Returns a 128-bit vector of [2 x double] where the values are
|
|
@@ -376,8 +380,8 @@
|
|
|
376
380
|
/// is copied to the same position in the result.
|
|
377
381
|
/// \returns A 128-bit vector of [2 x double] containing the copied values.
|
|
378
382
|
#define _mm_blend_pd(V1, V2, M) \
|
|
379
|
-
(__m128d) __builtin_ia32_blendpd ((__v2df)(__m128d)(V1), \
|
|
380
|
-
|
|
383
|
+
((__m128d) __builtin_ia32_blendpd ((__v2df)(__m128d)(V1), \
|
|
384
|
+
(__v2df)(__m128d)(V2), (int)(M)))
|
|
381
385
|
|
|
382
386
|
/// Returns a 128-bit vector of [4 x float] where the values are selected
|
|
383
387
|
/// from either the first or second operand as specified by the third
|
|
@@ -404,8 +408,8 @@
|
|
|
404
408
|
/// is copied to the same position in the result.
|
|
405
409
|
/// \returns A 128-bit vector of [4 x float] containing the copied values.
|
|
406
410
|
#define _mm_blend_ps(V1, V2, M) \
|
|
407
|
-
(__m128) __builtin_ia32_blendps ((__v4sf)(__m128)(V1), \
|
|
408
|
-
|
|
411
|
+
((__m128) __builtin_ia32_blendps ((__v4sf)(__m128)(V1), \
|
|
412
|
+
(__v4sf)(__m128)(V2), (int)(M)))
|
|
409
413
|
|
|
410
414
|
/// Returns a 128-bit vector of [2 x double] where the values are
|
|
411
415
|
/// selected from either the first or second operand as specified by the
|
|
@@ -513,8 +517,8 @@ _mm_blendv_epi8 (__m128i __V1, __m128i __V2, __m128i __M)
|
|
|
513
517
|
/// is copied to the same position in the result.
|
|
514
518
|
/// \returns A 128-bit vector of [8 x i16] containing the copied values.
|
|
515
519
|
#define _mm_blend_epi16(V1, V2, M) \
|
|
516
|
-
(__m128i) __builtin_ia32_pblendw128 ((__v8hi)(__m128i)(V1), \
|
|
517
|
-
|
|
520
|
+
((__m128i) __builtin_ia32_pblendw128 ((__v8hi)(__m128i)(V1), \
|
|
521
|
+
(__v8hi)(__m128i)(V2), (int)(M)))
|
|
518
522
|
|
|
519
523
|
/* SSE4 Dword Multiply Instructions. */
|
|
520
524
|
/// Multiples corresponding elements of two 128-bit vectors of [4 x i32]
|
|
@@ -590,8 +594,8 @@ _mm_mul_epi32 (__m128i __V1, __m128i __V2)
|
|
|
590
594
|
/// in the corresponding element; otherwise that element is set to zero.
|
|
591
595
|
/// \returns A 128-bit vector of [4 x float] containing the dot product.
|
|
592
596
|
#define _mm_dp_ps(X, Y, M) \
|
|
593
|
-
(__m128) __builtin_ia32_dpps((__v4sf)(__m128)(X), \
|
|
594
|
-
|
|
597
|
+
((__m128) __builtin_ia32_dpps((__v4sf)(__m128)(X), \
|
|
598
|
+
(__v4sf)(__m128)(Y), (M)))
|
|
595
599
|
|
|
596
600
|
/// Computes the dot product of the two 128-bit vectors of [2 x double]
|
|
597
601
|
/// and returns it in the elements of the 128-bit result vector of
|
|
@@ -625,8 +629,8 @@ _mm_mul_epi32 (__m128i __V1, __m128i __V2)
|
|
|
625
629
|
/// each [2 x double] vector. If a bit is set, the dot product is returned in
|
|
626
630
|
/// the corresponding element; otherwise that element is set to zero.
|
|
627
631
|
#define _mm_dp_pd(X, Y, M) \
|
|
628
|
-
(__m128d) __builtin_ia32_dppd((__v2df)(__m128d)(X), \
|
|
629
|
-
|
|
632
|
+
((__m128d) __builtin_ia32_dppd((__v2df)(__m128d)(X), \
|
|
633
|
+
(__v2df)(__m128d)(Y), (M)))
|
|
630
634
|
|
|
631
635
|
/* SSE4 Streaming Load Hint Instruction. */
|
|
632
636
|
/// Loads integer values from a 128-bit aligned memory location to a
|
|
@@ -664,7 +668,7 @@ _mm_stream_load_si128 (__m128i const *__V)
|
|
|
664
668
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
665
669
|
_mm_min_epi8 (__m128i __V1, __m128i __V2)
|
|
666
670
|
{
|
|
667
|
-
return (__m128i)
|
|
671
|
+
return (__m128i) __builtin_elementwise_min((__v16qs) __V1, (__v16qs) __V2);
|
|
668
672
|
}
|
|
669
673
|
|
|
670
674
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -683,7 +687,7 @@ _mm_min_epi8 (__m128i __V1, __m128i __V2)
|
|
|
683
687
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
684
688
|
_mm_max_epi8 (__m128i __V1, __m128i __V2)
|
|
685
689
|
{
|
|
686
|
-
return (__m128i)
|
|
690
|
+
return (__m128i) __builtin_elementwise_max((__v16qs) __V1, (__v16qs) __V2);
|
|
687
691
|
}
|
|
688
692
|
|
|
689
693
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -702,7 +706,7 @@ _mm_max_epi8 (__m128i __V1, __m128i __V2)
|
|
|
702
706
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
703
707
|
_mm_min_epu16 (__m128i __V1, __m128i __V2)
|
|
704
708
|
{
|
|
705
|
-
return (__m128i)
|
|
709
|
+
return (__m128i) __builtin_elementwise_min((__v8hu) __V1, (__v8hu) __V2);
|
|
706
710
|
}
|
|
707
711
|
|
|
708
712
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -721,7 +725,7 @@ _mm_min_epu16 (__m128i __V1, __m128i __V2)
|
|
|
721
725
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
722
726
|
_mm_max_epu16 (__m128i __V1, __m128i __V2)
|
|
723
727
|
{
|
|
724
|
-
return (__m128i)
|
|
728
|
+
return (__m128i) __builtin_elementwise_max((__v8hu) __V1, (__v8hu) __V2);
|
|
725
729
|
}
|
|
726
730
|
|
|
727
731
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -740,7 +744,7 @@ _mm_max_epu16 (__m128i __V1, __m128i __V2)
|
|
|
740
744
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
741
745
|
_mm_min_epi32 (__m128i __V1, __m128i __V2)
|
|
742
746
|
{
|
|
743
|
-
return (__m128i)
|
|
747
|
+
return (__m128i) __builtin_elementwise_min((__v4si) __V1, (__v4si) __V2);
|
|
744
748
|
}
|
|
745
749
|
|
|
746
750
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -759,7 +763,7 @@ _mm_min_epi32 (__m128i __V1, __m128i __V2)
|
|
|
759
763
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
760
764
|
_mm_max_epi32 (__m128i __V1, __m128i __V2)
|
|
761
765
|
{
|
|
762
|
-
return (__m128i)
|
|
766
|
+
return (__m128i) __builtin_elementwise_max((__v4si) __V1, (__v4si) __V2);
|
|
763
767
|
}
|
|
764
768
|
|
|
765
769
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -778,7 +782,7 @@ _mm_max_epi32 (__m128i __V1, __m128i __V2)
|
|
|
778
782
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
779
783
|
_mm_min_epu32 (__m128i __V1, __m128i __V2)
|
|
780
784
|
{
|
|
781
|
-
return (__m128i)
|
|
785
|
+
return (__m128i) __builtin_elementwise_min((__v4su) __V1, (__v4su) __V2);
|
|
782
786
|
}
|
|
783
787
|
|
|
784
788
|
/// Compares the corresponding elements of two 128-bit vectors of
|
|
@@ -797,7 +801,7 @@ _mm_min_epu32 (__m128i __V1, __m128i __V2)
|
|
|
797
801
|
static __inline__ __m128i __DEFAULT_FN_ATTRS
|
|
798
802
|
_mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
799
803
|
{
|
|
800
|
-
return (__m128i)
|
|
804
|
+
return (__m128i) __builtin_elementwise_max((__v4su) __V1, (__v4su) __V2);
|
|
801
805
|
}
|
|
802
806
|
|
|
803
807
|
/* SSE4 Insertion and Extraction from XMM Register Instructions. */
|
|
@@ -865,15 +869,13 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
865
869
|
/// 10: Bits [95:64] of parameter \a X are returned. \n
|
|
866
870
|
/// 11: Bits [127:96] of parameter \a X are returned.
|
|
867
871
|
/// \returns A 32-bit integer containing the extracted 32 bits of float data.
|
|
868
|
-
#define _mm_extract_ps(X, N)
|
|
869
|
-
(
|
|
870
|
-
__t.__f = __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)); \
|
|
871
|
-
__t.__i;}))
|
|
872
|
+
#define _mm_extract_ps(X, N) \
|
|
873
|
+
__builtin_bit_cast(int, __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)))
|
|
872
874
|
|
|
873
875
|
/* Miscellaneous insert and extract macros. */
|
|
874
876
|
/* Extract a single-precision float from X at index N into D. */
|
|
875
877
|
#define _MM_EXTRACT_FLOAT(D, X, N) \
|
|
876
|
-
{ (D) = __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)); }
|
|
878
|
+
do { (D) = __builtin_ia32_vec_ext_v4sf((__v4sf)(__m128)(X), (int)(N)); } while (0)
|
|
877
879
|
|
|
878
880
|
/* Or together 2 sets of indexes (X and Y) with the zeroing bits (Z) to create
|
|
879
881
|
an index suitable for _mm_insert_ps. */
|
|
@@ -925,8 +927,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
925
927
|
/// 1111: Bits [127:120] of the result are used for insertion.
|
|
926
928
|
/// \returns A 128-bit integer vector containing the constructed values.
|
|
927
929
|
#define _mm_insert_epi8(X, I, N) \
|
|
928
|
-
(__m128i)__builtin_ia32_vec_set_v16qi((__v16qi)(__m128i)(X), \
|
|
929
|
-
|
|
930
|
+
((__m128i)__builtin_ia32_vec_set_v16qi((__v16qi)(__m128i)(X), \
|
|
931
|
+
(int)(I), (int)(N)))
|
|
930
932
|
|
|
931
933
|
/// Constructs a 128-bit vector of [4 x i32] by first making a copy of
|
|
932
934
|
/// the 128-bit integer vector parameter, and then inserting the 32-bit
|
|
@@ -957,8 +959,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
957
959
|
/// 11: Bits [127:96] of the result are used for insertion.
|
|
958
960
|
/// \returns A 128-bit integer vector containing the constructed values.
|
|
959
961
|
#define _mm_insert_epi32(X, I, N) \
|
|
960
|
-
(__m128i)__builtin_ia32_vec_set_v4si((__v4si)(__m128i)(X), \
|
|
961
|
-
|
|
962
|
+
((__m128i)__builtin_ia32_vec_set_v4si((__v4si)(__m128i)(X), \
|
|
963
|
+
(int)(I), (int)(N)))
|
|
962
964
|
|
|
963
965
|
#ifdef __x86_64__
|
|
964
966
|
/// Constructs a 128-bit vector of [2 x i64] by first making a copy of
|
|
@@ -988,8 +990,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
988
990
|
/// 1: Bits [127:64] of the result are used for insertion. \n
|
|
989
991
|
/// \returns A 128-bit integer vector containing the constructed values.
|
|
990
992
|
#define _mm_insert_epi64(X, I, N) \
|
|
991
|
-
(__m128i)__builtin_ia32_vec_set_v2di((__v2di)(__m128i)(X), \
|
|
992
|
-
|
|
993
|
+
((__m128i)__builtin_ia32_vec_set_v2di((__v2di)(__m128i)(X), \
|
|
994
|
+
(long long)(I), (int)(N)))
|
|
993
995
|
#endif /* __x86_64__ */
|
|
994
996
|
|
|
995
997
|
/* Extract int from packed integer array at index. This returns the element
|
|
@@ -1031,8 +1033,8 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1031
1033
|
/// 128-bit integer vector parameter and the remaining bits are assigned
|
|
1032
1034
|
/// zeros.
|
|
1033
1035
|
#define _mm_extract_epi8(X, N) \
|
|
1034
|
-
(int)(unsigned char)__builtin_ia32_vec_ext_v16qi((__v16qi)(__m128i)(X), \
|
|
1035
|
-
|
|
1036
|
+
((int)(unsigned char)__builtin_ia32_vec_ext_v16qi((__v16qi)(__m128i)(X), \
|
|
1037
|
+
(int)(N)))
|
|
1036
1038
|
|
|
1037
1039
|
/// Extracts a 32-bit element from the 128-bit integer vector of
|
|
1038
1040
|
/// [4 x i32], using the immediate value parameter \a N as a selector.
|
|
@@ -1057,7 +1059,7 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1057
1059
|
/// \returns An integer, whose lower 32 bits are selected from the 128-bit
|
|
1058
1060
|
/// integer vector parameter and the remaining bits are assigned zeros.
|
|
1059
1061
|
#define _mm_extract_epi32(X, N) \
|
|
1060
|
-
(int)__builtin_ia32_vec_ext_v4si((__v4si)(__m128i)(X), (int)(N))
|
|
1062
|
+
((int)__builtin_ia32_vec_ext_v4si((__v4si)(__m128i)(X), (int)(N)))
|
|
1061
1063
|
|
|
1062
1064
|
#ifdef __x86_64__
|
|
1063
1065
|
/// Extracts a 64-bit element from the 128-bit integer vector of
|
|
@@ -1080,7 +1082,7 @@ _mm_max_epu32 (__m128i __V1, __m128i __V2)
|
|
|
1080
1082
|
/// 1: Bits [127:64] are returned. \n
|
|
1081
1083
|
/// \returns A 64-bit integer.
|
|
1082
1084
|
#define _mm_extract_epi64(X, N) \
|
|
1083
|
-
(long long)__builtin_ia32_vec_ext_v2di((__v2di)(__m128i)(X), (int)(N))
|
|
1085
|
+
((long long)__builtin_ia32_vec_ext_v2di((__v2di)(__m128i)(X), (int)(N)))
|
|
1084
1086
|
#endif /* __x86_64 */
|
|
1085
1087
|
|
|
1086
1088
|
/* SSE4 128-bit Packed Integer Comparisons. */
|
|
@@ -1514,8 +1516,8 @@ _mm_packus_epi32(__m128i __V1, __m128i __V2)
|
|
|
1514
1516
|
/// \returns A 128-bit integer vector containing the sums of the sets of
|
|
1515
1517
|
/// absolute differences between both operands.
|
|
1516
1518
|
#define _mm_mpsadbw_epu8(X, Y, M) \
|
|
1517
|
-
(__m128i) __builtin_ia32_mpsadbw128((__v16qi)(__m128i)(X), \
|
|
1518
|
-
|
|
1519
|
+
((__m128i) __builtin_ia32_mpsadbw128((__v16qi)(__m128i)(X), \
|
|
1520
|
+
(__v16qi)(__m128i)(Y), (M)))
|
|
1519
1521
|
|
|
1520
1522
|
/// Finds the minimum unsigned 16-bit element in the input 128-bit
|
|
1521
1523
|
/// vector of [8 x u16] and returns it and along with its index.
|
|
@@ -1624,8 +1626,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1624
1626
|
/// \returns Returns a 128-bit integer vector representing the result mask of
|
|
1625
1627
|
/// the comparison.
|
|
1626
1628
|
#define _mm_cmpistrm(A, B, M) \
|
|
1627
|
-
(__m128i)__builtin_ia32_pcmpistrm128((__v16qi)(__m128i)(A), \
|
|
1628
|
-
|
|
1629
|
+
((__m128i)__builtin_ia32_pcmpistrm128((__v16qi)(__m128i)(A), \
|
|
1630
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1629
1631
|
|
|
1630
1632
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1631
1633
|
/// data with implicitly defined lengths that is contained in source operands
|
|
@@ -1678,8 +1680,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1678
1680
|
/// 1: The index of the most significant set bit. \n
|
|
1679
1681
|
/// \returns Returns an integer representing the result index of the comparison.
|
|
1680
1682
|
#define _mm_cmpistri(A, B, M) \
|
|
1681
|
-
(int)__builtin_ia32_pcmpistri128((__v16qi)(__m128i)(A), \
|
|
1682
|
-
(__v16qi)(__m128i)(B), (int)(M))
|
|
1683
|
+
((int)__builtin_ia32_pcmpistri128((__v16qi)(__m128i)(A), \
|
|
1684
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1683
1685
|
|
|
1684
1686
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1685
1687
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -1738,9 +1740,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1738
1740
|
/// \returns Returns a 128-bit integer vector representing the result mask of
|
|
1739
1741
|
/// the comparison.
|
|
1740
1742
|
#define _mm_cmpestrm(A, LA, B, LB, M) \
|
|
1741
|
-
(__m128i)__builtin_ia32_pcmpestrm128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
1742
|
-
|
|
1743
|
-
|
|
1743
|
+
((__m128i)__builtin_ia32_pcmpestrm128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
1744
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
1745
|
+
(int)(M)))
|
|
1744
1746
|
|
|
1745
1747
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1746
1748
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -1797,9 +1799,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1797
1799
|
/// 1: The index of the most significant set bit. \n
|
|
1798
1800
|
/// \returns Returns an integer representing the result index of the comparison.
|
|
1799
1801
|
#define _mm_cmpestri(A, LA, B, LB, M) \
|
|
1800
|
-
(int)__builtin_ia32_pcmpestri128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
1801
|
-
|
|
1802
|
-
|
|
1802
|
+
((int)__builtin_ia32_pcmpestri128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
1803
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
1804
|
+
(int)(M)))
|
|
1803
1805
|
|
|
1804
1806
|
/* SSE4.2 Packed Comparison Intrinsics and EFlag Reading. */
|
|
1805
1807
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
@@ -1849,8 +1851,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1849
1851
|
/// \returns Returns 1 if the bit mask is zero and the length of the string in
|
|
1850
1852
|
/// \a B is the maximum; otherwise, returns 0.
|
|
1851
1853
|
#define _mm_cmpistra(A, B, M) \
|
|
1852
|
-
(int)__builtin_ia32_pcmpistria128((__v16qi)(__m128i)(A), \
|
|
1853
|
-
|
|
1854
|
+
((int)__builtin_ia32_pcmpistria128((__v16qi)(__m128i)(A), \
|
|
1855
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1854
1856
|
|
|
1855
1857
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1856
1858
|
/// data with implicitly defined lengths that is contained in source operands
|
|
@@ -1898,8 +1900,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1898
1900
|
/// to the size of \a A or \a B.
|
|
1899
1901
|
/// \returns Returns 1 if the bit mask is non-zero, otherwise, returns 0.
|
|
1900
1902
|
#define _mm_cmpistrc(A, B, M) \
|
|
1901
|
-
(int)__builtin_ia32_pcmpistric128((__v16qi)(__m128i)(A), \
|
|
1902
|
-
|
|
1903
|
+
((int)__builtin_ia32_pcmpistric128((__v16qi)(__m128i)(A), \
|
|
1904
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1903
1905
|
|
|
1904
1906
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1905
1907
|
/// data with implicitly defined lengths that is contained in source operands
|
|
@@ -1946,8 +1948,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1946
1948
|
/// to the size of \a A or \a B. \n
|
|
1947
1949
|
/// \returns Returns bit 0 of the resulting bit mask.
|
|
1948
1950
|
#define _mm_cmpistro(A, B, M) \
|
|
1949
|
-
(int)__builtin_ia32_pcmpistrio128((__v16qi)(__m128i)(A), \
|
|
1950
|
-
|
|
1951
|
+
((int)__builtin_ia32_pcmpistrio128((__v16qi)(__m128i)(A), \
|
|
1952
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
1951
1953
|
|
|
1952
1954
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
1953
1955
|
/// data with implicitly defined lengths that is contained in source operands
|
|
@@ -1996,8 +1998,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
1996
1998
|
/// \returns Returns 1 if the length of the string in \a A is less than the
|
|
1997
1999
|
/// maximum, otherwise, returns 0.
|
|
1998
2000
|
#define _mm_cmpistrs(A, B, M) \
|
|
1999
|
-
(int)__builtin_ia32_pcmpistris128((__v16qi)(__m128i)(A), \
|
|
2000
|
-
|
|
2001
|
+
((int)__builtin_ia32_pcmpistris128((__v16qi)(__m128i)(A), \
|
|
2002
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
2001
2003
|
|
|
2002
2004
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
2003
2005
|
/// data with implicitly defined lengths that is contained in source operands
|
|
@@ -2046,8 +2048,8 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2046
2048
|
/// \returns Returns 1 if the length of the string in \a B is less than the
|
|
2047
2049
|
/// maximum, otherwise, returns 0.
|
|
2048
2050
|
#define _mm_cmpistrz(A, B, M) \
|
|
2049
|
-
(int)__builtin_ia32_pcmpistriz128((__v16qi)(__m128i)(A), \
|
|
2050
|
-
|
|
2051
|
+
((int)__builtin_ia32_pcmpistriz128((__v16qi)(__m128i)(A), \
|
|
2052
|
+
(__v16qi)(__m128i)(B), (int)(M)))
|
|
2051
2053
|
|
|
2052
2054
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
2053
2055
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -2100,9 +2102,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2100
2102
|
/// \returns Returns 1 if the bit mask is zero and the length of the string in
|
|
2101
2103
|
/// \a B is the maximum, otherwise, returns 0.
|
|
2102
2104
|
#define _mm_cmpestra(A, LA, B, LB, M) \
|
|
2103
|
-
(int)__builtin_ia32_pcmpestria128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2104
|
-
|
|
2105
|
-
|
|
2105
|
+
((int)__builtin_ia32_pcmpestria128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2106
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2107
|
+
(int)(M)))
|
|
2106
2108
|
|
|
2107
2109
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
2108
2110
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -2154,9 +2156,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2154
2156
|
/// to the size of \a A or \a B. \n
|
|
2155
2157
|
/// \returns Returns 1 if the resulting mask is non-zero, otherwise, returns 0.
|
|
2156
2158
|
#define _mm_cmpestrc(A, LA, B, LB, M) \
|
|
2157
|
-
(int)__builtin_ia32_pcmpestric128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2158
|
-
|
|
2159
|
-
|
|
2159
|
+
((int)__builtin_ia32_pcmpestric128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2160
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2161
|
+
(int)(M)))
|
|
2160
2162
|
|
|
2161
2163
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
2162
2164
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -2207,9 +2209,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2207
2209
|
/// to the size of \a A or \a B.
|
|
2208
2210
|
/// \returns Returns bit 0 of the resulting bit mask.
|
|
2209
2211
|
#define _mm_cmpestro(A, LA, B, LB, M) \
|
|
2210
|
-
(int)__builtin_ia32_pcmpestrio128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2211
|
-
|
|
2212
|
-
|
|
2212
|
+
((int)__builtin_ia32_pcmpestrio128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2213
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2214
|
+
(int)(M)))
|
|
2213
2215
|
|
|
2214
2216
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
2215
2217
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -2262,9 +2264,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2262
2264
|
/// \returns Returns 1 if the length of the string in \a A is less than the
|
|
2263
2265
|
/// maximum, otherwise, returns 0.
|
|
2264
2266
|
#define _mm_cmpestrs(A, LA, B, LB, M) \
|
|
2265
|
-
(int)__builtin_ia32_pcmpestris128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2266
|
-
|
|
2267
|
-
|
|
2267
|
+
((int)__builtin_ia32_pcmpestris128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2268
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2269
|
+
(int)(M)))
|
|
2268
2270
|
|
|
2269
2271
|
/// Uses the immediate operand \a M to perform a comparison of string
|
|
2270
2272
|
/// data with explicitly defined lengths that is contained in source operands
|
|
@@ -2316,9 +2318,9 @@ _mm_minpos_epu16(__m128i __V)
|
|
|
2316
2318
|
/// \returns Returns 1 if the length of the string in \a B is less than the
|
|
2317
2319
|
/// maximum, otherwise, returns 0.
|
|
2318
2320
|
#define _mm_cmpestrz(A, LA, B, LB, M) \
|
|
2319
|
-
(int)__builtin_ia32_pcmpestriz128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2320
|
-
|
|
2321
|
-
|
|
2321
|
+
((int)__builtin_ia32_pcmpestriz128((__v16qi)(__m128i)(A), (int)(LA), \
|
|
2322
|
+
(__v16qi)(__m128i)(B), (int)(LB), \
|
|
2323
|
+
(int)(M)))
|
|
2322
2324
|
|
|
2323
2325
|
/* SSE4.2 Compare Packed Data -- Greater Than. */
|
|
2324
2326
|
/// Compares each of the corresponding 64-bit values of the 128-bit
|
|
@@ -2340,91 +2342,10 @@ _mm_cmpgt_epi64(__m128i __V1, __m128i __V2)
|
|
|
2340
2342
|
return (__m128i)((__v2di)__V1 > (__v2di)__V2);
|
|
2341
2343
|
}
|
|
2342
2344
|
|
|
2343
|
-
/* SSE4.2 Accumulate CRC32. */
|
|
2344
|
-
/// Adds the unsigned integer operand to the CRC-32C checksum of the
|
|
2345
|
-
/// unsigned char operand.
|
|
2346
|
-
///
|
|
2347
|
-
/// \headerfile <x86intrin.h>
|
|
2348
|
-
///
|
|
2349
|
-
/// This intrinsic corresponds to the <c> CRC32B </c> instruction.
|
|
2350
|
-
///
|
|
2351
|
-
/// \param __C
|
|
2352
|
-
/// An unsigned integer operand to add to the CRC-32C checksum of operand
|
|
2353
|
-
/// \a __D.
|
|
2354
|
-
/// \param __D
|
|
2355
|
-
/// An unsigned 8-bit integer operand used to compute the CRC-32C checksum.
|
|
2356
|
-
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
2357
|
-
/// operand \a __D.
|
|
2358
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
2359
|
-
_mm_crc32_u8(unsigned int __C, unsigned char __D)
|
|
2360
|
-
{
|
|
2361
|
-
return __builtin_ia32_crc32qi(__C, __D);
|
|
2362
|
-
}
|
|
2363
|
-
|
|
2364
|
-
/// Adds the unsigned integer operand to the CRC-32C checksum of the
|
|
2365
|
-
/// unsigned short operand.
|
|
2366
|
-
///
|
|
2367
|
-
/// \headerfile <x86intrin.h>
|
|
2368
|
-
///
|
|
2369
|
-
/// This intrinsic corresponds to the <c> CRC32W </c> instruction.
|
|
2370
|
-
///
|
|
2371
|
-
/// \param __C
|
|
2372
|
-
/// An unsigned integer operand to add to the CRC-32C checksum of operand
|
|
2373
|
-
/// \a __D.
|
|
2374
|
-
/// \param __D
|
|
2375
|
-
/// An unsigned 16-bit integer operand used to compute the CRC-32C checksum.
|
|
2376
|
-
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
2377
|
-
/// operand \a __D.
|
|
2378
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
2379
|
-
_mm_crc32_u16(unsigned int __C, unsigned short __D)
|
|
2380
|
-
{
|
|
2381
|
-
return __builtin_ia32_crc32hi(__C, __D);
|
|
2382
|
-
}
|
|
2383
|
-
|
|
2384
|
-
/// Adds the first unsigned integer operand to the CRC-32C checksum of
|
|
2385
|
-
/// the second unsigned integer operand.
|
|
2386
|
-
///
|
|
2387
|
-
/// \headerfile <x86intrin.h>
|
|
2388
|
-
///
|
|
2389
|
-
/// This intrinsic corresponds to the <c> CRC32L </c> instruction.
|
|
2390
|
-
///
|
|
2391
|
-
/// \param __C
|
|
2392
|
-
/// An unsigned integer operand to add to the CRC-32C checksum of operand
|
|
2393
|
-
/// \a __D.
|
|
2394
|
-
/// \param __D
|
|
2395
|
-
/// An unsigned 32-bit integer operand used to compute the CRC-32C checksum.
|
|
2396
|
-
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
2397
|
-
/// operand \a __D.
|
|
2398
|
-
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
2399
|
-
_mm_crc32_u32(unsigned int __C, unsigned int __D)
|
|
2400
|
-
{
|
|
2401
|
-
return __builtin_ia32_crc32si(__C, __D);
|
|
2402
|
-
}
|
|
2403
|
-
|
|
2404
|
-
#ifdef __x86_64__
|
|
2405
|
-
/// Adds the unsigned integer operand to the CRC-32C checksum of the
|
|
2406
|
-
/// unsigned 64-bit integer operand.
|
|
2407
|
-
///
|
|
2408
|
-
/// \headerfile <x86intrin.h>
|
|
2409
|
-
///
|
|
2410
|
-
/// This intrinsic corresponds to the <c> CRC32Q </c> instruction.
|
|
2411
|
-
///
|
|
2412
|
-
/// \param __C
|
|
2413
|
-
/// An unsigned integer operand to add to the CRC-32C checksum of operand
|
|
2414
|
-
/// \a __D.
|
|
2415
|
-
/// \param __D
|
|
2416
|
-
/// An unsigned 64-bit integer operand used to compute the CRC-32C checksum.
|
|
2417
|
-
/// \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
2418
|
-
/// operand \a __D.
|
|
2419
|
-
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
2420
|
-
_mm_crc32_u64(unsigned long long __C, unsigned long long __D)
|
|
2421
|
-
{
|
|
2422
|
-
return __builtin_ia32_crc32di(__C, __D);
|
|
2423
|
-
}
|
|
2424
|
-
#endif /* __x86_64__ */
|
|
2425
|
-
|
|
2426
2345
|
#undef __DEFAULT_FN_ATTRS
|
|
2427
2346
|
|
|
2428
2347
|
#include <popcntintrin.h>
|
|
2429
2348
|
|
|
2349
|
+
#include <crc32intrin.h>
|
|
2350
|
+
|
|
2430
2351
|
#endif /* __SMMINTRIN_H */
|
|
@@ -12,8 +12,12 @@
|
|
|
12
12
|
|
|
13
13
|
/* If we're hosted, fall back to the system's stdatomic.h. FreeBSD, for
|
|
14
14
|
* example, already has a Clang-compatible stdatomic.h header.
|
|
15
|
+
*
|
|
16
|
+
* Exclude the MSVC path as well as the MSVC header as of the 14.31.30818
|
|
17
|
+
* explicitly disallows `stdatomic.h` in the C mode via an `#error`. Fallback
|
|
18
|
+
* to the clang resource header until that is fully supported.
|
|
15
19
|
*/
|
|
16
|
-
#if __STDC_HOSTED__ && __has_include_next(<stdatomic.h>)
|
|
20
|
+
#if __STDC_HOSTED__ && __has_include_next(<stdatomic.h>) && !defined(_MSC_VER)
|
|
17
21
|
# include_next <stdatomic.h>
|
|
18
22
|
#else
|
|
19
23
|
|
|
@@ -40,6 +44,11 @@ extern "C" {
|
|
|
40
44
|
/* 7.17.2 Initialization */
|
|
41
45
|
|
|
42
46
|
#define ATOMIC_VAR_INIT(value) (value)
|
|
47
|
+
#if (__STDC_VERSION__ >= 201710L || __cplusplus >= 202002L) && \
|
|
48
|
+
!defined(_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS)
|
|
49
|
+
/* ATOMIC_VAR_INIT was deprecated in C17 and C++20. */
|
|
50
|
+
#pragma clang deprecated(ATOMIC_VAR_INIT)
|
|
51
|
+
#endif
|
|
43
52
|
#define atomic_init __c11_atomic_init
|
|
44
53
|
|
|
45
54
|
/* 7.17.3 Order and consistency */
|
|
@@ -149,6 +158,10 @@ typedef _Atomic(uintmax_t) atomic_uintmax_t;
|
|
|
149
158
|
typedef struct atomic_flag { atomic_bool _Value; } atomic_flag;
|
|
150
159
|
|
|
151
160
|
#define ATOMIC_FLAG_INIT { 0 }
|
|
161
|
+
#if __cplusplus >= 202002L && !defined(_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS)
|
|
162
|
+
/* ATOMIC_FLAG_INIT was deprecated in C++20 but is not deprecated in C. */
|
|
163
|
+
#pragma clang deprecated(ATOMIC_FLAG_INIT)
|
|
164
|
+
#endif
|
|
152
165
|
|
|
153
166
|
/* These should be provided by the libc implementation. */
|
|
154
167
|
#ifdef __cplusplus
|