27 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__MMX__)
31 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE__)
35 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE2__)
39 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE3__)
43 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSSE3__)
47 #if !defined(_MSC_VER) || __has_feature(modules) || \
48 (defined(__SSE4_2__) || defined(__SSE4_1__))
52 #if !defined(_MSC_VER) || __has_feature(modules) || \
53 (defined(__AES__) || defined(__PCLMUL__))
57 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__CLFLUSHOPT__)
61 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX__)
65 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX2__)
72 #define _mm256_cvtps_ph(a, imm) __extension__ ({ \
73 (__m128i)__builtin_ia32_vcvtps2ph256((__v8sf)(__m256)(a), (imm)); })
75 static __inline __m256
__attribute__((__always_inline__, __nodebug__, __target__(
"f16c")))
76 _mm256_cvtph_ps(__m128i __a)
78 return (__m256)__builtin_ia32_vcvtph2ps256((__v8hi)__a);
82 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__BMI__)
86 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__BMI2__)
90 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__LZCNT__)
94 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__FMA__)
98 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512F__)
102 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512VL__)
106 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512BW__)
110 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512CD__)
114 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512DQ__)
118 #if !defined(_MSC_VER) || __has_feature(modules) || \
119 (defined(__AVX512VL__) && defined(__AVX512BW__))
123 #if !defined(_MSC_VER) || __has_feature(modules) || \
124 (defined(__AVX512VL__) && defined(__AVX512CD__))
128 #if !defined(_MSC_VER) || __has_feature(modules) || \
129 (defined(__AVX512VL__) && defined(__AVX512DQ__))
133 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512ER__)
137 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512IFMA__)
141 #if !defined(_MSC_VER) || __has_feature(modules) || \
142 (defined(__AVX512IFMA__) && defined(__AVX512VL__))
146 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512VBMI__)
150 #if !defined(_MSC_VER) || __has_feature(modules) || \
151 (defined(__AVX512VBMI__) && defined(__AVX512VL__))
155 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512PF__)
159 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__PKU__)
163 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__RDRND__)
164 static __inline__
int __attribute__((__always_inline__, __nodebug__, __target__(
"rdrnd")))
165 _rdrand16_step(
unsigned short *
__p)
167 return __builtin_ia32_rdrand16_step(__p);
170 static __inline__
int __attribute__((__always_inline__, __nodebug__, __target__(
"rdrnd")))
171 _rdrand32_step(
unsigned int *
__p)
173 return __builtin_ia32_rdrand32_step(__p);
178 _bit_scan_forward(
int __A) {
179 return __builtin_ctz(__A);
183 static __inline__
int __attribute__((__always_inline__, __nodebug__))
184 _bit_scan_reverse(
int __A) {
185 return 31 - __builtin_clz(__A);
189 static __inline__
int __attribute__((__always_inline__, __nodebug__, __target__(
"rdrnd")))
190 _rdrand64_step(
unsigned long long *
__p)
192 return __builtin_ia32_rdrand64_step(__p);
197 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__FSGSBASE__)
199 static __inline__
unsigned int __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
200 _readfsbase_u32(
void)
202 return __builtin_ia32_rdfsbase32();
205 static __inline__
unsigned long long __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
206 _readfsbase_u64(
void)
208 return __builtin_ia32_rdfsbase64();
211 static __inline__
unsigned int __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
212 _readgsbase_u32(
void)
214 return __builtin_ia32_rdgsbase32();
217 static __inline__
unsigned long long __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
218 _readgsbase_u64(
void)
220 return __builtin_ia32_rdgsbase64();
223 static __inline__
void __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
224 _writefsbase_u32(
unsigned int __V)
226 return __builtin_ia32_wrfsbase32(__V);
229 static __inline__
void __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
230 _writefsbase_u64(
unsigned long long __V)
232 return __builtin_ia32_wrfsbase64(__V);
235 static __inline__
void __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
236 _writegsbase_u32(
unsigned int __V)
238 return __builtin_ia32_wrgsbase32(__V);
241 static __inline__
void __attribute__((__always_inline__, __nodebug__, __target__(
"fsgsbase")))
242 _writegsbase_u64(
unsigned long long __V)
244 return __builtin_ia32_wrgsbase64(__V);
250 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__RTM__)
255 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SHA__)
259 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__FXSR__)
263 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVE__)
267 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVEOPT__)
271 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVEC__)
275 #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVES__)
static __inline unsigned char unsigned int unsigned int unsigned int * __p
static __inline __m256 __attribute__((__always_inline__, __nodebug__, __target__("f16c"))) _mm256_cvtph_ps(__m128i __a)