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((__v16si)__A, (__v16si)__B);
512 static __inline__ __m512i __DEFAULT_FN_ATTRS
513 _mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B)
515 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
516 (__v32hi)_mm512_packs_epi32(__A, __B),
517 (__v32hi)_mm512_setzero_hi());
520 static __inline__ __m512i __DEFAULT_FN_ATTRS
521 _mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
523 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
524 (__v32hi)_mm512_packs_epi32(__A, __B),
528 static __inline__ __m512i __DEFAULT_FN_ATTRS
529 _mm512_packs_epi16(__m512i __A, __m512i __B)
531 return (__m512i)__builtin_ia32_packsswb512((__v32hi)__A, (__v32hi) __B);
534 static __inline__ __m512i __DEFAULT_FN_ATTRS
535 _mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
537 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
538 (__v64qi)_mm512_packs_epi16(__A, __B),
542 static __inline__ __m512i __DEFAULT_FN_ATTRS
543 _mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B)
545 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
546 (__v64qi)_mm512_packs_epi16(__A, __B),
547 (__v64qi)_mm512_setzero_qi());
550 static __inline__ __m512i __DEFAULT_FN_ATTRS
551 _mm512_packus_epi32(__m512i __A, __m512i __B)
553 return (__m512i)__builtin_ia32_packusdw512((__v16si) __A, (__v16si) __B);
556 static __inline__ __m512i __DEFAULT_FN_ATTRS
557 _mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B)
559 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
560 (__v32hi)_mm512_packus_epi32(__A, __B),
561 (__v32hi)_mm512_setzero_hi());
564 static __inline__ __m512i __DEFAULT_FN_ATTRS
565 _mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
567 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
568 (__v32hi)_mm512_packus_epi32(__A, __B),
572 static __inline__ __m512i __DEFAULT_FN_ATTRS
573 _mm512_packus_epi16(__m512i __A, __m512i __B)
575 return (__m512i)__builtin_ia32_packuswb512((__v32hi) __A, (__v32hi) __B);
578 static __inline__ __m512i __DEFAULT_FN_ATTRS
579 _mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
581 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
582 (__v64qi)_mm512_packus_epi16(__A, __B),
586 static __inline__ __m512i __DEFAULT_FN_ATTRS
587 _mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B)
589 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
590 (__v64qi)_mm512_packus_epi16(__A, __B),
591 (__v64qi)_mm512_setzero_qi());
594 static __inline__ __m512i __DEFAULT_FN_ATTRS
595 _mm512_adds_epi8 (__m512i __A, __m512i __B)
597 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
599 (__v64qi) _mm512_setzero_qi(),
603 static __inline__ __m512i __DEFAULT_FN_ATTRS
604 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
607 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
613 static __inline__ __m512i __DEFAULT_FN_ATTRS
614 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
616 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
618 (__v64qi) _mm512_setzero_qi(),
622 static __inline__ __m512i __DEFAULT_FN_ATTRS
623 _mm512_adds_epi16 (__m512i __A, __m512i __B)
625 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
627 (__v32hi) _mm512_setzero_hi(),
631 static __inline__ __m512i __DEFAULT_FN_ATTRS
632 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
635 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
641 static __inline__ __m512i __DEFAULT_FN_ATTRS
642 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
644 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
646 (__v32hi) _mm512_setzero_hi(),
650 static __inline__ __m512i __DEFAULT_FN_ATTRS
651 _mm512_adds_epu8 (__m512i __A, __m512i __B)
653 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
655 (__v64qi) _mm512_setzero_qi(),
659 static __inline__ __m512i __DEFAULT_FN_ATTRS
660 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
663 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
669 static __inline__ __m512i __DEFAULT_FN_ATTRS
670 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
672 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
674 (__v64qi) _mm512_setzero_qi(),
678 static __inline__ __m512i __DEFAULT_FN_ATTRS
679 _mm512_adds_epu16 (__m512i __A, __m512i __B)
681 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
683 (__v32hi) _mm512_setzero_hi(),
687 static __inline__ __m512i __DEFAULT_FN_ATTRS
688 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
691 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
697 static __inline__ __m512i __DEFAULT_FN_ATTRS
698 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
700 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
702 (__v32hi) _mm512_setzero_hi(),
706 static __inline__ __m512i __DEFAULT_FN_ATTRS
707 _mm512_avg_epu8 (__m512i __A, __m512i __B)
709 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
711 (__v64qi) _mm512_setzero_qi(),
715 static __inline__ __m512i __DEFAULT_FN_ATTRS
716 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
719 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
725 static __inline__ __m512i __DEFAULT_FN_ATTRS
726 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
728 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
730 (__v64qi) _mm512_setzero_qi(),
734 static __inline__ __m512i __DEFAULT_FN_ATTRS
735 _mm512_avg_epu16 (__m512i __A, __m512i __B)
737 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
739 (__v32hi) _mm512_setzero_hi(),
743 static __inline__ __m512i __DEFAULT_FN_ATTRS
744 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
747 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
753 static __inline__ __m512i __DEFAULT_FN_ATTRS
754 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
756 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
758 (__v32hi) _mm512_setzero_hi(),
762 static __inline__ __m512i __DEFAULT_FN_ATTRS
763 _mm512_max_epi8 (__m512i __A, __m512i __B)
765 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
767 (__v64qi) _mm512_setzero_qi(),
771 static __inline__ __m512i __DEFAULT_FN_ATTRS
772 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
774 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
776 (__v64qi) _mm512_setzero_qi(),
780 static __inline__ __m512i __DEFAULT_FN_ATTRS
781 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
784 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
790 static __inline__ __m512i __DEFAULT_FN_ATTRS
791 _mm512_max_epi16 (__m512i __A, __m512i __B)
793 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
795 (__v32hi) _mm512_setzero_hi(),
799 static __inline__ __m512i __DEFAULT_FN_ATTRS
800 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
802 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
804 (__v32hi) _mm512_setzero_hi(),
808 static __inline__ __m512i __DEFAULT_FN_ATTRS
809 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
812 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
818 static __inline__ __m512i __DEFAULT_FN_ATTRS
819 _mm512_max_epu8 (__m512i __A, __m512i __B)
821 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
823 (__v64qi) _mm512_setzero_qi(),
827 static __inline__ __m512i __DEFAULT_FN_ATTRS
828 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
830 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
832 (__v64qi) _mm512_setzero_qi(),
836 static __inline__ __m512i __DEFAULT_FN_ATTRS
837 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
840 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
846 static __inline__ __m512i __DEFAULT_FN_ATTRS
847 _mm512_max_epu16 (__m512i __A, __m512i __B)
849 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
851 (__v32hi) _mm512_setzero_hi(),
855 static __inline__ __m512i __DEFAULT_FN_ATTRS
856 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
858 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
860 (__v32hi) _mm512_setzero_hi(),
864 static __inline__ __m512i __DEFAULT_FN_ATTRS
865 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
868 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
874 static __inline__ __m512i __DEFAULT_FN_ATTRS
875 _mm512_min_epi8 (__m512i __A, __m512i __B)
877 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
879 (__v64qi) _mm512_setzero_qi(),
883 static __inline__ __m512i __DEFAULT_FN_ATTRS
884 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
886 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
888 (__v64qi) _mm512_setzero_qi(),
892 static __inline__ __m512i __DEFAULT_FN_ATTRS
893 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
896 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
902 static __inline__ __m512i __DEFAULT_FN_ATTRS
903 _mm512_min_epi16 (__m512i __A, __m512i __B)
905 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
907 (__v32hi) _mm512_setzero_hi(),
911 static __inline__ __m512i __DEFAULT_FN_ATTRS
912 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
914 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
916 (__v32hi) _mm512_setzero_hi(),
920 static __inline__ __m512i __DEFAULT_FN_ATTRS
921 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
924 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
930 static __inline__ __m512i __DEFAULT_FN_ATTRS
931 _mm512_min_epu8 (__m512i __A, __m512i __B)
933 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
935 (__v64qi) _mm512_setzero_qi(),
939 static __inline__ __m512i __DEFAULT_FN_ATTRS
940 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
942 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
944 (__v64qi) _mm512_setzero_qi(),
948 static __inline__ __m512i __DEFAULT_FN_ATTRS
949 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
952 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
958 static __inline__ __m512i __DEFAULT_FN_ATTRS
959 _mm512_min_epu16 (__m512i __A, __m512i __B)
961 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
963 (__v32hi) _mm512_setzero_hi(),
967 static __inline__ __m512i __DEFAULT_FN_ATTRS
968 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
970 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
972 (__v32hi) _mm512_setzero_hi(),
976 static __inline__ __m512i __DEFAULT_FN_ATTRS
977 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
980 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
986 static __inline__ __m512i __DEFAULT_FN_ATTRS
987 _mm512_shuffle_epi8(__m512i __A, __m512i __B)
989 return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
992 static __inline__ __m512i __DEFAULT_FN_ATTRS
993 _mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
995 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
996 (__v64qi)_mm512_shuffle_epi8(__A, __B),
1000 static __inline__ __m512i __DEFAULT_FN_ATTRS
1001 _mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
1003 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1004 (__v64qi)_mm512_shuffle_epi8(__A, __B),
1005 (__v64qi)_mm512_setzero_qi());
1008 static __inline__ __m512i __DEFAULT_FN_ATTRS
1009 _mm512_subs_epi8 (__m512i __A, __m512i __B)
1011 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1013 (__v64qi) _mm512_setzero_qi(),
1017 static __inline__ __m512i __DEFAULT_FN_ATTRS
1018 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1021 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1027 static __inline__ __m512i __DEFAULT_FN_ATTRS
1028 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1030 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1032 (__v64qi) _mm512_setzero_qi(),
1036 static __inline__ __m512i __DEFAULT_FN_ATTRS
1037 _mm512_subs_epi16 (__m512i __A, __m512i __B)
1039 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1041 (__v32hi) _mm512_setzero_hi(),
1045 static __inline__ __m512i __DEFAULT_FN_ATTRS
1046 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1049 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1055 static __inline__ __m512i __DEFAULT_FN_ATTRS
1056 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1058 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1060 (__v32hi) _mm512_setzero_hi(),
1064 static __inline__ __m512i __DEFAULT_FN_ATTRS
1065 _mm512_subs_epu8 (__m512i __A, __m512i __B)
1067 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1069 (__v64qi) _mm512_setzero_qi(),
1073 static __inline__ __m512i __DEFAULT_FN_ATTRS
1074 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1077 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1083 static __inline__ __m512i __DEFAULT_FN_ATTRS
1084 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1086 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1088 (__v64qi) _mm512_setzero_qi(),
1092 static __inline__ __m512i __DEFAULT_FN_ATTRS
1093 _mm512_subs_epu16 (__m512i __A, __m512i __B)
1095 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1097 (__v32hi) _mm512_setzero_hi(),
1101 static __inline__ __m512i __DEFAULT_FN_ATTRS
1102 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1105 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1111 static __inline__ __m512i __DEFAULT_FN_ATTRS
1112 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1114 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1116 (__v32hi) _mm512_setzero_hi(),
1120 static __inline__ __m512i __DEFAULT_FN_ATTRS
1121 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1122 __mmask32 __U, __m512i __B)
1124 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1125 (__v32hi) __I /* idx */ ,
1130 static __inline__ __m512i __DEFAULT_FN_ATTRS
1131 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1133 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1139 static __inline__ __m512i __DEFAULT_FN_ATTRS
1140 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1141 __m512i __I, __m512i __B)
1143 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1149 static __inline__ __m512i __DEFAULT_FN_ATTRS
1150 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1151 __m512i __I, __m512i __B)
1153 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1160 static __inline__ __m512i __DEFAULT_FN_ATTRS
1161 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
1163 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1165 (__v32hi) _mm512_setzero_hi(),
1169 static __inline__ __m512i __DEFAULT_FN_ATTRS
1170 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1173 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1179 static __inline__ __m512i __DEFAULT_FN_ATTRS
1180 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1182 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1184 (__v32hi) _mm512_setzero_hi(),
1188 static __inline__ __m512i __DEFAULT_FN_ATTRS
1189 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
1191 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1193 (__v32hi) _mm512_setzero_hi(),
1197 static __inline__ __m512i __DEFAULT_FN_ATTRS
1198 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1201 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1207 static __inline__ __m512i __DEFAULT_FN_ATTRS
1208 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1210 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1212 (__v32hi) _mm512_setzero_hi(),
1216 static __inline__ __m512i __DEFAULT_FN_ATTRS
1217 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
1219 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1221 (__v32hi) _mm512_setzero_hi(),
1225 static __inline__ __m512i __DEFAULT_FN_ATTRS
1226 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1229 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1235 static __inline__ __m512i __DEFAULT_FN_ATTRS
1236 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1238 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1240 (__v32hi) _mm512_setzero_hi(),
1244 static __inline__ __m512i __DEFAULT_FN_ATTRS
1245 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
1246 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1248 (__v32hi) _mm512_setzero_hi(),
1252 static __inline__ __m512i __DEFAULT_FN_ATTRS
1253 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1255 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1261 static __inline__ __m512i __DEFAULT_FN_ATTRS
1262 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
1263 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1265 (__v32hi) _mm512_setzero_hi(),
1269 static __inline__ __m512i __DEFAULT_FN_ATTRS
1270 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
1271 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1273 (__v16si) _mm512_setzero_si512(),
1277 static __inline__ __m512i __DEFAULT_FN_ATTRS
1278 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1280 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1286 static __inline__ __m512i __DEFAULT_FN_ATTRS
1287 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
1288 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1290 (__v16si) _mm512_setzero_si512(),
1294 static __inline__ __m256i __DEFAULT_FN_ATTRS
1295 _mm512_cvtsepi16_epi8 (__m512i __A) {
1296 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1297 (__v32qi)_mm256_setzero_si256(),
1301 static __inline__ __m256i __DEFAULT_FN_ATTRS
1302 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1303 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1308 static __inline__ __m256i __DEFAULT_FN_ATTRS
1309 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1310 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1311 (__v32qi) _mm256_setzero_si256(),
1315 static __inline__ __m256i __DEFAULT_FN_ATTRS
1316 _mm512_cvtusepi16_epi8 (__m512i __A) {
1317 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1318 (__v32qi) _mm256_setzero_si256(),
1322 static __inline__ __m256i __DEFAULT_FN_ATTRS
1323 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1324 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1329 static __inline__ __m256i __DEFAULT_FN_ATTRS
1330 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1331 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1332 (__v32qi) _mm256_setzero_si256(),
1336 static __inline__ __m256i __DEFAULT_FN_ATTRS
1337 _mm512_cvtepi16_epi8 (__m512i __A) {
1338 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1339 (__v32qi) _mm256_setzero_si256(),
1343 static __inline__ __m256i __DEFAULT_FN_ATTRS
1344 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1345 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1350 static __inline__ __m256i __DEFAULT_FN_ATTRS
1351 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1352 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1353 (__v32qi) _mm256_setzero_si256(),
1357 static __inline__ void __DEFAULT_FN_ATTRS
1358 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1360 __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1363 static __inline__ void __DEFAULT_FN_ATTRS
1364 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1366 __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1369 static __inline__ void __DEFAULT_FN_ATTRS
1370 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1372 __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1375 static __inline__ __m512i __DEFAULT_FN_ATTRS
1376 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1377 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1379 10, 64+10, 11, 64+11,
1380 12, 64+12, 13, 64+13,
1381 14, 64+14, 15, 64+15,
1382 24, 64+24, 25, 64+25,
1383 26, 64+26, 27, 64+27,
1384 28, 64+28, 29, 64+29,
1385 30, 64+30, 31, 64+31,
1386 40, 64+40, 41, 64+41,
1387 42, 64+42, 43, 64+43,
1388 44, 64+44, 45, 64+45,
1389 46, 64+46, 47, 64+47,
1390 56, 64+56, 57, 64+57,
1391 58, 64+58, 59, 64+59,
1392 60, 64+60, 61, 64+61,
1393 62, 64+62, 63, 64+63);
1396 static __inline__ __m512i __DEFAULT_FN_ATTRS
1397 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1398 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1399 (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1403 static __inline__ __m512i __DEFAULT_FN_ATTRS
1404 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1405 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1406 (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1407 (__v64qi)_mm512_setzero_qi());
1410 static __inline__ __m512i __DEFAULT_FN_ATTRS
1411 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1412 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1415 12, 32+12, 13, 32+13,
1416 14, 32+14, 15, 32+15,
1417 20, 32+20, 21, 32+21,
1418 22, 32+22, 23, 32+23,
1419 28, 32+28, 29, 32+29,
1420 30, 32+30, 31, 32+31);
1423 static __inline__ __m512i __DEFAULT_FN_ATTRS
1424 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1425 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1426 (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1430 static __inline__ __m512i __DEFAULT_FN_ATTRS
1431 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1432 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1433 (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1434 (__v32hi)_mm512_setzero_hi());
1437 static __inline__ __m512i __DEFAULT_FN_ATTRS
1438 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1439 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1444 16, 64+16, 17, 64+17,
1445 18, 64+18, 19, 64+19,
1446 20, 64+20, 21, 64+21,
1447 22, 64+22, 23, 64+23,
1448 32, 64+32, 33, 64+33,
1449 34, 64+34, 35, 64+35,
1450 36, 64+36, 37, 64+37,
1451 38, 64+38, 39, 64+39,
1452 48, 64+48, 49, 64+49,
1453 50, 64+50, 51, 64+51,
1454 52, 64+52, 53, 64+53,
1455 54, 64+54, 55, 64+55);
1458 static __inline__ __m512i __DEFAULT_FN_ATTRS
1459 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1460 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1461 (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1465 static __inline__ __m512i __DEFAULT_FN_ATTRS
1466 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1467 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1468 (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1469 (__v64qi)_mm512_setzero_qi());
1472 static __inline__ __m512i __DEFAULT_FN_ATTRS
1473 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1474 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1478 10, 32+10, 11, 32+11,
1479 16, 32+16, 17, 32+17,
1480 18, 32+18, 19, 32+19,
1481 24, 32+24, 25, 32+25,
1482 26, 32+26, 27, 32+27);
1485 static __inline__ __m512i __DEFAULT_FN_ATTRS
1486 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1487 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1488 (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1492 static __inline__ __m512i __DEFAULT_FN_ATTRS
1493 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1494 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1495 (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1496 (__v32hi)_mm512_setzero_hi());
1499 static __inline__ __m512i __DEFAULT_FN_ATTRS
1500 _mm512_cvtepi8_epi16(__m256i __A)
1502 /* This function always performs a signed extension, but __v32qi is a char
1503 which may be signed or unsigned, so use __v32qs. */
1504 return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
1507 static __inline__ __m512i __DEFAULT_FN_ATTRS
1508 _mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1510 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1511 (__v32hi)_mm512_cvtepi8_epi16(__A),
1515 static __inline__ __m512i __DEFAULT_FN_ATTRS
1516 _mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1518 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1519 (__v32hi)_mm512_cvtepi8_epi16(__A),
1520 (__v32hi)_mm512_setzero_hi());
1523 static __inline__ __m512i __DEFAULT_FN_ATTRS
1524 _mm512_cvtepu8_epi16(__m256i __A)
1526 return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
1529 static __inline__ __m512i __DEFAULT_FN_ATTRS
1530 _mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1532 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1533 (__v32hi)_mm512_cvtepu8_epi16(__A),
1537 static __inline__ __m512i __DEFAULT_FN_ATTRS
1538 _mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1540 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1541 (__v32hi)_mm512_cvtepu8_epi16(__A),
1542 (__v32hi)_mm512_setzero_hi());
1546 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1547 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1548 (__v64qi)(__m512i)(b), (int)(p), \
1551 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1552 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1553 (__v64qi)(__m512i)(b), (int)(p), \
1556 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1557 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1558 (__v64qi)(__m512i)(b), (int)(p), \
1561 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1562 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1563 (__v64qi)(__m512i)(b), (int)(p), \
1566 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1567 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1568 (__v32hi)(__m512i)(b), (int)(p), \
1571 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1572 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1573 (__v32hi)(__m512i)(b), (int)(p), \
1576 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1577 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1578 (__v32hi)(__m512i)(b), (int)(p), \
1581 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1582 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1583 (__v32hi)(__m512i)(b), (int)(p), \
1586 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
1587 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1588 (__v32hi)_mm512_undefined_epi32(), \
1590 4 + (((imm) >> 0) & 0x3), \
1591 4 + (((imm) >> 2) & 0x3), \
1592 4 + (((imm) >> 4) & 0x3), \
1593 4 + (((imm) >> 6) & 0x3), \
1595 12 + (((imm) >> 0) & 0x3), \
1596 12 + (((imm) >> 2) & 0x3), \
1597 12 + (((imm) >> 4) & 0x3), \
1598 12 + (((imm) >> 6) & 0x3), \
1600 20 + (((imm) >> 0) & 0x3), \
1601 20 + (((imm) >> 2) & 0x3), \
1602 20 + (((imm) >> 4) & 0x3), \
1603 20 + (((imm) >> 6) & 0x3), \
1605 28 + (((imm) >> 0) & 0x3), \
1606 28 + (((imm) >> 2) & 0x3), \
1607 28 + (((imm) >> 4) & 0x3), \
1608 28 + (((imm) >> 6) & 0x3)); })
1610 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1611 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1612 (__v32hi)_mm512_shufflehi_epi16((A), \
1614 (__v32hi)(__m512i)(W)); })
1616 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1617 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1618 (__v32hi)_mm512_shufflehi_epi16((A), \
1620 (__v32hi)_mm512_setzero_hi()); })
1622 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
1623 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1624 (__v32hi)_mm512_undefined_epi32(), \
1625 0 + (((imm) >> 0) & 0x3), \
1626 0 + (((imm) >> 2) & 0x3), \
1627 0 + (((imm) >> 4) & 0x3), \
1628 0 + (((imm) >> 6) & 0x3), \
1630 8 + (((imm) >> 0) & 0x3), \
1631 8 + (((imm) >> 2) & 0x3), \
1632 8 + (((imm) >> 4) & 0x3), \
1633 8 + (((imm) >> 6) & 0x3), \
1635 16 + (((imm) >> 0) & 0x3), \
1636 16 + (((imm) >> 2) & 0x3), \
1637 16 + (((imm) >> 4) & 0x3), \
1638 16 + (((imm) >> 6) & 0x3), \
1640 24 + (((imm) >> 0) & 0x3), \
1641 24 + (((imm) >> 2) & 0x3), \
1642 24 + (((imm) >> 4) & 0x3), \
1643 24 + (((imm) >> 6) & 0x3), \
1647 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1648 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1649 (__v32hi)_mm512_shufflelo_epi16((A), \
1651 (__v32hi)(__m512i)(W)); })
1654 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1655 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1656 (__v32hi)_mm512_shufflelo_epi16((A), \
1658 (__v32hi)_mm512_setzero_hi()); })
1660 static __inline__ __m512i __DEFAULT_FN_ATTRS
1661 _mm512_sllv_epi16(__m512i __A, __m512i __B)
1663 return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
1666 static __inline__ __m512i __DEFAULT_FN_ATTRS
1667 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1669 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1670 (__v32hi)_mm512_sllv_epi16(__A, __B),
1674 static __inline__ __m512i __DEFAULT_FN_ATTRS
1675 _mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1677 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1678 (__v32hi)_mm512_sllv_epi16(__A, __B),
1679 (__v32hi)_mm512_setzero_hi());
1682 static __inline__ __m512i __DEFAULT_FN_ATTRS
1683 _mm512_sll_epi16(__m512i __A, __m128i __B)
1685 return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
1688 static __inline__ __m512i __DEFAULT_FN_ATTRS
1689 _mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1691 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1692 (__v32hi)_mm512_sll_epi16(__A, __B),
1696 static __inline__ __m512i __DEFAULT_FN_ATTRS
1697 _mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1699 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1700 (__v32hi)_mm512_sll_epi16(__A, __B),
1701 (__v32hi)_mm512_setzero_hi());
1704 static __inline__ __m512i __DEFAULT_FN_ATTRS
1705 _mm512_slli_epi16(__m512i __A, int __B)
1707 return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B);
1710 static __inline__ __m512i __DEFAULT_FN_ATTRS
1711 _mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1713 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1714 (__v32hi)_mm512_slli_epi16(__A, __B),
1718 static __inline__ __m512i __DEFAULT_FN_ATTRS
1719 _mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B)
1721 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1722 (__v32hi)_mm512_slli_epi16(__A, __B),
1723 (__v32hi)_mm512_setzero_hi());
1726 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
1727 (__m512i)__builtin_shufflevector( \
1728 (__v64qi)_mm512_setzero_si512(), \
1729 (__v64qi)(__m512i)(a), \
1730 ((char)(imm)&0xF0) ? 0 : ((char)(imm)>0x0 ? 16 : 64) - (char)(imm), \
1731 ((char)(imm)&0xF0) ? 1 : ((char)(imm)>0x1 ? 17 : 65) - (char)(imm), \
1732 ((char)(imm)&0xF0) ? 2 : ((char)(imm)>0x2 ? 18 : 66) - (char)(imm), \
1733 ((char)(imm)&0xF0) ? 3 : ((char)(imm)>0x3 ? 19 : 67) - (char)(imm), \
1734 ((char)(imm)&0xF0) ? 4 : ((char)(imm)>0x4 ? 20 : 68) - (char)(imm), \
1735 ((char)(imm)&0xF0) ? 5 : ((char)(imm)>0x5 ? 21 : 69) - (char)(imm), \
1736 ((char)(imm)&0xF0) ? 6 : ((char)(imm)>0x6 ? 22 : 70) - (char)(imm), \
1737 ((char)(imm)&0xF0) ? 7 : ((char)(imm)>0x7 ? 23 : 71) - (char)(imm), \
1738 ((char)(imm)&0xF0) ? 8 : ((char)(imm)>0x8 ? 24 : 72) - (char)(imm), \
1739 ((char)(imm)&0xF0) ? 9 : ((char)(imm)>0x9 ? 25 : 73) - (char)(imm), \
1740 ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 : 74) - (char)(imm), \
1741 ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 : 75) - (char)(imm), \
1742 ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 : 76) - (char)(imm), \
1743 ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 : 77) - (char)(imm), \
1744 ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 : 78) - (char)(imm), \
1745 ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 : 79) - (char)(imm), \
1746 ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 : 80) - (char)(imm), \
1747 ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 : 81) - (char)(imm), \
1748 ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 : 82) - (char)(imm), \
1749 ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 : 83) - (char)(imm), \
1750 ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 : 84) - (char)(imm), \
1751 ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 : 85) - (char)(imm), \
1752 ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 : 86) - (char)(imm), \
1753 ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 : 87) - (char)(imm), \
1754 ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 : 88) - (char)(imm), \
1755 ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 : 89) - (char)(imm), \
1756 ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 : 90) - (char)(imm), \
1757 ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 : 91) - (char)(imm), \
1758 ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 : 92) - (char)(imm), \
1759 ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 : 93) - (char)(imm), \
1760 ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 : 94) - (char)(imm), \
1761 ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 : 95) - (char)(imm), \
1762 ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 : 96) - (char)(imm), \
1763 ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 : 97) - (char)(imm), \
1764 ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 : 98) - (char)(imm), \
1765 ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 : 99) - (char)(imm), \
1766 ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
1767 ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
1768 ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
1769 ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
1770 ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
1771 ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
1772 ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
1773 ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
1774 ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
1775 ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
1776 ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
1777 ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
1778 ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
1779 ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
1780 ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
1781 ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
1782 ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
1783 ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
1784 ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
1785 ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
1786 ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
1787 ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
1788 ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
1789 ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
1790 ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
1791 ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
1792 ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
1793 ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
1795 static __inline__ __m512i __DEFAULT_FN_ATTRS
1796 _mm512_srlv_epi16(__m512i __A, __m512i __B)
1798 return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
1801 static __inline__ __m512i __DEFAULT_FN_ATTRS
1802 _mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1804 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1805 (__v32hi)_mm512_srlv_epi16(__A, __B),
1809 static __inline__ __m512i __DEFAULT_FN_ATTRS
1810 _mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1812 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1813 (__v32hi)_mm512_srlv_epi16(__A, __B),
1814 (__v32hi)_mm512_setzero_hi());
1817 static __inline__ __m512i __DEFAULT_FN_ATTRS
1818 _mm512_srav_epi16(__m512i __A, __m512i __B)
1820 return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
1823 static __inline__ __m512i __DEFAULT_FN_ATTRS
1824 _mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1826 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1827 (__v32hi)_mm512_srav_epi16(__A, __B),
1831 static __inline__ __m512i __DEFAULT_FN_ATTRS
1832 _mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1834 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1835 (__v32hi)_mm512_srav_epi16(__A, __B),
1836 (__v32hi)_mm512_setzero_hi());
1839 static __inline__ __m512i __DEFAULT_FN_ATTRS
1840 _mm512_sra_epi16(__m512i __A, __m128i __B)
1842 return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
1845 static __inline__ __m512i __DEFAULT_FN_ATTRS
1846 _mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1848 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1849 (__v32hi)_mm512_sra_epi16(__A, __B),
1853 static __inline__ __m512i __DEFAULT_FN_ATTRS
1854 _mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1856 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1857 (__v32hi)_mm512_sra_epi16(__A, __B),
1858 (__v32hi)_mm512_setzero_hi());
1861 static __inline__ __m512i __DEFAULT_FN_ATTRS
1862 _mm512_srai_epi16(__m512i __A, int __B)
1864 return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B);
1867 static __inline__ __m512i __DEFAULT_FN_ATTRS
1868 _mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1870 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1871 (__v32hi)_mm512_srai_epi16(__A, __B),
1875 static __inline__ __m512i __DEFAULT_FN_ATTRS
1876 _mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B)
1878 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1879 (__v32hi)_mm512_srai_epi16(__A, __B),
1880 (__v32hi)_mm512_setzero_hi());
1883 static __inline__ __m512i __DEFAULT_FN_ATTRS
1884 _mm512_srl_epi16(__m512i __A, __m128i __B)
1886 return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
1889 static __inline__ __m512i __DEFAULT_FN_ATTRS
1890 _mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1892 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1893 (__v32hi)_mm512_srl_epi16(__A, __B),
1897 static __inline__ __m512i __DEFAULT_FN_ATTRS
1898 _mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1900 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1901 (__v32hi)_mm512_srl_epi16(__A, __B),
1902 (__v32hi)_mm512_setzero_hi());
1905 static __inline__ __m512i __DEFAULT_FN_ATTRS
1906 _mm512_srli_epi16(__m512i __A, int __B)
1908 return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B);
1911 static __inline__ __m512i __DEFAULT_FN_ATTRS
1912 _mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1914 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1915 (__v32hi)_mm512_srli_epi16(__A, __B),
1919 static __inline__ __m512i __DEFAULT_FN_ATTRS
1920 _mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
1922 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1923 (__v32hi)_mm512_srli_epi16(__A, __B),
1924 (__v32hi)_mm512_setzero_hi());
1927 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
1928 (__m512i)__builtin_shufflevector( \
1929 (__v64qi)(__m512i)(a), \
1930 (__v64qi)_mm512_setzero_si512(), \
1931 ((char)(imm)&0xF0) ? 64 : (char)(imm) + ((char)(imm)>0xF ? 48 : 0), \
1932 ((char)(imm)&0xF0) ? 65 : (char)(imm) + ((char)(imm)>0xE ? 49 : 1), \
1933 ((char)(imm)&0xF0) ? 66 : (char)(imm) + ((char)(imm)>0xD ? 50 : 2), \
1934 ((char)(imm)&0xF0) ? 67 : (char)(imm) + ((char)(imm)>0xC ? 51 : 3), \
1935 ((char)(imm)&0xF0) ? 68 : (char)(imm) + ((char)(imm)>0xB ? 52 : 4), \
1936 ((char)(imm)&0xF0) ? 69 : (char)(imm) + ((char)(imm)>0xA ? 53 : 5), \
1937 ((char)(imm)&0xF0) ? 70 : (char)(imm) + ((char)(imm)>0x9 ? 54 : 6), \
1938 ((char)(imm)&0xF0) ? 71 : (char)(imm) + ((char)(imm)>0x8 ? 55 : 7), \
1939 ((char)(imm)&0xF0) ? 72 : (char)(imm) + ((char)(imm)>0x7 ? 56 : 8), \
1940 ((char)(imm)&0xF0) ? 73 : (char)(imm) + ((char)(imm)>0x6 ? 57 : 9), \
1941 ((char)(imm)&0xF0) ? 74 : (char)(imm) + ((char)(imm)>0x5 ? 58 : 10), \
1942 ((char)(imm)&0xF0) ? 75 : (char)(imm) + ((char)(imm)>0x4 ? 59 : 11), \
1943 ((char)(imm)&0xF0) ? 76 : (char)(imm) + ((char)(imm)>0x3 ? 60 : 12), \
1944 ((char)(imm)&0xF0) ? 77 : (char)(imm) + ((char)(imm)>0x2 ? 61 : 13), \
1945 ((char)(imm)&0xF0) ? 78 : (char)(imm) + ((char)(imm)>0x1 ? 62 : 14), \
1946 ((char)(imm)&0xF0) ? 79 : (char)(imm) + ((char)(imm)>0x0 ? 63 : 15), \
1947 ((char)(imm)&0xF0) ? 80 : (char)(imm) + ((char)(imm)>0xF ? 64 : 16), \
1948 ((char)(imm)&0xF0) ? 81 : (char)(imm) + ((char)(imm)>0xE ? 65 : 17), \
1949 ((char)(imm)&0xF0) ? 82 : (char)(imm) + ((char)(imm)>0xD ? 66 : 18), \
1950 ((char)(imm)&0xF0) ? 83 : (char)(imm) + ((char)(imm)>0xC ? 67 : 19), \
1951 ((char)(imm)&0xF0) ? 84 : (char)(imm) + ((char)(imm)>0xB ? 68 : 20), \
1952 ((char)(imm)&0xF0) ? 85 : (char)(imm) + ((char)(imm)>0xA ? 69 : 21), \
1953 ((char)(imm)&0xF0) ? 86 : (char)(imm) + ((char)(imm)>0x9 ? 70 : 22), \
1954 ((char)(imm)&0xF0) ? 87 : (char)(imm) + ((char)(imm)>0x8 ? 71 : 23), \
1955 ((char)(imm)&0xF0) ? 88 : (char)(imm) + ((char)(imm)>0x7 ? 72 : 24), \
1956 ((char)(imm)&0xF0) ? 89 : (char)(imm) + ((char)(imm)>0x6 ? 73 : 25), \
1957 ((char)(imm)&0xF0) ? 90 : (char)(imm) + ((char)(imm)>0x5 ? 74 : 26), \
1958 ((char)(imm)&0xF0) ? 91 : (char)(imm) + ((char)(imm)>0x4 ? 75 : 27), \
1959 ((char)(imm)&0xF0) ? 92 : (char)(imm) + ((char)(imm)>0x3 ? 76 : 28), \
1960 ((char)(imm)&0xF0) ? 93 : (char)(imm) + ((char)(imm)>0x2 ? 77 : 29), \
1961 ((char)(imm)&0xF0) ? 94 : (char)(imm) + ((char)(imm)>0x1 ? 78 : 30), \
1962 ((char)(imm)&0xF0) ? 95 : (char)(imm) + ((char)(imm)>0x0 ? 79 : 31), \
1963 ((char)(imm)&0xF0) ? 96 : (char)(imm) + ((char)(imm)>0xF ? 80 : 32), \
1964 ((char)(imm)&0xF0) ? 97 : (char)(imm) + ((char)(imm)>0xE ? 81 : 33), \
1965 ((char)(imm)&0xF0) ? 98 : (char)(imm) + ((char)(imm)>0xD ? 82 : 34), \
1966 ((char)(imm)&0xF0) ? 99 : (char)(imm) + ((char)(imm)>0xC ? 83 : 35), \
1967 ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ? 84 : 36), \
1968 ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ? 85 : 37), \
1969 ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ? 86 : 38), \
1970 ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ? 87 : 39), \
1971 ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ? 88 : 40), \
1972 ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ? 89 : 41), \
1973 ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ? 90 : 42), \
1974 ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ? 91 : 43), \
1975 ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ? 92 : 44), \
1976 ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ? 93 : 45), \
1977 ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ? 94 : 46), \
1978 ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ? 95 : 47), \
1979 ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ? 96 : 48), \
1980 ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ? 97 : 49), \
1981 ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ? 98 : 50), \
1982 ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ? 99 : 51), \
1983 ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
1984 ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
1985 ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
1986 ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
1987 ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
1988 ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
1989 ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
1990 ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
1991 ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
1992 ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
1993 ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
1994 ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
1996 static __inline__ __m512i __DEFAULT_FN_ATTRS
1997 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
1999 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2004 static __inline__ __m512i __DEFAULT_FN_ATTRS
2005 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
2007 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2009 (__v32hi) _mm512_setzero_hi ());
2012 static __inline__ __m512i __DEFAULT_FN_ATTRS
2013 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2015 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2020 static __inline__ __m512i __DEFAULT_FN_ATTRS
2021 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
2023 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2025 (__v64qi) _mm512_setzero_hi ());
2028 static __inline__ __m512i __DEFAULT_FN_ATTRS
2029 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
2031 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2036 static __inline__ __m512i __DEFAULT_FN_ATTRS
2037 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
2039 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2041 _mm512_setzero_qi(),
2045 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2046 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
2048 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
2052 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2053 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
2055 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
2059 static __inline__ __m512i __DEFAULT_FN_ATTRS
2060 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
2062 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2067 static __inline__ __m512i __DEFAULT_FN_ATTRS
2068 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
2070 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2072 _mm512_setzero_hi (),
2076 static __inline__ __m512i __DEFAULT_FN_ATTRS
2077 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
2079 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2084 static __inline__ __m512i __DEFAULT_FN_ATTRS
2085 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
2087 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2089 _mm512_setzero_hi (),
2092 static __inline__ void __DEFAULT_FN_ATTRS
2093 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
2095 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
2100 static __inline__ void __DEFAULT_FN_ATTRS
2101 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
2103 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
2108 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2109 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
2111 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2116 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2117 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2119 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2120 (__v64qi) __B, __U);
2123 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2124 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
2126 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2131 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2132 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2134 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2135 (__v32hi) __B, __U);
2138 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2139 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
2141 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2146 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2147 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2149 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2150 (__v64qi) __B, __U);
2153 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2154 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
2156 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2161 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2162 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2164 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2165 (__v32hi) __B, __U);
2168 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2169 _mm512_movepi8_mask (__m512i __A)
2171 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
2174 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2175 _mm512_movepi16_mask (__m512i __A)
2177 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
2180 static __inline__ __m512i __DEFAULT_FN_ATTRS
2181 _mm512_movm_epi8 (__mmask64 __A)
2183 return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
2186 static __inline__ __m512i __DEFAULT_FN_ATTRS
2187 _mm512_movm_epi16 (__mmask32 __A)
2189 return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
2192 static __inline__ __m512i __DEFAULT_FN_ATTRS
2193 _mm512_broadcastb_epi8 (__m128i __A)
2195 return (__m512i)__builtin_shufflevector((__v16qi) __A,
2196 (__v16qi)_mm_undefined_si128(),
2197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2203 static __inline__ __m512i __DEFAULT_FN_ATTRS
2204 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
2206 return (__m512i)__builtin_ia32_selectb_512(__M,
2207 (__v64qi) _mm512_broadcastb_epi8(__A),
2211 static __inline__ __m512i __DEFAULT_FN_ATTRS
2212 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
2214 return (__m512i)__builtin_ia32_selectb_512(__M,
2215 (__v64qi) _mm512_broadcastb_epi8(__A),
2216 (__v64qi) _mm512_setzero_si512());
2219 static __inline__ __m512i __DEFAULT_FN_ATTRS
2220 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
2222 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2227 static __inline__ __m512i __DEFAULT_FN_ATTRS
2228 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
2230 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2231 (__v32hi) _mm512_setzero_hi(),
2235 static __inline__ __m512i __DEFAULT_FN_ATTRS
2236 _mm512_broadcastw_epi16 (__m128i __A)
2238 return (__m512i)__builtin_shufflevector((__v8hi) __A,
2239 (__v8hi)_mm_undefined_si128(),
2240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2244 static __inline__ __m512i __DEFAULT_FN_ATTRS
2245 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
2247 return (__m512i)__builtin_ia32_selectw_512(__M,
2248 (__v32hi) _mm512_broadcastw_epi16(__A),
2252 static __inline__ __m512i __DEFAULT_FN_ATTRS
2253 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
2255 return (__m512i)__builtin_ia32_selectw_512(__M,
2256 (__v32hi) _mm512_broadcastw_epi16(__A),
2257 (__v32hi) _mm512_setzero_si512());
2260 static __inline__ __m512i __DEFAULT_FN_ATTRS
2261 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
2263 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2265 (__v32hi) _mm512_undefined_epi32 (),
2269 static __inline__ __m512i __DEFAULT_FN_ATTRS
2270 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
2273 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2275 (__v32hi) _mm512_setzero_hi(),
2279 static __inline__ __m512i __DEFAULT_FN_ATTRS
2280 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2283 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2289 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
2290 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2291 (__v64qi)(__m512i)(B), (int)(N), \
2292 (__v64qi)_mm512_undefined_pd(), \
2295 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
2296 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2297 (__v64qi)(__m512i)(B), (int)(N), \
2298 (__v64qi)(__m512i)(W), \
2301 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
2302 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2303 (__v64qi)(__m512i)(B), (int)(N), \
2304 (__v64qi)_mm512_setzero_si512(), \
2307 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
2308 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2309 (__v64qi)(__m512i)(B), (int)(imm), \
2310 (__v32hi)_mm512_undefined_epi32(), \
2313 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
2314 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2315 (__v64qi)(__m512i)(B), (int)(imm), \
2316 (__v32hi)(__m512i)(W), \
2319 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
2320 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2321 (__v64qi)(__m512i)(B), (int)(imm), \
2322 (__v32hi)_mm512_setzero_hi(), \
2325 static __inline__ __m512i __DEFAULT_FN_ATTRS
2326 _mm512_sad_epu8 (__m512i __A, __m512i __B)
2328 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2334 #undef __DEFAULT_FN_ATTRS