clang 23.0.0git
avx512vlvbmi2intrin.h
Go to the documentation of this file.
1/*===------------- avx512vlvbmi2intrin.h - VBMI2 intrinsics -----------------===
2 *
3 *
4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 * See https://llvm.org/LICENSE.txt for license information.
6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *
8 *===-----------------------------------------------------------------------===
9 */
10#ifndef __IMMINTRIN_H
11#error "Never use <avx512vlvbmi2intrin.h> directly; include <immintrin.h> instead."
12#endif
13
14#ifndef __AVX512VLVBMI2INTRIN_H
15#define __AVX512VLVBMI2INTRIN_H
16
17/* Define the default attributes for the functions in this file. */
18#define __DEFAULT_FN_ATTRS128 \
19 __attribute__((__always_inline__, __nodebug__, \
20 __target__("avx512vl,avx512vbmi2"), \
21 __min_vector_width__(128)))
22#define __DEFAULT_FN_ATTRS256 \
23 __attribute__((__always_inline__, __nodebug__, \
24 __target__("avx512vl,avx512vbmi2"), \
25 __min_vector_width__(256)))
26
27#if defined(__cplusplus) && (__cplusplus >= 201103L)
28#define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
29#define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
30#else
31#define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
32#define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
33#endif
34
35static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
36_mm_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D) {
37 return (__m128i) __builtin_ia32_compresshi128_mask ((__v8hi) __D,
38 (__v8hi) __S,
39 __U);
40}
41
42static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
44 return (__m128i) __builtin_ia32_compresshi128_mask ((__v8hi) __D,
45 (__v8hi) _mm_setzero_si128(),
46 __U);
47}
48
49static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
50_mm_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D) {
51 return (__m128i) __builtin_ia32_compressqi128_mask ((__v16qi) __D,
52 (__v16qi) __S,
53 __U);
54}
55
56static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
58 return (__m128i) __builtin_ia32_compressqi128_mask ((__v16qi) __D,
59 (__v16qi) _mm_setzero_si128(),
60 __U);
61}
62
63static __inline__ void __DEFAULT_FN_ATTRS128
65{
66 __builtin_ia32_compressstorehi128_mask ((__v8hi *) __P, (__v8hi) __D,
67 __U);
68}
69
70static __inline__ void __DEFAULT_FN_ATTRS128
72{
73 __builtin_ia32_compressstoreqi128_mask ((__v16qi *) __P, (__v16qi) __D,
74 __U);
75}
76
77static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
78_mm_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D)
79{
80 return (__m128i) __builtin_ia32_expandhi128_mask ((__v8hi) __D,
81 (__v8hi) __S,
82 __U);
83}
84
85static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
87{
88 return (__m128i) __builtin_ia32_expandhi128_mask ((__v8hi) __D,
89 (__v8hi) _mm_setzero_si128(),
90 __U);
91}
92
93static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
94_mm_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D)
95{
96 return (__m128i) __builtin_ia32_expandqi128_mask ((__v16qi) __D,
97 (__v16qi) __S,
98 __U);
99}
100
101static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
103{
104 return (__m128i) __builtin_ia32_expandqi128_mask ((__v16qi) __D,
105 (__v16qi) _mm_setzero_si128(),
106 __U);
107}
108
109static __inline__ __m128i __DEFAULT_FN_ATTRS128
110_mm_mask_expandloadu_epi16(__m128i __S, __mmask8 __U, void const *__P)
111{
112 return (__m128i) __builtin_ia32_expandloadhi128_mask ((const __v8hi *)__P,
113 (__v8hi) __S,
114 __U);
115}
116
117static __inline__ __m128i __DEFAULT_FN_ATTRS128
119{
120 return (__m128i) __builtin_ia32_expandloadhi128_mask ((const __v8hi *)__P,
121 (__v8hi) _mm_setzero_si128(),
122 __U);
123}
124
125static __inline__ __m128i __DEFAULT_FN_ATTRS128
126_mm_mask_expandloadu_epi8(__m128i __S, __mmask16 __U, void const *__P)
127{
128 return (__m128i) __builtin_ia32_expandloadqi128_mask ((const __v16qi *)__P,
129 (__v16qi) __S,
130 __U);
131}
132
133static __inline__ __m128i __DEFAULT_FN_ATTRS128
135{
136 return (__m128i) __builtin_ia32_expandloadqi128_mask ((const __v16qi *)__P,
137 (__v16qi) _mm_setzero_si128(),
138 __U);
139}
140
141static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
142_mm256_mask_compress_epi16(__m256i __S, __mmask16 __U, __m256i __D) {
143 return (__m256i) __builtin_ia32_compresshi256_mask ((__v16hi) __D,
144 (__v16hi) __S,
145 __U);
146}
147
148static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
150 return (__m256i) __builtin_ia32_compresshi256_mask ((__v16hi) __D,
151 (__v16hi) _mm256_setzero_si256(),
152 __U);
153}
154
155static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
156_mm256_mask_compress_epi8(__m256i __S, __mmask32 __U, __m256i __D) {
157 return (__m256i) __builtin_ia32_compressqi256_mask ((__v32qi) __D,
158 (__v32qi) __S,
159 __U);
160}
161
162static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
164 return (__m256i) __builtin_ia32_compressqi256_mask ((__v32qi) __D,
165 (__v32qi) _mm256_setzero_si256(),
166 __U);
167}
168
169static __inline__ void __DEFAULT_FN_ATTRS256
171{
172 __builtin_ia32_compressstorehi256_mask ((__v16hi *) __P, (__v16hi) __D,
173 __U);
174}
175
176static __inline__ void __DEFAULT_FN_ATTRS256
178{
179 __builtin_ia32_compressstoreqi256_mask ((__v32qi *) __P, (__v32qi) __D,
180 __U);
181}
182
183static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
184_mm256_mask_expand_epi16(__m256i __S, __mmask16 __U, __m256i __D)
185{
186 return (__m256i) __builtin_ia32_expandhi256_mask ((__v16hi) __D,
187 (__v16hi) __S,
188 __U);
189}
190
191static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
193{
194 return (__m256i) __builtin_ia32_expandhi256_mask ((__v16hi) __D,
195 (__v16hi) _mm256_setzero_si256(),
196 __U);
197}
198
199static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
200_mm256_mask_expand_epi8(__m256i __S, __mmask32 __U, __m256i __D)
201{
202 return (__m256i) __builtin_ia32_expandqi256_mask ((__v32qi) __D,
203 (__v32qi) __S,
204 __U);
205}
206
207static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
209{
210 return (__m256i) __builtin_ia32_expandqi256_mask ((__v32qi) __D,
211 (__v32qi) _mm256_setzero_si256(),
212 __U);
213}
214
215static __inline__ __m256i __DEFAULT_FN_ATTRS256
216_mm256_mask_expandloadu_epi16(__m256i __S, __mmask16 __U, void const *__P)
217{
218 return (__m256i) __builtin_ia32_expandloadhi256_mask ((const __v16hi *)__P,
219 (__v16hi) __S,
220 __U);
221}
222
223static __inline__ __m256i __DEFAULT_FN_ATTRS256
225{
226 return (__m256i) __builtin_ia32_expandloadhi256_mask ((const __v16hi *)__P,
227 (__v16hi) _mm256_setzero_si256(),
228 __U);
229}
230
231static __inline__ __m256i __DEFAULT_FN_ATTRS256
232_mm256_mask_expandloadu_epi8(__m256i __S, __mmask32 __U, void const *__P)
233{
234 return (__m256i) __builtin_ia32_expandloadqi256_mask ((const __v32qi *)__P,
235 (__v32qi) __S,
236 __U);
237}
238
239static __inline__ __m256i __DEFAULT_FN_ATTRS256
241{
242 return (__m256i) __builtin_ia32_expandloadqi256_mask ((const __v32qi *)__P,
243 (__v32qi) _mm256_setzero_si256(),
244 __U);
245}
246
247#define _mm256_shldi_epi64(A, B, I) \
248 ((__m256i)__builtin_ia32_vpshldq256((__v4di)(__m256i)(A), \
249 (__v4di)(__m256i)(B), (int)(I)))
250
251#define _mm256_mask_shldi_epi64(S, U, A, B, I) \
252 ((__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
253 (__v4di)_mm256_shldi_epi64((A), (B), (I)), \
254 (__v4di)(__m256i)(S)))
255
256#define _mm256_maskz_shldi_epi64(U, A, B, I) \
257 ((__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
258 (__v4di)_mm256_shldi_epi64((A), (B), (I)), \
259 (__v4di)_mm256_setzero_si256()))
260
261#define _mm_shldi_epi64(A, B, I) \
262 ((__m128i)__builtin_ia32_vpshldq128((__v2di)(__m128i)(A), \
263 (__v2di)(__m128i)(B), (int)(I)))
264
265#define _mm_mask_shldi_epi64(S, U, A, B, I) \
266 ((__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
267 (__v2di)_mm_shldi_epi64((A), (B), (I)), \
268 (__v2di)(__m128i)(S)))
269
270#define _mm_maskz_shldi_epi64(U, A, B, I) \
271 ((__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
272 (__v2di)_mm_shldi_epi64((A), (B), (I)), \
273 (__v2di)_mm_setzero_si128()))
274
275#define _mm256_shldi_epi32(A, B, I) \
276 ((__m256i)__builtin_ia32_vpshldd256((__v8si)(__m256i)(A), \
277 (__v8si)(__m256i)(B), (int)(I)))
278
279#define _mm256_mask_shldi_epi32(S, U, A, B, I) \
280 ((__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
281 (__v8si)_mm256_shldi_epi32((A), (B), (I)), \
282 (__v8si)(__m256i)(S)))
283
284#define _mm256_maskz_shldi_epi32(U, A, B, I) \
285 ((__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
286 (__v8si)_mm256_shldi_epi32((A), (B), (I)), \
287 (__v8si)_mm256_setzero_si256()))
288
289#define _mm_shldi_epi32(A, B, I) \
290 ((__m128i)__builtin_ia32_vpshldd128((__v4si)(__m128i)(A), \
291 (__v4si)(__m128i)(B), (int)(I)))
292
293#define _mm_mask_shldi_epi32(S, U, A, B, I) \
294 ((__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
295 (__v4si)_mm_shldi_epi32((A), (B), (I)), \
296 (__v4si)(__m128i)(S)))
297
298#define _mm_maskz_shldi_epi32(U, A, B, I) \
299 ((__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
300 (__v4si)_mm_shldi_epi32((A), (B), (I)), \
301 (__v4si)_mm_setzero_si128()))
302
303#define _mm256_shldi_epi16(A, B, I) \
304 ((__m256i)__builtin_ia32_vpshldw256((__v16hi)(__m256i)(A), \
305 (__v16hi)(__m256i)(B), (int)(I)))
306
307#define _mm256_mask_shldi_epi16(S, U, A, B, I) \
308 ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
309 (__v16hi)_mm256_shldi_epi16((A), (B), (I)), \
310 (__v16hi)(__m256i)(S)))
311
312#define _mm256_maskz_shldi_epi16(U, A, B, I) \
313 ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
314 (__v16hi)_mm256_shldi_epi16((A), (B), (I)), \
315 (__v16hi)_mm256_setzero_si256()))
316
317#define _mm_shldi_epi16(A, B, I) \
318 ((__m128i)__builtin_ia32_vpshldw128((__v8hi)(__m128i)(A), \
319 (__v8hi)(__m128i)(B), (int)(I)))
320
321#define _mm_mask_shldi_epi16(S, U, A, B, I) \
322 ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
323 (__v8hi)_mm_shldi_epi16((A), (B), (I)), \
324 (__v8hi)(__m128i)(S)))
325
326#define _mm_maskz_shldi_epi16(U, A, B, I) \
327 ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
328 (__v8hi)_mm_shldi_epi16((A), (B), (I)), \
329 (__v8hi)_mm_setzero_si128()))
330
331#define _mm256_shrdi_epi64(A, B, I) \
332 ((__m256i)__builtin_ia32_vpshrdq256((__v4di)(__m256i)(A), \
333 (__v4di)(__m256i)(B), (int)(I)))
334
335#define _mm256_mask_shrdi_epi64(S, U, A, B, I) \
336 ((__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
337 (__v4di)_mm256_shrdi_epi64((A), (B), (I)), \
338 (__v4di)(__m256i)(S)))
339
340#define _mm256_maskz_shrdi_epi64(U, A, B, I) \
341 ((__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
342 (__v4di)_mm256_shrdi_epi64((A), (B), (I)), \
343 (__v4di)_mm256_setzero_si256()))
344
345#define _mm_shrdi_epi64(A, B, I) \
346 ((__m128i)__builtin_ia32_vpshrdq128((__v2di)(__m128i)(A), \
347 (__v2di)(__m128i)(B), (int)(I)))
348
349#define _mm_mask_shrdi_epi64(S, U, A, B, I) \
350 ((__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
351 (__v2di)_mm_shrdi_epi64((A), (B), (I)), \
352 (__v2di)(__m128i)(S)))
353
354#define _mm_maskz_shrdi_epi64(U, A, B, I) \
355 ((__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
356 (__v2di)_mm_shrdi_epi64((A), (B), (I)), \
357 (__v2di)_mm_setzero_si128()))
358
359#define _mm256_shrdi_epi32(A, B, I) \
360 ((__m256i)__builtin_ia32_vpshrdd256((__v8si)(__m256i)(A), \
361 (__v8si)(__m256i)(B), (int)(I)))
362
363#define _mm256_mask_shrdi_epi32(S, U, A, B, I) \
364 ((__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
365 (__v8si)_mm256_shrdi_epi32((A), (B), (I)), \
366 (__v8si)(__m256i)(S)))
367
368#define _mm256_maskz_shrdi_epi32(U, A, B, I) \
369 ((__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
370 (__v8si)_mm256_shrdi_epi32((A), (B), (I)), \
371 (__v8si)_mm256_setzero_si256()))
372
373#define _mm_shrdi_epi32(A, B, I) \
374 ((__m128i)__builtin_ia32_vpshrdd128((__v4si)(__m128i)(A), \
375 (__v4si)(__m128i)(B), (int)(I)))
376
377#define _mm_mask_shrdi_epi32(S, U, A, B, I) \
378 ((__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
379 (__v4si)_mm_shrdi_epi32((A), (B), (I)), \
380 (__v4si)(__m128i)(S)))
381
382#define _mm_maskz_shrdi_epi32(U, A, B, I) \
383 ((__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
384 (__v4si)_mm_shrdi_epi32((A), (B), (I)), \
385 (__v4si)_mm_setzero_si128()))
386
387#define _mm256_shrdi_epi16(A, B, I) \
388 ((__m256i)__builtin_ia32_vpshrdw256((__v16hi)(__m256i)(A), \
389 (__v16hi)(__m256i)(B), (int)(I)))
390
391#define _mm256_mask_shrdi_epi16(S, U, A, B, I) \
392 ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
393 (__v16hi)_mm256_shrdi_epi16((A), (B), (I)), \
394 (__v16hi)(__m256i)(S)))
395
396#define _mm256_maskz_shrdi_epi16(U, A, B, I) \
397 ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
398 (__v16hi)_mm256_shrdi_epi16((A), (B), (I)), \
399 (__v16hi)_mm256_setzero_si256()))
400
401#define _mm_shrdi_epi16(A, B, I) \
402 ((__m128i)__builtin_ia32_vpshrdw128((__v8hi)(__m128i)(A), \
403 (__v8hi)(__m128i)(B), (int)(I)))
404
405#define _mm_mask_shrdi_epi16(S, U, A, B, I) \
406 ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
407 (__v8hi)_mm_shrdi_epi16((A), (B), (I)), \
408 (__v8hi)(__m128i)(S)))
409
410#define _mm_maskz_shrdi_epi16(U, A, B, I) \
411 ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
412 (__v8hi)_mm_shrdi_epi16((A), (B), (I)), \
413 (__v8hi)_mm_setzero_si128()))
414
415static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
416_mm256_shldv_epi64(__m256i __A, __m256i __B, __m256i __C)
417{
418 return (__m256i)__builtin_elementwise_fshl((__v4du)__A, (__v4du)__B,
419 (__v4du)__C);
420}
421
422static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
423_mm256_mask_shldv_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
424{
425 return (__m256i)__builtin_ia32_selectq_256(__U,
426 (__v4di)_mm256_shldv_epi64(__A, __B, __C),
427 (__v4di)__A);
428}
429
430static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
431_mm256_maskz_shldv_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
432{
433 return (__m256i)__builtin_ia32_selectq_256(__U,
434 (__v4di)_mm256_shldv_epi64(__A, __B, __C),
435 (__v4di)_mm256_setzero_si256());
436}
437
438static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
439_mm_shldv_epi64(__m128i __A, __m128i __B, __m128i __C)
440{
441 return (__m128i)__builtin_elementwise_fshl((__v2du)__A, (__v2du)__B,
442 (__v2du)__C);
443}
444
445static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
446_mm_mask_shldv_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
447{
448 return (__m128i)__builtin_ia32_selectq_128(__U,
449 (__v2di)_mm_shldv_epi64(__A, __B, __C),
450 (__v2di)__A);
451}
452
453static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
454_mm_maskz_shldv_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
455{
456 return (__m128i)__builtin_ia32_selectq_128(__U,
457 (__v2di)_mm_shldv_epi64(__A, __B, __C),
458 (__v2di)_mm_setzero_si128());
459}
460
461static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
462_mm256_shldv_epi32(__m256i __A, __m256i __B, __m256i __C)
463{
464 return (__m256i)__builtin_elementwise_fshl((__v8su)__A, (__v8su)__B,
465 (__v8su)__C);
466}
467
468static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
469_mm256_mask_shldv_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
470{
471 return (__m256i)__builtin_ia32_selectd_256(__U,
472 (__v8si)_mm256_shldv_epi32(__A, __B, __C),
473 (__v8si)__A);
474}
475
476static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
477_mm256_maskz_shldv_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
478{
479 return (__m256i)__builtin_ia32_selectd_256(__U,
480 (__v8si)_mm256_shldv_epi32(__A, __B, __C),
481 (__v8si)_mm256_setzero_si256());
482}
483
484static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
485_mm_shldv_epi32(__m128i __A, __m128i __B, __m128i __C)
486{
487 return (__m128i)__builtin_elementwise_fshl((__v4su)__A, (__v4su)__B,
488 (__v4su)__C);
489}
490
491static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
492_mm_mask_shldv_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
493{
494 return (__m128i)__builtin_ia32_selectd_128(__U,
495 (__v4si)_mm_shldv_epi32(__A, __B, __C),
496 (__v4si)__A);
497}
498
499static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
500_mm_maskz_shldv_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
501{
502 return (__m128i)__builtin_ia32_selectd_128(__U,
503 (__v4si)_mm_shldv_epi32(__A, __B, __C),
504 (__v4si)_mm_setzero_si128());
505}
506
507static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
508_mm256_shldv_epi16(__m256i __A, __m256i __B, __m256i __C)
509{
510 return (__m256i)__builtin_elementwise_fshl((__v16hu)__A, (__v16hu)__B,
511 (__v16hu)__C);
512}
513
514static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
515_mm256_mask_shldv_epi16(__m256i __A, __mmask16 __U, __m256i __B, __m256i __C)
516{
517 return (__m256i)__builtin_ia32_selectw_256(__U,
518 (__v16hi)_mm256_shldv_epi16(__A, __B, __C),
519 (__v16hi)__A);
520}
521
522static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
523_mm256_maskz_shldv_epi16(__mmask16 __U, __m256i __A, __m256i __B, __m256i __C)
524{
525 return (__m256i)__builtin_ia32_selectw_256(__U,
526 (__v16hi)_mm256_shldv_epi16(__A, __B, __C),
527 (__v16hi)_mm256_setzero_si256());
528}
529
530static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
531_mm_shldv_epi16(__m128i __A, __m128i __B, __m128i __C)
532{
533 return (__m128i)__builtin_elementwise_fshl((__v8hu)__A, (__v8hu)__B,
534 (__v8hu)__C);
535}
536
537static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
538_mm_mask_shldv_epi16(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
539{
540 return (__m128i)__builtin_ia32_selectw_128(__U,
541 (__v8hi)_mm_shldv_epi16(__A, __B, __C),
542 (__v8hi)__A);
543}
544
545static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
546_mm_maskz_shldv_epi16(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
547{
548 return (__m128i)__builtin_ia32_selectw_128(__U,
549 (__v8hi)_mm_shldv_epi16(__A, __B, __C),
550 (__v8hi)_mm_setzero_si128());
551}
552
553static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
554_mm256_shrdv_epi64(__m256i __A, __m256i __B, __m256i __C)
555{
556 // Ops __A and __B are swapped.
557 return (__m256i)__builtin_elementwise_fshr((__v4du)__B, (__v4du)__A,
558 (__v4du)__C);
559}
560
561static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
562_mm256_mask_shrdv_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
563{
564 return (__m256i)__builtin_ia32_selectq_256(__U,
565 (__v4di)_mm256_shrdv_epi64(__A, __B, __C),
566 (__v4di)__A);
567}
568
569static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
570_mm256_maskz_shrdv_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
571{
572 return (__m256i)__builtin_ia32_selectq_256(__U,
573 (__v4di)_mm256_shrdv_epi64(__A, __B, __C),
574 (__v4di)_mm256_setzero_si256());
575}
576
577static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
578_mm_shrdv_epi64(__m128i __A, __m128i __B, __m128i __C)
579{
580 // Ops __A and __B are swapped.
581 return (__m128i)__builtin_elementwise_fshr((__v2du)__B, (__v2du)__A,
582 (__v2du)__C);
583}
584
585static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
586_mm_mask_shrdv_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
587{
588 return (__m128i)__builtin_ia32_selectq_128(__U,
589 (__v2di)_mm_shrdv_epi64(__A, __B, __C),
590 (__v2di)__A);
591}
592
593static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
594_mm_maskz_shrdv_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
595{
596 return (__m128i)__builtin_ia32_selectq_128(__U,
597 (__v2di)_mm_shrdv_epi64(__A, __B, __C),
598 (__v2di)_mm_setzero_si128());
599}
600
601static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
602_mm256_shrdv_epi32(__m256i __A, __m256i __B, __m256i __C)
603{
604 // Ops __A and __B are swapped.
605 return (__m256i)__builtin_elementwise_fshr((__v8su)__B, (__v8su)__A,
606 (__v8su)__C);
607}
608
609static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
610_mm256_mask_shrdv_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
611{
612 return (__m256i)__builtin_ia32_selectd_256(__U,
613 (__v8si)_mm256_shrdv_epi32(__A, __B, __C),
614 (__v8si)__A);
615}
616
617static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
618_mm256_maskz_shrdv_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
619{
620 return (__m256i)__builtin_ia32_selectd_256(__U,
621 (__v8si)_mm256_shrdv_epi32(__A, __B, __C),
622 (__v8si)_mm256_setzero_si256());
623}
624
625static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
626_mm_shrdv_epi32(__m128i __A, __m128i __B, __m128i __C)
627{
628 // Ops __A and __B are swapped.
629 return (__m128i)__builtin_elementwise_fshr((__v4su)__B, (__v4su)__A,
630 (__v4su)__C);
631}
632
633static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
634_mm_mask_shrdv_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
635{
636 return (__m128i)__builtin_ia32_selectd_128(__U,
637 (__v4si)_mm_shrdv_epi32(__A, __B, __C),
638 (__v4si)__A);
639}
640
641static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
642_mm_maskz_shrdv_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
643{
644 return (__m128i)__builtin_ia32_selectd_128(__U,
645 (__v4si)_mm_shrdv_epi32(__A, __B, __C),
646 (__v4si)_mm_setzero_si128());
647}
648
649static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
650_mm256_shrdv_epi16(__m256i __A, __m256i __B, __m256i __C)
651{
652 // Ops __A and __B are swapped.
653 return (__m256i)__builtin_elementwise_fshr((__v16hu)__B, (__v16hu)__A,
654 (__v16hu)__C);
655}
656
657static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
658_mm256_mask_shrdv_epi16(__m256i __A, __mmask16 __U, __m256i __B, __m256i __C)
659{
660 return (__m256i)__builtin_ia32_selectw_256(__U,
661 (__v16hi)_mm256_shrdv_epi16(__A, __B, __C),
662 (__v16hi)__A);
663}
664
665static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
666_mm256_maskz_shrdv_epi16(__mmask16 __U, __m256i __A, __m256i __B, __m256i __C)
667{
668 return (__m256i)__builtin_ia32_selectw_256(__U,
669 (__v16hi)_mm256_shrdv_epi16(__A, __B, __C),
670 (__v16hi)_mm256_setzero_si256());
671}
672
673static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
674_mm_shrdv_epi16(__m128i __A, __m128i __B, __m128i __C)
675{
676 // Ops __A and __B are swapped.
677 return (__m128i)__builtin_elementwise_fshr((__v8hu)__B, (__v8hu)__A,
678 (__v8hu)__C);
679}
680
681static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
682_mm_mask_shrdv_epi16(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
683{
684 return (__m128i)__builtin_ia32_selectw_128(__U,
685 (__v8hi)_mm_shrdv_epi16(__A, __B, __C),
686 (__v8hi)__A);
687}
688
689static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
690_mm_maskz_shrdv_epi16(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
691{
692 return (__m128i)__builtin_ia32_selectw_128(__U,
693 (__v8hi)_mm_shrdv_epi16(__A, __B, __C),
694 (__v8hi)_mm_setzero_si128());
695}
696
697#undef __DEFAULT_FN_ATTRS128
698#undef __DEFAULT_FN_ATTRS256
699#undef __DEFAULT_FN_ATTRS128_CONSTEXPR
700#undef __DEFAULT_FN_ATTRS256_CONSTEXPR
701
702#endif
#define __DEFAULT_FN_ATTRS128
#define __DEFAULT_FN_ATTRS256
#define __DEFAULT_FN_ATTRS128_CONSTEXPR
Definition avx2intrin.h:30
#define __DEFAULT_FN_ATTRS256_CONSTEXPR
Definition avx2intrin.h:29
unsigned int __mmask32
unsigned char __mmask8
unsigned short __mmask16
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_shrdv_epi64(__m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_shrdv_epi16(__m256i __A, __mmask16 __U, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_shrdv_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_compress_epi16(__mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_shldv_epi16(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_shldv_epi32(__m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_expand_epi16(__m256i __S, __mmask16 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_expand_epi8(__mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_expand_epi16(__mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_expandloadu_epi8(__mmask16 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_shrdv_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_compress_epi16(__mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_shldv_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_shrdv_epi32(__m256i __A, __m256i __B, __m256i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_shldv_epi16(__m256i __A, __mmask16 __U, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_expandloadu_epi8(__m256i __S, __mmask32 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_shldv_epi16(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_shrdv_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_shrdv_epi16(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_expandloadu_epi8(__mmask32 __U, void const *__P)
static __inline__ void __DEFAULT_FN_ATTRS128 _mm_mask_compressstoreu_epi16(void *__P, __mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_shrdv_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_compress_epi16(__m256i __S, __mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_shrdv_epi16(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_compress_epi8(__m256i __S, __mmask32 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_shldv_epi16(__mmask16 __U, __m256i __A, __m256i __B, __m256i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_shldv_epi32(__m128i __A, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_shldv_epi64(__m128i __A, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_compress_epi8(__mmask16 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_shrdv_epi16(__mmask16 __U, __m256i __A, __m256i __B, __m256i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_shldv_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_shrdv_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_shldv_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_mask_expandloadu_epi16(__m256i __S, __mmask16 __U, void const *__P)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_shrdv_epi16(__m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_shldv_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_expand_epi8(__m256i __S, __mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_shldv_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
static __inline__ void __DEFAULT_FN_ATTRS256 _mm256_mask_compressstoreu_epi8(void *__P, __mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_shrdv_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
static __inline__ void __DEFAULT_FN_ATTRS256 _mm256_mask_compressstoreu_epi16(void *__P, __mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_expand_epi8(__mmask16 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_shrdv_epi16(__m128i __A, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_shldv_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_expand_epi16(__mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_shrdv_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
static __inline__ void __DEFAULT_FN_ATTRS128 _mm_mask_compressstoreu_epi8(void *__P, __mmask16 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_shldv_epi64(__m256i __A, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_mask_shldv_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_maskz_compress_epi8(__mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_shrdv_epi32(__m128i __A, __m128i __B, __m128i __C)
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR _mm256_shldv_epi16(__m256i __A, __m256i __B, __m256i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_maskz_shrdv_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_maskz_expandloadu_epi16(__mmask8 __U, void const *__P)
static __inline__ __m256i __DEFAULT_FN_ATTRS256 _mm256_maskz_expandloadu_epi16(__mmask16 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_shldv_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_expandloadu_epi16(__m128i __S, __mmask8 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_shrdv_epi64(__m128i __A, __m128i __B, __m128i __C)
static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_mask_expandloadu_epi8(__m128i __S, __mmask16 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_shldv_epi16(__m128i __A, __m128i __B, __m128i __C)
static __inline __m256i __DEFAULT_FN_ATTRS_CONSTEXPR _mm256_setzero_si256(void)
Constructs a 256-bit integer vector initialized to zero.
Definition avxintrin.h:4299
static __inline__ __m128i __DEFAULT_FN_ATTRS_CONSTEXPR _mm_setzero_si128(void)
Creates a 128-bit integer vector initialized to zero.
Definition emmintrin.h:3878
static __inline__ void short __D
Definition immintrin.h:342
__inline unsigned int unsigned int unsigned int * __P
Definition bmi2intrin.h:25