@cpp-linter/clang-tidy-darwin-x64 13.0.0 → 16.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/clang-tidy +2 -2
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_complex_builtins.h +3 -3
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_intrinsics.h +38 -6
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +6 -0
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math.h +1 -1
- package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +62 -7
- package/lib/clang/16/include/__clang_cuda_texture_intrinsics.h +742 -0
- package/lib/clang/{13.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
- package/lib/clang/{13.0.0 → 16}/include/__clang_hip_math.h +10 -13
- package/lib/clang/{13.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +18 -4
- package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
- package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_aes.h +1 -1
- package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
- package/lib/clang/{13.0.0 → 16}/include/altivec.h +691 -342
- package/lib/clang/{13.0.0 → 16}/include/ammintrin.h +4 -0
- package/lib/clang/16/include/amxfp16intrin.h +58 -0
- package/lib/clang/{13.0.0 → 16}/include/amxintrin.h +49 -18
- package/lib/clang/{13.0.0 → 16}/include/arm_acle.h +80 -73
- package/lib/clang/{13.0.0 → 16}/include/arm_fp16.h +90 -90
- package/lib/clang/{13.0.0 → 16}/include/arm_neon.h +28607 -28779
- package/lib/clang/16/include/arm_neon_sve_bridge.h +182 -0
- package/lib/clang/{13.0.0 → 16}/include/arm_sve.h +7848 -7996
- package/lib/clang/{13.0.0 → 16}/include/avx2intrin.h +189 -189
- package/lib/clang/{13.0.0 → 16}/include/avx512bf16intrin.h +21 -18
- package/lib/clang/{13.0.0 → 16}/include/avx512bwintrin.h +83 -83
- package/lib/clang/{13.0.0 → 16}/include/avx512dqintrin.h +365 -365
- package/lib/clang/{13.0.0 → 16}/include/avx512erintrin.h +102 -102
- package/lib/clang/{13.0.0 → 16}/include/avx512fintrin.h +1627 -1620
- package/lib/clang/16/include/avx512fp16intrin.h +3346 -0
- package/lib/clang/{13.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
- package/lib/clang/{13.0.0 → 16}/include/avx512vbmi2intrin.h +48 -48
- package/lib/clang/{13.0.0 → 16}/include/avx512vlbf16intrin.h +82 -41
- package/lib/clang/{13.0.0 → 16}/include/avx512vlbwintrin.h +454 -102
- package/lib/clang/{13.0.0 → 16}/include/avx512vldqintrin.h +134 -134
- package/lib/clang/16/include/avx512vlfp16intrin.h +2071 -0
- package/lib/clang/{13.0.0 → 16}/include/avx512vlintrin.h +596 -610
- package/lib/clang/{13.0.0 → 16}/include/avx512vlvbmi2intrin.h +96 -96
- package/lib/clang/{13.0.0 → 16}/include/avx512vlvnniintrin.h +24 -24
- package/lib/clang/16/include/avxifmaintrin.h +177 -0
- package/lib/clang/{13.0.0 → 16}/include/avxintrin.h +266 -224
- package/lib/clang/16/include/avxneconvertintrin.h +484 -0
- package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
- package/lib/clang/{13.0.0 → 16}/include/avxvnniintrin.h +16 -16
- package/lib/clang/{13.0.0 → 16}/include/bmiintrin.h +6 -2
- package/lib/clang/{13.0.0 → 16}/include/cetintrin.h +20 -4
- package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
- package/lib/clang/{13.0.0 → 16}/include/cpuid.h +14 -2
- package/lib/clang/16/include/crc32intrin.h +100 -0
- package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
- package/lib/clang/{13.0.0 → 16}/include/emmintrin.h +573 -779
- package/lib/clang/{13.0.0 → 16}/include/f16cintrin.h +4 -4
- package/lib/clang/{13.0.0 → 16}/include/float.h +22 -6
- package/lib/clang/{13.0.0 → 16}/include/gfniintrin.h +54 -53
- package/lib/clang/{13.0.0 → 16}/include/hexagon_protos.h +0 -11
- package/lib/clang/{13.0.0 → 16}/include/hexagon_types.h +0 -32
- package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
- package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
- package/lib/clang/16/include/hlsl.h +15 -0
- package/lib/clang/{13.0.0 → 16}/include/hresetintrin.h +2 -2
- package/lib/clang/{13.0.0 → 16}/include/hvx_hexagon_protos.h +1200 -409
- package/lib/clang/{13.0.0 → 16}/include/ia32intrin.h +17 -17
- package/lib/clang/{13.0.0 → 16}/include/immintrin.h +74 -24
- package/lib/clang/{13.0.0 → 16}/include/intrin.h +34 -35
- package/lib/clang/{13.0.0 → 16}/include/keylockerintrin.h +24 -30
- package/lib/clang/16/include/larchintrin.h +234 -0
- package/lib/clang/{13.0.0 → 16}/include/limits.h +22 -1
- package/lib/clang/{13.0.0 → 16}/include/mm_malloc.h +3 -3
- package/lib/clang/{13.0.0 → 16}/include/mmintrin.h +4 -0
- package/lib/clang/{13.0.0 → 16}/include/nmmintrin.h +4 -0
- package/lib/clang/{13.0.0 → 16}/include/opencl-c-base.h +98 -11
- package/lib/clang/{13.0.0 → 16}/include/opencl-c.h +7252 -6208
- package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex +10 -1
- package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex.h +9 -0
- package/lib/clang/{13.0.0 → 16}/include/pmmintrin.h +5 -1
- package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
- package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
- package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
- package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
- package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -386
- package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
- package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
- package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
- package/lib/clang/{13.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
- package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
- package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/lib/clang/16/include/prfchiintrin.h +61 -0
- package/lib/clang/{13.0.0 → 16}/include/prfchwintrin.h +5 -2
- package/lib/clang/16/include/raointintrin.h +203 -0
- package/lib/clang/16/include/rdpruintrin.h +57 -0
- package/lib/clang/{13.0.0 → 16}/include/rdseedintrin.h +3 -3
- package/lib/clang/16/include/riscv_vector.h +211 -0
- package/lib/clang/{13.0.0 → 16}/include/rtmintrin.h +1 -1
- package/lib/clang/{13.0.0 → 16}/include/smmintrin.h +260 -362
- package/lib/clang/{13.0.0 → 16}/include/stdarg.h +23 -7
- package/lib/clang/{13.0.0 → 16}/include/stdatomic.h +14 -1
- package/lib/clang/{13.0.0 → 16}/include/stdbool.h +10 -7
- package/lib/clang/{13.0.0 → 16}/include/stddef.h +9 -2
- package/lib/clang/{13.0.0 → 16}/include/stdint.h +311 -25
- package/lib/clang/16/include/stdnoreturn.h +29 -0
- package/lib/clang/{13.0.0 → 16}/include/tmmintrin.h +10 -6
- package/lib/clang/{13.0.0 → 16}/include/uintrintrin.h +8 -8
- package/lib/clang/{13.0.0 → 16}/include/unwind.h +12 -7
- package/lib/clang/{13.0.0 → 16}/include/vaesintrin.h +1 -1
- package/lib/clang/16/include/velintrin.h +71 -0
- package/lib/clang/16/include/velintrin_approx.h +120 -0
- package/lib/clang/16/include/velintrin_gen.h +1257 -0
- package/lib/clang/{13.0.0 → 16}/include/vpclmulqdqintrin.h +6 -6
- package/lib/clang/{13.0.0 → 16}/include/wasm_simd128.h +169 -26
- package/lib/clang/{13.0.0 → 16}/include/wmmintrin.h +4 -0
- package/lib/clang/16/include/x86gprintrin.h +65 -0
- package/lib/clang/{13.0.0 → 16}/include/x86intrin.h +4 -0
- package/lib/clang/{13.0.0 → 16}/include/xmmintrin.h +19 -10
- package/lib/clang/{13.0.0 → 16}/include/xopintrin.h +31 -31
- package/package.json +6 -6
- package/lib/clang/13.0.0/include/ppc_wrappers/emmintrin.h +0 -2324
- package/lib/clang/13.0.0/include/ppc_wrappers/pmmintrin.h +0 -150
- package/lib/clang/13.0.0/include/ppc_wrappers/smmintrin.h +0 -109
- package/lib/clang/13.0.0/include/ppc_wrappers/tmmintrin.h +0 -495
- package/lib/clang/13.0.0/include/ppc_wrappers/xmmintrin.h +0 -1843
- package/lib/clang/13.0.0/include/riscv_vector.h +0 -123865
- package/lib/clang/13.0.0/include/x86gprintrin.h +0 -23
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/adxintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm64intr.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_bf16.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_cde.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_cmse.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/arm_mve.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/armintr.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512cdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512pfintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vnniintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/bmi2intrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/builtins.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cet.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cldemoteintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/clflushoptintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/clwbintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/clzerointrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/complex +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/new +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/enqcmdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/fma4intrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/fmaintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/fxsrintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/htmintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/htmxlintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/inttypes.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/invpcidintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/iso646.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/lwpintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/lzcntintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/mm3dnow.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/module.modulemap +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/movdirintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/msa.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/mwaitxintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/new +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/pconfigintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/pkuintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/popcntintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/ptwriteintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/s390intrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/serializeintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/sgxintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/shaintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/stdalign.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/tbmintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/tgmath.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/vadefs.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/varargs.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/vecintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/waitpkgintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsavecintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsaveintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsaveoptintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xsavesintrin.h +0 -0
- /package/lib/clang/{13.0.0 → 16}/include/xtestintrin.h +0 -0
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
/* Define the default attributes for the functions in this file. */
|
|
18
18
|
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
|
|
19
|
-
#define
|
|
19
|
+
#define __DEFAULT_FN_ATTRS_CRC32 __attribute__((__always_inline__, __nodebug__, __target__("crc32")))
|
|
20
20
|
|
|
21
21
|
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
22
22
|
#define __DEFAULT_FN_ATTRS_CAST __attribute__((__always_inline__)) constexpr
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
*/
|
|
41
41
|
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
42
42
|
__bsfd(int __A) {
|
|
43
|
-
return __builtin_ctz(__A);
|
|
43
|
+
return __builtin_ctz((unsigned int)__A);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/** Find the first set bit starting from the msb. Result is undefined if
|
|
@@ -57,7 +57,7 @@ __bsfd(int __A) {
|
|
|
57
57
|
*/
|
|
58
58
|
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
59
59
|
__bsrd(int __A) {
|
|
60
|
-
return 31 - __builtin_clz(__A);
|
|
60
|
+
return 31 - __builtin_clz((unsigned int)__A);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/** Swaps the bytes in the input. Converting little endian to big endian or
|
|
@@ -73,12 +73,12 @@ __bsrd(int __A) {
|
|
|
73
73
|
*/
|
|
74
74
|
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
75
75
|
__bswapd(int __A) {
|
|
76
|
-
return __builtin_bswap32(__A);
|
|
76
|
+
return (int)__builtin_bswap32((unsigned int)__A);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
80
80
|
_bswap(int __A) {
|
|
81
|
-
return __builtin_bswap32(__A);
|
|
81
|
+
return (int)__builtin_bswap32((unsigned int)__A);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
#define _bit_scan_forward(A) __bsfd((A))
|
|
@@ -99,7 +99,7 @@ _bswap(int __A) {
|
|
|
99
99
|
*/
|
|
100
100
|
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
101
101
|
__bsfq(long long __A) {
|
|
102
|
-
return __builtin_ctzll(__A);
|
|
102
|
+
return (long long)__builtin_ctzll((unsigned long long)__A);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
/** Find the first set bit starting from the msb. Result is undefined if
|
|
@@ -116,7 +116,7 @@ __bsfq(long long __A) {
|
|
|
116
116
|
*/
|
|
117
117
|
static __inline__ int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
118
118
|
__bsrq(long long __A) {
|
|
119
|
-
return 63 - __builtin_clzll(__A);
|
|
119
|
+
return 63 - __builtin_clzll((unsigned long long)__A);
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
/** Swaps the bytes in the input. Converting little endian to big endian or
|
|
@@ -132,7 +132,7 @@ __bsrq(long long __A) {
|
|
|
132
132
|
*/
|
|
133
133
|
static __inline__ long long __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
134
134
|
__bswapq(long long __A) {
|
|
135
|
-
return __builtin_bswap64(__A);
|
|
135
|
+
return (long long)__builtin_bswap64((unsigned long long)__A);
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
#define _bswap64(A) __bswapq((A))
|
|
@@ -282,7 +282,7 @@ _castu64_f64(unsigned long long __A) {
|
|
|
282
282
|
* \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
283
283
|
* operand \a __D.
|
|
284
284
|
*/
|
|
285
|
-
static __inline__ unsigned int
|
|
285
|
+
static __inline__ unsigned int __DEFAULT_FN_ATTRS_CRC32
|
|
286
286
|
__crc32b(unsigned int __C, unsigned char __D)
|
|
287
287
|
{
|
|
288
288
|
return __builtin_ia32_crc32qi(__C, __D);
|
|
@@ -303,7 +303,7 @@ __crc32b(unsigned int __C, unsigned char __D)
|
|
|
303
303
|
* \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
304
304
|
* operand \a __D.
|
|
305
305
|
*/
|
|
306
|
-
static __inline__ unsigned int
|
|
306
|
+
static __inline__ unsigned int __DEFAULT_FN_ATTRS_CRC32
|
|
307
307
|
__crc32w(unsigned int __C, unsigned short __D)
|
|
308
308
|
{
|
|
309
309
|
return __builtin_ia32_crc32hi(__C, __D);
|
|
@@ -324,7 +324,7 @@ __crc32w(unsigned int __C, unsigned short __D)
|
|
|
324
324
|
* \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
325
325
|
* operand \a __D.
|
|
326
326
|
*/
|
|
327
|
-
static __inline__ unsigned int
|
|
327
|
+
static __inline__ unsigned int __DEFAULT_FN_ATTRS_CRC32
|
|
328
328
|
__crc32d(unsigned int __C, unsigned int __D)
|
|
329
329
|
{
|
|
330
330
|
return __builtin_ia32_crc32si(__C, __D);
|
|
@@ -346,7 +346,7 @@ __crc32d(unsigned int __C, unsigned int __D)
|
|
|
346
346
|
* \returns The result of adding operand \a __C to the CRC-32C checksum of
|
|
347
347
|
* operand \a __D.
|
|
348
348
|
*/
|
|
349
|
-
static __inline__ unsigned long long
|
|
349
|
+
static __inline__ unsigned long long __DEFAULT_FN_ATTRS_CRC32
|
|
350
350
|
__crc32q(unsigned long long __C, unsigned long long __D)
|
|
351
351
|
{
|
|
352
352
|
return __builtin_ia32_crc32di(__C, __D);
|
|
@@ -395,23 +395,23 @@ __rorw(unsigned short __X, int __C) {
|
|
|
395
395
|
|
|
396
396
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
397
397
|
__rold(unsigned int __X, int __C) {
|
|
398
|
-
return __builtin_rotateleft32(__X, __C);
|
|
398
|
+
return __builtin_rotateleft32(__X, (unsigned int)__C);
|
|
399
399
|
}
|
|
400
400
|
|
|
401
401
|
static __inline__ unsigned int __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
402
402
|
__rord(unsigned int __X, int __C) {
|
|
403
|
-
return __builtin_rotateright32(__X, __C);
|
|
403
|
+
return __builtin_rotateright32(__X, (unsigned int)__C);
|
|
404
404
|
}
|
|
405
405
|
|
|
406
406
|
#ifdef __x86_64__
|
|
407
407
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
408
408
|
__rolq(unsigned long long __X, int __C) {
|
|
409
|
-
return __builtin_rotateleft64(__X, __C);
|
|
409
|
+
return __builtin_rotateleft64(__X, (unsigned long long)__C);
|
|
410
410
|
}
|
|
411
411
|
|
|
412
412
|
static __inline__ unsigned long long __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
413
413
|
__rorq(unsigned long long __X, int __C) {
|
|
414
|
-
return __builtin_rotateright64(__X, __C);
|
|
414
|
+
return __builtin_rotateright64(__X, (unsigned long long)__C);
|
|
415
415
|
}
|
|
416
416
|
#endif /* __x86_64__ */
|
|
417
417
|
|
|
@@ -435,7 +435,7 @@ __rorq(unsigned long long __X, int __C) {
|
|
|
435
435
|
|
|
436
436
|
#undef __DEFAULT_FN_ATTRS
|
|
437
437
|
#undef __DEFAULT_FN_ATTRS_CAST
|
|
438
|
-
#undef
|
|
438
|
+
#undef __DEFAULT_FN_ATTRS_CRC32
|
|
439
439
|
#undef __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
440
440
|
|
|
441
441
|
#endif /* __IA32INTRIN_H */
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
#ifndef __IMMINTRIN_H
|
|
11
11
|
#define __IMMINTRIN_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 <x86gprintrin.h>
|
|
14
18
|
|
|
15
19
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
@@ -185,6 +189,11 @@
|
|
|
185
189
|
#include <avx512ifmavlintrin.h>
|
|
186
190
|
#endif
|
|
187
191
|
|
|
192
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
193
|
+
defined(__AVXIFMA__)
|
|
194
|
+
#include <avxifmaintrin.h>
|
|
195
|
+
#endif
|
|
196
|
+
|
|
188
197
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
189
198
|
defined(__AVX512VBMI__)
|
|
190
199
|
#include <avx512vbmiintrin.h>
|
|
@@ -210,6 +219,16 @@
|
|
|
210
219
|
#include <avx512pfintrin.h>
|
|
211
220
|
#endif
|
|
212
221
|
|
|
222
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
223
|
+
defined(__AVX512FP16__)
|
|
224
|
+
#include <avx512fp16intrin.h>
|
|
225
|
+
#endif
|
|
226
|
+
|
|
227
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
228
|
+
(defined(__AVX512VL__) && defined(__AVX512FP16__))
|
|
229
|
+
#include <avx512vlfp16intrin.h>
|
|
230
|
+
#endif
|
|
231
|
+
|
|
213
232
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
214
233
|
defined(__AVX512BF16__)
|
|
215
234
|
#include <avx512bf16intrin.h>
|
|
@@ -240,6 +259,16 @@
|
|
|
240
259
|
#include <gfniintrin.h>
|
|
241
260
|
#endif
|
|
242
261
|
|
|
262
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
263
|
+
defined(__AVXVNNIINT8__)
|
|
264
|
+
#include <avxvnniint8intrin.h>
|
|
265
|
+
#endif
|
|
266
|
+
|
|
267
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
268
|
+
defined(__AVXNECONVERT__)
|
|
269
|
+
#include <avxneconvertintrin.h>
|
|
270
|
+
#endif
|
|
271
|
+
|
|
243
272
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
244
273
|
defined(__RDPID__)
|
|
245
274
|
/// Returns the value of the IA32_TSC_AUX MSR (0xc0000103).
|
|
@@ -258,20 +287,37 @@ _rdpid_u32(void) {
|
|
|
258
287
|
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
|
259
288
|
_rdrand16_step(unsigned short *__p)
|
|
260
289
|
{
|
|
261
|
-
return __builtin_ia32_rdrand16_step(__p);
|
|
290
|
+
return (int)__builtin_ia32_rdrand16_step(__p);
|
|
262
291
|
}
|
|
263
292
|
|
|
264
293
|
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
|
265
294
|
_rdrand32_step(unsigned int *__p)
|
|
266
295
|
{
|
|
267
|
-
return __builtin_ia32_rdrand32_step(__p);
|
|
296
|
+
return (int)__builtin_ia32_rdrand32_step(__p);
|
|
268
297
|
}
|
|
269
298
|
|
|
270
299
|
#ifdef __x86_64__
|
|
271
300
|
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
|
272
301
|
_rdrand64_step(unsigned long long *__p)
|
|
273
302
|
{
|
|
274
|
-
return __builtin_ia32_rdrand64_step(__p);
|
|
303
|
+
return (int)__builtin_ia32_rdrand64_step(__p);
|
|
304
|
+
}
|
|
305
|
+
#else
|
|
306
|
+
// We need to emulate the functionality of 64-bit rdrand with 2 32-bit
|
|
307
|
+
// rdrand instructions.
|
|
308
|
+
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
|
|
309
|
+
_rdrand64_step(unsigned long long *__p)
|
|
310
|
+
{
|
|
311
|
+
unsigned int __lo, __hi;
|
|
312
|
+
unsigned int __res_lo = __builtin_ia32_rdrand32_step(&__lo);
|
|
313
|
+
unsigned int __res_hi = __builtin_ia32_rdrand32_step(&__hi);
|
|
314
|
+
if (__res_lo && __res_hi) {
|
|
315
|
+
*__p = ((unsigned long long)__hi << 32) | (unsigned long long)__lo;
|
|
316
|
+
return 1;
|
|
317
|
+
} else {
|
|
318
|
+
*__p = 0;
|
|
319
|
+
return 0;
|
|
320
|
+
}
|
|
275
321
|
}
|
|
276
322
|
#endif
|
|
277
323
|
#endif /* __RDRND__ */
|
|
@@ -342,50 +388,50 @@ _writegsbase_u64(unsigned long long __V)
|
|
|
342
388
|
static __inline__ short __attribute__((__always_inline__, __nodebug__, __target__("movbe")))
|
|
343
389
|
_loadbe_i16(void const * __P) {
|
|
344
390
|
struct __loadu_i16 {
|
|
345
|
-
short __v;
|
|
391
|
+
unsigned short __v;
|
|
346
392
|
} __attribute__((__packed__, __may_alias__));
|
|
347
|
-
return __builtin_bswap16(((const struct __loadu_i16*)__P)->__v);
|
|
393
|
+
return (short)__builtin_bswap16(((const struct __loadu_i16*)__P)->__v);
|
|
348
394
|
}
|
|
349
395
|
|
|
350
396
|
static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("movbe")))
|
|
351
397
|
_storebe_i16(void * __P, short __D) {
|
|
352
398
|
struct __storeu_i16 {
|
|
353
|
-
short __v;
|
|
399
|
+
unsigned short __v;
|
|
354
400
|
} __attribute__((__packed__, __may_alias__));
|
|
355
|
-
((struct __storeu_i16*)__P)->__v = __builtin_bswap16(__D);
|
|
401
|
+
((struct __storeu_i16*)__P)->__v = __builtin_bswap16((unsigned short)__D);
|
|
356
402
|
}
|
|
357
403
|
|
|
358
404
|
static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("movbe")))
|
|
359
405
|
_loadbe_i32(void const * __P) {
|
|
360
406
|
struct __loadu_i32 {
|
|
361
|
-
int __v;
|
|
407
|
+
unsigned int __v;
|
|
362
408
|
} __attribute__((__packed__, __may_alias__));
|
|
363
|
-
return __builtin_bswap32(((const struct __loadu_i32*)__P)->__v);
|
|
409
|
+
return (int)__builtin_bswap32(((const struct __loadu_i32*)__P)->__v);
|
|
364
410
|
}
|
|
365
411
|
|
|
366
412
|
static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("movbe")))
|
|
367
413
|
_storebe_i32(void * __P, int __D) {
|
|
368
414
|
struct __storeu_i32 {
|
|
369
|
-
int __v;
|
|
415
|
+
unsigned int __v;
|
|
370
416
|
} __attribute__((__packed__, __may_alias__));
|
|
371
|
-
((struct __storeu_i32*)__P)->__v = __builtin_bswap32(__D);
|
|
417
|
+
((struct __storeu_i32*)__P)->__v = __builtin_bswap32((unsigned int)__D);
|
|
372
418
|
}
|
|
373
419
|
|
|
374
420
|
#ifdef __x86_64__
|
|
375
421
|
static __inline__ long long __attribute__((__always_inline__, __nodebug__, __target__("movbe")))
|
|
376
422
|
_loadbe_i64(void const * __P) {
|
|
377
423
|
struct __loadu_i64 {
|
|
378
|
-
long long __v;
|
|
424
|
+
unsigned long long __v;
|
|
379
425
|
} __attribute__((__packed__, __may_alias__));
|
|
380
|
-
return __builtin_bswap64(((const struct __loadu_i64*)__P)->__v);
|
|
426
|
+
return (long long)__builtin_bswap64(((const struct __loadu_i64*)__P)->__v);
|
|
381
427
|
}
|
|
382
428
|
|
|
383
429
|
static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("movbe")))
|
|
384
430
|
_storebe_i64(void * __P, long long __D) {
|
|
385
431
|
struct __storeu_i64 {
|
|
386
|
-
long long __v;
|
|
432
|
+
unsigned long long __v;
|
|
387
433
|
} __attribute__((__packed__, __may_alias__));
|
|
388
|
-
((struct __storeu_i64*)__P)->__v = __builtin_bswap64(__D);
|
|
434
|
+
((struct __storeu_i64*)__P)->__v = __builtin_bswap64((unsigned long long)__D);
|
|
389
435
|
}
|
|
390
436
|
#endif
|
|
391
437
|
#endif /* __MOVBE */
|
|
@@ -477,6 +523,10 @@ _storebe_i64(void * __P, long long __D) {
|
|
|
477
523
|
defined(__INVPCID__)
|
|
478
524
|
#include <invpcidintrin.h>
|
|
479
525
|
#endif
|
|
526
|
+
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
527
|
+
defined(__AMX_FP16__)
|
|
528
|
+
#include <amxfp16intrin.h>
|
|
529
|
+
#endif
|
|
480
530
|
|
|
481
531
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
482
532
|
defined(__KL__) || defined(__WIDEKL__)
|
|
@@ -484,7 +534,7 @@ _storebe_i64(void * __P, long long __D) {
|
|
|
484
534
|
#endif
|
|
485
535
|
|
|
486
536
|
#if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
|
|
487
|
-
defined(
|
|
537
|
+
defined(__AMX_TILE__) || defined(__AMX_INT8__) || defined(__AMX_BF16__)
|
|
488
538
|
#include <amxintrin.h>
|
|
489
539
|
#endif
|
|
490
540
|
|
|
@@ -525,13 +575,13 @@ extern "C" {
|
|
|
525
575
|
#if defined(__i386__) || defined(__x86_64__)
|
|
526
576
|
static __inline__ long __DEFAULT_FN_ATTRS
|
|
527
577
|
_InterlockedExchange_HLEAcquire(long volatile *_Target, long _Value) {
|
|
528
|
-
__asm__ __volatile__(".byte 0xf2 ; lock ; xchg %0, %1"
|
|
578
|
+
__asm__ __volatile__(".byte 0xf2 ; lock ; xchg {%0, %1|%1, %0}"
|
|
529
579
|
: "+r" (_Value), "+m" (*_Target) :: "memory");
|
|
530
580
|
return _Value;
|
|
531
581
|
}
|
|
532
582
|
static __inline__ long __DEFAULT_FN_ATTRS
|
|
533
583
|
_InterlockedExchange_HLERelease(long volatile *_Target, long _Value) {
|
|
534
|
-
__asm__ __volatile__(".byte 0xf3 ; lock ; xchg %0, %1"
|
|
584
|
+
__asm__ __volatile__(".byte 0xf3 ; lock ; xchg {%0, %1|%1, %0}"
|
|
535
585
|
: "+r" (_Value), "+m" (*_Target) :: "memory");
|
|
536
586
|
return _Value;
|
|
537
587
|
}
|
|
@@ -539,13 +589,13 @@ _InterlockedExchange_HLERelease(long volatile *_Target, long _Value) {
|
|
|
539
589
|
#if defined(__x86_64__)
|
|
540
590
|
static __inline__ __int64 __DEFAULT_FN_ATTRS
|
|
541
591
|
_InterlockedExchange64_HLEAcquire(__int64 volatile *_Target, __int64 _Value) {
|
|
542
|
-
__asm__ __volatile__(".byte 0xf2 ; lock ; xchg %0, %1"
|
|
592
|
+
__asm__ __volatile__(".byte 0xf2 ; lock ; xchg {%0, %1|%1, %0}"
|
|
543
593
|
: "+r" (_Value), "+m" (*_Target) :: "memory");
|
|
544
594
|
return _Value;
|
|
545
595
|
}
|
|
546
596
|
static __inline__ __int64 __DEFAULT_FN_ATTRS
|
|
547
597
|
_InterlockedExchange64_HLERelease(__int64 volatile *_Target, __int64 _Value) {
|
|
548
|
-
__asm__ __volatile__(".byte 0xf3 ; lock ; xchg %0, %1"
|
|
598
|
+
__asm__ __volatile__(".byte 0xf3 ; lock ; xchg {%0, %1|%1, %0}"
|
|
549
599
|
: "+r" (_Value), "+m" (*_Target) :: "memory");
|
|
550
600
|
return _Value;
|
|
551
601
|
}
|
|
@@ -557,7 +607,7 @@ _InterlockedExchange64_HLERelease(__int64 volatile *_Target, __int64 _Value) {
|
|
|
557
607
|
static __inline__ long __DEFAULT_FN_ATTRS
|
|
558
608
|
_InterlockedCompareExchange_HLEAcquire(long volatile *_Destination,
|
|
559
609
|
long _Exchange, long _Comparand) {
|
|
560
|
-
__asm__ __volatile__(".byte 0xf2 ; lock ; cmpxchg %2, %1"
|
|
610
|
+
__asm__ __volatile__(".byte 0xf2 ; lock ; cmpxchg {%2, %1|%1, %2}"
|
|
561
611
|
: "+a" (_Comparand), "+m" (*_Destination)
|
|
562
612
|
: "r" (_Exchange) : "memory");
|
|
563
613
|
return _Comparand;
|
|
@@ -565,7 +615,7 @@ _InterlockedCompareExchange_HLEAcquire(long volatile *_Destination,
|
|
|
565
615
|
static __inline__ long __DEFAULT_FN_ATTRS
|
|
566
616
|
_InterlockedCompareExchange_HLERelease(long volatile *_Destination,
|
|
567
617
|
long _Exchange, long _Comparand) {
|
|
568
|
-
__asm__ __volatile__(".byte 0xf3 ; lock ; cmpxchg %2, %1"
|
|
618
|
+
__asm__ __volatile__(".byte 0xf3 ; lock ; cmpxchg {%2, %1|%1, %2}"
|
|
569
619
|
: "+a" (_Comparand), "+m" (*_Destination)
|
|
570
620
|
: "r" (_Exchange) : "memory");
|
|
571
621
|
return _Comparand;
|
|
@@ -575,7 +625,7 @@ _InterlockedCompareExchange_HLERelease(long volatile *_Destination,
|
|
|
575
625
|
static __inline__ __int64 __DEFAULT_FN_ATTRS
|
|
576
626
|
_InterlockedCompareExchange64_HLEAcquire(__int64 volatile *_Destination,
|
|
577
627
|
__int64 _Exchange, __int64 _Comparand) {
|
|
578
|
-
__asm__ __volatile__(".byte 0xf2 ; lock ; cmpxchg %2, %1"
|
|
628
|
+
__asm__ __volatile__(".byte 0xf2 ; lock ; cmpxchg {%2, %1|%1, %2}"
|
|
579
629
|
: "+a" (_Comparand), "+m" (*_Destination)
|
|
580
630
|
: "r" (_Exchange) : "memory");
|
|
581
631
|
return _Comparand;
|
|
@@ -583,7 +633,7 @@ _InterlockedCompareExchange64_HLEAcquire(__int64 volatile *_Destination,
|
|
|
583
633
|
static __inline__ __int64 __DEFAULT_FN_ATTRS
|
|
584
634
|
_InterlockedCompareExchange64_HLERelease(__int64 volatile *_Destination,
|
|
585
635
|
__int64 _Exchange, __int64 _Comparand) {
|
|
586
|
-
__asm__ __volatile__(".byte 0xf3 ; lock ; cmpxchg %2, %1"
|
|
636
|
+
__asm__ __volatile__(".byte 0xf3 ; lock ; cmpxchg {%2, %1|%1, %2}"
|
|
587
637
|
: "+a" (_Comparand), "+m" (*_Destination)
|
|
588
638
|
: "r" (_Exchange) : "memory");
|
|
589
639
|
return _Comparand;
|
|
@@ -97,8 +97,9 @@ unsigned long __readcr8(void);
|
|
|
97
97
|
unsigned int __readdr(unsigned int);
|
|
98
98
|
#ifdef __i386__
|
|
99
99
|
unsigned char __readfsbyte(unsigned long);
|
|
100
|
-
unsigned __int64 __readfsqword(unsigned long);
|
|
101
100
|
unsigned short __readfsword(unsigned long);
|
|
101
|
+
unsigned long __readfsdword(unsigned long);
|
|
102
|
+
unsigned __int64 __readfsqword(unsigned long);
|
|
102
103
|
#endif
|
|
103
104
|
unsigned __int64 __readmsr(unsigned long);
|
|
104
105
|
unsigned __int64 __readpmc(unsigned long);
|
|
@@ -149,10 +150,8 @@ long _InterlockedExchangeAdd_HLEAcquire(long volatile *, long);
|
|
|
149
150
|
long _InterlockedExchangeAdd_HLERelease(long volatile *, long);
|
|
150
151
|
__int64 _InterlockedExchangeAdd64_HLEAcquire(__int64 volatile *, __int64);
|
|
151
152
|
__int64 _InterlockedExchangeAdd64_HLERelease(__int64 volatile *, __int64);
|
|
152
|
-
void
|
|
153
|
-
|
|
154
|
-
void __attribute__((__deprecated__(
|
|
155
|
-
"use other intrinsics or C++11 atomics instead"))) _ReadWriteBarrier(void);
|
|
153
|
+
void _ReadBarrier(void);
|
|
154
|
+
void _ReadWriteBarrier(void);
|
|
156
155
|
unsigned int _rorx_u32(unsigned int, const unsigned int);
|
|
157
156
|
int _sarx_i32(int, unsigned int);
|
|
158
157
|
#if __STDC_HOSTED__
|
|
@@ -163,8 +162,7 @@ unsigned int _shrx_u32(unsigned int, unsigned int);
|
|
|
163
162
|
void _Store_HLERelease(long volatile *, long);
|
|
164
163
|
void _Store64_HLERelease(__int64 volatile *, __int64);
|
|
165
164
|
void _StorePointer_HLERelease(void *volatile *, void *);
|
|
166
|
-
void
|
|
167
|
-
"use other intrinsics or C++11 atomics instead"))) _WriteBarrier(void);
|
|
165
|
+
void _WriteBarrier(void);
|
|
168
166
|
unsigned __int32 xbegin(void);
|
|
169
167
|
void _xend(void);
|
|
170
168
|
|
|
@@ -457,7 +455,9 @@ static __inline__ void __DEFAULT_FN_ATTRS __movsb(unsigned char *__dst,
|
|
|
457
455
|
:
|
|
458
456
|
: "memory");
|
|
459
457
|
#else
|
|
460
|
-
__asm__ __volatile__("xchg %%esi, %1
|
|
458
|
+
__asm__ __volatile__("xchg {%%esi, %1|%1, esi}\n"
|
|
459
|
+
"rep movsb\n"
|
|
460
|
+
"xchg {%%esi, %1|%1, esi}"
|
|
461
461
|
: "+D"(__dst), "+r"(__src), "+c"(__n)
|
|
462
462
|
:
|
|
463
463
|
: "memory");
|
|
@@ -467,12 +467,14 @@ static __inline__ void __DEFAULT_FN_ATTRS __movsd(unsigned long *__dst,
|
|
|
467
467
|
unsigned long const *__src,
|
|
468
468
|
size_t __n) {
|
|
469
469
|
#if defined(__x86_64__)
|
|
470
|
-
__asm__ __volatile__("rep
|
|
470
|
+
__asm__ __volatile__("rep movs{l|d}"
|
|
471
471
|
: "+D"(__dst), "+S"(__src), "+c"(__n)
|
|
472
472
|
:
|
|
473
473
|
: "memory");
|
|
474
474
|
#else
|
|
475
|
-
__asm__ __volatile__("xchg %%esi, %1
|
|
475
|
+
__asm__ __volatile__("xchg {%%esi, %1|%1, esi}\n"
|
|
476
|
+
"rep movs{l|d}\n"
|
|
477
|
+
"xchg {%%esi, %1|%1, esi}"
|
|
476
478
|
: "+D"(__dst), "+r"(__src), "+c"(__n)
|
|
477
479
|
:
|
|
478
480
|
: "memory");
|
|
@@ -487,7 +489,9 @@ static __inline__ void __DEFAULT_FN_ATTRS __movsw(unsigned short *__dst,
|
|
|
487
489
|
:
|
|
488
490
|
: "memory");
|
|
489
491
|
#else
|
|
490
|
-
__asm__ __volatile__("xchg %%esi, %1
|
|
492
|
+
__asm__ __volatile__("xchg {%%esi, %1|%1, esi}\n"
|
|
493
|
+
"rep movsw\n"
|
|
494
|
+
"xchg {%%esi, %1|%1, esi}"
|
|
491
495
|
: "+D"(__dst), "+r"(__src), "+c"(__n)
|
|
492
496
|
:
|
|
493
497
|
: "memory");
|
|
@@ -496,7 +500,7 @@ static __inline__ void __DEFAULT_FN_ATTRS __movsw(unsigned short *__dst,
|
|
|
496
500
|
static __inline__ void __DEFAULT_FN_ATTRS __stosd(unsigned long *__dst,
|
|
497
501
|
unsigned long __x,
|
|
498
502
|
size_t __n) {
|
|
499
|
-
__asm__ __volatile__("rep
|
|
503
|
+
__asm__ __volatile__("rep stos{l|d}"
|
|
500
504
|
: "+D"(__dst), "+c"(__n)
|
|
501
505
|
: "a"(__x)
|
|
502
506
|
: "memory");
|
|
@@ -530,27 +534,6 @@ static __inline__ void __DEFAULT_FN_ATTRS __stosq(unsigned __int64 *__dst,
|
|
|
530
534
|
|* Misc
|
|
531
535
|
\*----------------------------------------------------------------------------*/
|
|
532
536
|
#if defined(__i386__) || defined(__x86_64__)
|
|
533
|
-
#if defined(__i386__)
|
|
534
|
-
#define __cpuid_count(__leaf, __count, __eax, __ebx, __ecx, __edx) \
|
|
535
|
-
__asm("cpuid" \
|
|
536
|
-
: "=a"(__eax), "=b"(__ebx), "=c"(__ecx), "=d"(__edx) \
|
|
537
|
-
: "0"(__leaf), "2"(__count))
|
|
538
|
-
#else
|
|
539
|
-
/* x86-64 uses %rbx as the base register, so preserve it. */
|
|
540
|
-
#define __cpuid_count(__leaf, __count, __eax, __ebx, __ecx, __edx) \
|
|
541
|
-
__asm("xchgq %%rbx,%q1\n" \
|
|
542
|
-
"cpuid\n" \
|
|
543
|
-
"xchgq %%rbx,%q1" \
|
|
544
|
-
: "=a"(__eax), "=r"(__ebx), "=c"(__ecx), "=d"(__edx) \
|
|
545
|
-
: "0"(__leaf), "2"(__count))
|
|
546
|
-
#endif
|
|
547
|
-
static __inline__ void __DEFAULT_FN_ATTRS __cpuid(int __info[4], int __level) {
|
|
548
|
-
__cpuid_count(__level, 0, __info[0], __info[1], __info[2], __info[3]);
|
|
549
|
-
}
|
|
550
|
-
static __inline__ void __DEFAULT_FN_ATTRS __cpuidex(int __info[4], int __level,
|
|
551
|
-
int __ecx) {
|
|
552
|
-
__cpuid_count(__level, __ecx, __info[0], __info[1], __info[2], __info[3]);
|
|
553
|
-
}
|
|
554
537
|
static __inline__ void __DEFAULT_FN_ATTRS __halt(void) {
|
|
555
538
|
__asm__ volatile("hlt");
|
|
556
539
|
}
|
|
@@ -577,6 +560,18 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64 val);
|
|
|
577
560
|
|
|
578
561
|
__int64 __mulh(__int64 __a, __int64 __b);
|
|
579
562
|
unsigned __int64 __umulh(unsigned __int64 __a, unsigned __int64 __b);
|
|
563
|
+
|
|
564
|
+
void __break(int);
|
|
565
|
+
|
|
566
|
+
void __writex18byte(unsigned long offset, unsigned char data);
|
|
567
|
+
void __writex18word(unsigned long offset, unsigned short data);
|
|
568
|
+
void __writex18dword(unsigned long offset, unsigned long data);
|
|
569
|
+
void __writex18qword(unsigned long offset, unsigned __int64 data);
|
|
570
|
+
|
|
571
|
+
unsigned char __readx18byte(unsigned long offset);
|
|
572
|
+
unsigned short __readx18word(unsigned long offset);
|
|
573
|
+
unsigned long __readx18dword(unsigned long offset);
|
|
574
|
+
unsigned __int64 __readx18qword(unsigned long offset);
|
|
580
575
|
#endif
|
|
581
576
|
|
|
582
577
|
/*----------------------------------------------------------------------------*\
|
|
@@ -600,13 +595,17 @@ __readmsr(unsigned long __register) {
|
|
|
600
595
|
|
|
601
596
|
static __inline__ unsigned __LPTRINT_TYPE__ __DEFAULT_FN_ATTRS __readcr3(void) {
|
|
602
597
|
unsigned __LPTRINT_TYPE__ __cr3_val;
|
|
603
|
-
__asm__ __volatile__
|
|
598
|
+
__asm__ __volatile__(
|
|
599
|
+
"mov {%%cr3, %0|%0, cr3}"
|
|
600
|
+
: "=r"(__cr3_val)
|
|
601
|
+
:
|
|
602
|
+
: "memory");
|
|
604
603
|
return __cr3_val;
|
|
605
604
|
}
|
|
606
605
|
|
|
607
606
|
static __inline__ void __DEFAULT_FN_ATTRS
|
|
608
607
|
__writecr3(unsigned __INTPTR_TYPE__ __cr3_val) {
|
|
609
|
-
__asm__ ("mov %0, %%cr3" : : "r"(__cr3_val) : "memory");
|
|
608
|
+
__asm__ ("mov {%0, %%cr3|cr3, %0}" : : "r"(__cr3_val) : "memory");
|
|
610
609
|
}
|
|
611
610
|
|
|
612
611
|
#ifdef __cplusplus
|