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