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