@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.
Files changed (203) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_complex_builtins.h +3 -3
  4. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_intrinsics.h +38 -6
  5. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +6 -0
  6. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math.h +1 -1
  7. package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +62 -7
  8. package/lib/clang/16/include/__clang_cuda_texture_intrinsics.h +742 -0
  9. package/lib/clang/{13.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
  10. package/lib/clang/{13.0.0 → 16}/include/__clang_hip_math.h +10 -13
  11. package/lib/clang/{13.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +18 -4
  12. package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
  13. package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_aes.h +1 -1
  14. package/lib/clang/{13.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
  15. package/lib/clang/{13.0.0 → 16}/include/altivec.h +691 -342
  16. package/lib/clang/{13.0.0 → 16}/include/ammintrin.h +4 -0
  17. package/lib/clang/16/include/amxfp16intrin.h +58 -0
  18. package/lib/clang/{13.0.0 → 16}/include/amxintrin.h +49 -18
  19. package/lib/clang/{13.0.0 → 16}/include/arm_acle.h +80 -73
  20. package/lib/clang/{13.0.0 → 16}/include/arm_fp16.h +90 -90
  21. package/lib/clang/{13.0.0 → 16}/include/arm_neon.h +28607 -28779
  22. package/lib/clang/16/include/arm_neon_sve_bridge.h +182 -0
  23. package/lib/clang/{13.0.0 → 16}/include/arm_sve.h +7848 -7996
  24. package/lib/clang/{13.0.0 → 16}/include/avx2intrin.h +189 -189
  25. package/lib/clang/{13.0.0 → 16}/include/avx512bf16intrin.h +21 -18
  26. package/lib/clang/{13.0.0 → 16}/include/avx512bwintrin.h +83 -83
  27. package/lib/clang/{13.0.0 → 16}/include/avx512dqintrin.h +365 -365
  28. package/lib/clang/{13.0.0 → 16}/include/avx512erintrin.h +102 -102
  29. package/lib/clang/{13.0.0 → 16}/include/avx512fintrin.h +1627 -1620
  30. package/lib/clang/16/include/avx512fp16intrin.h +3346 -0
  31. package/lib/clang/{13.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
  32. package/lib/clang/{13.0.0 → 16}/include/avx512vbmi2intrin.h +48 -48
  33. package/lib/clang/{13.0.0 → 16}/include/avx512vlbf16intrin.h +82 -41
  34. package/lib/clang/{13.0.0 → 16}/include/avx512vlbwintrin.h +454 -102
  35. package/lib/clang/{13.0.0 → 16}/include/avx512vldqintrin.h +134 -134
  36. package/lib/clang/16/include/avx512vlfp16intrin.h +2071 -0
  37. package/lib/clang/{13.0.0 → 16}/include/avx512vlintrin.h +596 -610
  38. package/lib/clang/{13.0.0 → 16}/include/avx512vlvbmi2intrin.h +96 -96
  39. package/lib/clang/{13.0.0 → 16}/include/avx512vlvnniintrin.h +24 -24
  40. package/lib/clang/16/include/avxifmaintrin.h +177 -0
  41. package/lib/clang/{13.0.0 → 16}/include/avxintrin.h +266 -224
  42. package/lib/clang/16/include/avxneconvertintrin.h +484 -0
  43. package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
  44. package/lib/clang/{13.0.0 → 16}/include/avxvnniintrin.h +16 -16
  45. package/lib/clang/{13.0.0 → 16}/include/bmiintrin.h +6 -2
  46. package/lib/clang/{13.0.0 → 16}/include/cetintrin.h +20 -4
  47. package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
  48. package/lib/clang/{13.0.0 → 16}/include/cpuid.h +14 -2
  49. package/lib/clang/16/include/crc32intrin.h +100 -0
  50. package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
  51. package/lib/clang/{13.0.0 → 16}/include/emmintrin.h +573 -779
  52. package/lib/clang/{13.0.0 → 16}/include/f16cintrin.h +4 -4
  53. package/lib/clang/{13.0.0 → 16}/include/float.h +22 -6
  54. package/lib/clang/{13.0.0 → 16}/include/gfniintrin.h +54 -53
  55. package/lib/clang/{13.0.0 → 16}/include/hexagon_protos.h +0 -11
  56. package/lib/clang/{13.0.0 → 16}/include/hexagon_types.h +0 -32
  57. package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
  58. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
  59. package/lib/clang/16/include/hlsl.h +15 -0
  60. package/lib/clang/{13.0.0 → 16}/include/hresetintrin.h +2 -2
  61. package/lib/clang/{13.0.0 → 16}/include/hvx_hexagon_protos.h +1200 -409
  62. package/lib/clang/{13.0.0 → 16}/include/ia32intrin.h +17 -17
  63. package/lib/clang/{13.0.0 → 16}/include/immintrin.h +74 -24
  64. package/lib/clang/{13.0.0 → 16}/include/intrin.h +34 -35
  65. package/lib/clang/{13.0.0 → 16}/include/keylockerintrin.h +24 -30
  66. package/lib/clang/16/include/larchintrin.h +234 -0
  67. package/lib/clang/{13.0.0 → 16}/include/limits.h +22 -1
  68. package/lib/clang/{13.0.0 → 16}/include/mm_malloc.h +3 -3
  69. package/lib/clang/{13.0.0 → 16}/include/mmintrin.h +4 -0
  70. package/lib/clang/{13.0.0 → 16}/include/nmmintrin.h +4 -0
  71. package/lib/clang/{13.0.0 → 16}/include/opencl-c-base.h +98 -11
  72. package/lib/clang/{13.0.0 → 16}/include/opencl-c.h +7252 -6208
  73. package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex +10 -1
  74. package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex.h +9 -0
  75. package/lib/clang/{13.0.0 → 16}/include/pmmintrin.h +5 -1
  76. package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
  77. package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
  78. package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
  79. package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
  80. package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
  81. package/lib/clang/{13.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -386
  82. package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
  83. package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
  84. package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
  85. package/lib/clang/{13.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
  86. package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
  87. package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
  88. package/lib/clang/16/include/prfchiintrin.h +61 -0
  89. package/lib/clang/{13.0.0 → 16}/include/prfchwintrin.h +5 -2
  90. package/lib/clang/16/include/raointintrin.h +203 -0
  91. package/lib/clang/16/include/rdpruintrin.h +57 -0
  92. package/lib/clang/{13.0.0 → 16}/include/rdseedintrin.h +3 -3
  93. package/lib/clang/16/include/riscv_vector.h +211 -0
  94. package/lib/clang/{13.0.0 → 16}/include/rtmintrin.h +1 -1
  95. package/lib/clang/{13.0.0 → 16}/include/smmintrin.h +260 -362
  96. package/lib/clang/{13.0.0 → 16}/include/stdarg.h +23 -7
  97. package/lib/clang/{13.0.0 → 16}/include/stdatomic.h +14 -1
  98. package/lib/clang/{13.0.0 → 16}/include/stdbool.h +10 -7
  99. package/lib/clang/{13.0.0 → 16}/include/stddef.h +9 -2
  100. package/lib/clang/{13.0.0 → 16}/include/stdint.h +311 -25
  101. package/lib/clang/16/include/stdnoreturn.h +29 -0
  102. package/lib/clang/{13.0.0 → 16}/include/tmmintrin.h +10 -6
  103. package/lib/clang/{13.0.0 → 16}/include/uintrintrin.h +8 -8
  104. package/lib/clang/{13.0.0 → 16}/include/unwind.h +12 -7
  105. package/lib/clang/{13.0.0 → 16}/include/vaesintrin.h +1 -1
  106. package/lib/clang/16/include/velintrin.h +71 -0
  107. package/lib/clang/16/include/velintrin_approx.h +120 -0
  108. package/lib/clang/16/include/velintrin_gen.h +1257 -0
  109. package/lib/clang/{13.0.0 → 16}/include/vpclmulqdqintrin.h +6 -6
  110. package/lib/clang/{13.0.0 → 16}/include/wasm_simd128.h +169 -26
  111. package/lib/clang/{13.0.0 → 16}/include/wmmintrin.h +4 -0
  112. package/lib/clang/16/include/x86gprintrin.h +65 -0
  113. package/lib/clang/{13.0.0 → 16}/include/x86intrin.h +4 -0
  114. package/lib/clang/{13.0.0 → 16}/include/xmmintrin.h +19 -10
  115. package/lib/clang/{13.0.0 → 16}/include/xopintrin.h +31 -31
  116. package/package.json +6 -6
  117. package/lib/clang/13.0.0/include/ppc_wrappers/emmintrin.h +0 -2324
  118. package/lib/clang/13.0.0/include/ppc_wrappers/pmmintrin.h +0 -150
  119. package/lib/clang/13.0.0/include/ppc_wrappers/smmintrin.h +0 -109
  120. package/lib/clang/13.0.0/include/ppc_wrappers/tmmintrin.h +0 -495
  121. package/lib/clang/13.0.0/include/ppc_wrappers/xmmintrin.h +0 -1843
  122. package/lib/clang/13.0.0/include/riscv_vector.h +0 -123865
  123. package/lib/clang/13.0.0/include/x86gprintrin.h +0 -23
  124. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
  125. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
  126. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
  127. /package/lib/clang/{13.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
  128. /package/lib/clang/{13.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
  129. /package/lib/clang/{13.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
  130. /package/lib/clang/{13.0.0 → 16}/include/adxintrin.h +0 -0
  131. /package/lib/clang/{13.0.0 → 16}/include/arm64intr.h +0 -0
  132. /package/lib/clang/{13.0.0 → 16}/include/arm_bf16.h +0 -0
  133. /package/lib/clang/{13.0.0 → 16}/include/arm_cde.h +0 -0
  134. /package/lib/clang/{13.0.0 → 16}/include/arm_cmse.h +0 -0
  135. /package/lib/clang/{13.0.0 → 16}/include/arm_mve.h +0 -0
  136. /package/lib/clang/{13.0.0 → 16}/include/armintr.h +0 -0
  137. /package/lib/clang/{13.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
  138. /package/lib/clang/{13.0.0 → 16}/include/avx512cdintrin.h +0 -0
  139. /package/lib/clang/{13.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
  140. /package/lib/clang/{13.0.0 → 16}/include/avx512pfintrin.h +0 -0
  141. /package/lib/clang/{13.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
  142. /package/lib/clang/{13.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
  143. /package/lib/clang/{13.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
  144. /package/lib/clang/{13.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
  145. /package/lib/clang/{13.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
  146. /package/lib/clang/{13.0.0 → 16}/include/avx512vnniintrin.h +0 -0
  147. /package/lib/clang/{13.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
  148. /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
  149. /package/lib/clang/{13.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
  150. /package/lib/clang/{13.0.0 → 16}/include/bmi2intrin.h +0 -0
  151. /package/lib/clang/{13.0.0 → 16}/include/builtins.h +0 -0
  152. /package/lib/clang/{13.0.0 → 16}/include/cet.h +0 -0
  153. /package/lib/clang/{13.0.0 → 16}/include/cldemoteintrin.h +0 -0
  154. /package/lib/clang/{13.0.0 → 16}/include/clflushoptintrin.h +0 -0
  155. /package/lib/clang/{13.0.0 → 16}/include/clwbintrin.h +0 -0
  156. /package/lib/clang/{13.0.0 → 16}/include/clzerointrin.h +0 -0
  157. /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
  158. /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/complex +0 -0
  159. /package/lib/clang/{13.0.0 → 16}/include/cuda_wrappers/new +0 -0
  160. /package/lib/clang/{13.0.0 → 16}/include/enqcmdintrin.h +0 -0
  161. /package/lib/clang/{13.0.0 → 16}/include/fma4intrin.h +0 -0
  162. /package/lib/clang/{13.0.0 → 16}/include/fmaintrin.h +0 -0
  163. /package/lib/clang/{13.0.0 → 16}/include/fxsrintrin.h +0 -0
  164. /package/lib/clang/{13.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
  165. /package/lib/clang/{13.0.0 → 16}/include/htmintrin.h +0 -0
  166. /package/lib/clang/{13.0.0 → 16}/include/htmxlintrin.h +0 -0
  167. /package/lib/clang/{13.0.0 → 16}/include/inttypes.h +0 -0
  168. /package/lib/clang/{13.0.0 → 16}/include/invpcidintrin.h +0 -0
  169. /package/lib/clang/{13.0.0 → 16}/include/iso646.h +0 -0
  170. /package/lib/clang/{13.0.0 → 16}/include/lwpintrin.h +0 -0
  171. /package/lib/clang/{13.0.0 → 16}/include/lzcntintrin.h +0 -0
  172. /package/lib/clang/{13.0.0 → 16}/include/mm3dnow.h +0 -0
  173. /package/lib/clang/{13.0.0 → 16}/include/module.modulemap +0 -0
  174. /package/lib/clang/{13.0.0 → 16}/include/movdirintrin.h +0 -0
  175. /package/lib/clang/{13.0.0 → 16}/include/msa.h +0 -0
  176. /package/lib/clang/{13.0.0 → 16}/include/mwaitxintrin.h +0 -0
  177. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  178. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
  179. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
  180. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
  181. /package/lib/clang/{13.0.0 → 16}/include/openmp_wrappers/new +0 -0
  182. /package/lib/clang/{13.0.0 → 16}/include/pconfigintrin.h +0 -0
  183. /package/lib/clang/{13.0.0 → 16}/include/pkuintrin.h +0 -0
  184. /package/lib/clang/{13.0.0 → 16}/include/popcntintrin.h +0 -0
  185. /package/lib/clang/{13.0.0 → 16}/include/ptwriteintrin.h +0 -0
  186. /package/lib/clang/{13.0.0 → 16}/include/s390intrin.h +0 -0
  187. /package/lib/clang/{13.0.0 → 16}/include/serializeintrin.h +0 -0
  188. /package/lib/clang/{13.0.0 → 16}/include/sgxintrin.h +0 -0
  189. /package/lib/clang/{13.0.0 → 16}/include/shaintrin.h +0 -0
  190. /package/lib/clang/{13.0.0 → 16}/include/stdalign.h +0 -0
  191. /package/lib/clang/{13.0.0 → 16}/include/tbmintrin.h +0 -0
  192. /package/lib/clang/{13.0.0 → 16}/include/tgmath.h +0 -0
  193. /package/lib/clang/{13.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
  194. /package/lib/clang/{13.0.0 → 16}/include/vadefs.h +0 -0
  195. /package/lib/clang/{13.0.0 → 16}/include/varargs.h +0 -0
  196. /package/lib/clang/{13.0.0 → 16}/include/vecintrin.h +0 -0
  197. /package/lib/clang/{13.0.0 → 16}/include/waitpkgintrin.h +0 -0
  198. /package/lib/clang/{13.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
  199. /package/lib/clang/{13.0.0 → 16}/include/xsavecintrin.h +0 -0
  200. /package/lib/clang/{13.0.0 → 16}/include/xsaveintrin.h +0 -0
  201. /package/lib/clang/{13.0.0 → 16}/include/xsaveoptintrin.h +0 -0
  202. /package/lib/clang/{13.0.0 → 16}/include/xsavesintrin.h +0 -0
  203. /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 __DEFAULT_FN_ATTRS_SSE42 __attribute__((__always_inline__, __nodebug__, __target__("sse4.2")))
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 __DEFAULT_FN_ATTRS_SSE42
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 __DEFAULT_FN_ATTRS_SSE42
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 __DEFAULT_FN_ATTRS_SSE42
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 __DEFAULT_FN_ATTRS_SSE42
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 __DEFAULT_FN_ATTRS_SSE42
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(__AMXTILE__) || defined(__AMXINT8__) || defined(__AMXBF16__)
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 __attribute__((__deprecated__(
153
- "use other intrinsics or C++11 atomics instead"))) _ReadBarrier(void);
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 __attribute__((__deprecated__(
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\nrep movsb\nxchg %%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 movsl"
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\nrep movsl\nxchg %%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\nrep movsw\nxchg %%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 stosl"
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__ ("mov %%cr3, %0" : "=r"(__cr3_val) : : "memory");
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