comparison gcc/config/i386/avx512bwintrin.h @ 111:04ced10e8804

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