1 /*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 *===-----------------------------------------------------------------------===
25 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
28 #ifndef __AVX512BWINTRIN_H
29 #define __AVX512BWINTRIN_H
31 typedef unsigned int __mmask32;
32 typedef unsigned long long __mmask64;
34 /* Define the default attributes for the functions in this file. */
35 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
37 static __inline __m512i __DEFAULT_FN_ATTRS
38 _mm512_setzero_qi(void) {
39 return (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
40 0, 0, 0, 0, 0, 0, 0, 0,
41 0, 0, 0, 0, 0, 0, 0, 0,
42 0, 0, 0, 0, 0, 0, 0, 0,
43 0, 0, 0, 0, 0, 0, 0, 0,
44 0, 0, 0, 0, 0, 0, 0, 0,
45 0, 0, 0, 0, 0, 0, 0, 0,
46 0, 0, 0, 0, 0, 0, 0, 0 };
49 static __inline __m512i __DEFAULT_FN_ATTRS
50 _mm512_setzero_hi(void) {
51 return (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
52 0, 0, 0, 0, 0, 0, 0, 0,
53 0, 0, 0, 0, 0, 0, 0, 0,
54 0, 0, 0, 0, 0, 0, 0, 0 };
59 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
60 _mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
61 return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
65 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
66 _mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
67 return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
71 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
72 _mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
73 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
77 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
78 _mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
79 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
83 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
84 _mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
85 return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
89 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
90 _mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
91 return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
95 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
96 _mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
97 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
101 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
102 _mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
103 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
107 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
108 _mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
109 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
113 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
114 _mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
115 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
119 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
120 _mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
121 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
125 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
126 _mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
127 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
131 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
132 _mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
133 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
137 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
138 _mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
139 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
143 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
144 _mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
145 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
149 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
150 _mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
151 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
155 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
156 _mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
157 return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
161 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
162 _mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
163 return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
167 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
168 _mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
169 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
173 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
174 _mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
175 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
179 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
180 _mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
181 return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
185 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
186 _mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
187 return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
191 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
192 _mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
193 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
197 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
198 _mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
199 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
203 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
204 _mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
205 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
209 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
210 _mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
211 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
215 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
216 _mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
217 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
221 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
222 _mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
223 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
227 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
228 _mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
229 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
233 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
234 _mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
235 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
239 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
240 _mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
241 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
245 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
246 _mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
247 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
251 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
252 _mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
253 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
257 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
258 _mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
259 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
263 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
264 _mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
265 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
269 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
270 _mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
271 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
275 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
276 _mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
277 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
281 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
282 _mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
283 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
287 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
288 _mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
289 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
293 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
294 _mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
295 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
299 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
300 _mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
301 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
305 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
306 _mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
307 return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
311 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
312 _mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
313 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
317 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
318 _mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
319 return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
323 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
324 _mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
325 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
329 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
330 _mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
331 return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
335 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
336 _mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
337 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
341 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
342 _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
343 return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
347 static __inline__ __m512i __DEFAULT_FN_ATTRS
348 _mm512_add_epi8 (__m512i __A, __m512i __B) {
349 return (__m512i) ((__v64qu) __A + (__v64qu) __B);
352 static __inline__ __m512i __DEFAULT_FN_ATTRS
353 _mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
354 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
355 (__v64qi)_mm512_add_epi8(__A, __B),
359 static __inline__ __m512i __DEFAULT_FN_ATTRS
360 _mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
361 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
362 (__v64qi)_mm512_add_epi8(__A, __B),
363 (__v64qi)_mm512_setzero_qi());
366 static __inline__ __m512i __DEFAULT_FN_ATTRS
367 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
368 return (__m512i) ((__v64qu) __A - (__v64qu) __B);
371 static __inline__ __m512i __DEFAULT_FN_ATTRS
372 _mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
373 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
374 (__v64qi)_mm512_sub_epi8(__A, __B),
378 static __inline__ __m512i __DEFAULT_FN_ATTRS
379 _mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
380 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
381 (__v64qi)_mm512_sub_epi8(__A, __B),
382 (__v64qi)_mm512_setzero_qi());
385 static __inline__ __m512i __DEFAULT_FN_ATTRS
386 _mm512_add_epi16 (__m512i __A, __m512i __B) {
387 return (__m512i) ((__v32hu) __A + (__v32hu) __B);
390 static __inline__ __m512i __DEFAULT_FN_ATTRS
391 _mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
392 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
393 (__v32hi)_mm512_add_epi16(__A, __B),
397 static __inline__ __m512i __DEFAULT_FN_ATTRS
398 _mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
399 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
400 (__v32hi)_mm512_add_epi16(__A, __B),
401 (__v32hi)_mm512_setzero_hi());
404 static __inline__ __m512i __DEFAULT_FN_ATTRS
405 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
406 return (__m512i) ((__v32hu) __A - (__v32hu) __B);
409 static __inline__ __m512i __DEFAULT_FN_ATTRS
410 _mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
411 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
412 (__v32hi)_mm512_sub_epi16(__A, __B),
416 static __inline__ __m512i __DEFAULT_FN_ATTRS
417 _mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
418 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
419 (__v32hi)_mm512_sub_epi16(__A, __B),
420 (__v32hi)_mm512_setzero_hi());
423 static __inline__ __m512i __DEFAULT_FN_ATTRS
424 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
425 return (__m512i) ((__v32hu) __A * (__v32hu) __B);
428 static __inline__ __m512i __DEFAULT_FN_ATTRS
429 _mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
430 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
431 (__v32hi)_mm512_mullo_epi16(__A, __B),
435 static __inline__ __m512i __DEFAULT_FN_ATTRS
436 _mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
437 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
438 (__v32hi)_mm512_mullo_epi16(__A, __B),
439 (__v32hi)_mm512_setzero_hi());
442 static __inline__ __m512i __DEFAULT_FN_ATTRS
443 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
445 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
450 static __inline__ __m512i __DEFAULT_FN_ATTRS
451 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
453 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
458 static __inline__ __m512i __DEFAULT_FN_ATTRS
459 _mm512_abs_epi8 (__m512i __A)
461 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
462 (__v64qi) _mm512_setzero_qi(),
466 static __inline__ __m512i __DEFAULT_FN_ATTRS
467 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
469 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
474 static __inline__ __m512i __DEFAULT_FN_ATTRS
475 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
477 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
478 (__v64qi) _mm512_setzero_qi(),
482 static __inline__ __m512i __DEFAULT_FN_ATTRS
483 _mm512_abs_epi16 (__m512i __A)
485 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
486 (__v32hi) _mm512_setzero_hi(),
490 static __inline__ __m512i __DEFAULT_FN_ATTRS
491 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
493 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
498 static __inline__ __m512i __DEFAULT_FN_ATTRS
499 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
501 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
502 (__v32hi) _mm512_setzero_hi(),
506 static __inline__ __m512i __DEFAULT_FN_ATTRS
507 _mm512_packs_epi32 (__m512i __A, __m512i __B)
509 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
511 (__v32hi) _mm512_setzero_hi(),
515 static __inline__ __m512i __DEFAULT_FN_ATTRS
516 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
518 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
520 (__v32hi) _mm512_setzero_hi(),
524 static __inline__ __m512i __DEFAULT_FN_ATTRS
525 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
528 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
534 static __inline__ __m512i __DEFAULT_FN_ATTRS
535 _mm512_packs_epi16 (__m512i __A, __m512i __B)
537 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
539 (__v64qi) _mm512_setzero_qi(),
543 static __inline__ __m512i __DEFAULT_FN_ATTRS
544 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
547 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
553 static __inline__ __m512i __DEFAULT_FN_ATTRS
554 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
556 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
558 (__v64qi) _mm512_setzero_qi(),
562 static __inline__ __m512i __DEFAULT_FN_ATTRS
563 _mm512_packus_epi32 (__m512i __A, __m512i __B)
565 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
567 (__v32hi) _mm512_setzero_hi(),
571 static __inline__ __m512i __DEFAULT_FN_ATTRS
572 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
574 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
576 (__v32hi) _mm512_setzero_hi(),
580 static __inline__ __m512i __DEFAULT_FN_ATTRS
581 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
584 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
590 static __inline__ __m512i __DEFAULT_FN_ATTRS
591 _mm512_packus_epi16 (__m512i __A, __m512i __B)
593 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
595 (__v64qi) _mm512_setzero_qi(),
599 static __inline__ __m512i __DEFAULT_FN_ATTRS
600 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
603 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
609 static __inline__ __m512i __DEFAULT_FN_ATTRS
610 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
612 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
614 (__v64qi) _mm512_setzero_qi(),
618 static __inline__ __m512i __DEFAULT_FN_ATTRS
619 _mm512_adds_epi8 (__m512i __A, __m512i __B)
621 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
623 (__v64qi) _mm512_setzero_qi(),
627 static __inline__ __m512i __DEFAULT_FN_ATTRS
628 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
631 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
637 static __inline__ __m512i __DEFAULT_FN_ATTRS
638 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
640 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
642 (__v64qi) _mm512_setzero_qi(),
646 static __inline__ __m512i __DEFAULT_FN_ATTRS
647 _mm512_adds_epi16 (__m512i __A, __m512i __B)
649 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
651 (__v32hi) _mm512_setzero_hi(),
655 static __inline__ __m512i __DEFAULT_FN_ATTRS
656 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
659 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
665 static __inline__ __m512i __DEFAULT_FN_ATTRS
666 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
668 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
670 (__v32hi) _mm512_setzero_hi(),
674 static __inline__ __m512i __DEFAULT_FN_ATTRS
675 _mm512_adds_epu8 (__m512i __A, __m512i __B)
677 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
679 (__v64qi) _mm512_setzero_qi(),
683 static __inline__ __m512i __DEFAULT_FN_ATTRS
684 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
687 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
693 static __inline__ __m512i __DEFAULT_FN_ATTRS
694 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
696 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
698 (__v64qi) _mm512_setzero_qi(),
702 static __inline__ __m512i __DEFAULT_FN_ATTRS
703 _mm512_adds_epu16 (__m512i __A, __m512i __B)
705 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
707 (__v32hi) _mm512_setzero_hi(),
711 static __inline__ __m512i __DEFAULT_FN_ATTRS
712 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
715 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
721 static __inline__ __m512i __DEFAULT_FN_ATTRS
722 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
724 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
726 (__v32hi) _mm512_setzero_hi(),
730 static __inline__ __m512i __DEFAULT_FN_ATTRS
731 _mm512_avg_epu8 (__m512i __A, __m512i __B)
733 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
735 (__v64qi) _mm512_setzero_qi(),
739 static __inline__ __m512i __DEFAULT_FN_ATTRS
740 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
743 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
749 static __inline__ __m512i __DEFAULT_FN_ATTRS
750 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
752 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
754 (__v64qi) _mm512_setzero_qi(),
758 static __inline__ __m512i __DEFAULT_FN_ATTRS
759 _mm512_avg_epu16 (__m512i __A, __m512i __B)
761 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
763 (__v32hi) _mm512_setzero_hi(),
767 static __inline__ __m512i __DEFAULT_FN_ATTRS
768 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
771 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
777 static __inline__ __m512i __DEFAULT_FN_ATTRS
778 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
780 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
782 (__v32hi) _mm512_setzero_hi(),
786 static __inline__ __m512i __DEFAULT_FN_ATTRS
787 _mm512_max_epi8 (__m512i __A, __m512i __B)
789 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
791 (__v64qi) _mm512_setzero_qi(),
795 static __inline__ __m512i __DEFAULT_FN_ATTRS
796 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
798 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
800 (__v64qi) _mm512_setzero_qi(),
804 static __inline__ __m512i __DEFAULT_FN_ATTRS
805 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
808 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
814 static __inline__ __m512i __DEFAULT_FN_ATTRS
815 _mm512_max_epi16 (__m512i __A, __m512i __B)
817 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
819 (__v32hi) _mm512_setzero_hi(),
823 static __inline__ __m512i __DEFAULT_FN_ATTRS
824 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
826 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
828 (__v32hi) _mm512_setzero_hi(),
832 static __inline__ __m512i __DEFAULT_FN_ATTRS
833 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
836 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
842 static __inline__ __m512i __DEFAULT_FN_ATTRS
843 _mm512_max_epu8 (__m512i __A, __m512i __B)
845 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
847 (__v64qi) _mm512_setzero_qi(),
851 static __inline__ __m512i __DEFAULT_FN_ATTRS
852 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
854 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
856 (__v64qi) _mm512_setzero_qi(),
860 static __inline__ __m512i __DEFAULT_FN_ATTRS
861 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
864 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
870 static __inline__ __m512i __DEFAULT_FN_ATTRS
871 _mm512_max_epu16 (__m512i __A, __m512i __B)
873 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
875 (__v32hi) _mm512_setzero_hi(),
879 static __inline__ __m512i __DEFAULT_FN_ATTRS
880 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
882 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
884 (__v32hi) _mm512_setzero_hi(),
888 static __inline__ __m512i __DEFAULT_FN_ATTRS
889 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
892 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
898 static __inline__ __m512i __DEFAULT_FN_ATTRS
899 _mm512_min_epi8 (__m512i __A, __m512i __B)
901 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
903 (__v64qi) _mm512_setzero_qi(),
907 static __inline__ __m512i __DEFAULT_FN_ATTRS
908 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
910 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
912 (__v64qi) _mm512_setzero_qi(),
916 static __inline__ __m512i __DEFAULT_FN_ATTRS
917 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
920 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
926 static __inline__ __m512i __DEFAULT_FN_ATTRS
927 _mm512_min_epi16 (__m512i __A, __m512i __B)
929 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
931 (__v32hi) _mm512_setzero_hi(),
935 static __inline__ __m512i __DEFAULT_FN_ATTRS
936 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
938 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
940 (__v32hi) _mm512_setzero_hi(),
944 static __inline__ __m512i __DEFAULT_FN_ATTRS
945 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
948 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
954 static __inline__ __m512i __DEFAULT_FN_ATTRS
955 _mm512_min_epu8 (__m512i __A, __m512i __B)
957 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
959 (__v64qi) _mm512_setzero_qi(),
963 static __inline__ __m512i __DEFAULT_FN_ATTRS
964 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
966 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
968 (__v64qi) _mm512_setzero_qi(),
972 static __inline__ __m512i __DEFAULT_FN_ATTRS
973 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
976 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
982 static __inline__ __m512i __DEFAULT_FN_ATTRS
983 _mm512_min_epu16 (__m512i __A, __m512i __B)
985 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
987 (__v32hi) _mm512_setzero_hi(),
991 static __inline__ __m512i __DEFAULT_FN_ATTRS
992 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
994 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
996 (__v32hi) _mm512_setzero_hi(),
1000 static __inline__ __m512i __DEFAULT_FN_ATTRS
1001 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1004 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1010 static __inline__ __m512i __DEFAULT_FN_ATTRS
1011 _mm512_shuffle_epi8(__m512i __A, __m512i __B)
1013 return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
1016 static __inline__ __m512i __DEFAULT_FN_ATTRS
1017 _mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
1019 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1020 (__v64qi)_mm512_shuffle_epi8(__A, __B),
1024 static __inline__ __m512i __DEFAULT_FN_ATTRS
1025 _mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
1027 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1028 (__v64qi)_mm512_shuffle_epi8(__A, __B),
1029 (__v64qi)_mm512_setzero_qi());
1032 static __inline__ __m512i __DEFAULT_FN_ATTRS
1033 _mm512_subs_epi8 (__m512i __A, __m512i __B)
1035 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1037 (__v64qi) _mm512_setzero_qi(),
1041 static __inline__ __m512i __DEFAULT_FN_ATTRS
1042 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1045 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1051 static __inline__ __m512i __DEFAULT_FN_ATTRS
1052 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1054 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1056 (__v64qi) _mm512_setzero_qi(),
1060 static __inline__ __m512i __DEFAULT_FN_ATTRS
1061 _mm512_subs_epi16 (__m512i __A, __m512i __B)
1063 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1065 (__v32hi) _mm512_setzero_hi(),
1069 static __inline__ __m512i __DEFAULT_FN_ATTRS
1070 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1073 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1079 static __inline__ __m512i __DEFAULT_FN_ATTRS
1080 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1082 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1084 (__v32hi) _mm512_setzero_hi(),
1088 static __inline__ __m512i __DEFAULT_FN_ATTRS
1089 _mm512_subs_epu8 (__m512i __A, __m512i __B)
1091 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1093 (__v64qi) _mm512_setzero_qi(),
1097 static __inline__ __m512i __DEFAULT_FN_ATTRS
1098 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1101 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1107 static __inline__ __m512i __DEFAULT_FN_ATTRS
1108 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1110 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1112 (__v64qi) _mm512_setzero_qi(),
1116 static __inline__ __m512i __DEFAULT_FN_ATTRS
1117 _mm512_subs_epu16 (__m512i __A, __m512i __B)
1119 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1121 (__v32hi) _mm512_setzero_hi(),
1125 static __inline__ __m512i __DEFAULT_FN_ATTRS
1126 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1129 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1135 static __inline__ __m512i __DEFAULT_FN_ATTRS
1136 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1138 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1140 (__v32hi) _mm512_setzero_hi(),
1144 static __inline__ __m512i __DEFAULT_FN_ATTRS
1145 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1146 __mmask32 __U, __m512i __B)
1148 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1149 (__v32hi) __I /* idx */ ,
1154 static __inline__ __m512i __DEFAULT_FN_ATTRS
1155 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1157 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1163 static __inline__ __m512i __DEFAULT_FN_ATTRS
1164 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1165 __m512i __I, __m512i __B)
1167 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1173 static __inline__ __m512i __DEFAULT_FN_ATTRS
1174 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1175 __m512i __I, __m512i __B)
1177 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1184 static __inline__ __m512i __DEFAULT_FN_ATTRS
1185 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
1187 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1189 (__v32hi) _mm512_setzero_hi(),
1193 static __inline__ __m512i __DEFAULT_FN_ATTRS
1194 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1197 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1203 static __inline__ __m512i __DEFAULT_FN_ATTRS
1204 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1206 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1208 (__v32hi) _mm512_setzero_hi(),
1212 static __inline__ __m512i __DEFAULT_FN_ATTRS
1213 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
1215 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1217 (__v32hi) _mm512_setzero_hi(),
1221 static __inline__ __m512i __DEFAULT_FN_ATTRS
1222 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1225 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1231 static __inline__ __m512i __DEFAULT_FN_ATTRS
1232 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1234 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1236 (__v32hi) _mm512_setzero_hi(),
1240 static __inline__ __m512i __DEFAULT_FN_ATTRS
1241 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
1243 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1245 (__v32hi) _mm512_setzero_hi(),
1249 static __inline__ __m512i __DEFAULT_FN_ATTRS
1250 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1253 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1259 static __inline__ __m512i __DEFAULT_FN_ATTRS
1260 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1262 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1264 (__v32hi) _mm512_setzero_hi(),
1268 static __inline__ __m512i __DEFAULT_FN_ATTRS
1269 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
1270 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1272 (__v32hi) _mm512_setzero_hi(),
1276 static __inline__ __m512i __DEFAULT_FN_ATTRS
1277 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1279 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1285 static __inline__ __m512i __DEFAULT_FN_ATTRS
1286 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
1287 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1289 (__v32hi) _mm512_setzero_hi(),
1293 static __inline__ __m512i __DEFAULT_FN_ATTRS
1294 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
1295 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1297 (__v16si) _mm512_setzero_si512(),
1301 static __inline__ __m512i __DEFAULT_FN_ATTRS
1302 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1304 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1310 static __inline__ __m512i __DEFAULT_FN_ATTRS
1311 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
1312 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1314 (__v16si) _mm512_setzero_si512(),
1318 static __inline__ __m256i __DEFAULT_FN_ATTRS
1319 _mm512_cvtsepi16_epi8 (__m512i __A) {
1320 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1321 (__v32qi)_mm256_setzero_si256(),
1325 static __inline__ __m256i __DEFAULT_FN_ATTRS
1326 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1327 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1332 static __inline__ __m256i __DEFAULT_FN_ATTRS
1333 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1334 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1335 (__v32qi) _mm256_setzero_si256(),
1339 static __inline__ __m256i __DEFAULT_FN_ATTRS
1340 _mm512_cvtusepi16_epi8 (__m512i __A) {
1341 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1342 (__v32qi) _mm256_setzero_si256(),
1346 static __inline__ __m256i __DEFAULT_FN_ATTRS
1347 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1348 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1353 static __inline__ __m256i __DEFAULT_FN_ATTRS
1354 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1355 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1356 (__v32qi) _mm256_setzero_si256(),
1360 static __inline__ __m256i __DEFAULT_FN_ATTRS
1361 _mm512_cvtepi16_epi8 (__m512i __A) {
1362 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1363 (__v32qi) _mm256_setzero_si256(),
1367 static __inline__ __m256i __DEFAULT_FN_ATTRS
1368 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1369 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1374 static __inline__ __m256i __DEFAULT_FN_ATTRS
1375 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1376 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1377 (__v32qi) _mm256_setzero_si256(),
1381 static __inline__ void __DEFAULT_FN_ATTRS
1382 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1384 __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1387 static __inline__ void __DEFAULT_FN_ATTRS
1388 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1390 __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1393 static __inline__ void __DEFAULT_FN_ATTRS
1394 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1396 __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1399 static __inline__ __m512i __DEFAULT_FN_ATTRS
1400 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1401 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1403 10, 64+10, 11, 64+11,
1404 12, 64+12, 13, 64+13,
1405 14, 64+14, 15, 64+15,
1406 24, 64+24, 25, 64+25,
1407 26, 64+26, 27, 64+27,
1408 28, 64+28, 29, 64+29,
1409 30, 64+30, 31, 64+31,
1410 40, 64+40, 41, 64+41,
1411 42, 64+42, 43, 64+43,
1412 44, 64+44, 45, 64+45,
1413 46, 64+46, 47, 64+47,
1414 56, 64+56, 57, 64+57,
1415 58, 64+58, 59, 64+59,
1416 60, 64+60, 61, 64+61,
1417 62, 64+62, 63, 64+63);
1420 static __inline__ __m512i __DEFAULT_FN_ATTRS
1421 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1422 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1423 (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1427 static __inline__ __m512i __DEFAULT_FN_ATTRS
1428 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1429 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1430 (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1431 (__v64qi)_mm512_setzero_qi());
1434 static __inline__ __m512i __DEFAULT_FN_ATTRS
1435 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1436 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1439 12, 32+12, 13, 32+13,
1440 14, 32+14, 15, 32+15,
1441 20, 32+20, 21, 32+21,
1442 22, 32+22, 23, 32+23,
1443 28, 32+28, 29, 32+29,
1444 30, 32+30, 31, 32+31);
1447 static __inline__ __m512i __DEFAULT_FN_ATTRS
1448 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1449 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1450 (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1454 static __inline__ __m512i __DEFAULT_FN_ATTRS
1455 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1456 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1457 (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1458 (__v32hi)_mm512_setzero_hi());
1461 static __inline__ __m512i __DEFAULT_FN_ATTRS
1462 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1463 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1468 16, 64+16, 17, 64+17,
1469 18, 64+18, 19, 64+19,
1470 20, 64+20, 21, 64+21,
1471 22, 64+22, 23, 64+23,
1472 32, 64+32, 33, 64+33,
1473 34, 64+34, 35, 64+35,
1474 36, 64+36, 37, 64+37,
1475 38, 64+38, 39, 64+39,
1476 48, 64+48, 49, 64+49,
1477 50, 64+50, 51, 64+51,
1478 52, 64+52, 53, 64+53,
1479 54, 64+54, 55, 64+55);
1482 static __inline__ __m512i __DEFAULT_FN_ATTRS
1483 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1484 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1485 (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1489 static __inline__ __m512i __DEFAULT_FN_ATTRS
1490 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1491 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1492 (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1493 (__v64qi)_mm512_setzero_qi());
1496 static __inline__ __m512i __DEFAULT_FN_ATTRS
1497 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1498 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1502 10, 32+10, 11, 32+11,
1503 16, 32+16, 17, 32+17,
1504 18, 32+18, 19, 32+19,
1505 24, 32+24, 25, 32+25,
1506 26, 32+26, 27, 32+27);
1509 static __inline__ __m512i __DEFAULT_FN_ATTRS
1510 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1511 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1512 (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1516 static __inline__ __m512i __DEFAULT_FN_ATTRS
1517 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1518 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1519 (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1520 (__v32hi)_mm512_setzero_hi());
1523 static __inline__ __m512i __DEFAULT_FN_ATTRS
1524 _mm512_cvtepi8_epi16(__m256i __A)
1526 /* This function always performs a signed extension, but __v32qi is a char
1527 which may be signed or unsigned, so use __v32qs. */
1528 return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
1531 static __inline__ __m512i __DEFAULT_FN_ATTRS
1532 _mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1534 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1535 (__v32hi)_mm512_cvtepi8_epi16(__A),
1539 static __inline__ __m512i __DEFAULT_FN_ATTRS
1540 _mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1542 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1543 (__v32hi)_mm512_cvtepi8_epi16(__A),
1544 (__v32hi)_mm512_setzero_hi());
1547 static __inline__ __m512i __DEFAULT_FN_ATTRS
1548 _mm512_cvtepu8_epi16(__m256i __A)
1550 return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
1553 static __inline__ __m512i __DEFAULT_FN_ATTRS
1554 _mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1556 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1557 (__v32hi)_mm512_cvtepu8_epi16(__A),
1561 static __inline__ __m512i __DEFAULT_FN_ATTRS
1562 _mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1564 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1565 (__v32hi)_mm512_cvtepu8_epi16(__A),
1566 (__v32hi)_mm512_setzero_hi());
1570 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1571 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1572 (__v64qi)(__m512i)(b), (int)(p), \
1575 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1576 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1577 (__v64qi)(__m512i)(b), (int)(p), \
1580 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1581 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1582 (__v64qi)(__m512i)(b), (int)(p), \
1585 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1586 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1587 (__v64qi)(__m512i)(b), (int)(p), \
1590 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1591 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1592 (__v32hi)(__m512i)(b), (int)(p), \
1595 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1596 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1597 (__v32hi)(__m512i)(b), (int)(p), \
1600 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1601 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1602 (__v32hi)(__m512i)(b), (int)(p), \
1605 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1606 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1607 (__v32hi)(__m512i)(b), (int)(p), \
1610 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
1611 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1612 (__v32hi)_mm512_undefined_epi32(), \
1614 4 + (((imm) >> 0) & 0x3), \
1615 4 + (((imm) >> 2) & 0x3), \
1616 4 + (((imm) >> 4) & 0x3), \
1617 4 + (((imm) >> 6) & 0x3), \
1619 12 + (((imm) >> 0) & 0x3), \
1620 12 + (((imm) >> 2) & 0x3), \
1621 12 + (((imm) >> 4) & 0x3), \
1622 12 + (((imm) >> 6) & 0x3), \
1624 20 + (((imm) >> 0) & 0x3), \
1625 20 + (((imm) >> 2) & 0x3), \
1626 20 + (((imm) >> 4) & 0x3), \
1627 20 + (((imm) >> 6) & 0x3), \
1629 28 + (((imm) >> 0) & 0x3), \
1630 28 + (((imm) >> 2) & 0x3), \
1631 28 + (((imm) >> 4) & 0x3), \
1632 28 + (((imm) >> 6) & 0x3)); })
1634 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1635 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1636 (__v32hi)_mm512_shufflehi_epi16((A), \
1638 (__v32hi)(__m512i)(W)); })
1640 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1641 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1642 (__v32hi)_mm512_shufflehi_epi16((A), \
1644 (__v32hi)_mm512_setzero_hi()); })
1646 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
1647 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1648 (__v32hi)_mm512_undefined_epi32(), \
1649 0 + (((imm) >> 0) & 0x3), \
1650 0 + (((imm) >> 2) & 0x3), \
1651 0 + (((imm) >> 4) & 0x3), \
1652 0 + (((imm) >> 6) & 0x3), \
1654 8 + (((imm) >> 0) & 0x3), \
1655 8 + (((imm) >> 2) & 0x3), \
1656 8 + (((imm) >> 4) & 0x3), \
1657 8 + (((imm) >> 6) & 0x3), \
1659 16 + (((imm) >> 0) & 0x3), \
1660 16 + (((imm) >> 2) & 0x3), \
1661 16 + (((imm) >> 4) & 0x3), \
1662 16 + (((imm) >> 6) & 0x3), \
1664 24 + (((imm) >> 0) & 0x3), \
1665 24 + (((imm) >> 2) & 0x3), \
1666 24 + (((imm) >> 4) & 0x3), \
1667 24 + (((imm) >> 6) & 0x3), \
1671 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1672 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1673 (__v32hi)_mm512_shufflelo_epi16((A), \
1675 (__v32hi)(__m512i)(W)); })
1678 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1679 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1680 (__v32hi)_mm512_shufflelo_epi16((A), \
1682 (__v32hi)_mm512_setzero_hi()); })
1684 static __inline__ __m512i __DEFAULT_FN_ATTRS
1685 _mm512_sllv_epi16(__m512i __A, __m512i __B)
1687 return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
1690 static __inline__ __m512i __DEFAULT_FN_ATTRS
1691 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1693 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1694 (__v32hi)_mm512_sllv_epi16(__A, __B),
1698 static __inline__ __m512i __DEFAULT_FN_ATTRS
1699 _mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1701 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1702 (__v32hi)_mm512_sllv_epi16(__A, __B),
1703 (__v32hi)_mm512_setzero_hi());
1706 static __inline__ __m512i __DEFAULT_FN_ATTRS
1707 _mm512_sll_epi16(__m512i __A, __m128i __B)
1709 return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
1712 static __inline__ __m512i __DEFAULT_FN_ATTRS
1713 _mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1715 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1716 (__v32hi)_mm512_sll_epi16(__A, __B),
1720 static __inline__ __m512i __DEFAULT_FN_ATTRS
1721 _mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1723 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1724 (__v32hi)_mm512_sll_epi16(__A, __B),
1725 (__v32hi)_mm512_setzero_hi());
1728 static __inline__ __m512i __DEFAULT_FN_ATTRS
1729 _mm512_slli_epi16(__m512i __A, int __B)
1731 return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B);
1734 static __inline__ __m512i __DEFAULT_FN_ATTRS
1735 _mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1737 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1738 (__v32hi)_mm512_slli_epi16(__A, __B),
1742 static __inline__ __m512i __DEFAULT_FN_ATTRS
1743 _mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B)
1745 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1746 (__v32hi)_mm512_slli_epi16(__A, __B),
1747 (__v32hi)_mm512_setzero_hi());
1750 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
1751 (__m512i)__builtin_shufflevector( \
1752 (__v64qi)_mm512_setzero_si512(), \
1753 (__v64qi)(__m512i)(a), \
1754 ((char)(imm)&0xF0) ? 0 : ((char)(imm)>0x0 ? 16 : 64) - (char)(imm), \
1755 ((char)(imm)&0xF0) ? 1 : ((char)(imm)>0x1 ? 17 : 65) - (char)(imm), \
1756 ((char)(imm)&0xF0) ? 2 : ((char)(imm)>0x2 ? 18 : 66) - (char)(imm), \
1757 ((char)(imm)&0xF0) ? 3 : ((char)(imm)>0x3 ? 19 : 67) - (char)(imm), \
1758 ((char)(imm)&0xF0) ? 4 : ((char)(imm)>0x4 ? 20 : 68) - (char)(imm), \
1759 ((char)(imm)&0xF0) ? 5 : ((char)(imm)>0x5 ? 21 : 69) - (char)(imm), \
1760 ((char)(imm)&0xF0) ? 6 : ((char)(imm)>0x6 ? 22 : 70) - (char)(imm), \
1761 ((char)(imm)&0xF0) ? 7 : ((char)(imm)>0x7 ? 23 : 71) - (char)(imm), \
1762 ((char)(imm)&0xF0) ? 8 : ((char)(imm)>0x8 ? 24 : 72) - (char)(imm), \
1763 ((char)(imm)&0xF0) ? 9 : ((char)(imm)>0x9 ? 25 : 73) - (char)(imm), \
1764 ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 : 74) - (char)(imm), \
1765 ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 : 75) - (char)(imm), \
1766 ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 : 76) - (char)(imm), \
1767 ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 : 77) - (char)(imm), \
1768 ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 : 78) - (char)(imm), \
1769 ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 : 79) - (char)(imm), \
1770 ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 : 80) - (char)(imm), \
1771 ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 : 81) - (char)(imm), \
1772 ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 : 82) - (char)(imm), \
1773 ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 : 83) - (char)(imm), \
1774 ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 : 84) - (char)(imm), \
1775 ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 : 85) - (char)(imm), \
1776 ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 : 86) - (char)(imm), \
1777 ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 : 87) - (char)(imm), \
1778 ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 : 88) - (char)(imm), \
1779 ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 : 89) - (char)(imm), \
1780 ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 : 90) - (char)(imm), \
1781 ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 : 91) - (char)(imm), \
1782 ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 : 92) - (char)(imm), \
1783 ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 : 93) - (char)(imm), \
1784 ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 : 94) - (char)(imm), \
1785 ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 : 95) - (char)(imm), \
1786 ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 : 96) - (char)(imm), \
1787 ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 : 97) - (char)(imm), \
1788 ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 : 98) - (char)(imm), \
1789 ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 : 99) - (char)(imm), \
1790 ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
1791 ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
1792 ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
1793 ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
1794 ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
1795 ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
1796 ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
1797 ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
1798 ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
1799 ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
1800 ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
1801 ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
1802 ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
1803 ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
1804 ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
1805 ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
1806 ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
1807 ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
1808 ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
1809 ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
1810 ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
1811 ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
1812 ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
1813 ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
1814 ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
1815 ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
1816 ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
1817 ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
1819 static __inline__ __m512i __DEFAULT_FN_ATTRS
1820 _mm512_srlv_epi16(__m512i __A, __m512i __B)
1822 return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
1825 static __inline__ __m512i __DEFAULT_FN_ATTRS
1826 _mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1828 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1829 (__v32hi)_mm512_srlv_epi16(__A, __B),
1833 static __inline__ __m512i __DEFAULT_FN_ATTRS
1834 _mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1836 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1837 (__v32hi)_mm512_srlv_epi16(__A, __B),
1838 (__v32hi)_mm512_setzero_hi());
1841 static __inline__ __m512i __DEFAULT_FN_ATTRS
1842 _mm512_srav_epi16(__m512i __A, __m512i __B)
1844 return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
1847 static __inline__ __m512i __DEFAULT_FN_ATTRS
1848 _mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1850 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1851 (__v32hi)_mm512_srav_epi16(__A, __B),
1855 static __inline__ __m512i __DEFAULT_FN_ATTRS
1856 _mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1858 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1859 (__v32hi)_mm512_srav_epi16(__A, __B),
1860 (__v32hi)_mm512_setzero_hi());
1863 static __inline__ __m512i __DEFAULT_FN_ATTRS
1864 _mm512_sra_epi16(__m512i __A, __m128i __B)
1866 return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
1869 static __inline__ __m512i __DEFAULT_FN_ATTRS
1870 _mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1872 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1873 (__v32hi)_mm512_sra_epi16(__A, __B),
1877 static __inline__ __m512i __DEFAULT_FN_ATTRS
1878 _mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1880 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1881 (__v32hi)_mm512_sra_epi16(__A, __B),
1882 (__v32hi)_mm512_setzero_hi());
1885 static __inline__ __m512i __DEFAULT_FN_ATTRS
1886 _mm512_srai_epi16(__m512i __A, int __B)
1888 return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B);
1891 static __inline__ __m512i __DEFAULT_FN_ATTRS
1892 _mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1894 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1895 (__v32hi)_mm512_srai_epi16(__A, __B),
1899 static __inline__ __m512i __DEFAULT_FN_ATTRS
1900 _mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B)
1902 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1903 (__v32hi)_mm512_srai_epi16(__A, __B),
1904 (__v32hi)_mm512_setzero_hi());
1907 static __inline__ __m512i __DEFAULT_FN_ATTRS
1908 _mm512_srl_epi16(__m512i __A, __m128i __B)
1910 return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
1913 static __inline__ __m512i __DEFAULT_FN_ATTRS
1914 _mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1916 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1917 (__v32hi)_mm512_srl_epi16(__A, __B),
1921 static __inline__ __m512i __DEFAULT_FN_ATTRS
1922 _mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1924 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1925 (__v32hi)_mm512_srl_epi16(__A, __B),
1926 (__v32hi)_mm512_setzero_hi());
1929 static __inline__ __m512i __DEFAULT_FN_ATTRS
1930 _mm512_srli_epi16(__m512i __A, int __B)
1932 return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B);
1935 static __inline__ __m512i __DEFAULT_FN_ATTRS
1936 _mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1938 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1939 (__v32hi)_mm512_srli_epi16(__A, __B),
1943 static __inline__ __m512i __DEFAULT_FN_ATTRS
1944 _mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
1946 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1947 (__v32hi)_mm512_srli_epi16(__A, __B),
1948 (__v32hi)_mm512_setzero_hi());
1951 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
1952 (__m512i)__builtin_shufflevector( \
1953 (__v64qi)(__m512i)(a), \
1954 (__v64qi)_mm512_setzero_si512(), \
1955 ((char)(imm)&0xF0) ? 64 : (char)(imm) + ((char)(imm)>0xF ? 48 : 0), \
1956 ((char)(imm)&0xF0) ? 65 : (char)(imm) + ((char)(imm)>0xE ? 49 : 1), \
1957 ((char)(imm)&0xF0) ? 66 : (char)(imm) + ((char)(imm)>0xD ? 50 : 2), \
1958 ((char)(imm)&0xF0) ? 67 : (char)(imm) + ((char)(imm)>0xC ? 51 : 3), \
1959 ((char)(imm)&0xF0) ? 68 : (char)(imm) + ((char)(imm)>0xB ? 52 : 4), \
1960 ((char)(imm)&0xF0) ? 69 : (char)(imm) + ((char)(imm)>0xA ? 53 : 5), \
1961 ((char)(imm)&0xF0) ? 70 : (char)(imm) + ((char)(imm)>0x9 ? 54 : 6), \
1962 ((char)(imm)&0xF0) ? 71 : (char)(imm) + ((char)(imm)>0x8 ? 55 : 7), \
1963 ((char)(imm)&0xF0) ? 72 : (char)(imm) + ((char)(imm)>0x7 ? 56 : 8), \
1964 ((char)(imm)&0xF0) ? 73 : (char)(imm) + ((char)(imm)>0x6 ? 57 : 9), \
1965 ((char)(imm)&0xF0) ? 74 : (char)(imm) + ((char)(imm)>0x5 ? 58 : 10), \
1966 ((char)(imm)&0xF0) ? 75 : (char)(imm) + ((char)(imm)>0x4 ? 59 : 11), \
1967 ((char)(imm)&0xF0) ? 76 : (char)(imm) + ((char)(imm)>0x3 ? 60 : 12), \
1968 ((char)(imm)&0xF0) ? 77 : (char)(imm) + ((char)(imm)>0x2 ? 61 : 13), \
1969 ((char)(imm)&0xF0) ? 78 : (char)(imm) + ((char)(imm)>0x1 ? 62 : 14), \
1970 ((char)(imm)&0xF0) ? 79 : (char)(imm) + ((char)(imm)>0x0 ? 63 : 15), \
1971 ((char)(imm)&0xF0) ? 80 : (char)(imm) + ((char)(imm)>0xF ? 64 : 16), \
1972 ((char)(imm)&0xF0) ? 81 : (char)(imm) + ((char)(imm)>0xE ? 65 : 17), \
1973 ((char)(imm)&0xF0) ? 82 : (char)(imm) + ((char)(imm)>0xD ? 66 : 18), \
1974 ((char)(imm)&0xF0) ? 83 : (char)(imm) + ((char)(imm)>0xC ? 67 : 19), \
1975 ((char)(imm)&0xF0) ? 84 : (char)(imm) + ((char)(imm)>0xB ? 68 : 20), \
1976 ((char)(imm)&0xF0) ? 85 : (char)(imm) + ((char)(imm)>0xA ? 69 : 21), \
1977 ((char)(imm)&0xF0) ? 86 : (char)(imm) + ((char)(imm)>0x9 ? 70 : 22), \
1978 ((char)(imm)&0xF0) ? 87 : (char)(imm) + ((char)(imm)>0x8 ? 71 : 23), \
1979 ((char)(imm)&0xF0) ? 88 : (char)(imm) + ((char)(imm)>0x7 ? 72 : 24), \
1980 ((char)(imm)&0xF0) ? 89 : (char)(imm) + ((char)(imm)>0x6 ? 73 : 25), \
1981 ((char)(imm)&0xF0) ? 90 : (char)(imm) + ((char)(imm)>0x5 ? 74 : 26), \
1982 ((char)(imm)&0xF0) ? 91 : (char)(imm) + ((char)(imm)>0x4 ? 75 : 27), \
1983 ((char)(imm)&0xF0) ? 92 : (char)(imm) + ((char)(imm)>0x3 ? 76 : 28), \
1984 ((char)(imm)&0xF0) ? 93 : (char)(imm) + ((char)(imm)>0x2 ? 77 : 29), \
1985 ((char)(imm)&0xF0) ? 94 : (char)(imm) + ((char)(imm)>0x1 ? 78 : 30), \
1986 ((char)(imm)&0xF0) ? 95 : (char)(imm) + ((char)(imm)>0x0 ? 79 : 31), \
1987 ((char)(imm)&0xF0) ? 96 : (char)(imm) + ((char)(imm)>0xF ? 80 : 32), \
1988 ((char)(imm)&0xF0) ? 97 : (char)(imm) + ((char)(imm)>0xE ? 81 : 33), \
1989 ((char)(imm)&0xF0) ? 98 : (char)(imm) + ((char)(imm)>0xD ? 82 : 34), \
1990 ((char)(imm)&0xF0) ? 99 : (char)(imm) + ((char)(imm)>0xC ? 83 : 35), \
1991 ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ? 84 : 36), \
1992 ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ? 85 : 37), \
1993 ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ? 86 : 38), \
1994 ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ? 87 : 39), \
1995 ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ? 88 : 40), \
1996 ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ? 89 : 41), \
1997 ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ? 90 : 42), \
1998 ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ? 91 : 43), \
1999 ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ? 92 : 44), \
2000 ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ? 93 : 45), \
2001 ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ? 94 : 46), \
2002 ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ? 95 : 47), \
2003 ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ? 96 : 48), \
2004 ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ? 97 : 49), \
2005 ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ? 98 : 50), \
2006 ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ? 99 : 51), \
2007 ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
2008 ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
2009 ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
2010 ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
2011 ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
2012 ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
2013 ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
2014 ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
2015 ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
2016 ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
2017 ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
2018 ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
2020 static __inline__ __m512i __DEFAULT_FN_ATTRS
2021 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2023 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2028 static __inline__ __m512i __DEFAULT_FN_ATTRS
2029 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
2031 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2033 (__v32hi) _mm512_setzero_hi ());
2036 static __inline__ __m512i __DEFAULT_FN_ATTRS
2037 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2039 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2044 static __inline__ __m512i __DEFAULT_FN_ATTRS
2045 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
2047 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2049 (__v64qi) _mm512_setzero_hi ());
2052 static __inline__ __m512i __DEFAULT_FN_ATTRS
2053 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
2055 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2060 static __inline__ __m512i __DEFAULT_FN_ATTRS
2061 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
2063 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2065 _mm512_setzero_qi(),
2069 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2070 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
2072 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
2076 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2077 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
2079 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
2083 static __inline__ __m512i __DEFAULT_FN_ATTRS
2084 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
2086 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2091 static __inline__ __m512i __DEFAULT_FN_ATTRS
2092 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
2094 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2096 _mm512_setzero_hi (),
2100 static __inline__ __m512i __DEFAULT_FN_ATTRS
2101 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
2103 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2108 static __inline__ __m512i __DEFAULT_FN_ATTRS
2109 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
2111 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2113 _mm512_setzero_hi (),
2116 static __inline__ void __DEFAULT_FN_ATTRS
2117 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
2119 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
2124 static __inline__ void __DEFAULT_FN_ATTRS
2125 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
2127 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
2132 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2133 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
2135 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2140 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2141 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2143 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2144 (__v64qi) __B, __U);
2147 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2148 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
2150 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2155 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2156 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2158 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2159 (__v32hi) __B, __U);
2162 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2163 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
2165 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2170 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2171 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2173 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2174 (__v64qi) __B, __U);
2177 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2178 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
2180 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2185 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2186 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2188 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2189 (__v32hi) __B, __U);
2192 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2193 _mm512_movepi8_mask (__m512i __A)
2195 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
2198 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2199 _mm512_movepi16_mask (__m512i __A)
2201 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
2204 static __inline__ __m512i __DEFAULT_FN_ATTRS
2205 _mm512_movm_epi8 (__mmask64 __A)
2207 return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
2210 static __inline__ __m512i __DEFAULT_FN_ATTRS
2211 _mm512_movm_epi16 (__mmask32 __A)
2213 return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
2216 static __inline__ __m512i __DEFAULT_FN_ATTRS
2217 _mm512_broadcastb_epi8 (__m128i __A)
2219 return (__m512i)__builtin_shufflevector((__v16qi) __A,
2220 (__v16qi)_mm_undefined_si128(),
2221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2227 static __inline__ __m512i __DEFAULT_FN_ATTRS
2228 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
2230 return (__m512i)__builtin_ia32_selectb_512(__M,
2231 (__v64qi) _mm512_broadcastb_epi8(__A),
2235 static __inline__ __m512i __DEFAULT_FN_ATTRS
2236 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
2238 return (__m512i)__builtin_ia32_selectb_512(__M,
2239 (__v64qi) _mm512_broadcastb_epi8(__A),
2240 (__v64qi) _mm512_setzero_si512());
2243 static __inline__ __m512i __DEFAULT_FN_ATTRS
2244 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
2246 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2251 static __inline__ __m512i __DEFAULT_FN_ATTRS
2252 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
2254 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2255 (__v32hi) _mm512_setzero_hi(),
2259 static __inline__ __m512i __DEFAULT_FN_ATTRS
2260 _mm512_broadcastw_epi16 (__m128i __A)
2262 return (__m512i)__builtin_shufflevector((__v8hi) __A,
2263 (__v8hi)_mm_undefined_si128(),
2264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2268 static __inline__ __m512i __DEFAULT_FN_ATTRS
2269 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
2271 return (__m512i)__builtin_ia32_selectw_512(__M,
2272 (__v32hi) _mm512_broadcastw_epi16(__A),
2276 static __inline__ __m512i __DEFAULT_FN_ATTRS
2277 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
2279 return (__m512i)__builtin_ia32_selectw_512(__M,
2280 (__v32hi) _mm512_broadcastw_epi16(__A),
2281 (__v32hi) _mm512_setzero_si512());
2284 static __inline__ __m512i __DEFAULT_FN_ATTRS
2285 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
2287 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2289 (__v32hi) _mm512_undefined_epi32 (),
2293 static __inline__ __m512i __DEFAULT_FN_ATTRS
2294 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
2297 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2299 (__v32hi) _mm512_setzero_hi(),
2303 static __inline__ __m512i __DEFAULT_FN_ATTRS
2304 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2307 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2313 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
2314 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2315 (__v64qi)(__m512i)(B), (int)(N), \
2316 (__v64qi)_mm512_undefined_pd(), \
2319 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
2320 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2321 (__v64qi)(__m512i)(B), (int)(N), \
2322 (__v64qi)(__m512i)(W), \
2325 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
2326 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2327 (__v64qi)(__m512i)(B), (int)(N), \
2328 (__v64qi)_mm512_setzero_si512(), \
2331 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
2332 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2333 (__v64qi)(__m512i)(B), (int)(imm), \
2334 (__v32hi)_mm512_undefined_epi32(), \
2337 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
2338 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2339 (__v64qi)(__m512i)(B), (int)(imm), \
2340 (__v32hi)(__m512i)(W), \
2343 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
2344 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2345 (__v64qi)(__m512i)(B), (int)(imm), \
2346 (__v32hi)_mm512_setzero_hi(), \
2349 static __inline__ __m512i __DEFAULT_FN_ATTRS
2350 _mm512_sad_epu8 (__m512i __A, __m512i __B)
2352 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2358 #undef __DEFAULT_FN_ATTRS