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 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
60 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
61 (__v64qi)(__m512i)(b), (int)(p), \
64 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
65 (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
66 (__v64qi)(__m512i)(b), (int)(p), \
69 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
70 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
71 (__v64qi)(__m512i)(b), (int)(p), \
74 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
75 (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
76 (__v64qi)(__m512i)(b), (int)(p), \
79 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
80 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
81 (__v32hi)(__m512i)(b), (int)(p), \
84 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
85 (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
86 (__v32hi)(__m512i)(b), (int)(p), \
89 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
90 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
91 (__v32hi)(__m512i)(b), (int)(p), \
94 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
95 (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
96 (__v32hi)(__m512i)(b), (int)(p), \
99 #define _mm512_cmpeq_epi8_mask(A, B) \
100 _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
101 #define _mm512_mask_cmpeq_epi8_mask(k, A, B) \
102 _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
103 #define _mm512_cmpge_epi8_mask(A, B) \
104 _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
105 #define _mm512_mask_cmpge_epi8_mask(k, A, B) \
106 _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
107 #define _mm512_cmpgt_epi8_mask(A, B) \
108 _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
109 #define _mm512_mask_cmpgt_epi8_mask(k, A, B) \
110 _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
111 #define _mm512_cmple_epi8_mask(A, B) \
112 _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
113 #define _mm512_mask_cmple_epi8_mask(k, A, B) \
114 _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
115 #define _mm512_cmplt_epi8_mask(A, B) \
116 _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
117 #define _mm512_mask_cmplt_epi8_mask(k, A, B) \
118 _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
119 #define _mm512_cmpneq_epi8_mask(A, B) \
120 _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
121 #define _mm512_mask_cmpneq_epi8_mask(k, A, B) \
122 _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
124 #define _mm512_cmpeq_epu8_mask(A, B) \
125 _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
126 #define _mm512_mask_cmpeq_epu8_mask(k, A, B) \
127 _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
128 #define _mm512_cmpge_epu8_mask(A, B) \
129 _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
130 #define _mm512_mask_cmpge_epu8_mask(k, A, B) \
131 _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
132 #define _mm512_cmpgt_epu8_mask(A, B) \
133 _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
134 #define _mm512_mask_cmpgt_epu8_mask(k, A, B) \
135 _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
136 #define _mm512_cmple_epu8_mask(A, B) \
137 _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
138 #define _mm512_mask_cmple_epu8_mask(k, A, B) \
139 _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
140 #define _mm512_cmplt_epu8_mask(A, B) \
141 _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
142 #define _mm512_mask_cmplt_epu8_mask(k, A, B) \
143 _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
144 #define _mm512_cmpneq_epu8_mask(A, B) \
145 _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
146 #define _mm512_mask_cmpneq_epu8_mask(k, A, B) \
147 _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
149 #define _mm512_cmpeq_epi16_mask(A, B) \
150 _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
151 #define _mm512_mask_cmpeq_epi16_mask(k, A, B) \
152 _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
153 #define _mm512_cmpge_epi16_mask(A, B) \
154 _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
155 #define _mm512_mask_cmpge_epi16_mask(k, A, B) \
156 _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
157 #define _mm512_cmpgt_epi16_mask(A, B) \
158 _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
159 #define _mm512_mask_cmpgt_epi16_mask(k, A, B) \
160 _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
161 #define _mm512_cmple_epi16_mask(A, B) \
162 _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
163 #define _mm512_mask_cmple_epi16_mask(k, A, B) \
164 _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
165 #define _mm512_cmplt_epi16_mask(A, B) \
166 _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
167 #define _mm512_mask_cmplt_epi16_mask(k, A, B) \
168 _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
169 #define _mm512_cmpneq_epi16_mask(A, B) \
170 _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
171 #define _mm512_mask_cmpneq_epi16_mask(k, A, B) \
172 _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
174 #define _mm512_cmpeq_epu16_mask(A, B) \
175 _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
176 #define _mm512_mask_cmpeq_epu16_mask(k, A, B) \
177 _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
178 #define _mm512_cmpge_epu16_mask(A, B) \
179 _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
180 #define _mm512_mask_cmpge_epu16_mask(k, A, B) \
181 _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
182 #define _mm512_cmpgt_epu16_mask(A, B) \
183 _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
184 #define _mm512_mask_cmpgt_epu16_mask(k, A, B) \
185 _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
186 #define _mm512_cmple_epu16_mask(A, B) \
187 _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
188 #define _mm512_mask_cmple_epu16_mask(k, A, B) \
189 _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
190 #define _mm512_cmplt_epu16_mask(A, B) \
191 _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
192 #define _mm512_mask_cmplt_epu16_mask(k, A, B) \
193 _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
194 #define _mm512_cmpneq_epu16_mask(A, B) \
195 _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
196 #define _mm512_mask_cmpneq_epu16_mask(k, A, B) \
197 _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
199 static __inline__ __m512i __DEFAULT_FN_ATTRS
200 _mm512_add_epi8 (__m512i __A, __m512i __B) {
201 return (__m512i) ((__v64qu) __A + (__v64qu) __B);
204 static __inline__ __m512i __DEFAULT_FN_ATTRS
205 _mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
206 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
207 (__v64qi)_mm512_add_epi8(__A, __B),
211 static __inline__ __m512i __DEFAULT_FN_ATTRS
212 _mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
213 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
214 (__v64qi)_mm512_add_epi8(__A, __B),
215 (__v64qi)_mm512_setzero_qi());
218 static __inline__ __m512i __DEFAULT_FN_ATTRS
219 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
220 return (__m512i) ((__v64qu) __A - (__v64qu) __B);
223 static __inline__ __m512i __DEFAULT_FN_ATTRS
224 _mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
225 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
226 (__v64qi)_mm512_sub_epi8(__A, __B),
230 static __inline__ __m512i __DEFAULT_FN_ATTRS
231 _mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
232 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
233 (__v64qi)_mm512_sub_epi8(__A, __B),
234 (__v64qi)_mm512_setzero_qi());
237 static __inline__ __m512i __DEFAULT_FN_ATTRS
238 _mm512_add_epi16 (__m512i __A, __m512i __B) {
239 return (__m512i) ((__v32hu) __A + (__v32hu) __B);
242 static __inline__ __m512i __DEFAULT_FN_ATTRS
243 _mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
244 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
245 (__v32hi)_mm512_add_epi16(__A, __B),
249 static __inline__ __m512i __DEFAULT_FN_ATTRS
250 _mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
251 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
252 (__v32hi)_mm512_add_epi16(__A, __B),
253 (__v32hi)_mm512_setzero_hi());
256 static __inline__ __m512i __DEFAULT_FN_ATTRS
257 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
258 return (__m512i) ((__v32hu) __A - (__v32hu) __B);
261 static __inline__ __m512i __DEFAULT_FN_ATTRS
262 _mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
263 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
264 (__v32hi)_mm512_sub_epi16(__A, __B),
268 static __inline__ __m512i __DEFAULT_FN_ATTRS
269 _mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
270 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
271 (__v32hi)_mm512_sub_epi16(__A, __B),
272 (__v32hi)_mm512_setzero_hi());
275 static __inline__ __m512i __DEFAULT_FN_ATTRS
276 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
277 return (__m512i) ((__v32hu) __A * (__v32hu) __B);
280 static __inline__ __m512i __DEFAULT_FN_ATTRS
281 _mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
282 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
283 (__v32hi)_mm512_mullo_epi16(__A, __B),
287 static __inline__ __m512i __DEFAULT_FN_ATTRS
288 _mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
289 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
290 (__v32hi)_mm512_mullo_epi16(__A, __B),
291 (__v32hi)_mm512_setzero_hi());
294 static __inline__ __m512i __DEFAULT_FN_ATTRS
295 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
297 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
302 static __inline__ __m512i __DEFAULT_FN_ATTRS
303 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
305 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
310 static __inline__ __m512i __DEFAULT_FN_ATTRS
311 _mm512_abs_epi8 (__m512i __A)
313 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
314 (__v64qi) _mm512_setzero_qi(),
318 static __inline__ __m512i __DEFAULT_FN_ATTRS
319 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
321 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
326 static __inline__ __m512i __DEFAULT_FN_ATTRS
327 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
329 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
330 (__v64qi) _mm512_setzero_qi(),
334 static __inline__ __m512i __DEFAULT_FN_ATTRS
335 _mm512_abs_epi16 (__m512i __A)
337 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
338 (__v32hi) _mm512_setzero_hi(),
342 static __inline__ __m512i __DEFAULT_FN_ATTRS
343 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
345 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
350 static __inline__ __m512i __DEFAULT_FN_ATTRS
351 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
353 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
354 (__v32hi) _mm512_setzero_hi(),
358 static __inline__ __m512i __DEFAULT_FN_ATTRS
359 _mm512_packs_epi32(__m512i __A, __m512i __B)
361 return (__m512i)__builtin_ia32_packssdw512((__v16si)__A, (__v16si)__B);
364 static __inline__ __m512i __DEFAULT_FN_ATTRS
365 _mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B)
367 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
368 (__v32hi)_mm512_packs_epi32(__A, __B),
369 (__v32hi)_mm512_setzero_hi());
372 static __inline__ __m512i __DEFAULT_FN_ATTRS
373 _mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
375 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
376 (__v32hi)_mm512_packs_epi32(__A, __B),
380 static __inline__ __m512i __DEFAULT_FN_ATTRS
381 _mm512_packs_epi16(__m512i __A, __m512i __B)
383 return (__m512i)__builtin_ia32_packsswb512((__v32hi)__A, (__v32hi) __B);
386 static __inline__ __m512i __DEFAULT_FN_ATTRS
387 _mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
389 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
390 (__v64qi)_mm512_packs_epi16(__A, __B),
394 static __inline__ __m512i __DEFAULT_FN_ATTRS
395 _mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B)
397 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
398 (__v64qi)_mm512_packs_epi16(__A, __B),
399 (__v64qi)_mm512_setzero_qi());
402 static __inline__ __m512i __DEFAULT_FN_ATTRS
403 _mm512_packus_epi32(__m512i __A, __m512i __B)
405 return (__m512i)__builtin_ia32_packusdw512((__v16si) __A, (__v16si) __B);
408 static __inline__ __m512i __DEFAULT_FN_ATTRS
409 _mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B)
411 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
412 (__v32hi)_mm512_packus_epi32(__A, __B),
413 (__v32hi)_mm512_setzero_hi());
416 static __inline__ __m512i __DEFAULT_FN_ATTRS
417 _mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
419 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
420 (__v32hi)_mm512_packus_epi32(__A, __B),
424 static __inline__ __m512i __DEFAULT_FN_ATTRS
425 _mm512_packus_epi16(__m512i __A, __m512i __B)
427 return (__m512i)__builtin_ia32_packuswb512((__v32hi) __A, (__v32hi) __B);
430 static __inline__ __m512i __DEFAULT_FN_ATTRS
431 _mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
433 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
434 (__v64qi)_mm512_packus_epi16(__A, __B),
438 static __inline__ __m512i __DEFAULT_FN_ATTRS
439 _mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B)
441 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
442 (__v64qi)_mm512_packus_epi16(__A, __B),
443 (__v64qi)_mm512_setzero_qi());
446 static __inline__ __m512i __DEFAULT_FN_ATTRS
447 _mm512_adds_epi8 (__m512i __A, __m512i __B)
449 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
451 (__v64qi) _mm512_setzero_qi(),
455 static __inline__ __m512i __DEFAULT_FN_ATTRS
456 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
459 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
465 static __inline__ __m512i __DEFAULT_FN_ATTRS
466 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
468 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
470 (__v64qi) _mm512_setzero_qi(),
474 static __inline__ __m512i __DEFAULT_FN_ATTRS
475 _mm512_adds_epi16 (__m512i __A, __m512i __B)
477 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
479 (__v32hi) _mm512_setzero_hi(),
483 static __inline__ __m512i __DEFAULT_FN_ATTRS
484 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
487 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
493 static __inline__ __m512i __DEFAULT_FN_ATTRS
494 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
496 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
498 (__v32hi) _mm512_setzero_hi(),
502 static __inline__ __m512i __DEFAULT_FN_ATTRS
503 _mm512_adds_epu8 (__m512i __A, __m512i __B)
505 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
507 (__v64qi) _mm512_setzero_qi(),
511 static __inline__ __m512i __DEFAULT_FN_ATTRS
512 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
515 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
521 static __inline__ __m512i __DEFAULT_FN_ATTRS
522 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
524 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
526 (__v64qi) _mm512_setzero_qi(),
530 static __inline__ __m512i __DEFAULT_FN_ATTRS
531 _mm512_adds_epu16 (__m512i __A, __m512i __B)
533 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
535 (__v32hi) _mm512_setzero_hi(),
539 static __inline__ __m512i __DEFAULT_FN_ATTRS
540 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
543 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
549 static __inline__ __m512i __DEFAULT_FN_ATTRS
550 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
552 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
554 (__v32hi) _mm512_setzero_hi(),
558 static __inline__ __m512i __DEFAULT_FN_ATTRS
559 _mm512_avg_epu8 (__m512i __A, __m512i __B)
561 typedef unsigned short __v64hu __attribute__((__vector_size__(128)));
562 return (__m512i)__builtin_convertvector(
563 ((__builtin_convertvector((__v64qu) __A, __v64hu) +
564 __builtin_convertvector((__v64qu) __B, __v64hu)) + 1)
568 static __inline__ __m512i __DEFAULT_FN_ATTRS
569 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
572 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
573 (__v64qi)_mm512_avg_epu8(__A, __B),
577 static __inline__ __m512i __DEFAULT_FN_ATTRS
578 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
580 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
581 (__v64qi)_mm512_avg_epu8(__A, __B),
582 (__v64qi)_mm512_setzero_qi());
585 static __inline__ __m512i __DEFAULT_FN_ATTRS
586 _mm512_avg_epu16 (__m512i __A, __m512i __B)
588 typedef unsigned int __v32su __attribute__((__vector_size__(128)));
589 return (__m512i)__builtin_convertvector(
590 ((__builtin_convertvector((__v32hu) __A, __v32su) +
591 __builtin_convertvector((__v32hu) __B, __v32su)) + 1)
595 static __inline__ __m512i __DEFAULT_FN_ATTRS
596 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
599 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
600 (__v32hi)_mm512_avg_epu16(__A, __B),
604 static __inline__ __m512i __DEFAULT_FN_ATTRS
605 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
607 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
608 (__v32hi)_mm512_avg_epu16(__A, __B),
609 (__v32hi) _mm512_setzero_hi());
612 static __inline__ __m512i __DEFAULT_FN_ATTRS
613 _mm512_max_epi8 (__m512i __A, __m512i __B)
615 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
617 (__v64qi) _mm512_setzero_qi(),
621 static __inline__ __m512i __DEFAULT_FN_ATTRS
622 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
624 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
626 (__v64qi) _mm512_setzero_qi(),
630 static __inline__ __m512i __DEFAULT_FN_ATTRS
631 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
634 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
640 static __inline__ __m512i __DEFAULT_FN_ATTRS
641 _mm512_max_epi16 (__m512i __A, __m512i __B)
643 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
645 (__v32hi) _mm512_setzero_hi(),
649 static __inline__ __m512i __DEFAULT_FN_ATTRS
650 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
652 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
654 (__v32hi) _mm512_setzero_hi(),
658 static __inline__ __m512i __DEFAULT_FN_ATTRS
659 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
662 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
668 static __inline__ __m512i __DEFAULT_FN_ATTRS
669 _mm512_max_epu8 (__m512i __A, __m512i __B)
671 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
673 (__v64qi) _mm512_setzero_qi(),
677 static __inline__ __m512i __DEFAULT_FN_ATTRS
678 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
680 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
682 (__v64qi) _mm512_setzero_qi(),
686 static __inline__ __m512i __DEFAULT_FN_ATTRS
687 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
690 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
696 static __inline__ __m512i __DEFAULT_FN_ATTRS
697 _mm512_max_epu16 (__m512i __A, __m512i __B)
699 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
701 (__v32hi) _mm512_setzero_hi(),
705 static __inline__ __m512i __DEFAULT_FN_ATTRS
706 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
708 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
710 (__v32hi) _mm512_setzero_hi(),
714 static __inline__ __m512i __DEFAULT_FN_ATTRS
715 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
718 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
724 static __inline__ __m512i __DEFAULT_FN_ATTRS
725 _mm512_min_epi8 (__m512i __A, __m512i __B)
727 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
729 (__v64qi) _mm512_setzero_qi(),
733 static __inline__ __m512i __DEFAULT_FN_ATTRS
734 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
736 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
738 (__v64qi) _mm512_setzero_qi(),
742 static __inline__ __m512i __DEFAULT_FN_ATTRS
743 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
746 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
752 static __inline__ __m512i __DEFAULT_FN_ATTRS
753 _mm512_min_epi16 (__m512i __A, __m512i __B)
755 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
757 (__v32hi) _mm512_setzero_hi(),
761 static __inline__ __m512i __DEFAULT_FN_ATTRS
762 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
764 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
766 (__v32hi) _mm512_setzero_hi(),
770 static __inline__ __m512i __DEFAULT_FN_ATTRS
771 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
774 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
780 static __inline__ __m512i __DEFAULT_FN_ATTRS
781 _mm512_min_epu8 (__m512i __A, __m512i __B)
783 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
785 (__v64qi) _mm512_setzero_qi(),
789 static __inline__ __m512i __DEFAULT_FN_ATTRS
790 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
792 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
794 (__v64qi) _mm512_setzero_qi(),
798 static __inline__ __m512i __DEFAULT_FN_ATTRS
799 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
802 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
808 static __inline__ __m512i __DEFAULT_FN_ATTRS
809 _mm512_min_epu16 (__m512i __A, __m512i __B)
811 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
813 (__v32hi) _mm512_setzero_hi(),
817 static __inline__ __m512i __DEFAULT_FN_ATTRS
818 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
820 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
822 (__v32hi) _mm512_setzero_hi(),
826 static __inline__ __m512i __DEFAULT_FN_ATTRS
827 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
830 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
836 static __inline__ __m512i __DEFAULT_FN_ATTRS
837 _mm512_shuffle_epi8(__m512i __A, __m512i __B)
839 return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
842 static __inline__ __m512i __DEFAULT_FN_ATTRS
843 _mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
845 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
846 (__v64qi)_mm512_shuffle_epi8(__A, __B),
850 static __inline__ __m512i __DEFAULT_FN_ATTRS
851 _mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
853 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
854 (__v64qi)_mm512_shuffle_epi8(__A, __B),
855 (__v64qi)_mm512_setzero_qi());
858 static __inline__ __m512i __DEFAULT_FN_ATTRS
859 _mm512_subs_epi8 (__m512i __A, __m512i __B)
861 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
863 (__v64qi) _mm512_setzero_qi(),
867 static __inline__ __m512i __DEFAULT_FN_ATTRS
868 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
871 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
877 static __inline__ __m512i __DEFAULT_FN_ATTRS
878 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
880 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
882 (__v64qi) _mm512_setzero_qi(),
886 static __inline__ __m512i __DEFAULT_FN_ATTRS
887 _mm512_subs_epi16 (__m512i __A, __m512i __B)
889 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
891 (__v32hi) _mm512_setzero_hi(),
895 static __inline__ __m512i __DEFAULT_FN_ATTRS
896 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
899 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
905 static __inline__ __m512i __DEFAULT_FN_ATTRS
906 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
908 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
910 (__v32hi) _mm512_setzero_hi(),
914 static __inline__ __m512i __DEFAULT_FN_ATTRS
915 _mm512_subs_epu8 (__m512i __A, __m512i __B)
917 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
919 (__v64qi) _mm512_setzero_qi(),
923 static __inline__ __m512i __DEFAULT_FN_ATTRS
924 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
927 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
933 static __inline__ __m512i __DEFAULT_FN_ATTRS
934 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
936 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
938 (__v64qi) _mm512_setzero_qi(),
942 static __inline__ __m512i __DEFAULT_FN_ATTRS
943 _mm512_subs_epu16 (__m512i __A, __m512i __B)
945 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
947 (__v32hi) _mm512_setzero_hi(),
951 static __inline__ __m512i __DEFAULT_FN_ATTRS
952 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
955 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
961 static __inline__ __m512i __DEFAULT_FN_ATTRS
962 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
964 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
966 (__v32hi) _mm512_setzero_hi(),
970 static __inline__ __m512i __DEFAULT_FN_ATTRS
971 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
972 __mmask32 __U, __m512i __B)
974 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
975 (__v32hi) __I /* idx */ ,
980 static __inline__ __m512i __DEFAULT_FN_ATTRS
981 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
983 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
989 static __inline__ __m512i __DEFAULT_FN_ATTRS
990 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
991 __m512i __I, __m512i __B)
993 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
999 static __inline__ __m512i __DEFAULT_FN_ATTRS
1000 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1001 __m512i __I, __m512i __B)
1003 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1010 static __inline__ __m512i __DEFAULT_FN_ATTRS
1011 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
1013 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1015 (__v32hi) _mm512_setzero_hi(),
1019 static __inline__ __m512i __DEFAULT_FN_ATTRS
1020 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1023 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1029 static __inline__ __m512i __DEFAULT_FN_ATTRS
1030 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1032 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1034 (__v32hi) _mm512_setzero_hi(),
1038 static __inline__ __m512i __DEFAULT_FN_ATTRS
1039 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
1041 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1043 (__v32hi) _mm512_setzero_hi(),
1047 static __inline__ __m512i __DEFAULT_FN_ATTRS
1048 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1051 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1057 static __inline__ __m512i __DEFAULT_FN_ATTRS
1058 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1060 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1062 (__v32hi) _mm512_setzero_hi(),
1066 static __inline__ __m512i __DEFAULT_FN_ATTRS
1067 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
1069 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1071 (__v32hi) _mm512_setzero_hi(),
1075 static __inline__ __m512i __DEFAULT_FN_ATTRS
1076 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1079 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1085 static __inline__ __m512i __DEFAULT_FN_ATTRS
1086 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1088 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1090 (__v32hi) _mm512_setzero_hi(),
1094 static __inline__ __m512i __DEFAULT_FN_ATTRS
1095 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
1096 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1098 (__v32hi) _mm512_setzero_hi(),
1102 static __inline__ __m512i __DEFAULT_FN_ATTRS
1103 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1105 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1111 static __inline__ __m512i __DEFAULT_FN_ATTRS
1112 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
1113 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1115 (__v32hi) _mm512_setzero_hi(),
1119 static __inline__ __m512i __DEFAULT_FN_ATTRS
1120 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
1121 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1123 (__v16si) _mm512_setzero_si512(),
1127 static __inline__ __m512i __DEFAULT_FN_ATTRS
1128 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1130 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1136 static __inline__ __m512i __DEFAULT_FN_ATTRS
1137 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
1138 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1140 (__v16si) _mm512_setzero_si512(),
1144 static __inline__ __m256i __DEFAULT_FN_ATTRS
1145 _mm512_cvtsepi16_epi8 (__m512i __A) {
1146 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1147 (__v32qi)_mm256_setzero_si256(),
1151 static __inline__ __m256i __DEFAULT_FN_ATTRS
1152 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1153 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1158 static __inline__ __m256i __DEFAULT_FN_ATTRS
1159 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1160 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1161 (__v32qi) _mm256_setzero_si256(),
1165 static __inline__ __m256i __DEFAULT_FN_ATTRS
1166 _mm512_cvtusepi16_epi8 (__m512i __A) {
1167 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1168 (__v32qi) _mm256_setzero_si256(),
1172 static __inline__ __m256i __DEFAULT_FN_ATTRS
1173 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1174 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1179 static __inline__ __m256i __DEFAULT_FN_ATTRS
1180 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1181 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1182 (__v32qi) _mm256_setzero_si256(),
1186 static __inline__ __m256i __DEFAULT_FN_ATTRS
1187 _mm512_cvtepi16_epi8 (__m512i __A) {
1188 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1189 (__v32qi) _mm256_setzero_si256(),
1193 static __inline__ __m256i __DEFAULT_FN_ATTRS
1194 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1195 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1200 static __inline__ __m256i __DEFAULT_FN_ATTRS
1201 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1202 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1203 (__v32qi) _mm256_setzero_si256(),
1207 static __inline__ void __DEFAULT_FN_ATTRS
1208 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1210 __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1213 static __inline__ void __DEFAULT_FN_ATTRS
1214 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1216 __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1219 static __inline__ void __DEFAULT_FN_ATTRS
1220 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1222 __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1225 static __inline__ __m512i __DEFAULT_FN_ATTRS
1226 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1227 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1229 10, 64+10, 11, 64+11,
1230 12, 64+12, 13, 64+13,
1231 14, 64+14, 15, 64+15,
1232 24, 64+24, 25, 64+25,
1233 26, 64+26, 27, 64+27,
1234 28, 64+28, 29, 64+29,
1235 30, 64+30, 31, 64+31,
1236 40, 64+40, 41, 64+41,
1237 42, 64+42, 43, 64+43,
1238 44, 64+44, 45, 64+45,
1239 46, 64+46, 47, 64+47,
1240 56, 64+56, 57, 64+57,
1241 58, 64+58, 59, 64+59,
1242 60, 64+60, 61, 64+61,
1243 62, 64+62, 63, 64+63);
1246 static __inline__ __m512i __DEFAULT_FN_ATTRS
1247 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1248 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1249 (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1253 static __inline__ __m512i __DEFAULT_FN_ATTRS
1254 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1255 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1256 (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1257 (__v64qi)_mm512_setzero_qi());
1260 static __inline__ __m512i __DEFAULT_FN_ATTRS
1261 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1262 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1265 12, 32+12, 13, 32+13,
1266 14, 32+14, 15, 32+15,
1267 20, 32+20, 21, 32+21,
1268 22, 32+22, 23, 32+23,
1269 28, 32+28, 29, 32+29,
1270 30, 32+30, 31, 32+31);
1273 static __inline__ __m512i __DEFAULT_FN_ATTRS
1274 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1275 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1276 (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1280 static __inline__ __m512i __DEFAULT_FN_ATTRS
1281 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1282 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1283 (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1284 (__v32hi)_mm512_setzero_hi());
1287 static __inline__ __m512i __DEFAULT_FN_ATTRS
1288 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1289 return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1294 16, 64+16, 17, 64+17,
1295 18, 64+18, 19, 64+19,
1296 20, 64+20, 21, 64+21,
1297 22, 64+22, 23, 64+23,
1298 32, 64+32, 33, 64+33,
1299 34, 64+34, 35, 64+35,
1300 36, 64+36, 37, 64+37,
1301 38, 64+38, 39, 64+39,
1302 48, 64+48, 49, 64+49,
1303 50, 64+50, 51, 64+51,
1304 52, 64+52, 53, 64+53,
1305 54, 64+54, 55, 64+55);
1308 static __inline__ __m512i __DEFAULT_FN_ATTRS
1309 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1310 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1311 (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1315 static __inline__ __m512i __DEFAULT_FN_ATTRS
1316 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1317 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1318 (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1319 (__v64qi)_mm512_setzero_qi());
1322 static __inline__ __m512i __DEFAULT_FN_ATTRS
1323 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1324 return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1328 10, 32+10, 11, 32+11,
1329 16, 32+16, 17, 32+17,
1330 18, 32+18, 19, 32+19,
1331 24, 32+24, 25, 32+25,
1332 26, 32+26, 27, 32+27);
1335 static __inline__ __m512i __DEFAULT_FN_ATTRS
1336 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1337 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1338 (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1342 static __inline__ __m512i __DEFAULT_FN_ATTRS
1343 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1344 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1345 (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1346 (__v32hi)_mm512_setzero_hi());
1349 static __inline__ __m512i __DEFAULT_FN_ATTRS
1350 _mm512_cvtepi8_epi16(__m256i __A)
1352 /* This function always performs a signed extension, but __v32qi is a char
1353 which may be signed or unsigned, so use __v32qs. */
1354 return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
1357 static __inline__ __m512i __DEFAULT_FN_ATTRS
1358 _mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1360 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1361 (__v32hi)_mm512_cvtepi8_epi16(__A),
1365 static __inline__ __m512i __DEFAULT_FN_ATTRS
1366 _mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1368 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1369 (__v32hi)_mm512_cvtepi8_epi16(__A),
1370 (__v32hi)_mm512_setzero_hi());
1373 static __inline__ __m512i __DEFAULT_FN_ATTRS
1374 _mm512_cvtepu8_epi16(__m256i __A)
1376 return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
1379 static __inline__ __m512i __DEFAULT_FN_ATTRS
1380 _mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1382 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1383 (__v32hi)_mm512_cvtepu8_epi16(__A),
1387 static __inline__ __m512i __DEFAULT_FN_ATTRS
1388 _mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1390 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1391 (__v32hi)_mm512_cvtepu8_epi16(__A),
1392 (__v32hi)_mm512_setzero_hi());
1396 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
1397 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1398 (__v32hi)_mm512_undefined_epi32(), \
1400 4 + (((imm) >> 0) & 0x3), \
1401 4 + (((imm) >> 2) & 0x3), \
1402 4 + (((imm) >> 4) & 0x3), \
1403 4 + (((imm) >> 6) & 0x3), \
1405 12 + (((imm) >> 0) & 0x3), \
1406 12 + (((imm) >> 2) & 0x3), \
1407 12 + (((imm) >> 4) & 0x3), \
1408 12 + (((imm) >> 6) & 0x3), \
1410 20 + (((imm) >> 0) & 0x3), \
1411 20 + (((imm) >> 2) & 0x3), \
1412 20 + (((imm) >> 4) & 0x3), \
1413 20 + (((imm) >> 6) & 0x3), \
1415 28 + (((imm) >> 0) & 0x3), \
1416 28 + (((imm) >> 2) & 0x3), \
1417 28 + (((imm) >> 4) & 0x3), \
1418 28 + (((imm) >> 6) & 0x3)); })
1420 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1421 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1422 (__v32hi)_mm512_shufflehi_epi16((A), \
1424 (__v32hi)(__m512i)(W)); })
1426 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1427 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1428 (__v32hi)_mm512_shufflehi_epi16((A), \
1430 (__v32hi)_mm512_setzero_hi()); })
1432 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
1433 (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1434 (__v32hi)_mm512_undefined_epi32(), \
1435 0 + (((imm) >> 0) & 0x3), \
1436 0 + (((imm) >> 2) & 0x3), \
1437 0 + (((imm) >> 4) & 0x3), \
1438 0 + (((imm) >> 6) & 0x3), \
1440 8 + (((imm) >> 0) & 0x3), \
1441 8 + (((imm) >> 2) & 0x3), \
1442 8 + (((imm) >> 4) & 0x3), \
1443 8 + (((imm) >> 6) & 0x3), \
1445 16 + (((imm) >> 0) & 0x3), \
1446 16 + (((imm) >> 2) & 0x3), \
1447 16 + (((imm) >> 4) & 0x3), \
1448 16 + (((imm) >> 6) & 0x3), \
1450 24 + (((imm) >> 0) & 0x3), \
1451 24 + (((imm) >> 2) & 0x3), \
1452 24 + (((imm) >> 4) & 0x3), \
1453 24 + (((imm) >> 6) & 0x3), \
1457 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1458 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1459 (__v32hi)_mm512_shufflelo_epi16((A), \
1461 (__v32hi)(__m512i)(W)); })
1464 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1465 (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1466 (__v32hi)_mm512_shufflelo_epi16((A), \
1468 (__v32hi)_mm512_setzero_hi()); })
1470 static __inline__ __m512i __DEFAULT_FN_ATTRS
1471 _mm512_sllv_epi16(__m512i __A, __m512i __B)
1473 return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
1476 static __inline__ __m512i __DEFAULT_FN_ATTRS
1477 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1479 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1480 (__v32hi)_mm512_sllv_epi16(__A, __B),
1484 static __inline__ __m512i __DEFAULT_FN_ATTRS
1485 _mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1487 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1488 (__v32hi)_mm512_sllv_epi16(__A, __B),
1489 (__v32hi)_mm512_setzero_hi());
1492 static __inline__ __m512i __DEFAULT_FN_ATTRS
1493 _mm512_sll_epi16(__m512i __A, __m128i __B)
1495 return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
1498 static __inline__ __m512i __DEFAULT_FN_ATTRS
1499 _mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1501 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1502 (__v32hi)_mm512_sll_epi16(__A, __B),
1506 static __inline__ __m512i __DEFAULT_FN_ATTRS
1507 _mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1509 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1510 (__v32hi)_mm512_sll_epi16(__A, __B),
1511 (__v32hi)_mm512_setzero_hi());
1514 static __inline__ __m512i __DEFAULT_FN_ATTRS
1515 _mm512_slli_epi16(__m512i __A, int __B)
1517 return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B);
1520 static __inline__ __m512i __DEFAULT_FN_ATTRS
1521 _mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1523 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1524 (__v32hi)_mm512_slli_epi16(__A, __B),
1528 static __inline__ __m512i __DEFAULT_FN_ATTRS
1529 _mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B)
1531 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1532 (__v32hi)_mm512_slli_epi16(__A, __B),
1533 (__v32hi)_mm512_setzero_hi());
1536 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
1537 (__m512i)__builtin_shufflevector( \
1538 (__v64qi)_mm512_setzero_si512(), \
1539 (__v64qi)(__m512i)(a), \
1540 ((char)(imm)&0xF0) ? 0 : ((char)(imm)>0x0 ? 16 : 64) - (char)(imm), \
1541 ((char)(imm)&0xF0) ? 1 : ((char)(imm)>0x1 ? 17 : 65) - (char)(imm), \
1542 ((char)(imm)&0xF0) ? 2 : ((char)(imm)>0x2 ? 18 : 66) - (char)(imm), \
1543 ((char)(imm)&0xF0) ? 3 : ((char)(imm)>0x3 ? 19 : 67) - (char)(imm), \
1544 ((char)(imm)&0xF0) ? 4 : ((char)(imm)>0x4 ? 20 : 68) - (char)(imm), \
1545 ((char)(imm)&0xF0) ? 5 : ((char)(imm)>0x5 ? 21 : 69) - (char)(imm), \
1546 ((char)(imm)&0xF0) ? 6 : ((char)(imm)>0x6 ? 22 : 70) - (char)(imm), \
1547 ((char)(imm)&0xF0) ? 7 : ((char)(imm)>0x7 ? 23 : 71) - (char)(imm), \
1548 ((char)(imm)&0xF0) ? 8 : ((char)(imm)>0x8 ? 24 : 72) - (char)(imm), \
1549 ((char)(imm)&0xF0) ? 9 : ((char)(imm)>0x9 ? 25 : 73) - (char)(imm), \
1550 ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 : 74) - (char)(imm), \
1551 ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 : 75) - (char)(imm), \
1552 ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 : 76) - (char)(imm), \
1553 ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 : 77) - (char)(imm), \
1554 ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 : 78) - (char)(imm), \
1555 ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 : 79) - (char)(imm), \
1556 ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 : 80) - (char)(imm), \
1557 ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 : 81) - (char)(imm), \
1558 ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 : 82) - (char)(imm), \
1559 ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 : 83) - (char)(imm), \
1560 ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 : 84) - (char)(imm), \
1561 ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 : 85) - (char)(imm), \
1562 ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 : 86) - (char)(imm), \
1563 ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 : 87) - (char)(imm), \
1564 ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 : 88) - (char)(imm), \
1565 ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 : 89) - (char)(imm), \
1566 ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 : 90) - (char)(imm), \
1567 ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 : 91) - (char)(imm), \
1568 ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 : 92) - (char)(imm), \
1569 ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 : 93) - (char)(imm), \
1570 ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 : 94) - (char)(imm), \
1571 ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 : 95) - (char)(imm), \
1572 ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 : 96) - (char)(imm), \
1573 ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 : 97) - (char)(imm), \
1574 ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 : 98) - (char)(imm), \
1575 ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 : 99) - (char)(imm), \
1576 ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
1577 ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
1578 ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
1579 ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
1580 ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
1581 ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
1582 ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
1583 ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
1584 ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
1585 ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
1586 ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
1587 ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
1588 ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
1589 ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
1590 ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
1591 ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
1592 ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
1593 ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
1594 ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
1595 ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
1596 ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
1597 ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
1598 ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
1599 ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
1600 ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
1601 ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
1602 ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
1603 ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
1605 static __inline__ __m512i __DEFAULT_FN_ATTRS
1606 _mm512_srlv_epi16(__m512i __A, __m512i __B)
1608 return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
1611 static __inline__ __m512i __DEFAULT_FN_ATTRS
1612 _mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1614 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1615 (__v32hi)_mm512_srlv_epi16(__A, __B),
1619 static __inline__ __m512i __DEFAULT_FN_ATTRS
1620 _mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1622 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1623 (__v32hi)_mm512_srlv_epi16(__A, __B),
1624 (__v32hi)_mm512_setzero_hi());
1627 static __inline__ __m512i __DEFAULT_FN_ATTRS
1628 _mm512_srav_epi16(__m512i __A, __m512i __B)
1630 return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
1633 static __inline__ __m512i __DEFAULT_FN_ATTRS
1634 _mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1636 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1637 (__v32hi)_mm512_srav_epi16(__A, __B),
1641 static __inline__ __m512i __DEFAULT_FN_ATTRS
1642 _mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1644 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1645 (__v32hi)_mm512_srav_epi16(__A, __B),
1646 (__v32hi)_mm512_setzero_hi());
1649 static __inline__ __m512i __DEFAULT_FN_ATTRS
1650 _mm512_sra_epi16(__m512i __A, __m128i __B)
1652 return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
1655 static __inline__ __m512i __DEFAULT_FN_ATTRS
1656 _mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1658 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1659 (__v32hi)_mm512_sra_epi16(__A, __B),
1663 static __inline__ __m512i __DEFAULT_FN_ATTRS
1664 _mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1666 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1667 (__v32hi)_mm512_sra_epi16(__A, __B),
1668 (__v32hi)_mm512_setzero_hi());
1671 static __inline__ __m512i __DEFAULT_FN_ATTRS
1672 _mm512_srai_epi16(__m512i __A, int __B)
1674 return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B);
1677 static __inline__ __m512i __DEFAULT_FN_ATTRS
1678 _mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1680 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1681 (__v32hi)_mm512_srai_epi16(__A, __B),
1685 static __inline__ __m512i __DEFAULT_FN_ATTRS
1686 _mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B)
1688 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1689 (__v32hi)_mm512_srai_epi16(__A, __B),
1690 (__v32hi)_mm512_setzero_hi());
1693 static __inline__ __m512i __DEFAULT_FN_ATTRS
1694 _mm512_srl_epi16(__m512i __A, __m128i __B)
1696 return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
1699 static __inline__ __m512i __DEFAULT_FN_ATTRS
1700 _mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1702 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1703 (__v32hi)_mm512_srl_epi16(__A, __B),
1707 static __inline__ __m512i __DEFAULT_FN_ATTRS
1708 _mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1710 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1711 (__v32hi)_mm512_srl_epi16(__A, __B),
1712 (__v32hi)_mm512_setzero_hi());
1715 static __inline__ __m512i __DEFAULT_FN_ATTRS
1716 _mm512_srli_epi16(__m512i __A, int __B)
1718 return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B);
1721 static __inline__ __m512i __DEFAULT_FN_ATTRS
1722 _mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1724 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1725 (__v32hi)_mm512_srli_epi16(__A, __B),
1729 static __inline__ __m512i __DEFAULT_FN_ATTRS
1730 _mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
1732 return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1733 (__v32hi)_mm512_srli_epi16(__A, __B),
1734 (__v32hi)_mm512_setzero_hi());
1737 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
1738 (__m512i)__builtin_shufflevector( \
1739 (__v64qi)(__m512i)(a), \
1740 (__v64qi)_mm512_setzero_si512(), \
1741 ((char)(imm)&0xF0) ? 64 : (char)(imm) + ((char)(imm)>0xF ? 48 : 0), \
1742 ((char)(imm)&0xF0) ? 65 : (char)(imm) + ((char)(imm)>0xE ? 49 : 1), \
1743 ((char)(imm)&0xF0) ? 66 : (char)(imm) + ((char)(imm)>0xD ? 50 : 2), \
1744 ((char)(imm)&0xF0) ? 67 : (char)(imm) + ((char)(imm)>0xC ? 51 : 3), \
1745 ((char)(imm)&0xF0) ? 68 : (char)(imm) + ((char)(imm)>0xB ? 52 : 4), \
1746 ((char)(imm)&0xF0) ? 69 : (char)(imm) + ((char)(imm)>0xA ? 53 : 5), \
1747 ((char)(imm)&0xF0) ? 70 : (char)(imm) + ((char)(imm)>0x9 ? 54 : 6), \
1748 ((char)(imm)&0xF0) ? 71 : (char)(imm) + ((char)(imm)>0x8 ? 55 : 7), \
1749 ((char)(imm)&0xF0) ? 72 : (char)(imm) + ((char)(imm)>0x7 ? 56 : 8), \
1750 ((char)(imm)&0xF0) ? 73 : (char)(imm) + ((char)(imm)>0x6 ? 57 : 9), \
1751 ((char)(imm)&0xF0) ? 74 : (char)(imm) + ((char)(imm)>0x5 ? 58 : 10), \
1752 ((char)(imm)&0xF0) ? 75 : (char)(imm) + ((char)(imm)>0x4 ? 59 : 11), \
1753 ((char)(imm)&0xF0) ? 76 : (char)(imm) + ((char)(imm)>0x3 ? 60 : 12), \
1754 ((char)(imm)&0xF0) ? 77 : (char)(imm) + ((char)(imm)>0x2 ? 61 : 13), \
1755 ((char)(imm)&0xF0) ? 78 : (char)(imm) + ((char)(imm)>0x1 ? 62 : 14), \
1756 ((char)(imm)&0xF0) ? 79 : (char)(imm) + ((char)(imm)>0x0 ? 63 : 15), \
1757 ((char)(imm)&0xF0) ? 80 : (char)(imm) + ((char)(imm)>0xF ? 64 : 16), \
1758 ((char)(imm)&0xF0) ? 81 : (char)(imm) + ((char)(imm)>0xE ? 65 : 17), \
1759 ((char)(imm)&0xF0) ? 82 : (char)(imm) + ((char)(imm)>0xD ? 66 : 18), \
1760 ((char)(imm)&0xF0) ? 83 : (char)(imm) + ((char)(imm)>0xC ? 67 : 19), \
1761 ((char)(imm)&0xF0) ? 84 : (char)(imm) + ((char)(imm)>0xB ? 68 : 20), \
1762 ((char)(imm)&0xF0) ? 85 : (char)(imm) + ((char)(imm)>0xA ? 69 : 21), \
1763 ((char)(imm)&0xF0) ? 86 : (char)(imm) + ((char)(imm)>0x9 ? 70 : 22), \
1764 ((char)(imm)&0xF0) ? 87 : (char)(imm) + ((char)(imm)>0x8 ? 71 : 23), \
1765 ((char)(imm)&0xF0) ? 88 : (char)(imm) + ((char)(imm)>0x7 ? 72 : 24), \
1766 ((char)(imm)&0xF0) ? 89 : (char)(imm) + ((char)(imm)>0x6 ? 73 : 25), \
1767 ((char)(imm)&0xF0) ? 90 : (char)(imm) + ((char)(imm)>0x5 ? 74 : 26), \
1768 ((char)(imm)&0xF0) ? 91 : (char)(imm) + ((char)(imm)>0x4 ? 75 : 27), \
1769 ((char)(imm)&0xF0) ? 92 : (char)(imm) + ((char)(imm)>0x3 ? 76 : 28), \
1770 ((char)(imm)&0xF0) ? 93 : (char)(imm) + ((char)(imm)>0x2 ? 77 : 29), \
1771 ((char)(imm)&0xF0) ? 94 : (char)(imm) + ((char)(imm)>0x1 ? 78 : 30), \
1772 ((char)(imm)&0xF0) ? 95 : (char)(imm) + ((char)(imm)>0x0 ? 79 : 31), \
1773 ((char)(imm)&0xF0) ? 96 : (char)(imm) + ((char)(imm)>0xF ? 80 : 32), \
1774 ((char)(imm)&0xF0) ? 97 : (char)(imm) + ((char)(imm)>0xE ? 81 : 33), \
1775 ((char)(imm)&0xF0) ? 98 : (char)(imm) + ((char)(imm)>0xD ? 82 : 34), \
1776 ((char)(imm)&0xF0) ? 99 : (char)(imm) + ((char)(imm)>0xC ? 83 : 35), \
1777 ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ? 84 : 36), \
1778 ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ? 85 : 37), \
1779 ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ? 86 : 38), \
1780 ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ? 87 : 39), \
1781 ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ? 88 : 40), \
1782 ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ? 89 : 41), \
1783 ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ? 90 : 42), \
1784 ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ? 91 : 43), \
1785 ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ? 92 : 44), \
1786 ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ? 93 : 45), \
1787 ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ? 94 : 46), \
1788 ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ? 95 : 47), \
1789 ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ? 96 : 48), \
1790 ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ? 97 : 49), \
1791 ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ? 98 : 50), \
1792 ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ? 99 : 51), \
1793 ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
1794 ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
1795 ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
1796 ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
1797 ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
1798 ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
1799 ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
1800 ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
1801 ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
1802 ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
1803 ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
1804 ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
1806 static __inline__ __m512i __DEFAULT_FN_ATTRS
1807 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
1809 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
1814 static __inline__ __m512i __DEFAULT_FN_ATTRS
1815 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
1817 return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
1819 (__v32hi) _mm512_setzero_hi ());
1822 static __inline__ __m512i __DEFAULT_FN_ATTRS
1823 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
1825 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
1830 static __inline__ __m512i __DEFAULT_FN_ATTRS
1831 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
1833 return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
1835 (__v64qi) _mm512_setzero_hi ());
1838 static __inline__ __m512i __DEFAULT_FN_ATTRS
1839 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
1841 return (__m512i) __builtin_ia32_selectb_512(__M,
1842 (__v64qi)_mm512_set1_epi8(__A),
1846 static __inline__ __m512i __DEFAULT_FN_ATTRS
1847 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
1849 return (__m512i) __builtin_ia32_selectb_512(__M,
1850 (__v64qi) _mm512_set1_epi8(__A),
1851 (__v64qi) _mm512_setzero_si512());
1854 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1855 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
1857 return (__mmask64) (( __A & 0xFFFFFFFF) | ( __B << 32));
1860 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1861 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
1863 return (__mmask32) (( __A & 0xFFFF) | ( __B << 16));
1866 static __inline__ __m512i __DEFAULT_FN_ATTRS
1867 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
1869 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
1874 static __inline__ __m512i __DEFAULT_FN_ATTRS
1875 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
1877 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
1879 _mm512_setzero_hi (),
1883 static __inline__ __m512i __DEFAULT_FN_ATTRS
1884 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
1886 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
1891 static __inline__ __m512i __DEFAULT_FN_ATTRS
1892 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
1894 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
1896 _mm512_setzero_hi (),
1899 static __inline__ void __DEFAULT_FN_ATTRS
1900 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
1902 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
1907 static __inline__ void __DEFAULT_FN_ATTRS
1908 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
1910 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
1915 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1916 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1918 return _mm512_cmpneq_epi8_mask (_mm512_and_epi32 (__A, __B),
1919 _mm512_setzero_qi());
1922 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1923 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1925 return _mm512_mask_cmpneq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1926 _mm512_setzero_qi());
1929 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1930 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1932 return _mm512_cmpneq_epi16_mask (_mm512_and_epi32 (__A, __B),
1933 _mm512_setzero_qi());
1936 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1937 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1939 return _mm512_mask_cmpneq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1940 _mm512_setzero_qi());
1943 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1944 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1946 return _mm512_cmpeq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_qi());
1949 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1950 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1952 return _mm512_mask_cmpeq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1953 _mm512_setzero_qi());
1956 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1957 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1959 return _mm512_cmpeq_epi16_mask (_mm512_and_epi32 (__A, __B),
1960 _mm512_setzero_qi());
1963 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1964 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1966 return _mm512_mask_cmpeq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1967 _mm512_setzero_qi());
1970 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
1971 _mm512_movepi8_mask (__m512i __A)
1973 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1976 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1977 _mm512_movepi16_mask (__m512i __A)
1979 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1982 static __inline__ __m512i __DEFAULT_FN_ATTRS
1983 _mm512_movm_epi8 (__mmask64 __A)
1985 return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1988 static __inline__ __m512i __DEFAULT_FN_ATTRS
1989 _mm512_movm_epi16 (__mmask32 __A)
1991 return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1994 static __inline__ __m512i __DEFAULT_FN_ATTRS
1995 _mm512_broadcastb_epi8 (__m128i __A)
1997 return (__m512i)__builtin_shufflevector((__v16qi) __A,
1998 (__v16qi)_mm_undefined_si128(),
1999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2005 static __inline__ __m512i __DEFAULT_FN_ATTRS
2006 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
2008 return (__m512i)__builtin_ia32_selectb_512(__M,
2009 (__v64qi) _mm512_broadcastb_epi8(__A),
2013 static __inline__ __m512i __DEFAULT_FN_ATTRS
2014 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
2016 return (__m512i)__builtin_ia32_selectb_512(__M,
2017 (__v64qi) _mm512_broadcastb_epi8(__A),
2018 (__v64qi) _mm512_setzero_si512());
2021 static __inline__ __m512i __DEFAULT_FN_ATTRS
2022 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
2024 return (__m512i) __builtin_ia32_selectw_512(__M,
2025 (__v32hi) _mm512_set1_epi16(__A),
2029 static __inline__ __m512i __DEFAULT_FN_ATTRS
2030 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
2032 return (__m512i) __builtin_ia32_selectw_512(__M,
2033 (__v32hi) _mm512_set1_epi16(__A),
2034 (__v32hi) _mm512_setzero_si512());
2037 static __inline__ __m512i __DEFAULT_FN_ATTRS
2038 _mm512_broadcastw_epi16 (__m128i __A)
2040 return (__m512i)__builtin_shufflevector((__v8hi) __A,
2041 (__v8hi)_mm_undefined_si128(),
2042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2046 static __inline__ __m512i __DEFAULT_FN_ATTRS
2047 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
2049 return (__m512i)__builtin_ia32_selectw_512(__M,
2050 (__v32hi) _mm512_broadcastw_epi16(__A),
2054 static __inline__ __m512i __DEFAULT_FN_ATTRS
2055 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
2057 return (__m512i)__builtin_ia32_selectw_512(__M,
2058 (__v32hi) _mm512_broadcastw_epi16(__A),
2059 (__v32hi) _mm512_setzero_si512());
2062 static __inline__ __m512i __DEFAULT_FN_ATTRS
2063 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
2065 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2067 (__v32hi) _mm512_undefined_epi32 (),
2071 static __inline__ __m512i __DEFAULT_FN_ATTRS
2072 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
2075 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2077 (__v32hi) _mm512_setzero_hi(),
2081 static __inline__ __m512i __DEFAULT_FN_ATTRS
2082 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2085 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2091 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
2092 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2093 (__v64qi)(__m512i)(B), (int)(N), \
2094 (__v64qi)_mm512_undefined_pd(), \
2097 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
2098 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2099 (__v64qi)(__m512i)(B), (int)(N), \
2100 (__v64qi)(__m512i)(W), \
2103 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
2104 (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2105 (__v64qi)(__m512i)(B), (int)(N), \
2106 (__v64qi)_mm512_setzero_si512(), \
2109 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
2110 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2111 (__v64qi)(__m512i)(B), (int)(imm), \
2112 (__v32hi)_mm512_undefined_epi32(), \
2115 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
2116 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2117 (__v64qi)(__m512i)(B), (int)(imm), \
2118 (__v32hi)(__m512i)(W), \
2121 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
2122 (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2123 (__v64qi)(__m512i)(B), (int)(imm), \
2124 (__v32hi)_mm512_setzero_hi(), \
2127 static __inline__ __m512i __DEFAULT_FN_ATTRS
2128 _mm512_sad_epu8 (__m512i __A, __m512i __B)
2130 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2136 #undef __DEFAULT_FN_ATTRS