11#error "Never use <avx512vbmi2intrin.h> directly; include <immintrin.h> instead."
14#ifndef __AVX512VBMI2INTRIN_H
15#define __AVX512VBMI2INTRIN_H
18#define __DEFAULT_FN_ATTRS \
19 __attribute__((__always_inline__, __nodebug__, __target__("avx512vbmi2"), \
20 __min_vector_width__(512)))
22#if defined(__cplusplus) && (__cplusplus >= 201103L)
23#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
25#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
30 return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)
__D,
37 return (__m512i) __builtin_ia32_compresshi512_mask ((__v32hi)
__D,
44 return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)
__D,
51 return (__m512i) __builtin_ia32_compressqi512_mask ((__v64qi)
__D,
59 __builtin_ia32_compressstorehi512_mask ((__v32hi *)
__P, (__v32hi)
__D,
66 __builtin_ia32_compressstoreqi512_mask ((__v64qi *)
__P, (__v64qi)
__D,
73 return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi)
__D,
81 return (__m512i) __builtin_ia32_expandhi512_mask ((__v32hi)
__D,
89 return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi)
__D,
97 return (__m512i) __builtin_ia32_expandqi512_mask ((__v64qi)
__D,
105 return (__m512i) __builtin_ia32_expandloadhi512_mask ((
const __v32hi *)
__P,
113 return (__m512i) __builtin_ia32_expandloadhi512_mask ((
const __v32hi *)
__P,
121 return (__m512i) __builtin_ia32_expandloadqi512_mask ((
const __v64qi *)
__P,
129 return (__m512i) __builtin_ia32_expandloadqi512_mask ((
const __v64qi *)
__P,
134#define _mm512_shldi_epi64(A, B, I) \
135 ((__m512i)__builtin_ia32_vpshldq512((__v8di)(__m512i)(A), \
136 (__v8di)(__m512i)(B), (int)(I)))
138#define _mm512_mask_shldi_epi64(S, U, A, B, I) \
139 ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
140 (__v8di)_mm512_shldi_epi64((A), (B), (I)), \
141 (__v8di)(__m512i)(S)))
143#define _mm512_maskz_shldi_epi64(U, A, B, I) \
144 ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
145 (__v8di)_mm512_shldi_epi64((A), (B), (I)), \
146 (__v8di)_mm512_setzero_si512()))
148#define _mm512_shldi_epi32(A, B, I) \
149 ((__m512i)__builtin_ia32_vpshldd512((__v16si)(__m512i)(A), \
150 (__v16si)(__m512i)(B), (int)(I)))
152#define _mm512_mask_shldi_epi32(S, U, A, B, I) \
153 ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
154 (__v16si)_mm512_shldi_epi32((A), (B), (I)), \
155 (__v16si)(__m512i)(S)))
157#define _mm512_maskz_shldi_epi32(U, A, B, I) \
158 ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
159 (__v16si)_mm512_shldi_epi32((A), (B), (I)), \
160 (__v16si)_mm512_setzero_si512()))
162#define _mm512_shldi_epi16(A, B, I) \
163 ((__m512i)__builtin_ia32_vpshldw512((__v32hi)(__m512i)(A), \
164 (__v32hi)(__m512i)(B), (int)(I)))
166#define _mm512_mask_shldi_epi16(S, U, A, B, I) \
167 ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
168 (__v32hi)_mm512_shldi_epi16((A), (B), (I)), \
169 (__v32hi)(__m512i)(S)))
171#define _mm512_maskz_shldi_epi16(U, A, B, I) \
172 ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
173 (__v32hi)_mm512_shldi_epi16((A), (B), (I)), \
174 (__v32hi)_mm512_setzero_si512()))
176#define _mm512_shrdi_epi64(A, B, I) \
177 ((__m512i)__builtin_ia32_vpshrdq512((__v8di)(__m512i)(A), \
178 (__v8di)(__m512i)(B), (int)(I)))
180#define _mm512_mask_shrdi_epi64(S, U, A, B, I) \
181 ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
182 (__v8di)_mm512_shrdi_epi64((A), (B), (I)), \
183 (__v8di)(__m512i)(S)))
185#define _mm512_maskz_shrdi_epi64(U, A, B, I) \
186 ((__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
187 (__v8di)_mm512_shrdi_epi64((A), (B), (I)), \
188 (__v8di)_mm512_setzero_si512()))
190#define _mm512_shrdi_epi32(A, B, I) \
191 ((__m512i)__builtin_ia32_vpshrdd512((__v16si)(__m512i)(A), \
192 (__v16si)(__m512i)(B), (int)(I)))
194#define _mm512_mask_shrdi_epi32(S, U, A, B, I) \
195 ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
196 (__v16si)_mm512_shrdi_epi32((A), (B), (I)), \
197 (__v16si)(__m512i)(S)))
199#define _mm512_maskz_shrdi_epi32(U, A, B, I) \
200 ((__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
201 (__v16si)_mm512_shrdi_epi32((A), (B), (I)), \
202 (__v16si)_mm512_setzero_si512()))
204#define _mm512_shrdi_epi16(A, B, I) \
205 ((__m512i)__builtin_ia32_vpshrdw512((__v32hi)(__m512i)(A), \
206 (__v32hi)(__m512i)(B), (int)(I)))
208#define _mm512_mask_shrdi_epi16(S, U, A, B, I) \
209 ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
210 (__v32hi)_mm512_shrdi_epi16((A), (B), (I)), \
211 (__v32hi)(__m512i)(S)))
213#define _mm512_maskz_shrdi_epi16(U, A, B, I) \
214 ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
215 (__v32hi)_mm512_shrdi_epi16((A), (B), (I)), \
216 (__v32hi)_mm512_setzero_si512()))
221 return (__m512i)__builtin_elementwise_fshl((__v8du)__A, (__v8du)__B,
228 return (__m512i)__builtin_ia32_selectq_512(__U,
236 return (__m512i)__builtin_ia32_selectq_512(__U,
244 return (__m512i)__builtin_elementwise_fshl((__v16su)__A, (__v16su)__B,
251 return (__m512i)__builtin_ia32_selectd_512(__U,
259 return (__m512i)__builtin_ia32_selectd_512(__U,
267 return (__m512i)__builtin_elementwise_fshl((__v32hu)__A, (__v32hu)__B,
274 return (__m512i)__builtin_ia32_selectw_512(__U,
282 return (__m512i)__builtin_ia32_selectw_512(__U,
291 return (__m512i)__builtin_elementwise_fshr((__v8du)__B, (__v8du)__A,
298 return (__m512i)__builtin_ia32_selectq_512(__U,
306 return (__m512i)__builtin_ia32_selectq_512(__U,
315 return (__m512i)__builtin_elementwise_fshr((__v16su)__B, (__v16su)__A,
322 return (__m512i) __builtin_ia32_selectd_512(__U,
330 return (__m512i) __builtin_ia32_selectd_512(__U,
339 return (__m512i)__builtin_elementwise_fshr((__v32hu)__B, (__v32hu)__A,
346 return (__m512i)__builtin_ia32_selectw_512(__U,
354 return (__m512i)__builtin_ia32_selectw_512(__U,
360#undef __DEFAULT_FN_ATTRS
361#undef __DEFAULT_FN_ATTRS_CONSTEXPR
#define __DEFAULT_FN_ATTRS
unsigned long long __mmask64
#define __DEFAULT_FN_ATTRS_CONSTEXPR
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setzero_si512(void)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_expand_epi16(__mmask32 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_shldv_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_expandloadu_epi8(__mmask64 __U, void const *__P)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_shrdv_epi32(__m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_compress_epi16(__mmask32 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_expand_epi8(__m512i __S, __mmask64 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_compress_epi8(__m512i __S, __mmask64 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_shldv_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_shrdv_epi16(__m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_shldv_epi16(__m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_expandloadu_epi16(__m512i __S, __mmask32 __U, void const *__P)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_shrdv_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_compress_epi16(__m512i __S, __mmask32 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_shldv_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_expand_epi8(__mmask64 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_shrdv_epi64(__m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_shldv_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_compress_epi8(__mmask64 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_shrdv_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_expandloadu_epi8(__m512i __S, __mmask64 __U, void const *__P)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_shrdv_epi16(__mmask32 __U, __m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_expandloadu_epi16(__mmask32 __U, void const *__P)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_shrdv_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_shldv_epi64(__m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_shldv_epi16(__mmask32 __U, __m512i __A, __m512i __B, __m512i __C)
static __inline__ void __DEFAULT_FN_ATTRS _mm512_mask_compressstoreu_epi16(void *__P, __mmask32 __U, __m512i __D)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_shrdv_epi16(__m512i __A, __mmask32 __U, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_shldv_epi16(__m512i __A, __mmask32 __U, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_shldv_epi32(__m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_maskz_shrdv_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C)
static __inline__ __m512i __DEFAULT_FN_ATTRS_CONSTEXPR _mm512_mask_expand_epi16(__m512i __S, __mmask32 __U, __m512i __D)
static __inline__ void __DEFAULT_FN_ATTRS _mm512_mask_compressstoreu_epi8(void *__P, __mmask64 __U, __m512i __D)
static __inline__ void short __D
__inline unsigned int unsigned int unsigned int * __P