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