]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/avx512vlbwintrin.h
AVX-512. 85/n. Add intrinsics headers.
[thirdparty/gcc.git] / gcc / config / i386 / avx512vlbwintrin.h
CommitLineData
936c0fe4
AI
1/* Copyright (C) 2014
2 Free Software Foundation, Inc.
3
4 This file is part of GCC.
5
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 Under Section 7 of GPL version 3, you are granted additional
17 permissions described in the GCC Runtime Library Exception, version
18 3.1, as published by the Free Software Foundation.
19
20 You should have received a copy of the GNU General Public License and
21 a copy of the GCC Runtime Library Exception along with this program;
22 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 <http://www.gnu.org/licenses/>. */
24
25#ifndef _IMMINTRIN_H_INCLUDED
26#error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
27#endif
28
29#ifndef _AVX512VLBWINTRIN_H_INCLUDED
30#define _AVX512VLBWINTRIN_H_INCLUDED
31
32#if !defined(__AVX512VL__) || !defined(__AVX512BW__)
33#pragma GCC push_options
34#pragma GCC target("avx512vl,avx512bw")
35#define __DISABLE_AVX512VLBW__
36#endif /* __AVX512VLBW__ */
37
38
39extern __inline __m256i
40__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
41_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
42{
43 return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
44 (__v32qi) __W,
45 (__mmask32) __U);
46}
47
48extern __inline __m256i
49__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
50_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
51{
52 return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
53 (__v32qi)
54 _mm256_setzero_si256 (),
55 (__mmask32) __U);
56}
57
58extern __inline __m128i
59__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
60_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
61{
62 return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
63 (__v16qi) __W,
64 (__mmask16) __U);
65}
66
67extern __inline __m128i
68__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
69_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
70{
71 return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
72 (__v16qi)
73 _mm_setzero_hi (),
74 (__mmask16) __U);
75}
76
77extern __inline void
78__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
79_mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
80{
81 __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
82 (__v32qi) __A,
83 (__mmask32) __U);
84}
85
86extern __inline void
87__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
88_mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
89{
90 __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
91 (__v16qi) __A,
92 (__mmask16) __U);
93}
94
95extern __inline __m256i
96__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
97_mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
98{
99 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
100 (__v16hi) __W,
101 (__mmask16) __U);
102}
103
104extern __inline __m256i
105__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
106_mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
107{
108 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
109 (__v16hi)
110 _mm256_setzero_si256 (),
111 (__mmask16) __U);
112}
113
114extern __inline __m128i
115__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
116_mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
117{
118 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
119 (__v8hi) __W,
120 (__mmask8) __U);
121}
122
123extern __inline __m128i
124__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
125_mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
126{
127 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
128 (__v8hi)
129 _mm_setzero_hi (),
130 (__mmask8) __U);
131}
132
133
134extern __inline __m256i
135__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
136_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
137{
138 return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
139 (__v16hi) __W,
140 (__mmask16) __U);
141}
142
143extern __inline __m256i
144__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
145_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
146{
147 return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
148 (__v16hi)
149 _mm256_setzero_si256 (),
150 (__mmask16) __U);
151}
152
153extern __inline __m128i
154__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
155_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
156{
157 return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
158 (__v8hi) __W,
159 (__mmask8) __U);
160}
161
162extern __inline __m128i
163__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
164_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
165{
166 return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
167 (__v8hi)
168 _mm_setzero_hi (),
169 (__mmask8) __U);
170}
171
172extern __inline __m256i
173__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
174_mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
175{
176 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
177 (__v32qi) __W,
178 (__mmask32) __U);
179}
180
181extern __inline __m256i
182__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
183_mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
184{
185 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
186 (__v32qi)
187 _mm256_setzero_si256 (),
188 (__mmask32) __U);
189}
190
191extern __inline __m128i
192__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
193_mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
194{
195 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
196 (__v16qi) __W,
197 (__mmask16) __U);
198}
199
200extern __inline __m128i
201__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
202_mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
203{
204 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
205 (__v16qi)
206 _mm_setzero_hi (),
207 (__mmask16) __U);
208}
209
210extern __inline __m128i
211__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
212_mm256_cvtepi16_epi8 (__m256i __A)
213{
214
215 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
216 (__v16qi)_mm_undefined_si128(),
217 (__mmask16) -1);
218}
219
220extern __inline __m128i
221__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
222_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
223{
224 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
225 (__v16qi) __O, __M);
226}
227
228extern __inline __m128i
229__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
230_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A)
231{
232 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
233 (__v16qi)
234 _mm_setzero_si128 (),
235 __M);
236}
237
238extern __inline __m128i
239__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
240_mm_cvtsepi16_epi8 (__m128i __A)
241{
242
243 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
244 (__v16qi)_mm_undefined_si128(),
245 (__mmask8) -1);
246}
247
248extern __inline __m128i
249__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
250_mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
251{
252 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
253 (__v16qi) __O, __M);
254}
255
256extern __inline __m128i
257__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
258_mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A)
259{
260 return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
261 (__v16qi)
262 _mm_setzero_si128 (),
263 __M);
264}
265
266extern __inline __m128i
267__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
268_mm256_cvtsepi16_epi8 (__m256i __A)
269{
270
271 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
272 (__v16qi)_mm_undefined_si128(),
273 (__mmask16) -1);
274}
275
276extern __inline __m128i
277__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
278_mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
279{
280 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
281 (__v16qi) __O, __M);
282}
283
284extern __inline __m128i
285__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
286_mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A)
287{
288 return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
289 (__v16qi)
290 _mm_setzero_si128 (),
291 __M);
292}
293
294extern __inline __m128i
295__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
296_mm_cvtusepi16_epi8 (__m128i __A)
297{
298
299 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
300 (__v16qi)_mm_undefined_si128(),
301 (__mmask8) -1);
302}
303
304extern __inline __m128i
305__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
306_mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
307{
308 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
309 (__v16qi) __O,
310 __M);
311}
312
313extern __inline __m128i
314__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
315_mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A)
316{
317 return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
318 (__v16qi)
319 _mm_setzero_si128 (),
320 __M);
321}
322
323extern __inline __m128i
324__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
325_mm256_cvtusepi16_epi8 (__m256i __A)
326{
327
328 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
329 (__v16qi)_mm_undefined_si128(),
330 (__mmask16) -1);
331}
332
333extern __inline __m128i
334__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
335_mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
336{
337 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
338 (__v16qi) __O,
339 __M);
340}
341
342extern __inline __m128i
343__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
344_mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A)
345{
346 return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
347 (__v16qi)
348 _mm_setzero_si128 (),
349 __M);
350}
351
352extern __inline __m256i
353__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
354_mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
355{
356 return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
357 (__v32qi) __O,
358 __M);
359}
360
361extern __inline __m256i
362__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
363_mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
364{
365 return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
366 (__v32qi)
367 _mm256_setzero_si256 (),
368 __M);
369}
370
371extern __inline __m256i
372__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
373_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
374{
375 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
376 (__v32qi) __O,
377 __M);
378}
379
380extern __inline __m256i
381__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
382_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
383{
384 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
385 (__v32qi)
386 _mm256_setzero_si256 (),
387 __M);
388}
389
390extern __inline __m128i
391__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
392_mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
393{
394 return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
395 (__v16qi) __O,
396 __M);
397}
398
399extern __inline __m128i
400__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
401_mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
402{
403 return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
404 (__v16qi)
405 _mm_setzero_si128 (),
406 __M);
407}
408
409extern __inline __m128i
410__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
411_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
412{
413 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
414 (__v16qi) __O,
415 __M);
416}
417
418extern __inline __m128i
419__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
420_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
421{
422 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
423 (__v16qi)
424 _mm_setzero_si128 (),
425 __M);
426}
427
428extern __inline __m256i
429__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
430_mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
431{
432 return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
433 (__v16hi) __O,
434 __M);
435}
436
437extern __inline __m256i
438__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
439_mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
440{
441 return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
442 (__v16hi)
443 _mm256_setzero_si256 (),
444 __M);
445}
446
447extern __inline __m256i
448__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
449_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
450{
451 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
452 (__v16hi) __O,
453 __M);
454}
455
456extern __inline __m256i
457__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
458_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
459{
460 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
461 (__v16hi)
462 _mm256_setzero_si256 (),
463 __M);
464}
465
466extern __inline __m128i
467__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
468_mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
469{
470 return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
471 (__v8hi) __O,
472 __M);
473}
474
475extern __inline __m128i
476__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
477_mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
478{
479 return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
480 (__v8hi)
481 _mm_setzero_si128 (),
482 __M);
483}
484
485extern __inline __m128i
486__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
487_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
488{
489 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
490 (__v8hi) __O,
491 __M);
492}
493
494extern __inline __m128i
495__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
496_mm_maskz_set1_epi16 (__mmask8 __M, short __A)
497{
498 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
499 (__v8hi)
500 _mm_setzero_si128 (),
501 __M);
502}
503
504extern __inline __m256i
505__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
506_mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
507{
508 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
509 (__v16hi) __A,
510 (__v16hi)
511 _mm256_setzero_si256 (),
512 (__mmask16) -1);
513}
514
515extern __inline __m256i
516__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
517_mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
518 __m256i __B)
519{
520 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
521 (__v16hi) __A,
522 (__v16hi)
523 _mm256_setzero_si256 (),
524 (__mmask16) __M);
525}
526
527extern __inline __m256i
528__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
529_mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
530 __m256i __B)
531{
532 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
533 (__v16hi) __A,
534 (__v16hi) __W,
535 (__mmask16) __M);
536}
537
538extern __inline __m128i
539__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
540_mm_permutexvar_epi16 (__m128i __A, __m128i __B)
541{
542 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
543 (__v8hi) __A,
544 (__v8hi)
545 _mm_setzero_hi (),
546 (__mmask8) -1);
547}
548
549extern __inline __m128i
550__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
551_mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
552{
553 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
554 (__v8hi) __A,
555 (__v8hi)
556 _mm_setzero_si128 (),
557 (__mmask8) __M);
558}
559
560extern __inline __m128i
561__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
562_mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
563 __m128i __B)
564{
565 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
566 (__v8hi) __A,
567 (__v8hi) __W,
568 (__mmask8) __M);
569}
570
571extern __inline __m256i
572__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
573_mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
574{
575 return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
576 /* idx */ ,
577 (__v16hi) __A,
578 (__v16hi) __B,
579 (__mmask16) -
580 1);
581}
582
583extern __inline __m256i
584__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
585_mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
586 __m256i __I, __m256i __B)
587{
588 return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
589 /* idx */ ,
590 (__v16hi) __A,
591 (__v16hi) __B,
592 (__mmask16)
593 __U);
594}
595
596extern __inline __m256i
597__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
598_mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
599 __mmask16 __U, __m256i __B)
600{
601 return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
602 (__v16hi) __I
603 /* idx */ ,
604 (__v16hi) __B,
605 (__mmask16)
606 __U);
607}
608
609extern __inline __m256i
610__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
611_mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
612 __m256i __I, __m256i __B)
613{
614 return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I
615 /* idx */ ,
616 (__v16hi) __A,
617 (__v16hi) __B,
618 (__mmask16)
619 __U);
620}
621
622extern __inline __m128i
623__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
624_mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
625{
626 return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
627 /* idx */ ,
628 (__v8hi) __A,
629 (__v8hi) __B,
630 (__mmask8) -
631 1);
632}
633
634extern __inline __m128i
635__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
636_mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
637 __m128i __B)
638{
639 return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
640 /* idx */ ,
641 (__v8hi) __A,
642 (__v8hi) __B,
643 (__mmask8)
644 __U);
645}
646
647extern __inline __m128i
648__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
649_mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
650 __m128i __B)
651{
652 return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
653 (__v8hi) __I
654 /* idx */ ,
655 (__v8hi) __B,
656 (__mmask8)
657 __U);
658}
659
660extern __inline __m128i
661__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
662_mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
663 __m128i __B)
664{
665 return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I
666 /* idx */ ,
667 (__v8hi) __A,
668 (__v8hi) __B,
669 (__mmask8)
670 __U);
671}
672
673extern __inline __m256i
674__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
675_mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
676 __m256i __Y)
677{
678 return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
679 (__v32qi) __Y,
680 (__v16hi) __W,
681 (__mmask16) __U);
682}
683
684extern __inline __m256i
685__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
686_mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
687{
688 return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
689 (__v32qi) __Y,
690 (__v16hi)
691 _mm256_setzero_si256 (),
692 (__mmask16) __U);
693}
694
695extern __inline __m128i
696__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
697_mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
698 __m128i __Y)
699{
700 return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
701 (__v16qi) __Y,
702 (__v8hi) __W,
703 (__mmask8) __U);
704}
705
706extern __inline __m128i
707__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
708_mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
709{
710 return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
711 (__v16qi) __Y,
712 (__v8hi)
713 _mm_setzero_hi (),
714 (__mmask8) __U);
715}
716
717extern __inline __m256i
718__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
719_mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A,
720 __m256i __B)
721{
722 return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
723 (__v16hi) __B,
724 (__v8si) __W,
725 (__mmask8) __U);
726}
727
728extern __inline __m256i
729__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
730_mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B)
731{
732 return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
733 (__v16hi) __B,
734 (__v8si)
735 _mm256_setzero_si256 (),
736 (__mmask8) __U);
737}
738
739extern __inline __m128i
740__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
741_mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
742 __m128i __B)
743{
744 return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
745 (__v8hi) __B,
746 (__v4si) __W,
747 (__mmask8) __U);
748}
749
750extern __inline __m128i
751__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
752_mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
753{
754 return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
755 (__v8hi) __B,
756 (__v4si)
757 _mm_setzero_si128 (),
758 (__mmask8) __U);
759}
760
761extern __inline __mmask16
762__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
763_mm_movepi8_mask (__m128i __A)
764{
765 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
766}
767
768extern __inline __mmask32
769__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
770_mm256_movepi8_mask (__m256i __A)
771{
772 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
773}
774
775extern __inline __mmask8
776__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
777_mm_movepi16_mask (__m128i __A)
778{
779 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
780}
781
782extern __inline __mmask16
783__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
784_mm256_movepi16_mask (__m256i __A)
785{
786 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
787}
788
789extern __inline __m128i
790__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
791_mm_movm_epi8 (__mmask16 __A)
792{
793 return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
794}
795
796extern __inline __m256i
797__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
798_mm256_movm_epi8 (__mmask32 __A)
799{
800 return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
801}
802
803extern __inline __m128i
804__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
805_mm_movm_epi16 (__mmask8 __A)
806{
807 return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
808}
809
810extern __inline __m256i
811__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
812_mm256_movm_epi16 (__mmask16 __A)
813{
814 return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
815}
816
817extern __inline __mmask16
818__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
819_mm_test_epi8_mask (__m128i __A, __m128i __B)
820{
821 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
822 (__v16qi) __B,
823 (__mmask16) -1);
824}
825
826extern __inline __mmask16
827__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
828_mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
829{
830 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
831 (__v16qi) __B, __U);
832}
833
834extern __inline __mmask32
835__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
836_mm256_test_epi8_mask (__m256i __A, __m256i __B)
837{
838 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
839 (__v32qi) __B,
840 (__mmask32) -1);
841}
842
843extern __inline __mmask32
844__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
845_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
846{
847 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
848 (__v32qi) __B, __U);
849}
850
851extern __inline __mmask8
852__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
853_mm_test_epi16_mask (__m128i __A, __m128i __B)
854{
855 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
856 (__v8hi) __B,
857 (__mmask8) -1);
858}
859
860extern __inline __mmask8
861__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
862_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
863{
864 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
865 (__v8hi) __B, __U);
866}
867
868extern __inline __mmask16
869__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
870_mm256_test_epi16_mask (__m256i __A, __m256i __B)
871{
872 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
873 (__v16hi) __B,
874 (__mmask16) -1);
875}
876
877extern __inline __mmask16
878__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
879_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
880{
881 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
882 (__v16hi) __B, __U);
883}
884
885extern __inline __m256i
886__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
887_mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
888{
889 return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
890 (__v16hi) __B,
891 (__v16hi)
892 _mm256_setzero_si256 (),
893 (__mmask16) __M);
894}
895
896extern __inline __m256i
897__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
898_mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
899 __m256i __B)
900{
901 return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
902 (__v16hi) __B,
903 (__v16hi) __W,
904 (__mmask16) __M);
905}
906
907extern __inline __m128i
908__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
909_mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
910{
911 return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
912 (__v8hi) __B,
913 (__v8hi)
914 _mm_setzero_di (),
915 (__mmask8) __M);
916}
917
918extern __inline __m128i
919__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
920_mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
921 __m128i __B)
922{
923 return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
924 (__v8hi) __B,
925 (__v8hi) __W,
926 (__mmask8) __M);
927}
928
929extern __inline __m256i
930__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
931_mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
932{
933 return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
934 (__v16hi) __B,
935 (__v16hi)
936 _mm256_setzero_si256 (),
937 (__mmask16) __M);
938}
939
940extern __inline __m256i
941__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
942_mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
943 __m256i __B)
944{
945 return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
946 (__v16hi) __B,
947 (__v16hi) __W,
948 (__mmask16) __M);
949}
950
951extern __inline __m256i
952__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
953_mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
954{
955 return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
956 (__v32qi) __B,
957 (__v32qi)
958 _mm256_setzero_si256 (),
959 (__mmask32) __M);
960}
961
962extern __inline __m256i
963__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
964_mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
965 __m256i __B)
966{
967 return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
968 (__v32qi) __B,
969 (__v32qi) __W,
970 (__mmask32) __M);
971}
972
973extern __inline __m128i
974__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
975_mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
976{
977 return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
978 (__v16qi) __B,
979 (__v16qi)
980 _mm_setzero_di (),
981 (__mmask16) __M);
982}
983
984extern __inline __m128i
985__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
986_mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
987 __m128i __B)
988{
989 return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
990 (__v16qi) __B,
991 (__v16qi) __W,
992 (__mmask16) __M);
993}
994
995extern __inline __m256i
996__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
997_mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
998{
999 return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1000 (__v32qi) __B,
1001 (__v32qi)
1002 _mm256_setzero_si256 (),
1003 (__mmask32) __M);
1004}
1005
1006extern __inline __m256i
1007__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1008_mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1009 __m256i __B)
1010{
1011 return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1012 (__v32qi) __B,
1013 (__v32qi) __W,
1014 (__mmask32) __M);
1015}
1016
1017extern __inline __m128i
1018__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1019_mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1020{
1021 return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1022 (__v16qi) __B,
1023 (__v16qi)
1024 _mm_setzero_di (),
1025 (__mmask16) __M);
1026}
1027
1028extern __inline __m128i
1029__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1030_mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1031 __m128i __B)
1032{
1033 return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1034 (__v16qi) __B,
1035 (__v16qi) __W,
1036 (__mmask16) __M);
1037}
1038
1039extern __inline __m256i
1040__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1041_mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1042{
1043 return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1044 (__v32qi) __B,
1045 (__v32qi)
1046 _mm256_setzero_si256 (),
1047 (__mmask32) __M);
1048}
1049
1050extern __inline __m256i
1051__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1052_mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1053 __m256i __B)
1054{
1055 return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1056 (__v32qi) __B,
1057 (__v32qi) __W,
1058 (__mmask32) __M);
1059}
1060
1061extern __inline __m128i
1062__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1063_mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1064{
1065 return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1066 (__v16qi) __B,
1067 (__v16qi)
1068 _mm_setzero_di (),
1069 (__mmask16) __M);
1070}
1071
1072extern __inline __m128i
1073__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1074_mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1075 __m128i __B)
1076{
1077 return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1078 (__v16qi) __B,
1079 (__v16qi) __W,
1080 (__mmask16) __M);
1081}
1082
1083extern __inline __m256i
1084__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1085_mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1086{
1087 return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1088 (__v32qi) __B,
1089 (__v32qi)
1090 _mm256_setzero_si256 (),
1091 (__mmask32) __M);
1092}
1093
1094extern __inline __m256i
1095__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1096_mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1097 __m256i __B)
1098{
1099 return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1100 (__v32qi) __B,
1101 (__v32qi) __W,
1102 (__mmask32) __M);
1103}
1104
1105extern __inline __m128i
1106__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1107_mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1108{
1109 return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1110 (__v16qi) __B,
1111 (__v16qi)
1112 _mm_setzero_di (),
1113 (__mmask16) __M);
1114}
1115
1116extern __inline __m128i
1117__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1118_mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1119 __m128i __B)
1120{
1121 return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1122 (__v16qi) __B,
1123 (__v16qi) __W,
1124 (__mmask16) __M);
1125}
1126
1127extern __inline __m256i
1128__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1129_mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1130{
1131 return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1132 (__v16hi) __B,
1133 (__v16hi)
1134 _mm256_setzero_si256 (),
1135 (__mmask16) __M);
1136}
1137
1138extern __inline __m256i
1139__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1140_mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1141 __m256i __B)
1142{
1143 return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1144 (__v16hi) __B,
1145 (__v16hi) __W,
1146 (__mmask16) __M);
1147}
1148
1149extern __inline __m128i
1150__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1151_mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1152{
1153 return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1154 (__v8hi) __B,
1155 (__v8hi)
1156 _mm_setzero_di (),
1157 (__mmask8) __M);
1158}
1159
1160extern __inline __m128i
1161__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1162_mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1163 __m128i __B)
1164{
1165 return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1166 (__v8hi) __B,
1167 (__v8hi) __W,
1168 (__mmask8) __M);
1169}
1170
1171extern __inline __m256i
1172__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1173_mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1174{
1175 return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1176 (__v16hi) __B,
1177 (__v16hi)
1178 _mm256_setzero_si256 (),
1179 (__mmask16) __M);
1180}
1181
1182extern __inline __m256i
1183__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1184_mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1185 __m256i __B)
1186{
1187 return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1188 (__v16hi) __B,
1189 (__v16hi) __W,
1190 (__mmask16) __M);
1191}
1192
1193extern __inline __m128i
1194__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1195_mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1196{
1197 return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1198 (__v8hi) __B,
1199 (__v8hi)
1200 _mm_setzero_di (),
1201 (__mmask8) __M);
1202}
1203
1204extern __inline __m128i
1205__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1206_mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1207 __m128i __B)
1208{
1209 return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1210 (__v8hi) __B,
1211 (__v8hi) __W,
1212 (__mmask8) __M);
1213}
1214
1215extern __inline __m128i
1216__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1217_mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1218{
1219 return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1220 (__v8hi) __B,
1221 (__v8hi)
1222 _mm_setzero_di (),
1223 (__mmask8) __M);
1224}
1225
1226extern __inline __m128i
1227__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1228_mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1229 __m128i __B)
1230{
1231 return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1232 (__v8hi) __B,
1233 (__v8hi) __W,
1234 (__mmask8) __M);
1235}
1236
1237#ifdef __OPTIMIZE__
1238extern __inline __m256i
1239__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1240_mm256_mask_alignr_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1241 __m256i __B, const int __N)
1242{
1243 return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
1244 (__v4di) __B,
1245 __N * 8,
1246 (__v4di) __W,
1247 (__mmask32) __U);
1248}
1249
1250extern __inline __m256i
1251__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1252_mm256_maskz_alignr_epi8 (__mmask32 __U, __m256i __A, __m256i __B,
1253 const int __N)
1254{
1255 return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
1256 (__v4di) __B,
1257 __N * 8,
1258 (__v4di)
1259 _mm256_setzero_si256 (),
1260 (__mmask32) __U);
1261}
1262
1263extern __inline __m128i
1264__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1265_mm_mask_alignr_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1266 __m128i __B, const int __N)
1267{
1268 return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
1269 (__v2di) __B,
1270 __N * 8,
1271 (__v2di) __W,
1272 (__mmask16) __U);
1273}
1274
1275extern __inline __m128i
1276__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1277_mm_maskz_alignr_epi8 (__mmask16 __U, __m128i __A, __m128i __B,
1278 const int __N)
1279{
1280 return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
1281 (__v2di) __B,
1282 __N * 8,
1283 (__v2di)
1284 _mm_setzero_si128 (),
1285 (__mmask16) __U);
1286}
1287
1288extern __inline __m256i
1289__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1290_mm256_dbsad_epu8 (__m256i __A, __m256i __B, const int __imm)
1291{
1292 return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
1293 (__v32qi) __B,
1294 __imm,
1295 (__v16hi)
1296 _mm256_setzero_si256 (),
1297 (__mmask16) -1);
1298}
1299
1300extern __inline __m256i
1301__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1302_mm256_mask_dbsad_epu8 (__m256i __W, __mmask16 __U, __m256i __A,
1303 __m256i __B, const int __imm)
1304{
1305 return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
1306 (__v32qi) __B,
1307 __imm,
1308 (__v16hi) __W,
1309 (__mmask16) __U);
1310}
1311
1312extern __inline __m256i
1313__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1314_mm256_maskz_dbsad_epu8 (__mmask16 __U, __m256i __A, __m256i __B,
1315 const int __imm)
1316{
1317 return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
1318 (__v32qi) __B,
1319 __imm,
1320 (__v16hi)
1321 _mm256_setzero_si256 (),
1322 (__mmask16) __U);
1323}
1324
1325extern __inline __m128i
1326__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1327_mm_dbsad_epu8 (__m128i __A, __m128i __B, const int __imm)
1328{
1329 return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
1330 (__v16qi) __B,
1331 __imm,
1332 (__v8hi)
1333 _mm_setzero_hi (),
1334 (__mmask8) -1);
1335}
1336
1337extern __inline __m128i
1338__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1339_mm_mask_dbsad_epu8 (__m128i __W, __mmask8 __U, __m128i __A,
1340 __m128i __B, const int __imm)
1341{
1342 return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
1343 (__v16qi) __B,
1344 __imm,
1345 (__v8hi) __W,
1346 (__mmask8) __U);
1347}
1348
1349extern __inline __m128i
1350__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1351_mm_maskz_dbsad_epu8 (__mmask8 __U, __m128i __A, __m128i __B,
1352 const int __imm)
1353{
1354 return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
1355 (__v16qi) __B,
1356 __imm,
1357 (__v8hi)
1358 _mm_setzero_si128 (),
1359 (__mmask8) __U);
1360}
1361
1362extern __inline __m128i
1363__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1364_mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
1365{
1366 return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A,
1367 (__v8hi) __W,
1368 (__mmask8) __U);
1369}
1370
1371extern __inline __m128i
1372__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1373_mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
1374{
1375 return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A,
1376 (__v16qi) __W,
1377 (__mmask16) __U);
1378}
1379
1380extern __inline __m256i
1381__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1382_mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
1383{
1384 return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A,
1385 (__v16hi) __W,
1386 (__mmask16) __U);
1387}
1388
1389extern __inline __m256i
1390__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1391_mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
1392{
1393 return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A,
1394 (__v32qi) __W,
1395 (__mmask32) __U);
1396}
1397
1398extern __inline __mmask8
1399__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1400_mm_mask_cmp_epi16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
1401 const int __P)
1402{
1403 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
1404 (__v8hi) __Y, __P,
1405 (__mmask8) __U);
1406}
1407
1408extern __inline __mmask8
1409__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1410_mm_cmp_epi16_mask (__m128i __X, __m128i __Y, const int __P)
1411{
1412 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
1413 (__v8hi) __Y, __P,
1414 (__mmask8) -1);
1415}
1416
1417extern __inline __mmask16
1418__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1419_mm256_mask_cmp_epi16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
1420 const int __P)
1421{
1422 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
1423 (__v16hi) __Y, __P,
1424 (__mmask16) __U);
1425}
1426
1427extern __inline __mmask16
1428__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1429_mm256_cmp_epi16_mask (__m256i __X, __m256i __Y, const int __P)
1430{
1431 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
1432 (__v16hi) __Y, __P,
1433 (__mmask16) -1);
1434}
1435
1436extern __inline __mmask16
1437__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1438_mm_mask_cmp_epi8_mask (__mmask8 __U, __m128i __X, __m128i __Y,
1439 const int __P)
1440{
1441 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
1442 (__v16qi) __Y, __P,
1443 (__mmask16) __U);
1444}
1445
1446extern __inline __mmask16
1447__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1448_mm_cmp_epi8_mask (__m128i __X, __m128i __Y, const int __P)
1449{
1450 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
1451 (__v16qi) __Y, __P,
1452 (__mmask16) -1);
1453}
1454
1455extern __inline __mmask32
1456__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1457_mm256_mask_cmp_epi8_mask (__mmask16 __U, __m256i __X, __m256i __Y,
1458 const int __P)
1459{
1460 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
1461 (__v32qi) __Y, __P,
1462 (__mmask32) __U);
1463}
1464
1465extern __inline __mmask16
1466__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1467_mm256_cmp_epi8_mask (__m256i __X, __m256i __Y, const int __P)
1468{
1469 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
1470 (__v32qi) __Y, __P,
1471 (__mmask32) -1);
1472}
1473
1474extern __inline __mmask8
1475__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1476_mm_mask_cmp_epu16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
1477 const int __P)
1478{
1479 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
1480 (__v8hi) __Y, __P,
1481 (__mmask8) __U);
1482}
1483
1484extern __inline __mmask8
1485__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1486_mm_cmp_epu16_mask (__m128i __X, __m128i __Y, const int __P)
1487{
1488 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
1489 (__v8hi) __Y, __P,
1490 (__mmask8) -1);
1491}
1492
1493extern __inline __mmask16
1494__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1495_mm256_mask_cmp_epu16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
1496 const int __P)
1497{
1498 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
1499 (__v16hi) __Y, __P,
1500 (__mmask16) __U);
1501}
1502
1503extern __inline __mmask16
1504__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1505_mm256_cmp_epu16_mask (__m256i __X, __m256i __Y, const int __P)
1506{
1507 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
1508 (__v16hi) __Y, __P,
1509 (__mmask16) -1);
1510}
1511
1512extern __inline __mmask16
1513__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1514_mm_mask_cmp_epu8_mask (__mmask8 __U, __m128i __X, __m128i __Y,
1515 const int __P)
1516{
1517 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
1518 (__v16qi) __Y, __P,
1519 (__mmask16) __U);
1520}
1521
1522extern __inline __mmask16
1523__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1524_mm_cmp_epu8_mask (__m128i __X, __m128i __Y, const int __P)
1525{
1526 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
1527 (__v16qi) __Y, __P,
1528 (__mmask16) -1);
1529}
1530
1531extern __inline __mmask32
1532__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1533_mm256_mask_cmp_epu8_mask (__mmask16 __U, __m256i __X, __m256i __Y,
1534 const int __P)
1535{
1536 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
1537 (__v32qi) __Y, __P,
1538 (__mmask32) __U);
1539}
1540
1541extern __inline __mmask16
1542__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1543_mm256_cmp_epu8_mask (__m256i __X, __m256i __Y, const int __P)
1544{
1545 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
1546 (__v32qi) __Y, __P,
1547 (__mmask32) -1);
1548}
1549
1550extern __inline __m256i
1551__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1552_mm256_mask_srli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1553 const int __imm)
1554{
1555 return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
1556 (__v16hi) __W,
1557 (__mmask16) __U);
1558}
1559
1560extern __inline __m256i
1561__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1562_mm256_maskz_srli_epi16 (__mmask16 __U, __m256i __A, const int __imm)
1563{
1564 return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
1565 (__v16hi)
1566 _mm256_setzero_si256 (),
1567 (__mmask16) __U);
1568}
1569
1570extern __inline __m128i
1571__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1572_mm_mask_srli_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1573 const int __imm)
1574{
1575 return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
1576 (__v8hi) __W,
1577 (__mmask8) __U);
1578}
1579
1580extern __inline __m128i
1581__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1582_mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1583{
1584 return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
1585 (__v8hi)
1586 _mm_setzero_si128 (),
1587 (__mmask8) __U);
1588}
1589
1590extern __inline __m256i
1591__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1592_mm256_mask_shufflehi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1593 const int __imm)
1594{
1595 return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
1596 __imm,
1597 (__v16hi) __W,
1598 (__mmask16) __U);
1599}
1600
1601extern __inline __m256i
1602__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1603_mm256_maskz_shufflehi_epi16 (__mmask16 __U, __m256i __A,
1604 const int __imm)
1605{
1606 return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
1607 __imm,
1608 (__v16hi)
1609 _mm256_setzero_si256 (),
1610 (__mmask16) __U);
1611}
1612
1613extern __inline __m128i
1614__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1615_mm_mask_shufflehi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1616 const int __imm)
1617{
1618 return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
1619 (__v8hi) __W,
1620 (__mmask8) __U);
1621}
1622
1623extern __inline __m128i
1624__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1625_mm_maskz_shufflehi_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1626{
1627 return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
1628 (__v8hi)
1629 _mm_setzero_hi (),
1630 (__mmask8) __U);
1631}
1632
1633extern __inline __m256i
1634__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1635_mm256_mask_shufflelo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1636 const int __imm)
1637{
1638 return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
1639 __imm,
1640 (__v16hi) __W,
1641 (__mmask16) __U);
1642}
1643
1644extern __inline __m256i
1645__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1646_mm256_maskz_shufflelo_epi16 (__mmask16 __U, __m256i __A,
1647 const int __imm)
1648{
1649 return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
1650 __imm,
1651 (__v16hi)
1652 _mm256_setzero_si256 (),
1653 (__mmask16) __U);
1654}
1655
1656extern __inline __m128i
1657__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1658_mm_mask_shufflelo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1659 const int __imm)
1660{
1661 return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
1662 (__v8hi) __W,
1663 (__mmask8) __U);
1664}
1665
1666extern __inline __m128i
1667__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1668_mm_maskz_shufflelo_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1669{
1670 return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
1671 (__v8hi)
1672 _mm_setzero_hi (),
1673 (__mmask8) __U);
1674}
1675
1676extern __inline __m256i
1677__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1678_mm256_mask_srai_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1679 const int __imm)
1680{
1681 return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
1682 (__v16hi) __W,
1683 (__mmask16) __U);
1684}
1685
1686extern __inline __m256i
1687__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1688_mm256_maskz_srai_epi16 (__mmask16 __U, __m256i __A, const int __imm)
1689{
1690 return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
1691 (__v16hi)
1692 _mm256_setzero_si256 (),
1693 (__mmask16) __U);
1694}
1695
1696extern __inline __m128i
1697__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1698_mm_mask_srai_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1699 const int __imm)
1700{
1701 return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
1702 (__v8hi) __W,
1703 (__mmask8) __U);
1704}
1705
1706extern __inline __m128i
1707__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1708_mm_maskz_srai_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1709{
1710 return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
1711 (__v8hi)
1712 _mm_setzero_si128 (),
1713 (__mmask8) __U);
1714}
1715
1716extern __inline __m256i
1717__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1718_mm256_mask_slli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1719 int __B)
1720{
1721 return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
1722 (__v16hi) __W,
1723 (__mmask16) __U);
1724}
1725
1726extern __inline __m256i
1727__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1728_mm256_maskz_slli_epi16 (__mmask16 __U, __m256i __A, int __B)
1729{
1730 return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
1731 (__v16hi)
1732 _mm256_setzero_si256 (),
1733 (__mmask16) __U);
1734}
1735
1736extern __inline __m128i
1737__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1738_mm_mask_slli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
1739{
1740 return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
1741 (__v8hi) __W,
1742 (__mmask8) __U);
1743}
1744
1745extern __inline __m128i
1746__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1747_mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
1748{
1749 return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
1750 (__v8hi)
1751 _mm_setzero_si128 (),
1752 (__mmask8) __U);
1753}
1754
1755#else
1756#define _mm256_mask_alignr_epi8(W, U, X, Y, N) \
1757 ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \
1758 (__v4di)(__m256i)(Y), (int)(N * 8), \
1759 (__v4di)(__m256i)(X), (__mmask32)(U)))
1760
1761#define _mm256_mask_srli_epi16(W, U, A, B) \
1762 ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A), \
1763 (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
1764
1765#define _mm256_maskz_srli_epi16(U, A, B) \
1766 ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A), \
1767 (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
1768
1769#define _mm_mask_srli_epi16(W, U, A, B) \
1770 ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A), \
1771 (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
1772
1773#define _mm_maskz_srli_epi16(U, A, B) \
1774 ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A), \
1775 (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
1776
1777#define _mm256_mask_srai_epi16(W, U, A, B) \
1778 ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A), \
1779 (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
1780
1781#define _mm256_maskz_srai_epi16(U, A, B) \
1782 ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A), \
1783 (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
1784
1785#define _mm_mask_srai_epi16(W, U, A, B) \
1786 ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A), \
1787 (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
1788
1789#define _mm_maskz_srai_epi16(U, A, B) \
1790 ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A), \
1791 (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
1792
1793#define _mm256_mask_shufflehi_epi16(W, U, A, B) \
1794 ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
1795 (__v16hi)(__m256i)(W), \
1796 (__mmask16)(U)))
1797
1798#define _mm256_maskz_shufflehi_epi16(U, A, B) \
1799 ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
1800 (__v16hi)(__m256i)_mm256_setzero_si256 (), \
1801 (__mmask16)(U)))
1802
1803#define _mm_mask_shufflehi_epi16(W, U, A, B) \
1804 ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
1805 (__v8hi)(__m128i)(W), \
1806 (__mmask8)(U)))
1807
1808#define _mm_maskz_shufflehi_epi16(U, A, B) \
1809 ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
1810 (__v8hi)(__m128i)_mm_setzero_hi(), \
1811 (__mmask8)(U)))
1812
1813#define _mm256_mask_shufflelo_epi16(W, U, A, B) \
1814 ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
1815 (__v16hi)(__m256i)(W), \
1816 (__mmask16)(U)))
1817
1818#define _mm256_maskz_shufflelo_epi16(U, A, B) \
1819 ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B), \
1820 (__v16hi)(__m256i)_mm256_setzero_si256 (), \
1821 (__mmask16)(U)))
1822
1823#define _mm_mask_shufflelo_epi16(W, U, A, B) \
1824 ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
1825 (__v8hi)(__m128i)(W), \
1826 (__mmask8)(U)))
1827
1828#define _mm_maskz_shufflelo_epi16(U, A, B) \
1829 ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B), \
1830 (__v8hi)(__m128i)_mm_setzero_hi(), \
1831 (__mmask8)(U)))
1832
1833#define _mm256_maskz_alignr_epi8(U, X, Y, N) \
1834 ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X), \
1835 (__v4di)(__m256i)(Y), (int)(N * 8), \
1836 (__v4di)(__m256i)_mm256_setzero_si256 (), \
1837 (__mmask32)(U)))
1838
1839#define _mm_mask_alignr_epi8(W, U, X, Y, N) \
1840 ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \
1841 (__v2di)(__m128i)(Y), (int)(N * 8), \
1842 (__v2di)(__m128i)(X), (__mmask16)(U)))
1843
1844#define _mm_maskz_alignr_epi8(U, X, Y, N) \
1845 ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X), \
1846 (__v2di)(__m128i)(Y), (int)(N * 8), \
1847 (__v2di)(__m128i)_mm_setzero_di(), \
1848 (__mmask16)(U)))
1849
1850#define _mm_mask_slli_epi16(W, U, X, C) \
1851 ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
1852 (__v8hi)(__m128i)(W),\
1853 (__mmask8)(U)))
1854
1855#define _mm_maskz_slli_epi16(U, X, C) \
1856 ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
1857 (__v8hi)(__m128i)_mm_setzero_hi(),\
1858 (__mmask8)(U)))
1859
1860#define _mm256_dbsad_epu8(X, Y, C) \
1861 ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \
1862 (__v32qi)(__m256i) (Y), (int) (C), \
1863 (__v16hi)(__m256i)_mm256_setzero_si256(),\
1864 (__mmask16)-1))
1865
1866#define _mm256_mask_slli_epi16(W, U, X, C) \
1867 ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
1868 (__v16hi)(__m256i)(W),\
1869 (__mmask16)(U)))
1870
1871#define _mm256_maskz_slli_epi16(U, X, C) \
1872 ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
1873 (__v16hi)(__m256i)_mm256_setzero_si256 (),\
1874 (__mmask16)(U)))
1875
1876#define _mm256_mask_dbsad_epu8(W, U, X, Y, C) \
1877 ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \
1878 (__v32qi)(__m256i) (Y), (int) (C), \
1879 (__v16hi)(__m256i)(W), \
1880 (__mmask16)(U)))
1881
1882#define _mm256_maskz_dbsad_epu8(U, X, Y, C) \
1883 ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X), \
1884 (__v32qi)(__m256i) (Y), (int) (C), \
1885 (__v16hi)(__m256i)_mm256_setzero_si256(),\
1886 (__mmask16)(U)))
1887
1888#define _mm_dbsad_epu8(X, Y, C) \
1889 ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \
1890 (__v16qi)(__m128i) (Y), (int) (C), \
1891 (__v8hi)(__m128i)_mm_setzero_si128(), \
1892 (__mmask8)-1))
1893
1894#define _mm_mask_dbsad_epu8(W, U, X, Y, C) \
1895 ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \
1896 (__v16qi)(__m128i) (Y), (int) (C), \
1897 (__v8hi)(__m128i)(W), \
1898 (__mmask8)(U)))
1899
1900#define _mm_maskz_dbsad_epu8(U, X, Y, C) \
1901 ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X), \
1902 (__v16qi)(__m128i) (Y), (int) (C), \
1903 (__v8hi)(__m128i)_mm_setzero_si128(), \
1904 (__mmask8)(U)))
1905
1906#define _mm_mask_blend_epi16(__U, __A, __W) \
1907 ((__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) (__A), \
1908 (__v8hi) (__W), \
1909 (__mmask8) (__U)))
1910
1911#define _mm_mask_blend_epi8(__U, __A, __W) \
1912 ((__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) (__A), \
1913 (__v16qi) (__W), \
1914 (__mmask16) (__U)))
1915
1916#define _mm256_mask_blend_epi16(__U, __A, __W) \
1917 ((__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) (__A), \
1918 (__v16hi) (__W), \
1919 (__mmask16) (__U)))
1920
1921#define _mm256_mask_blend_epi8(__U, __A, __W) \
1922 ((__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) (__A), \
1923 (__v32qi) (__W), \
1924 (__mmask32) (__U)))
1925
1926#define _mm_cmp_epi16_mask(X, Y, P) \
1927 ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X), \
1928 (__v8hi)(__m128i)(Y), (int)(P),\
1929 (__mmask8)(-1)))
1930
1931#define _mm_cmp_epi8_mask(X, Y, P) \
1932 ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X), \
1933 (__v16qi)(__m128i)(Y), (int)(P),\
1934 (__mmask16)(-1)))
1935
1936#define _mm256_cmp_epi16_mask(X, Y, P) \
1937 ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X), \
1938 (__v16hi)(__m256i)(Y), (int)(P),\
1939 (__mmask16)(-1)))
1940
1941#define _mm256_cmp_epi8_mask(X, Y, P) \
1942 ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X), \
1943 (__v32qi)(__m256i)(Y), (int)(P),\
1944 (__mmask32)(-1)))
1945
1946#define _mm_cmp_epu16_mask(X, Y, P) \
1947 ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X), \
1948 (__v8hi)(__m128i)(Y), (int)(P),\
1949 (__mmask8)(-1)))
1950
1951#define _mm_cmp_epu8_mask(X, Y, P) \
1952 ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X), \
1953 (__v16qi)(__m128i)(Y), (int)(P),\
1954 (__mmask16)(-1)))
1955
1956#define _mm256_cmp_epu16_mask(X, Y, P) \
1957 ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X), \
1958 (__v16hi)(__m256i)(Y), (int)(P),\
1959 (__mmask16)(-1)))
1960
1961#define _mm256_cmp_epu8_mask(X, Y, P) \
1962 ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \
1963 (__v32qi)(__m256i)(Y), (int)(P),\
1964 (__mmask32)-1))
1965
1966#define _mm_mask_cmp_epi16_mask(M, X, Y, P) \
1967 ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X), \
1968 (__v8hi)(__m128i)(Y), (int)(P),\
1969 (__mmask16)(M)))
1970
1971#define _mm_mask_cmp_epi8_mask(M, X, Y, P) \
1972 ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X), \
1973 (__v16qi)(__m128i)(Y), (int)(P),\
1974 (__mmask16)(M)))
1975
1976#define _mm256_mask_cmp_epi16_mask(M, X, Y, P) \
1977 ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X), \
1978 (__v16hi)(__m256i)(Y), (int)(P),\
1979 (__mmask16)(M)))
1980
1981#define _mm256_mask_cmp_epi8_mask(M, X, Y, P) \
1982 ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X), \
1983 (__v32qi)(__m256i)(Y), (int)(P),\
1984 (__mmask32)(M)))
1985
1986#define _mm_mask_cmp_epu16_mask(M, X, Y, P) \
1987 ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X), \
1988 (__v8hi)(__m128i)(Y), (int)(P),\
1989 (__mmask8)(M)))
1990
1991#define _mm_mask_cmp_epu8_mask(M, X, Y, P) \
1992 ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X), \
1993 (__v16qi)(__m128i)(Y), (int)(P),\
1994 (__mmask16)(M)))
1995
1996#define _mm256_mask_cmp_epu16_mask(M, X, Y, P) \
1997 ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X), \
1998 (__v16hi)(__m256i)(Y), (int)(P),\
1999 (__mmask16)(M)))
2000
2001#define _mm256_mask_cmp_epu8_mask(M, X, Y, P) \
2002 ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X), \
2003 (__v32qi)(__m256i)(Y), (int)(P),\
2004 (__mmask32)M))
2005#endif
2006
2007extern __inline __mmask32
2008 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2009_mm256_cmpneq_epi8_mask (__m256i __X, __m256i __Y)
2010{
2011 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2012 (__v32qi) __Y, 4,
2013 (__mmask32) - 1);
2014}
2015
2016extern __inline __mmask32
2017 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2018_mm256_cmplt_epi8_mask (__m256i __X, __m256i __Y)
2019{
2020 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2021 (__v32qi) __Y, 1,
2022 (__mmask32) - 1);
2023}
2024
2025extern __inline __mmask32
2026 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2027_mm256_cmpge_epi8_mask (__m256i __X, __m256i __Y)
2028{
2029 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2030 (__v32qi) __Y, 5,
2031 (__mmask32) - 1);
2032}
2033
2034extern __inline __mmask32
2035 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2036_mm256_cmple_epi8_mask (__m256i __X, __m256i __Y)
2037{
2038 return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2039 (__v32qi) __Y, 2,
2040 (__mmask32) - 1);
2041}
2042
2043extern __inline __mmask16
2044 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2045_mm256_cmpneq_epi16_mask (__m256i __X, __m256i __Y)
2046{
2047 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2048 (__v16hi) __Y, 4,
2049 (__mmask16) - 1);
2050}
2051
2052extern __inline __mmask16
2053 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2054_mm256_cmplt_epi16_mask (__m256i __X, __m256i __Y)
2055{
2056 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2057 (__v16hi) __Y, 1,
2058 (__mmask16) - 1);
2059}
2060
2061extern __inline __mmask16
2062 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2063_mm256_cmpge_epi16_mask (__m256i __X, __m256i __Y)
2064{
2065 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2066 (__v16hi) __Y, 5,
2067 (__mmask16) - 1);
2068}
2069
2070extern __inline __mmask16
2071 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2072_mm256_cmple_epi16_mask (__m256i __X, __m256i __Y)
2073{
2074 return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2075 (__v16hi) __Y, 2,
2076 (__mmask16) - 1);
2077}
2078
2079extern __inline __mmask16
2080 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2081_mm_cmpneq_epu8_mask (__m128i __X, __m128i __Y)
2082{
2083 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2084 (__v16qi) __Y, 4,
2085 (__mmask16) - 1);
2086}
2087
2088extern __inline __mmask16
2089 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2090_mm_cmplt_epu8_mask (__m128i __X, __m128i __Y)
2091{
2092 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2093 (__v16qi) __Y, 1,
2094 (__mmask16) - 1);
2095}
2096
2097extern __inline __mmask16
2098 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2099_mm_cmpge_epu8_mask (__m128i __X, __m128i __Y)
2100{
2101 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2102 (__v16qi) __Y, 5,
2103 (__mmask16) - 1);
2104}
2105
2106extern __inline __mmask16
2107 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2108_mm_cmple_epu8_mask (__m128i __X, __m128i __Y)
2109{
2110 return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2111 (__v16qi) __Y, 2,
2112 (__mmask16) - 1);
2113}
2114
2115extern __inline __mmask8
2116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2117_mm_cmpneq_epu16_mask (__m128i __X, __m128i __Y)
2118{
2119 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2120 (__v8hi) __Y, 4,
2121 (__mmask8) - 1);
2122}
2123
2124extern __inline __mmask8
2125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2126_mm_cmplt_epu16_mask (__m128i __X, __m128i __Y)
2127{
2128 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2129 (__v8hi) __Y, 1,
2130 (__mmask8) - 1);
2131}
2132
2133extern __inline __mmask8
2134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2135_mm_cmpge_epu16_mask (__m128i __X, __m128i __Y)
2136{
2137 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2138 (__v8hi) __Y, 5,
2139 (__mmask8) - 1);
2140}
2141
2142extern __inline __mmask8
2143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2144_mm_cmple_epu16_mask (__m128i __X, __m128i __Y)
2145{
2146 return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2147 (__v8hi) __Y, 2,
2148 (__mmask8) - 1);
2149}
2150
2151extern __inline __mmask16
2152 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2153_mm_cmpneq_epi8_mask (__m128i __X, __m128i __Y)
2154{
2155 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2156 (__v16qi) __Y, 4,
2157 (__mmask16) - 1);
2158}
2159
2160extern __inline __mmask16
2161 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2162_mm_cmplt_epi8_mask (__m128i __X, __m128i __Y)
2163{
2164 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2165 (__v16qi) __Y, 1,
2166 (__mmask16) - 1);
2167}
2168
2169extern __inline __mmask16
2170 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2171_mm_cmpge_epi8_mask (__m128i __X, __m128i __Y)
2172{
2173 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2174 (__v16qi) __Y, 5,
2175 (__mmask16) - 1);
2176}
2177
2178extern __inline __mmask16
2179 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2180_mm_cmple_epi8_mask (__m128i __X, __m128i __Y)
2181{
2182 return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2183 (__v16qi) __Y, 2,
2184 (__mmask16) - 1);
2185}
2186
2187extern __inline __mmask8
2188 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2189_mm_cmpneq_epi16_mask (__m128i __X, __m128i __Y)
2190{
2191 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2192 (__v8hi) __Y, 4,
2193 (__mmask8) - 1);
2194}
2195
2196extern __inline __mmask8
2197 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2198_mm_cmplt_epi16_mask (__m128i __X, __m128i __Y)
2199{
2200 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2201 (__v8hi) __Y, 1,
2202 (__mmask8) - 1);
2203}
2204
2205extern __inline __mmask8
2206 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2207_mm_cmpge_epi16_mask (__m128i __X, __m128i __Y)
2208{
2209 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2210 (__v8hi) __Y, 5,
2211 (__mmask8) - 1);
2212}
2213
2214extern __inline __mmask8
2215 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2216_mm_cmple_epi16_mask (__m128i __X, __m128i __Y)
2217{
2218 return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2219 (__v8hi) __Y, 2,
2220 (__mmask8) - 1);
2221}
2222
2223extern __inline __m256i
2224__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2225_mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
2226 __m256i __Y)
2227{
2228 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2229 (__v16hi) __Y,
2230 (__v16hi) __W,
2231 (__mmask16) __U);
2232}
2233
2234extern __inline __m256i
2235__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2236_mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
2237{
2238 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2239 (__v16hi) __Y,
2240 (__v16hi)
2241 _mm256_setzero_si256 (),
2242 (__mmask16) __U);
2243}
2244
2245extern __inline __m256i
2246__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2247_mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2248 __m256i __B)
2249{
2250 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2251 (__v16hi) __B,
2252 (__v16hi) __W,
2253 (__mmask16) __U);
2254}
2255
2256extern __inline __m256i
2257__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2258_mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2259{
2260 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2261 (__v16hi) __B,
2262 (__v16hi)
2263 _mm256_setzero_si256 (),
2264 (__mmask16) __U);
2265}
2266
2267extern __inline __m256i
2268__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2269_mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2270 __m256i __B)
2271{
2272 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2273 (__v16hi) __B,
2274 (__v16hi) __W,
2275 (__mmask16) __U);
2276}
2277
2278extern __inline __m256i
2279__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2280_mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2281{
2282 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2283 (__v16hi) __B,
2284 (__v16hi)
2285 _mm256_setzero_si256 (),
2286 (__mmask16) __U);
2287}
2288
2289extern __inline __m128i
2290__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2291_mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2292 __m128i __B)
2293{
2294 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2295 (__v8hi) __B,
2296 (__v8hi) __W,
2297 (__mmask8) __U);
2298}
2299
2300extern __inline __m128i
2301__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2302_mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2303{
2304 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2305 (__v8hi) __B,
2306 (__v8hi)
2307 _mm_setzero_hi (),
2308 (__mmask8) __U);
2309}
2310
2311extern __inline __m128i
2312__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2313_mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2314 __m128i __B)
2315{
2316 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2317 (__v8hi) __B,
2318 (__v8hi) __W,
2319 (__mmask8) __U);
2320}
2321
2322extern __inline __m128i
2323__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2324_mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
2325{
2326 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2327 (__v8hi) __B,
2328 (__v8hi)
2329 _mm_setzero_hi (),
2330 (__mmask8) __U);
2331}
2332
2333extern __inline __m128i
2334__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2335_mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
2336 __m128i __Y)
2337{
2338 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2339 (__v8hi) __Y,
2340 (__v8hi) __W,
2341 (__mmask8) __U);
2342}
2343
2344extern __inline __m128i
2345__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2346_mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
2347{
2348 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2349 (__v8hi) __Y,
2350 (__v8hi)
2351 _mm_setzero_hi (),
2352 (__mmask8) __U);
2353}
2354
2355extern __inline __m256i
2356__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2357_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2358 __m256i __B)
2359{
2360 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
2361 (__v16hi) __B,
2362 (__v16hi) __W,
2363 (__mmask16) __U);
2364}
2365
2366extern __inline __m256i
2367__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2368_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2369{
2370 return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
2371 (__v16hi) __B,
2372 (__v16hi)
2373 _mm256_setzero_si256 (),
2374 (__mmask16) __U);
2375}
2376
2377extern __inline __m128i
2378__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2379_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2380 __m128i __B)
2381{
2382 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
2383 (__v8hi) __B,
2384 (__v8hi) __W,
2385 (__mmask8) __U);
2386}
2387
2388extern __inline __m128i
2389__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2390_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2391{
2392 return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
2393 (__v8hi) __B,
2394 (__v8hi)
2395 _mm_setzero_hi (),
2396 (__mmask8) __U);
2397}
2398
2399extern __inline __m256i
2400__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2401_mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2402{
2403 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2404 (__v16hi) __W,
2405 (__mmask16) __U);
2406}
2407
2408extern __inline __m256i
2409__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2410_mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
2411{
2412 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2413 (__v16hi)
2414 _mm256_setzero_si256 (),
2415 (__mmask16) __U);
2416}
2417
2418extern __inline __m128i
2419__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2420_mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2421{
2422 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2423 (__v8hi) __W,
2424 (__mmask8) __U);
2425}
2426
2427extern __inline __m128i
2428__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2429_mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
2430{
2431 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2432 (__v8hi)
2433 _mm_setzero_si128 (),
2434 (__mmask8) __U);
2435}
2436
2437extern __inline __m256i
2438__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2439_mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2440{
2441 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2442 (__v16hi) __W,
2443 (__mmask16) __U);
2444}
2445
2446extern __inline __m256i
2447__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2448_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
2449{
2450 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2451 (__v16hi)
2452 _mm256_setzero_si256 (),
2453 (__mmask16) __U);
2454}
2455
2456extern __inline __m128i
2457__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2458_mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2459{
2460 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2461 (__v8hi) __W,
2462 (__mmask8) __U);
2463}
2464
2465extern __inline __m128i
2466__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2467_mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
2468{
2469 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2470 (__v8hi)
2471 _mm_setzero_si128 (),
2472 (__mmask8) __U);
2473}
2474
2475extern __inline __m256i
2476__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2477_mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
2478 __m256i __B)
2479{
2480 return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
2481 (__v32qi) __B,
2482 (__v32qi) __W,
2483 (__mmask32) __U);
2484}
2485
2486extern __inline __m256i
2487__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2488_mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
2489{
2490 return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
2491 (__v32qi) __B,
2492 (__v32qi)
2493 _mm256_setzero_si256 (),
2494 (__mmask32) __U);
2495}
2496
2497extern __inline __m128i
2498__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2499_mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
2500 __m128i __B)
2501{
2502 return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
2503 (__v16qi) __B,
2504 (__v16qi) __W,
2505 (__mmask16) __U);
2506}
2507
2508extern __inline __m128i
2509__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2510_mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
2511{
2512 return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
2513 (__v16qi) __B,
2514 (__v16qi)
2515 _mm_setzero_si128 (),
2516 (__mmask16) __U);
2517}
2518
2519extern __inline __m256i
2520__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2521_mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2522 __m256i __B)
2523{
2524 return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
2525 (__v16hi) __B,
2526 (__v16hi) __W,
2527 (__mmask16) __U);
2528}
2529
2530extern __inline __m256i
2531__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2532_mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2533{
2534 return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
2535 (__v16hi) __B,
2536 (__v16hi)
2537 _mm256_setzero_si256 (),
2538 (__mmask16) __U);
2539}
2540
2541extern __inline __m128i
2542__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2543_mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2544 __m128i __B)
2545{
2546 return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
2547 (__v8hi) __B,
2548 (__v8hi) __W,
2549 (__mmask8) __U);
2550}
2551
2552extern __inline __m128i
2553__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2554_mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
2555{
2556 return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
2557 (__v8hi) __B,
2558 (__v8hi)
2559 _mm_setzero_si128 (),
2560 (__mmask8) __U);
2561}
2562
2563extern __inline __m256i
2564__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2565_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2566 __m256i __B)
2567{
2568 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
2569 (__v32qi) __B,
2570 (__v32qi) __W,
2571 (__mmask32) __U);
2572}
2573
2574extern __inline __m256i
2575__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2576_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2577{
2578 return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
2579 (__v32qi) __B,
2580 (__v32qi)
2581 _mm256_setzero_si256 (),
2582 (__mmask32) __U);
2583}
2584
2585extern __inline __m256i
2586__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2587_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2588 __m256i __B)
2589{
2590 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
2591 (__v16hi) __B,
2592 (__v16hi) __W,
2593 (__mmask16) __U);
2594}
2595
2596extern __inline __m256i
2597__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2598_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2599{
2600 return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
2601 (__v16hi) __B,
2602 (__v16hi)
2603 _mm256_setzero_si256 (),
2604 (__mmask16) __U);
2605}
2606
2607extern __inline __m256i
2608__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2609_mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2610 __m256i __B)
2611{
2612 return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
2613 (__v32qi) __B,
2614 (__v32qi) __W,
2615 (__mmask32) __U);
2616}
2617
2618extern __inline __m256i
2619__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2620_mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2621{
2622 return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
2623 (__v32qi) __B,
2624 (__v32qi)
2625 _mm256_setzero_si256 (),
2626 (__mmask32) __U);
2627}
2628
2629extern __inline __m256i
2630__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2631_mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2632 __m256i __B)
2633{
2634 return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
2635 (__v16hi) __B,
2636 (__v16hi) __W,
2637 (__mmask16) __U);
2638}
2639
2640extern __inline __m256i
2641__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2642_mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2643{
2644 return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
2645 (__v16hi) __B,
2646 (__v16hi)
2647 _mm256_setzero_si256 (),
2648 (__mmask16) __U);
2649}
2650
2651extern __inline __m256i
2652__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2653_mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
2654 __m256i __B)
2655{
2656 return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
2657 (__v32qi) __B,
2658 (__v32qi) __W,
2659 (__mmask32) __U);
2660}
2661
2662extern __inline __m256i
2663__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2664_mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
2665{
2666 return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
2667 (__v32qi) __B,
2668 (__v32qi)
2669 _mm256_setzero_si256 (),
2670 (__mmask32) __U);
2671}
2672
2673extern __inline __m256i
2674__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2675_mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2676 __m256i __B)
2677{
2678 return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
2679 (__v16hi) __B,
2680 (__v16hi) __W,
2681 (__mmask16) __U);
2682}
2683
2684extern __inline __m256i
2685__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2686_mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2687{
2688 return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
2689 (__v16hi) __B,
2690 (__v16hi)
2691 _mm256_setzero_si256 (),
2692 (__mmask16) __U);
2693}
2694
2695extern __inline __m256i
2696__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2697_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2698 __m256i __B)
2699{
2700 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
2701 (__v32qi) __B,
2702 (__v32qi) __W,
2703 (__mmask32) __U);
2704}
2705
2706extern __inline __m256i
2707__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2708_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2709{
2710 return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
2711 (__v32qi) __B,
2712 (__v32qi)
2713 _mm256_setzero_si256 (),
2714 (__mmask32) __U);
2715}
2716
2717extern __inline __m256i
2718__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2719_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2720 __m256i __B)
2721{
2722 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
2723 (__v16hi) __B,
2724 (__v16hi) __W,
2725 (__mmask16) __U);
2726}
2727
2728extern __inline __m256i
2729__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2730_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2731{
2732 return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
2733 (__v16hi) __B,
2734 (__v16hi)
2735 _mm256_setzero_si256 (),
2736 (__mmask16) __U);
2737}
2738
2739extern __inline __m256i
2740__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2741_mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2742 __m256i __B)
2743{
2744 return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
2745 (__v32qi) __B,
2746 (__v32qi) __W,
2747 (__mmask32) __U);
2748}
2749
2750extern __inline __m256i
2751__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2752_mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2753{
2754 return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
2755 (__v32qi) __B,
2756 (__v32qi)
2757 _mm256_setzero_si256 (),
2758 (__mmask32) __U);
2759}
2760
2761extern __inline __m256i
2762__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2763_mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2764 __m256i __B)
2765{
2766 return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
2767 (__v16hi) __B,
2768 (__v16hi) __W,
2769 (__mmask16) __U);
2770}
2771
2772extern __inline __m256i
2773__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2774_mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2775{
2776 return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
2777 (__v16hi) __B,
2778 (__v16hi)
2779 _mm256_setzero_si256 (),
2780 (__mmask16) __U);
2781}
2782
2783extern __inline __m256i
2784__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2785_mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
2786 __m256i __B)
2787{
2788 return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
2789 (__v32qi) __B,
2790 (__v32qi) __W,
2791 (__mmask32) __U);
2792}
2793
2794extern __inline __m256i
2795__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2796_mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
2797{
2798 return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
2799 (__v32qi) __B,
2800 (__v32qi)
2801 _mm256_setzero_si256 (),
2802 (__mmask32) __U);
2803}
2804
2805extern __inline __m256i
2806__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2807_mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2808 __m256i __B)
2809{
2810 return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
2811 (__v16hi) __B,
2812 (__v16hi) __W,
2813 (__mmask16) __U);
2814}
2815
2816extern __inline __m256i
2817__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2818_mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2819{
2820 return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
2821 (__v16hi) __B,
2822 (__v16hi)
2823 _mm256_setzero_si256 (),
2824 (__mmask16) __U);
2825}
2826
2827extern __inline __m128i
2828__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2829_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2830 __m128i __B)
2831{
2832 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
2833 (__v16qi) __B,
2834 (__v16qi) __W,
2835 (__mmask16) __U);
2836}
2837
2838extern __inline __m128i
2839__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2840_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
2841{
2842 return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
2843 (__v16qi) __B,
2844 (__v16qi)
2845 _mm_setzero_si128 (),
2846 (__mmask16) __U);
2847}
2848
2849extern __inline __m128i
2850__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2851_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2852 __m128i __B)
2853{
2854 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
2855 (__v8hi) __B,
2856 (__v8hi) __W,
2857 (__mmask8) __U);
2858}
2859
2860extern __inline __m128i
2861__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2862_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2863{
2864 return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
2865 (__v8hi) __B,
2866 (__v8hi)
2867 _mm_setzero_si128 (),
2868 (__mmask8) __U);
2869}
2870
2871extern __inline __m256i
2872__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2873_mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2874 __m256i __B)
2875{
2876 return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2877 (__v32qi) __B,
2878 (__v32qi) __W,
2879 (__mmask32) __U);
2880}
2881
2882extern __inline __m256i
2883__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2884_mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2885{
2886 return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2887 (__v32qi) __B,
2888 (__v32qi)
2889 _mm256_setzero_si256 (),
2890 (__mmask32) __U);
2891}
2892
2893extern __inline __m128i
2894__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2895_mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2896 __m128i __B)
2897{
2898 return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2899 (__v16qi) __B,
2900 (__v16qi) __W,
2901 (__mmask16) __U);
2902}
2903
2904extern __inline __m128i
2905__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2906_mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
2907{
2908 return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2909 (__v16qi) __B,
2910 (__v16qi)
2911 _mm_setzero_si128 (),
2912 (__mmask16) __U);
2913}
2914
2915extern __inline __m256i
2916__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2917_mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2918 __m256i __B)
2919{
2920 return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2921 (__v16hi) __B,
2922 (__v16hi) __W,
2923 (__mmask16) __U);
2924}
2925
2926extern __inline __m256i
2927__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2928_mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2929{
2930 return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2931 (__v16hi) __B,
2932 (__v16hi)
2933 _mm256_setzero_si256 (),
2934 (__mmask16) __U);
2935}
2936
2937extern __inline __m128i
2938__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2939_mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2940 __m128i __B)
2941{
2942 return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2943 (__v8hi) __B,
2944 (__v8hi) __W,
2945 (__mmask8) __U);
2946}
2947
2948extern __inline __m128i
2949__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2950_mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2951{
2952 return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2953 (__v8hi) __B,
2954 (__v8hi)
2955 _mm_setzero_si128 (),
2956 (__mmask8) __U);
2957}
2958
2959extern __inline __m256i
2960__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2961_mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2962 __m256i __B)
2963{
2964 return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2965 (__v32qi) __B,
2966 (__v32qi) __W,
2967 (__mmask32) __U);
2968}
2969
2970extern __inline __m256i
2971__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2972_mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2973{
2974 return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2975 (__v32qi) __B,
2976 (__v32qi)
2977 _mm256_setzero_si256 (),
2978 (__mmask32) __U);
2979}
2980
2981extern __inline __m128i
2982__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2983_mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2984 __m128i __B)
2985{
2986 return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
2987 (__v16qi) __B,
2988 (__v16qi) __W,
2989 (__mmask16) __U);
2990}
2991
2992extern __inline __m128i
2993__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2994_mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
2995{
2996 return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
2997 (__v16qi) __B,
2998 (__v16qi)
2999 _mm_setzero_si128 (),
3000 (__mmask16) __U);
3001}
3002
3003extern __inline __m256i
3004__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3005_mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3006 __m256i __B)
3007{
3008 return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
3009 (__v16hi) __B,
3010 (__v16hi) __W,
3011 (__mmask16) __U);
3012}
3013
3014extern __inline __m256i
3015__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3016_mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
3017{
3018 return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
3019 (__v16hi) __B,
3020 (__v16hi)
3021 _mm256_setzero_si256 (),
3022 (__mmask16) __U);
3023}
3024
3025extern __inline __m128i
3026__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3027_mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3028 __m128i __B)
3029{
3030 return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
3031 (__v8hi) __B,
3032 (__v8hi) __W,
3033 (__mmask8) __U);
3034}
3035
3036extern __inline __m128i
3037__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3038_mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3039{
3040 return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
3041 (__v8hi) __B,
3042 (__v8hi)
3043 _mm_setzero_si128 (),
3044 (__mmask8) __U);
3045}
3046
3047extern __inline __mmask16
3048__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3049_mm_cmpeq_epi8_mask (__m128i __A, __m128i __B)
3050{
3051 return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
3052 (__v16qi) __B,
3053 (__mmask16) -1);
3054}
3055
3056extern __inline __mmask16
3057__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3058_mm_mask_cmpeq_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3059{
3060 return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
3061 (__v16qi) __B,
3062 __U);
3063}
3064
3065extern __inline __mmask32
3066__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3067_mm256_cmpeq_epi8_mask (__m256i __A, __m256i __B)
3068{
3069 return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
3070 (__v32qi) __B,
3071 (__mmask32) -1);
3072}
3073
3074extern __inline __mmask32
3075__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3076_mm256_mask_cmpeq_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3077{
3078 return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
3079 (__v32qi) __B,
3080 __U);
3081}
3082
3083extern __inline __mmask8
3084__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3085_mm_cmpeq_epi16_mask (__m128i __A, __m128i __B)
3086{
3087 return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
3088 (__v8hi) __B,
3089 (__mmask8) -1);
3090}
3091
3092extern __inline __mmask8
3093__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3094_mm_mask_cmpeq_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3095{
3096 return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
3097 (__v8hi) __B, __U);
3098}
3099
3100extern __inline __mmask16
3101__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3102_mm256_cmpeq_epi16_mask (__m256i __A, __m256i __B)
3103{
3104 return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
3105 (__v16hi) __B,
3106 (__mmask16) -1);
3107}
3108
3109extern __inline __mmask16
3110__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3111_mm256_mask_cmpeq_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3112{
3113 return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
3114 (__v16hi) __B,
3115 __U);
3116}
3117
3118extern __inline __mmask16
3119__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3120_mm_cmpgt_epi8_mask (__m128i __A, __m128i __B)
3121{
3122 return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
3123 (__v16qi) __B,
3124 (__mmask16) -1);
3125}
3126
3127extern __inline __mmask16
3128__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3129_mm_mask_cmpgt_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3130{
3131 return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
3132 (__v16qi) __B,
3133 __U);
3134}
3135
3136extern __inline __mmask32
3137__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3138_mm256_cmpgt_epi8_mask (__m256i __A, __m256i __B)
3139{
3140 return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
3141 (__v32qi) __B,
3142 (__mmask32) -1);
3143}
3144
3145extern __inline __mmask32
3146__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3147_mm256_mask_cmpgt_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3148{
3149 return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
3150 (__v32qi) __B,
3151 __U);
3152}
3153
3154extern __inline __mmask8
3155__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3156_mm_cmpgt_epi16_mask (__m128i __A, __m128i __B)
3157{
3158 return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
3159 (__v8hi) __B,
3160 (__mmask8) -1);
3161}
3162
3163extern __inline __mmask8
3164__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3165_mm_mask_cmpgt_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3166{
3167 return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
3168 (__v8hi) __B, __U);
3169}
3170
3171extern __inline __mmask16
3172__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3173_mm256_cmpgt_epi16_mask (__m256i __A, __m256i __B)
3174{
3175 return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
3176 (__v16hi) __B,
3177 (__mmask16) -1);
3178}
3179
3180extern __inline __mmask16
3181__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3182_mm256_mask_cmpgt_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3183{
3184 return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
3185 (__v16hi) __B,
3186 __U);
3187}
3188
3189extern __inline __mmask16
3190__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3191_mm_testn_epi8_mask (__m128i __A, __m128i __B)
3192{
3193 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3194 (__v16qi) __B,
3195 (__mmask16) -1);
3196}
3197
3198extern __inline __mmask16
3199__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3200_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3201{
3202 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3203 (__v16qi) __B, __U);
3204}
3205
3206extern __inline __mmask32
3207__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3208_mm256_testn_epi8_mask (__m256i __A, __m256i __B)
3209{
3210 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3211 (__v32qi) __B,
3212 (__mmask32) -1);
3213}
3214
3215extern __inline __mmask32
3216__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3217_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3218{
3219 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3220 (__v32qi) __B, __U);
3221}
3222
3223extern __inline __mmask8
3224__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3225_mm_testn_epi16_mask (__m128i __A, __m128i __B)
3226{
3227 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3228 (__v8hi) __B,
3229 (__mmask8) -1);
3230}
3231
3232extern __inline __mmask8
3233__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3234_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3235{
3236 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3237 (__v8hi) __B, __U);
3238}
3239
3240extern __inline __mmask16
3241__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3242_mm256_testn_epi16_mask (__m256i __A, __m256i __B)
3243{
3244 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3245 (__v16hi) __B,
3246 (__mmask16) -1);
3247}
3248
3249extern __inline __mmask16
3250__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3251_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3252{
3253 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3254 (__v16hi) __B, __U);
3255}
3256
3257extern __inline __m256i
3258__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3259_mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
3260 __m256i __B)
3261{
3262 return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
3263 (__v32qi) __B,
3264 (__v32qi) __W,
3265 (__mmask32) __U);
3266}
3267
3268extern __inline __m256i
3269__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3270_mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
3271{
3272 return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
3273 (__v32qi) __B,
3274 (__v32qi)
3275 _mm256_setzero_si256 (),
3276 (__mmask32) __U);
3277}
3278
3279extern __inline __m128i
3280__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3281_mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3282 __m128i __B)
3283{
3284 return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
3285 (__v16qi) __B,
3286 (__v16qi) __W,
3287 (__mmask16) __U);
3288}
3289
3290extern __inline __m128i
3291__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3292_mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3293{
3294 return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
3295 (__v16qi) __B,
3296 (__v16qi)
3297 _mm_setzero_si128 (),
3298 (__mmask16) __U);
3299}
3300
3301extern __inline __m256i
3302__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3303_mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
3304{
3305 return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
3306 (__v16hi) __B,
3307 (__v32qi)
3308 _mm256_setzero_si256 (),
3309 __M);
3310}
3311
3312extern __inline __m256i
3313__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3314_mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
3315 __m256i __B)
3316{
3317 return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
3318 (__v16hi) __B,
3319 (__v32qi) __W,
3320 __M);
3321}
3322
3323extern __inline __m128i
3324__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3325_mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
3326{
3327 return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
3328 (__v8hi) __B,
3329 (__v16qi)
3330 _mm_setzero_si128 (),
3331 __M);
3332}
3333
3334extern __inline __m128i
3335__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3336_mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
3337 __m128i __B)
3338{
3339 return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
3340 (__v8hi) __B,
3341 (__v16qi) __W,
3342 __M);
3343}
3344
3345extern __inline __m256i
3346__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3347_mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
3348{
3349 return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
3350 (__v16hi) __B,
3351 (__v32qi)
3352 _mm256_setzero_si256 (),
3353 __M);
3354}
3355
3356extern __inline __m256i
3357__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3358_mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
3359 __m256i __B)
3360{
3361 return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
3362 (__v16hi) __B,
3363 (__v32qi) __W,
3364 __M);
3365}
3366
3367extern __inline __m128i
3368__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3369_mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
3370{
3371 return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
3372 (__v8hi) __B,
3373 (__v16qi)
3374 _mm_setzero_si128 (),
3375 __M);
3376}
3377
3378extern __inline __m128i
3379__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3380_mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
3381 __m128i __B)
3382{
3383 return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
3384 (__v8hi) __B,
3385 (__v16qi) __W,
3386 __M);
3387}
3388
3389extern __inline __m256i
3390__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3391_mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
3392{
3393 return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
3394 (__v32qi) __W,
3395 (__mmask32) __U);
3396}
3397
3398extern __inline __m256i
3399__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3400_mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
3401{
3402 return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
3403 (__v32qi)
3404 _mm256_setzero_si256 (),
3405 (__mmask32) __U);
3406}
3407
3408extern __inline __m128i
3409__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3410_mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
3411{
3412 return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
3413 (__v16qi) __W,
3414 (__mmask16) __U);
3415}
3416
3417extern __inline __m128i
3418__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3419_mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
3420{
3421 return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
3422 (__v16qi)
3423 _mm_setzero_si128 (),
3424 (__mmask16) __U);
3425}
3426
3427extern __inline __m256i
3428__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3429_mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
3430{
3431 return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
3432 (__v16hi) __W,
3433 (__mmask16) __U);
3434}
3435
3436extern __inline __m256i
3437__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3438_mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
3439{
3440 return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
3441 (__v16hi)
3442 _mm256_setzero_si256 (),
3443 (__mmask16) __U);
3444}
3445
3446extern __inline __m128i
3447__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3448_mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
3449{
3450 return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
3451 (__v8hi) __W,
3452 (__mmask8) __U);
3453}
3454
3455extern __inline __m128i
3456__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3457_mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
3458{
3459 return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
3460 (__v8hi)
3461 _mm_setzero_si128 (),
3462 (__mmask8) __U);
3463}
3464
3465extern __inline __mmask32
3466 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3467_mm256_cmpneq_epu8_mask (__m256i __X, __m256i __Y)
3468{
3469 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3470 (__v32qi) __Y, 4,
3471 (__mmask32) - 1);
3472}
3473
3474extern __inline __mmask32
3475 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3476_mm256_cmplt_epu8_mask (__m256i __X, __m256i __Y)
3477{
3478 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3479 (__v32qi) __Y, 1,
3480 (__mmask32) - 1);
3481}
3482
3483extern __inline __mmask32
3484 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3485_mm256_cmpge_epu8_mask (__m256i __X, __m256i __Y)
3486{
3487 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3488 (__v32qi) __Y, 5,
3489 (__mmask32) - 1);
3490}
3491
3492extern __inline __mmask32
3493 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3494_mm256_cmple_epu8_mask (__m256i __X, __m256i __Y)
3495{
3496 return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3497 (__v32qi) __Y, 2,
3498 (__mmask32) - 1);
3499}
3500
3501extern __inline __mmask16
3502 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3503_mm256_cmpneq_epu16_mask (__m256i __X, __m256i __Y)
3504{
3505 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3506 (__v16hi) __Y, 4,
3507 (__mmask16) - 1);
3508}
3509
3510extern __inline __mmask16
3511 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3512_mm256_cmplt_epu16_mask (__m256i __X, __m256i __Y)
3513{
3514 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3515 (__v16hi) __Y, 1,
3516 (__mmask16) - 1);
3517}
3518
3519extern __inline __mmask16
3520 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3521_mm256_cmpge_epu16_mask (__m256i __X, __m256i __Y)
3522{
3523 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3524 (__v16hi) __Y, 5,
3525 (__mmask16) - 1);
3526}
3527
3528extern __inline __mmask16
3529 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3530_mm256_cmple_epu16_mask (__m256i __X, __m256i __Y)
3531{
3532 return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3533 (__v16hi) __Y, 2,
3534 (__mmask16) - 1);
3535}
3536
3537extern __inline void
3538__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3539_mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
3540{
3541 __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
3542 (__v16hi) __A,
3543 (__mmask16) __U);
3544}
3545
3546extern __inline void
3547__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3548_mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
3549{
3550 __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
3551 (__v8hi) __A,
3552 (__mmask8) __U);
3553}
3554
3555extern __inline __m128i
3556__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3557_mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3558 __m128i __B)
3559{
3560 return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
3561 (__v8hi) __B,
3562 (__v8hi) __W,
3563 (__mmask8) __U);
3564}
3565
3566extern __inline __m128i
3567__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3568_mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3569 __m128i __B)
3570{
3571 return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
3572 (__v16qi) __B,
3573 (__v16qi) __W,
3574 (__mmask16) __U);
3575}
3576
3577extern __inline __m128i
3578__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3579_mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3580{
3581 return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
3582 (__v16qi) __B,
3583 (__v16qi)
3584 _mm_setzero_si128 (),
3585 (__mmask16) __U);
3586}
3587
3588extern __inline __m128i
3589__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3590_mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3591 __m128i __B)
3592{
3593 return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
3594 (__v8hi) __B,
3595 (__v8hi) __W,
3596 (__mmask8) __U);
3597}
3598
3599extern __inline __m128i
3600__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3601_mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3602{
3603 return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
3604 (__v8hi) __B,
3605 (__v8hi)
3606 _mm_setzero_si128 (),
3607 (__mmask8) __U);
3608}
3609
3610extern __inline __m128i
3611__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3612_mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
3613 __m128i __B)
3614{
3615 return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
3616 (__v16qi) __B,
3617 (__v16qi) __W,
3618 (__mmask16) __U);
3619}
3620
3621extern __inline __m128i
3622__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3623_mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
3624{
3625 return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
3626 (__v16qi) __B,
3627 (__v16qi)
3628 _mm_setzero_si128 (),
3629 (__mmask16) __U);
3630}
3631
3632extern __inline __m128i
3633__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3634_mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
3635 __m128i __B)
3636{
3637 return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
3638 (__v8hi) __B,
3639 (__v8hi) __W,
3640 (__mmask8) __U);
3641}
3642
3643extern __inline __m128i
3644__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3645_mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
3646{
3647 return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
3648 (__v8hi) __B,
3649 (__v8hi)
3650 _mm_setzero_si128 (),
3651 (__mmask8) __U);
3652}
3653
3654extern __inline __m256i
3655__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3656_mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3657 __m128i __B)
3658{
3659 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
3660 (__v8hi) __B,
3661 (__v16hi) __W,
3662 (__mmask16) __U);
3663}
3664
3665extern __inline __m256i
3666__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3667_mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
3668{
3669 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
3670 (__v8hi) __B,
3671 (__v16hi)
3672 _mm256_setzero_si256 (),
3673 (__mmask16) __U);
3674}
3675
3676extern __inline __m128i
3677__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3678_mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3679 __m128i __B)
3680{
3681 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
3682 (__v8hi) __B,
3683 (__v8hi) __W,
3684 (__mmask8) __U);
3685}
3686
3687extern __inline __m128i
3688__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3689_mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3690{
3691 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
3692 (__v8hi) __B,
3693 (__v8hi)
3694 _mm_setzero_si128 (),
3695 (__mmask8) __U);
3696}
3697
3698extern __inline __m256i
3699__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3700_mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3701 __m128i __B)
3702{
3703 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
3704 (__v8hi) __B,
3705 (__v16hi) __W,
3706 (__mmask16) __U);
3707}
3708
3709extern __inline __m256i
3710__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3711_mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
3712{
3713 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
3714 (__v8hi) __B,
3715 (__v16hi)
3716 _mm256_setzero_si256 (),
3717 (__mmask16) __U);
3718}
3719
3720extern __inline __m128i
3721__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3722_mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3723 __m128i __B)
3724{
3725 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
3726 (__v8hi) __B,
3727 (__v8hi) __W,
3728 (__mmask8) __U);
3729}
3730
3731extern __inline __m128i
3732__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3733_mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3734{
3735 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
3736 (__v8hi) __B,
3737 (__v8hi)
3738 _mm_setzero_si128 (),
3739 (__mmask8) __U);
3740}
3741
3742extern __inline __m128i
3743__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3744_mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3745{
3746 return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
3747 (__v8hi) __B,
3748 (__v8hi)
3749 _mm_setzero_si128 (),
3750 (__mmask8) __U);
3751}
3752
3753extern __inline __m128i
3754__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3755_mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
3756 __m128i __B)
3757{
3758 return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
3759 (__v16qi) __B,
3760 (__v16qi) __W,
3761 (__mmask16) __U);
3762}
3763
3764extern __inline __m128i
3765__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3766_mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
3767{
3768 return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
3769 (__v16qi) __B,
3770 (__v16qi)
3771 _mm_setzero_si128 (),
3772 (__mmask16) __U);
3773}
3774
3775extern __inline __m128i
3776__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3777_mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
3778 __m128i __B)
3779{
3780 return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
3781 (__v8hi) __B,
3782 (__v8hi) __W,
3783 (__mmask8) __U);
3784}
3785
3786extern __inline __m128i
3787__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3788_mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
3789{
3790 return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
3791 (__v8hi) __B,
3792 (__v8hi)
3793 _mm_setzero_si128 (),
3794 (__mmask8) __U);
3795}
3796
3797extern __inline __m128i
3798__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3799_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3800 __m128i __B)
3801{
3802 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
3803 (__v16qi) __B,
3804 (__v16qi) __W,
3805 (__mmask16) __U);
3806}
3807
3808extern __inline __m128i
3809__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3810_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3811{
3812 return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
3813 (__v16qi) __B,
3814 (__v16qi)
3815 _mm_setzero_si128 (),
3816 (__mmask16) __U);
3817}
3818
3819extern __inline __m128i
3820__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3821_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3822 __m128i __B)
3823{
3824 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
3825 (__v8hi) __B,
3826 (__v8hi) __W,
3827 (__mmask8) __U);
3828}
3829
3830extern __inline __m128i
3831__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3832_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3833{
3834 return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
3835 (__v8hi) __B,
3836 (__v8hi)
3837 _mm_setzero_si128 (),
3838 (__mmask8) __U);
3839}
3840
3841extern __inline __m128i
3842__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3843_mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3844 __m128i __B)
3845{
3846 return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
3847 (__v16qi) __B,
3848 (__v16qi) __W,
3849 (__mmask16) __U);
3850}
3851
3852extern __inline __m128i
3853__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3854_mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3855{
3856 return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
3857 (__v16qi) __B,
3858 (__v16qi)
3859 _mm_setzero_si128 (),
3860 (__mmask16) __U);
3861}
3862
3863extern __inline __m128i
3864__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3865_mm_cvtepi16_epi8 (__m128i __A)
3866{
3867
3868 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
3869 (__v16qi)_mm_undefined_si128(),
3870 (__mmask8) -1);
3871}
3872
3873extern __inline __m128i
3874__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3875_mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
3876{
3877 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
3878 (__v16qi) __O, __M);
3879}
3880
3881extern __inline __m128i
3882__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3883_mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A)
3884{
3885 return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
3886 (__v16qi)
3887 _mm_setzero_si128 (),
3888 __M);
3889}
3890
3891extern __inline __m256i
3892__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3893_mm256_srav_epi16 (__m256i __A, __m256i __B)
3894{
3895 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
3896 (__v16hi) __B,
3897 (__v16hi)
3898 _mm256_setzero_si256 (),
3899 (__mmask16) -1);
3900}
3901
3902extern __inline __m256i
3903__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3904_mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3905 __m256i __B)
3906{
3907 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
3908 (__v16hi) __B,
3909 (__v16hi) __W,
3910 (__mmask16) __U);
3911}
3912
3913extern __inline __m256i
3914__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3915_mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
3916{
3917 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
3918 (__v16hi) __B,
3919 (__v16hi)
3920 _mm256_setzero_si256 (),
3921 (__mmask16) __U);
3922}
3923
3924extern __inline __m128i
3925__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3926_mm_srav_epi16 (__m128i __A, __m128i __B)
3927{
3928 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
3929 (__v8hi) __B,
3930 (__v8hi)
3931 _mm_setzero_hi (),
3932 (__mmask8) -1);
3933}
3934
3935extern __inline __m128i
3936__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3937_mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3938 __m128i __B)
3939{
3940 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
3941 (__v8hi) __B,
3942 (__v8hi) __W,
3943 (__mmask8) __U);
3944}
3945
3946extern __inline __m128i
3947__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3948_mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3949{
3950 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
3951 (__v8hi) __B,
3952 (__v8hi)
3953 _mm_setzero_si128 (),
3954 (__mmask8) __U);
3955}
3956
3957extern __inline __m256i
3958__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3959_mm256_srlv_epi16 (__m256i __A, __m256i __B)
3960{
3961 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
3962 (__v16hi) __B,
3963 (__v16hi)
3964 _mm256_setzero_si256 (),
3965 (__mmask16) -1);
3966}
3967
3968extern __inline __m256i
3969__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3970_mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3971 __m256i __B)
3972{
3973 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
3974 (__v16hi) __B,
3975 (__v16hi) __W,
3976 (__mmask16) __U);
3977}
3978
3979extern __inline __m256i
3980__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3981_mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
3982{
3983 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
3984 (__v16hi) __B,
3985 (__v16hi)
3986 _mm256_setzero_si256 (),
3987 (__mmask16) __U);
3988}
3989
3990extern __inline __m128i
3991__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3992_mm_srlv_epi16 (__m128i __A, __m128i __B)
3993{
3994 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
3995 (__v8hi) __B,
3996 (__v8hi)
3997 _mm_setzero_hi (),
3998 (__mmask8) -1);
3999}
4000
4001extern __inline __m128i
4002__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4003_mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4004 __m128i __B)
4005{
4006 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
4007 (__v8hi) __B,
4008 (__v8hi) __W,
4009 (__mmask8) __U);
4010}
4011
4012extern __inline __m128i
4013__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4014_mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4015{
4016 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
4017 (__v8hi) __B,
4018 (__v8hi)
4019 _mm_setzero_si128 (),
4020 (__mmask8) __U);
4021}
4022
4023extern __inline __m256i
4024__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4025_mm256_sllv_epi16 (__m256i __A, __m256i __B)
4026{
4027 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
4028 (__v16hi) __B,
4029 (__v16hi)
4030 _mm256_setzero_si256 (),
4031 (__mmask16) -1);
4032}
4033
4034extern __inline __m256i
4035__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4036_mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
4037 __m256i __B)
4038{
4039 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
4040 (__v16hi) __B,
4041 (__v16hi) __W,
4042 (__mmask16) __U);
4043}
4044
4045extern __inline __m256i
4046__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4047_mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
4048{
4049 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
4050 (__v16hi) __B,
4051 (__v16hi)
4052 _mm256_setzero_si256 (),
4053 (__mmask16) __U);
4054}
4055
4056extern __inline __m128i
4057__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4058_mm_sllv_epi16 (__m128i __A, __m128i __B)
4059{
4060 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
4061 (__v8hi) __B,
4062 (__v8hi)
4063 _mm_setzero_hi (),
4064 (__mmask8) -1);
4065}
4066
4067extern __inline __m128i
4068__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4069_mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4070 __m128i __B)
4071{
4072 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
4073 (__v8hi) __B,
4074 (__v8hi) __W,
4075 (__mmask8) __U);
4076}
4077
4078extern __inline __m128i
4079__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4080_mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4081{
4082 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
4083 (__v8hi) __B,
4084 (__v8hi)
4085 _mm_setzero_si128 (),
4086 (__mmask8) __U);
4087}
4088
4089extern __inline __m128i
4090__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4091_mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4092 __m128i __B)
4093{
4094 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
4095 (__v8hi) __B,
4096 (__v8hi) __W,
4097 (__mmask8) __U);
4098}
4099
4100extern __inline __m128i
4101__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4102_mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4103{
4104 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
4105 (__v8hi) __B,
4106 (__v8hi)
4107 _mm_setzero_si128 (),
4108 (__mmask8) __U);
4109}
4110
4111extern __inline __m256i
4112__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4113_mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
4114 __m128i __B)
4115{
4116 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
4117 (__v8hi) __B,
4118 (__v16hi) __W,
4119 (__mmask16) __U);
4120}
4121
4122extern __inline __m256i
4123__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4124_mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
4125{
4126 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
4127 (__v8hi) __B,
4128 (__v16hi)
4129 _mm256_setzero_si256 (),
4130 (__mmask16) __U);
4131}
4132
4133extern __inline __m256i
4134__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4135_mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
4136{
4137 return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
4138 (__v8si) __B,
4139 (__v16hi)
4140 _mm256_setzero_si256 (),
4141 __M);
4142}
4143
4144extern __inline __m256i
4145__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4146_mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
4147 __m256i __B)
4148{
4149 return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
4150 (__v8si) __B,
4151 (__v16hi) __W,
4152 __M);
4153}
4154
4155extern __inline __m128i
4156__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4157_mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
4158{
4159 return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
4160 (__v4si) __B,
4161 (__v8hi)
4162 _mm_setzero_si128 (),
4163 __M);
4164}
4165
4166extern __inline __m128i
4167__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4168_mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
4169 __m128i __B)
4170{
4171 return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
4172 (__v4si) __B,
4173 (__v8hi) __W, __M);
4174}
4175
4176extern __inline __m256i
4177__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4178_mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
4179{
4180 return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
4181 (__v8si) __B,
4182 (__v16hi)
4183 _mm256_setzero_si256 (),
4184 __M);
4185}
4186
4187extern __inline __m256i
4188__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4189_mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
4190 __m256i __B)
4191{
4192 return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
4193 (__v8si) __B,
4194 (__v16hi) __W,
4195 __M);
4196}
4197
4198extern __inline __m128i
4199__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4200_mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
4201{
4202 return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
4203 (__v4si) __B,
4204 (__v8hi)
4205 _mm_setzero_si128 (),
4206 __M);
4207}
4208
4209extern __inline __m128i
4210__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4211_mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
4212 __m128i __B)
4213{
4214 return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
4215 (__v4si) __B,
4216 (__v8hi) __W, __M);
4217}
4218
4219#ifdef __DISABLE_AVX512VLBW__
4220#undef __DISABLE_AVX512VLBW__
4221#pragma GCC pop_options
4222#endif /* __DISABLE_AVX512VLBW__ */
4223
4224#endif /* _AVX512VLBWINTRIN_H_INCLUDED */