11#error "Never use <bmi2intrin.h> directly; include <immintrin.h> instead."
18#if defined(__cplusplus) && (__cplusplus >= 201103L)
19#define __DEFAULT_FN_ATTRS \
20 __attribute__((__always_inline__, __nodebug__, __target__("bmi2"))) constexpr
22#define __DEFAULT_FN_ATTRS \
23 __attribute__((__always_inline__, __nodebug__, __target__("bmi2")))
48 return __builtin_ia32_bzhi_si(__X,
__Y);
77 return __builtin_ia32_pdep_si(__X,
__Y);
106 return __builtin_ia32_pext_si(__X,
__Y);
131 unsigned long long __res = (
unsigned long long) __X *
__Y;
132 *
__P = (
unsigned int)(__res >> 32);
133 return (
unsigned int)__res;
159_bzhi_u64(
unsigned long long __X,
unsigned long long __Y) {
160 return __builtin_ia32_bzhi_di(__X,
__Y);
188_pdep_u64(
unsigned long long __X,
unsigned long long __Y) {
189 return __builtin_ia32_pdep_di(__X,
__Y);
217_pext_u64(
unsigned long long __X,
unsigned long long __Y) {
218 return __builtin_ia32_pext_di(__X,
__Y);
242_mulx_u64 (
unsigned long long __X,
unsigned long long __Y,
243 unsigned long long *
__P) {
244 unsigned __int128 __res = (
unsigned __int128) __X *
__Y;
245 *
__P = (
unsigned long long) (__res >> 64);
246 return (
unsigned long long) __res;
251#undef __DEFAULT_FN_ATTRS
static __inline__ unsigned int __DEFAULT_FN_ATTRS _pext_u32(unsigned int __X, unsigned int __Y)
Extract (gather) bits from the unsigned 32-bit integer __X into the low-order bits of the 32-bit resu...
static __inline__ unsigned int __DEFAULT_FN_ATTRS _bzhi_u32(unsigned int __X, unsigned int __Y)
Copies the unsigned 32-bit integer __X and zeroes the upper bits starting at bit number __Y.
static __inline__ unsigned int __DEFAULT_FN_ATTRS _mulx_u32(unsigned int __X, unsigned int __Y, unsigned int *__P)
Multiplies the unsigned 32-bit integers __X and __Y to form a 64-bit product.
#define __DEFAULT_FN_ATTRS
static __inline__ unsigned int __DEFAULT_FN_ATTRS _pdep_u32(unsigned int __X, unsigned int __Y)
Deposit (scatter) low-order bits from the unsigned 32-bit integer __X into the 32-bit result,...
__inline unsigned int unsigned int unsigned int * __P
__inline unsigned int unsigned int __Y