avx512bwintrin.h revision 1.1.1.2 1 /* Copyright (C) 2014-2015 Free Software Foundation, Inc.
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
8 any later version.
9
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
18
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
23
24 #ifndef _IMMINTRIN_H_INCLUDED
25 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef _AVX512BWINTRIN_H_INCLUDED
29 #define _AVX512BWINTRIN_H_INCLUDED
30
31 #ifndef __AVX512BW__
32 #pragma GCC push_options
33 #pragma GCC target("avx512bw")
34 #define __DISABLE_AVX512BW__
35 #endif /* __AVX512BW__ */
36
37 /* Internal data types for implementing the intrinsics. */
38 typedef short __v32hi __attribute__ ((__vector_size__ (64)));
39 typedef char __v64qi __attribute__ ((__vector_size__ (64)));
40
41 typedef unsigned long long __mmask64;
42
43 extern __inline __m512i
44 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
45 _mm512_setzero_qi (void)
46 {
47 return __extension__ (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
48 0, 0, 0, 0, 0, 0, 0, 0,
49 0, 0, 0, 0, 0, 0, 0, 0,
50 0, 0, 0, 0, 0, 0, 0, 0,
51 0, 0, 0, 0, 0, 0, 0, 0,
52 0, 0, 0, 0, 0, 0, 0, 0,
53 0, 0, 0, 0, 0, 0, 0, 0,
54 0, 0, 0, 0, 0, 0, 0, 0 };
55 }
56
57 extern __inline __m512i
58 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
59 _mm512_setzero_hi (void)
60 {
61 return __extension__ (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
62 0, 0, 0, 0, 0, 0, 0, 0,
63 0, 0, 0, 0, 0, 0, 0, 0,
64 0, 0, 0, 0, 0, 0, 0, 0 };
65 }
66
67 extern __inline __m512i
68 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
69 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
70 {
71 return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
72 (__v32hi) __W,
73 (__mmask32) __U);
74 }
75
76 extern __inline __m512i
77 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
78 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
79 {
80 return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
81 (__v32hi)
82 _mm512_setzero_hi (),
83 (__mmask32) __U);
84 }
85
86 extern __inline __m512i
87 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
88 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
89 {
90 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
91 (__v32hi) __W,
92 (__mmask32) __U);
93 }
94
95 extern __inline __m512i
96 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
97 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
98 {
99 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
100 (__v32hi)
101 _mm512_setzero_hi (),
102 (__mmask32) __U);
103 }
104
105 extern __inline void
106 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
107 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
108 {
109 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
110 (__v32hi) __A,
111 (__mmask32) __U);
112 }
113
114 extern __inline __m512i
115 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
116 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
117 {
118 return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
119 (__v64qi) __W,
120 (__mmask64) __U);
121 }
122
123 extern __inline __m512i
124 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
125 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
126 {
127 return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
128 (__v64qi)
129 _mm512_setzero_hi (),
130 (__mmask64) __U);
131 }
132
133 extern __inline __mmask32
134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
135 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
136 {
137 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
138 (__mmask32) __B);
139 }
140
141 extern __inline __mmask64
142 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
143 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
144 {
145 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
146 (__mmask64) __B);
147 }
148
149 extern __inline __m512i
150 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
151 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
152 {
153 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
154 (__v64qi) __W,
155 (__mmask64) __U);
156 }
157
158 extern __inline __m512i
159 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
160 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
161 {
162 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
163 (__v64qi)
164 _mm512_setzero_hi (),
165 (__mmask64) __U);
166 }
167
168 extern __inline void
169 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
170 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
171 {
172 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
173 (__v64qi) __A,
174 (__mmask64) __U);
175 }
176
177 extern __inline __m512i
178 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
179 _mm512_sad_epu8 (__m512i __A, __m512i __B)
180 {
181 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
182 (__v64qi) __B);
183 }
184
185 extern __inline __m256i
186 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
187 _mm512_cvtepi16_epi8 (__m512i __A)
188 {
189 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
190 (__v32qi) _mm256_undefined_si256(),
191 (__mmask32) -1);
192 }
193
194 extern __inline __m256i
195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
196 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
197 {
198 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
199 (__v32qi) __O, __M);
200 }
201
202 extern __inline __m256i
203 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
204 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
205 {
206 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
207 (__v32qi)
208 _mm256_setzero_si256 (),
209 __M);
210 }
211
212 extern __inline __m256i
213 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
214 _mm512_cvtsepi16_epi8 (__m512i __A)
215 {
216 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
217 (__v32qi)_mm256_undefined_si256(),
218 (__mmask32) -1);
219 }
220
221 extern __inline __m256i
222 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
223 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
224 {
225 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
226 (__v32qi)__O,
227 __M);
228 }
229
230 extern __inline __m256i
231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
232 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
233 {
234 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
235 (__v32qi)
236 _mm256_setzero_si256 (),
237 __M);
238 }
239
240 extern __inline __m256i
241 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
242 _mm512_cvtusepi16_epi8 (__m512i __A)
243 {
244 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
245 (__v32qi)_mm256_undefined_si256(),
246 (__mmask32) -1);
247 }
248
249 extern __inline __m256i
250 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
251 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
252 {
253 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
254 (__v32qi) __O,
255 __M);
256 }
257
258 extern __inline __m256i
259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
260 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
261 {
262 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
263 (__v32qi)
264 _mm256_setzero_si256 (),
265 __M);
266 }
267
268 extern __inline __m512i
269 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
270 _mm512_broadcastb_epi8 (__m128i __A)
271 {
272 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
273 (__v64qi)_mm512_undefined_epi32(),
274 (__mmask64) -1);
275 }
276
277 extern __inline __m512i
278 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
279 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
280 {
281 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
282 (__v64qi) __O,
283 __M);
284 }
285
286 extern __inline __m512i
287 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
288 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
289 {
290 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
291 (__v64qi)
292 _mm512_setzero_qi(),
293 __M);
294 }
295
296 extern __inline __m512i
297 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
298 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
299 {
300 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
301 (__v64qi) __O,
302 __M);
303 }
304
305 extern __inline __m512i
306 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
307 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
308 {
309 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
310 (__v64qi)
311 _mm512_setzero_qi(),
312 __M);
313 }
314
315 extern __inline __m512i
316 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
317 _mm512_broadcastw_epi16 (__m128i __A)
318 {
319 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
320 (__v32hi)_mm512_undefined_epi32(),
321 (__mmask32) -1);
322 }
323
324 extern __inline __m512i
325 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
326 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
327 {
328 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
329 (__v32hi) __O,
330 __M);
331 }
332
333 extern __inline __m512i
334 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
335 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
336 {
337 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
338 (__v32hi)
339 _mm512_setzero_hi(),
340 __M);
341 }
342
343 extern __inline __m512i
344 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
345 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
346 {
347 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
348 (__v32hi) __O,
349 __M);
350 }
351
352 extern __inline __m512i
353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
354 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
355 {
356 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
357 (__v32hi)
358 _mm512_setzero_hi(),
359 __M);
360 }
361
362 extern __inline __m512i
363 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
364 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
365 {
366 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
367 (__v32hi) __B,
368 (__v32hi)
369 _mm512_setzero_hi (),
370 (__mmask32) -1);
371 }
372
373 extern __inline __m512i
374 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
375 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
376 __m512i __B)
377 {
378 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
379 (__v32hi) __B,
380 (__v32hi) __W,
381 (__mmask32) __U);
382 }
383
384 extern __inline __m512i
385 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
386 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
387 {
388 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
389 (__v32hi) __B,
390 (__v32hi)
391 _mm512_setzero_hi (),
392 (__mmask32) __U);
393 }
394
395 extern __inline __m512i
396 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
397 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
398 {
399 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
400 (__v32hi) __B,
401 (__v32hi)
402 _mm512_setzero_hi (),
403 (__mmask32) -1);
404 }
405
406 extern __inline __m512i
407 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
408 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
409 __m512i __B)
410 {
411 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
412 (__v32hi) __B,
413 (__v32hi) __W,
414 (__mmask32) __U);
415 }
416
417 extern __inline __m512i
418 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
419 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
420 {
421 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
422 (__v32hi) __B,
423 (__v32hi)
424 _mm512_setzero_hi (),
425 (__mmask32) __U);
426 }
427
428 extern __inline __m512i
429 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
430 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
431 {
432 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
433 (__v32hi) __B,
434 (__v32hi)
435 _mm512_setzero_hi (),
436 (__mmask32) -1);
437 }
438
439 extern __inline __m512i
440 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
441 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
442 __m512i __B)
443 {
444 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
445 (__v32hi) __B,
446 (__v32hi) __W,
447 (__mmask32) __U);
448 }
449
450 extern __inline __m512i
451 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
452 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
453 {
454 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
455 (__v32hi) __B,
456 (__v32hi)
457 _mm512_setzero_hi (),
458 (__mmask32) __U);
459 }
460
461 extern __inline __m512i
462 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
463 _mm512_mullo_epi16 (__m512i __A, __m512i __B)
464 {
465 return (__m512i) ((__v32hu) __A * (__v32hu) __B);
466 }
467
468 extern __inline __m512i
469 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
470 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
471 __m512i __B)
472 {
473 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
474 (__v32hi) __B,
475 (__v32hi) __W,
476 (__mmask32) __U);
477 }
478
479 extern __inline __m512i
480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
481 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
482 {
483 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
484 (__v32hi) __B,
485 (__v32hi)
486 _mm512_setzero_hi (),
487 (__mmask32) __U);
488 }
489
490 extern __inline __m512i
491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
492 _mm512_cvtepi8_epi16 (__m256i __A)
493 {
494 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
495 (__v32hi)
496 _mm512_setzero_hi (),
497 (__mmask32) -1);
498 }
499
500 extern __inline __m512i
501 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
502 _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
503 {
504 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
505 (__v32hi) __W,
506 (__mmask32) __U);
507 }
508
509 extern __inline __m512i
510 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
511 _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
512 {
513 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
514 (__v32hi)
515 _mm512_setzero_hi(),
516 (__mmask32) __U);
517 }
518
519 extern __inline __m512i
520 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
521 _mm512_cvtepu8_epi16 (__m256i __A)
522 {
523 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
524 (__v32hi)
525 _mm512_setzero_hi (),
526 (__mmask32) -1);
527 }
528
529 extern __inline __m512i
530 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
531 _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
532 {
533 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
534 (__v32hi) __W,
535 (__mmask32) __U);
536 }
537
538 extern __inline __m512i
539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
540 _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
541 {
542 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
543 (__v32hi)
544 _mm512_setzero_hi(),
545 (__mmask32) __U);
546 }
547
548 extern __inline __m512i
549 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
550 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
551 {
552 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
553 (__v32hi) __A,
554 (__v32hi)
555 _mm512_setzero_hi (),
556 (__mmask32) -1);
557 }
558
559 extern __inline __m512i
560 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
561 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
562 __m512i __B)
563 {
564 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
565 (__v32hi) __A,
566 (__v32hi)
567 _mm512_setzero_hi(),
568 (__mmask32) __M);
569 }
570
571 extern __inline __m512i
572 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
573 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
574 __m512i __B)
575 {
576 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
577 (__v32hi) __A,
578 (__v32hi) __W,
579 (__mmask32) __M);
580 }
581
582 extern __inline __m512i
583 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
584 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
585 {
586 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
587 /* idx */ ,
588 (__v32hi) __A,
589 (__v32hi) __B,
590 (__mmask32) -1);
591 }
592
593 extern __inline __m512i
594 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
595 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
596 __m512i __I, __m512i __B)
597 {
598 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
599 /* idx */ ,
600 (__v32hi) __A,
601 (__v32hi) __B,
602 (__mmask32)
603 __U);
604 }
605
606 extern __inline __m512i
607 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
608 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
609 __mmask32 __U, __m512i __B)
610 {
611 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
612 (__v32hi) __I
613 /* idx */ ,
614 (__v32hi) __B,
615 (__mmask32)
616 __U);
617 }
618
619 extern __inline __m512i
620 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
621 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
622 __m512i __I, __m512i __B)
623 {
624 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
625 /* idx */ ,
626 (__v32hi) __A,
627 (__v32hi) __B,
628 (__mmask32)
629 __U);
630 }
631
632 extern __inline __m512i
633 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
634 _mm512_avg_epu8 (__m512i __A, __m512i __B)
635 {
636 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
637 (__v64qi) __B,
638 (__v64qi)
639 _mm512_setzero_qi (),
640 (__mmask64) -1);
641 }
642
643 extern __inline __m512i
644 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
645 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
646 __m512i __B)
647 {
648 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
649 (__v64qi) __B,
650 (__v64qi) __W,
651 (__mmask64) __U);
652 }
653
654 extern __inline __m512i
655 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
656 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
657 {
658 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
659 (__v64qi) __B,
660 (__v64qi)
661 _mm512_setzero_qi(),
662 (__mmask64) __U);
663 }
664
665 extern __inline __m512i
666 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
667 _mm512_add_epi8 (__m512i __A, __m512i __B)
668 {
669 return (__m512i) ((__v64qu) __A + (__v64qu) __B);
670 }
671
672 extern __inline __m512i
673 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
674 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
675 __m512i __B)
676 {
677 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
678 (__v64qi) __B,
679 (__v64qi) __W,
680 (__mmask64) __U);
681 }
682
683 extern __inline __m512i
684 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
685 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
686 {
687 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
688 (__v64qi) __B,
689 (__v64qi)
690 _mm512_setzero_qi (),
691 (__mmask64) __U);
692 }
693
694 extern __inline __m512i
695 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
696 _mm512_sub_epi8 (__m512i __A, __m512i __B)
697 {
698 return (__m512i) ((__v64qu) __A - (__v64qu) __B);
699 }
700
701 extern __inline __m512i
702 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
703 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
704 __m512i __B)
705 {
706 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
707 (__v64qi) __B,
708 (__v64qi) __W,
709 (__mmask64) __U);
710 }
711
712 extern __inline __m512i
713 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
714 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
715 {
716 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
717 (__v64qi) __B,
718 (__v64qi)
719 _mm512_setzero_qi (),
720 (__mmask64) __U);
721 }
722
723 extern __inline __m512i
724 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
725 _mm512_avg_epu16 (__m512i __A, __m512i __B)
726 {
727 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
728 (__v32hi) __B,
729 (__v32hi)
730 _mm512_setzero_hi (),
731 (__mmask32) -1);
732 }
733
734 extern __inline __m512i
735 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
736 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
737 __m512i __B)
738 {
739 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
740 (__v32hi) __B,
741 (__v32hi) __W,
742 (__mmask32) __U);
743 }
744
745 extern __inline __m512i
746 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
747 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
748 {
749 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
750 (__v32hi) __B,
751 (__v32hi)
752 _mm512_setzero_hi(),
753 (__mmask32) __U);
754 }
755
756 extern __inline __m512i
757 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
758 _mm512_subs_epi8 (__m512i __A, __m512i __B)
759 {
760 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
761 (__v64qi) __B,
762 (__v64qi)
763 _mm512_setzero_qi (),
764 (__mmask64) -1);
765 }
766
767 extern __inline __m512i
768 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
769 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
770 __m512i __B)
771 {
772 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
773 (__v64qi) __B,
774 (__v64qi) __W,
775 (__mmask64) __U);
776 }
777
778 extern __inline __m512i
779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
780 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
781 {
782 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
783 (__v64qi) __B,
784 (__v64qi)
785 _mm512_setzero_qi (),
786 (__mmask64) __U);
787 }
788
789 extern __inline __m512i
790 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
791 _mm512_subs_epu8 (__m512i __A, __m512i __B)
792 {
793 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
794 (__v64qi) __B,
795 (__v64qi)
796 _mm512_setzero_qi (),
797 (__mmask64) -1);
798 }
799
800 extern __inline __m512i
801 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
802 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
803 __m512i __B)
804 {
805 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
806 (__v64qi) __B,
807 (__v64qi) __W,
808 (__mmask64) __U);
809 }
810
811 extern __inline __m512i
812 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
813 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
814 {
815 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
816 (__v64qi) __B,
817 (__v64qi)
818 _mm512_setzero_qi (),
819 (__mmask64) __U);
820 }
821
822 extern __inline __m512i
823 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
824 _mm512_adds_epi8 (__m512i __A, __m512i __B)
825 {
826 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
827 (__v64qi) __B,
828 (__v64qi)
829 _mm512_setzero_qi (),
830 (__mmask64) -1);
831 }
832
833 extern __inline __m512i
834 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
835 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
836 __m512i __B)
837 {
838 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
839 (__v64qi) __B,
840 (__v64qi) __W,
841 (__mmask64) __U);
842 }
843
844 extern __inline __m512i
845 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
846 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
847 {
848 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
849 (__v64qi) __B,
850 (__v64qi)
851 _mm512_setzero_qi (),
852 (__mmask64) __U);
853 }
854
855 extern __inline __m512i
856 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
857 _mm512_adds_epu8 (__m512i __A, __m512i __B)
858 {
859 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
860 (__v64qi) __B,
861 (__v64qi)
862 _mm512_setzero_qi (),
863 (__mmask64) -1);
864 }
865
866 extern __inline __m512i
867 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
868 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
869 __m512i __B)
870 {
871 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
872 (__v64qi) __B,
873 (__v64qi) __W,
874 (__mmask64) __U);
875 }
876
877 extern __inline __m512i
878 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
879 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
880 {
881 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
882 (__v64qi) __B,
883 (__v64qi)
884 _mm512_setzero_qi (),
885 (__mmask64) __U);
886 }
887
888 extern __inline __m512i
889 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
890 _mm512_sub_epi16 (__m512i __A, __m512i __B)
891 {
892 return (__m512i) ((__v32hu) __A - (__v32hu) __B);
893 }
894
895 extern __inline __m512i
896 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
897 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
898 __m512i __B)
899 {
900 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
901 (__v32hi) __B,
902 (__v32hi) __W,
903 (__mmask32) __U);
904 }
905
906 extern __inline __m512i
907 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
908 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
909 {
910 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
911 (__v32hi) __B,
912 (__v32hi)
913 _mm512_setzero_hi (),
914 (__mmask32) __U);
915 }
916
917 extern __inline __m512i
918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
919 _mm512_subs_epi16 (__m512i __A, __m512i __B)
920 {
921 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
922 (__v32hi) __B,
923 (__v32hi)
924 _mm512_setzero_hi (),
925 (__mmask32) -1);
926 }
927
928 extern __inline __m512i
929 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
930 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
931 __m512i __B)
932 {
933 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
934 (__v32hi) __B,
935 (__v32hi) __W,
936 (__mmask32) __U);
937 }
938
939 extern __inline __m512i
940 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
941 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
942 {
943 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
944 (__v32hi) __B,
945 (__v32hi)
946 _mm512_setzero_hi (),
947 (__mmask32) __U);
948 }
949
950 extern __inline __m512i
951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
952 _mm512_subs_epu16 (__m512i __A, __m512i __B)
953 {
954 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
955 (__v32hi) __B,
956 (__v32hi)
957 _mm512_setzero_hi (),
958 (__mmask32) -1);
959 }
960
961 extern __inline __m512i
962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
963 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
964 __m512i __B)
965 {
966 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
967 (__v32hi) __B,
968 (__v32hi) __W,
969 (__mmask32) __U);
970 }
971
972 extern __inline __m512i
973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
974 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
975 {
976 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
977 (__v32hi) __B,
978 (__v32hi)
979 _mm512_setzero_hi (),
980 (__mmask32) __U);
981 }
982
983 extern __inline __m512i
984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
985 _mm512_add_epi16 (__m512i __A, __m512i __B)
986 {
987 return (__m512i) ((__v32hu) __A + (__v32hu) __B);
988 }
989
990 extern __inline __m512i
991 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
992 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
993 __m512i __B)
994 {
995 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
996 (__v32hi) __B,
997 (__v32hi) __W,
998 (__mmask32) __U);
999 }
1000
1001 extern __inline __m512i
1002 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1003 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1004 {
1005 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1006 (__v32hi) __B,
1007 (__v32hi)
1008 _mm512_setzero_hi (),
1009 (__mmask32) __U);
1010 }
1011
1012 extern __inline __m512i
1013 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1014 _mm512_adds_epi16 (__m512i __A, __m512i __B)
1015 {
1016 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1017 (__v32hi) __B,
1018 (__v32hi)
1019 _mm512_setzero_hi (),
1020 (__mmask32) -1);
1021 }
1022
1023 extern __inline __m512i
1024 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1025 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1026 __m512i __B)
1027 {
1028 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1029 (__v32hi) __B,
1030 (__v32hi) __W,
1031 (__mmask32) __U);
1032 }
1033
1034 extern __inline __m512i
1035 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1036 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1037 {
1038 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1039 (__v32hi) __B,
1040 (__v32hi)
1041 _mm512_setzero_hi (),
1042 (__mmask32) __U);
1043 }
1044
1045 extern __inline __m512i
1046 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1047 _mm512_adds_epu16 (__m512i __A, __m512i __B)
1048 {
1049 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1050 (__v32hi) __B,
1051 (__v32hi)
1052 _mm512_setzero_hi (),
1053 (__mmask32) -1);
1054 }
1055
1056 extern __inline __m512i
1057 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1058 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1059 __m512i __B)
1060 {
1061 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1062 (__v32hi) __B,
1063 (__v32hi) __W,
1064 (__mmask32) __U);
1065 }
1066
1067 extern __inline __m512i
1068 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1069 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1070 {
1071 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1072 (__v32hi) __B,
1073 (__v32hi)
1074 _mm512_setzero_hi (),
1075 (__mmask32) __U);
1076 }
1077
1078 extern __inline __m512i
1079 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1080 _mm512_srl_epi16 (__m512i __A, __m128i __B)
1081 {
1082 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1083 (__v8hi) __B,
1084 (__v32hi)
1085 _mm512_setzero_hi (),
1086 (__mmask32) -1);
1087 }
1088
1089 extern __inline __m512i
1090 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1091 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1092 __m128i __B)
1093 {
1094 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1095 (__v8hi) __B,
1096 (__v32hi) __W,
1097 (__mmask32) __U);
1098 }
1099
1100 extern __inline __m512i
1101 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1102 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1103 {
1104 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1105 (__v8hi) __B,
1106 (__v32hi)
1107 _mm512_setzero_hi (),
1108 (__mmask32) __U);
1109 }
1110
1111 extern __inline __m512i
1112 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1113 _mm512_packs_epi16 (__m512i __A, __m512i __B)
1114 {
1115 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1116 (__v32hi) __B,
1117 (__v64qi)
1118 _mm512_setzero_qi (),
1119 (__mmask64) -1);
1120 }
1121
1122 extern __inline __m512i
1123 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1124 _mm512_sll_epi16 (__m512i __A, __m128i __B)
1125 {
1126 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1127 (__v8hi) __B,
1128 (__v32hi)
1129 _mm512_setzero_hi (),
1130 (__mmask32) -1);
1131 }
1132
1133 extern __inline __m512i
1134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1135 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1136 __m128i __B)
1137 {
1138 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1139 (__v8hi) __B,
1140 (__v32hi) __W,
1141 (__mmask32) __U);
1142 }
1143
1144 extern __inline __m512i
1145 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1146 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1147 {
1148 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1149 (__v8hi) __B,
1150 (__v32hi)
1151 _mm512_setzero_hi (),
1152 (__mmask32) __U);
1153 }
1154
1155 extern __inline __m512i
1156 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1157 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
1158 {
1159 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1160 (__v64qi) __Y,
1161 (__v32hi)
1162 _mm512_setzero_hi (),
1163 (__mmask32) -1);
1164 }
1165
1166 extern __inline __m512i
1167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1168 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1169 __m512i __Y)
1170 {
1171 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1172 (__v64qi) __Y,
1173 (__v32hi) __W,
1174 (__mmask32) __U);
1175 }
1176
1177 extern __inline __m512i
1178 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1179 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
1180 {
1181 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1182 (__v64qi) __Y,
1183 (__v32hi)
1184 _mm512_setzero_hi (),
1185 (__mmask32) __U);
1186 }
1187
1188 extern __inline __m512i
1189 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1190 _mm512_madd_epi16 (__m512i __A, __m512i __B)
1191 {
1192 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1193 (__v32hi) __B,
1194 (__v16si)
1195 _mm512_setzero_si512 (),
1196 (__mmask16) -1);
1197 }
1198
1199 extern __inline __m512i
1200 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1201 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1202 __m512i __B)
1203 {
1204 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1205 (__v32hi) __B,
1206 (__v16si) __W,
1207 (__mmask16) __U);
1208 }
1209
1210 extern __inline __m512i
1211 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1212 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
1213 {
1214 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1215 (__v32hi) __B,
1216 (__v16si)
1217 _mm512_setzero_si512 (),
1218 (__mmask16) __U);
1219 }
1220
1221 extern __inline __m512i
1222 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1223 _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
1224 {
1225 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1226 (__v64qi) __B,
1227 (__v64qi)
1228 _mm512_setzero_qi (),
1229 (__mmask64) -1);
1230 }
1231
1232 extern __inline __m512i
1233 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1234 _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1235 __m512i __B)
1236 {
1237 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1238 (__v64qi) __B,
1239 (__v64qi) __W,
1240 (__mmask64) __U);
1241 }
1242
1243 extern __inline __m512i
1244 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1245 _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1246 {
1247 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1248 (__v64qi) __B,
1249 (__v64qi)
1250 _mm512_setzero_qi(),
1251 (__mmask64) __U);
1252 }
1253
1254 extern __inline __m512i
1255 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1256 _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
1257 {
1258 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1259 (__v32hi) __B,
1260 (__v32hi)
1261 _mm512_setzero_hi (),
1262 (__mmask32) -1);
1263 }
1264
1265 extern __inline __m512i
1266 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1267 _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1268 __m512i __B)
1269 {
1270 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1271 (__v32hi) __B,
1272 (__v32hi) __W,
1273 (__mmask32) __U);
1274 }
1275
1276 extern __inline __m512i
1277 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1278 _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1279 {
1280 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1281 (__v32hi) __B,
1282 (__v32hi)
1283 _mm512_setzero_hi(),
1284 (__mmask32) __U);
1285 }
1286
1287 extern __inline __m512i
1288 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1289 _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
1290 {
1291 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1292 (__v64qi) __B,
1293 (__v64qi)
1294 _mm512_setzero_qi (),
1295 (__mmask64) -1);
1296 }
1297
1298 extern __inline __m512i
1299 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1300 _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1301 __m512i __B)
1302 {
1303 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1304 (__v64qi) __B,
1305 (__v64qi) __W,
1306 (__mmask64) __U);
1307 }
1308
1309 extern __inline __m512i
1310 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1311 _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1312 {
1313 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1314 (__v64qi) __B,
1315 (__v64qi)
1316 _mm512_setzero_qi(),
1317 (__mmask64) __U);
1318 }
1319
1320 extern __inline __m512i
1321 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1322 _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
1323 {
1324 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1325 (__v32hi) __B,
1326 (__v32hi)
1327 _mm512_setzero_hi (),
1328 (__mmask32) -1);
1329 }
1330
1331 extern __inline __m512i
1332 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1333 _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1334 __m512i __B)
1335 {
1336 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1337 (__v32hi) __B,
1338 (__v32hi) __W,
1339 (__mmask32) __U);
1340 }
1341
1342 extern __inline __m512i
1343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1344 _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1345 {
1346 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1347 (__v32hi) __B,
1348 (__v32hi)
1349 _mm512_setzero_hi(),
1350 (__mmask32) __U);
1351 }
1352
1353 extern __inline __mmask64
1354 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1355 _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
1356 {
1357 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1358 (__v64qi) __B, 0,
1359 (__mmask64) -1);
1360 }
1361
1362 extern __inline __mmask64
1363 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1364 _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
1365 {
1366 return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1367 (__v64qi) __B,
1368 (__mmask64) -1);
1369 }
1370
1371 extern __inline __mmask64
1372 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1373 _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1374 {
1375 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1376 (__v64qi) __B, 0,
1377 __U);
1378 }
1379
1380 extern __inline __mmask64
1381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1382 _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1383 {
1384 return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1385 (__v64qi) __B,
1386 __U);
1387 }
1388
1389 extern __inline __mmask32
1390 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1391 _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
1392 {
1393 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1394 (__v32hi) __B, 0,
1395 (__mmask32) -1);
1396 }
1397
1398 extern __inline __mmask32
1399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1400 _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
1401 {
1402 return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1403 (__v32hi) __B,
1404 (__mmask32) -1);
1405 }
1406
1407 extern __inline __mmask32
1408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1409 _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1410 {
1411 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1412 (__v32hi) __B, 0,
1413 __U);
1414 }
1415
1416 extern __inline __mmask32
1417 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1418 _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1419 {
1420 return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1421 (__v32hi) __B,
1422 __U);
1423 }
1424
1425 extern __inline __mmask64
1426 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1427 _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
1428 {
1429 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1430 (__v64qi) __B, 6,
1431 (__mmask64) -1);
1432 }
1433
1434 extern __inline __mmask64
1435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1436 _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
1437 {
1438 return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1439 (__v64qi) __B,
1440 (__mmask64) -1);
1441 }
1442
1443 extern __inline __mmask64
1444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1445 _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1446 {
1447 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1448 (__v64qi) __B, 6,
1449 __U);
1450 }
1451
1452 extern __inline __mmask64
1453 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1454 _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1455 {
1456 return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1457 (__v64qi) __B,
1458 __U);
1459 }
1460
1461 extern __inline __mmask32
1462 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1463 _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
1464 {
1465 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1466 (__v32hi) __B, 6,
1467 (__mmask32) -1);
1468 }
1469
1470 extern __inline __mmask32
1471 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1472 _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
1473 {
1474 return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1475 (__v32hi) __B,
1476 (__mmask32) -1);
1477 }
1478
1479 extern __inline __mmask32
1480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1481 _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1482 {
1483 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1484 (__v32hi) __B, 6,
1485 __U);
1486 }
1487
1488 extern __inline __mmask32
1489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1490 _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1491 {
1492 return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1493 (__v32hi) __B,
1494 __U);
1495 }
1496
1497 extern __inline __mmask64
1498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1499 _mm512_movepi8_mask (__m512i __A)
1500 {
1501 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1502 }
1503
1504 extern __inline __mmask32
1505 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1506 _mm512_movepi16_mask (__m512i __A)
1507 {
1508 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1509 }
1510
1511 extern __inline __m512i
1512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1513 _mm512_movm_epi8 (__mmask64 __A)
1514 {
1515 return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1516 }
1517
1518 extern __inline __m512i
1519 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1520 _mm512_movm_epi16 (__mmask32 __A)
1521 {
1522 return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1523 }
1524
1525 extern __inline __mmask64
1526 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1527 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1528 {
1529 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1530 (__v64qi) __B,
1531 (__mmask64) -1);
1532 }
1533
1534 extern __inline __mmask64
1535 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1536 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1537 {
1538 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1539 (__v64qi) __B, __U);
1540 }
1541
1542 extern __inline __mmask32
1543 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1544 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1545 {
1546 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1547 (__v32hi) __B,
1548 (__mmask32) -1);
1549 }
1550
1551 extern __inline __mmask32
1552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1553 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1554 {
1555 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1556 (__v32hi) __B, __U);
1557 }
1558
1559 extern __inline __mmask64
1560 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1561 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1562 {
1563 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1564 (__v64qi) __B,
1565 (__mmask64) -1);
1566 }
1567
1568 extern __inline __mmask64
1569 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1570 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1571 {
1572 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1573 (__v64qi) __B, __U);
1574 }
1575
1576 extern __inline __mmask32
1577 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1578 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1579 {
1580 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1581 (__v32hi) __B,
1582 (__mmask32) -1);
1583 }
1584
1585 extern __inline __mmask32
1586 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1587 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1588 {
1589 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1590 (__v32hi) __B, __U);
1591 }
1592
1593 extern __inline __m512i
1594 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1595 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1596 {
1597 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1598 (__v64qi) __B,
1599 (__v64qi)
1600 _mm512_setzero_qi (),
1601 (__mmask64) -1);
1602 }
1603
1604 extern __inline __m512i
1605 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1606 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1607 __m512i __B)
1608 {
1609 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1610 (__v64qi) __B,
1611 (__v64qi) __W,
1612 (__mmask64) __U);
1613 }
1614
1615 extern __inline __m512i
1616 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1617 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1618 {
1619 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1620 (__v64qi) __B,
1621 (__v64qi)
1622 _mm512_setzero_qi (),
1623 (__mmask64) __U);
1624 }
1625
1626 extern __inline __m512i
1627 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1628 _mm512_min_epu16 (__m512i __A, __m512i __B)
1629 {
1630 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1631 (__v32hi) __B,
1632 (__v32hi)
1633 _mm512_setzero_hi (),
1634 (__mmask32) -1);
1635 }
1636
1637 extern __inline __m512i
1638 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1639 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1640 {
1641 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1642 (__v32hi) __B,
1643 (__v32hi)
1644 _mm512_setzero_hi(),
1645 (__mmask32) __M);
1646 }
1647
1648 extern __inline __m512i
1649 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1650 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1651 __m512i __B)
1652 {
1653 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1654 (__v32hi) __B,
1655 (__v32hi) __W,
1656 (__mmask32) __M);
1657 }
1658
1659 extern __inline __m512i
1660 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1661 _mm512_min_epi16 (__m512i __A, __m512i __B)
1662 {
1663 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1664 (__v32hi) __B,
1665 (__v32hi)
1666 _mm512_setzero_hi (),
1667 (__mmask32) -1);
1668 }
1669
1670 extern __inline __m512i
1671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1672 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1673 {
1674 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1675 (__v32hi) __B,
1676 (__v32hi)
1677 _mm512_setzero_hi(),
1678 (__mmask32) __M);
1679 }
1680
1681 extern __inline __m512i
1682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1683 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1684 __m512i __B)
1685 {
1686 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1687 (__v32hi) __B,
1688 (__v32hi) __W,
1689 (__mmask32) __M);
1690 }
1691
1692 extern __inline __m512i
1693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1694 _mm512_max_epu8 (__m512i __A, __m512i __B)
1695 {
1696 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1697 (__v64qi) __B,
1698 (__v64qi)
1699 _mm512_setzero_qi (),
1700 (__mmask64) -1);
1701 }
1702
1703 extern __inline __m512i
1704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1705 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1706 {
1707 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1708 (__v64qi) __B,
1709 (__v64qi)
1710 _mm512_setzero_qi(),
1711 (__mmask64) __M);
1712 }
1713
1714 extern __inline __m512i
1715 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1716 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1717 __m512i __B)
1718 {
1719 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1720 (__v64qi) __B,
1721 (__v64qi) __W,
1722 (__mmask64) __M);
1723 }
1724
1725 extern __inline __m512i
1726 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1727 _mm512_max_epi8 (__m512i __A, __m512i __B)
1728 {
1729 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1730 (__v64qi) __B,
1731 (__v64qi)
1732 _mm512_setzero_qi (),
1733 (__mmask64) -1);
1734 }
1735
1736 extern __inline __m512i
1737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1738 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1739 {
1740 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1741 (__v64qi) __B,
1742 (__v64qi)
1743 _mm512_setzero_qi(),
1744 (__mmask64) __M);
1745 }
1746
1747 extern __inline __m512i
1748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1749 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1750 __m512i __B)
1751 {
1752 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1753 (__v64qi) __B,
1754 (__v64qi) __W,
1755 (__mmask64) __M);
1756 }
1757
1758 extern __inline __m512i
1759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1760 _mm512_min_epu8 (__m512i __A, __m512i __B)
1761 {
1762 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1763 (__v64qi) __B,
1764 (__v64qi)
1765 _mm512_setzero_qi (),
1766 (__mmask64) -1);
1767 }
1768
1769 extern __inline __m512i
1770 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1771 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1772 {
1773 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1774 (__v64qi) __B,
1775 (__v64qi)
1776 _mm512_setzero_qi(),
1777 (__mmask64) __M);
1778 }
1779
1780 extern __inline __m512i
1781 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1782 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1783 __m512i __B)
1784 {
1785 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1786 (__v64qi) __B,
1787 (__v64qi) __W,
1788 (__mmask64) __M);
1789 }
1790
1791 extern __inline __m512i
1792 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1793 _mm512_min_epi8 (__m512i __A, __m512i __B)
1794 {
1795 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1796 (__v64qi) __B,
1797 (__v64qi)
1798 _mm512_setzero_qi (),
1799 (__mmask64) -1);
1800 }
1801
1802 extern __inline __m512i
1803 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1804 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1805 {
1806 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1807 (__v64qi) __B,
1808 (__v64qi)
1809 _mm512_setzero_qi(),
1810 (__mmask64) __M);
1811 }
1812
1813 extern __inline __m512i
1814 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1815 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1816 __m512i __B)
1817 {
1818 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1819 (__v64qi) __B,
1820 (__v64qi) __W,
1821 (__mmask64) __M);
1822 }
1823
1824 extern __inline __m512i
1825 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1826 _mm512_max_epi16 (__m512i __A, __m512i __B)
1827 {
1828 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1829 (__v32hi) __B,
1830 (__v32hi)
1831 _mm512_setzero_hi (),
1832 (__mmask32) -1);
1833 }
1834
1835 extern __inline __m512i
1836 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1837 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1838 {
1839 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1840 (__v32hi) __B,
1841 (__v32hi)
1842 _mm512_setzero_hi(),
1843 (__mmask32) __M);
1844 }
1845
1846 extern __inline __m512i
1847 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1848 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1849 __m512i __B)
1850 {
1851 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1852 (__v32hi) __B,
1853 (__v32hi) __W,
1854 (__mmask32) __M);
1855 }
1856
1857 extern __inline __m512i
1858 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1859 _mm512_max_epu16 (__m512i __A, __m512i __B)
1860 {
1861 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1862 (__v32hi) __B,
1863 (__v32hi)
1864 _mm512_setzero_hi (),
1865 (__mmask32) -1);
1866 }
1867
1868 extern __inline __m512i
1869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1870 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1871 {
1872 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1873 (__v32hi) __B,
1874 (__v32hi)
1875 _mm512_setzero_hi(),
1876 (__mmask32) __M);
1877 }
1878
1879 extern __inline __m512i
1880 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1881 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1882 __m512i __B)
1883 {
1884 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1885 (__v32hi) __B,
1886 (__v32hi) __W,
1887 (__mmask32) __M);
1888 }
1889
1890 extern __inline __m512i
1891 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1892 _mm512_sra_epi16 (__m512i __A, __m128i __B)
1893 {
1894 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1895 (__v8hi) __B,
1896 (__v32hi)
1897 _mm512_setzero_hi (),
1898 (__mmask32) -1);
1899 }
1900
1901 extern __inline __m512i
1902 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1903 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1904 __m128i __B)
1905 {
1906 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1907 (__v8hi) __B,
1908 (__v32hi) __W,
1909 (__mmask32) __U);
1910 }
1911
1912 extern __inline __m512i
1913 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1914 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1915 {
1916 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1917 (__v8hi) __B,
1918 (__v32hi)
1919 _mm512_setzero_hi (),
1920 (__mmask32) __U);
1921 }
1922
1923 extern __inline __m512i
1924 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1925 _mm512_srav_epi16 (__m512i __A, __m512i __B)
1926 {
1927 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1928 (__v32hi) __B,
1929 (__v32hi)
1930 _mm512_setzero_hi (),
1931 (__mmask32) -1);
1932 }
1933
1934 extern __inline __m512i
1935 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1936 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1937 __m512i __B)
1938 {
1939 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1940 (__v32hi) __B,
1941 (__v32hi) __W,
1942 (__mmask32) __U);
1943 }
1944
1945 extern __inline __m512i
1946 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1947 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1948 {
1949 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1950 (__v32hi) __B,
1951 (__v32hi)
1952 _mm512_setzero_hi (),
1953 (__mmask32) __U);
1954 }
1955
1956 extern __inline __m512i
1957 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1958 _mm512_srlv_epi16 (__m512i __A, __m512i __B)
1959 {
1960 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1961 (__v32hi) __B,
1962 (__v32hi)
1963 _mm512_setzero_hi (),
1964 (__mmask32) -1);
1965 }
1966
1967 extern __inline __m512i
1968 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1969 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1970 __m512i __B)
1971 {
1972 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1973 (__v32hi) __B,
1974 (__v32hi) __W,
1975 (__mmask32) __U);
1976 }
1977
1978 extern __inline __m512i
1979 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1980 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1981 {
1982 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1983 (__v32hi) __B,
1984 (__v32hi)
1985 _mm512_setzero_hi (),
1986 (__mmask32) __U);
1987 }
1988
1989 extern __inline __m512i
1990 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1991 _mm512_sllv_epi16 (__m512i __A, __m512i __B)
1992 {
1993 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1994 (__v32hi) __B,
1995 (__v32hi)
1996 _mm512_setzero_hi (),
1997 (__mmask32) -1);
1998 }
1999
2000 extern __inline __m512i
2001 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2002 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2003 __m512i __B)
2004 {
2005 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2006 (__v32hi) __B,
2007 (__v32hi) __W,
2008 (__mmask32) __U);
2009 }
2010
2011 extern __inline __m512i
2012 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2013 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2014 {
2015 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2016 (__v32hi) __B,
2017 (__v32hi)
2018 _mm512_setzero_hi (),
2019 (__mmask32) __U);
2020 }
2021
2022 extern __inline __m512i
2023 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2024 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2025 __m512i __B)
2026 {
2027 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2028 (__v32hi) __B,
2029 (__v64qi) __W,
2030 (__mmask64) __M);
2031 }
2032
2033 extern __inline __m512i
2034 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2035 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2036 {
2037 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2038 (__v32hi) __B,
2039 (__v64qi)
2040 _mm512_setzero_qi(),
2041 __M);
2042 }
2043
2044 extern __inline __m512i
2045 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2046 _mm512_packus_epi16 (__m512i __A, __m512i __B)
2047 {
2048 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2049 (__v32hi) __B,
2050 (__v64qi)
2051 _mm512_setzero_qi (),
2052 (__mmask64) -1);
2053 }
2054
2055 extern __inline __m512i
2056 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2057 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2058 __m512i __B)
2059 {
2060 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2061 (__v32hi) __B,
2062 (__v64qi) __W,
2063 (__mmask64) __M);
2064 }
2065
2066 extern __inline __m512i
2067 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2068 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2069 {
2070 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2071 (__v32hi) __B,
2072 (__v64qi)
2073 _mm512_setzero_qi(),
2074 (__mmask64) __M);
2075 }
2076
2077 extern __inline __m512i
2078 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2079 _mm512_abs_epi8 (__m512i __A)
2080 {
2081 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2082 (__v64qi)
2083 _mm512_setzero_qi (),
2084 (__mmask64) -1);
2085 }
2086
2087 extern __inline __m512i
2088 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2089 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2090 {
2091 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2092 (__v64qi) __W,
2093 (__mmask64) __U);
2094 }
2095
2096 extern __inline __m512i
2097 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2098 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
2099 {
2100 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2101 (__v64qi)
2102 _mm512_setzero_qi (),
2103 (__mmask64) __U);
2104 }
2105
2106 extern __inline __m512i
2107 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2108 _mm512_abs_epi16 (__m512i __A)
2109 {
2110 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2111 (__v32hi)
2112 _mm512_setzero_hi (),
2113 (__mmask32) -1);
2114 }
2115
2116 extern __inline __m512i
2117 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2118 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2119 {
2120 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2121 (__v32hi) __W,
2122 (__mmask32) __U);
2123 }
2124
2125 extern __inline __m512i
2126 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2127 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
2128 {
2129 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2130 (__v32hi)
2131 _mm512_setzero_hi (),
2132 (__mmask32) __U);
2133 }
2134
2135 extern __inline __mmask64
2136 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2137 _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2138 {
2139 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2140 (__v64qi) __Y, 4,
2141 (__mmask64) __M);
2142 }
2143
2144 extern __inline __mmask64
2145 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2146 _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2147 {
2148 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2149 (__v64qi) __Y, 1,
2150 (__mmask64) __M);
2151 }
2152
2153 extern __inline __mmask64
2154 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2155 _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2156 {
2157 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2158 (__v64qi) __Y, 5,
2159 (__mmask64) __M);
2160 }
2161
2162 extern __inline __mmask64
2163 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2164 _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2165 {
2166 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2167 (__v64qi) __Y, 2,
2168 (__mmask64) __M);
2169 }
2170
2171 extern __inline __mmask32
2172 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2173 _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2174 {
2175 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2176 (__v32hi) __Y, 4,
2177 (__mmask32) __M);
2178 }
2179
2180 extern __inline __mmask32
2181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2182 _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2183 {
2184 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2185 (__v32hi) __Y, 1,
2186 (__mmask32) __M);
2187 }
2188
2189 extern __inline __mmask32
2190 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2191 _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2192 {
2193 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2194 (__v32hi) __Y, 5,
2195 (__mmask32) __M);
2196 }
2197
2198 extern __inline __mmask32
2199 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2200 _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2201 {
2202 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2203 (__v32hi) __Y, 2,
2204 (__mmask32) __M);
2205 }
2206
2207 extern __inline __mmask64
2208 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2209 _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2210 {
2211 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2212 (__v64qi) __Y, 4,
2213 (__mmask64) __M);
2214 }
2215
2216 extern __inline __mmask64
2217 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2218 _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2219 {
2220 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2221 (__v64qi) __Y, 1,
2222 (__mmask64) __M);
2223 }
2224
2225 extern __inline __mmask64
2226 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2227 _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2228 {
2229 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2230 (__v64qi) __Y, 5,
2231 (__mmask64) __M);
2232 }
2233
2234 extern __inline __mmask64
2235 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2236 _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2237 {
2238 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2239 (__v64qi) __Y, 2,
2240 (__mmask64) __M);
2241 }
2242
2243 extern __inline __mmask32
2244 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2245 _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2246 {
2247 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2248 (__v32hi) __Y, 4,
2249 (__mmask32) __M);
2250 }
2251
2252 extern __inline __mmask32
2253 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2254 _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2255 {
2256 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2257 (__v32hi) __Y, 1,
2258 (__mmask32) __M);
2259 }
2260
2261 extern __inline __mmask32
2262 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2263 _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2264 {
2265 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2266 (__v32hi) __Y, 5,
2267 (__mmask32) __M);
2268 }
2269
2270 extern __inline __mmask32
2271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2272 _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2273 {
2274 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2275 (__v32hi) __Y, 2,
2276 (__mmask32) __M);
2277 }
2278
2279 extern __inline __mmask64
2280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2281 _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
2282 {
2283 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2284 (__v64qi) __Y, 4,
2285 (__mmask64) -1);
2286 }
2287
2288 extern __inline __mmask64
2289 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2290 _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
2291 {
2292 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2293 (__v64qi) __Y, 1,
2294 (__mmask64) -1);
2295 }
2296
2297 extern __inline __mmask64
2298 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2299 _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
2300 {
2301 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2302 (__v64qi) __Y, 5,
2303 (__mmask64) -1);
2304 }
2305
2306 extern __inline __mmask64
2307 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2308 _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
2309 {
2310 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2311 (__v64qi) __Y, 2,
2312 (__mmask64) -1);
2313 }
2314
2315 extern __inline __mmask32
2316 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2317 _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
2318 {
2319 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2320 (__v32hi) __Y, 4,
2321 (__mmask32) -1);
2322 }
2323
2324 extern __inline __mmask32
2325 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2326 _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
2327 {
2328 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2329 (__v32hi) __Y, 1,
2330 (__mmask32) -1);
2331 }
2332
2333 extern __inline __mmask32
2334 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2335 _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
2336 {
2337 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2338 (__v32hi) __Y, 5,
2339 (__mmask32) -1);
2340 }
2341
2342 extern __inline __mmask32
2343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2344 _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
2345 {
2346 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2347 (__v32hi) __Y, 2,
2348 (__mmask32) -1);
2349 }
2350
2351 extern __inline __mmask64
2352 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2353 _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
2354 {
2355 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2356 (__v64qi) __Y, 4,
2357 (__mmask64) -1);
2358 }
2359
2360 extern __inline __mmask64
2361 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2362 _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
2363 {
2364 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2365 (__v64qi) __Y, 1,
2366 (__mmask64) -1);
2367 }
2368
2369 extern __inline __mmask64
2370 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2371 _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
2372 {
2373 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2374 (__v64qi) __Y, 5,
2375 (__mmask64) -1);
2376 }
2377
2378 extern __inline __mmask64
2379 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2380 _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
2381 {
2382 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2383 (__v64qi) __Y, 2,
2384 (__mmask64) -1);
2385 }
2386
2387 extern __inline __mmask32
2388 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2389 _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
2390 {
2391 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2392 (__v32hi) __Y, 4,
2393 (__mmask32) -1);
2394 }
2395
2396 extern __inline __mmask32
2397 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2398 _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
2399 {
2400 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2401 (__v32hi) __Y, 1,
2402 (__mmask32) -1);
2403 }
2404
2405 extern __inline __mmask32
2406 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2407 _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
2408 {
2409 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2410 (__v32hi) __Y, 5,
2411 (__mmask32) -1);
2412 }
2413
2414 extern __inline __mmask32
2415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2416 _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
2417 {
2418 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2419 (__v32hi) __Y, 2,
2420 (__mmask32) -1);
2421 }
2422
2423 extern __inline __m512i
2424 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2425 _mm512_packs_epi32 (__m512i __A, __m512i __B)
2426 {
2427 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2428 (__v16si) __B,
2429 (__v32hi)
2430 _mm512_setzero_hi (),
2431 (__mmask32) -1);
2432 }
2433
2434 extern __inline __m512i
2435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2436 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2437 {
2438 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2439 (__v16si) __B,
2440 (__v32hi)
2441 _mm512_setzero_hi (),
2442 __M);
2443 }
2444
2445 extern __inline __m512i
2446 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2447 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2448 __m512i __B)
2449 {
2450 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2451 (__v16si) __B,
2452 (__v32hi) __W,
2453 __M);
2454 }
2455
2456 extern __inline __m512i
2457 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2458 _mm512_packus_epi32 (__m512i __A, __m512i __B)
2459 {
2460 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2461 (__v16si) __B,
2462 (__v32hi)
2463 _mm512_setzero_hi (),
2464 (__mmask32) -1);
2465 }
2466
2467 extern __inline __m512i
2468 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2469 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2470 {
2471 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2472 (__v16si) __B,
2473 (__v32hi)
2474 _mm512_setzero_hi (),
2475 __M);
2476 }
2477
2478 extern __inline __m512i
2479 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2480 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2481 __m512i __B)
2482 {
2483 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2484 (__v16si) __B,
2485 (__v32hi) __W,
2486 __M);
2487 }
2488
2489 #ifdef __OPTIMIZE__
2490 extern __inline __m512i
2491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2492 _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
2493 {
2494 return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
2495 (__v8di) __B, __N * 8);
2496 }
2497
2498 extern __inline __m512i
2499 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2500 _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
2501 __m512i __B, const int __N)
2502 {
2503 return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2504 (__v8di) __B,
2505 __N * 8,
2506 (__v8di) __W,
2507 (__mmask64) __U);
2508 }
2509
2510 extern __inline __m512i
2511 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2512 _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
2513 const int __N)
2514 {
2515 return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2516 (__v8di) __B,
2517 __N * 8,
2518 (__v8di)
2519 _mm512_setzero_si512 (),
2520 (__mmask64) __U);
2521 }
2522
2523 extern __inline __m512i
2524 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2525 _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
2526 {
2527 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2528 (__v64qi) __B,
2529 __imm,
2530 (__v32hi)
2531 _mm512_setzero_hi (),
2532 (__mmask32) -1);
2533 }
2534
2535 extern __inline __m512i
2536 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2537 _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
2538 __m512i __B, const int __imm)
2539 {
2540 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2541 (__v64qi) __B,
2542 __imm,
2543 (__v32hi) __W,
2544 (__mmask32) __U);
2545 }
2546
2547 extern __inline __m512i
2548 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2549 _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
2550 const int __imm)
2551 {
2552 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2553 (__v64qi) __B,
2554 __imm,
2555 (__v32hi)
2556 _mm512_setzero_hi(),
2557 (__mmask32) __U);
2558 }
2559
2560 extern __inline __m512i
2561 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2562 _mm512_srli_epi16 (__m512i __A, const int __imm)
2563 {
2564 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2565 (__v32hi)
2566 _mm512_setzero_hi (),
2567 (__mmask32) -1);
2568 }
2569
2570 extern __inline __m512i
2571 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2572 _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2573 const int __imm)
2574 {
2575 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2576 (__v32hi) __W,
2577 (__mmask32) __U);
2578 }
2579
2580 extern __inline __m512i
2581 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2582 _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2583 {
2584 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2585 (__v32hi)
2586 _mm512_setzero_hi (),
2587 (__mmask32) __U);
2588 }
2589
2590 extern __inline __m512i
2591 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2592 _mm512_slli_epi16 (__m512i __A, const int __B)
2593 {
2594 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2595 (__v32hi)
2596 _mm512_setzero_hi (),
2597 (__mmask32) -1);
2598 }
2599
2600 extern __inline __m512i
2601 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2602 _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2603 const int __B)
2604 {
2605 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2606 (__v32hi) __W,
2607 (__mmask32) __U);
2608 }
2609
2610 extern __inline __m512i
2611 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2612 _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
2613 {
2614 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2615 (__v32hi)
2616 _mm512_setzero_hi (),
2617 (__mmask32) __U);
2618 }
2619
2620 extern __inline __m512i
2621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2622 _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
2623 {
2624 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2625 __imm,
2626 (__v32hi)
2627 _mm512_setzero_hi (),
2628 (__mmask32) -1);
2629 }
2630
2631 extern __inline __m512i
2632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2633 _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2634 const int __imm)
2635 {
2636 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2637 __imm,
2638 (__v32hi) __W,
2639 (__mmask32) __U);
2640 }
2641
2642 extern __inline __m512i
2643 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2644 _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
2645 const int __imm)
2646 {
2647 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2648 __imm,
2649 (__v32hi)
2650 _mm512_setzero_hi (),
2651 (__mmask32) __U);
2652 }
2653
2654 extern __inline __m512i
2655 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2656 _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
2657 {
2658 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2659 __imm,
2660 (__v32hi)
2661 _mm512_setzero_hi (),
2662 (__mmask32) -1);
2663 }
2664
2665 extern __inline __m512i
2666 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2667 _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2668 const int __imm)
2669 {
2670 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2671 __imm,
2672 (__v32hi) __W,
2673 (__mmask32) __U);
2674 }
2675
2676 extern __inline __m512i
2677 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2678 _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
2679 const int __imm)
2680 {
2681 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2682 __imm,
2683 (__v32hi)
2684 _mm512_setzero_hi (),
2685 (__mmask32) __U);
2686 }
2687
2688 extern __inline __m512i
2689 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2690 _mm512_srai_epi16 (__m512i __A, const int __imm)
2691 {
2692 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2693 (__v32hi)
2694 _mm512_setzero_hi (),
2695 (__mmask32) -1);
2696 }
2697
2698 extern __inline __m512i
2699 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2700 _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2701 const int __imm)
2702 {
2703 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2704 (__v32hi) __W,
2705 (__mmask32) __U);
2706 }
2707
2708 extern __inline __m512i
2709 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2710 _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2711 {
2712 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2713 (__v32hi)
2714 _mm512_setzero_hi (),
2715 (__mmask32) __U);
2716 }
2717
2718 extern __inline __m512i
2719 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2720 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
2721 {
2722 return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
2723 (__v32hi) __W,
2724 (__mmask32) __U);
2725 }
2726
2727 extern __inline __m512i
2728 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2729 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
2730 {
2731 return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
2732 (__v64qi) __W,
2733 (__mmask64) __U);
2734 }
2735
2736 extern __inline __mmask32
2737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2738 _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2739 const int __P)
2740 {
2741 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2742 (__v32hi) __Y, __P,
2743 (__mmask32) __U);
2744 }
2745
2746 extern __inline __mmask32
2747 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2748 _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
2749 {
2750 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2751 (__v32hi) __Y, __P,
2752 (__mmask32) -1);
2753 }
2754
2755 extern __inline __mmask64
2756 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2757 _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2758 const int __P)
2759 {
2760 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2761 (__v64qi) __Y, __P,
2762 (__mmask64) __U);
2763 }
2764
2765 extern __inline __mmask64
2766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2767 _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
2768 {
2769 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2770 (__v64qi) __Y, __P,
2771 (__mmask64) -1);
2772 }
2773
2774 extern __inline __mmask32
2775 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2776 _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2777 const int __P)
2778 {
2779 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2780 (__v32hi) __Y, __P,
2781 (__mmask32) __U);
2782 }
2783
2784 extern __inline __mmask32
2785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2786 _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
2787 {
2788 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2789 (__v32hi) __Y, __P,
2790 (__mmask32) -1);
2791 }
2792
2793 extern __inline __mmask64
2794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2795 _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2796 const int __P)
2797 {
2798 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2799 (__v64qi) __Y, __P,
2800 (__mmask64) __U);
2801 }
2802
2803 extern __inline __mmask64
2804 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2805 _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
2806 {
2807 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2808 (__v64qi) __Y, __P,
2809 (__mmask64) -1);
2810 }
2811
2812 extern __inline __m512i
2813 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2814 _mm512_bslli_epi128 (__m512i __A, const int __N)
2815 {
2816 return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
2817 }
2818
2819 extern __inline __m512i
2820 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2821 _mm512_bsrli_epi128 (__m512i __A, const int __N)
2822 {
2823 return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
2824 }
2825
2826 #else
2827 #define _mm512_alignr_epi8(X, Y, N) \
2828 ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \
2829 (__v8di)(__m512i)(Y), \
2830 (int)(N * 8)))
2831
2832 #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \
2833 ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
2834 (__v8di)(__m512i)(Y), (int)(N * 8), \
2835 (__v8di)(__m512i)(W), (__mmask64)(U)))
2836
2837 #define _mm512_maskz_alignr_epi8(U, X, Y, N) \
2838 ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
2839 (__v8di)(__m512i)(Y), (int)(N * 8), \
2840 (__v8di)(__m512i)_mm512_setzero_si512 (), \
2841 (__mmask64)(U)))
2842
2843 #define _mm512_dbsad_epu8(X, Y, C) \
2844 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2845 (__v64qi)(__m512i) (Y), (int) (C), \
2846 (__v32hi)(__m512i)_mm512_setzero_si512 (),\
2847 (__mmask32)-1))
2848
2849 #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \
2850 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2851 (__v64qi)(__m512i) (Y), (int) (C), \
2852 (__v32hi)(__m512i)(W), \
2853 (__mmask32)(U)))
2854
2855 #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \
2856 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2857 (__v64qi)(__m512i) (Y), (int) (C), \
2858 (__v32hi)(__m512i)_mm512_setzero_si512 (),\
2859 (__mmask32)(U)))
2860
2861 #define _mm512_srli_epi16(A, B) \
2862 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2863 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
2864
2865 #define _mm512_mask_srli_epi16(W, U, A, B) \
2866 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2867 (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
2868
2869 #define _mm512_maskz_srli_epi16(U, A, B) \
2870 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2871 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
2872
2873 #define _mm512_slli_epi16(X, C) \
2874 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2875 (__v32hi)(__m512i)_mm512_setzero_hi(),\
2876 (__mmask32)-1))
2877
2878 #define _mm512_mask_slli_epi16(W, U, X, C) \
2879 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2880 (__v32hi)(__m512i)(W),\
2881 (__mmask32)(U)))
2882
2883 #define _mm512_maskz_slli_epi16(U, X, C) \
2884 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2885 (__v32hi)(__m512i)_mm512_setzero_hi(),\
2886 (__mmask32)(U)))
2887
2888 #define _mm512_shufflehi_epi16(A, B) \
2889 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2890 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2891 (__mmask32)-1))
2892
2893 #define _mm512_mask_shufflehi_epi16(W, U, A, B) \
2894 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2895 (__v32hi)(__m512i)(W), \
2896 (__mmask32)(U)))
2897
2898 #define _mm512_maskz_shufflehi_epi16(U, A, B) \
2899 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2900 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2901 (__mmask32)(U)))
2902
2903 #define _mm512_shufflelo_epi16(A, B) \
2904 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2905 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2906 (__mmask32)-1))
2907
2908 #define _mm512_mask_shufflelo_epi16(W, U, A, B) \
2909 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2910 (__v32hi)(__m512i)(W), \
2911 (__mmask32)(U)))
2912
2913 #define _mm512_maskz_shufflelo_epi16(U, A, B) \
2914 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2915 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2916 (__mmask32)(U)))
2917
2918 #define _mm512_srai_epi16(A, B) \
2919 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2920 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
2921
2922 #define _mm512_mask_srai_epi16(W, U, A, B) \
2923 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2924 (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
2925
2926 #define _mm512_maskz_srai_epi16(U, A, B) \
2927 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2928 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
2929
2930 #define _mm512_mask_blend_epi16(__U, __A, __W) \
2931 ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \
2932 (__v32hi) (__W), \
2933 (__mmask32) (__U)))
2934
2935 #define _mm512_mask_blend_epi8(__U, __A, __W) \
2936 ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \
2937 (__v64qi) (__W), \
2938 (__mmask64) (__U)))
2939
2940 #define _mm512_cmp_epi16_mask(X, Y, P) \
2941 ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
2942 (__v32hi)(__m512i)(Y), (int)(P),\
2943 (__mmask32)(-1)))
2944
2945 #define _mm512_cmp_epi8_mask(X, Y, P) \
2946 ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
2947 (__v64qi)(__m512i)(Y), (int)(P),\
2948 (__mmask64)(-1)))
2949
2950 #define _mm512_cmp_epu16_mask(X, Y, P) \
2951 ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
2952 (__v32hi)(__m512i)(Y), (int)(P),\
2953 (__mmask32)(-1)))
2954
2955 #define _mm512_cmp_epu8_mask(X, Y, P) \
2956 ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
2957 (__v64qi)(__m512i)(Y), (int)(P),\
2958 (__mmask64)(-1)))
2959
2960 #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \
2961 ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
2962 (__v32hi)(__m512i)(Y), (int)(P),\
2963 (__mmask32)(M)))
2964
2965 #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \
2966 ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
2967 (__v64qi)(__m512i)(Y), (int)(P),\
2968 (__mmask64)(M)))
2969
2970 #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \
2971 ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
2972 (__v32hi)(__m512i)(Y), (int)(P),\
2973 (__mmask32)(M)))
2974
2975 #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \
2976 ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
2977 (__v64qi)(__m512i)(Y), (int)(P),\
2978 (__mmask64)(M)))
2979
2980 #define _mm512_bslli_epi128(A, N) \
2981 ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
2982
2983 #define _mm512_bsrli_epi128(A, N) \
2984 ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
2985
2986 #endif
2987
2988 #ifdef __DISABLE_AVX512BW__
2989 #undef __DISABLE_AVX512BW__
2990 #pragma GCC pop_options
2991 #endif /* __DISABLE_AVX512BW__ */
2992
2993 #endif /* _AVX512BWINTRIN_H_INCLUDED */
2994