]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h
Upgrade to Unbound 1.5.7.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / lib / Headers / avx512bwintrin.h
1 /*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
2  *
3  *
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:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
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
20  * THE SOFTWARE.
21  *
22  *===-----------------------------------------------------------------------===
23  */
24 #ifndef __IMMINTRIN_H
25 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef __AVX512BWINTRIN_H
29 #define __AVX512BWINTRIN_H
30
31 typedef unsigned int __mmask32;
32 typedef unsigned long long __mmask64;
33 typedef char __v64qi __attribute__ ((__vector_size__ (64)));
34 typedef short __v32hi __attribute__ ((__vector_size__ (64)));
35
36 /* Define the default attributes for the functions in this file. */
37 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
38
39 static  __inline __v64qi __DEFAULT_FN_ATTRS
40 _mm512_setzero_qi (void) {
41   return (__v64qi){ 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,
47                        0, 0, 0, 0, 0, 0, 0, 0,
48                        0, 0, 0, 0, 0, 0, 0, 0 };
49 }
50
51 static  __inline __v32hi __DEFAULT_FN_ATTRS
52 _mm512_setzero_hi (void) {
53   return (__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
54                        0, 0, 0, 0, 0, 0, 0, 0,
55                        0, 0, 0, 0, 0, 0, 0, 0,
56                        0, 0, 0, 0, 0, 0, 0, 0 };
57 }
58
59 /* Integer compare */
60
61 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
62 _mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
63   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
64                                                    (__mmask64)-1);
65 }
66
67 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
68 _mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
69   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
70                                                    __u);
71 }
72
73 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
74 _mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
75   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
76                                                  (__mmask64)-1);
77 }
78
79 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
80 _mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
81   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
82                                                  __u);
83 }
84
85 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
86 _mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
87   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
88                                                    (__mmask32)-1);
89 }
90
91 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
92 _mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
93   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
94                                                    __u);
95 }
96
97 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
98 _mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
99   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
100                                                  (__mmask32)-1);
101 }
102
103 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
104 _mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
105   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
106                                                  __u);
107 }
108
109 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
110 _mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
111   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
112                                                 (__mmask64)-1);
113 }
114
115 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
116 _mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
117   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
118                                                 __u);
119 }
120
121 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
122 _mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
123   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
124                                                  (__mmask64)-1);
125 }
126
127 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
128 _mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
129   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
130                                                  __u);
131 }
132
133 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
134 _mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
135   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
136                                                 (__mmask32)-1);
137 }
138
139 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
140 _mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
141   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
142                                                 __u);
143 }
144
145 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
146 _mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
147   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
148                                                  (__mmask32)-1);
149 }
150
151 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
152 _mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
153   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
154                                                  __u);
155 }
156
157 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
158 _mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
159   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
160                                                    (__mmask64)-1);
161 }
162
163 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
164 _mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
165   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
166                                                    __u);
167 }
168
169 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
170 _mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
171   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
172                                                  (__mmask64)-1);
173 }
174
175 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
176 _mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
177   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
178                                                  __u);
179 }
180
181 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
182 _mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
183   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
184                                                    (__mmask32)-1);
185 }
186
187 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
188 _mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
189   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
190                                                    __u);
191 }
192
193 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
194 _mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
195   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
196                                                  (__mmask32)-1);
197 }
198
199 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
200 _mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
201   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
202                                                  __u);
203 }
204
205 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
206 _mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
207   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
208                                                 (__mmask64)-1);
209 }
210
211 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
212 _mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
213   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
214                                                 __u);
215 }
216
217 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
218 _mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
219   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
220                                                  (__mmask64)-1);
221 }
222
223 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
224 _mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
225   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
226                                                  __u);
227 }
228
229 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
230 _mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
231   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
232                                                 (__mmask32)-1);
233 }
234
235 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
236 _mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
237   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
238                                                 __u);
239 }
240
241 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
242 _mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
243   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
244                                                  (__mmask32)-1);
245 }
246
247 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
248 _mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
249   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
250                                                  __u);
251 }
252
253 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
254 _mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
255   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
256                                                 (__mmask64)-1);
257 }
258
259 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
260 _mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
261   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
262                                                 __u);
263 }
264
265 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
266 _mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
267   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
268                                                  (__mmask64)-1);
269 }
270
271 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
272 _mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
273   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
274                                                  __u);
275 }
276
277 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
278 _mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
279   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
280                                                 (__mmask32)-1);
281 }
282
283 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
284 _mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
285   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
286                                                 __u);
287 }
288
289 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
290 _mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
291   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
292                                                  (__mmask32)-1);
293 }
294
295 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
296 _mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
297   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
298                                                  __u);
299 }
300
301 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
302 _mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
303   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
304                                                 (__mmask64)-1);
305 }
306
307 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
308 _mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
309   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
310                                                 __u);
311 }
312
313 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
314 _mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
315   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
316                                                  (__mmask64)-1);
317 }
318
319 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
320 _mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
321   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
322                                                  __u);
323 }
324
325 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
326 _mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
327   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
328                                                 (__mmask32)-1);
329 }
330
331 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
332 _mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
333   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
334                                                 __u);
335 }
336
337 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
338 _mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
339   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
340                                                  (__mmask32)-1);
341 }
342
343 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
344 _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
345   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
346                                                  __u);
347 }
348
349 static __inline__ __m512i __DEFAULT_FN_ATTRS
350 _mm512_add_epi8 (__m512i __A, __m512i __B) {
351   return (__m512i) ((__v64qi) __A + (__v64qi) __B);
352 }
353
354 static __inline__ __m512i __DEFAULT_FN_ATTRS
355 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
356   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
357              (__v64qi) __B,
358              (__v64qi) __W,
359              (__mmask64) __U);
360 }
361
362 static __inline__ __m512i __DEFAULT_FN_ATTRS
363 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
364   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
365              (__v64qi) __B,
366              (__v64qi)
367              _mm512_setzero_qi (),
368              (__mmask64) __U);
369 }
370
371 static __inline__ __m512i __DEFAULT_FN_ATTRS
372 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
373   return (__m512i) ((__v64qi) __A - (__v64qi) __B);
374 }
375
376 static __inline__ __m512i __DEFAULT_FN_ATTRS
377 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
378   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
379              (__v64qi) __B,
380              (__v64qi) __W,
381              (__mmask64) __U);
382 }
383
384 static __inline__ __m512i __DEFAULT_FN_ATTRS
385 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
386   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
387              (__v64qi) __B,
388              (__v64qi)
389              _mm512_setzero_qi (),
390              (__mmask64) __U);
391 }
392
393 static __inline__ __m512i __DEFAULT_FN_ATTRS
394 _mm512_add_epi16 (__m512i __A, __m512i __B) {
395   return (__m512i) ((__v32hi) __A + (__v32hi) __B);
396 }
397
398 static __inline__ __m512i __DEFAULT_FN_ATTRS
399 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
400   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
401              (__v32hi) __B,
402              (__v32hi) __W,
403              (__mmask32) __U);
404 }
405
406 static __inline__ __m512i __DEFAULT_FN_ATTRS
407 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
408   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
409              (__v32hi) __B,
410              (__v32hi)
411              _mm512_setzero_hi (),
412              (__mmask32) __U);
413 }
414
415 static __inline__ __m512i __DEFAULT_FN_ATTRS
416 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
417   return (__m512i) ((__v32hi) __A - (__v32hi) __B);
418 }
419
420 static __inline__ __m512i __DEFAULT_FN_ATTRS
421 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
422   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
423              (__v32hi) __B,
424              (__v32hi) __W,
425              (__mmask32) __U);
426 }
427
428 static __inline__ __m512i __DEFAULT_FN_ATTRS
429 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
430   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
431              (__v32hi) __B,
432              (__v32hi)
433              _mm512_setzero_hi (),
434              (__mmask32) __U);
435 }
436
437 static __inline__ __m512i __DEFAULT_FN_ATTRS
438 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
439   return (__m512i) ((__v32hi) __A * (__v32hi) __B);
440 }
441
442 static __inline__ __m512i __DEFAULT_FN_ATTRS
443 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
444   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
445               (__v32hi) __B,
446               (__v32hi) __W,
447               (__mmask32) __U);
448 }
449
450 static __inline__ __m512i __DEFAULT_FN_ATTRS
451 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
452   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
453               (__v32hi) __B,
454               (__v32hi)
455               _mm512_setzero_hi (),
456               (__mmask32) __U);
457 }
458
459 static __inline__ __m512i __DEFAULT_FN_ATTRS
460 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
461 {
462   return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
463               (__v64qi) __W,
464               (__mmask64) __U);
465 }
466
467 static __inline__ __m512i __DEFAULT_FN_ATTRS
468 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
469 {
470   return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
471               (__v32hi) __W,
472               (__mmask32) __U);
473 }
474
475 static __inline__ __m512i __DEFAULT_FN_ATTRS
476 _mm512_abs_epi8 (__m512i __A)
477 {
478   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
479               (__v64qi) _mm512_setzero_qi (),
480               (__mmask64) -1);
481 }
482
483 static __inline__ __m512i __DEFAULT_FN_ATTRS
484 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
485 {
486   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
487               (__v64qi) __W,
488               (__mmask64) __U);
489 }
490
491 static __inline__ __m512i __DEFAULT_FN_ATTRS
492 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
493 {
494   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
495               (__v64qi) _mm512_setzero_qi (),
496               (__mmask64) __U);
497 }
498
499 static __inline__ __m512i __DEFAULT_FN_ATTRS
500 _mm512_abs_epi16 (__m512i __A)
501 {
502   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
503               (__v32hi) _mm512_setzero_hi (),
504               (__mmask32) -1);
505 }
506
507 static __inline__ __m512i __DEFAULT_FN_ATTRS
508 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
509 {
510   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
511               (__v32hi) __W,
512               (__mmask32) __U);
513 }
514
515 static __inline__ __m512i __DEFAULT_FN_ATTRS
516 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
517 {
518   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
519               (__v32hi) _mm512_setzero_hi (),
520               (__mmask32) __U);
521 }
522
523 static __inline__ __m512i __DEFAULT_FN_ATTRS
524 _mm512_packs_epi32 (__m512i __A, __m512i __B)
525 {
526   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
527               (__v16si) __B,
528               (__v32hi) _mm512_setzero_hi (),
529               (__mmask32) -1);
530 }
531
532 static __inline__ __m512i __DEFAULT_FN_ATTRS
533 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
534 {
535   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
536               (__v16si) __B,
537               (__v32hi) _mm512_setzero_hi(),
538               __M);
539 }
540
541 static __inline__ __m512i __DEFAULT_FN_ATTRS
542 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
543        __m512i __B)
544 {
545   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
546               (__v16si) __B,
547               (__v32hi) __W,
548               __M);
549 }
550
551 static __inline__ __m512i __DEFAULT_FN_ATTRS
552 _mm512_packs_epi16 (__m512i __A, __m512i __B)
553 {
554   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
555               (__v32hi) __B,
556               (__v64qi) _mm512_setzero_qi (),
557               (__mmask64) -1);
558 }
559
560 static __inline__ __m512i __DEFAULT_FN_ATTRS
561 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
562        __m512i __B)
563 {
564   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
565               (__v32hi) __B,
566               (__v64qi) __W,
567               (__mmask64) __M);
568 }
569
570 static __inline__ __m512i __DEFAULT_FN_ATTRS
571 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
572 {
573   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
574               (__v32hi) __B,
575               (__v64qi) _mm512_setzero_qi(),
576               __M);
577 }
578
579 static __inline__ __m512i __DEFAULT_FN_ATTRS
580 _mm512_packus_epi32 (__m512i __A, __m512i __B)
581 {
582   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
583               (__v16si) __B,
584               (__v32hi) _mm512_setzero_hi (),
585               (__mmask32) -1);
586 }
587
588 static __inline__ __m512i __DEFAULT_FN_ATTRS
589 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
590 {
591   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
592               (__v16si) __B,
593               (__v32hi) _mm512_setzero_hi(),
594               __M);
595 }
596
597 static __inline__ __m512i __DEFAULT_FN_ATTRS
598 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
599         __m512i __B)
600 {
601   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
602               (__v16si) __B,
603               (__v32hi) __W,
604               __M);
605 }
606
607 static __inline__ __m512i __DEFAULT_FN_ATTRS
608 _mm512_packus_epi16 (__m512i __A, __m512i __B)
609 {
610   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
611               (__v32hi) __B,
612               (__v64qi) _mm512_setzero_qi (),
613               (__mmask64) -1);
614 }
615
616 static __inline__ __m512i __DEFAULT_FN_ATTRS
617 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
618         __m512i __B)
619 {
620   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
621               (__v32hi) __B,
622               (__v64qi) __W,
623               (__mmask64) __M);
624 }
625
626 static __inline__ __m512i __DEFAULT_FN_ATTRS
627 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
628 {
629   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
630               (__v32hi) __B,
631               (__v64qi) _mm512_setzero_qi(),
632               (__mmask64) __M);
633 }
634
635 static __inline__ __m512i __DEFAULT_FN_ATTRS
636 _mm512_adds_epi8 (__m512i __A, __m512i __B)
637 {
638   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
639               (__v64qi) __B,
640               (__v64qi) _mm512_setzero_qi (),
641               (__mmask64) -1);
642 }
643
644 static __inline__ __m512i __DEFAULT_FN_ATTRS
645 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
646            __m512i __B)
647 {
648   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
649               (__v64qi) __B,
650               (__v64qi) __W,
651               (__mmask64) __U);
652 }
653
654 static __inline__ __m512i __DEFAULT_FN_ATTRS
655 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
656 {
657   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
658               (__v64qi) __B,
659               (__v64qi) _mm512_setzero_qi (),
660               (__mmask64) __U);
661 }
662
663 static __inline__ __m512i __DEFAULT_FN_ATTRS
664 _mm512_adds_epi16 (__m512i __A, __m512i __B)
665 {
666   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
667               (__v32hi) __B,
668               (__v32hi) _mm512_setzero_hi (),
669               (__mmask32) -1);
670 }
671
672 static __inline__ __m512i __DEFAULT_FN_ATTRS
673 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
674       __m512i __B)
675 {
676   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
677               (__v32hi) __B,
678               (__v32hi) __W,
679               (__mmask32) __U);
680 }
681
682 static __inline__ __m512i __DEFAULT_FN_ATTRS
683 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
684 {
685   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
686               (__v32hi) __B,
687               (__v32hi) _mm512_setzero_hi (),
688               (__mmask32) __U);
689 }
690
691 static __inline__ __m512i __DEFAULT_FN_ATTRS
692 _mm512_adds_epu8 (__m512i __A, __m512i __B)
693 {
694   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
695               (__v64qi) __B,
696               (__v64qi) _mm512_setzero_qi (),
697               (__mmask64) -1);
698 }
699
700 static __inline__ __m512i __DEFAULT_FN_ATTRS
701 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
702            __m512i __B)
703 {
704   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
705               (__v64qi) __B,
706               (__v64qi) __W,
707               (__mmask64) __U);
708 }
709
710 static __inline__ __m512i __DEFAULT_FN_ATTRS
711 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
712 {
713   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
714               (__v64qi) __B,
715               (__v64qi) _mm512_setzero_qi (),
716               (__mmask64) __U);
717 }
718
719 static __inline__ __m512i __DEFAULT_FN_ATTRS
720 _mm512_adds_epu16 (__m512i __A, __m512i __B)
721 {
722   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
723               (__v32hi) __B,
724               (__v32hi) _mm512_setzero_hi (),
725               (__mmask32) -1);
726 }
727
728 static __inline__ __m512i __DEFAULT_FN_ATTRS
729 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
730       __m512i __B)
731 {
732   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
733               (__v32hi) __B,
734               (__v32hi) __W,
735               (__mmask32) __U);
736 }
737
738 static __inline__ __m512i __DEFAULT_FN_ATTRS
739 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
740 {
741   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
742               (__v32hi) __B,
743               (__v32hi) _mm512_setzero_hi (),
744               (__mmask32) __U);
745 }
746
747 static __inline__ __m512i __DEFAULT_FN_ATTRS
748 _mm512_avg_epu8 (__m512i __A, __m512i __B)
749 {
750   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
751               (__v64qi) __B,
752               (__v64qi) _mm512_setzero_qi (),
753               (__mmask64) -1);
754 }
755
756 static __inline__ __m512i __DEFAULT_FN_ATTRS
757 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
758           __m512i __B)
759 {
760   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
761               (__v64qi) __B,
762               (__v64qi) __W,
763               (__mmask64) __U);
764 }
765
766 static __inline__ __m512i __DEFAULT_FN_ATTRS
767 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
768 {
769   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
770               (__v64qi) __B,
771               (__v64qi) _mm512_setzero_qi(),
772               (__mmask64) __U);
773 }
774
775 static __inline__ __m512i __DEFAULT_FN_ATTRS
776 _mm512_avg_epu16 (__m512i __A, __m512i __B)
777 {
778   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
779               (__v32hi) __B,
780               (__v32hi) _mm512_setzero_hi (),
781               (__mmask32) -1);
782 }
783
784 static __inline__ __m512i __DEFAULT_FN_ATTRS
785 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
786            __m512i __B)
787 {
788   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
789               (__v32hi) __B,
790               (__v32hi) __W,
791               (__mmask32) __U);
792 }
793
794 static __inline__ __m512i __DEFAULT_FN_ATTRS
795 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
796 {
797   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
798               (__v32hi) __B,
799               (__v32hi) _mm512_setzero_hi(),
800               (__mmask32) __U);
801 }
802
803 static __inline__ __m512i __DEFAULT_FN_ATTRS
804 _mm512_max_epi8 (__m512i __A, __m512i __B)
805 {
806   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
807               (__v64qi) __B,
808               (__v64qi) _mm512_setzero_qi (),
809               (__mmask64) -1);
810 }
811
812 static __inline__ __m512i __DEFAULT_FN_ATTRS
813 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
814 {
815   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
816               (__v64qi) __B,
817               (__v64qi) _mm512_setzero_qi(),
818               (__mmask64) __M);
819 }
820
821 static __inline__ __m512i __DEFAULT_FN_ATTRS
822 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
823           __m512i __B)
824 {
825   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
826               (__v64qi) __B,
827               (__v64qi) __W,
828               (__mmask64) __M);
829 }
830
831 static __inline__ __m512i __DEFAULT_FN_ATTRS
832 _mm512_max_epi16 (__m512i __A, __m512i __B)
833 {
834   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
835               (__v32hi) __B,
836               (__v32hi) _mm512_setzero_hi (),
837               (__mmask32) -1);
838 }
839
840 static __inline__ __m512i __DEFAULT_FN_ATTRS
841 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
842 {
843   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
844               (__v32hi) __B,
845               (__v32hi) _mm512_setzero_hi(),
846               (__mmask32) __M);
847 }
848
849 static __inline__ __m512i __DEFAULT_FN_ATTRS
850 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
851            __m512i __B)
852 {
853   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
854               (__v32hi) __B,
855               (__v32hi) __W,
856               (__mmask32) __M);
857 }
858
859 static __inline__ __m512i __DEFAULT_FN_ATTRS
860 _mm512_max_epu8 (__m512i __A, __m512i __B)
861 {
862   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
863               (__v64qi) __B,
864               (__v64qi) _mm512_setzero_qi (),
865               (__mmask64) -1);
866 }
867
868 static __inline__ __m512i __DEFAULT_FN_ATTRS
869 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
870 {
871   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
872               (__v64qi) __B,
873               (__v64qi) _mm512_setzero_qi(),
874               (__mmask64) __M);
875 }
876
877 static __inline__ __m512i __DEFAULT_FN_ATTRS
878 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
879           __m512i __B)
880 {
881   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
882               (__v64qi) __B,
883               (__v64qi) __W,
884               (__mmask64) __M);
885 }
886
887 static __inline__ __m512i __DEFAULT_FN_ATTRS
888 _mm512_max_epu16 (__m512i __A, __m512i __B)
889 {
890   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
891               (__v32hi) __B,
892               (__v32hi) _mm512_setzero_hi (),
893               (__mmask32) -1);
894 }
895
896 static __inline__ __m512i __DEFAULT_FN_ATTRS
897 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
898 {
899   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
900               (__v32hi) __B,
901               (__v32hi) _mm512_setzero_hi(),
902               (__mmask32) __M);
903 }
904
905 static __inline__ __m512i __DEFAULT_FN_ATTRS
906 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
907            __m512i __B)
908 {
909   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
910               (__v32hi) __B,
911               (__v32hi) __W,
912               (__mmask32) __M);
913 }
914
915 static __inline__ __m512i __DEFAULT_FN_ATTRS
916 _mm512_min_epi8 (__m512i __A, __m512i __B)
917 {
918   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
919               (__v64qi) __B,
920               (__v64qi) _mm512_setzero_qi (),
921               (__mmask64) -1);
922 }
923
924 static __inline__ __m512i __DEFAULT_FN_ATTRS
925 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
926 {
927   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
928               (__v64qi) __B,
929               (__v64qi) _mm512_setzero_qi(),
930               (__mmask64) __M);
931 }
932
933 static __inline__ __m512i __DEFAULT_FN_ATTRS
934 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
935           __m512i __B)
936 {
937   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
938               (__v64qi) __B,
939               (__v64qi) __W,
940               (__mmask64) __M);
941 }
942
943 static __inline__ __m512i __DEFAULT_FN_ATTRS
944 _mm512_min_epi16 (__m512i __A, __m512i __B)
945 {
946   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
947               (__v32hi) __B,
948               (__v32hi) _mm512_setzero_hi (),
949               (__mmask32) -1);
950 }
951
952 static __inline__ __m512i __DEFAULT_FN_ATTRS
953 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
954 {
955   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
956               (__v32hi) __B,
957               (__v32hi) _mm512_setzero_hi(),
958               (__mmask32) __M);
959 }
960
961 static __inline__ __m512i __DEFAULT_FN_ATTRS
962 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
963            __m512i __B)
964 {
965   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
966               (__v32hi) __B,
967               (__v32hi) __W,
968               (__mmask32) __M);
969 }
970
971 static __inline__ __m512i __DEFAULT_FN_ATTRS
972 _mm512_min_epu8 (__m512i __A, __m512i __B)
973 {
974   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
975               (__v64qi) __B,
976               (__v64qi) _mm512_setzero_qi (),
977               (__mmask64) -1);
978 }
979
980 static __inline__ __m512i __DEFAULT_FN_ATTRS
981 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
982 {
983   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
984               (__v64qi) __B,
985               (__v64qi) _mm512_setzero_qi(),
986               (__mmask64) __M);
987 }
988
989 static __inline__ __m512i __DEFAULT_FN_ATTRS
990 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
991           __m512i __B)
992 {
993   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
994               (__v64qi) __B,
995               (__v64qi) __W,
996               (__mmask64) __M);
997 }
998
999 static __inline__ __m512i __DEFAULT_FN_ATTRS
1000 _mm512_min_epu16 (__m512i __A, __m512i __B)
1001 {
1002   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1003               (__v32hi) __B,
1004               (__v32hi) _mm512_setzero_hi (),
1005               (__mmask32) -1);
1006 }
1007
1008 static __inline__ __m512i __DEFAULT_FN_ATTRS
1009 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1010 {
1011   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1012               (__v32hi) __B,
1013               (__v32hi) _mm512_setzero_hi(),
1014               (__mmask32) __M);
1015 }
1016
1017 static __inline__ __m512i __DEFAULT_FN_ATTRS
1018 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1019            __m512i __B)
1020 {
1021   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1022               (__v32hi) __B,
1023               (__v32hi) __W,
1024               (__mmask32) __M);
1025 }
1026
1027 static __inline__ __m512i __DEFAULT_FN_ATTRS
1028 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1029 {
1030   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1031               (__v64qi) __B,
1032               (__v64qi) _mm512_setzero_qi (),
1033               (__mmask64) -1);
1034 }
1035
1036 static __inline__ __m512i __DEFAULT_FN_ATTRS
1037 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1038         __m512i __B)
1039 {
1040   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1041               (__v64qi) __B,
1042               (__v64qi) __W,
1043               (__mmask64) __U);
1044 }
1045
1046 static __inline__ __m512i __DEFAULT_FN_ATTRS
1047 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1048 {
1049   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1050               (__v64qi) __B,
1051               (__v64qi) _mm512_setzero_qi (),
1052               (__mmask64) __U);
1053 }
1054
1055 static __inline__ __m512i __DEFAULT_FN_ATTRS
1056 _mm512_subs_epi8 (__m512i __A, __m512i __B)
1057 {
1058   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1059               (__v64qi) __B,
1060               (__v64qi) _mm512_setzero_qi (),
1061               (__mmask64) -1);
1062 }
1063
1064 static __inline__ __m512i __DEFAULT_FN_ATTRS
1065 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1066            __m512i __B)
1067 {
1068   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1069               (__v64qi) __B,
1070               (__v64qi) __W,
1071               (__mmask64) __U);
1072 }
1073
1074 static __inline__ __m512i __DEFAULT_FN_ATTRS
1075 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1076 {
1077   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1078               (__v64qi) __B,
1079               (__v64qi) _mm512_setzero_qi (),
1080               (__mmask64) __U);
1081 }
1082
1083 static __inline__ __m512i __DEFAULT_FN_ATTRS
1084 _mm512_subs_epi16 (__m512i __A, __m512i __B)
1085 {
1086   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1087               (__v32hi) __B,
1088               (__v32hi) _mm512_setzero_hi (),
1089               (__mmask32) -1);
1090 }
1091
1092 static __inline__ __m512i __DEFAULT_FN_ATTRS
1093 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1094       __m512i __B)
1095 {
1096   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1097               (__v32hi) __B,
1098               (__v32hi) __W,
1099               (__mmask32) __U);
1100 }
1101
1102 static __inline__ __m512i __DEFAULT_FN_ATTRS
1103 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1104 {
1105   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1106               (__v32hi) __B,
1107               (__v32hi) _mm512_setzero_hi (),
1108               (__mmask32) __U);
1109 }
1110
1111 static __inline__ __m512i __DEFAULT_FN_ATTRS
1112 _mm512_subs_epu8 (__m512i __A, __m512i __B)
1113 {
1114   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1115               (__v64qi) __B,
1116               (__v64qi) _mm512_setzero_qi (),
1117               (__mmask64) -1);
1118 }
1119
1120 static __inline__ __m512i __DEFAULT_FN_ATTRS
1121 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1122            __m512i __B)
1123 {
1124   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1125               (__v64qi) __B,
1126               (__v64qi) __W,
1127               (__mmask64) __U);
1128 }
1129
1130 static __inline__ __m512i __DEFAULT_FN_ATTRS
1131 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1132 {
1133   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1134               (__v64qi) __B,
1135               (__v64qi) _mm512_setzero_qi (),
1136               (__mmask64) __U);
1137 }
1138
1139 static __inline__ __m512i __DEFAULT_FN_ATTRS
1140 _mm512_subs_epu16 (__m512i __A, __m512i __B)
1141 {
1142   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1143               (__v32hi) __B,
1144               (__v32hi) _mm512_setzero_hi (),
1145               (__mmask32) -1);
1146 }
1147
1148 static __inline__ __m512i __DEFAULT_FN_ATTRS
1149 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1150       __m512i __B)
1151 {
1152   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1153               (__v32hi) __B,
1154               (__v32hi) __W,
1155               (__mmask32) __U);
1156 }
1157
1158 static __inline__ __m512i __DEFAULT_FN_ATTRS
1159 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1160 {
1161   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1162               (__v32hi) __B,
1163               (__v32hi) _mm512_setzero_hi (),
1164               (__mmask32) __U);
1165 }
1166
1167 static __inline__ __m512i __DEFAULT_FN_ATTRS
1168 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1169          __mmask32 __U, __m512i __B)
1170 {
1171   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1172               (__v32hi) __I /* idx */ ,
1173               (__v32hi) __B,
1174               (__mmask32) __U);
1175 }
1176
1177 static __inline__ __m512i __DEFAULT_FN_ATTRS
1178 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1179 {
1180   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1181               (__v32hi) __A,
1182               (__v32hi) __B,
1183               (__mmask32) -1);
1184 }
1185
1186 static __inline__ __m512i __DEFAULT_FN_ATTRS
1187 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1188         __m512i __I, __m512i __B)
1189 {
1190   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1191               (__v32hi) __A,
1192               (__v32hi) __B,
1193               (__mmask32) __U);
1194 }
1195
1196 static __inline__ __m512i __DEFAULT_FN_ATTRS
1197 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1198          __m512i __I, __m512i __B)
1199 {
1200   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1201               /* idx */ ,
1202               (__v32hi) __A,
1203               (__v32hi) __B,
1204               (__mmask32) __U);
1205 }
1206
1207 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1208   (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1209                                          (__v64qi)(__m512i)(b), \
1210                                          (p), (__mmask64)-1); })
1211
1212 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1213   (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1214                                          (__v64qi)(__m512i)(b), \
1215                                          (p), (__mmask64)(m)); })
1216
1217 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1218   (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1219                                           (__v64qi)(__m512i)(b), \
1220                                           (p), (__mmask64)-1); })
1221
1222 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1223   (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1224                                           (__v64qi)(__m512i)(b), \
1225                                           (p), (__mmask64)(m)); })
1226
1227 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1228   (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1229                                          (__v32hi)(__m512i)(b), \
1230                                          (p), (__mmask32)-1); })
1231
1232 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1233   (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1234                                          (__v32hi)(__m512i)(b), \
1235                                          (p), (__mmask32)(m)); })
1236
1237 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1238   (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1239                                           (__v32hi)(__m512i)(b), \
1240                                           (p), (__mmask32)-1); })
1241
1242 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1243   (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1244                                           (__v32hi)(__m512i)(b), \
1245                                           (p), (__mmask32)(m)); })
1246
1247
1248 #undef __DEFAULT_FN_ATTRS
1249
1250 #endif