24 #if !defined _X86INTRIN_H_INCLUDED && !defined _IMMINTRIN_H_INCLUDED
25 # error "Never use <bmiintrin.h> directly; include <x86intrin.h> instead."
29 # error "BMI instruction set not enabled"
32 #ifndef _BMIINTRIN_H_INCLUDED
33 #define _BMIINTRIN_H_INCLUDED
35 extern __inline
unsigned short __attribute__((__gnu_inline__, __always_inline__, __artificial__))
36 __tzcnt_u16 (
unsigned short __X)
38 return __builtin_ctzs (__X);
41 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
42 __andn_u32 (
unsigned int __X,
unsigned int __Y)
47 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
48 __bextr_u32 (
unsigned int __X,
unsigned int __Y)
50 return __builtin_ia32_bextr_u32 (__X, __Y);
53 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
54 _bextr_u32 (
unsigned int __X,
unsigned int __Y,
unsigned __Z)
56 return __builtin_ia32_bextr_u32 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
59 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
60 __blsi_u32 (
unsigned int __X)
65 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
66 _blsi_u32 (
unsigned int __X)
68 return __blsi_u32 (__X);
71 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
72 __blsmsk_u32 (
unsigned int __X)
74 return __X ^ (__X - 1);
77 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
78 _blsmsk_u32 (
unsigned int __X)
80 return __blsmsk_u32 (__X);
83 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
84 __blsr_u32 (
unsigned int __X)
86 return __X & (__X - 1);
89 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
90 _blsr_u32 (
unsigned int __X)
92 return __blsr_u32 (__X);
95 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
96 __tzcnt_u32 (
unsigned int __X)
98 return __builtin_ctz (__X);
101 extern __inline
unsigned int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
102 _tzcnt_u32 (
unsigned int __X)
104 return __builtin_ctz (__X);
109 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
110 __andn_u64 (
unsigned long long __X,
unsigned long long __Y)
115 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
116 __bextr_u64 (
unsigned long long __X,
unsigned long long __Y)
118 return __builtin_ia32_bextr_u64 (__X, __Y);
121 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
122 _bextr_u64 (
unsigned long long __X,
unsigned int __Y,
unsigned int __Z)
124 return __builtin_ia32_bextr_u64 (__X, ((__Y & 0xff) | ((__Z & 0xff) << 8)));
127 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
128 __blsi_u64 (
unsigned long long __X)
133 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
134 _blsi_u64 (
unsigned long long __X)
136 return __blsi_u64 (__X);
139 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
140 __blsmsk_u64 (
unsigned long long __X)
142 return __X ^ (__X - 1);
145 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
146 _blsmsk_u64 (
unsigned long long __X)
148 return __blsmsk_u64 (__X);
151 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
152 __blsr_u64 (
unsigned long long __X)
154 return __X & (__X - 1);
157 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
158 _blsr_u64 (
unsigned long long __X)
160 return __blsr_u64 (__X);
163 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
164 __tzcnt_u64 (
unsigned long long __X)
166 return __builtin_ctzll (__X);
169 extern __inline
unsigned long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
170 _tzcnt_u64 (
unsigned long long __X)
172 return __builtin_ctzll (__X);
__inline unsigned short __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __tzcnt_u16(unsigned short __X)
Definition: bmiintrin.h:35
__inline unsigned int unsigned int __Y
Definition: bmiintrin.h:43
__inline unsigned int unsigned int unsigned __Z
Definition: bmiintrin.h:55
__inline unsigned char unsigned int __X
Definition: adxintrin.h:33