1/*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLBWINTRIN_H
29#define __AVX512VLBWINTRIN_H
30
31/* Define the default attributes for the functions in this file. */
32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw")))
33
34static  __inline __m128i __DEFAULT_FN_ATTRS
35_mm_setzero_hi(void){
36    return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 };
37}
38
39/* Integer compare */
40
41static __inline__ __mmask16 __DEFAULT_FN_ATTRS
42_mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
43  return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
44                                                   (__mmask16)-1);
45}
46
47static __inline__ __mmask16 __DEFAULT_FN_ATTRS
48_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
49  return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
50                                                   __u);
51}
52
53static __inline__ __mmask16 __DEFAULT_FN_ATTRS
54_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
55  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
56                                                 (__mmask16)-1);
57}
58
59static __inline__ __mmask16 __DEFAULT_FN_ATTRS
60_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
61  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
62                                                 __u);
63}
64
65static __inline__ __mmask32 __DEFAULT_FN_ATTRS
66_mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
67  return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
68                                                   (__mmask32)-1);
69}
70
71static __inline__ __mmask32 __DEFAULT_FN_ATTRS
72_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
73  return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
74                                                   __u);
75}
76
77static __inline__ __mmask32 __DEFAULT_FN_ATTRS
78_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
79  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
80                                                 (__mmask32)-1);
81}
82
83static __inline__ __mmask32 __DEFAULT_FN_ATTRS
84_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
85  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
86                                                 __u);
87}
88
89static __inline__ __mmask8 __DEFAULT_FN_ATTRS
90_mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
91  return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
92                                                  (__mmask8)-1);
93}
94
95static __inline__ __mmask8 __DEFAULT_FN_ATTRS
96_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
97  return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
98                                                  __u);
99}
100
101static __inline__ __mmask8 __DEFAULT_FN_ATTRS
102_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
103  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
104                                                (__mmask8)-1);
105}
106
107static __inline__ __mmask8 __DEFAULT_FN_ATTRS
108_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
109  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
110                                                __u);
111}
112
113static __inline__ __mmask16 __DEFAULT_FN_ATTRS
114_mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
115  return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
116                                                   (__mmask16)-1);
117}
118
119static __inline__ __mmask16 __DEFAULT_FN_ATTRS
120_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
121  return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
122                                                   __u);
123}
124
125static __inline__ __mmask16 __DEFAULT_FN_ATTRS
126_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
127  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
128                                                 (__mmask16)-1);
129}
130
131static __inline__ __mmask16 __DEFAULT_FN_ATTRS
132_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
133  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
134                                                 __u);
135}
136
137static __inline__ __mmask16 __DEFAULT_FN_ATTRS
138_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
139  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
140                                                (__mmask16)-1);
141}
142
143static __inline__ __mmask16 __DEFAULT_FN_ATTRS
144_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
145  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
146                                                __u);
147}
148
149static __inline__ __mmask16 __DEFAULT_FN_ATTRS
150_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
151  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
152                                                 (__mmask16)-1);
153}
154
155static __inline__ __mmask16 __DEFAULT_FN_ATTRS
156_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
157  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
158                                                 __u);
159}
160
161static __inline__ __mmask32 __DEFAULT_FN_ATTRS
162_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
163  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
164                                                (__mmask32)-1);
165}
166
167static __inline__ __mmask32 __DEFAULT_FN_ATTRS
168_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
169  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
170                                                __u);
171}
172
173static __inline__ __mmask32 __DEFAULT_FN_ATTRS
174_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
175  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
176                                                 (__mmask32)-1);
177}
178
179static __inline__ __mmask32 __DEFAULT_FN_ATTRS
180_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
181  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
182                                                 __u);
183}
184
185static __inline__ __mmask8 __DEFAULT_FN_ATTRS
186_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
187  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
188                                               (__mmask8)-1);
189}
190
191static __inline__ __mmask8 __DEFAULT_FN_ATTRS
192_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
193  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
194                                               __u);
195}
196
197static __inline__ __mmask8 __DEFAULT_FN_ATTRS
198_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
199  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
200                                                (__mmask8)-1);
201}
202
203static __inline__ __mmask8 __DEFAULT_FN_ATTRS
204_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
205  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
206                                                __u);
207}
208
209static __inline__ __mmask16 __DEFAULT_FN_ATTRS
210_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
211  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
212                                                (__mmask16)-1);
213}
214
215static __inline__ __mmask16 __DEFAULT_FN_ATTRS
216_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
217  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
218                                                __u);
219}
220
221static __inline__ __mmask16 __DEFAULT_FN_ATTRS
222_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
223  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
224                                                 (__mmask16)-1);
225}
226
227static __inline__ __mmask16 __DEFAULT_FN_ATTRS
228_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
229  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
230                                                 __u);
231}
232
233static __inline__ __mmask16 __DEFAULT_FN_ATTRS
234_mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
235  return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
236                                                   (__mmask16)-1);
237}
238
239static __inline__ __mmask16 __DEFAULT_FN_ATTRS
240_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
241  return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
242                                                   __u);
243}
244
245static __inline__ __mmask16 __DEFAULT_FN_ATTRS
246_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
247  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
248                                                 (__mmask16)-1);
249}
250
251static __inline__ __mmask16 __DEFAULT_FN_ATTRS
252_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
253  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
254                                                 __u);
255}
256
257static __inline__ __mmask32 __DEFAULT_FN_ATTRS
258_mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
259  return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
260                                                   (__mmask32)-1);
261}
262
263static __inline__ __mmask32 __DEFAULT_FN_ATTRS
264_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
265  return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
266                                                   __u);
267}
268
269static __inline__ __mmask32 __DEFAULT_FN_ATTRS
270_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
271  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
272                                                 (__mmask32)-1);
273}
274
275static __inline__ __mmask32 __DEFAULT_FN_ATTRS
276_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
277  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
278                                                 __u);
279}
280
281static __inline__ __mmask8 __DEFAULT_FN_ATTRS
282_mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
283  return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
284                                                  (__mmask8)-1);
285}
286
287static __inline__ __mmask8 __DEFAULT_FN_ATTRS
288_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
289  return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
290                                                  __u);
291}
292
293static __inline__ __mmask8 __DEFAULT_FN_ATTRS
294_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
295  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
296                                                (__mmask8)-1);
297}
298
299static __inline__ __mmask8 __DEFAULT_FN_ATTRS
300_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
301  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
302                                                __u);
303}
304
305static __inline__ __mmask16 __DEFAULT_FN_ATTRS
306_mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
307  return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
308                                                   (__mmask16)-1);
309}
310
311static __inline__ __mmask16 __DEFAULT_FN_ATTRS
312_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
313  return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
314                                                   __u);
315}
316
317static __inline__ __mmask16 __DEFAULT_FN_ATTRS
318_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
319  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
320                                                 (__mmask16)-1);
321}
322
323static __inline__ __mmask16 __DEFAULT_FN_ATTRS
324_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
325  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
326                                                 __u);
327}
328
329static __inline__ __mmask16 __DEFAULT_FN_ATTRS
330_mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
331  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
332                                                (__mmask16)-1);
333}
334
335static __inline__ __mmask16 __DEFAULT_FN_ATTRS
336_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
337  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
338                                                __u);
339}
340
341static __inline__ __mmask16 __DEFAULT_FN_ATTRS
342_mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
343  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
344                                                 (__mmask16)-1);
345}
346
347static __inline__ __mmask16 __DEFAULT_FN_ATTRS
348_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
349  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
350                                                 __u);
351}
352
353static __inline__ __mmask32 __DEFAULT_FN_ATTRS
354_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
355  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
356                                                (__mmask32)-1);
357}
358
359static __inline__ __mmask32 __DEFAULT_FN_ATTRS
360_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
361  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
362                                                __u);
363}
364
365static __inline__ __mmask32 __DEFAULT_FN_ATTRS
366_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
367  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
368                                                 (__mmask32)-1);
369}
370
371static __inline__ __mmask32 __DEFAULT_FN_ATTRS
372_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
373  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
374                                                 __u);
375}
376
377static __inline__ __mmask8 __DEFAULT_FN_ATTRS
378_mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
379  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
380                                               (__mmask8)-1);
381}
382
383static __inline__ __mmask8 __DEFAULT_FN_ATTRS
384_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
385  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
386                                               __u);
387}
388
389static __inline__ __mmask8 __DEFAULT_FN_ATTRS
390_mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
391  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
392                                                (__mmask8)-1);
393}
394
395static __inline__ __mmask8 __DEFAULT_FN_ATTRS
396_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
397  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
398                                                __u);
399}
400
401static __inline__ __mmask16 __DEFAULT_FN_ATTRS
402_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
403  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
404                                                (__mmask16)-1);
405}
406
407static __inline__ __mmask16 __DEFAULT_FN_ATTRS
408_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
409  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
410                                                __u);
411}
412
413static __inline__ __mmask16 __DEFAULT_FN_ATTRS
414_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
415  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
416                                                 (__mmask16)-1);
417}
418
419static __inline__ __mmask16 __DEFAULT_FN_ATTRS
420_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
421  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
422                                                 __u);
423}
424
425static __inline__ __mmask16 __DEFAULT_FN_ATTRS
426_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
427  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
428                                                (__mmask16)-1);
429}
430
431static __inline__ __mmask16 __DEFAULT_FN_ATTRS
432_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
433  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
434                                                __u);
435}
436
437static __inline__ __mmask16 __DEFAULT_FN_ATTRS
438_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
439  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
440                                                 (__mmask16)-1);
441}
442
443static __inline__ __mmask16 __DEFAULT_FN_ATTRS
444_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
445  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
446                                                 __u);
447}
448
449static __inline__ __mmask32 __DEFAULT_FN_ATTRS
450_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
451  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
452                                                (__mmask32)-1);
453}
454
455static __inline__ __mmask32 __DEFAULT_FN_ATTRS
456_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
457  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
458                                                __u);
459}
460
461static __inline__ __mmask32 __DEFAULT_FN_ATTRS
462_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
463  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
464                                                 (__mmask32)-1);
465}
466
467static __inline__ __mmask32 __DEFAULT_FN_ATTRS
468_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
469  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
470                                                 __u);
471}
472
473static __inline__ __mmask8 __DEFAULT_FN_ATTRS
474_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
475  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
476                                               (__mmask8)-1);
477}
478
479static __inline__ __mmask8 __DEFAULT_FN_ATTRS
480_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
481  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
482                                               __u);
483}
484
485static __inline__ __mmask8 __DEFAULT_FN_ATTRS
486_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
487  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
488                                                (__mmask8)-1);
489}
490
491static __inline__ __mmask8 __DEFAULT_FN_ATTRS
492_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
493  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
494                                                __u);
495}
496
497static __inline__ __mmask16 __DEFAULT_FN_ATTRS
498_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
499  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
500                                                (__mmask16)-1);
501}
502
503static __inline__ __mmask16 __DEFAULT_FN_ATTRS
504_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
505  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
506                                                __u);
507}
508
509static __inline__ __mmask16 __DEFAULT_FN_ATTRS
510_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
511  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
512                                                 (__mmask16)-1);
513}
514
515static __inline__ __mmask16 __DEFAULT_FN_ATTRS
516_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
517  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
518                                                 __u);
519}
520
521static __inline__ __mmask16 __DEFAULT_FN_ATTRS
522_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
523  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
524                                                (__mmask16)-1);
525}
526
527static __inline__ __mmask16 __DEFAULT_FN_ATTRS
528_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
529  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
530                                                __u);
531}
532
533static __inline__ __mmask16 __DEFAULT_FN_ATTRS
534_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
535  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
536                                                 (__mmask16)-1);
537}
538
539static __inline__ __mmask16 __DEFAULT_FN_ATTRS
540_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
541  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
542                                                 __u);
543}
544
545static __inline__ __mmask32 __DEFAULT_FN_ATTRS
546_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
547  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
548                                                (__mmask32)-1);
549}
550
551static __inline__ __mmask32 __DEFAULT_FN_ATTRS
552_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
553  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
554                                                __u);
555}
556
557static __inline__ __mmask32 __DEFAULT_FN_ATTRS
558_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
559  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
560                                                 (__mmask32)-1);
561}
562
563static __inline__ __mmask32 __DEFAULT_FN_ATTRS
564_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
565  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
566                                                 __u);
567}
568
569static __inline__ __mmask8 __DEFAULT_FN_ATTRS
570_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
571  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
572                                               (__mmask8)-1);
573}
574
575static __inline__ __mmask8 __DEFAULT_FN_ATTRS
576_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
577  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
578                                               __u);
579}
580
581static __inline__ __mmask8 __DEFAULT_FN_ATTRS
582_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
583  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
584                                                (__mmask8)-1);
585}
586
587static __inline__ __mmask8 __DEFAULT_FN_ATTRS
588_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
589  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
590                                                __u);
591}
592
593static __inline__ __mmask16 __DEFAULT_FN_ATTRS
594_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
595  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
596                                                (__mmask16)-1);
597}
598
599static __inline__ __mmask16 __DEFAULT_FN_ATTRS
600_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
601  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
602                                                __u);
603}
604
605static __inline__ __mmask16 __DEFAULT_FN_ATTRS
606_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
607  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
608                                                 (__mmask16)-1);
609}
610
611static __inline__ __mmask16 __DEFAULT_FN_ATTRS
612_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
613  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
614                                                 __u);
615}
616
617static __inline__ __m256i __DEFAULT_FN_ATTRS
618_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
619  return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
620             (__v32qi) __B,
621             (__v32qi) __W,
622             (__mmask32) __U);
623}
624
625static __inline__ __m256i __DEFAULT_FN_ATTRS
626_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
627  return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
628             (__v32qi) __B,
629             (__v32qi)
630             _mm256_setzero_si256 (),
631             (__mmask32) __U);
632}
633
634static __inline__ __m256i __DEFAULT_FN_ATTRS
635_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
636  return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
637             (__v16hi) __B,
638             (__v16hi) __W,
639             (__mmask16) __U);
640}
641
642static __inline__ __m256i __DEFAULT_FN_ATTRS
643_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
644  return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
645             (__v16hi) __B,
646             (__v16hi)
647             _mm256_setzero_si256 (),
648             (__mmask16) __U);
649}
650
651static __inline__ __m256i __DEFAULT_FN_ATTRS
652_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
653  return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
654             (__v32qi) __B,
655             (__v32qi) __W,
656             (__mmask32) __U);
657}
658
659static __inline__ __m256i __DEFAULT_FN_ATTRS
660_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
661  return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
662             (__v32qi) __B,
663             (__v32qi)
664             _mm256_setzero_si256 (),
665             (__mmask32) __U);
666}
667
668static __inline__ __m256i __DEFAULT_FN_ATTRS
669_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
670  return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
671             (__v16hi) __B,
672             (__v16hi) __W,
673             (__mmask16) __U);
674}
675
676static __inline__ __m256i __DEFAULT_FN_ATTRS
677_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
678  return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
679             (__v16hi) __B,
680             (__v16hi)
681             _mm256_setzero_si256 (),
682             (__mmask16) __U);
683}
684static __inline__ __m128i __DEFAULT_FN_ATTRS
685_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
686  return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
687             (__v16qi) __B,
688             (__v16qi) __W,
689             (__mmask16) __U);
690}
691
692static __inline__ __m128i __DEFAULT_FN_ATTRS
693_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
694  return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
695             (__v16qi) __B,
696             (__v16qi)
697             _mm_setzero_si128 (),
698             (__mmask16) __U);
699}
700
701static __inline__ __m128i __DEFAULT_FN_ATTRS
702_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
703  return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
704             (__v8hi) __B,
705             (__v8hi) __W,
706             (__mmask8) __U);
707}
708
709static __inline__ __m128i __DEFAULT_FN_ATTRS
710_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
711  return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
712             (__v8hi) __B,
713             (__v8hi)
714             _mm_setzero_si128 (),
715             (__mmask8) __U);
716}
717
718static __inline__ __m128i __DEFAULT_FN_ATTRS
719_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
720  return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
721             (__v16qi) __B,
722             (__v16qi) __W,
723             (__mmask16) __U);
724}
725
726static __inline__ __m128i __DEFAULT_FN_ATTRS
727_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
728  return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
729             (__v16qi) __B,
730             (__v16qi)
731             _mm_setzero_si128 (),
732             (__mmask16) __U);
733}
734
735static __inline__ __m128i __DEFAULT_FN_ATTRS
736_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
737  return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
738             (__v8hi) __B,
739             (__v8hi) __W,
740             (__mmask8) __U);
741}
742
743static __inline__ __m128i __DEFAULT_FN_ATTRS
744_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
745  return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
746             (__v8hi) __B,
747             (__v8hi)
748             _mm_setzero_si128 (),
749             (__mmask8) __U);
750}
751
752static __inline__ __m256i __DEFAULT_FN_ATTRS
753_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
754  return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
755              (__v16hi) __B,
756              (__v16hi) __W,
757              (__mmask16) __U);
758}
759
760static __inline__ __m256i __DEFAULT_FN_ATTRS
761_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
762  return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
763              (__v16hi) __B,
764              (__v16hi)
765              _mm256_setzero_si256 (),
766              (__mmask16) __U);
767}
768
769static __inline__ __m128i __DEFAULT_FN_ATTRS
770_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
771  return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
772              (__v8hi) __B,
773              (__v8hi) __W,
774              (__mmask8) __U);
775}
776
777static __inline__ __m128i __DEFAULT_FN_ATTRS
778_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
779  return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
780              (__v8hi) __B,
781              (__v8hi)
782              _mm_setzero_si128 (),
783              (__mmask8) __U);
784}
785
786static __inline__ __m128i __DEFAULT_FN_ATTRS
787_mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
788{
789  return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
790              (__v16qi) __W,
791              (__v16qi) __A);
792}
793
794static __inline__ __m256i __DEFAULT_FN_ATTRS
795_mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
796{
797  return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
798               (__v32qi) __W,
799               (__v32qi) __A);
800}
801
802static __inline__ __m128i __DEFAULT_FN_ATTRS
803_mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
804{
805  return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
806               (__v8hi) __W,
807               (__v8hi) __A);
808}
809
810static __inline__ __m256i __DEFAULT_FN_ATTRS
811_mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
812{
813  return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
814               (__v16hi) __W,
815               (__v16hi) __A);
816}
817
818static __inline__ __m128i __DEFAULT_FN_ATTRS
819_mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
820{
821  return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
822               (__v16qi) __W,
823               (__mmask16) __U);
824}
825
826static __inline__ __m128i __DEFAULT_FN_ATTRS
827_mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
828{
829  return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
830               (__v16qi) _mm_setzero_si128 (),
831               (__mmask16) __U);
832}
833
834static __inline__ __m256i __DEFAULT_FN_ATTRS
835_mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
836{
837  return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
838               (__v32qi) __W,
839               (__mmask32) __U);
840}
841
842static __inline__ __m256i __DEFAULT_FN_ATTRS
843_mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
844{
845  return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
846               (__v32qi) _mm256_setzero_si256 (),
847               (__mmask32) __U);
848}
849
850static __inline__ __m128i __DEFAULT_FN_ATTRS
851_mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
852{
853  return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
854               (__v8hi) __W,
855               (__mmask8) __U);
856}
857
858static __inline__ __m128i __DEFAULT_FN_ATTRS
859_mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
860{
861  return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
862               (__v8hi) _mm_setzero_si128 (),
863               (__mmask8) __U);
864}
865
866static __inline__ __m256i __DEFAULT_FN_ATTRS
867_mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
868{
869  return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
870               (__v16hi) __W,
871               (__mmask16) __U);
872}
873
874static __inline__ __m256i __DEFAULT_FN_ATTRS
875_mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
876{
877  return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
878               (__v16hi) _mm256_setzero_si256 (),
879               (__mmask16) __U);
880}
881
882static __inline__ __m128i __DEFAULT_FN_ATTRS
883_mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
884{
885  return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
886               (__v4si) __B,
887               (__v8hi) _mm_setzero_si128 (), __M);
888}
889
890static __inline__ __m128i __DEFAULT_FN_ATTRS
891_mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
892          __m128i __B)
893{
894  return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
895               (__v4si) __B,
896               (__v8hi) __W, __M);
897}
898
899static __inline__ __m256i __DEFAULT_FN_ATTRS
900_mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
901{
902  return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
903               (__v8si) __B,
904               (__v16hi) _mm256_setzero_si256 (),
905               __M);
906}
907
908static __inline__ __m256i __DEFAULT_FN_ATTRS
909_mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
910       __m256i __B)
911{
912  return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
913               (__v8si) __B,
914               (__v16hi) __W, __M);
915}
916
917static __inline__ __m128i __DEFAULT_FN_ATTRS
918_mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
919{
920  return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
921               (__v8hi) __B,
922               (__v16qi) _mm_setzero_si128 (),
923               __M);
924}
925
926static __inline__ __m128i __DEFAULT_FN_ATTRS
927_mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
928          __m128i __B)
929{
930  return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
931               (__v8hi) __B,
932               (__v16qi) __W,
933               __M);
934}
935
936static __inline__ __m256i __DEFAULT_FN_ATTRS
937_mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
938{
939  return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
940               (__v16hi) __B,
941               (__v32qi) _mm256_setzero_si256 (),
942               __M);
943}
944
945static __inline__ __m256i __DEFAULT_FN_ATTRS
946_mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
947       __m256i __B)
948{
949  return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
950               (__v16hi) __B,
951               (__v32qi) __W,
952               __M);
953}
954
955static __inline__ __m128i __DEFAULT_FN_ATTRS
956_mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
957{
958  return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
959               (__v4si) __B,
960               (__v8hi) _mm_setzero_si128 (),
961               __M);
962}
963
964static __inline__ __m128i __DEFAULT_FN_ATTRS
965_mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
966           __m128i __B)
967{
968  return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
969               (__v4si) __B,
970               (__v8hi) __W, __M);
971}
972
973static __inline__ __m256i __DEFAULT_FN_ATTRS
974_mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
975{
976  return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
977               (__v8si) __B,
978               (__v16hi) _mm256_setzero_si256 (),
979               __M);
980}
981
982static __inline__ __m256i __DEFAULT_FN_ATTRS
983_mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
984        __m256i __B)
985{
986  return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
987               (__v8si) __B,
988               (__v16hi) __W,
989               __M);
990}
991
992static __inline__ __m128i __DEFAULT_FN_ATTRS
993_mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
994{
995  return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
996               (__v8hi) __B,
997               (__v16qi) _mm_setzero_si128 (),
998               __M);
999}
1000
1001static __inline__ __m128i __DEFAULT_FN_ATTRS
1002_mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
1003           __m128i __B)
1004{
1005  return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
1006               (__v8hi) __B,
1007               (__v16qi) __W,
1008               __M);
1009}
1010
1011static __inline__ __m256i __DEFAULT_FN_ATTRS
1012_mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
1013{
1014  return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
1015               (__v16hi) __B,
1016               (__v32qi) _mm256_setzero_si256 (),
1017               __M);
1018}
1019
1020static __inline__ __m256i __DEFAULT_FN_ATTRS
1021_mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
1022        __m256i __B)
1023{
1024  return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
1025               (__v16hi) __B,
1026               (__v32qi) __W,
1027               __M);
1028}
1029
1030static __inline__ __m128i __DEFAULT_FN_ATTRS
1031_mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1032        __m128i __B)
1033{
1034  return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
1035               (__v16qi) __B,
1036               (__v16qi) __W,
1037               (__mmask16) __U);
1038}
1039
1040static __inline__ __m128i __DEFAULT_FN_ATTRS
1041_mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1042{
1043  return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
1044               (__v16qi) __B,
1045               (__v16qi) _mm_setzero_si128 (),
1046               (__mmask16) __U);
1047}
1048
1049static __inline__ __m256i __DEFAULT_FN_ATTRS
1050_mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1051           __m256i __B)
1052{
1053  return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
1054               (__v32qi) __B,
1055               (__v32qi) __W,
1056               (__mmask32) __U);
1057}
1058
1059static __inline__ __m256i __DEFAULT_FN_ATTRS
1060_mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1061{
1062  return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
1063               (__v32qi) __B,
1064               (__v32qi) _mm256_setzero_si256 (),
1065               (__mmask32) __U);
1066}
1067
1068static __inline__ __m128i __DEFAULT_FN_ATTRS
1069_mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1070         __m128i __B)
1071{
1072  return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
1073               (__v8hi) __B,
1074               (__v8hi) __W,
1075               (__mmask8) __U);
1076}
1077
1078static __inline__ __m128i __DEFAULT_FN_ATTRS
1079_mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1080{
1081  return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
1082               (__v8hi) __B,
1083               (__v8hi) _mm_setzero_si128 (),
1084               (__mmask8) __U);
1085}
1086
1087static __inline__ __m256i __DEFAULT_FN_ATTRS
1088_mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1089      __m256i __B)
1090{
1091  return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
1092               (__v16hi) __B,
1093               (__v16hi) __W,
1094               (__mmask16) __U);
1095}
1096
1097static __inline__ __m256i __DEFAULT_FN_ATTRS
1098_mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
1099{
1100  return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
1101               (__v16hi) __B,
1102               (__v16hi) _mm256_setzero_si256 (),
1103               (__mmask16) __U);
1104}
1105
1106static __inline__ __m128i __DEFAULT_FN_ATTRS
1107_mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1108        __m128i __B)
1109{
1110  return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
1111               (__v16qi) __B,
1112               (__v16qi) __W,
1113               (__mmask16) __U);
1114}
1115
1116static __inline__ __m128i __DEFAULT_FN_ATTRS
1117_mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1118{
1119  return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
1120               (__v16qi) __B,
1121               (__v16qi) _mm_setzero_si128 (),
1122               (__mmask16) __U);
1123}
1124
1125static __inline__ __m256i __DEFAULT_FN_ATTRS
1126_mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1127           __m256i __B)
1128{
1129  return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
1130               (__v32qi) __B,
1131               (__v32qi) __W,
1132               (__mmask32) __U);
1133}
1134
1135static __inline__ __m256i __DEFAULT_FN_ATTRS
1136_mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1137{
1138  return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
1139               (__v32qi) __B,
1140               (__v32qi) _mm256_setzero_si256 (),
1141               (__mmask32) __U);
1142}
1143
1144static __inline__ __m128i __DEFAULT_FN_ATTRS
1145_mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1146         __m128i __B)
1147{
1148  return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
1149               (__v8hi) __B,
1150               (__v8hi) __W,
1151               (__mmask8) __U);
1152}
1153
1154static __inline__ __m128i __DEFAULT_FN_ATTRS
1155_mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1156{
1157  return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
1158               (__v8hi) __B,
1159               (__v8hi) _mm_setzero_si128 (),
1160               (__mmask8) __U);
1161}
1162
1163static __inline__ __m256i __DEFAULT_FN_ATTRS
1164_mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1165      __m256i __B)
1166{
1167  return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
1168               (__v16hi) __B,
1169               (__v16hi) __W,
1170               (__mmask16) __U);
1171}
1172
1173static __inline__ __m256i __DEFAULT_FN_ATTRS
1174_mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1175{
1176  return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
1177               (__v16hi) __B,
1178               (__v16hi) _mm256_setzero_si256 (),
1179               (__mmask16) __U);
1180}
1181
1182static __inline__ __m128i __DEFAULT_FN_ATTRS
1183_mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1184       __m128i __B)
1185{
1186  return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
1187               (__v16qi) __B,
1188               (__v16qi) __W,
1189               (__mmask16) __U);
1190}
1191
1192static __inline__ __m128i __DEFAULT_FN_ATTRS
1193_mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1194{
1195  return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
1196               (__v16qi) __B,
1197               (__v16qi) _mm_setzero_si128 (),
1198               (__mmask16) __U);
1199}
1200
1201static __inline__ __m256i __DEFAULT_FN_ATTRS
1202_mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1203          __m256i __B)
1204{
1205  return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
1206               (__v32qi) __B,
1207               (__v32qi) __W,
1208               (__mmask32) __U);
1209}
1210
1211static __inline__ __m256i __DEFAULT_FN_ATTRS
1212_mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1213{
1214  return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
1215               (__v32qi) __B,
1216               (__v32qi) _mm256_setzero_si256 (),
1217               (__mmask32) __U);
1218}
1219
1220static __inline__ __m128i __DEFAULT_FN_ATTRS
1221_mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1222        __m128i __B)
1223{
1224  return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
1225               (__v8hi) __B,
1226               (__v8hi) __W,
1227               (__mmask8) __U);
1228}
1229
1230static __inline__ __m128i __DEFAULT_FN_ATTRS
1231_mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1232{
1233  return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
1234               (__v8hi) __B,
1235               (__v8hi) _mm_setzero_si128 (),
1236               (__mmask8) __U);
1237}
1238
1239static __inline__ __m256i __DEFAULT_FN_ATTRS
1240_mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1241           __m256i __B)
1242{
1243  return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
1244               (__v16hi) __B,
1245               (__v16hi) __W,
1246               (__mmask16) __U);
1247}
1248
1249static __inline__ __m256i __DEFAULT_FN_ATTRS
1250_mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1251{
1252  return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
1253               (__v16hi) __B,
1254               (__v16hi) _mm256_setzero_si256 (),
1255               (__mmask16) __U);
1256}
1257
1258static __inline__ __m128i __DEFAULT_FN_ATTRS
1259_mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1260{
1261  return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1262               (__v16qi) __B,
1263               (__v16qi) _mm_setzero_si128 (),
1264               (__mmask16) __M);
1265}
1266
1267static __inline__ __m128i __DEFAULT_FN_ATTRS
1268_mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1269       __m128i __B)
1270{
1271  return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1272               (__v16qi) __B,
1273               (__v16qi) __W,
1274               (__mmask16) __M);
1275}
1276
1277static __inline__ __m256i __DEFAULT_FN_ATTRS
1278_mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1279{
1280  return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1281               (__v32qi) __B,
1282               (__v32qi) _mm256_setzero_si256 (),
1283               (__mmask32) __M);
1284}
1285
1286static __inline__ __m256i __DEFAULT_FN_ATTRS
1287_mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1288          __m256i __B)
1289{
1290  return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1291               (__v32qi) __B,
1292               (__v32qi) __W,
1293               (__mmask32) __M);
1294}
1295
1296static __inline__ __m128i __DEFAULT_FN_ATTRS
1297_mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1298{
1299  return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1300               (__v8hi) __B,
1301               (__v8hi) _mm_setzero_si128 (),
1302               (__mmask8) __M);
1303}
1304
1305static __inline__ __m128i __DEFAULT_FN_ATTRS
1306_mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1307        __m128i __B)
1308{
1309  return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1310               (__v8hi) __B,
1311               (__v8hi) __W,
1312               (__mmask8) __M);
1313}
1314
1315static __inline__ __m256i __DEFAULT_FN_ATTRS
1316_mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1317{
1318  return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1319               (__v16hi) __B,
1320               (__v16hi) _mm256_setzero_si256 (),
1321               (__mmask16) __M);
1322}
1323
1324static __inline__ __m256i __DEFAULT_FN_ATTRS
1325_mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1326           __m256i __B)
1327{
1328  return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1329               (__v16hi) __B,
1330               (__v16hi) __W,
1331               (__mmask16) __M);
1332}
1333
1334static __inline__ __m128i __DEFAULT_FN_ATTRS
1335_mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1336{
1337  return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1338               (__v16qi) __B,
1339               (__v16qi) _mm_setzero_si128 (),
1340               (__mmask16) __M);
1341}
1342
1343static __inline__ __m128i __DEFAULT_FN_ATTRS
1344_mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1345       __m128i __B)
1346{
1347  return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1348               (__v16qi) __B,
1349               (__v16qi) __W,
1350               (__mmask16) __M);
1351}
1352
1353static __inline__ __m256i __DEFAULT_FN_ATTRS
1354_mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1355{
1356  return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1357               (__v32qi) __B,
1358               (__v32qi) _mm256_setzero_si256 (),
1359               (__mmask32) __M);
1360}
1361
1362static __inline__ __m256i __DEFAULT_FN_ATTRS
1363_mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1364          __m256i __B)
1365{
1366  return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1367               (__v32qi) __B,
1368               (__v32qi) __W,
1369               (__mmask32) __M);
1370}
1371
1372static __inline__ __m128i __DEFAULT_FN_ATTRS
1373_mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1374{
1375  return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1376               (__v8hi) __B,
1377               (__v8hi) _mm_setzero_si128 (),
1378               (__mmask8) __M);
1379}
1380
1381static __inline__ __m128i __DEFAULT_FN_ATTRS
1382_mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1383        __m128i __B)
1384{
1385  return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1386               (__v8hi) __B,
1387               (__v8hi) __W,
1388               (__mmask8) __M);
1389}
1390
1391static __inline__ __m256i __DEFAULT_FN_ATTRS
1392_mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1393{
1394  return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1395               (__v16hi) __B,
1396               (__v16hi) _mm256_setzero_si256 (),
1397               (__mmask16) __M);
1398}
1399
1400static __inline__ __m256i __DEFAULT_FN_ATTRS
1401_mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1402           __m256i __B)
1403{
1404  return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1405               (__v16hi) __B,
1406               (__v16hi) __W,
1407               (__mmask16) __M);
1408}
1409
1410static __inline__ __m128i __DEFAULT_FN_ATTRS
1411_mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1412{
1413  return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1414               (__v16qi) __B,
1415               (__v16qi) _mm_setzero_si128 (),
1416               (__mmask16) __M);
1417}
1418
1419static __inline__ __m128i __DEFAULT_FN_ATTRS
1420_mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1421       __m128i __B)
1422{
1423  return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1424               (__v16qi) __B,
1425               (__v16qi) __W,
1426               (__mmask16) __M);
1427}
1428
1429static __inline__ __m256i __DEFAULT_FN_ATTRS
1430_mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1431{
1432  return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1433               (__v32qi) __B,
1434               (__v32qi) _mm256_setzero_si256 (),
1435               (__mmask32) __M);
1436}
1437
1438static __inline__ __m256i __DEFAULT_FN_ATTRS
1439_mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1440          __m256i __B)
1441{
1442  return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1443               (__v32qi) __B,
1444               (__v32qi) __W,
1445               (__mmask32) __M);
1446}
1447
1448static __inline__ __m128i __DEFAULT_FN_ATTRS
1449_mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1450{
1451  return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1452               (__v8hi) __B,
1453               (__v8hi) _mm_setzero_si128 (),
1454               (__mmask8) __M);
1455}
1456
1457static __inline__ __m128i __DEFAULT_FN_ATTRS
1458_mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1459        __m128i __B)
1460{
1461  return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1462               (__v8hi) __B,
1463               (__v8hi) __W,
1464               (__mmask8) __M);
1465}
1466
1467static __inline__ __m256i __DEFAULT_FN_ATTRS
1468_mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1469{
1470  return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
1471               (__v16hi) __B,
1472               (__v16hi) _mm256_setzero_si256 (),
1473               (__mmask16) __M);
1474}
1475
1476static __inline__ __m256i __DEFAULT_FN_ATTRS
1477_mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1478           __m256i __B)
1479{
1480  return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
1481               (__v16hi) __B,
1482               (__v16hi) __W,
1483               (__mmask16) __M);
1484}
1485
1486static __inline__ __m128i __DEFAULT_FN_ATTRS
1487_mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1488{
1489  return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1490               (__v16qi) __B,
1491               (__v16qi) _mm_setzero_si128 (),
1492               (__mmask16) __M);
1493}
1494
1495static __inline__ __m128i __DEFAULT_FN_ATTRS
1496_mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1497       __m128i __B)
1498{
1499  return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1500               (__v16qi) __B,
1501               (__v16qi) __W,
1502               (__mmask16) __M);
1503}
1504
1505static __inline__ __m256i __DEFAULT_FN_ATTRS
1506_mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1507{
1508  return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1509               (__v32qi) __B,
1510               (__v32qi) _mm256_setzero_si256 (),
1511               (__mmask32) __M);
1512}
1513
1514static __inline__ __m256i __DEFAULT_FN_ATTRS
1515_mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1516          __m256i __B)
1517{
1518  return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1519               (__v32qi) __B,
1520               (__v32qi) __W,
1521               (__mmask32) __M);
1522}
1523
1524static __inline__ __m128i __DEFAULT_FN_ATTRS
1525_mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1526{
1527  return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
1528               (__v8hi) __B,
1529               (__v8hi) _mm_setzero_si128 (),
1530               (__mmask8) __M);
1531}
1532
1533static __inline__ __m128i __DEFAULT_FN_ATTRS
1534_mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1535        __m128i __B)
1536{
1537  return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
1538               (__v8hi) __B,
1539               (__v8hi) __W,
1540               (__mmask8) __M);
1541}
1542
1543static __inline__ __m256i __DEFAULT_FN_ATTRS
1544_mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1545{
1546  return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
1547               (__v16hi) __B,
1548               (__v16hi) _mm256_setzero_si256 (),
1549               (__mmask16) __M);
1550}
1551
1552static __inline__ __m256i __DEFAULT_FN_ATTRS
1553_mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1554           __m256i __B)
1555{
1556  return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
1557               (__v16hi) __B,
1558               (__v16hi) __W,
1559               (__mmask16) __M);
1560}
1561
1562static __inline__ __m128i __DEFAULT_FN_ATTRS
1563_mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1564           __m128i __B)
1565{
1566  return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
1567               (__v16qi) __B,
1568               (__v16qi) __W,
1569               (__mmask16) __U);
1570}
1571
1572static __inline__ __m128i __DEFAULT_FN_ATTRS
1573_mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1574{
1575  return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
1576               (__v16qi) __B,
1577               (__v16qi) _mm_setzero_si128 (),
1578               (__mmask16) __U);
1579}
1580
1581static __inline__ __m256i __DEFAULT_FN_ATTRS
1582_mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1583        __m256i __B)
1584{
1585  return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
1586               (__v32qi) __B,
1587               (__v32qi) __W,
1588               (__mmask32) __U);
1589}
1590
1591static __inline__ __m256i __DEFAULT_FN_ATTRS
1592_mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1593{
1594  return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
1595               (__v32qi) __B,
1596               (__v32qi) _mm256_setzero_si256 (),
1597               (__mmask32) __U);
1598}
1599
1600static __inline__ __m128i __DEFAULT_FN_ATTRS
1601_mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1602        __m128i __B)
1603{
1604  return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
1605               (__v16qi) __B,
1606               (__v16qi) __W,
1607               (__mmask16) __U);
1608}
1609
1610static __inline__ __m128i __DEFAULT_FN_ATTRS
1611_mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1612{
1613  return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
1614               (__v16qi) __B,
1615               (__v16qi) _mm_setzero_si128 (),
1616               (__mmask16) __U);
1617}
1618
1619static __inline__ __m256i __DEFAULT_FN_ATTRS
1620_mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1621           __m256i __B)
1622{
1623  return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
1624               (__v32qi) __B,
1625               (__v32qi) __W,
1626               (__mmask32) __U);
1627}
1628
1629static __inline__ __m256i __DEFAULT_FN_ATTRS
1630_mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1631{
1632  return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
1633               (__v32qi) __B,
1634               (__v32qi) _mm256_setzero_si256 (),
1635               (__mmask32) __U);
1636}
1637
1638static __inline__ __m128i __DEFAULT_FN_ATTRS
1639_mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1640         __m128i __B)
1641{
1642  return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
1643               (__v8hi) __B,
1644               (__v8hi) __W,
1645               (__mmask8) __U);
1646}
1647
1648static __inline__ __m128i __DEFAULT_FN_ATTRS
1649_mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1650{
1651  return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
1652               (__v8hi) __B,
1653               (__v8hi) _mm_setzero_si128 (),
1654               (__mmask8) __U);
1655}
1656
1657static __inline__ __m256i __DEFAULT_FN_ATTRS
1658_mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1659      __m256i __B)
1660{
1661  return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
1662               (__v16hi) __B,
1663               (__v16hi) __W,
1664               (__mmask16) __U);
1665}
1666
1667static __inline__ __m256i __DEFAULT_FN_ATTRS
1668_mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
1669{
1670  return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
1671               (__v16hi) __B,
1672               (__v16hi) _mm256_setzero_si256 (),
1673               (__mmask16) __U);
1674}
1675
1676static __inline__ __m128i __DEFAULT_FN_ATTRS
1677_mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1678        __m128i __B)
1679{
1680  return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
1681               (__v16qi) __B,
1682               (__v16qi) __W,
1683               (__mmask16) __U);
1684}
1685
1686static __inline__ __m128i __DEFAULT_FN_ATTRS
1687_mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1688{
1689  return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
1690               (__v16qi) __B,
1691               (__v16qi) _mm_setzero_si128 (),
1692               (__mmask16) __U);
1693}
1694
1695static __inline__ __m256i __DEFAULT_FN_ATTRS
1696_mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1697           __m256i __B)
1698{
1699  return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
1700               (__v32qi) __B,
1701               (__v32qi) __W,
1702               (__mmask32) __U);
1703}
1704
1705static __inline__ __m256i __DEFAULT_FN_ATTRS
1706_mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1707{
1708  return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
1709               (__v32qi) __B,
1710               (__v32qi) _mm256_setzero_si256 (),
1711               (__mmask32) __U);
1712}
1713
1714static __inline__ __m128i __DEFAULT_FN_ATTRS
1715_mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1716         __m128i __B)
1717{
1718  return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
1719               (__v8hi) __B,
1720               (__v8hi) __W,
1721               (__mmask8) __U);
1722}
1723
1724static __inline__ __m128i __DEFAULT_FN_ATTRS
1725_mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1726{
1727  return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
1728               (__v8hi) __B,
1729               (__v8hi) _mm_setzero_si128 (),
1730               (__mmask8) __U);
1731}
1732
1733static __inline__ __m256i __DEFAULT_FN_ATTRS
1734_mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1735      __m256i __B)
1736{
1737  return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
1738               (__v16hi) __B,
1739               (__v16hi) __W,
1740               (__mmask16) __U);
1741}
1742
1743static __inline__ __m256i __DEFAULT_FN_ATTRS
1744_mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1745{
1746  return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
1747               (__v16hi) __B,
1748               (__v16hi) _mm256_setzero_si256 (),
1749               (__mmask16) __U);
1750}
1751
1752static __inline__ __m128i __DEFAULT_FN_ATTRS
1753_mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
1754            __m128i __B)
1755{
1756  return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
1757               (__v8hi) __I /* idx */ ,
1758               (__v8hi) __B,
1759               (__mmask8) __U);
1760}
1761
1762static __inline__ __m256i __DEFAULT_FN_ATTRS
1763_mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
1764         __mmask16 __U, __m256i __B)
1765{
1766  return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
1767               (__v16hi) __I /* idx */ ,
1768               (__v16hi) __B,
1769               (__mmask16) __U);
1770}
1771
1772static __inline__ __m128i __DEFAULT_FN_ATTRS
1773_mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
1774{
1775  return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1776               (__v8hi) __A,
1777               (__v8hi) __B,
1778               (__mmask8) -1);
1779}
1780
1781static __inline__ __m128i __DEFAULT_FN_ATTRS
1782_mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
1783           __m128i __B)
1784{
1785  return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1786               (__v8hi) __A,
1787               (__v8hi) __B,
1788               (__mmask8) __U);
1789}
1790
1791static __inline__ __m128i __DEFAULT_FN_ATTRS
1792_mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
1793            __m128i __B)
1794{
1795  return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I/* idx */,
1796               (__v8hi) __A,
1797               (__v8hi) __B,
1798               (__mmask8) __U);
1799}
1800
1801static __inline__ __m256i __DEFAULT_FN_ATTRS
1802_mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
1803{
1804  return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1805               (__v16hi) __A,
1806               (__v16hi) __B,
1807               (__mmask16) -1);
1808}
1809
1810static __inline__ __m256i __DEFAULT_FN_ATTRS
1811_mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
1812        __m256i __I, __m256i __B)
1813{
1814  return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1815               (__v16hi) __A,
1816               (__v16hi) __B,
1817               (__mmask16) __U);
1818}
1819
1820static __inline__ __m256i __DEFAULT_FN_ATTRS
1821_mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
1822         __m256i __I, __m256i __B)
1823{
1824  return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I/* idx */,
1825               (__v16hi) __A,
1826               (__v16hi) __B,
1827               (__mmask16) __U);
1828}
1829
1830static __inline__ __m128i __DEFAULT_FN_ATTRS
1831_mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1832  return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
1833               (__v16qi) __Y,
1834               (__v8hi) __W,
1835               (__mmask8) __U);
1836}
1837
1838static __inline__ __m128i __DEFAULT_FN_ATTRS
1839_mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
1840  return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
1841               (__v16qi) __Y,
1842              (__v8hi) _mm_setzero_si128(),
1843               (__mmask8) __U);
1844}
1845
1846static __inline__ __m256i __DEFAULT_FN_ATTRS
1847_mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
1848         __m256i __Y) {
1849  return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
1850               (__v32qi) __Y,
1851               (__v16hi) __W,
1852               (__mmask16) __U);
1853}
1854
1855static __inline__ __m256i __DEFAULT_FN_ATTRS
1856_mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
1857  return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
1858               (__v32qi) __Y,
1859               (__v16hi) _mm256_setzero_si256(),
1860               (__mmask16) __U);
1861}
1862
1863static __inline__ __m128i __DEFAULT_FN_ATTRS
1864_mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1865         __m128i __B) {
1866  return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
1867               (__v8hi) __B,
1868               (__v4si) __W,
1869               (__mmask8) __U);
1870}
1871
1872static __inline__ __m128i __DEFAULT_FN_ATTRS
1873_mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
1874  return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
1875               (__v8hi) __B,
1876               (__v4si) _mm_setzero_si128(),
1877               (__mmask8) __U);
1878}
1879
1880static __inline__ __m256i __DEFAULT_FN_ATTRS
1881_mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1882  return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
1883               (__v16hi) __B,
1884               (__v8si) __W,
1885               (__mmask8) __U);
1886}
1887
1888static __inline__ __m256i __DEFAULT_FN_ATTRS
1889_mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B) {
1890  return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
1891               (__v16hi) __B,
1892               (__v8si) _mm256_setzero_si256(),
1893               (__mmask8) __U);
1894}
1895
1896static __inline__ __m128i __DEFAULT_FN_ATTRS
1897_mm_cvtsepi16_epi8 (__m128i __A) {
1898  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1899               (__v16qi) _mm_setzero_si128(),
1900               (__mmask8) -1);
1901}
1902
1903static __inline__ __m128i __DEFAULT_FN_ATTRS
1904_mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1905  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1906               (__v16qi) __O,
1907                __M);
1908}
1909
1910static __inline__ __m128i __DEFAULT_FN_ATTRS
1911_mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
1912  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1913               (__v16qi) _mm_setzero_si128(),
1914               __M);
1915}
1916
1917static __inline__ __m128i __DEFAULT_FN_ATTRS
1918_mm256_cvtsepi16_epi8 (__m256i __A) {
1919  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1920               (__v16qi) _mm_setzero_si128(),
1921               (__mmask16) -1);
1922}
1923
1924static __inline__ __m128i __DEFAULT_FN_ATTRS
1925_mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1926  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1927               (__v16qi) __O,
1928                __M);
1929}
1930
1931static __inline__ __m128i __DEFAULT_FN_ATTRS
1932_mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
1933  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1934               (__v16qi) _mm_setzero_si128(),
1935               __M);
1936}
1937
1938static __inline__ __m128i __DEFAULT_FN_ATTRS
1939_mm_cvtusepi16_epi8 (__m128i __A) {
1940  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1941                (__v16qi) _mm_setzero_si128(),
1942                (__mmask8) -1);
1943}
1944
1945static __inline__ __m128i __DEFAULT_FN_ATTRS
1946_mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1947  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1948                (__v16qi) __O,
1949                __M);
1950}
1951
1952static __inline__ __m128i __DEFAULT_FN_ATTRS
1953_mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
1954  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1955                (__v16qi) _mm_setzero_si128(),
1956                __M);
1957}
1958
1959static __inline__ __m128i __DEFAULT_FN_ATTRS
1960_mm256_cvtusepi16_epi8 (__m256i __A) {
1961  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1962                (__v16qi) _mm_setzero_si128(),
1963                (__mmask16) -1);
1964}
1965
1966static __inline__ __m128i __DEFAULT_FN_ATTRS
1967_mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1968  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1969                (__v16qi) __O,
1970                __M);
1971}
1972
1973static __inline__ __m128i __DEFAULT_FN_ATTRS
1974_mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
1975  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1976                (__v16qi) _mm_setzero_si128(),
1977                __M);
1978}
1979
1980static __inline__ __m128i __DEFAULT_FN_ATTRS
1981_mm_cvtepi16_epi8 (__m128i __A) {
1982
1983  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1984               (__v16qi) _mm_setzero_si128(),
1985               (__mmask8) -1);
1986}
1987
1988static __inline__ __m128i __DEFAULT_FN_ATTRS
1989_mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1990  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1991               (__v16qi) __O,
1992               __M);
1993}
1994
1995static __inline__ __m128i __DEFAULT_FN_ATTRS
1996_mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
1997  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1998               (__v16qi) _mm_setzero_si128(),
1999               __M);
2000}
2001
2002static __inline__ void __DEFAULT_FN_ATTRS
2003_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
2004{
2005  __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
2006}
2007
2008
2009static __inline__ void __DEFAULT_FN_ATTRS
2010_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
2011{
2012  __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
2013}
2014
2015static __inline__ void __DEFAULT_FN_ATTRS
2016_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
2017{
2018  __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
2019}
2020
2021static __inline__ __m128i __DEFAULT_FN_ATTRS
2022_mm256_cvtepi16_epi8 (__m256i __A) {
2023  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2024               (__v16qi) _mm_setzero_si128(),
2025               (__mmask16) -1);
2026}
2027
2028static __inline__ __m128i __DEFAULT_FN_ATTRS
2029_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
2030  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2031               (__v16qi) __O,
2032               __M);
2033}
2034
2035static __inline__ __m128i __DEFAULT_FN_ATTRS
2036_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
2037  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2038               (__v16qi) _mm_setzero_si128(),
2039               __M);
2040}
2041
2042static __inline__ void __DEFAULT_FN_ATTRS
2043_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
2044{
2045  __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
2046}
2047
2048static __inline__ void __DEFAULT_FN_ATTRS
2049_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
2050{
2051  __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
2052}
2053
2054static __inline__ void __DEFAULT_FN_ATTRS
2055_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
2056{
2057  __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M);
2058}
2059static __inline__ __m128i __DEFAULT_FN_ATTRS
2060_mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
2061  return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2062               (__v8hi) __Y,
2063               (__v8hi) __W,
2064               (__mmask8) __U);
2065}
2066
2067static __inline__ __m128i __DEFAULT_FN_ATTRS
2068_mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
2069  return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2070               (__v8hi) __Y,
2071              (__v8hi) _mm_setzero_si128(),
2072               (__mmask8) __U);
2073}
2074
2075static __inline__ __m256i __DEFAULT_FN_ATTRS
2076_mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
2077  return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2078               (__v16hi) __Y,
2079               (__v16hi) __W,
2080               (__mmask16) __U);
2081}
2082
2083static __inline__ __m256i __DEFAULT_FN_ATTRS
2084_mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
2085  return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2086               (__v16hi) __Y,
2087               (__v16hi) _mm256_setzero_si256(),
2088               (__mmask16) __U);
2089}
2090
2091static __inline__ __m128i __DEFAULT_FN_ATTRS
2092_mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2093          __m128i __B) {
2094  return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2095               (__v8hi) __B,
2096               (__v8hi) __W,
2097               (__mmask8) __U);
2098}
2099
2100static __inline__ __m128i __DEFAULT_FN_ATTRS
2101_mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B) {
2102  return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2103               (__v8hi) __B,
2104              (__v8hi) _mm_setzero_si128(),
2105               (__mmask8) __U);
2106}
2107
2108static __inline__ __m256i __DEFAULT_FN_ATTRS
2109_mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2110       __m256i __B) {
2111  return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2112               (__v16hi) __B,
2113               (__v16hi) __W,
2114               (__mmask16) __U);
2115}
2116
2117static __inline__ __m256i __DEFAULT_FN_ATTRS
2118_mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B) {
2119  return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2120               (__v16hi) __B,
2121               (__v16hi) _mm256_setzero_si256(),
2122               (__mmask16) __U);
2123}
2124
2125static __inline__ __m128i __DEFAULT_FN_ATTRS
2126_mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2127          __m128i __B) {
2128  return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2129               (__v8hi) __B,
2130               (__v8hi) __W,
2131               (__mmask8) __U);
2132}
2133
2134static __inline__ __m128i __DEFAULT_FN_ATTRS
2135_mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2136  return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2137               (__v8hi) __B,
2138              (__v8hi) _mm_setzero_si128(),
2139               (__mmask8) __U);
2140}
2141
2142static __inline__ __m256i __DEFAULT_FN_ATTRS
2143_mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2144       __m256i __B) {
2145  return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2146               (__v16hi) __B,
2147               (__v16hi) __W,
2148               (__mmask16) __U);
2149}
2150
2151static __inline__ __m256i __DEFAULT_FN_ATTRS
2152_mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2153  return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2154               (__v16hi) __B,
2155               (__v16hi) _mm256_setzero_si256(),
2156               (__mmask16) __U);
2157}
2158
2159static __inline__ __m128i __DEFAULT_FN_ATTRS
2160_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
2161  return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2162                                           (__v16qi)_mm_unpackhi_epi8(__A, __B),
2163                                           (__v16qi)__W);
2164}
2165
2166static __inline__ __m128i __DEFAULT_FN_ATTRS
2167_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
2168  return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2169                                           (__v16qi)_mm_unpackhi_epi8(__A, __B),
2170                                           (__v16qi)_mm_setzero_si128());
2171}
2172
2173static __inline__ __m256i __DEFAULT_FN_ATTRS
2174_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
2175  return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2176                                        (__v32qi)_mm256_unpackhi_epi8(__A, __B),
2177                                        (__v32qi)__W);
2178}
2179
2180static __inline__ __m256i __DEFAULT_FN_ATTRS
2181_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
2182  return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2183                                        (__v32qi)_mm256_unpackhi_epi8(__A, __B),
2184                                        (__v32qi)_mm256_setzero_si256());
2185}
2186
2187static __inline__ __m128i __DEFAULT_FN_ATTRS
2188_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2189  return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2190                                           (__v8hi)_mm_unpackhi_epi16(__A, __B),
2191                                           (__v8hi)__W);
2192}
2193
2194static __inline__ __m128i __DEFAULT_FN_ATTRS
2195_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2196  return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2197                                           (__v8hi)_mm_unpackhi_epi16(__A, __B),
2198                                           (__v8hi) _mm_setzero_si128());
2199}
2200
2201static __inline__ __m256i __DEFAULT_FN_ATTRS
2202_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2203  return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2204                                       (__v16hi)_mm256_unpackhi_epi16(__A, __B),
2205                                       (__v16hi)__W);
2206}
2207
2208static __inline__ __m256i __DEFAULT_FN_ATTRS
2209_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2210  return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2211                                       (__v16hi)_mm256_unpackhi_epi16(__A, __B),
2212                                       (__v16hi)_mm256_setzero_si256());
2213}
2214
2215static __inline__ __m128i __DEFAULT_FN_ATTRS
2216_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
2217  return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2218                                           (__v16qi)_mm_unpacklo_epi8(__A, __B),
2219                                           (__v16qi)__W);
2220}
2221
2222static __inline__ __m128i __DEFAULT_FN_ATTRS
2223_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
2224  return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2225                                           (__v16qi)_mm_unpacklo_epi8(__A, __B),
2226                                           (__v16qi)_mm_setzero_si128());
2227}
2228
2229static __inline__ __m256i __DEFAULT_FN_ATTRS
2230_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
2231  return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2232                                        (__v32qi)_mm256_unpacklo_epi8(__A, __B),
2233                                        (__v32qi)__W);
2234}
2235
2236static __inline__ __m256i __DEFAULT_FN_ATTRS
2237_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
2238  return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2239                                        (__v32qi)_mm256_unpacklo_epi8(__A, __B),
2240                                        (__v32qi)_mm256_setzero_si256());
2241}
2242
2243static __inline__ __m128i __DEFAULT_FN_ATTRS
2244_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2245  return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2246                                           (__v8hi)_mm_unpacklo_epi16(__A, __B),
2247                                           (__v8hi)__W);
2248}
2249
2250static __inline__ __m128i __DEFAULT_FN_ATTRS
2251_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2252  return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2253                                           (__v8hi)_mm_unpacklo_epi16(__A, __B),
2254                                           (__v8hi) _mm_setzero_si128());
2255}
2256
2257static __inline__ __m256i __DEFAULT_FN_ATTRS
2258_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2259  return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2260                                       (__v16hi)_mm256_unpacklo_epi16(__A, __B),
2261                                       (__v16hi)__W);
2262}
2263
2264static __inline__ __m256i __DEFAULT_FN_ATTRS
2265_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2266  return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2267                                       (__v16hi)_mm256_unpacklo_epi16(__A, __B),
2268                                       (__v16hi)_mm256_setzero_si256());
2269}
2270
2271static __inline__ __m128i __DEFAULT_FN_ATTRS
2272_mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2273{
2274  return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2275                (__v8hi) __W,
2276                (__mmask8) __U);
2277}
2278
2279static __inline__ __m128i __DEFAULT_FN_ATTRS
2280_mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
2281{
2282  return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2283                (__v8hi)
2284                _mm_setzero_si128 (),
2285                (__mmask8) __U);
2286}
2287
2288static __inline__ __m256i __DEFAULT_FN_ATTRS
2289_mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2290{
2291  return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2292                (__v16hi) __W,
2293                (__mmask16) __U);
2294}
2295
2296static __inline__ __m256i __DEFAULT_FN_ATTRS
2297_mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
2298{
2299  return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2300                (__v16hi)
2301                _mm256_setzero_si256 (),
2302                (__mmask16) __U);
2303}
2304
2305
2306static __inline__ __m128i __DEFAULT_FN_ATTRS
2307_mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2308{
2309  return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2310                (__v8hi) __W,
2311                (__mmask8) __U);
2312}
2313
2314static __inline__ __m128i __DEFAULT_FN_ATTRS
2315_mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
2316{
2317  return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2318                (__v8hi)
2319                _mm_setzero_si128 (),
2320                (__mmask8) __U);
2321}
2322
2323static __inline__ __m256i __DEFAULT_FN_ATTRS
2324_mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2325{
2326  return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2327                (__v16hi) __W,
2328                (__mmask16) __U);
2329}
2330
2331static __inline__ __m256i __DEFAULT_FN_ATTRS
2332_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
2333{
2334  return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2335                (__v16hi)
2336                _mm256_setzero_si256 (),
2337                (__mmask16) __U);
2338}
2339
2340
2341#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
2342  (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2343                                         (__v16qi)(__m128i)(b), (int)(p), \
2344                                         (__mmask16)-1); })
2345
2346#define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2347  (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2348                                         (__v16qi)(__m128i)(b), (int)(p), \
2349                                         (__mmask16)(m)); })
2350
2351#define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
2352  (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2353                                          (__v16qi)(__m128i)(b), (int)(p), \
2354                                          (__mmask16)-1); })
2355
2356#define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2357  (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2358                                          (__v16qi)(__m128i)(b), (int)(p), \
2359                                          (__mmask16)(m)); })
2360
2361#define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
2362  (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2363                                         (__v32qi)(__m256i)(b), (int)(p), \
2364                                         (__mmask32)-1); })
2365
2366#define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2367  (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2368                                         (__v32qi)(__m256i)(b), (int)(p), \
2369                                         (__mmask32)(m)); })
2370
2371#define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
2372  (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2373                                          (__v32qi)(__m256i)(b), (int)(p), \
2374                                          (__mmask32)-1); })
2375
2376#define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2377  (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2378                                          (__v32qi)(__m256i)(b), (int)(p), \
2379                                          (__mmask32)(m)); })
2380
2381#define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
2382  (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2383                                        (__v8hi)(__m128i)(b), (int)(p), \
2384                                        (__mmask8)-1); })
2385
2386#define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2387  (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2388                                        (__v8hi)(__m128i)(b), (int)(p), \
2389                                        (__mmask8)(m)); })
2390
2391#define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
2392  (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2393                                         (__v8hi)(__m128i)(b), (int)(p), \
2394                                         (__mmask8)-1); })
2395
2396#define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2397  (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2398                                         (__v8hi)(__m128i)(b), (int)(p), \
2399                                         (__mmask8)(m)); })
2400
2401#define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
2402  (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2403                                         (__v16hi)(__m256i)(b), (int)(p), \
2404                                         (__mmask16)-1); })
2405
2406#define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2407  (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2408                                         (__v16hi)(__m256i)(b), (int)(p), \
2409                                         (__mmask16)(m)); })
2410
2411#define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
2412  (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2413                                          (__v16hi)(__m256i)(b), (int)(p), \
2414                                          (__mmask16)-1); })
2415
2416#define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2417  (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2418                                          (__v16hi)(__m256i)(b), (int)(p), \
2419                                          (__mmask16)(m)); })
2420
2421#define _mm_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
2422  (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2423                                      (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
2424                                      (__v8hi)(__m128i)(W)); })
2425
2426#define _mm_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
2427  (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2428                                      (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
2429                                      (__v8hi)_mm_setzero_hi()); })
2430
2431#define _mm256_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
2432  (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2433                                      (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
2434                                      (__v16hi)(__m256i)(W)); })
2435
2436#define _mm256_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
2437  (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2438                                      (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
2439                                      (__v16hi)_mm256_setzero_si256()); })
2440
2441#define _mm_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
2442  (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2443                                      (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
2444                                      (__v8hi)(__m128i)(W)); })
2445
2446#define _mm_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
2447  (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2448                                      (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
2449                                      (__v8hi)_mm_setzero_hi()); })
2450
2451#define _mm256_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
2452  (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2453                                      (__v16hi)_mm256_shufflelo_epi16((A), \
2454                                                                      (imm)), \
2455                                      (__v16hi)(__m256i)(W)); })
2456
2457#define _mm256_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
2458  (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2459                                      (__v16hi)_mm256_shufflelo_epi16((A), \
2460                                                                      (imm)), \
2461                                      (__v16hi)_mm256_setzero_si256()); })
2462
2463static __inline__ __m256i __DEFAULT_FN_ATTRS
2464_mm256_sllv_epi16 (__m256i __A, __m256i __B)
2465{
2466  return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2467              (__v16hi) __B,
2468              (__v16hi)
2469              _mm256_setzero_si256 (),
2470              (__mmask16) -1);
2471}
2472
2473static __inline__ __m256i __DEFAULT_FN_ATTRS
2474_mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2475      __m256i __B)
2476{
2477  return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2478              (__v16hi) __B,
2479              (__v16hi) __W,
2480              (__mmask16) __U);
2481}
2482
2483static __inline__ __m256i __DEFAULT_FN_ATTRS
2484_mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2485{
2486  return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2487              (__v16hi) __B,
2488              (__v16hi)
2489              _mm256_setzero_si256 (),
2490              (__mmask16) __U);
2491}
2492
2493static __inline__ __m128i __DEFAULT_FN_ATTRS
2494_mm_sllv_epi16 (__m128i __A, __m128i __B)
2495{
2496  return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2497             (__v8hi) __B,
2498             (__v8hi)
2499             _mm_setzero_hi (),
2500             (__mmask8) -1);
2501}
2502
2503static __inline__ __m128i __DEFAULT_FN_ATTRS
2504_mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2505         __m128i __B)
2506{
2507  return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2508             (__v8hi) __B,
2509             (__v8hi) __W,
2510             (__mmask8) __U);
2511}
2512
2513static __inline__ __m128i __DEFAULT_FN_ATTRS
2514_mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2515{
2516  return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2517             (__v8hi) __B,
2518             (__v8hi)
2519             _mm_setzero_si128 (),
2520             (__mmask8) __U);
2521}
2522
2523static __inline__ __m128i __DEFAULT_FN_ATTRS
2524_mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2525        __m128i __B)
2526{
2527  return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
2528             (__v8hi) __B,
2529             (__v8hi) __W,
2530             (__mmask8) __U);
2531}
2532
2533static __inline__ __m128i __DEFAULT_FN_ATTRS
2534_mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2535{
2536  return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
2537             (__v8hi) __B,
2538             (__v8hi)
2539             _mm_setzero_si128 (),
2540             (__mmask8) __U);
2541}
2542
2543static __inline__ __m256i __DEFAULT_FN_ATTRS
2544_mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2545           __m128i __B)
2546{
2547  return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
2548             (__v8hi) __B,
2549             (__v16hi) __W,
2550             (__mmask16) __U);
2551}
2552
2553static __inline__ __m256i __DEFAULT_FN_ATTRS
2554_mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2555{
2556  return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
2557             (__v8hi) __B,
2558             (__v16hi)
2559             _mm256_setzero_si256 (),
2560             (__mmask16) __U);
2561}
2562
2563#define _mm_mask_slli_epi16(W, U, A, B) __extension__ ({ \
2564  (__m128i)__builtin_ia32_psllwi128_mask((__v8hi)(__m128i)(A), (int)(B), \
2565                                         (__v8hi)(__m128i)(W), \
2566                                         (__mmask8)(U)); })
2567
2568#define _mm_maskz_slli_epi16(U, A, B) __extension__ ({ \
2569  (__m128i)__builtin_ia32_psllwi128_mask((__v8hi)(__m128i)(A), (int)(B), \
2570                                         (__v8hi)_mm_setzero_si128(), \
2571                                         (__mmask8)(U)); })
2572
2573#define _mm256_mask_slli_epi16(W, U, A, B) __extension__ ({ \
2574  (__m256i)__builtin_ia32_psllwi256_mask((__v16hi)(__m256i)(A), (int)(B), \
2575                                         (__v16hi)(__m256i)(W), \
2576                                         (__mmask16)(U)); })
2577
2578#define _mm256_maskz_slli_epi16(U, A, B) __extension__ ({ \
2579  (__m256i)__builtin_ia32_psllwi256_mask((__v16hi)(__m256i)(A), (int)(B), \
2580                                         (__v16hi)_mm256_setzero_si256(), \
2581                                         (__mmask16)(U)); })
2582
2583
2584
2585static __inline__ __m256i __DEFAULT_FN_ATTRS
2586_mm256_srlv_epi16 (__m256i __A, __m256i __B)
2587{
2588  return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2589              (__v16hi) __B,
2590              (__v16hi)
2591              _mm256_setzero_si256 (),
2592              (__mmask16) -1);
2593}
2594
2595static __inline__ __m256i __DEFAULT_FN_ATTRS
2596_mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2597      __m256i __B)
2598{
2599  return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2600              (__v16hi) __B,
2601              (__v16hi) __W,
2602              (__mmask16) __U);
2603}
2604
2605static __inline__ __m256i __DEFAULT_FN_ATTRS
2606_mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2607{
2608  return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2609              (__v16hi) __B,
2610              (__v16hi)
2611              _mm256_setzero_si256 (),
2612              (__mmask16) __U);
2613}
2614
2615static __inline__ __m128i __DEFAULT_FN_ATTRS
2616_mm_srlv_epi16 (__m128i __A, __m128i __B)
2617{
2618  return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2619             (__v8hi) __B,
2620             (__v8hi)
2621             _mm_setzero_hi (),
2622             (__mmask8) -1);
2623}
2624
2625static __inline__ __m128i __DEFAULT_FN_ATTRS
2626_mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2627         __m128i __B)
2628{
2629  return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2630             (__v8hi) __B,
2631             (__v8hi) __W,
2632             (__mmask8) __U);
2633}
2634
2635static __inline__ __m128i __DEFAULT_FN_ATTRS
2636_mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2637{
2638  return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2639             (__v8hi) __B,
2640             (__v8hi)
2641             _mm_setzero_si128 (),
2642             (__mmask8) __U);
2643}
2644
2645static __inline__ __m256i __DEFAULT_FN_ATTRS
2646_mm256_srav_epi16 (__m256i __A, __m256i __B)
2647{
2648  return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2649              (__v16hi) __B,
2650              (__v16hi)
2651              _mm256_setzero_si256 (),
2652              (__mmask16) -1);
2653}
2654
2655static __inline__ __m256i __DEFAULT_FN_ATTRS
2656_mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2657      __m256i __B)
2658{
2659  return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2660              (__v16hi) __B,
2661              (__v16hi) __W,
2662              (__mmask16) __U);
2663}
2664
2665static __inline__ __m256i __DEFAULT_FN_ATTRS
2666_mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2667{
2668  return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2669              (__v16hi) __B,
2670              (__v16hi)
2671              _mm256_setzero_si256 (),
2672              (__mmask16) __U);
2673}
2674
2675static __inline__ __m128i __DEFAULT_FN_ATTRS
2676_mm_srav_epi16 (__m128i __A, __m128i __B)
2677{
2678  return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2679             (__v8hi) __B,
2680             (__v8hi)
2681             _mm_setzero_hi (),
2682             (__mmask8) -1);
2683}
2684
2685static __inline__ __m128i __DEFAULT_FN_ATTRS
2686_mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2687         __m128i __B)
2688{
2689  return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2690             (__v8hi) __B,
2691             (__v8hi) __W,
2692             (__mmask8) __U);
2693}
2694
2695static __inline__ __m128i __DEFAULT_FN_ATTRS
2696_mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2697{
2698  return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2699             (__v8hi) __B,
2700             (__v8hi)
2701             _mm_setzero_si128 (),
2702             (__mmask8) __U);
2703}
2704
2705static __inline__ __m128i __DEFAULT_FN_ATTRS
2706_mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2707        __m128i __B)
2708{
2709  return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
2710             (__v8hi) __B,
2711             (__v8hi) __W,
2712             (__mmask8) __U);
2713}
2714
2715static __inline__ __m128i __DEFAULT_FN_ATTRS
2716_mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2717{
2718  return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
2719             (__v8hi) __B,
2720             (__v8hi)
2721             _mm_setzero_si128 (),
2722             (__mmask8) __U);
2723}
2724
2725static __inline__ __m256i __DEFAULT_FN_ATTRS
2726_mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2727           __m128i __B)
2728{
2729  return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
2730             (__v8hi) __B,
2731             (__v16hi) __W,
2732             (__mmask16) __U);
2733}
2734
2735static __inline__ __m256i __DEFAULT_FN_ATTRS
2736_mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2737{
2738  return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
2739             (__v8hi) __B,
2740             (__v16hi)
2741             _mm256_setzero_si256 (),
2742             (__mmask16) __U);
2743}
2744
2745#define _mm_mask_srai_epi16(W, U, A, imm) __extension__ ({ \
2746  (__m128i)__builtin_ia32_psrawi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2747                                         (__v8hi)(__m128i)(W), \
2748                                         (__mmask8)(U)); })
2749
2750#define _mm_maskz_srai_epi16(U, A, imm) __extension__ ({ \
2751  (__m128i)__builtin_ia32_psrawi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2752                                         (__v8hi)_mm_setzero_si128(), \
2753                                         (__mmask8)(U)); })
2754
2755#define _mm256_mask_srai_epi16(W, U, A, imm) __extension__ ({ \
2756  (__m256i)__builtin_ia32_psrawi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2757                                         (__v16hi)(__m256i)(W), \
2758                                         (__mmask16)(U)); })
2759
2760#define _mm256_maskz_srai_epi16(U, A, imm) __extension__ ({ \
2761  (__m256i)__builtin_ia32_psrawi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2762                                         (__v16hi)_mm256_setzero_si256(), \
2763                                         (__mmask16)(U)); })
2764
2765static __inline__ __m128i __DEFAULT_FN_ATTRS
2766_mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2767        __m128i __B)
2768{
2769  return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
2770             (__v8hi) __B,
2771             (__v8hi) __W,
2772             (__mmask8) __U);
2773}
2774
2775static __inline__ __m128i __DEFAULT_FN_ATTRS
2776_mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2777{
2778  return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
2779             (__v8hi) __B,
2780             (__v8hi)
2781             _mm_setzero_si128 (),
2782             (__mmask8) __U);
2783}
2784
2785static __inline__ __m256i __DEFAULT_FN_ATTRS
2786_mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2787           __m128i __B)
2788{
2789  return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
2790             (__v8hi) __B,
2791             (__v16hi) __W,
2792             (__mmask16) __U);
2793}
2794
2795static __inline__ __m256i __DEFAULT_FN_ATTRS
2796_mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2797{
2798  return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
2799             (__v8hi) __B,
2800             (__v16hi)
2801             _mm256_setzero_si256 (),
2802             (__mmask16) __U);
2803}
2804
2805#define _mm_mask_srli_epi16(W, U, A, imm) __extension__ ({ \
2806  (__m128i)__builtin_ia32_psrlwi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2807                                         (__v8hi)(__m128i)(W), \
2808                                         (__mmask8)(U)); })
2809
2810#define _mm_maskz_srli_epi16(U, A, imm) __extension__ ({ \
2811  (__m128i)__builtin_ia32_psrlwi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2812                                         (__v8hi)_mm_setzero_si128(), \
2813                                         (__mmask8)(U)); })
2814
2815#define _mm256_mask_srli_epi16(W, U, A, imm) __extension__ ({ \
2816  (__m256i)__builtin_ia32_psrlwi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2817                                         (__v16hi)(__m256i)(W), \
2818                                         (__mmask16)(U)); })
2819
2820#define _mm256_maskz_srli_epi16(U, A, imm) __extension__ ({ \
2821  (__m256i)__builtin_ia32_psrlwi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2822                                         (__v16hi)_mm256_setzero_si256(), \
2823                                         (__mmask16)(U)); })
2824
2825static __inline__ __m128i __DEFAULT_FN_ATTRS
2826_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2827{
2828  return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2829                (__v8hi) __A,
2830                (__v8hi) __W);
2831}
2832
2833static __inline__ __m128i __DEFAULT_FN_ATTRS
2834_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
2835{
2836  return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2837                (__v8hi) __A,
2838                (__v8hi) _mm_setzero_hi ());
2839}
2840
2841static __inline__ __m256i __DEFAULT_FN_ATTRS
2842_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
2843{
2844  return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2845                (__v16hi) __A,
2846                (__v16hi) __W);
2847}
2848
2849static __inline__ __m256i __DEFAULT_FN_ATTRS
2850_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
2851{
2852  return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2853                (__v16hi) __A,
2854                (__v16hi) _mm256_setzero_si256 ());
2855}
2856
2857static __inline__ __m128i __DEFAULT_FN_ATTRS
2858_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
2859{
2860  return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2861                (__v16qi) __A,
2862                (__v16qi) __W);
2863}
2864
2865static __inline__ __m128i __DEFAULT_FN_ATTRS
2866_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
2867{
2868  return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2869                (__v16qi) __A,
2870                (__v16qi) _mm_setzero_hi ());
2871}
2872
2873static __inline__ __m256i __DEFAULT_FN_ATTRS
2874_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
2875{
2876  return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2877                (__v32qi) __A,
2878                (__v32qi) __W);
2879}
2880
2881static __inline__ __m256i __DEFAULT_FN_ATTRS
2882_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2883{
2884  return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2885                (__v32qi) __A,
2886                (__v32qi) _mm256_setzero_si256 ());
2887}
2888
2889
2890static __inline__ __m128i __DEFAULT_FN_ATTRS
2891_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2892{
2893  return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2894                 (__v16qi) __O,
2895                 __M);
2896}
2897
2898static __inline__ __m128i __DEFAULT_FN_ATTRS
2899_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2900{
2901  return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2902                 (__v16qi)
2903                 _mm_setzero_si128 (),
2904                 __M);
2905}
2906
2907static __inline__ __m256i __DEFAULT_FN_ATTRS
2908_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2909{
2910  return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2911                 (__v32qi) __O,
2912                 __M);
2913}
2914
2915static __inline__ __m256i __DEFAULT_FN_ATTRS
2916_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2917{
2918  return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2919                 (__v32qi)
2920                 _mm256_setzero_si256 (),
2921                 __M);
2922}
2923
2924static __inline__ __m128i __DEFAULT_FN_ATTRS
2925_mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
2926{
2927  return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2928                 (__v8hi) __W,
2929                 (__mmask8) __U);
2930}
2931
2932static __inline__ __m128i __DEFAULT_FN_ATTRS
2933_mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
2934{
2935  return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2936                 (__v8hi)
2937                 _mm_setzero_hi (),
2938                 (__mmask8) __U);
2939}
2940
2941static __inline__ __m256i __DEFAULT_FN_ATTRS
2942_mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
2943{
2944  return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2945                 (__v16hi) __W,
2946                 (__mmask16) __U);
2947}
2948
2949static __inline__ __m256i __DEFAULT_FN_ATTRS
2950_mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
2951{
2952  return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2953                 (__v16hi)
2954                 _mm256_setzero_si256 (),
2955                 (__mmask16) __U);
2956}
2957
2958static __inline__ __m128i __DEFAULT_FN_ATTRS
2959_mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
2960{
2961  return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2962                 (__v16qi) __W,
2963                 (__mmask16) __U);
2964}
2965
2966static __inline__ __m128i __DEFAULT_FN_ATTRS
2967_mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
2968{
2969  return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2970                 (__v16qi)
2971                 _mm_setzero_si128 (),
2972                 (__mmask16) __U);
2973}
2974
2975static __inline__ __m256i __DEFAULT_FN_ATTRS
2976_mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
2977{
2978  return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2979                 (__v32qi) __W,
2980                 (__mmask32) __U);
2981}
2982
2983static __inline__ __m256i __DEFAULT_FN_ATTRS
2984_mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
2985{
2986  return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2987                 (__v32qi)
2988                 _mm256_setzero_si256 (),
2989                 (__mmask32) __U);
2990}
2991static __inline__ void __DEFAULT_FN_ATTRS
2992_mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
2993{
2994  __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
2995             (__v8hi) __A,
2996             (__mmask8) __U);
2997}
2998
2999static __inline__ void __DEFAULT_FN_ATTRS
3000_mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
3001{
3002  __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
3003             (__v16hi) __A,
3004             (__mmask16) __U);
3005}
3006
3007static __inline__ void __DEFAULT_FN_ATTRS
3008_mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
3009{
3010  __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
3011             (__v16qi) __A,
3012             (__mmask16) __U);
3013}
3014
3015static __inline__ void __DEFAULT_FN_ATTRS
3016_mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
3017{
3018  __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
3019             (__v32qi) __A,
3020             (__mmask32) __U);
3021}
3022
3023static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3024_mm_test_epi8_mask (__m128i __A, __m128i __B)
3025{
3026  return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
3027            (__v16qi) __B,
3028            (__mmask16) -1);
3029}
3030
3031static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3032_mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3033{
3034  return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
3035            (__v16qi) __B, __U);
3036}
3037
3038static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3039_mm256_test_epi8_mask (__m256i __A, __m256i __B)
3040{
3041  return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
3042            (__v32qi) __B,
3043            (__mmask32) -1);
3044}
3045
3046static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3047_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3048{
3049  return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
3050            (__v32qi) __B, __U);
3051}
3052
3053static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3054_mm_test_epi16_mask (__m128i __A, __m128i __B)
3055{
3056  return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
3057                 (__v8hi) __B,
3058                 (__mmask8) -1);
3059}
3060
3061static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3062_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3063{
3064  return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
3065                 (__v8hi) __B, __U);
3066}
3067
3068static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3069_mm256_test_epi16_mask (__m256i __A, __m256i __B)
3070{
3071  return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
3072            (__v16hi) __B,
3073            (__mmask16) -1);
3074}
3075
3076static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3077_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3078{
3079  return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
3080            (__v16hi) __B, __U);
3081}
3082
3083static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3084_mm_testn_epi8_mask (__m128i __A, __m128i __B)
3085{
3086  return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3087             (__v16qi) __B,
3088             (__mmask16) -1);
3089}
3090
3091static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3092_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3093{
3094  return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3095             (__v16qi) __B, __U);
3096}
3097
3098static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3099_mm256_testn_epi8_mask (__m256i __A, __m256i __B)
3100{
3101  return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3102             (__v32qi) __B,
3103             (__mmask32) -1);
3104}
3105
3106static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3107_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3108{
3109  return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3110             (__v32qi) __B, __U);
3111}
3112
3113static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3114_mm_testn_epi16_mask (__m128i __A, __m128i __B)
3115{
3116  return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3117            (__v8hi) __B,
3118            (__mmask8) -1);
3119}
3120
3121static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3122_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3123{
3124  return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3125            (__v8hi) __B, __U);
3126}
3127
3128static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3129_mm256_testn_epi16_mask (__m256i __A, __m256i __B)
3130{
3131  return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3132             (__v16hi) __B,
3133             (__mmask16) -1);
3134}
3135
3136static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3137_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3138{
3139  return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3140             (__v16hi) __B, __U);
3141}
3142
3143static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3144_mm_movepi8_mask (__m128i __A)
3145{
3146  return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
3147}
3148
3149static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3150_mm256_movepi8_mask (__m256i __A)
3151{
3152  return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
3153}
3154
3155static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3156_mm_movepi16_mask (__m128i __A)
3157{
3158  return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
3159}
3160
3161static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3162_mm256_movepi16_mask (__m256i __A)
3163{
3164  return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
3165}
3166
3167static __inline__ __m128i __DEFAULT_FN_ATTRS
3168_mm_movm_epi8 (__mmask16 __A)
3169{
3170  return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
3171}
3172
3173static __inline__ __m256i __DEFAULT_FN_ATTRS
3174_mm256_movm_epi8 (__mmask32 __A)
3175{
3176  return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
3177}
3178
3179static __inline__ __m128i __DEFAULT_FN_ATTRS
3180_mm_movm_epi16 (__mmask8 __A)
3181{
3182  return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
3183}
3184
3185static __inline__ __m256i __DEFAULT_FN_ATTRS
3186_mm256_movm_epi16 (__mmask16 __A)
3187{
3188  return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
3189}
3190
3191static __inline__ __m128i __DEFAULT_FN_ATTRS
3192_mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
3193{
3194  return (__m128i)__builtin_ia32_selectb_128(__M,
3195                                             (__v16qi) _mm_broadcastb_epi8(__A),
3196                                             (__v16qi) __O);
3197}
3198
3199static __inline__ __m128i __DEFAULT_FN_ATTRS
3200_mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
3201{
3202  return (__m128i)__builtin_ia32_selectb_128(__M,
3203                                             (__v16qi) _mm_broadcastb_epi8(__A),
3204                                             (__v16qi) _mm_setzero_si128());
3205}
3206
3207static __inline__ __m256i __DEFAULT_FN_ATTRS
3208_mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
3209{
3210  return (__m256i)__builtin_ia32_selectb_256(__M,
3211                                             (__v32qi) _mm256_broadcastb_epi8(__A),
3212                                             (__v32qi) __O);
3213}
3214
3215static __inline__ __m256i __DEFAULT_FN_ATTRS
3216_mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
3217{
3218  return (__m256i)__builtin_ia32_selectb_256(__M,
3219                                             (__v32qi) _mm256_broadcastb_epi8(__A),
3220                                             (__v32qi) _mm256_setzero_si256());
3221}
3222
3223static __inline__ __m128i __DEFAULT_FN_ATTRS
3224_mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
3225{
3226  return (__m128i)__builtin_ia32_selectw_128(__M,
3227                                             (__v8hi) _mm_broadcastw_epi16(__A),
3228                                             (__v8hi) __O);
3229}
3230
3231static __inline__ __m128i __DEFAULT_FN_ATTRS
3232_mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
3233{
3234  return (__m128i)__builtin_ia32_selectw_128(__M,
3235                                             (__v8hi) _mm_broadcastw_epi16(__A),
3236                                             (__v8hi) _mm_setzero_si128());
3237}
3238
3239static __inline__ __m256i __DEFAULT_FN_ATTRS
3240_mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
3241{
3242  return (__m256i)__builtin_ia32_selectw_256(__M,
3243                                             (__v16hi) _mm256_broadcastw_epi16(__A),
3244                                             (__v16hi) __O);
3245}
3246
3247static __inline__ __m256i __DEFAULT_FN_ATTRS
3248_mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
3249{
3250  return (__m256i)__builtin_ia32_selectw_256(__M,
3251                                             (__v16hi) _mm256_broadcastw_epi16(__A),
3252                                             (__v16hi) _mm256_setzero_si256());
3253}
3254
3255static __inline__ __m256i __DEFAULT_FN_ATTRS
3256_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
3257{
3258  return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3259                 (__v16hi) __O,
3260                 __M);
3261}
3262
3263static __inline__ __m256i __DEFAULT_FN_ATTRS
3264_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
3265{
3266  return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3267                 (__v16hi) _mm256_setzero_si256 (),
3268                 __M);
3269}
3270
3271static __inline__ __m128i __DEFAULT_FN_ATTRS
3272_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
3273{
3274  return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3275                 (__v8hi) __O,
3276                 __M);
3277}
3278
3279static __inline__ __m128i __DEFAULT_FN_ATTRS
3280_mm_maskz_set1_epi16 (__mmask8 __M, short __A)
3281{
3282  return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3283                 (__v8hi) _mm_setzero_si128 (),
3284                 __M);
3285}
3286
3287static __inline__ __m128i __DEFAULT_FN_ATTRS
3288_mm_permutexvar_epi16 (__m128i __A, __m128i __B)
3289{
3290  return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3291                 (__v8hi) __A,
3292                 (__v8hi) _mm_undefined_si128 (),
3293                 (__mmask8) -1);
3294}
3295
3296static __inline__ __m128i __DEFAULT_FN_ATTRS
3297_mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
3298{
3299  return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3300                 (__v8hi) __A,
3301                 (__v8hi) _mm_setzero_si128 (),
3302                 (__mmask8) __M);
3303}
3304
3305static __inline__ __m128i __DEFAULT_FN_ATTRS
3306_mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
3307          __m128i __B)
3308{
3309  return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3310                 (__v8hi) __A,
3311                 (__v8hi) __W,
3312                 (__mmask8) __M);
3313}
3314
3315static __inline__ __m256i __DEFAULT_FN_ATTRS
3316_mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
3317{
3318  return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3319                 (__v16hi) __A,
3320                 (__v16hi) _mm256_undefined_si256 (),
3321                 (__mmask16) -1);
3322}
3323
3324static __inline__ __m256i __DEFAULT_FN_ATTRS
3325_mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
3326        __m256i __B)
3327{
3328  return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3329                 (__v16hi) __A,
3330                 (__v16hi) _mm256_setzero_si256 (),
3331                 (__mmask16) __M);
3332}
3333
3334static __inline__ __m256i __DEFAULT_FN_ATTRS
3335_mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
3336             __m256i __B)
3337{
3338  return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3339                 (__v16hi) __A,
3340                 (__v16hi) __W,
3341                 (__mmask16) __M);
3342}
3343
3344#define _mm_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
3345  (__m128i)__builtin_ia32_palignr128_mask((__v16qi)(__m128i)(A), \
3346                                          (__v16qi)(__m128i)(B), (int)(N), \
3347                                          (__v16qi)(__m128i)(W), \
3348                                          (__mmask16)(U)); })
3349
3350#define _mm_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
3351  (__m128i)__builtin_ia32_palignr128_mask((__v16qi)(__m128i)(A), \
3352                                          (__v16qi)(__m128i)(B), (int)(N), \
3353                                          (__v16qi)_mm_setzero_si128(), \
3354                                          (__mmask16)(U)); })
3355
3356#define _mm256_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
3357  (__m256i)__builtin_ia32_palignr256_mask((__v32qi)(__m256i)(A), \
3358                                          (__v32qi)(__m256i)(B), (int)(N), \
3359                                          (__v32qi)(__m256i)(W), \
3360                                          (__mmask32)(U)); })
3361
3362#define _mm256_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
3363  (__m256i)__builtin_ia32_palignr256_mask((__v32qi)(__m256i)(A), \
3364                                          (__v32qi)(__m256i)(B), (int)(N), \
3365                                          (__v32qi)_mm256_setzero_si256(), \
3366                                          (__mmask32)(U)); })
3367
3368#define _mm_dbsad_epu8(A, B, imm) __extension__ ({ \
3369  (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
3370                                           (__v16qi)(__m128i)(B), (int)(imm), \
3371                                           (__v8hi)_mm_setzero_hi(), \
3372                                           (__mmask8)-1); })
3373
3374#define _mm_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
3375  (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
3376                                           (__v16qi)(__m128i)(B), (int)(imm), \
3377                                           (__v8hi)(__m128i)(W), \
3378                                           (__mmask8)(U)); })
3379
3380#define _mm_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
3381  (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
3382                                           (__v16qi)(__m128i)(B), (int)(imm), \
3383                                           (__v8hi)_mm_setzero_si128(), \
3384                                           (__mmask8)(U)); })
3385
3386#define _mm256_dbsad_epu8(A, B, imm) __extension__ ({ \
3387  (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
3388                                           (__v32qi)(__m256i)(B), (int)(imm), \
3389                                           (__v16hi)_mm256_setzero_si256(), \
3390                                           (__mmask16)-1); })
3391
3392#define _mm256_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
3393  (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
3394                                           (__v32qi)(__m256i)(B), (int)(imm), \
3395                                           (__v16hi)(__m256i)(W), \
3396                                           (__mmask16)(U)); })
3397
3398#define _mm256_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
3399  (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
3400                                           (__v32qi)(__m256i)(B), (int)(imm), \
3401                                           (__v16hi)_mm256_setzero_si256(), \
3402                                           (__mmask16)(U)); })
3403
3404#undef __DEFAULT_FN_ATTRS
3405
3406#endif /* __AVX512VLBWINTRIN_H */
3407