11#error "Never use <bmi2intrin.h> directly; include <immintrin.h> instead."
18#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi2")))
43 return __builtin_ia32_bzhi_si(__X,
__Y);
73 return __builtin_ia32_pdep_si(__X,
__Y);
103 return __builtin_ia32_pext_si(__X,
__Y);
129 unsigned long long __res = (
unsigned long long) __X *
__Y;
130 *
__P = (
unsigned int)(__res >> 32);
131 return (
unsigned int)__res;
157_bzhi_u64(
unsigned long long __X,
unsigned long long __Y)
159 return __builtin_ia32_bzhi_di(__X,
__Y);
187_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)
219 return __builtin_ia32_pext_di(__X,
__Y);
243_mulx_u64 (
unsigned long long __X,
unsigned long long __Y,
244 unsigned long long *
__P)
246 unsigned __int128 __res = (
unsigned __int128) __X *
__Y;
247 *
__P = (
unsigned long long) (__res >> 64);
248 return (
unsigned long long) __res;
253#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