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