]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512bwintrin.h
Update clang to trunk r290819 and resolve conflicts.
[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
34 /* Define the default attributes for the functions in this file. */
35 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
36
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 };
47 }
48
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 };
55 }
56
57 /* Integer compare */
58
59 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
60 _mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
61   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
62                                                    (__mmask64)-1);
63 }
64
65 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
66 _mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
67   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
68                                                    __u);
69 }
70
71 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
72 _mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
73   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
74                                                  (__mmask64)-1);
75 }
76
77 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
78 _mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
79   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
80                                                  __u);
81 }
82
83 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
84 _mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
85   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
86                                                    (__mmask32)-1);
87 }
88
89 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
90 _mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
91   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
92                                                    __u);
93 }
94
95 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
96 _mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
97   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
98                                                  (__mmask32)-1);
99 }
100
101 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
102 _mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
103   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
104                                                  __u);
105 }
106
107 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
108 _mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
109   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
110                                                 (__mmask64)-1);
111 }
112
113 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
114 _mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
115   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
116                                                 __u);
117 }
118
119 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
120 _mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
121   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
122                                                  (__mmask64)-1);
123 }
124
125 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
126 _mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
127   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
128                                                  __u);
129 }
130
131 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
132 _mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
133   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
134                                                 (__mmask32)-1);
135 }
136
137 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
138 _mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
139   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
140                                                 __u);
141 }
142
143 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
144 _mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
145   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
146                                                  (__mmask32)-1);
147 }
148
149 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
150 _mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
151   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
152                                                  __u);
153 }
154
155 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
156 _mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
157   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
158                                                    (__mmask64)-1);
159 }
160
161 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
162 _mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
163   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
164                                                    __u);
165 }
166
167 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
168 _mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
169   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
170                                                  (__mmask64)-1);
171 }
172
173 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
174 _mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
175   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
176                                                  __u);
177 }
178
179 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
180 _mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
181   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
182                                                    (__mmask32)-1);
183 }
184
185 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
186 _mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
187   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
188                                                    __u);
189 }
190
191 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
192 _mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
193   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
194                                                  (__mmask32)-1);
195 }
196
197 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
198 _mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
199   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
200                                                  __u);
201 }
202
203 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
204 _mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
205   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
206                                                 (__mmask64)-1);
207 }
208
209 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
210 _mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
211   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
212                                                 __u);
213 }
214
215 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
216 _mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
217   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
218                                                  (__mmask64)-1);
219 }
220
221 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
222 _mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
223   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
224                                                  __u);
225 }
226
227 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
228 _mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
229   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
230                                                 (__mmask32)-1);
231 }
232
233 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
234 _mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
235   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
236                                                 __u);
237 }
238
239 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
240 _mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
241   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
242                                                  (__mmask32)-1);
243 }
244
245 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
246 _mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
247   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
248                                                  __u);
249 }
250
251 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
252 _mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
253   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
254                                                 (__mmask64)-1);
255 }
256
257 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
258 _mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
259   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
260                                                 __u);
261 }
262
263 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
264 _mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
265   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
266                                                  (__mmask64)-1);
267 }
268
269 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
270 _mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
271   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
272                                                  __u);
273 }
274
275 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
276 _mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
277   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
278                                                 (__mmask32)-1);
279 }
280
281 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
282 _mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
283   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
284                                                 __u);
285 }
286
287 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
288 _mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
289   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
290                                                  (__mmask32)-1);
291 }
292
293 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
294 _mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
295   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
296                                                  __u);
297 }
298
299 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
300 _mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
301   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
302                                                 (__mmask64)-1);
303 }
304
305 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
306 _mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
307   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
308                                                 __u);
309 }
310
311 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
312 _mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
313   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
314                                                  (__mmask64)-1);
315 }
316
317 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
318 _mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
319   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
320                                                  __u);
321 }
322
323 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
324 _mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
325   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
326                                                 (__mmask32)-1);
327 }
328
329 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
330 _mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
331   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
332                                                 __u);
333 }
334
335 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
336 _mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
337   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
338                                                  (__mmask32)-1);
339 }
340
341 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
342 _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
343   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
344                                                  __u);
345 }
346
347 static __inline__ __m512i __DEFAULT_FN_ATTRS
348 _mm512_add_epi8 (__m512i __A, __m512i __B) {
349   return (__m512i) ((__v64qu) __A + (__v64qu) __B);
350 }
351
352 static __inline__ __m512i __DEFAULT_FN_ATTRS
353 _mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
354   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
355                                              (__v64qi)_mm512_add_epi8(__A, __B),
356                                              (__v64qi)__W);
357 }
358
359 static __inline__ __m512i __DEFAULT_FN_ATTRS
360 _mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
361   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
362                                              (__v64qi)_mm512_add_epi8(__A, __B),
363                                              (__v64qi)_mm512_setzero_qi());
364 }
365
366 static __inline__ __m512i __DEFAULT_FN_ATTRS
367 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
368   return (__m512i) ((__v64qu) __A - (__v64qu) __B);
369 }
370
371 static __inline__ __m512i __DEFAULT_FN_ATTRS
372 _mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
373   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
374                                              (__v64qi)_mm512_sub_epi8(__A, __B),
375                                              (__v64qi)__W);
376 }
377
378 static __inline__ __m512i __DEFAULT_FN_ATTRS
379 _mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
380   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
381                                              (__v64qi)_mm512_sub_epi8(__A, __B),
382                                              (__v64qi)_mm512_setzero_qi());
383 }
384
385 static __inline__ __m512i __DEFAULT_FN_ATTRS
386 _mm512_add_epi16 (__m512i __A, __m512i __B) {
387   return (__m512i) ((__v32hu) __A + (__v32hu) __B);
388 }
389
390 static __inline__ __m512i __DEFAULT_FN_ATTRS
391 _mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
392   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
393                                              (__v32hi)_mm512_add_epi16(__A, __B),
394                                              (__v32hi)__W);
395 }
396
397 static __inline__ __m512i __DEFAULT_FN_ATTRS
398 _mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
399   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
400                                              (__v32hi)_mm512_add_epi16(__A, __B),
401                                              (__v32hi)_mm512_setzero_hi());
402 }
403
404 static __inline__ __m512i __DEFAULT_FN_ATTRS
405 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
406   return (__m512i) ((__v32hu) __A - (__v32hu) __B);
407 }
408
409 static __inline__ __m512i __DEFAULT_FN_ATTRS
410 _mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
411   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
412                                              (__v32hi)_mm512_sub_epi16(__A, __B),
413                                              (__v32hi)__W);
414 }
415
416 static __inline__ __m512i __DEFAULT_FN_ATTRS
417 _mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
418   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
419                                              (__v32hi)_mm512_sub_epi16(__A, __B),
420                                              (__v32hi)_mm512_setzero_hi());
421 }
422
423 static __inline__ __m512i __DEFAULT_FN_ATTRS
424 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
425   return (__m512i) ((__v32hu) __A * (__v32hu) __B);
426 }
427
428 static __inline__ __m512i __DEFAULT_FN_ATTRS
429 _mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
430   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
431                                              (__v32hi)_mm512_mullo_epi16(__A, __B),
432                                              (__v32hi)__W);
433 }
434
435 static __inline__ __m512i __DEFAULT_FN_ATTRS
436 _mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
437   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
438                                              (__v32hi)_mm512_mullo_epi16(__A, __B),
439                                              (__v32hi)_mm512_setzero_hi());
440 }
441
442 static __inline__ __m512i __DEFAULT_FN_ATTRS
443 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
444 {
445   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
446               (__v64qi) __W,
447               (__v64qi) __A);
448 }
449
450 static __inline__ __m512i __DEFAULT_FN_ATTRS
451 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
452 {
453   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
454               (__v32hi) __W,
455               (__v32hi) __A);
456 }
457
458 static __inline__ __m512i __DEFAULT_FN_ATTRS
459 _mm512_abs_epi8 (__m512i __A)
460 {
461   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
462               (__v64qi) _mm512_setzero_qi(),
463               (__mmask64) -1);
464 }
465
466 static __inline__ __m512i __DEFAULT_FN_ATTRS
467 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
468 {
469   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
470               (__v64qi) __W,
471               (__mmask64) __U);
472 }
473
474 static __inline__ __m512i __DEFAULT_FN_ATTRS
475 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
476 {
477   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
478               (__v64qi) _mm512_setzero_qi(),
479               (__mmask64) __U);
480 }
481
482 static __inline__ __m512i __DEFAULT_FN_ATTRS
483 _mm512_abs_epi16 (__m512i __A)
484 {
485   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
486               (__v32hi) _mm512_setzero_hi(),
487               (__mmask32) -1);
488 }
489
490 static __inline__ __m512i __DEFAULT_FN_ATTRS
491 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
492 {
493   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
494               (__v32hi) __W,
495               (__mmask32) __U);
496 }
497
498 static __inline__ __m512i __DEFAULT_FN_ATTRS
499 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
500 {
501   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
502               (__v32hi) _mm512_setzero_hi(),
503               (__mmask32) __U);
504 }
505
506 static __inline__ __m512i __DEFAULT_FN_ATTRS
507 _mm512_packs_epi32 (__m512i __A, __m512i __B)
508 {
509   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
510               (__v16si) __B,
511               (__v32hi) _mm512_setzero_hi(),
512               (__mmask32) -1);
513 }
514
515 static __inline__ __m512i __DEFAULT_FN_ATTRS
516 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
517 {
518   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
519               (__v16si) __B,
520               (__v32hi) _mm512_setzero_hi(),
521               __M);
522 }
523
524 static __inline__ __m512i __DEFAULT_FN_ATTRS
525 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
526        __m512i __B)
527 {
528   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
529               (__v16si) __B,
530               (__v32hi) __W,
531               __M);
532 }
533
534 static __inline__ __m512i __DEFAULT_FN_ATTRS
535 _mm512_packs_epi16 (__m512i __A, __m512i __B)
536 {
537   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
538               (__v32hi) __B,
539               (__v64qi) _mm512_setzero_qi(),
540               (__mmask64) -1);
541 }
542
543 static __inline__ __m512i __DEFAULT_FN_ATTRS
544 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
545        __m512i __B)
546 {
547   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
548               (__v32hi) __B,
549               (__v64qi) __W,
550               (__mmask64) __M);
551 }
552
553 static __inline__ __m512i __DEFAULT_FN_ATTRS
554 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
555 {
556   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
557               (__v32hi) __B,
558               (__v64qi) _mm512_setzero_qi(),
559               __M);
560 }
561
562 static __inline__ __m512i __DEFAULT_FN_ATTRS
563 _mm512_packus_epi32 (__m512i __A, __m512i __B)
564 {
565   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
566               (__v16si) __B,
567               (__v32hi) _mm512_setzero_hi(),
568               (__mmask32) -1);
569 }
570
571 static __inline__ __m512i __DEFAULT_FN_ATTRS
572 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
573 {
574   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
575               (__v16si) __B,
576               (__v32hi) _mm512_setzero_hi(),
577               __M);
578 }
579
580 static __inline__ __m512i __DEFAULT_FN_ATTRS
581 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
582         __m512i __B)
583 {
584   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
585               (__v16si) __B,
586               (__v32hi) __W,
587               __M);
588 }
589
590 static __inline__ __m512i __DEFAULT_FN_ATTRS
591 _mm512_packus_epi16 (__m512i __A, __m512i __B)
592 {
593   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
594               (__v32hi) __B,
595               (__v64qi) _mm512_setzero_qi(),
596               (__mmask64) -1);
597 }
598
599 static __inline__ __m512i __DEFAULT_FN_ATTRS
600 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
601         __m512i __B)
602 {
603   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
604               (__v32hi) __B,
605               (__v64qi) __W,
606               (__mmask64) __M);
607 }
608
609 static __inline__ __m512i __DEFAULT_FN_ATTRS
610 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
611 {
612   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
613               (__v32hi) __B,
614               (__v64qi) _mm512_setzero_qi(),
615               (__mmask64) __M);
616 }
617
618 static __inline__ __m512i __DEFAULT_FN_ATTRS
619 _mm512_adds_epi8 (__m512i __A, __m512i __B)
620 {
621   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
622               (__v64qi) __B,
623               (__v64qi) _mm512_setzero_qi(),
624               (__mmask64) -1);
625 }
626
627 static __inline__ __m512i __DEFAULT_FN_ATTRS
628 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
629            __m512i __B)
630 {
631   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
632               (__v64qi) __B,
633               (__v64qi) __W,
634               (__mmask64) __U);
635 }
636
637 static __inline__ __m512i __DEFAULT_FN_ATTRS
638 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
639 {
640   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
641               (__v64qi) __B,
642               (__v64qi) _mm512_setzero_qi(),
643               (__mmask64) __U);
644 }
645
646 static __inline__ __m512i __DEFAULT_FN_ATTRS
647 _mm512_adds_epi16 (__m512i __A, __m512i __B)
648 {
649   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
650               (__v32hi) __B,
651               (__v32hi) _mm512_setzero_hi(),
652               (__mmask32) -1);
653 }
654
655 static __inline__ __m512i __DEFAULT_FN_ATTRS
656 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
657       __m512i __B)
658 {
659   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
660               (__v32hi) __B,
661               (__v32hi) __W,
662               (__mmask32) __U);
663 }
664
665 static __inline__ __m512i __DEFAULT_FN_ATTRS
666 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
667 {
668   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
669               (__v32hi) __B,
670               (__v32hi) _mm512_setzero_hi(),
671               (__mmask32) __U);
672 }
673
674 static __inline__ __m512i __DEFAULT_FN_ATTRS
675 _mm512_adds_epu8 (__m512i __A, __m512i __B)
676 {
677   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
678               (__v64qi) __B,
679               (__v64qi) _mm512_setzero_qi(),
680               (__mmask64) -1);
681 }
682
683 static __inline__ __m512i __DEFAULT_FN_ATTRS
684 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
685            __m512i __B)
686 {
687   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
688               (__v64qi) __B,
689               (__v64qi) __W,
690               (__mmask64) __U);
691 }
692
693 static __inline__ __m512i __DEFAULT_FN_ATTRS
694 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
695 {
696   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
697               (__v64qi) __B,
698               (__v64qi) _mm512_setzero_qi(),
699               (__mmask64) __U);
700 }
701
702 static __inline__ __m512i __DEFAULT_FN_ATTRS
703 _mm512_adds_epu16 (__m512i __A, __m512i __B)
704 {
705   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
706               (__v32hi) __B,
707               (__v32hi) _mm512_setzero_hi(),
708               (__mmask32) -1);
709 }
710
711 static __inline__ __m512i __DEFAULT_FN_ATTRS
712 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
713       __m512i __B)
714 {
715   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
716               (__v32hi) __B,
717               (__v32hi) __W,
718               (__mmask32) __U);
719 }
720
721 static __inline__ __m512i __DEFAULT_FN_ATTRS
722 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
723 {
724   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
725               (__v32hi) __B,
726               (__v32hi) _mm512_setzero_hi(),
727               (__mmask32) __U);
728 }
729
730 static __inline__ __m512i __DEFAULT_FN_ATTRS
731 _mm512_avg_epu8 (__m512i __A, __m512i __B)
732 {
733   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
734               (__v64qi) __B,
735               (__v64qi) _mm512_setzero_qi(),
736               (__mmask64) -1);
737 }
738
739 static __inline__ __m512i __DEFAULT_FN_ATTRS
740 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
741           __m512i __B)
742 {
743   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
744               (__v64qi) __B,
745               (__v64qi) __W,
746               (__mmask64) __U);
747 }
748
749 static __inline__ __m512i __DEFAULT_FN_ATTRS
750 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
751 {
752   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
753               (__v64qi) __B,
754               (__v64qi) _mm512_setzero_qi(),
755               (__mmask64) __U);
756 }
757
758 static __inline__ __m512i __DEFAULT_FN_ATTRS
759 _mm512_avg_epu16 (__m512i __A, __m512i __B)
760 {
761   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
762               (__v32hi) __B,
763               (__v32hi) _mm512_setzero_hi(),
764               (__mmask32) -1);
765 }
766
767 static __inline__ __m512i __DEFAULT_FN_ATTRS
768 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
769            __m512i __B)
770 {
771   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
772               (__v32hi) __B,
773               (__v32hi) __W,
774               (__mmask32) __U);
775 }
776
777 static __inline__ __m512i __DEFAULT_FN_ATTRS
778 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
779 {
780   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
781               (__v32hi) __B,
782               (__v32hi) _mm512_setzero_hi(),
783               (__mmask32) __U);
784 }
785
786 static __inline__ __m512i __DEFAULT_FN_ATTRS
787 _mm512_max_epi8 (__m512i __A, __m512i __B)
788 {
789   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
790               (__v64qi) __B,
791               (__v64qi) _mm512_setzero_qi(),
792               (__mmask64) -1);
793 }
794
795 static __inline__ __m512i __DEFAULT_FN_ATTRS
796 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
797 {
798   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
799               (__v64qi) __B,
800               (__v64qi) _mm512_setzero_qi(),
801               (__mmask64) __M);
802 }
803
804 static __inline__ __m512i __DEFAULT_FN_ATTRS
805 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
806           __m512i __B)
807 {
808   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
809               (__v64qi) __B,
810               (__v64qi) __W,
811               (__mmask64) __M);
812 }
813
814 static __inline__ __m512i __DEFAULT_FN_ATTRS
815 _mm512_max_epi16 (__m512i __A, __m512i __B)
816 {
817   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
818               (__v32hi) __B,
819               (__v32hi) _mm512_setzero_hi(),
820               (__mmask32) -1);
821 }
822
823 static __inline__ __m512i __DEFAULT_FN_ATTRS
824 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
825 {
826   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
827               (__v32hi) __B,
828               (__v32hi) _mm512_setzero_hi(),
829               (__mmask32) __M);
830 }
831
832 static __inline__ __m512i __DEFAULT_FN_ATTRS
833 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
834            __m512i __B)
835 {
836   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
837               (__v32hi) __B,
838               (__v32hi) __W,
839               (__mmask32) __M);
840 }
841
842 static __inline__ __m512i __DEFAULT_FN_ATTRS
843 _mm512_max_epu8 (__m512i __A, __m512i __B)
844 {
845   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
846               (__v64qi) __B,
847               (__v64qi) _mm512_setzero_qi(),
848               (__mmask64) -1);
849 }
850
851 static __inline__ __m512i __DEFAULT_FN_ATTRS
852 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
853 {
854   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
855               (__v64qi) __B,
856               (__v64qi) _mm512_setzero_qi(),
857               (__mmask64) __M);
858 }
859
860 static __inline__ __m512i __DEFAULT_FN_ATTRS
861 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
862           __m512i __B)
863 {
864   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
865               (__v64qi) __B,
866               (__v64qi) __W,
867               (__mmask64) __M);
868 }
869
870 static __inline__ __m512i __DEFAULT_FN_ATTRS
871 _mm512_max_epu16 (__m512i __A, __m512i __B)
872 {
873   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
874               (__v32hi) __B,
875               (__v32hi) _mm512_setzero_hi(),
876               (__mmask32) -1);
877 }
878
879 static __inline__ __m512i __DEFAULT_FN_ATTRS
880 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
881 {
882   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
883               (__v32hi) __B,
884               (__v32hi) _mm512_setzero_hi(),
885               (__mmask32) __M);
886 }
887
888 static __inline__ __m512i __DEFAULT_FN_ATTRS
889 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
890            __m512i __B)
891 {
892   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
893               (__v32hi) __B,
894               (__v32hi) __W,
895               (__mmask32) __M);
896 }
897
898 static __inline__ __m512i __DEFAULT_FN_ATTRS
899 _mm512_min_epi8 (__m512i __A, __m512i __B)
900 {
901   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
902               (__v64qi) __B,
903               (__v64qi) _mm512_setzero_qi(),
904               (__mmask64) -1);
905 }
906
907 static __inline__ __m512i __DEFAULT_FN_ATTRS
908 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
909 {
910   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
911               (__v64qi) __B,
912               (__v64qi) _mm512_setzero_qi(),
913               (__mmask64) __M);
914 }
915
916 static __inline__ __m512i __DEFAULT_FN_ATTRS
917 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
918           __m512i __B)
919 {
920   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
921               (__v64qi) __B,
922               (__v64qi) __W,
923               (__mmask64) __M);
924 }
925
926 static __inline__ __m512i __DEFAULT_FN_ATTRS
927 _mm512_min_epi16 (__m512i __A, __m512i __B)
928 {
929   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
930               (__v32hi) __B,
931               (__v32hi) _mm512_setzero_hi(),
932               (__mmask32) -1);
933 }
934
935 static __inline__ __m512i __DEFAULT_FN_ATTRS
936 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
937 {
938   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
939               (__v32hi) __B,
940               (__v32hi) _mm512_setzero_hi(),
941               (__mmask32) __M);
942 }
943
944 static __inline__ __m512i __DEFAULT_FN_ATTRS
945 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
946            __m512i __B)
947 {
948   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
949               (__v32hi) __B,
950               (__v32hi) __W,
951               (__mmask32) __M);
952 }
953
954 static __inline__ __m512i __DEFAULT_FN_ATTRS
955 _mm512_min_epu8 (__m512i __A, __m512i __B)
956 {
957   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
958               (__v64qi) __B,
959               (__v64qi) _mm512_setzero_qi(),
960               (__mmask64) -1);
961 }
962
963 static __inline__ __m512i __DEFAULT_FN_ATTRS
964 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
965 {
966   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
967               (__v64qi) __B,
968               (__v64qi) _mm512_setzero_qi(),
969               (__mmask64) __M);
970 }
971
972 static __inline__ __m512i __DEFAULT_FN_ATTRS
973 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
974           __m512i __B)
975 {
976   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
977               (__v64qi) __B,
978               (__v64qi) __W,
979               (__mmask64) __M);
980 }
981
982 static __inline__ __m512i __DEFAULT_FN_ATTRS
983 _mm512_min_epu16 (__m512i __A, __m512i __B)
984 {
985   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
986               (__v32hi) __B,
987               (__v32hi) _mm512_setzero_hi(),
988               (__mmask32) -1);
989 }
990
991 static __inline__ __m512i __DEFAULT_FN_ATTRS
992 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
993 {
994   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
995               (__v32hi) __B,
996               (__v32hi) _mm512_setzero_hi(),
997               (__mmask32) __M);
998 }
999
1000 static __inline__ __m512i __DEFAULT_FN_ATTRS
1001 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1002            __m512i __B)
1003 {
1004   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1005               (__v32hi) __B,
1006               (__v32hi) __W,
1007               (__mmask32) __M);
1008 }
1009
1010 static __inline__ __m512i __DEFAULT_FN_ATTRS
1011 _mm512_shuffle_epi8(__m512i __A, __m512i __B)
1012 {
1013   return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
1014 }
1015
1016 static __inline__ __m512i __DEFAULT_FN_ATTRS
1017 _mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
1018 {
1019   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1020                                          (__v64qi)_mm512_shuffle_epi8(__A, __B),
1021                                          (__v64qi)__W);
1022 }
1023
1024 static __inline__ __m512i __DEFAULT_FN_ATTRS
1025 _mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
1026 {
1027   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1028                                          (__v64qi)_mm512_shuffle_epi8(__A, __B),
1029                                          (__v64qi)_mm512_setzero_qi());
1030 }
1031
1032 static __inline__ __m512i __DEFAULT_FN_ATTRS
1033 _mm512_subs_epi8 (__m512i __A, __m512i __B)
1034 {
1035   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1036               (__v64qi) __B,
1037               (__v64qi) _mm512_setzero_qi(),
1038               (__mmask64) -1);
1039 }
1040
1041 static __inline__ __m512i __DEFAULT_FN_ATTRS
1042 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1043            __m512i __B)
1044 {
1045   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1046               (__v64qi) __B,
1047               (__v64qi) __W,
1048               (__mmask64) __U);
1049 }
1050
1051 static __inline__ __m512i __DEFAULT_FN_ATTRS
1052 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1053 {
1054   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1055               (__v64qi) __B,
1056               (__v64qi) _mm512_setzero_qi(),
1057               (__mmask64) __U);
1058 }
1059
1060 static __inline__ __m512i __DEFAULT_FN_ATTRS
1061 _mm512_subs_epi16 (__m512i __A, __m512i __B)
1062 {
1063   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1064               (__v32hi) __B,
1065               (__v32hi) _mm512_setzero_hi(),
1066               (__mmask32) -1);
1067 }
1068
1069 static __inline__ __m512i __DEFAULT_FN_ATTRS
1070 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1071       __m512i __B)
1072 {
1073   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1074               (__v32hi) __B,
1075               (__v32hi) __W,
1076               (__mmask32) __U);
1077 }
1078
1079 static __inline__ __m512i __DEFAULT_FN_ATTRS
1080 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1081 {
1082   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1083               (__v32hi) __B,
1084               (__v32hi) _mm512_setzero_hi(),
1085               (__mmask32) __U);
1086 }
1087
1088 static __inline__ __m512i __DEFAULT_FN_ATTRS
1089 _mm512_subs_epu8 (__m512i __A, __m512i __B)
1090 {
1091   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1092               (__v64qi) __B,
1093               (__v64qi) _mm512_setzero_qi(),
1094               (__mmask64) -1);
1095 }
1096
1097 static __inline__ __m512i __DEFAULT_FN_ATTRS
1098 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1099            __m512i __B)
1100 {
1101   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1102               (__v64qi) __B,
1103               (__v64qi) __W,
1104               (__mmask64) __U);
1105 }
1106
1107 static __inline__ __m512i __DEFAULT_FN_ATTRS
1108 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1109 {
1110   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1111               (__v64qi) __B,
1112               (__v64qi) _mm512_setzero_qi(),
1113               (__mmask64) __U);
1114 }
1115
1116 static __inline__ __m512i __DEFAULT_FN_ATTRS
1117 _mm512_subs_epu16 (__m512i __A, __m512i __B)
1118 {
1119   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1120               (__v32hi) __B,
1121               (__v32hi) _mm512_setzero_hi(),
1122               (__mmask32) -1);
1123 }
1124
1125 static __inline__ __m512i __DEFAULT_FN_ATTRS
1126 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1127       __m512i __B)
1128 {
1129   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1130               (__v32hi) __B,
1131               (__v32hi) __W,
1132               (__mmask32) __U);
1133 }
1134
1135 static __inline__ __m512i __DEFAULT_FN_ATTRS
1136 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1137 {
1138   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1139               (__v32hi) __B,
1140               (__v32hi) _mm512_setzero_hi(),
1141               (__mmask32) __U);
1142 }
1143
1144 static __inline__ __m512i __DEFAULT_FN_ATTRS
1145 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1146          __mmask32 __U, __m512i __B)
1147 {
1148   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1149               (__v32hi) __I /* idx */ ,
1150               (__v32hi) __B,
1151               (__mmask32) __U);
1152 }
1153
1154 static __inline__ __m512i __DEFAULT_FN_ATTRS
1155 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1156 {
1157   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1158               (__v32hi) __A,
1159               (__v32hi) __B,
1160               (__mmask32) -1);
1161 }
1162
1163 static __inline__ __m512i __DEFAULT_FN_ATTRS
1164 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1165         __m512i __I, __m512i __B)
1166 {
1167   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1168               (__v32hi) __A,
1169               (__v32hi) __B,
1170               (__mmask32) __U);
1171 }
1172
1173 static __inline__ __m512i __DEFAULT_FN_ATTRS
1174 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1175          __m512i __I, __m512i __B)
1176 {
1177   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1178               /* idx */ ,
1179               (__v32hi) __A,
1180               (__v32hi) __B,
1181               (__mmask32) __U);
1182 }
1183
1184 static __inline__ __m512i __DEFAULT_FN_ATTRS
1185 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
1186 {
1187   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1188                 (__v32hi) __B,
1189                 (__v32hi) _mm512_setzero_hi(),
1190                 (__mmask32) -1);
1191 }
1192
1193 static __inline__ __m512i __DEFAULT_FN_ATTRS
1194 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1195         __m512i __B)
1196 {
1197   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1198                 (__v32hi) __B,
1199                 (__v32hi) __W,
1200                 (__mmask32) __U);
1201 }
1202
1203 static __inline__ __m512i __DEFAULT_FN_ATTRS
1204 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1205 {
1206   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1207                 (__v32hi) __B,
1208                 (__v32hi) _mm512_setzero_hi(),
1209                 (__mmask32) __U);
1210 }
1211
1212 static __inline__ __m512i __DEFAULT_FN_ATTRS
1213 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
1214 {
1215   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1216               (__v32hi) __B,
1217               (__v32hi) _mm512_setzero_hi(),
1218               (__mmask32) -1);
1219 }
1220
1221 static __inline__ __m512i __DEFAULT_FN_ATTRS
1222 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1223        __m512i __B)
1224 {
1225   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1226               (__v32hi) __B,
1227               (__v32hi) __W,
1228               (__mmask32) __U);
1229 }
1230
1231 static __inline__ __m512i __DEFAULT_FN_ATTRS
1232 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1233 {
1234   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1235               (__v32hi) __B,
1236               (__v32hi) _mm512_setzero_hi(),
1237               (__mmask32) __U);
1238 }
1239
1240 static __inline__ __m512i __DEFAULT_FN_ATTRS
1241 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
1242 {
1243   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1244                (__v32hi) __B,
1245                (__v32hi) _mm512_setzero_hi(),
1246                (__mmask32) -1);
1247 }
1248
1249 static __inline__ __m512i __DEFAULT_FN_ATTRS
1250 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1251        __m512i __B)
1252 {
1253   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1254                (__v32hi) __B,
1255                (__v32hi) __W,
1256                (__mmask32) __U);
1257 }
1258
1259 static __inline__ __m512i __DEFAULT_FN_ATTRS
1260 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1261 {
1262   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1263                (__v32hi) __B,
1264                (__v32hi) _mm512_setzero_hi(),
1265                (__mmask32) __U);
1266 }
1267
1268 static __inline__ __m512i __DEFAULT_FN_ATTRS
1269 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
1270   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1271                  (__v64qi) __Y,
1272                  (__v32hi) _mm512_setzero_hi(),
1273                  (__mmask32) -1);
1274 }
1275
1276 static __inline__ __m512i __DEFAULT_FN_ATTRS
1277 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1278          __m512i __Y) {
1279   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1280                  (__v64qi) __Y,
1281                  (__v32hi) __W,
1282                  (__mmask32) __U);
1283 }
1284
1285 static __inline__ __m512i __DEFAULT_FN_ATTRS
1286 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
1287   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1288                  (__v64qi) __Y,
1289                  (__v32hi) _mm512_setzero_hi(),
1290                  (__mmask32) __U);
1291 }
1292
1293 static __inline__ __m512i __DEFAULT_FN_ATTRS
1294 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
1295   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1296                (__v32hi) __B,
1297                (__v16si) _mm512_setzero_si512(),
1298                (__mmask16) -1);
1299 }
1300
1301 static __inline__ __m512i __DEFAULT_FN_ATTRS
1302 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1303       __m512i __B) {
1304   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1305                (__v32hi) __B,
1306                (__v16si) __W,
1307                (__mmask16) __U);
1308 }
1309
1310 static __inline__ __m512i __DEFAULT_FN_ATTRS
1311 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
1312   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1313                (__v32hi) __B,
1314                (__v16si) _mm512_setzero_si512(),
1315                (__mmask16) __U);
1316 }
1317
1318 static __inline__ __m256i __DEFAULT_FN_ATTRS
1319 _mm512_cvtsepi16_epi8 (__m512i __A) {
1320   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1321                (__v32qi)_mm256_setzero_si256(),
1322                (__mmask32) -1);
1323 }
1324
1325 static __inline__ __m256i __DEFAULT_FN_ATTRS
1326 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1327   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1328                (__v32qi)__O,
1329                __M);
1330 }
1331
1332 static __inline__ __m256i __DEFAULT_FN_ATTRS
1333 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1334   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1335                (__v32qi) _mm256_setzero_si256(),
1336                __M);
1337 }
1338
1339 static __inline__ __m256i __DEFAULT_FN_ATTRS
1340 _mm512_cvtusepi16_epi8 (__m512i __A) {
1341   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1342                 (__v32qi) _mm256_setzero_si256(),
1343                 (__mmask32) -1);
1344 }
1345
1346 static __inline__ __m256i __DEFAULT_FN_ATTRS
1347 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1348   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1349                 (__v32qi) __O,
1350                 __M);
1351 }
1352
1353 static __inline__ __m256i __DEFAULT_FN_ATTRS
1354 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1355   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1356                 (__v32qi) _mm256_setzero_si256(),
1357                 __M);
1358 }
1359
1360 static __inline__ __m256i __DEFAULT_FN_ATTRS
1361 _mm512_cvtepi16_epi8 (__m512i __A) {
1362   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1363               (__v32qi) _mm256_setzero_si256(),
1364               (__mmask32) -1);
1365 }
1366
1367 static __inline__ __m256i __DEFAULT_FN_ATTRS
1368 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1369   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1370               (__v32qi) __O,
1371               __M);
1372 }
1373
1374 static __inline__ __m256i __DEFAULT_FN_ATTRS
1375 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1376   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1377               (__v32qi) _mm256_setzero_si256(),
1378               __M);
1379 }
1380
1381 static __inline__ void __DEFAULT_FN_ATTRS
1382 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1383 {
1384   __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1385 }
1386
1387 static __inline__ void __DEFAULT_FN_ATTRS
1388 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1389 {
1390   __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1391 }
1392
1393 static __inline__ void __DEFAULT_FN_ATTRS
1394 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1395 {
1396   __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1397 }
1398
1399 static __inline__ __m512i __DEFAULT_FN_ATTRS
1400 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1401   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1402                                           8,  64+8,   9, 64+9,
1403                                           10, 64+10, 11, 64+11,
1404                                           12, 64+12, 13, 64+13,
1405                                           14, 64+14, 15, 64+15,
1406                                           24, 64+24, 25, 64+25,
1407                                           26, 64+26, 27, 64+27,
1408                                           28, 64+28, 29, 64+29,
1409                                           30, 64+30, 31, 64+31,
1410                                           40, 64+40, 41, 64+41,
1411                                           42, 64+42, 43, 64+43,
1412                                           44, 64+44, 45, 64+45,
1413                                           46, 64+46, 47, 64+47,
1414                                           56, 64+56, 57, 64+57,
1415                                           58, 64+58, 59, 64+59,
1416                                           60, 64+60, 61, 64+61,
1417                                           62, 64+62, 63, 64+63);
1418 }
1419
1420 static __inline__ __m512i __DEFAULT_FN_ATTRS
1421 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1422   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1423                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1424                                         (__v64qi)__W);
1425 }
1426
1427 static __inline__ __m512i __DEFAULT_FN_ATTRS
1428 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1429   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1430                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1431                                         (__v64qi)_mm512_setzero_qi());
1432 }
1433
1434 static __inline__ __m512i __DEFAULT_FN_ATTRS
1435 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1436   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1437                                           4,  32+4,   5, 32+5,
1438                                           6,  32+6,   7, 32+7,
1439                                           12, 32+12, 13, 32+13,
1440                                           14, 32+14, 15, 32+15,
1441                                           20, 32+20, 21, 32+21,
1442                                           22, 32+22, 23, 32+23,
1443                                           28, 32+28, 29, 32+29,
1444                                           30, 32+30, 31, 32+31);
1445 }
1446
1447 static __inline__ __m512i __DEFAULT_FN_ATTRS
1448 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1449   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1450                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1451                                        (__v32hi)__W);
1452 }
1453
1454 static __inline__ __m512i __DEFAULT_FN_ATTRS
1455 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1456   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1457                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1458                                        (__v32hi)_mm512_setzero_hi());
1459 }
1460
1461 static __inline__ __m512i __DEFAULT_FN_ATTRS
1462 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1463   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1464                                           0,  64+0,   1, 64+1,
1465                                           2,  64+2,   3, 64+3,
1466                                           4,  64+4,   5, 64+5,
1467                                           6,  64+6,   7, 64+7,
1468                                           16, 64+16, 17, 64+17,
1469                                           18, 64+18, 19, 64+19,
1470                                           20, 64+20, 21, 64+21,
1471                                           22, 64+22, 23, 64+23,
1472                                           32, 64+32, 33, 64+33,
1473                                           34, 64+34, 35, 64+35,
1474                                           36, 64+36, 37, 64+37,
1475                                           38, 64+38, 39, 64+39,
1476                                           48, 64+48, 49, 64+49,
1477                                           50, 64+50, 51, 64+51,
1478                                           52, 64+52, 53, 64+53,
1479                                           54, 64+54, 55, 64+55);
1480 }
1481
1482 static __inline__ __m512i __DEFAULT_FN_ATTRS
1483 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1484   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1485                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1486                                         (__v64qi)__W);
1487 }
1488
1489 static __inline__ __m512i __DEFAULT_FN_ATTRS
1490 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1491   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1492                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1493                                         (__v64qi)_mm512_setzero_qi());
1494 }
1495
1496 static __inline__ __m512i __DEFAULT_FN_ATTRS
1497 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1498   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1499                                           0,  32+0,   1, 32+1,
1500                                           2,  32+2,   3, 32+3,
1501                                           8,  32+8,   9, 32+9,
1502                                           10, 32+10, 11, 32+11,
1503                                           16, 32+16, 17, 32+17,
1504                                           18, 32+18, 19, 32+19,
1505                                           24, 32+24, 25, 32+25,
1506                                           26, 32+26, 27, 32+27);
1507 }
1508
1509 static __inline__ __m512i __DEFAULT_FN_ATTRS
1510 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1511   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1512                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1513                                        (__v32hi)__W);
1514 }
1515
1516 static __inline__ __m512i __DEFAULT_FN_ATTRS
1517 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1518   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1519                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1520                                        (__v32hi)_mm512_setzero_hi());
1521 }
1522
1523 static __inline__ __m512i __DEFAULT_FN_ATTRS
1524 _mm512_cvtepi8_epi16(__m256i __A)
1525 {
1526   /* This function always performs a signed extension, but __v32qi is a char
1527      which may be signed or unsigned, so use __v32qs. */
1528   return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
1529 }
1530
1531 static __inline__ __m512i __DEFAULT_FN_ATTRS
1532 _mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1533 {
1534   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1535                                              (__v32hi)_mm512_cvtepi8_epi16(__A),
1536                                              (__v32hi)__W);
1537 }
1538
1539 static __inline__ __m512i __DEFAULT_FN_ATTRS
1540 _mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1541 {
1542   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1543                                              (__v32hi)_mm512_cvtepi8_epi16(__A),
1544                                              (__v32hi)_mm512_setzero_hi());
1545 }
1546
1547 static __inline__ __m512i __DEFAULT_FN_ATTRS
1548 _mm512_cvtepu8_epi16(__m256i __A)
1549 {
1550   return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
1551 }
1552
1553 static __inline__ __m512i __DEFAULT_FN_ATTRS
1554 _mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1555 {
1556   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1557                                              (__v32hi)_mm512_cvtepu8_epi16(__A),
1558                                              (__v32hi)__W);
1559 }
1560
1561 static __inline__ __m512i __DEFAULT_FN_ATTRS
1562 _mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1563 {
1564   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1565                                              (__v32hi)_mm512_cvtepu8_epi16(__A),
1566                                              (__v32hi)_mm512_setzero_hi());
1567 }
1568
1569
1570 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1571   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1572                                          (__v64qi)(__m512i)(b), (int)(p), \
1573                                          (__mmask64)-1); })
1574
1575 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1576   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1577                                          (__v64qi)(__m512i)(b), (int)(p), \
1578                                          (__mmask64)(m)); })
1579
1580 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1581   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1582                                           (__v64qi)(__m512i)(b), (int)(p), \
1583                                           (__mmask64)-1); })
1584
1585 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1586   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1587                                           (__v64qi)(__m512i)(b), (int)(p), \
1588                                           (__mmask64)(m)); })
1589
1590 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1591   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1592                                          (__v32hi)(__m512i)(b), (int)(p), \
1593                                          (__mmask32)-1); })
1594
1595 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1596   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1597                                          (__v32hi)(__m512i)(b), (int)(p), \
1598                                          (__mmask32)(m)); })
1599
1600 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1601   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1602                                           (__v32hi)(__m512i)(b), (int)(p), \
1603                                           (__mmask32)-1); })
1604
1605 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1606   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1607                                           (__v32hi)(__m512i)(b), (int)(p), \
1608                                           (__mmask32)(m)); })
1609
1610 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
1611   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1612                                    (__v32hi)_mm512_undefined_epi32(), \
1613                                    0, 1, 2, 3, \
1614                                    4  + (((imm) >> 0) & 0x3), \
1615                                    4  + (((imm) >> 2) & 0x3), \
1616                                    4  + (((imm) >> 4) & 0x3), \
1617                                    4  + (((imm) >> 6) & 0x3), \
1618                                    8, 9, 10, 11, \
1619                                    12 + (((imm) >> 0) & 0x3), \
1620                                    12 + (((imm) >> 2) & 0x3), \
1621                                    12 + (((imm) >> 4) & 0x3), \
1622                                    12 + (((imm) >> 6) & 0x3), \
1623                                    16, 17, 18, 19, \
1624                                    20 + (((imm) >> 0) & 0x3), \
1625                                    20 + (((imm) >> 2) & 0x3), \
1626                                    20 + (((imm) >> 4) & 0x3), \
1627                                    20 + (((imm) >> 6) & 0x3), \
1628                                    24, 25, 26, 27, \
1629                                    28 + (((imm) >> 0) & 0x3), \
1630                                    28 + (((imm) >> 2) & 0x3), \
1631                                    28 + (((imm) >> 4) & 0x3), \
1632                                    28 + (((imm) >> 6) & 0x3)); })
1633
1634 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1635   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1636                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1637                                                                       (imm)), \
1638                                       (__v32hi)(__m512i)(W)); })
1639
1640 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1641   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1642                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1643                                                                       (imm)), \
1644                                       (__v32hi)_mm512_setzero_hi()); })
1645
1646 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
1647   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
1648                                    (__v32hi)_mm512_undefined_epi32(), \
1649                                    0 + (((imm) >> 0) & 0x3), \
1650                                    0 + (((imm) >> 2) & 0x3), \
1651                                    0 + (((imm) >> 4) & 0x3), \
1652                                    0 + (((imm) >> 6) & 0x3), \
1653                                    4, 5, 6, 7, \
1654                                    8 + (((imm) >> 0) & 0x3), \
1655                                    8 + (((imm) >> 2) & 0x3), \
1656                                    8 + (((imm) >> 4) & 0x3), \
1657                                    8 + (((imm) >> 6) & 0x3), \
1658                                    12, 13, 14, 15, \
1659                                    16 + (((imm) >> 0) & 0x3), \
1660                                    16 + (((imm) >> 2) & 0x3), \
1661                                    16 + (((imm) >> 4) & 0x3), \
1662                                    16 + (((imm) >> 6) & 0x3), \
1663                                    20, 21, 22, 23, \
1664                                    24 + (((imm) >> 0) & 0x3), \
1665                                    24 + (((imm) >> 2) & 0x3), \
1666                                    24 + (((imm) >> 4) & 0x3), \
1667                                    24 + (((imm) >> 6) & 0x3), \
1668                                    28, 29, 30, 31); })
1669
1670
1671 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1672   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1673                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1674                                                                       (imm)), \
1675                                       (__v32hi)(__m512i)(W)); })
1676
1677
1678 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1679   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1680                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1681                                                                       (imm)), \
1682                                       (__v32hi)_mm512_setzero_hi()); })
1683
1684 static __inline__ __m512i __DEFAULT_FN_ATTRS
1685 _mm512_sllv_epi16(__m512i __A, __m512i __B)
1686 {
1687   return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
1688 }
1689
1690 static __inline__ __m512i __DEFAULT_FN_ATTRS
1691 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1692 {
1693   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1694                                            (__v32hi)_mm512_sllv_epi16(__A, __B),
1695                                            (__v32hi)__W);
1696 }
1697
1698 static __inline__ __m512i __DEFAULT_FN_ATTRS
1699 _mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1700 {
1701   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1702                                            (__v32hi)_mm512_sllv_epi16(__A, __B),
1703                                            (__v32hi)_mm512_setzero_hi());
1704 }
1705
1706 static __inline__ __m512i __DEFAULT_FN_ATTRS
1707 _mm512_sll_epi16(__m512i __A, __m128i __B)
1708 {
1709   return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
1710 }
1711
1712 static __inline__ __m512i __DEFAULT_FN_ATTRS
1713 _mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1714 {
1715   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1716                                           (__v32hi)_mm512_sll_epi16(__A, __B),
1717                                           (__v32hi)__W);
1718 }
1719
1720 static __inline__ __m512i __DEFAULT_FN_ATTRS
1721 _mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1722 {
1723   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1724                                           (__v32hi)_mm512_sll_epi16(__A, __B),
1725                                           (__v32hi)_mm512_setzero_hi());
1726 }
1727
1728 static __inline__ __m512i __DEFAULT_FN_ATTRS
1729 _mm512_slli_epi16(__m512i __A, int __B)
1730 {
1731   return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B);
1732 }
1733
1734 static __inline__ __m512i __DEFAULT_FN_ATTRS
1735 _mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1736 {
1737   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1738                                          (__v32hi)_mm512_slli_epi16(__A, __B),
1739                                          (__v32hi)__W);
1740 }
1741
1742 static __inline__ __m512i __DEFAULT_FN_ATTRS
1743 _mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B)
1744 {
1745   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1746                                          (__v32hi)_mm512_slli_epi16(__A, __B),
1747                                          (__v32hi)_mm512_setzero_hi());
1748 }
1749
1750 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
1751   (__m512i)__builtin_shufflevector(                                          \
1752        (__v64qi)_mm512_setzero_si512(),                                      \
1753        (__v64qi)(__m512i)(a),                                                \
1754        ((char)(imm)&0xF0) ?  0 : ((char)(imm)>0x0 ? 16 :  64) - (char)(imm), \
1755        ((char)(imm)&0xF0) ?  1 : ((char)(imm)>0x1 ? 17 :  65) - (char)(imm), \
1756        ((char)(imm)&0xF0) ?  2 : ((char)(imm)>0x2 ? 18 :  66) - (char)(imm), \
1757        ((char)(imm)&0xF0) ?  3 : ((char)(imm)>0x3 ? 19 :  67) - (char)(imm), \
1758        ((char)(imm)&0xF0) ?  4 : ((char)(imm)>0x4 ? 20 :  68) - (char)(imm), \
1759        ((char)(imm)&0xF0) ?  5 : ((char)(imm)>0x5 ? 21 :  69) - (char)(imm), \
1760        ((char)(imm)&0xF0) ?  6 : ((char)(imm)>0x6 ? 22 :  70) - (char)(imm), \
1761        ((char)(imm)&0xF0) ?  7 : ((char)(imm)>0x7 ? 23 :  71) - (char)(imm), \
1762        ((char)(imm)&0xF0) ?  8 : ((char)(imm)>0x8 ? 24 :  72) - (char)(imm), \
1763        ((char)(imm)&0xF0) ?  9 : ((char)(imm)>0x9 ? 25 :  73) - (char)(imm), \
1764        ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 :  74) - (char)(imm), \
1765        ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 :  75) - (char)(imm), \
1766        ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 :  76) - (char)(imm), \
1767        ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 :  77) - (char)(imm), \
1768        ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 :  78) - (char)(imm), \
1769        ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 :  79) - (char)(imm), \
1770        ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 :  80) - (char)(imm), \
1771        ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 :  81) - (char)(imm), \
1772        ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 :  82) - (char)(imm), \
1773        ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 :  83) - (char)(imm), \
1774        ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 :  84) - (char)(imm), \
1775        ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 :  85) - (char)(imm), \
1776        ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 :  86) - (char)(imm), \
1777        ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 :  87) - (char)(imm), \
1778        ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 :  88) - (char)(imm), \
1779        ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 :  89) - (char)(imm), \
1780        ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 :  90) - (char)(imm), \
1781        ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 :  91) - (char)(imm), \
1782        ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 :  92) - (char)(imm), \
1783        ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 :  93) - (char)(imm), \
1784        ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 :  94) - (char)(imm), \
1785        ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 :  95) - (char)(imm), \
1786        ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 :  96) - (char)(imm), \
1787        ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 :  97) - (char)(imm), \
1788        ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 :  98) - (char)(imm), \
1789        ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 :  99) - (char)(imm), \
1790        ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
1791        ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
1792        ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
1793        ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
1794        ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
1795        ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
1796        ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
1797        ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
1798        ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
1799        ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
1800        ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
1801        ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
1802        ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
1803        ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
1804        ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
1805        ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
1806        ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
1807        ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
1808        ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
1809        ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
1810        ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
1811        ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
1812        ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
1813        ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
1814        ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
1815        ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
1816        ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
1817        ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
1818
1819 static __inline__ __m512i __DEFAULT_FN_ATTRS
1820 _mm512_srlv_epi16(__m512i __A, __m512i __B)
1821 {
1822   return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
1823 }
1824
1825 static __inline__ __m512i __DEFAULT_FN_ATTRS
1826 _mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1827 {
1828   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1829                                            (__v32hi)_mm512_srlv_epi16(__A, __B),
1830                                            (__v32hi)__W);
1831 }
1832
1833 static __inline__ __m512i __DEFAULT_FN_ATTRS
1834 _mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1835 {
1836   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1837                                            (__v32hi)_mm512_srlv_epi16(__A, __B),
1838                                            (__v32hi)_mm512_setzero_hi());
1839 }
1840
1841 static __inline__ __m512i __DEFAULT_FN_ATTRS
1842 _mm512_srav_epi16(__m512i __A, __m512i __B)
1843 {
1844   return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
1845 }
1846
1847 static __inline__ __m512i __DEFAULT_FN_ATTRS
1848 _mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1849 {
1850   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1851                                            (__v32hi)_mm512_srav_epi16(__A, __B),
1852                                            (__v32hi)__W);
1853 }
1854
1855 static __inline__ __m512i __DEFAULT_FN_ATTRS
1856 _mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1857 {
1858   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1859                                            (__v32hi)_mm512_srav_epi16(__A, __B),
1860                                            (__v32hi)_mm512_setzero_hi());
1861 }
1862
1863 static __inline__ __m512i __DEFAULT_FN_ATTRS
1864 _mm512_sra_epi16(__m512i __A, __m128i __B)
1865 {
1866   return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
1867 }
1868
1869 static __inline__ __m512i __DEFAULT_FN_ATTRS
1870 _mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1871 {
1872   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1873                                           (__v32hi)_mm512_sra_epi16(__A, __B),
1874                                           (__v32hi)__W);
1875 }
1876
1877 static __inline__ __m512i __DEFAULT_FN_ATTRS
1878 _mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1879 {
1880   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1881                                           (__v32hi)_mm512_sra_epi16(__A, __B),
1882                                           (__v32hi)_mm512_setzero_hi());
1883 }
1884
1885 static __inline__ __m512i __DEFAULT_FN_ATTRS
1886 _mm512_srai_epi16(__m512i __A, int __B)
1887 {
1888   return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B);
1889 }
1890
1891 static __inline__ __m512i __DEFAULT_FN_ATTRS
1892 _mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1893 {
1894   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1895                                          (__v32hi)_mm512_srai_epi16(__A, __B),
1896                                          (__v32hi)__W);
1897 }
1898
1899 static __inline__ __m512i __DEFAULT_FN_ATTRS
1900 _mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B)
1901 {
1902   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1903                                          (__v32hi)_mm512_srai_epi16(__A, __B),
1904                                          (__v32hi)_mm512_setzero_hi());
1905 }
1906
1907 static __inline__ __m512i __DEFAULT_FN_ATTRS
1908 _mm512_srl_epi16(__m512i __A, __m128i __B)
1909 {
1910   return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
1911 }
1912
1913 static __inline__ __m512i __DEFAULT_FN_ATTRS
1914 _mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1915 {
1916   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1917                                           (__v32hi)_mm512_srl_epi16(__A, __B),
1918                                           (__v32hi)__W);
1919 }
1920
1921 static __inline__ __m512i __DEFAULT_FN_ATTRS
1922 _mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1923 {
1924   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1925                                           (__v32hi)_mm512_srl_epi16(__A, __B),
1926                                           (__v32hi)_mm512_setzero_hi());
1927 }
1928
1929 static __inline__ __m512i __DEFAULT_FN_ATTRS
1930 _mm512_srli_epi16(__m512i __A, int __B)
1931 {
1932   return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B);
1933 }
1934
1935 static __inline__ __m512i __DEFAULT_FN_ATTRS
1936 _mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
1937 {
1938   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1939                                          (__v32hi)_mm512_srli_epi16(__A, __B),
1940                                          (__v32hi)__W);
1941 }
1942
1943 static __inline__ __m512i __DEFAULT_FN_ATTRS
1944 _mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
1945 {
1946   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1947                                          (__v32hi)_mm512_srli_epi16(__A, __B),
1948                                          (__v32hi)_mm512_setzero_hi());
1949 }
1950
1951 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
1952   (__m512i)__builtin_shufflevector(                     \
1953       (__v64qi)(__m512i)(a),                      \
1954       (__v64qi)_mm512_setzero_si512(),            \
1955       ((char)(imm)&0xF0) ?  64 : (char)(imm) + ((char)(imm)>0xF ?  48 : 0),  \
1956       ((char)(imm)&0xF0) ?  65 : (char)(imm) + ((char)(imm)>0xE ?  49 : 1),  \
1957       ((char)(imm)&0xF0) ?  66 : (char)(imm) + ((char)(imm)>0xD ?  50 : 2),  \
1958       ((char)(imm)&0xF0) ?  67 : (char)(imm) + ((char)(imm)>0xC ?  51 : 3),  \
1959       ((char)(imm)&0xF0) ?  68 : (char)(imm) + ((char)(imm)>0xB ?  52 : 4),  \
1960       ((char)(imm)&0xF0) ?  69 : (char)(imm) + ((char)(imm)>0xA ?  53 : 5),  \
1961       ((char)(imm)&0xF0) ?  70 : (char)(imm) + ((char)(imm)>0x9 ?  54 : 6),  \
1962       ((char)(imm)&0xF0) ?  71 : (char)(imm) + ((char)(imm)>0x8 ?  55 : 7),  \
1963       ((char)(imm)&0xF0) ?  72 : (char)(imm) + ((char)(imm)>0x7 ?  56 : 8),  \
1964       ((char)(imm)&0xF0) ?  73 : (char)(imm) + ((char)(imm)>0x6 ?  57 : 9),  \
1965       ((char)(imm)&0xF0) ?  74 : (char)(imm) + ((char)(imm)>0x5 ?  58 : 10), \
1966       ((char)(imm)&0xF0) ?  75 : (char)(imm) + ((char)(imm)>0x4 ?  59 : 11), \
1967       ((char)(imm)&0xF0) ?  76 : (char)(imm) + ((char)(imm)>0x3 ?  60 : 12), \
1968       ((char)(imm)&0xF0) ?  77 : (char)(imm) + ((char)(imm)>0x2 ?  61 : 13), \
1969       ((char)(imm)&0xF0) ?  78 : (char)(imm) + ((char)(imm)>0x1 ?  62 : 14), \
1970       ((char)(imm)&0xF0) ?  79 : (char)(imm) + ((char)(imm)>0x0 ?  63 : 15), \
1971       ((char)(imm)&0xF0) ?  80 : (char)(imm) + ((char)(imm)>0xF ?  64 : 16), \
1972       ((char)(imm)&0xF0) ?  81 : (char)(imm) + ((char)(imm)>0xE ?  65 : 17), \
1973       ((char)(imm)&0xF0) ?  82 : (char)(imm) + ((char)(imm)>0xD ?  66 : 18), \
1974       ((char)(imm)&0xF0) ?  83 : (char)(imm) + ((char)(imm)>0xC ?  67 : 19), \
1975       ((char)(imm)&0xF0) ?  84 : (char)(imm) + ((char)(imm)>0xB ?  68 : 20), \
1976       ((char)(imm)&0xF0) ?  85 : (char)(imm) + ((char)(imm)>0xA ?  69 : 21), \
1977       ((char)(imm)&0xF0) ?  86 : (char)(imm) + ((char)(imm)>0x9 ?  70 : 22), \
1978       ((char)(imm)&0xF0) ?  87 : (char)(imm) + ((char)(imm)>0x8 ?  71 : 23), \
1979       ((char)(imm)&0xF0) ?  88 : (char)(imm) + ((char)(imm)>0x7 ?  72 : 24), \
1980       ((char)(imm)&0xF0) ?  89 : (char)(imm) + ((char)(imm)>0x6 ?  73 : 25), \
1981       ((char)(imm)&0xF0) ?  90 : (char)(imm) + ((char)(imm)>0x5 ?  74 : 26), \
1982       ((char)(imm)&0xF0) ?  91 : (char)(imm) + ((char)(imm)>0x4 ?  75 : 27), \
1983       ((char)(imm)&0xF0) ?  92 : (char)(imm) + ((char)(imm)>0x3 ?  76 : 28), \
1984       ((char)(imm)&0xF0) ?  93 : (char)(imm) + ((char)(imm)>0x2 ?  77 : 29), \
1985       ((char)(imm)&0xF0) ?  94 : (char)(imm) + ((char)(imm)>0x1 ?  78 : 30), \
1986       ((char)(imm)&0xF0) ?  95 : (char)(imm) + ((char)(imm)>0x0 ?  79 : 31), \
1987       ((char)(imm)&0xF0) ?  96 : (char)(imm) + ((char)(imm)>0xF ?  80 : 32), \
1988       ((char)(imm)&0xF0) ?  97 : (char)(imm) + ((char)(imm)>0xE ?  81 : 33), \
1989       ((char)(imm)&0xF0) ?  98 : (char)(imm) + ((char)(imm)>0xD ?  82 : 34), \
1990       ((char)(imm)&0xF0) ?  99 : (char)(imm) + ((char)(imm)>0xC ?  83 : 35), \
1991       ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ?  84 : 36), \
1992       ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ?  85 : 37), \
1993       ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ?  86 : 38), \
1994       ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ?  87 : 39), \
1995       ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ?  88 : 40), \
1996       ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ?  89 : 41), \
1997       ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ?  90 : 42), \
1998       ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ?  91 : 43), \
1999       ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ?  92 : 44), \
2000       ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ?  93 : 45), \
2001       ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ?  94 : 46), \
2002       ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ?  95 : 47), \
2003       ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ?  96 : 48), \
2004       ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ?  97 : 49), \
2005       ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ?  98 : 50), \
2006       ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ?  99 : 51), \
2007       ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
2008       ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
2009       ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
2010       ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
2011       ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
2012       ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
2013       ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
2014       ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
2015       ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
2016       ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
2017       ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
2018       ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
2019
2020 static __inline__ __m512i __DEFAULT_FN_ATTRS
2021 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2022 {
2023   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2024                 (__v32hi) __A,
2025                 (__v32hi) __W);
2026 }
2027
2028 static __inline__ __m512i __DEFAULT_FN_ATTRS
2029 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
2030 {
2031   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
2032                 (__v32hi) __A,
2033                 (__v32hi) _mm512_setzero_hi ());
2034 }
2035
2036 static __inline__ __m512i __DEFAULT_FN_ATTRS
2037 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2038 {
2039   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2040                 (__v64qi) __A,
2041                 (__v64qi) __W);
2042 }
2043
2044 static __inline__ __m512i __DEFAULT_FN_ATTRS
2045 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
2046 {
2047   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
2048                 (__v64qi) __A,
2049                 (__v64qi) _mm512_setzero_hi ());
2050 }
2051
2052 static __inline__ __m512i __DEFAULT_FN_ATTRS
2053 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
2054 {
2055   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2056                  (__v64qi) __O,
2057                  __M);
2058 }
2059
2060 static __inline__ __m512i __DEFAULT_FN_ATTRS
2061 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
2062 {
2063   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
2064                  (__v64qi)
2065                  _mm512_setzero_qi(),
2066                  __M);
2067 }
2068
2069 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2070 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
2071 {
2072   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
2073                 (__mmask64) __B);
2074 }
2075
2076 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2077 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
2078 {
2079   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
2080                 (__mmask32) __B);
2081 }
2082
2083 static __inline__ __m512i __DEFAULT_FN_ATTRS
2084 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
2085 {
2086   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2087                  (__v32hi) __W,
2088                  (__mmask32) __U);
2089 }
2090
2091 static __inline__ __m512i __DEFAULT_FN_ATTRS
2092 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
2093 {
2094   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
2095                  (__v32hi)
2096                  _mm512_setzero_hi (),
2097                  (__mmask32) __U);
2098 }
2099
2100 static __inline__ __m512i __DEFAULT_FN_ATTRS
2101 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
2102 {
2103   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2104                  (__v64qi) __W,
2105                  (__mmask64) __U);
2106 }
2107
2108 static __inline__ __m512i __DEFAULT_FN_ATTRS
2109 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
2110 {
2111   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
2112                  (__v64qi)
2113                  _mm512_setzero_hi (),
2114                  (__mmask64) __U);
2115 }
2116 static __inline__ void __DEFAULT_FN_ATTRS
2117 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
2118 {
2119   __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
2120              (__v32hi) __A,
2121              (__mmask32) __U);
2122 }
2123
2124 static __inline__ void __DEFAULT_FN_ATTRS
2125 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
2126 {
2127   __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
2128              (__v64qi) __A,
2129              (__mmask64) __U);
2130 }
2131
2132 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2133 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
2134 {
2135   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2136             (__v64qi) __B,
2137             (__mmask64) -1);
2138 }
2139
2140 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2141 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2142 {
2143   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
2144             (__v64qi) __B, __U);
2145 }
2146
2147 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2148 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
2149 {
2150   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2151             (__v32hi) __B,
2152             (__mmask32) -1);
2153 }
2154
2155 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2156 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2157 {
2158   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
2159             (__v32hi) __B, __U);
2160 }
2161
2162 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2163 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
2164 {
2165   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2166              (__v64qi) __B,
2167              (__mmask64) -1);
2168 }
2169
2170 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2171 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
2172 {
2173   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
2174              (__v64qi) __B, __U);
2175 }
2176
2177 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2178 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
2179 {
2180   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2181              (__v32hi) __B,
2182              (__mmask32) -1);
2183 }
2184
2185 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2186 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
2187 {
2188   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
2189              (__v32hi) __B, __U);
2190 }
2191
2192 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
2193 _mm512_movepi8_mask (__m512i __A)
2194 {
2195   return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
2196 }
2197
2198 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2199 _mm512_movepi16_mask (__m512i __A)
2200 {
2201   return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
2202 }
2203
2204 static __inline__ __m512i __DEFAULT_FN_ATTRS
2205 _mm512_movm_epi8 (__mmask64 __A)
2206 {
2207   return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
2208 }
2209
2210 static __inline__ __m512i __DEFAULT_FN_ATTRS
2211 _mm512_movm_epi16 (__mmask32 __A)
2212 {
2213   return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
2214 }
2215
2216 static __inline__ __m512i __DEFAULT_FN_ATTRS
2217 _mm512_broadcastb_epi8 (__m128i __A)
2218 {
2219   return (__m512i)__builtin_shufflevector((__v16qi) __A,
2220                                           (__v16qi)_mm_undefined_si128(),
2221                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2222                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2223                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2224                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2225 }
2226
2227 static __inline__ __m512i __DEFAULT_FN_ATTRS
2228 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
2229 {
2230   return (__m512i)__builtin_ia32_selectb_512(__M,
2231                                              (__v64qi) _mm512_broadcastb_epi8(__A),
2232                                              (__v64qi) __O);
2233 }
2234
2235 static __inline__ __m512i __DEFAULT_FN_ATTRS
2236 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
2237 {
2238   return (__m512i)__builtin_ia32_selectb_512(__M,
2239                                              (__v64qi) _mm512_broadcastb_epi8(__A),
2240                                              (__v64qi) _mm512_setzero_si512());
2241 }
2242
2243 static __inline__ __m512i __DEFAULT_FN_ATTRS
2244 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
2245 {
2246   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2247                  (__v32hi) __O,
2248                  __M);
2249 }
2250
2251 static __inline__ __m512i __DEFAULT_FN_ATTRS
2252 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
2253 {
2254   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
2255                  (__v32hi) _mm512_setzero_hi(),
2256                  __M);
2257 }
2258
2259 static __inline__ __m512i __DEFAULT_FN_ATTRS
2260 _mm512_broadcastw_epi16 (__m128i __A)
2261 {
2262   return (__m512i)__builtin_shufflevector((__v8hi) __A,
2263                                           (__v8hi)_mm_undefined_si128(),
2264                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2265                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
2266 }
2267
2268 static __inline__ __m512i __DEFAULT_FN_ATTRS
2269 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
2270 {
2271   return (__m512i)__builtin_ia32_selectw_512(__M,
2272                                              (__v32hi) _mm512_broadcastw_epi16(__A),
2273                                              (__v32hi) __O);
2274 }
2275
2276 static __inline__ __m512i __DEFAULT_FN_ATTRS
2277 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
2278 {
2279   return (__m512i)__builtin_ia32_selectw_512(__M,
2280                                              (__v32hi) _mm512_broadcastw_epi16(__A),
2281                                              (__v32hi) _mm512_setzero_si512());
2282 }
2283
2284 static __inline__ __m512i __DEFAULT_FN_ATTRS
2285 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
2286 {
2287   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2288                  (__v32hi) __A,
2289                  (__v32hi) _mm512_undefined_epi32 (),
2290                  (__mmask32) -1);
2291 }
2292
2293 static __inline__ __m512i __DEFAULT_FN_ATTRS
2294 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
2295         __m512i __B)
2296 {
2297   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2298                  (__v32hi) __A,
2299                  (__v32hi) _mm512_setzero_hi(),
2300                  (__mmask32) __M);
2301 }
2302
2303 static __inline__ __m512i __DEFAULT_FN_ATTRS
2304 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2305              __m512i __B)
2306 {
2307   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
2308                  (__v32hi) __A,
2309                  (__v32hi) __W,
2310                  (__mmask32) __M);
2311 }
2312
2313 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
2314   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2315                                           (__v64qi)(__m512i)(B), (int)(N), \
2316                                           (__v64qi)_mm512_undefined_pd(), \
2317                                           (__mmask64)-1); })
2318
2319 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
2320   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2321                                           (__v64qi)(__m512i)(B), (int)(N), \
2322                                           (__v64qi)(__m512i)(W), \
2323                                           (__mmask64)(U)); })
2324
2325 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
2326   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
2327                                           (__v64qi)(__m512i)(B), (int)(N), \
2328                                           (__v64qi)_mm512_setzero_si512(), \
2329                                           (__mmask64)(U)); })
2330
2331 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
2332   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2333                                            (__v64qi)(__m512i)(B), (int)(imm), \
2334                                            (__v32hi)_mm512_undefined_epi32(), \
2335                                            (__mmask32)-1); })
2336
2337 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
2338   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2339                                            (__v64qi)(__m512i)(B), (int)(imm), \
2340                                            (__v32hi)(__m512i)(W), \
2341                                            (__mmask32)(U)); })
2342
2343 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
2344   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
2345                                            (__v64qi)(__m512i)(B), (int)(imm), \
2346                                            (__v32hi)_mm512_setzero_hi(), \
2347                                            (__mmask32)(U)); })
2348
2349 static __inline__ __m512i __DEFAULT_FN_ATTRS
2350 _mm512_sad_epu8 (__m512i __A, __m512i __B)
2351 {
2352  return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2353                (__v64qi) __B);
2354 }
2355
2356
2357
2358 #undef __DEFAULT_FN_ATTRS
2359
2360 #endif