@cpp-linter/clang-tidy-linux-arm64 17.0.6 → 19.1.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 +2 -2
- package/lib/clang/{17 → 19}/include/__clang_cuda_device_functions.h +2 -2
- package/lib/clang/{17 → 19}/include/__clang_cuda_intrinsics.h +1 -3
- package/lib/clang/{17 → 19}/include/__clang_cuda_libdevice_declares.h +2 -2
- package/lib/clang/{17 → 19}/include/__clang_cuda_math.h +2 -2
- package/lib/clang/{17 → 19}/include/__clang_cuda_runtime_wrapper.h +2 -2
- package/lib/clang/{17 → 19}/include/__clang_hip_math.h +192 -171
- package/lib/clang/{17 → 19}/include/__clang_hip_runtime_wrapper.h +34 -26
- package/lib/clang/19/include/__stdarg___gnuc_va_list.h +13 -0
- package/lib/clang/19/include/__stdarg___va_copy.h +12 -0
- package/lib/clang/19/include/__stdarg_header_macro.h +12 -0
- package/lib/clang/19/include/__stdarg_va_arg.h +22 -0
- package/lib/clang/19/include/__stdarg_va_copy.h +12 -0
- package/lib/clang/19/include/__stdarg_va_list.h +13 -0
- package/lib/clang/19/include/__stddef_header_macro.h +12 -0
- package/lib/clang/{17 → 19}/include/__stddef_max_align_t.h +1 -1
- package/lib/clang/19/include/__stddef_null.h +29 -0
- package/lib/clang/19/include/__stddef_nullptr_t.h +29 -0
- package/lib/clang/19/include/__stddef_offsetof.h +17 -0
- package/lib/clang/19/include/__stddef_ptrdiff_t.h +20 -0
- package/lib/clang/19/include/__stddef_rsize_t.h +20 -0
- package/lib/clang/19/include/__stddef_size_t.h +20 -0
- package/lib/clang/19/include/__stddef_unreachable.h +21 -0
- package/lib/clang/19/include/__stddef_wchar_t.h +28 -0
- package/lib/clang/19/include/__stddef_wint_t.h +15 -0
- package/lib/clang/{17/include/adxintrin.h → 19/include/adcintrin.h} +27 -94
- package/lib/clang/19/include/adxintrin.h +102 -0
- package/lib/clang/{17 → 19}/include/altivec.h +31 -12
- package/lib/clang/{17 → 19}/include/ammintrin.h +4 -4
- package/lib/clang/{17 → 19}/include/arm_acle.h +138 -32
- package/lib/clang/{17 → 19}/include/arm_fp16.h +1 -1
- package/lib/clang/{17 → 19}/include/arm_neon.h +43361 -43608
- package/lib/clang/19/include/arm_sme.h +2819 -0
- package/lib/clang/{17 → 19}/include/arm_sve.h +30202 -23615
- package/lib/clang/19/include/arm_vector_types.h +345 -0
- package/lib/clang/{17 → 19}/include/avx2intrin.h +24 -3
- package/lib/clang/{17 → 19}/include/avx512bf16intrin.h +3 -2
- package/lib/clang/{17 → 19}/include/avx512bitalgintrin.h +4 -1
- package/lib/clang/{17 → 19}/include/avx512bwintrin.h +28 -38
- package/lib/clang/{17 → 19}/include/avx512cdintrin.h +3 -1
- package/lib/clang/{17 → 19}/include/avx512dqintrin.h +4 -2
- package/lib/clang/{17 → 19}/include/avx512fintrin.h +7 -3
- package/lib/clang/{17 → 19}/include/avx512fp16intrin.h +44 -42
- package/lib/clang/{17 → 19}/include/avx512ifmaintrin.h +3 -1
- package/lib/clang/{17 → 19}/include/avx512ifmavlintrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vbmi2intrin.h +1 -1
- package/lib/clang/{17 → 19}/include/avx512vbmiintrin.h +3 -2
- package/lib/clang/{17 → 19}/include/avx512vbmivlintrin.h +8 -3
- package/lib/clang/{17 → 19}/include/avx512vlbf16intrin.h +8 -6
- package/lib/clang/{17 → 19}/include/avx512vlbitalgintrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vlbwintrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vlcdintrin.h +8 -3
- package/lib/clang/{17 → 19}/include/avx512vldqintrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vlfp16intrin.h +2 -2
- package/lib/clang/{17 → 19}/include/avx512vlintrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vlvbmi2intrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vlvnniintrin.h +8 -2
- package/lib/clang/{17 → 19}/include/avx512vlvp2intersectintrin.h +6 -4
- package/lib/clang/{17 → 19}/include/avx512vnniintrin.h +3 -2
- package/lib/clang/{17 → 19}/include/avx512vp2intersectintrin.h +3 -2
- package/lib/clang/{17 → 19}/include/avx512vpopcntdqintrin.h +3 -1
- package/lib/clang/{17 → 19}/include/avx512vpopcntdqvlintrin.h +6 -2
- package/lib/clang/{17 → 19}/include/avxintrin.h +67 -49
- package/lib/clang/{17 → 19}/include/bmiintrin.h +233 -50
- package/lib/clang/{17 → 19}/include/builtins.h +3 -0
- package/lib/clang/{17 → 19}/include/cpuid.h +23 -3
- package/lib/clang/{17 → 19}/include/cuda_wrappers/algorithm +1 -1
- package/lib/clang/{17 → 19}/include/emmintrin.h +311 -180
- package/lib/clang/{17 → 19}/include/float.h +28 -0
- package/lib/clang/{17 → 19}/include/fmaintrin.h +32 -16
- package/lib/clang/{17 → 19}/include/gfniintrin.h +23 -6
- package/lib/clang/{17 → 19}/include/hlsl/hlsl_basic_types.h +10 -3
- package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +1697 -0
- package/lib/clang/19/include/ia32intrin.h +863 -0
- package/lib/clang/{17 → 19}/include/immintrin.h +149 -160
- package/lib/clang/{17 → 19}/include/intrin.h +61 -221
- package/lib/clang/19/include/intrin0.h +247 -0
- package/lib/clang/{17 → 19}/include/inttypes.h +4 -0
- package/lib/clang/{17 → 19}/include/iso646.h +4 -0
- package/lib/clang/{17 → 19}/include/keylockerintrin.h +5 -8
- package/lib/clang/{17 → 19}/include/larchintrin.h +13 -1
- package/lib/clang/19/include/lasxintrin.h +3884 -0
- package/lib/clang/{17 → 19}/include/limits.h +7 -4
- package/lib/clang/{17/include/llvm_libc_wrappers/stdio.h → 19/include/llvm_libc_wrappers/assert.h} +7 -7
- package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/ctype.h +17 -0
- package/lib/clang/19/include/llvm_libc_wrappers/stdio.h +80 -0
- package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/stdlib.h +4 -1
- package/lib/clang/19/include/llvm_libc_wrappers/string.h +96 -0
- package/lib/clang/{17/include/llvm_libc_wrappers/string.h → 19/include/llvm_libc_wrappers/time.h} +9 -12
- package/lib/clang/19/include/lsxintrin.h +3750 -0
- package/lib/clang/19/include/mm3dnow.h +22 -0
- package/lib/clang/{17 → 19}/include/mmintrin.h +83 -89
- package/lib/clang/19/include/module.modulemap +330 -0
- package/lib/clang/{17 → 19}/include/opencl-c-base.h +9 -0
- package/lib/clang/{17 → 19}/include/opencl-c.h +15 -0
- package/lib/clang/{17 → 19}/include/openmp_wrappers/cmath +1 -1
- package/lib/clang/{17 → 19}/include/pmmintrin.h +3 -2
- package/lib/clang/19/include/ppc_wrappers/nmmintrin.h +26 -0
- package/lib/clang/{17 → 19}/include/ppc_wrappers/smmintrin.h +35 -15
- package/lib/clang/{17 → 19}/include/prfchwintrin.h +10 -8
- package/lib/clang/19/include/ptrauth.h +330 -0
- package/lib/clang/19/include/riscv_bitmanip.h +195 -0
- package/lib/clang/19/include/riscv_crypto.h +170 -0
- package/lib/clang/{17 → 19}/include/riscv_ntlh.h +3 -5
- package/lib/clang/{17 → 19}/include/riscv_vector.h +31 -4
- package/lib/clang/19/include/sifive_vector.h +118 -0
- package/lib/clang/{17 → 19}/include/smmintrin.h +15 -15
- package/lib/clang/{17 → 19}/include/stdalign.h +6 -3
- package/lib/clang/19/include/stdarg.h +75 -0
- package/lib/clang/{17 → 19}/include/stdatomic.h +14 -6
- package/lib/clang/{17 → 19}/include/stdbool.h +5 -0
- package/lib/clang/19/include/stdckdint.h +42 -0
- package/lib/clang/19/include/stddef.h +139 -0
- package/lib/clang/{17 → 19}/include/stdint.h +24 -48
- package/lib/clang/{17 → 19}/include/stdnoreturn.h +8 -2
- package/lib/clang/{17 → 19}/include/tmmintrin.h +27 -18
- package/lib/clang/19/include/usermsrintrin.h +51 -0
- package/lib/clang/{17 → 19}/include/vaesintrin.h +4 -2
- package/lib/clang/{17 → 19}/include/varargs.h +5 -1
- package/lib/clang/{17 → 19}/include/vecintrin.h +217 -199
- package/lib/clang/{17 → 19}/include/x86gprintrin.h +10 -12
- package/lib/clang/19/include/x86intrin.h +53 -0
- package/lib/clang/{17 → 19}/include/xmmintrin.h +294 -104
- package/lib/clang/19/include/yvals_core.h +25 -0
- package/lib/clang/19/include/zos_wrappers/builtins.h +18 -0
- package/package.json +6 -6
- package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +0 -642
- package/lib/clang/17/include/avx512erintrin.h +0 -271
- package/lib/clang/17/include/avx512pfintrin.h +0 -97
- package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +0 -480
- package/lib/clang/17/include/ia32intrin.h +0 -441
- package/lib/clang/17/include/mm3dnow.h +0 -157
- package/lib/clang/17/include/module.modulemap +0 -164
- package/lib/clang/17/include/sifive_vector.h +0 -16
- package/lib/clang/17/include/stdarg.h +0 -51
- package/lib/clang/17/include/stddef.h +0 -133
- package/lib/clang/17/include/x86intrin.h +0 -67
- /package/lib/clang/{17 → 19}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_cuda_complex_builtins.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_cuda_texture_intrinsics.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_hip_libdevice_declares.h +0 -0
- /package/lib/clang/{17 → 19}/include/__clang_hip_stdlib.h +0 -0
- /package/lib/clang/{17 → 19}/include/__wmmintrin_aes.h +0 -0
- /package/lib/clang/{17 → 19}/include/__wmmintrin_pclmul.h +0 -0
- /package/lib/clang/{17 → 19}/include/amxcomplexintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/amxfp16intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/amxintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/arm64intr.h +0 -0
- /package/lib/clang/{17 → 19}/include/arm_bf16.h +0 -0
- /package/lib/clang/{17 → 19}/include/arm_cde.h +0 -0
- /package/lib/clang/{17 → 19}/include/arm_cmse.h +0 -0
- /package/lib/clang/{17 → 19}/include/arm_mve.h +0 -0
- /package/lib/clang/{17 → 19}/include/arm_neon_sve_bridge.h +0 -0
- /package/lib/clang/{17 → 19}/include/armintr.h +0 -0
- /package/lib/clang/{17 → 19}/include/avxifmaintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/avxneconvertintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/avxvnniint16intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/avxvnniint8intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/avxvnniintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/cet.h +0 -0
- /package/lib/clang/{17 → 19}/include/cetintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/clwbintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/clzerointrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/cmpccxaddintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/crc32intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.h +0 -0
- /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
- /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
- /package/lib/clang/{17 → 19}/include/cuda_wrappers/cmath +0 -0
- /package/lib/clang/{17 → 19}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{17 → 19}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{17 → 19}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/f16cintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/fma4intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{17 → 19}/include/hexagon_protos.h +0 -0
- /package/lib/clang/{17 → 19}/include/hexagon_types.h +0 -0
- /package/lib/clang/{17 → 19}/include/hlsl.h +0 -0
- /package/lib/clang/{17 → 19}/include/hresetintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/htmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/hvx_hexagon_protos.h +0 -0
- /package/lib/clang/{17 → 19}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/inttypes.h +0 -0
- /package/lib/clang/{17 → 19}/include/lwpintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/mm_malloc.h +0 -0
- /package/lib/clang/{17 → 19}/include/movdirintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/msa.h +0 -0
- /package/lib/clang/{17 → 19}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/nmmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex +0 -0
- /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex.h +0 -0
- /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{17 → 19}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{17 → 19}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{17 → 19}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/pkuintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/popcntintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmi2intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmiintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/emmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/immintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/mm_malloc.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/mmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/pmmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/tmmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86gprintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ppc_wrappers/xmmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/prfchiintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/raointintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/rdpruintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/rdseedintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/rtmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/s390intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/serializeintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/sgxintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/sha512intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/shaintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/sm3intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/sm4intrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/tbmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/tgmath.h +0 -0
- /package/lib/clang/{17 → 19}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/uintrintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/unwind.h +0 -0
- /package/lib/clang/{17 → 19}/include/vadefs.h +0 -0
- /package/lib/clang/{17 → 19}/include/velintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/velintrin_approx.h +0 -0
- /package/lib/clang/{17 → 19}/include/velintrin_gen.h +0 -0
- /package/lib/clang/{17 → 19}/include/vpclmulqdqintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/wasm_simd128.h +0 -0
- /package/lib/clang/{17 → 19}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/wmmintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/xopintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{17 → 19}/include/xtestintrin.h +0 -0
|
@@ -19,18 +19,17 @@
|
|
|
19
19
|
to use it as a potentially faster version of BSF. */
|
|
20
20
|
#define __RELAXED_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
|
|
21
21
|
|
|
22
|
-
#define _tzcnt_u16(a) (__tzcnt_u16((a)))
|
|
23
|
-
|
|
24
22
|
/// Counts the number of trailing zero bits in the operand.
|
|
25
23
|
///
|
|
26
24
|
/// \headerfile <x86intrin.h>
|
|
27
25
|
///
|
|
28
|
-
/// This intrinsic corresponds to the
|
|
26
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
29
27
|
///
|
|
30
28
|
/// \param __X
|
|
31
29
|
/// An unsigned 16-bit integer whose trailing zeros are to be counted.
|
|
32
30
|
/// \returns An unsigned 16-bit integer containing the number of trailing zero
|
|
33
31
|
/// bits in the operand.
|
|
32
|
+
/// \see _tzcnt_u16
|
|
34
33
|
static __inline__ unsigned short __RELAXED_FN_ATTRS
|
|
35
34
|
__tzcnt_u16(unsigned short __X)
|
|
36
35
|
{
|
|
@@ -41,13 +40,30 @@ __tzcnt_u16(unsigned short __X)
|
|
|
41
40
|
///
|
|
42
41
|
/// \headerfile <x86intrin.h>
|
|
43
42
|
///
|
|
44
|
-
///
|
|
43
|
+
/// \code
|
|
44
|
+
/// unsigned short _tzcnt_u16(unsigned short __X);
|
|
45
|
+
/// \endcode
|
|
46
|
+
///
|
|
47
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
48
|
+
///
|
|
49
|
+
/// \param __X
|
|
50
|
+
/// An unsigned 16-bit integer whose trailing zeros are to be counted.
|
|
51
|
+
/// \returns An unsigned 16-bit integer containing the number of trailing zero
|
|
52
|
+
/// bits in the operand.
|
|
53
|
+
/// \see __tzcnt_u16
|
|
54
|
+
#define _tzcnt_u16 __tzcnt_u16
|
|
55
|
+
|
|
56
|
+
/// Counts the number of trailing zero bits in the operand.
|
|
57
|
+
///
|
|
58
|
+
/// \headerfile <x86intrin.h>
|
|
59
|
+
///
|
|
60
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
45
61
|
///
|
|
46
62
|
/// \param __X
|
|
47
63
|
/// An unsigned 32-bit integer whose trailing zeros are to be counted.
|
|
48
64
|
/// \returns An unsigned 32-bit integer containing the number of trailing zero
|
|
49
65
|
/// bits in the operand.
|
|
50
|
-
/// \see _mm_tzcnt_32
|
|
66
|
+
/// \see { _mm_tzcnt_32 _tzcnt_u32 }
|
|
51
67
|
static __inline__ unsigned int __RELAXED_FN_ATTRS
|
|
52
68
|
__tzcnt_u32(unsigned int __X)
|
|
53
69
|
{
|
|
@@ -58,20 +74,35 @@ __tzcnt_u32(unsigned int __X)
|
|
|
58
74
|
///
|
|
59
75
|
/// \headerfile <x86intrin.h>
|
|
60
76
|
///
|
|
61
|
-
/// This intrinsic corresponds to the
|
|
77
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
62
78
|
///
|
|
63
79
|
/// \param __X
|
|
64
80
|
/// An unsigned 32-bit integer whose trailing zeros are to be counted.
|
|
65
|
-
/// \returns
|
|
81
|
+
/// \returns A 32-bit integer containing the number of trailing zero bits in
|
|
66
82
|
/// the operand.
|
|
67
|
-
/// \see __tzcnt_u32
|
|
83
|
+
/// \see { __tzcnt_u32 _tzcnt_u32 }
|
|
68
84
|
static __inline__ int __RELAXED_FN_ATTRS
|
|
69
85
|
_mm_tzcnt_32(unsigned int __X)
|
|
70
86
|
{
|
|
71
87
|
return (int)__builtin_ia32_tzcnt_u32(__X);
|
|
72
88
|
}
|
|
73
89
|
|
|
74
|
-
|
|
90
|
+
/// Counts the number of trailing zero bits in the operand.
|
|
91
|
+
///
|
|
92
|
+
/// \headerfile <x86intrin.h>
|
|
93
|
+
///
|
|
94
|
+
/// \code
|
|
95
|
+
/// unsigned int _tzcnt_u32(unsigned int __X);
|
|
96
|
+
/// \endcode
|
|
97
|
+
///
|
|
98
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
99
|
+
///
|
|
100
|
+
/// \param __X
|
|
101
|
+
/// An unsigned 32-bit integer whose trailing zeros are to be counted.
|
|
102
|
+
/// \returns An unsigned 32-bit integer containing the number of trailing zero
|
|
103
|
+
/// bits in the operand.
|
|
104
|
+
/// \see { _mm_tzcnt_32 __tzcnt_u32 }
|
|
105
|
+
#define _tzcnt_u32 __tzcnt_u32
|
|
75
106
|
|
|
76
107
|
#ifdef __x86_64__
|
|
77
108
|
|
|
@@ -79,13 +110,13 @@ _mm_tzcnt_32(unsigned int __X)
|
|
|
79
110
|
///
|
|
80
111
|
/// \headerfile <x86intrin.h>
|
|
81
112
|
///
|
|
82
|
-
/// This intrinsic corresponds to the
|
|
113
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
83
114
|
///
|
|
84
115
|
/// \param __X
|
|
85
116
|
/// An unsigned 64-bit integer whose trailing zeros are to be counted.
|
|
86
117
|
/// \returns An unsigned 64-bit integer containing the number of trailing zero
|
|
87
118
|
/// bits in the operand.
|
|
88
|
-
/// \see _mm_tzcnt_64
|
|
119
|
+
/// \see { _mm_tzcnt_64 _tzcnt_u64 }
|
|
89
120
|
static __inline__ unsigned long long __RELAXED_FN_ATTRS
|
|
90
121
|
__tzcnt_u64(unsigned long long __X)
|
|
91
122
|
{
|
|
@@ -96,46 +127,51 @@ __tzcnt_u64(unsigned long long __X)
|
|
|
96
127
|
///
|
|
97
128
|
/// \headerfile <x86intrin.h>
|
|
98
129
|
///
|
|
99
|
-
/// This intrinsic corresponds to the
|
|
130
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
100
131
|
///
|
|
101
132
|
/// \param __X
|
|
102
133
|
/// An unsigned 64-bit integer whose trailing zeros are to be counted.
|
|
103
134
|
/// \returns An 64-bit integer containing the number of trailing zero bits in
|
|
104
135
|
/// the operand.
|
|
105
|
-
/// \see __tzcnt_u64
|
|
136
|
+
/// \see { __tzcnt_u64 _tzcnt_u64 }
|
|
106
137
|
static __inline__ long long __RELAXED_FN_ATTRS
|
|
107
138
|
_mm_tzcnt_64(unsigned long long __X)
|
|
108
139
|
{
|
|
109
140
|
return (long long)__builtin_ia32_tzcnt_u64(__X);
|
|
110
141
|
}
|
|
111
142
|
|
|
112
|
-
|
|
143
|
+
/// Counts the number of trailing zero bits in the operand.
|
|
144
|
+
///
|
|
145
|
+
/// \headerfile <x86intrin.h>
|
|
146
|
+
///
|
|
147
|
+
/// \code
|
|
148
|
+
/// unsigned long long _tzcnt_u64(unsigned long long __X);
|
|
149
|
+
/// \endcode
|
|
150
|
+
///
|
|
151
|
+
/// This intrinsic corresponds to the \c TZCNT instruction.
|
|
152
|
+
///
|
|
153
|
+
/// \param __X
|
|
154
|
+
/// An unsigned 64-bit integer whose trailing zeros are to be counted.
|
|
155
|
+
/// \returns An unsigned 64-bit integer containing the number of trailing zero
|
|
156
|
+
/// bits in the operand.
|
|
157
|
+
/// \see { _mm_tzcnt_64 __tzcnt_u64
|
|
158
|
+
#define _tzcnt_u64 __tzcnt_u64
|
|
113
159
|
|
|
114
160
|
#endif /* __x86_64__ */
|
|
115
161
|
|
|
116
162
|
#undef __RELAXED_FN_ATTRS
|
|
117
163
|
|
|
118
|
-
#if !
|
|
119
|
-
defined(__BMI__)
|
|
164
|
+
#if !defined(__SCE__) || __has_feature(modules) || defined(__BMI__)
|
|
120
165
|
|
|
121
166
|
/* Define the default attributes for the functions in this file. */
|
|
122
167
|
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi")))
|
|
123
168
|
|
|
124
|
-
#define _andn_u32(a, b) (__andn_u32((a), (b)))
|
|
125
|
-
|
|
126
|
-
/* _bextr_u32 != __bextr_u32 */
|
|
127
|
-
#define _blsi_u32(a) (__blsi_u32((a)))
|
|
128
|
-
|
|
129
|
-
#define _blsmsk_u32(a) (__blsmsk_u32((a)))
|
|
130
|
-
|
|
131
|
-
#define _blsr_u32(a) (__blsr_u32((a)))
|
|
132
|
-
|
|
133
169
|
/// Performs a bitwise AND of the second operand with the one's
|
|
134
170
|
/// complement of the first operand.
|
|
135
171
|
///
|
|
136
172
|
/// \headerfile <x86intrin.h>
|
|
137
173
|
///
|
|
138
|
-
/// This intrinsic corresponds to the
|
|
174
|
+
/// This intrinsic corresponds to the \c ANDN instruction.
|
|
139
175
|
///
|
|
140
176
|
/// \param __X
|
|
141
177
|
/// An unsigned integer containing one of the operands.
|
|
@@ -143,19 +179,40 @@ _mm_tzcnt_64(unsigned long long __X)
|
|
|
143
179
|
/// An unsigned integer containing one of the operands.
|
|
144
180
|
/// \returns An unsigned integer containing the bitwise AND of the second
|
|
145
181
|
/// operand with the one's complement of the first operand.
|
|
182
|
+
/// \see _andn_u32
|
|
146
183
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
147
184
|
__andn_u32(unsigned int __X, unsigned int __Y)
|
|
148
185
|
{
|
|
149
186
|
return ~__X & __Y;
|
|
150
187
|
}
|
|
151
188
|
|
|
189
|
+
/// Performs a bitwise AND of the second operand with the one's
|
|
190
|
+
/// complement of the first operand.
|
|
191
|
+
///
|
|
192
|
+
/// \headerfile <x86intrin.h>
|
|
193
|
+
///
|
|
194
|
+
/// \code
|
|
195
|
+
/// unsigned int _andn_u32(unsigned int __X, unsigned int __Y);
|
|
196
|
+
/// \endcode
|
|
197
|
+
///
|
|
198
|
+
/// This intrinsic corresponds to the \c ANDN instruction.
|
|
199
|
+
///
|
|
200
|
+
/// \param __X
|
|
201
|
+
/// An unsigned integer containing one of the operands.
|
|
202
|
+
/// \param __Y
|
|
203
|
+
/// An unsigned integer containing one of the operands.
|
|
204
|
+
/// \returns An unsigned integer containing the bitwise AND of the second
|
|
205
|
+
/// operand with the one's complement of the first operand.
|
|
206
|
+
/// \see __andn_u32
|
|
207
|
+
#define _andn_u32 __andn_u32
|
|
208
|
+
|
|
152
209
|
/* AMD-specified, double-leading-underscore version of BEXTR */
|
|
153
210
|
/// Extracts the specified bits from the first operand and returns them
|
|
154
211
|
/// in the least significant bits of the result.
|
|
155
212
|
///
|
|
156
213
|
/// \headerfile <x86intrin.h>
|
|
157
214
|
///
|
|
158
|
-
/// This intrinsic corresponds to the
|
|
215
|
+
/// This intrinsic corresponds to the \c BEXTR instruction.
|
|
159
216
|
///
|
|
160
217
|
/// \param __X
|
|
161
218
|
/// An unsigned integer whose bits are to be extracted.
|
|
@@ -178,7 +235,7 @@ __bextr_u32(unsigned int __X, unsigned int __Y)
|
|
|
178
235
|
///
|
|
179
236
|
/// \headerfile <x86intrin.h>
|
|
180
237
|
///
|
|
181
|
-
/// This intrinsic corresponds to the
|
|
238
|
+
/// This intrinsic corresponds to the \c BEXTR instruction.
|
|
182
239
|
///
|
|
183
240
|
/// \param __X
|
|
184
241
|
/// An unsigned integer whose bits are to be extracted.
|
|
@@ -203,7 +260,7 @@ _bextr_u32(unsigned int __X, unsigned int __Y, unsigned int __Z)
|
|
|
203
260
|
///
|
|
204
261
|
/// \headerfile <x86intrin.h>
|
|
205
262
|
///
|
|
206
|
-
/// This intrinsic corresponds to the
|
|
263
|
+
/// This intrinsic corresponds to the \c BEXTR instruction.
|
|
207
264
|
///
|
|
208
265
|
/// \param __X
|
|
209
266
|
/// An unsigned integer whose bits are to be extracted.
|
|
@@ -224,69 +281,117 @@ _bextr2_u32(unsigned int __X, unsigned int __Y) {
|
|
|
224
281
|
///
|
|
225
282
|
/// \headerfile <x86intrin.h>
|
|
226
283
|
///
|
|
227
|
-
/// This intrinsic corresponds to the
|
|
284
|
+
/// This intrinsic corresponds to the \c BLSI instruction.
|
|
228
285
|
///
|
|
229
286
|
/// \param __X
|
|
230
287
|
/// An unsigned integer whose bits are to be cleared.
|
|
231
288
|
/// \returns An unsigned integer containing the result of clearing the bits from
|
|
232
289
|
/// the source operand.
|
|
290
|
+
/// \see _blsi_u32
|
|
233
291
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
234
292
|
__blsi_u32(unsigned int __X)
|
|
235
293
|
{
|
|
236
294
|
return __X & -__X;
|
|
237
295
|
}
|
|
238
296
|
|
|
297
|
+
/// Clears all bits in the source except for the least significant bit
|
|
298
|
+
/// containing a value of 1 and returns the result.
|
|
299
|
+
///
|
|
300
|
+
/// \headerfile <x86intrin.h>
|
|
301
|
+
///
|
|
302
|
+
/// \code
|
|
303
|
+
/// unsigned int _blsi_u32(unsigned int __X);
|
|
304
|
+
/// \endcode
|
|
305
|
+
///
|
|
306
|
+
/// This intrinsic corresponds to the \c BLSI instruction.
|
|
307
|
+
///
|
|
308
|
+
/// \param __X
|
|
309
|
+
/// An unsigned integer whose bits are to be cleared.
|
|
310
|
+
/// \returns An unsigned integer containing the result of clearing the bits from
|
|
311
|
+
/// the source operand.
|
|
312
|
+
/// \see __blsi_u32
|
|
313
|
+
#define _blsi_u32 __blsi_u32
|
|
314
|
+
|
|
239
315
|
/// Creates a mask whose bits are set to 1, using bit 0 up to and
|
|
240
316
|
/// including the least significant bit that is set to 1 in the source
|
|
241
317
|
/// operand and returns the result.
|
|
242
318
|
///
|
|
243
319
|
/// \headerfile <x86intrin.h>
|
|
244
320
|
///
|
|
245
|
-
/// This intrinsic corresponds to the
|
|
321
|
+
/// This intrinsic corresponds to the \c BLSMSK instruction.
|
|
246
322
|
///
|
|
247
323
|
/// \param __X
|
|
248
324
|
/// An unsigned integer used to create the mask.
|
|
249
325
|
/// \returns An unsigned integer containing the newly created mask.
|
|
326
|
+
/// \see _blsmsk_u32
|
|
250
327
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
251
328
|
__blsmsk_u32(unsigned int __X)
|
|
252
329
|
{
|
|
253
330
|
return __X ^ (__X - 1);
|
|
254
331
|
}
|
|
255
332
|
|
|
333
|
+
/// Creates a mask whose bits are set to 1, using bit 0 up to and
|
|
334
|
+
/// including the least significant bit that is set to 1 in the source
|
|
335
|
+
/// operand and returns the result.
|
|
336
|
+
///
|
|
337
|
+
/// \headerfile <x86intrin.h>
|
|
338
|
+
///
|
|
339
|
+
/// \code
|
|
340
|
+
/// unsigned int _blsmsk_u32(unsigned int __X);
|
|
341
|
+
/// \endcode
|
|
342
|
+
///
|
|
343
|
+
/// This intrinsic corresponds to the \c BLSMSK instruction.
|
|
344
|
+
///
|
|
345
|
+
/// \param __X
|
|
346
|
+
/// An unsigned integer used to create the mask.
|
|
347
|
+
/// \returns An unsigned integer containing the newly created mask.
|
|
348
|
+
/// \see __blsmsk_u32
|
|
349
|
+
#define _blsmsk_u32 __blsmsk_u32
|
|
350
|
+
|
|
256
351
|
/// Clears the least significant bit that is set to 1 in the source
|
|
257
352
|
/// operand and returns the result.
|
|
258
353
|
///
|
|
259
354
|
/// \headerfile <x86intrin.h>
|
|
260
355
|
///
|
|
261
|
-
/// This intrinsic corresponds to the
|
|
356
|
+
/// This intrinsic corresponds to the \c BLSR instruction.
|
|
262
357
|
///
|
|
263
358
|
/// \param __X
|
|
264
359
|
/// An unsigned integer containing the operand to be cleared.
|
|
265
360
|
/// \returns An unsigned integer containing the result of clearing the source
|
|
266
361
|
/// operand.
|
|
362
|
+
/// \see _blsr_u32
|
|
267
363
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS
|
|
268
364
|
__blsr_u32(unsigned int __X)
|
|
269
365
|
{
|
|
270
366
|
return __X & (__X - 1);
|
|
271
367
|
}
|
|
272
368
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
369
|
+
/// Clears the least significant bit that is set to 1 in the source
|
|
370
|
+
/// operand and returns the result.
|
|
371
|
+
///
|
|
372
|
+
/// \headerfile <x86intrin.h>
|
|
373
|
+
///
|
|
374
|
+
/// \code
|
|
375
|
+
/// unsigned int _bls4_u32(unsigned int __X);
|
|
376
|
+
/// \endcode
|
|
377
|
+
///
|
|
378
|
+
/// This intrinsic corresponds to the \c BLSR instruction.
|
|
379
|
+
///
|
|
380
|
+
/// \param __X
|
|
381
|
+
/// An unsigned integer containing the operand to be cleared.
|
|
382
|
+
/// \returns An unsigned integer containing the result of clearing the source
|
|
383
|
+
/// operand.
|
|
384
|
+
/// \see __blsr_u32
|
|
385
|
+
#define _blsr_u32 __blsr_u32
|
|
281
386
|
|
|
282
|
-
#
|
|
387
|
+
#ifdef __x86_64__
|
|
283
388
|
|
|
284
389
|
/// Performs a bitwise AND of the second operand with the one's
|
|
285
390
|
/// complement of the first operand.
|
|
286
391
|
///
|
|
287
392
|
/// \headerfile <x86intrin.h>
|
|
288
393
|
///
|
|
289
|
-
/// This intrinsic corresponds to the
|
|
394
|
+
/// This intrinsic corresponds to the \c ANDN instruction.
|
|
290
395
|
///
|
|
291
396
|
/// \param __X
|
|
292
397
|
/// An unsigned 64-bit integer containing one of the operands.
|
|
@@ -294,19 +399,41 @@ __blsr_u32(unsigned int __X)
|
|
|
294
399
|
/// An unsigned 64-bit integer containing one of the operands.
|
|
295
400
|
/// \returns An unsigned 64-bit integer containing the bitwise AND of the second
|
|
296
401
|
/// operand with the one's complement of the first operand.
|
|
402
|
+
/// \see _andn_u64
|
|
297
403
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
298
404
|
__andn_u64 (unsigned long long __X, unsigned long long __Y)
|
|
299
405
|
{
|
|
300
406
|
return ~__X & __Y;
|
|
301
407
|
}
|
|
302
408
|
|
|
409
|
+
/// Performs a bitwise AND of the second operand with the one's
|
|
410
|
+
/// complement of the first operand.
|
|
411
|
+
///
|
|
412
|
+
/// \headerfile <x86intrin.h>
|
|
413
|
+
///
|
|
414
|
+
/// \code
|
|
415
|
+
/// unsigned long long _andn_u64(unsigned long long __X,
|
|
416
|
+
/// unsigned long long __Y);
|
|
417
|
+
/// \endcode
|
|
418
|
+
///
|
|
419
|
+
/// This intrinsic corresponds to the \c ANDN instruction.
|
|
420
|
+
///
|
|
421
|
+
/// \param __X
|
|
422
|
+
/// An unsigned 64-bit integer containing one of the operands.
|
|
423
|
+
/// \param __Y
|
|
424
|
+
/// An unsigned 64-bit integer containing one of the operands.
|
|
425
|
+
/// \returns An unsigned 64-bit integer containing the bitwise AND of the second
|
|
426
|
+
/// operand with the one's complement of the first operand.
|
|
427
|
+
/// \see __andn_u64
|
|
428
|
+
#define _andn_u64 __andn_u64
|
|
429
|
+
|
|
303
430
|
/* AMD-specified, double-leading-underscore version of BEXTR */
|
|
304
431
|
/// Extracts the specified bits from the first operand and returns them
|
|
305
432
|
/// in the least significant bits of the result.
|
|
306
433
|
///
|
|
307
434
|
/// \headerfile <x86intrin.h>
|
|
308
435
|
///
|
|
309
|
-
/// This intrinsic corresponds to the
|
|
436
|
+
/// This intrinsic corresponds to the \c BEXTR instruction.
|
|
310
437
|
///
|
|
311
438
|
/// \param __X
|
|
312
439
|
/// An unsigned 64-bit integer whose bits are to be extracted.
|
|
@@ -329,7 +456,7 @@ __bextr_u64(unsigned long long __X, unsigned long long __Y)
|
|
|
329
456
|
///
|
|
330
457
|
/// \headerfile <x86intrin.h>
|
|
331
458
|
///
|
|
332
|
-
/// This intrinsic corresponds to the
|
|
459
|
+
/// This intrinsic corresponds to the \c BEXTR instruction.
|
|
333
460
|
///
|
|
334
461
|
/// \param __X
|
|
335
462
|
/// An unsigned 64-bit integer whose bits are to be extracted.
|
|
@@ -354,7 +481,7 @@ _bextr_u64(unsigned long long __X, unsigned int __Y, unsigned int __Z)
|
|
|
354
481
|
///
|
|
355
482
|
/// \headerfile <x86intrin.h>
|
|
356
483
|
///
|
|
357
|
-
/// This intrinsic corresponds to the
|
|
484
|
+
/// This intrinsic corresponds to the \c BEXTR instruction.
|
|
358
485
|
///
|
|
359
486
|
/// \param __X
|
|
360
487
|
/// An unsigned 64-bit integer whose bits are to be extracted.
|
|
@@ -375,57 +502,113 @@ _bextr2_u64(unsigned long long __X, unsigned long long __Y) {
|
|
|
375
502
|
///
|
|
376
503
|
/// \headerfile <x86intrin.h>
|
|
377
504
|
///
|
|
378
|
-
/// This intrinsic corresponds to the
|
|
505
|
+
/// This intrinsic corresponds to the \c BLSI instruction.
|
|
379
506
|
///
|
|
380
507
|
/// \param __X
|
|
381
508
|
/// An unsigned 64-bit integer whose bits are to be cleared.
|
|
382
509
|
/// \returns An unsigned 64-bit integer containing the result of clearing the
|
|
383
510
|
/// bits from the source operand.
|
|
511
|
+
/// \see _blsi_u64
|
|
384
512
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
385
513
|
__blsi_u64(unsigned long long __X)
|
|
386
514
|
{
|
|
387
515
|
return __X & -__X;
|
|
388
516
|
}
|
|
389
517
|
|
|
518
|
+
/// Clears all bits in the source except for the least significant bit
|
|
519
|
+
/// containing a value of 1 and returns the result.
|
|
520
|
+
///
|
|
521
|
+
/// \headerfile <x86intrin.h>
|
|
522
|
+
///
|
|
523
|
+
/// \code
|
|
524
|
+
/// unsigned long long _blsi_u64(unsigned long long __X);
|
|
525
|
+
/// \endcode
|
|
526
|
+
///
|
|
527
|
+
/// This intrinsic corresponds to the \c BLSI instruction.
|
|
528
|
+
///
|
|
529
|
+
/// \param __X
|
|
530
|
+
/// An unsigned 64-bit integer whose bits are to be cleared.
|
|
531
|
+
/// \returns An unsigned 64-bit integer containing the result of clearing the
|
|
532
|
+
/// bits from the source operand.
|
|
533
|
+
/// \see __blsi_u64
|
|
534
|
+
#define _blsi_u64 __blsi_u64
|
|
535
|
+
|
|
390
536
|
/// Creates a mask whose bits are set to 1, using bit 0 up to and
|
|
391
537
|
/// including the least significant bit that is set to 1 in the source
|
|
392
538
|
/// operand and returns the result.
|
|
393
539
|
///
|
|
394
540
|
/// \headerfile <x86intrin.h>
|
|
395
541
|
///
|
|
396
|
-
/// This intrinsic corresponds to the
|
|
542
|
+
/// This intrinsic corresponds to the \c BLSMSK instruction.
|
|
397
543
|
///
|
|
398
544
|
/// \param __X
|
|
399
545
|
/// An unsigned 64-bit integer used to create the mask.
|
|
400
546
|
/// \returns An unsigned 64-bit integer containing the newly created mask.
|
|
547
|
+
/// \see _blsmsk_u64
|
|
401
548
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
402
549
|
__blsmsk_u64(unsigned long long __X)
|
|
403
550
|
{
|
|
404
551
|
return __X ^ (__X - 1);
|
|
405
552
|
}
|
|
406
553
|
|
|
554
|
+
/// Creates a mask whose bits are set to 1, using bit 0 up to and
|
|
555
|
+
/// including the least significant bit that is set to 1 in the source
|
|
556
|
+
/// operand and returns the result.
|
|
557
|
+
///
|
|
558
|
+
/// \headerfile <x86intrin.h>
|
|
559
|
+
///
|
|
560
|
+
/// \code
|
|
561
|
+
/// unsigned long long _blsmsk_u64(unsigned long long __X);
|
|
562
|
+
/// \endcode
|
|
563
|
+
///
|
|
564
|
+
/// This intrinsic corresponds to the \c BLSMSK instruction.
|
|
565
|
+
///
|
|
566
|
+
/// \param __X
|
|
567
|
+
/// An unsigned 64-bit integer used to create the mask.
|
|
568
|
+
/// \returns An unsigned 64-bit integer containing the newly created mask.
|
|
569
|
+
/// \see __blsmsk_u64
|
|
570
|
+
#define _blsmsk_u64 __blsmsk_u64
|
|
571
|
+
|
|
407
572
|
/// Clears the least significant bit that is set to 1 in the source
|
|
408
573
|
/// operand and returns the result.
|
|
409
574
|
///
|
|
410
575
|
/// \headerfile <x86intrin.h>
|
|
411
576
|
///
|
|
412
|
-
/// This intrinsic corresponds to the
|
|
577
|
+
/// This intrinsic corresponds to the \c BLSR instruction.
|
|
413
578
|
///
|
|
414
579
|
/// \param __X
|
|
415
580
|
/// An unsigned 64-bit integer containing the operand to be cleared.
|
|
416
581
|
/// \returns An unsigned 64-bit integer containing the result of clearing the
|
|
417
582
|
/// source operand.
|
|
583
|
+
/// \see _blsr_u64
|
|
418
584
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
419
585
|
__blsr_u64(unsigned long long __X)
|
|
420
586
|
{
|
|
421
587
|
return __X & (__X - 1);
|
|
422
588
|
}
|
|
423
589
|
|
|
590
|
+
/// Clears the least significant bit that is set to 1 in the source
|
|
591
|
+
/// operand and returns the result.
|
|
592
|
+
///
|
|
593
|
+
/// \headerfile <x86intrin.h>
|
|
594
|
+
///
|
|
595
|
+
/// \code
|
|
596
|
+
/// unsigned long long _blsr_u64(unsigned long long __X);
|
|
597
|
+
/// \endcode
|
|
598
|
+
///
|
|
599
|
+
/// This intrinsic corresponds to the \c BLSR instruction.
|
|
600
|
+
///
|
|
601
|
+
/// \param __X
|
|
602
|
+
/// An unsigned 64-bit integer containing the operand to be cleared.
|
|
603
|
+
/// \returns An unsigned 64-bit integer containing the result of clearing the
|
|
604
|
+
/// source operand.
|
|
605
|
+
/// \see __blsr_u64
|
|
606
|
+
#define _blsr_u64 __blsr_u64
|
|
607
|
+
|
|
424
608
|
#endif /* __x86_64__ */
|
|
425
609
|
|
|
426
610
|
#undef __DEFAULT_FN_ATTRS
|
|
427
611
|
|
|
428
|
-
#endif /* !
|
|
429
|
-
|| defined(__BMI__) */
|
|
612
|
+
#endif /* !defined(__SCE__) || __has_feature(modules) || defined(__BMI__) */
|
|
430
613
|
|
|
431
614
|
#endif /* __BMIINTRIN_H */
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#ifndef __CPUID_H
|
|
11
11
|
#define __CPUID_H
|
|
12
12
|
|
|
13
|
-
#if !(__x86_64__
|
|
13
|
+
#if !defined(__x86_64__) && !defined(__i386__)
|
|
14
14
|
#error this header is for x86 only
|
|
15
15
|
#endif
|
|
16
16
|
|
|
@@ -200,6 +200,9 @@
|
|
|
200
200
|
#define bit_AMXINT8 0x02000000
|
|
201
201
|
|
|
202
202
|
/* Features in %eax for leaf 7 sub-leaf 1 */
|
|
203
|
+
#define bit_SHA512 0x00000001
|
|
204
|
+
#define bit_SM3 0x00000002
|
|
205
|
+
#define bit_SM4 0x00000004
|
|
203
206
|
#define bit_RAOINT 0x00000008
|
|
204
207
|
#define bit_AVXVNNI 0x00000010
|
|
205
208
|
#define bit_AVX512BF16 0x00000020
|
|
@@ -211,7 +214,12 @@
|
|
|
211
214
|
/* Features in %edx for leaf 7 sub-leaf 1 */
|
|
212
215
|
#define bit_AVXVNNIINT8 0x00000010
|
|
213
216
|
#define bit_AVXNECONVERT 0x00000020
|
|
217
|
+
#define bit_AMXCOMPLEX 0x00000100
|
|
218
|
+
#define bit_AVXVNNIINT16 0x00000400
|
|
214
219
|
#define bit_PREFETCHI 0x00004000
|
|
220
|
+
#define bit_USERMSR 0x00008000
|
|
221
|
+
#define bit_AVX10 0x00080000
|
|
222
|
+
#define bit_APXF 0x00200000
|
|
215
223
|
|
|
216
224
|
/* Features in %eax for leaf 13 sub-leaf 1 */
|
|
217
225
|
#define bit_XSAVEOPT 0x00000001
|
|
@@ -244,8 +252,11 @@
|
|
|
244
252
|
#define bit_RDPRU 0x00000010
|
|
245
253
|
#define bit_WBNOINVD 0x00000200
|
|
246
254
|
|
|
255
|
+
/* Features in %ebx for leaf 0x24 */
|
|
256
|
+
#define bit_AVX10_256 0x00020000
|
|
257
|
+
#define bit_AVX10_512 0x00040000
|
|
247
258
|
|
|
248
|
-
#
|
|
259
|
+
#ifdef __i386__
|
|
249
260
|
#define __cpuid(__leaf, __eax, __ebx, __ecx, __edx) \
|
|
250
261
|
__asm("cpuid" : "=a"(__eax), "=b" (__ebx), "=c"(__ecx), "=d"(__edx) \
|
|
251
262
|
: "0"(__leaf))
|
|
@@ -274,7 +285,7 @@ static __inline unsigned int __get_cpuid_max (unsigned int __leaf,
|
|
|
274
285
|
unsigned int *__sig)
|
|
275
286
|
{
|
|
276
287
|
unsigned int __eax, __ebx, __ecx, __edx;
|
|
277
|
-
#
|
|
288
|
+
#ifdef __i386__
|
|
278
289
|
int __cpuid_supported;
|
|
279
290
|
|
|
280
291
|
__asm(" pushfl\n"
|
|
@@ -328,4 +339,13 @@ static __inline int __get_cpuid_count (unsigned int __leaf,
|
|
|
328
339
|
return 1;
|
|
329
340
|
}
|
|
330
341
|
|
|
342
|
+
// In some configurations, __cpuidex is defined as a builtin (primarily
|
|
343
|
+
// -fms-extensions) which will conflict with the __cpuidex definition below.
|
|
344
|
+
#if !(__has_builtin(__cpuidex))
|
|
345
|
+
static __inline void __cpuidex(int __cpu_info[4], int __leaf, int __subleaf) {
|
|
346
|
+
__cpuid_count(__leaf, __subleaf, __cpu_info[0], __cpu_info[1], __cpu_info[2],
|
|
347
|
+
__cpu_info[3]);
|
|
348
|
+
}
|
|
349
|
+
#endif
|
|
350
|
+
|
|
331
351
|
#endif /* __CPUID_H */
|
|
@@ -99,7 +99,7 @@ template <class __T>
|
|
|
99
99
|
__attribute__((enable_if(true, "")))
|
|
100
100
|
inline _CPP14_CONSTEXPR __host__ __device__ const __T &
|
|
101
101
|
min(const __T &__a, const __T &__b) {
|
|
102
|
-
return
|
|
102
|
+
return __b < __a ? __b : __a;
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
#pragma pop_macro("_CPP14_CONSTEXPR")
|