clang  7.0.0svn
avx512vlvbmi2intrin.h
Go to the documentation of this file.
1 /*===------------- avx512vlvbmi2intrin.h - VBMI2 intrinsics -----------------===
2  *
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20  * THE SOFTWARE.
21  *
22  *===-----------------------------------------------------------------------===
23  */
24 #ifndef __IMMINTRIN_H
25 #error "Never use <avx512vlvbmi2intrin.h> directly; include <immintrin.h> instead."
26 #endif
27 
28 #ifndef __AVX512VLVBMI2INTRIN_H
29 #define __AVX512VLVBMI2INTRIN_H
30 
31 /* Define the default attributes for the functions in this file. */
32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vbmi2")))
33 
34 static __inline __m128i __DEFAULT_FN_ATTRS
36  return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 };
37 }
38 
39 static __inline__ __m128i __DEFAULT_FN_ATTRS
40 _mm128_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D)
41 {
42  return (__m128i) __builtin_ia32_compresshi128_mask ((__v8hi) __D,
43  (__v8hi) __S,
44  __U);
45 }
46 
47 static __inline__ __m128i __DEFAULT_FN_ATTRS
49 {
50  return (__m128i) __builtin_ia32_compresshi128_mask ((__v8hi) __D,
51  (__v8hi) _mm128_setzero_hi(),
52  __U);
53 }
54 
55 static __inline__ __m128i __DEFAULT_FN_ATTRS
56 _mm128_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D)
57 {
58  return (__m128i) __builtin_ia32_compressqi128_mask ((__v16qi) __D,
59  (__v16qi) __S,
60  __U);
61 }
62 
63 static __inline__ __m128i __DEFAULT_FN_ATTRS
65 {
66  return (__m128i) __builtin_ia32_compressqi128_mask ((__v16qi) __D,
67  (__v16qi) _mm128_setzero_hi(),
68  __U);
69 }
70 
71 static __inline__ void __DEFAULT_FN_ATTRS
72 _mm128_mask_compressstoreu_epi16(void *__P, __mmask8 __U, __m128i __D)
73 {
74  __builtin_ia32_compressstorehi128_mask ((__v8hi *) __P, (__v8hi) __D,
75  __U);
76 }
77 
78 static __inline__ void __DEFAULT_FN_ATTRS
79 _mm128_mask_compressstoreu_epi8(void *__P, __mmask16 __U, __m128i __D)
80 {
81  __builtin_ia32_compressstoreqi128_mask ((__v16qi *) __P, (__v16qi) __D,
82  __U);
83 }
84 
85 static __inline__ __m128i __DEFAULT_FN_ATTRS
86 _mm128_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D)
87 {
88  return (__m128i) __builtin_ia32_expandhi128_mask ((__v8hi) __D,
89  (__v8hi) __S,
90  __U);
91 }
92 
93 static __inline__ __m128i __DEFAULT_FN_ATTRS
95 {
96  return (__m128i) __builtin_ia32_expandhi128_mask ((__v8hi) __D,
97  (__v8hi) _mm128_setzero_hi(),
98  __U);
99 }
100 
101 static __inline__ __m128i __DEFAULT_FN_ATTRS
102 _mm128_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D)
103 {
104  return (__m128i) __builtin_ia32_expandqi128_mask ((__v16qi) __D,
105  (__v16qi) __S,
106  __U);
107 }
108 
109 static __inline__ __m128i __DEFAULT_FN_ATTRS
111 {
112  return (__m128i) __builtin_ia32_expandqi128_mask ((__v16qi) __D,
113  (__v16qi) _mm128_setzero_hi(),
114  __U);
115 }
116 
117 static __inline__ __m128i __DEFAULT_FN_ATTRS
118 _mm128_mask_expandloadu_epi16(__m128i __S, __mmask8 __U, void const *__P)
119 {
120  return (__m128i) __builtin_ia32_expandloadhi128_mask ((const __v8hi *)__P,
121  (__v8hi) __S,
122  __U);
123 }
124 
125 static __inline__ __m128i __DEFAULT_FN_ATTRS
127 {
128  return (__m128i) __builtin_ia32_expandloadhi128_mask ((const __v8hi *)__P,
129  (__v8hi) _mm128_setzero_hi(),
130  __U);
131 }
132 
133 static __inline__ __m128i __DEFAULT_FN_ATTRS
134 _mm128_mask_expandloadu_epi8(__m128i __S, __mmask16 __U, void const *__P)
135 {
136  return (__m128i) __builtin_ia32_expandloadqi128_mask ((const __v16qi *)__P,
137  (__v16qi) __S,
138  __U);
139 }
140 
141 static __inline__ __m128i __DEFAULT_FN_ATTRS
143 {
144  return (__m128i) __builtin_ia32_expandloadqi128_mask ((const __v16qi *)__P,
145  (__v16qi) _mm128_setzero_hi(),
146  __U);
147 }
148 
149 static __inline __m256i __DEFAULT_FN_ATTRS
151  return (__m256i)(__v16hi){ 0, 0, 0, 0, 0, 0, 0, 0,
152  0, 0, 0, 0, 0, 0, 0, 0 };
153 }
154 
155 static __inline__ __m256i __DEFAULT_FN_ATTRS
156 _mm256_mask_compress_epi16(__m256i __S, __mmask16 __U, __m256i __D)
157 {
158  return (__m256i) __builtin_ia32_compresshi256_mask ((__v16hi) __D,
159  (__v16hi) __S,
160  __U);
161 }
162 
163 static __inline__ __m256i __DEFAULT_FN_ATTRS
165 {
166  return (__m256i) __builtin_ia32_compresshi256_mask ((__v16hi) __D,
167  (__v16hi) _mm256_setzero_hi(),
168  __U);
169 }
170 
171 static __inline__ __m256i __DEFAULT_FN_ATTRS
172 _mm256_mask_compress_epi8(__m256i __S, __mmask32 __U, __m256i __D)
173 {
174  return (__m256i) __builtin_ia32_compressqi256_mask ((__v32qi) __D,
175  (__v32qi) __S,
176  __U);
177 }
178 
179 static __inline__ __m256i __DEFAULT_FN_ATTRS
181 {
182  return (__m256i) __builtin_ia32_compressqi256_mask ((__v32qi) __D,
183  (__v32qi) _mm256_setzero_hi(),
184  __U);
185 }
186 
187 static __inline__ void __DEFAULT_FN_ATTRS
188 _mm256_mask_compressstoreu_epi16(void *__P, __mmask16 __U, __m256i __D)
189 {
190  __builtin_ia32_compressstorehi256_mask ((__v16hi *) __P, (__v16hi) __D,
191  __U);
192 }
193 
194 static __inline__ void __DEFAULT_FN_ATTRS
195 _mm256_mask_compressstoreu_epi8(void *__P, __mmask32 __U, __m256i __D)
196 {
197  __builtin_ia32_compressstoreqi256_mask ((__v32qi *) __P, (__v32qi) __D,
198  __U);
199 }
200 
201 static __inline__ __m256i __DEFAULT_FN_ATTRS
202 _mm256_mask_expand_epi16(__m256i __S, __mmask16 __U, __m256i __D)
203 {
204  return (__m256i) __builtin_ia32_expandhi256_mask ((__v16hi) __D,
205  (__v16hi) __S,
206  __U);
207 }
208 
209 static __inline__ __m256i __DEFAULT_FN_ATTRS
211 {
212  return (__m256i) __builtin_ia32_expandhi256_mask ((__v16hi) __D,
213  (__v16hi) _mm256_setzero_hi(),
214  __U);
215 }
216 
217 static __inline__ __m256i __DEFAULT_FN_ATTRS
218 _mm256_mask_expand_epi8(__m256i __S, __mmask32 __U, __m256i __D)
219 {
220  return (__m256i) __builtin_ia32_expandqi256_mask ((__v32qi) __D,
221  (__v32qi) __S,
222  __U);
223 }
224 
225 static __inline__ __m256i __DEFAULT_FN_ATTRS
227 {
228  return (__m256i) __builtin_ia32_expandqi256_mask ((__v32qi) __D,
229  (__v32qi) _mm256_setzero_hi(),
230  __U);
231 }
232 
233 static __inline__ __m256i __DEFAULT_FN_ATTRS
234 _mm256_mask_expandloadu_epi16(__m256i __S, __mmask16 __U, void const *__P)
235 {
236  return (__m256i) __builtin_ia32_expandloadhi256_mask ((const __v16hi *)__P,
237  (__v16hi) __S,
238  __U);
239 }
240 
241 static __inline__ __m256i __DEFAULT_FN_ATTRS
243 {
244  return (__m256i) __builtin_ia32_expandloadhi256_mask ((const __v16hi *)__P,
245  (__v16hi) _mm256_setzero_hi(),
246  __U);
247 }
248 
249 static __inline__ __m256i __DEFAULT_FN_ATTRS
250 _mm256_mask_expandloadu_epi8(__m256i __S, __mmask32 __U, void const *__P)
251 {
252  return (__m256i) __builtin_ia32_expandloadqi256_mask ((const __v32qi *)__P,
253  (__v32qi) __S,
254  __U);
255 }
256 
257 static __inline__ __m256i __DEFAULT_FN_ATTRS
259 {
260  return (__m256i) __builtin_ia32_expandloadqi256_mask ((const __v32qi *)__P,
261  (__v32qi) _mm256_setzero_hi(),
262  __U);
263 }
264 
265 #define _mm256_mask_shldi_epi64(S, U, A, B, I) __extension__ ({ \
266  (__m256i)__builtin_ia32_vpshldq256_mask((__v4di)(A), \
267  (__v4di)(B), \
268  (int)(I), \
269  (__v4di)(S), \
270  (__mmask8)(U)); })
271 
272 #define _mm256_maskz_shldi_epi64(U, A, B, I) \
273  _mm256_mask_shldi_epi64(_mm256_setzero_hi(), (U), (A), (B), (I))
274 
275 #define _mm256_shldi_epi64(A, B, I) \
276  _mm256_mask_shldi_epi64(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I))
277 
278 #define _mm128_mask_shldi_epi64(S, U, A, B, I) __extension__ ({ \
279  (__m128i)__builtin_ia32_vpshldq128_mask((__v2di)(A), \
280  (__v2di)(B), \
281  (int)(I), \
282  (__v2di)(S), \
283  (__mmask8)(U)); })
284 
285 #define _mm128_maskz_shldi_epi64(U, A, B, I) \
286  _mm128_mask_shldi_epi64(_mm128_setzero_hi(), (U), (A), (B), (I))
287 
288 #define _mm128_shldi_epi64(A, B, I) \
289  _mm128_mask_shldi_epi64(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I))
290 
291 #define _mm256_mask_shldi_epi32(S, U, A, B, I) __extension__ ({ \
292  (__m256i)__builtin_ia32_vpshldd256_mask((__v8si)(A), \
293  (__v8si)(B), \
294  (int)(I), \
295  (__v8si)(S), \
296  (__mmask8)(U)); })
297 
298 #define _mm256_maskz_shldi_epi32(U, A, B, I) \
299  _mm256_mask_shldi_epi32(_mm256_setzero_hi(), (U), (A), (B), (I))
300 
301 #define _mm256_shldi_epi32(A, B, I) \
302  _mm256_mask_shldi_epi32(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I))
303 
304 #define _mm128_mask_shldi_epi32(S, U, A, B, I) __extension__ ({ \
305  (__m128i)__builtin_ia32_vpshldd128_mask((__v4si)(A), \
306  (__v4si)(B), \
307  (int)(I), \
308  (__v4si)(S), \
309  (__mmask8)(U)); })
310 
311 #define _mm128_maskz_shldi_epi32(U, A, B, I) \
312  _mm128_mask_shldi_epi32(_mm128_setzero_hi(), (U), (A), (B), (I))
313 
314 #define _mm128_shldi_epi32(A, B, I) \
315  _mm128_mask_shldi_epi32(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I))
316 
317 #define _mm256_mask_shldi_epi16(S, U, A, B, I) __extension__ ({ \
318  (__m256i)__builtin_ia32_vpshldw256_mask((__v16hi)(A), \
319  (__v16hi)(B), \
320  (int)(I), \
321  (__v16hi)(S), \
322  (__mmask16)(U)); })
323 
324 #define _mm256_maskz_shldi_epi16(U, A, B, I) \
325  _mm256_mask_shldi_epi16(_mm256_setzero_hi(), (U), (A), (B), (I))
326 
327 #define _mm256_shldi_epi16(A, B, I) \
328  _mm256_mask_shldi_epi16(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I))
329 
330 #define _mm128_mask_shldi_epi16(S, U, A, B, I) __extension__ ({ \
331  (__m128i)__builtin_ia32_vpshldw128_mask((__v8hi)(A), \
332  (__v8hi)(B), \
333  (int)(I), \
334  (__v8hi)(S), \
335  (__mmask8)(U)); })
336 
337 #define _mm128_maskz_shldi_epi16(U, A, B, I) \
338  _mm128_mask_shldi_epi16(_mm128_setzero_hi(), (U), (A), (B), (I))
339 
340 #define _mm128_shldi_epi16(A, B, I) \
341  _mm128_mask_shldi_epi16(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I))
342 
343 #define _mm256_mask_shrdi_epi64(S, U, A, B, I) __extension__ ({ \
344  (__m256i)__builtin_ia32_vpshrdq256_mask((__v4di)(A), \
345  (__v4di)(B), \
346  (int)(I), \
347  (__v4di)(S), \
348  (__mmask8)(U)); })
349 
350 #define _mm256_maskz_shrdi_epi64(U, A, B, I) \
351  _mm256_mask_shrdi_epi64(_mm256_setzero_hi(), (U), (A), (B), (I))
352 
353 #define _mm256_shrdi_epi64(A, B, I) \
354  _mm256_mask_shrdi_epi64(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I))
355 
356 #define _mm128_mask_shrdi_epi64(S, U, A, B, I) __extension__ ({ \
357  (__m128i)__builtin_ia32_vpshrdq128_mask((__v2di)(A), \
358  (__v2di)(B), \
359  (int)(I), \
360  (__v2di)(S), \
361  (__mmask8)(U)); })
362 
363 #define _mm128_maskz_shrdi_epi64(U, A, B, I) \
364  _mm128_mask_shrdi_epi64(_mm128_setzero_hi(), (U), (A), (B), (I))
365 
366 #define _mm128_shrdi_epi64(A, B, I) \
367  _mm128_mask_shrdi_epi64(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I))
368 
369 #define _mm256_mask_shrdi_epi32(S, U, A, B, I) __extension__ ({ \
370  (__m256i)__builtin_ia32_vpshrdd256_mask((__v8si)(A), \
371  (__v8si)(B), \
372  (int)(I), \
373  (__v8si)(S), \
374  (__mmask8)(U)); })
375 
376 #define _mm256_maskz_shrdi_epi32(U, A, B, I) \
377  _mm256_mask_shrdi_epi32(_mm256_setzero_hi(), (U), (A), (B), (I))
378 
379 #define _mm256_shrdi_epi32(A, B, I) \
380  _mm256_mask_shrdi_epi32(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I))
381 
382 #define _mm128_mask_shrdi_epi32(S, U, A, B, I) __extension__ ({ \
383  (__m128i)__builtin_ia32_vpshrdd128_mask((__v4si)(A), \
384  (__v4si)(B), \
385  (int)(I), \
386  (__v4si)(S), \
387  (__mmask8)(U)); })
388 
389 #define _mm128_maskz_shrdi_epi32(U, A, B, I) \
390  _mm128_mask_shrdi_epi32(_mm128_setzero_hi(), (U), (A), (B), (I))
391 
392 #define _mm128_shrdi_epi32(A, B, I) \
393  _mm128_mask_shrdi_epi32(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I))
394 
395 #define _mm256_mask_shrdi_epi16(S, U, A, B, I) __extension__ ({ \
396  (__m256i)__builtin_ia32_vpshrdw256_mask((__v16hi)(A), \
397  (__v16hi)(B), \
398  (int)(I), \
399  (__v16hi)(S), \
400  (__mmask16)(U)); })
401 
402 #define _mm256_maskz_shrdi_epi16(U, A, B, I) \
403  _mm256_mask_shrdi_epi16(_mm256_setzero_hi(), (U), (A), (B), (I))
404 
405 #define _mm256_shrdi_epi16(A, B, I) \
406  _mm256_mask_shrdi_epi16(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I))
407 
408 #define _mm128_mask_shrdi_epi16(S, U, A, B, I) __extension__ ({ \
409  (__m128i)__builtin_ia32_vpshrdw128_mask((__v8hi)(A), \
410  (__v8hi)(B), \
411  (int)(I), \
412  (__v8hi)(S), \
413  (__mmask8)(U)); })
414 
415 #define _mm128_maskz_shrdi_epi16(U, A, B, I) \
416  _mm128_mask_shrdi_epi16(_mm128_setzero_hi(), (U), (A), (B), (I))
417 
418 #define _mm128_shrdi_epi16(A, B, I) \
419  _mm128_mask_shrdi_epi16(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I))
420 
421 static __inline__ __m256i __DEFAULT_FN_ATTRS
422 _mm256_mask_shldv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
423 {
424  return (__m256i) __builtin_ia32_vpshldvq256_mask ((__v4di) __S,
425  (__v4di) __A,
426  (__v4di) __B,
427  __U);
428 }
429 
430 static __inline__ __m256i __DEFAULT_FN_ATTRS
431 _mm256_maskz_shldv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
432 {
433  return (__m256i) __builtin_ia32_vpshldvq256_maskz ((__v4di) __S,
434  (__v4di) __A,
435  (__v4di) __B,
436  __U);
437 }
438 
439 static __inline__ __m256i __DEFAULT_FN_ATTRS
440 _mm256_shldv_epi64(__m256i __S, __m256i __A, __m256i __B)
441 {
442  return (__m256i) __builtin_ia32_vpshldvq256_mask ((__v4di) __S,
443  (__v4di) __A,
444  (__v4di) __B,
445  (__mmask8) -1);
446 }
447 
448 static __inline__ __m128i __DEFAULT_FN_ATTRS
449 _mm128_mask_shldv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
450 {
451  return (__m128i) __builtin_ia32_vpshldvq128_mask ((__v2di) __S,
452  (__v2di) __A,
453  (__v2di) __B,
454  __U);
455 }
456 
457 static __inline__ __m128i __DEFAULT_FN_ATTRS
458 _mm128_maskz_shldv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
459 {
460  return (__m128i) __builtin_ia32_vpshldvq128_maskz ((__v2di) __S,
461  (__v2di) __A,
462  (__v2di) __B,
463  __U);
464 }
465 
466 static __inline__ __m128i __DEFAULT_FN_ATTRS
467 _mm128_shldv_epi64(__m128i __S, __m128i __A, __m128i __B)
468 {
469  return (__m128i) __builtin_ia32_vpshldvq128_mask ((__v2di) __S,
470  (__v2di) __A,
471  (__v2di) __B,
472  (__mmask8) -1);
473 }
474 
475 static __inline__ __m256i __DEFAULT_FN_ATTRS
476 _mm256_mask_shldv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
477 {
478  return (__m256i) __builtin_ia32_vpshldvd256_mask ((__v8si) __S,
479  (__v8si) __A,
480  (__v8si) __B,
481  __U);
482 }
483 
484 static __inline__ __m256i __DEFAULT_FN_ATTRS
485 _mm256_maskz_shldv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
486 {
487  return (__m256i) __builtin_ia32_vpshldvd256_maskz ((__v8si) __S,
488  (__v8si) __A,
489  (__v8si) __B,
490  __U);
491 }
492 
493 static __inline__ __m256i __DEFAULT_FN_ATTRS
494 _mm256_shldv_epi32(__m256i __S, __m256i __A, __m256i __B)
495 {
496  return (__m256i) __builtin_ia32_vpshldvd256_mask ((__v8si) __S,
497  (__v8si) __A,
498  (__v8si) __B,
499  (__mmask8) -1);
500 }
501 
502 static __inline__ __m128i __DEFAULT_FN_ATTRS
503 _mm128_mask_shldv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
504 {
505  return (__m128i) __builtin_ia32_vpshldvd128_mask ((__v4si) __S,
506  (__v4si) __A,
507  (__v4si) __B,
508  __U);
509 }
510 
511 static __inline__ __m128i __DEFAULT_FN_ATTRS
512 _mm128_maskz_shldv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
513 {
514  return (__m128i) __builtin_ia32_vpshldvd128_maskz ((__v4si) __S,
515  (__v4si) __A,
516  (__v4si) __B,
517  __U);
518 }
519 
520 static __inline__ __m128i __DEFAULT_FN_ATTRS
521 _mm128_shldv_epi32(__m128i __S, __m128i __A, __m128i __B)
522 {
523  return (__m128i) __builtin_ia32_vpshldvd128_mask ((__v4si) __S,
524  (__v4si) __A,
525  (__v4si) __B,
526  (__mmask8) -1);
527 }
528 
529 static __inline__ __m256i __DEFAULT_FN_ATTRS
530 _mm256_mask_shldv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B)
531 {
532  return (__m256i) __builtin_ia32_vpshldvw256_mask ((__v16hi) __S,
533  (__v16hi) __A,
534  (__v16hi) __B,
535  __U);
536 }
537 
538 static __inline__ __m256i __DEFAULT_FN_ATTRS
539 _mm256_maskz_shldv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B)
540 {
541  return (__m256i) __builtin_ia32_vpshldvw256_maskz ((__v16hi) __S,
542  (__v16hi) __A,
543  (__v16hi) __B,
544  __U);
545 }
546 
547 static __inline__ __m256i __DEFAULT_FN_ATTRS
548 _mm256_shldv_epi16(__m256i __S, __m256i __A, __m256i __B)
549 {
550  return (__m256i) __builtin_ia32_vpshldvw256_mask ((__v16hi) __S,
551  (__v16hi) __A,
552  (__v16hi) __B,
553  (__mmask16) -1);
554 }
555 
556 static __inline__ __m128i __DEFAULT_FN_ATTRS
557 _mm128_mask_shldv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
558 {
559  return (__m128i) __builtin_ia32_vpshldvw128_mask ((__v8hi) __S,
560  (__v8hi) __A,
561  (__v8hi) __B,
562  __U);
563 }
564 
565 static __inline__ __m128i __DEFAULT_FN_ATTRS
566 _mm128_maskz_shldv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
567 {
568  return (__m128i) __builtin_ia32_vpshldvw128_maskz ((__v8hi) __S,
569  (__v8hi) __A,
570  (__v8hi) __B,
571  __U);
572 }
573 
574 static __inline__ __m128i __DEFAULT_FN_ATTRS
575 _mm128_shldv_epi16(__m128i __S, __m128i __A, __m128i __B)
576 {
577  return (__m128i) __builtin_ia32_vpshldvw128_mask ((__v8hi) __S,
578  (__v8hi) __A,
579  (__v8hi) __B,
580  (__mmask8) -1);
581 }
582 
583 static __inline__ __m256i __DEFAULT_FN_ATTRS
584 _mm256_mask_shrdv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
585 {
586  return (__m256i) __builtin_ia32_vpshrdvq256_mask ((__v4di) __S,
587  (__v4di) __A,
588  (__v4di) __B,
589  __U);
590 }
591 
592 static __inline__ __m256i __DEFAULT_FN_ATTRS
593 _mm256_maskz_shrdv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
594 {
595  return (__m256i) __builtin_ia32_vpshrdvq256_maskz ((__v4di) __S,
596  (__v4di) __A,
597  (__v4di) __B,
598  __U);
599 }
600 
601 static __inline__ __m256i __DEFAULT_FN_ATTRS
602 _mm256_shrdv_epi64(__m256i __S, __m256i __A, __m256i __B)
603 {
604  return (__m256i) __builtin_ia32_vpshrdvq256_mask ((__v4di) __S,
605  (__v4di) __A,
606  (__v4di) __B,
607  (__mmask8) -1);
608 }
609 
610 static __inline__ __m128i __DEFAULT_FN_ATTRS
611 _mm128_mask_shrdv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
612 {
613  return (__m128i) __builtin_ia32_vpshrdvq128_mask ((__v2di) __S,
614  (__v2di) __A,
615  (__v2di) __B,
616  __U);
617 }
618 
619 static __inline__ __m128i __DEFAULT_FN_ATTRS
620 _mm128_maskz_shrdv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
621 {
622  return (__m128i) __builtin_ia32_vpshrdvq128_maskz ((__v2di) __S,
623  (__v2di) __A,
624  (__v2di) __B,
625  __U);
626 }
627 
628 static __inline__ __m128i __DEFAULT_FN_ATTRS
629 _mm128_shrdv_epi64(__m128i __S, __m128i __A, __m128i __B)
630 {
631  return (__m128i) __builtin_ia32_vpshrdvq128_mask ((__v2di) __S,
632  (__v2di) __A,
633  (__v2di) __B,
634  (__mmask8) -1);
635 }
636 
637 static __inline__ __m256i __DEFAULT_FN_ATTRS
638 _mm256_mask_shrdv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
639 {
640  return (__m256i) __builtin_ia32_vpshrdvd256_mask ((__v8si) __S,
641  (__v8si) __A,
642  (__v8si) __B,
643  __U);
644 }
645 
646 static __inline__ __m256i __DEFAULT_FN_ATTRS
647 _mm256_maskz_shrdv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
648 {
649  return (__m256i) __builtin_ia32_vpshrdvd256_maskz ((__v8si) __S,
650  (__v8si) __A,
651  (__v8si) __B,
652  __U);
653 }
654 
655 static __inline__ __m256i __DEFAULT_FN_ATTRS
656 _mm256_shrdv_epi32(__m256i __S, __m256i __A, __m256i __B)
657 {
658  return (__m256i) __builtin_ia32_vpshrdvd256_mask ((__v8si) __S,
659  (__v8si) __A,
660  (__v8si) __B,
661  (__mmask8) -1);
662 }
663 
664 static __inline__ __m128i __DEFAULT_FN_ATTRS
665 _mm128_mask_shrdv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
666 {
667  return (__m128i) __builtin_ia32_vpshrdvd128_mask ((__v4si) __S,
668  (__v4si) __A,
669  (__v4si) __B,
670  __U);
671 }
672 
673 static __inline__ __m128i __DEFAULT_FN_ATTRS
674 _mm128_maskz_shrdv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
675 {
676  return (__m128i) __builtin_ia32_vpshrdvd128_maskz ((__v4si) __S,
677  (__v4si) __A,
678  (__v4si) __B,
679  __U);
680 }
681 
682 static __inline__ __m128i __DEFAULT_FN_ATTRS
683 _mm128_shrdv_epi32(__m128i __S, __m128i __A, __m128i __B)
684 {
685  return (__m128i) __builtin_ia32_vpshrdvd128_mask ((__v4si) __S,
686  (__v4si) __A,
687  (__v4si) __B,
688  (__mmask8) -1);
689 }
690 
691 static __inline__ __m256i __DEFAULT_FN_ATTRS
692 _mm256_mask_shrdv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B)
693 {
694  return (__m256i) __builtin_ia32_vpshrdvw256_mask ((__v16hi) __S,
695  (__v16hi) __A,
696  (__v16hi) __B,
697  __U);
698 }
699 
700 static __inline__ __m256i __DEFAULT_FN_ATTRS
701 _mm256_maskz_shrdv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B)
702 {
703  return (__m256i) __builtin_ia32_vpshrdvw256_maskz ((__v16hi) __S,
704  (__v16hi) __A,
705  (__v16hi) __B,
706  __U);
707 }
708 
709 static __inline__ __m256i __DEFAULT_FN_ATTRS
710 _mm256_shrdv_epi16(__m256i __S, __m256i __A, __m256i __B)
711 {
712  return (__m256i) __builtin_ia32_vpshrdvw256_mask ((__v16hi) __S,
713  (__v16hi) __A,
714  (__v16hi) __B,
715  (__mmask16) -1);
716 }
717 
718 static __inline__ __m128i __DEFAULT_FN_ATTRS
719 _mm128_mask_shrdv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
720 {
721  return (__m128i) __builtin_ia32_vpshrdvw128_mask ((__v8hi) __S,
722  (__v8hi) __A,
723  (__v8hi) __B,
724  __U);
725 }
726 
727 static __inline__ __m128i __DEFAULT_FN_ATTRS
728 _mm128_maskz_shrdv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
729 {
730  return (__m128i) __builtin_ia32_vpshrdvw128_maskz ((__v8hi) __S,
731  (__v8hi) __A,
732  (__v8hi) __B,
733  __U);
734 }
735 
736 static __inline__ __m128i __DEFAULT_FN_ATTRS
737 _mm128_shrdv_epi16(__m128i __S, __m128i __A, __m128i __B)
738 {
739  return (__m128i) __builtin_ia32_vpshrdvw128_mask ((__v8hi) __S,
740  (__v8hi) __A,
741  (__v8hi) __B,
742  (__mmask8) -1);
743 }
744 
745 
746 #undef __DEFAULT_FN_ATTRS
747 
748 #endif
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shldv_epi64(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shrdv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expandloadu_epi16(__m256i __S, __mmask16 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shldv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shrdv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shldv_epi16(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expandloadu_epi16(__mmask8 __U, void const *__P)
unsigned char __mmask8
Definition: avx512fintrin.h:47
static __inline__ void __DEFAULT_FN_ATTRS _mm128_mask_compressstoreu_epi16(void *__P, __mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shldv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_compress_epi8(__mmask32 __U, __m256i __D)
unsigned int __mmask32
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expand_epi16(__mmask16 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expand_epi8(__m256i __S, __mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expandloadu_epi8(__m128i __S, __mmask16 __U, void const *__P)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expand_epi8(__mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expandloadu_epi16(__m128i __S, __mmask8 __U, void const *__P)
#define __DEFAULT_FN_ATTRS
static __inline__ void __DEFAULT_FN_ATTRS _mm256_mask_compressstoreu_epi16(void *__P, __mmask16 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shldv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expand_epi16(__m256i __S, __mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shrdv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shrdv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shldv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shrdv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shrdv_epi32(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shldv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shldv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expandloadu_epi16(__mmask16 __U, void const *__P)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_compress_epi8(__m256i __S, __mmask32 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shrdv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D)
static __inline__ void __DEFAULT_FN_ATTRS _mm256_mask_compressstoreu_epi8(void *__P, __mmask32 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expandloadu_epi8(__m256i __S, __mmask32 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expand_epi16(__mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shldv_epi32(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shrdv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shrdv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shrdv_epi64(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_compress_epi16(__m256i __S, __mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shrdv_epi16(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shrdv_epi32(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D)
static __inline__ void __DEFAULT_FN_ATTRS _mm128_mask_compressstoreu_epi8(void *__P, __mmask16 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_compress_epi16(__mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shldv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_compress_epi16(__mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expandloadu_epi8(__mmask16 __U, void const *__P)
static __inline __m256i __DEFAULT_FN_ATTRS _mm256_setzero_hi(void)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shrdv_epi16(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shrdv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shrdv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shldv_epi32(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shldv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expand_epi8(__mmask16 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_compress_epi8(__mmask16 __U, __m128i __D)
unsigned short __mmask16
Definition: avx512fintrin.h:48
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shrdv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shldv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shrdv_epi64(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shldv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shrdv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shldv_epi64(__m128i __S, __m128i __A, __m128i __B)
static __inline __m128i __DEFAULT_FN_ATTRS _mm128_setzero_hi(void)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shldv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shldv_epi16(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expandloadu_epi8(__mmask32 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shldv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)