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
34/* Integer compare */
35
36static __inline__ __mmask16 __DEFAULT_FN_ATTRS
37_mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
38  return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
39                                                   (__mmask16)-1);
40}
41
42static __inline__ __mmask16 __DEFAULT_FN_ATTRS
43_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
44  return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
45                                                   __u);
46}
47
48static __inline__ __mmask16 __DEFAULT_FN_ATTRS
49_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
50  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
51                                                 (__mmask16)-1);
52}
53
54static __inline__ __mmask16 __DEFAULT_FN_ATTRS
55_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
56  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
57                                                 __u);
58}
59
60static __inline__ __mmask32 __DEFAULT_FN_ATTRS
61_mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
62  return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
63                                                   (__mmask32)-1);
64}
65
66static __inline__ __mmask32 __DEFAULT_FN_ATTRS
67_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
68  return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
69                                                   __u);
70}
71
72static __inline__ __mmask32 __DEFAULT_FN_ATTRS
73_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
74  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
75                                                 (__mmask32)-1);
76}
77
78static __inline__ __mmask32 __DEFAULT_FN_ATTRS
79_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
80  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
81                                                 __u);
82}
83
84static __inline__ __mmask8 __DEFAULT_FN_ATTRS
85_mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
86  return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
87                                                  (__mmask8)-1);
88}
89
90static __inline__ __mmask8 __DEFAULT_FN_ATTRS
91_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
92  return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
93                                                  __u);
94}
95
96static __inline__ __mmask8 __DEFAULT_FN_ATTRS
97_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
98  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
99                                                (__mmask8)-1);
100}
101
102static __inline__ __mmask8 __DEFAULT_FN_ATTRS
103_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
104  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
105                                                __u);
106}
107
108static __inline__ __mmask16 __DEFAULT_FN_ATTRS
109_mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
110  return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
111                                                   (__mmask16)-1);
112}
113
114static __inline__ __mmask16 __DEFAULT_FN_ATTRS
115_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
116  return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
117                                                   __u);
118}
119
120static __inline__ __mmask16 __DEFAULT_FN_ATTRS
121_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
122  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
123                                                 (__mmask16)-1);
124}
125
126static __inline__ __mmask16 __DEFAULT_FN_ATTRS
127_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
128  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
129                                                 __u);
130}
131
132static __inline__ __mmask16 __DEFAULT_FN_ATTRS
133_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
134  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
135                                                (__mmask16)-1);
136}
137
138static __inline__ __mmask16 __DEFAULT_FN_ATTRS
139_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
140  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
141                                                __u);
142}
143
144static __inline__ __mmask16 __DEFAULT_FN_ATTRS
145_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
146  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
147                                                 (__mmask16)-1);
148}
149
150static __inline__ __mmask16 __DEFAULT_FN_ATTRS
151_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
152  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
153                                                 __u);
154}
155
156static __inline__ __mmask32 __DEFAULT_FN_ATTRS
157_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
158  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
159                                                (__mmask32)-1);
160}
161
162static __inline__ __mmask32 __DEFAULT_FN_ATTRS
163_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
164  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
165                                                __u);
166}
167
168static __inline__ __mmask32 __DEFAULT_FN_ATTRS
169_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
170  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
171                                                 (__mmask32)-1);
172}
173
174static __inline__ __mmask32 __DEFAULT_FN_ATTRS
175_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
176  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
177                                                 __u);
178}
179
180static __inline__ __mmask8 __DEFAULT_FN_ATTRS
181_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
182  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
183                                               (__mmask8)-1);
184}
185
186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
187_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
188  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
189                                               __u);
190}
191
192static __inline__ __mmask8 __DEFAULT_FN_ATTRS
193_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
194  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
195                                                (__mmask8)-1);
196}
197
198static __inline__ __mmask8 __DEFAULT_FN_ATTRS
199_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
200  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
201                                                __u);
202}
203
204static __inline__ __mmask16 __DEFAULT_FN_ATTRS
205_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
206  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
207                                                (__mmask16)-1);
208}
209
210static __inline__ __mmask16 __DEFAULT_FN_ATTRS
211_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
212  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
213                                                __u);
214}
215
216static __inline__ __mmask16 __DEFAULT_FN_ATTRS
217_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
218  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
219                                                 (__mmask16)-1);
220}
221
222static __inline__ __mmask16 __DEFAULT_FN_ATTRS
223_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
224  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
225                                                 __u);
226}
227
228static __inline__ __mmask16 __DEFAULT_FN_ATTRS
229_mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
230  return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
231                                                   (__mmask16)-1);
232}
233
234static __inline__ __mmask16 __DEFAULT_FN_ATTRS
235_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
236  return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
237                                                   __u);
238}
239
240static __inline__ __mmask16 __DEFAULT_FN_ATTRS
241_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
242  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
243                                                 (__mmask16)-1);
244}
245
246static __inline__ __mmask16 __DEFAULT_FN_ATTRS
247_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
248  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
249                                                 __u);
250}
251
252static __inline__ __mmask32 __DEFAULT_FN_ATTRS
253_mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
254  return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
255                                                   (__mmask32)-1);
256}
257
258static __inline__ __mmask32 __DEFAULT_FN_ATTRS
259_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
260  return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
261                                                   __u);
262}
263
264static __inline__ __mmask32 __DEFAULT_FN_ATTRS
265_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
266  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
267                                                 (__mmask32)-1);
268}
269
270static __inline__ __mmask32 __DEFAULT_FN_ATTRS
271_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
272  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
273                                                 __u);
274}
275
276static __inline__ __mmask8 __DEFAULT_FN_ATTRS
277_mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
278  return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
279                                                  (__mmask8)-1);
280}
281
282static __inline__ __mmask8 __DEFAULT_FN_ATTRS
283_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
284  return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
285                                                  __u);
286}
287
288static __inline__ __mmask8 __DEFAULT_FN_ATTRS
289_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
290  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
291                                                (__mmask8)-1);
292}
293
294static __inline__ __mmask8 __DEFAULT_FN_ATTRS
295_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
296  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
297                                                __u);
298}
299
300static __inline__ __mmask16 __DEFAULT_FN_ATTRS
301_mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
302  return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
303                                                   (__mmask16)-1);
304}
305
306static __inline__ __mmask16 __DEFAULT_FN_ATTRS
307_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
308  return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
309                                                   __u);
310}
311
312static __inline__ __mmask16 __DEFAULT_FN_ATTRS
313_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
314  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
315                                                 (__mmask16)-1);
316}
317
318static __inline__ __mmask16 __DEFAULT_FN_ATTRS
319_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
320  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
321                                                 __u);
322}
323
324static __inline__ __mmask16 __DEFAULT_FN_ATTRS
325_mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
326  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
327                                                (__mmask16)-1);
328}
329
330static __inline__ __mmask16 __DEFAULT_FN_ATTRS
331_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
332  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
333                                                __u);
334}
335
336static __inline__ __mmask16 __DEFAULT_FN_ATTRS
337_mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
338  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
339                                                 (__mmask16)-1);
340}
341
342static __inline__ __mmask16 __DEFAULT_FN_ATTRS
343_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
344  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
345                                                 __u);
346}
347
348static __inline__ __mmask32 __DEFAULT_FN_ATTRS
349_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
350  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
351                                                (__mmask32)-1);
352}
353
354static __inline__ __mmask32 __DEFAULT_FN_ATTRS
355_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
356  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
357                                                __u);
358}
359
360static __inline__ __mmask32 __DEFAULT_FN_ATTRS
361_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
362  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
363                                                 (__mmask32)-1);
364}
365
366static __inline__ __mmask32 __DEFAULT_FN_ATTRS
367_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
368  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
369                                                 __u);
370}
371
372static __inline__ __mmask8 __DEFAULT_FN_ATTRS
373_mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
374  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
375                                               (__mmask8)-1);
376}
377
378static __inline__ __mmask8 __DEFAULT_FN_ATTRS
379_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
380  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
381                                               __u);
382}
383
384static __inline__ __mmask8 __DEFAULT_FN_ATTRS
385_mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
386  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
387                                                (__mmask8)-1);
388}
389
390static __inline__ __mmask8 __DEFAULT_FN_ATTRS
391_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
392  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
393                                                __u);
394}
395
396static __inline__ __mmask16 __DEFAULT_FN_ATTRS
397_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
398  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
399                                                (__mmask16)-1);
400}
401
402static __inline__ __mmask16 __DEFAULT_FN_ATTRS
403_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
404  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
405                                                __u);
406}
407
408static __inline__ __mmask16 __DEFAULT_FN_ATTRS
409_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
410  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
411                                                 (__mmask16)-1);
412}
413
414static __inline__ __mmask16 __DEFAULT_FN_ATTRS
415_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
416  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
417                                                 __u);
418}
419
420static __inline__ __mmask16 __DEFAULT_FN_ATTRS
421_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
422  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
423                                                (__mmask16)-1);
424}
425
426static __inline__ __mmask16 __DEFAULT_FN_ATTRS
427_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
428  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
429                                                __u);
430}
431
432static __inline__ __mmask16 __DEFAULT_FN_ATTRS
433_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
434  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
435                                                 (__mmask16)-1);
436}
437
438static __inline__ __mmask16 __DEFAULT_FN_ATTRS
439_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
440  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
441                                                 __u);
442}
443
444static __inline__ __mmask32 __DEFAULT_FN_ATTRS
445_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
446  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
447                                                (__mmask32)-1);
448}
449
450static __inline__ __mmask32 __DEFAULT_FN_ATTRS
451_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
452  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
453                                                __u);
454}
455
456static __inline__ __mmask32 __DEFAULT_FN_ATTRS
457_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
458  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
459                                                 (__mmask32)-1);
460}
461
462static __inline__ __mmask32 __DEFAULT_FN_ATTRS
463_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
464  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
465                                                 __u);
466}
467
468static __inline__ __mmask8 __DEFAULT_FN_ATTRS
469_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
470  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
471                                               (__mmask8)-1);
472}
473
474static __inline__ __mmask8 __DEFAULT_FN_ATTRS
475_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
476  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
477                                               __u);
478}
479
480static __inline__ __mmask8 __DEFAULT_FN_ATTRS
481_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
482  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
483                                                (__mmask8)-1);
484}
485
486static __inline__ __mmask8 __DEFAULT_FN_ATTRS
487_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
488  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
489                                                __u);
490}
491
492static __inline__ __mmask16 __DEFAULT_FN_ATTRS
493_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
494  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
495                                                (__mmask16)-1);
496}
497
498static __inline__ __mmask16 __DEFAULT_FN_ATTRS
499_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
500  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
501                                                __u);
502}
503
504static __inline__ __mmask16 __DEFAULT_FN_ATTRS
505_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
506  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
507                                                 (__mmask16)-1);
508}
509
510static __inline__ __mmask16 __DEFAULT_FN_ATTRS
511_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
512  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
513                                                 __u);
514}
515
516static __inline__ __mmask16 __DEFAULT_FN_ATTRS
517_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
518  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
519                                                (__mmask16)-1);
520}
521
522static __inline__ __mmask16 __DEFAULT_FN_ATTRS
523_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
524  return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
525                                                __u);
526}
527
528static __inline__ __mmask16 __DEFAULT_FN_ATTRS
529_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
530  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
531                                                 (__mmask16)-1);
532}
533
534static __inline__ __mmask16 __DEFAULT_FN_ATTRS
535_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
536  return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
537                                                 __u);
538}
539
540static __inline__ __mmask32 __DEFAULT_FN_ATTRS
541_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
542  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
543                                                (__mmask32)-1);
544}
545
546static __inline__ __mmask32 __DEFAULT_FN_ATTRS
547_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
548  return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
549                                                __u);
550}
551
552static __inline__ __mmask32 __DEFAULT_FN_ATTRS
553_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
554  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
555                                                 (__mmask32)-1);
556}
557
558static __inline__ __mmask32 __DEFAULT_FN_ATTRS
559_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
560  return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
561                                                 __u);
562}
563
564static __inline__ __mmask8 __DEFAULT_FN_ATTRS
565_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
566  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
567                                               (__mmask8)-1);
568}
569
570static __inline__ __mmask8 __DEFAULT_FN_ATTRS
571_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
572  return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
573                                               __u);
574}
575
576static __inline__ __mmask8 __DEFAULT_FN_ATTRS
577_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
578  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
579                                                (__mmask8)-1);
580}
581
582static __inline__ __mmask8 __DEFAULT_FN_ATTRS
583_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
584  return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
585                                                __u);
586}
587
588static __inline__ __mmask16 __DEFAULT_FN_ATTRS
589_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
590  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
591                                                (__mmask16)-1);
592}
593
594static __inline__ __mmask16 __DEFAULT_FN_ATTRS
595_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
596  return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
597                                                __u);
598}
599
600static __inline__ __mmask16 __DEFAULT_FN_ATTRS
601_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
602  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
603                                                 (__mmask16)-1);
604}
605
606static __inline__ __mmask16 __DEFAULT_FN_ATTRS
607_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
608  return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
609                                                 __u);
610}
611
612static __inline__ __m256i __DEFAULT_FN_ATTRS
613_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
614  return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
615             (__v32qi) __B,
616             (__v32qi) __W,
617             (__mmask32) __U);
618}
619
620static __inline__ __m256i __DEFAULT_FN_ATTRS
621_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
622  return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
623             (__v32qi) __B,
624             (__v32qi)
625             _mm256_setzero_si256 (),
626             (__mmask32) __U);
627}
628
629static __inline__ __m256i __DEFAULT_FN_ATTRS
630_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
631  return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
632             (__v16hi) __B,
633             (__v16hi) __W,
634             (__mmask16) __U);
635}
636
637static __inline__ __m256i __DEFAULT_FN_ATTRS
638_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
639  return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
640             (__v16hi) __B,
641             (__v16hi)
642             _mm256_setzero_si256 (),
643             (__mmask16) __U);
644}
645
646static __inline__ __m256i __DEFAULT_FN_ATTRS
647_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
648  return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
649             (__v32qi) __B,
650             (__v32qi) __W,
651             (__mmask32) __U);
652}
653
654static __inline__ __m256i __DEFAULT_FN_ATTRS
655_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
656  return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
657             (__v32qi) __B,
658             (__v32qi)
659             _mm256_setzero_si256 (),
660             (__mmask32) __U);
661}
662
663static __inline__ __m256i __DEFAULT_FN_ATTRS
664_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
665  return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
666             (__v16hi) __B,
667             (__v16hi) __W,
668             (__mmask16) __U);
669}
670
671static __inline__ __m256i __DEFAULT_FN_ATTRS
672_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
673  return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
674             (__v16hi) __B,
675             (__v16hi)
676             _mm256_setzero_si256 (),
677             (__mmask16) __U);
678}
679static __inline__ __m128i __DEFAULT_FN_ATTRS
680_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
681  return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
682             (__v16qi) __B,
683             (__v16qi) __W,
684             (__mmask16) __U);
685}
686
687static __inline__ __m128i __DEFAULT_FN_ATTRS
688_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
689  return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
690             (__v16qi) __B,
691             (__v16qi)
692             _mm_setzero_si128 (),
693             (__mmask16) __U);
694}
695
696static __inline__ __m128i __DEFAULT_FN_ATTRS
697_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
698  return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
699             (__v8hi) __B,
700             (__v8hi) __W,
701             (__mmask8) __U);
702}
703
704static __inline__ __m128i __DEFAULT_FN_ATTRS
705_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
706  return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
707             (__v8hi) __B,
708             (__v8hi)
709             _mm_setzero_si128 (),
710             (__mmask8) __U);
711}
712
713static __inline__ __m128i __DEFAULT_FN_ATTRS
714_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
715  return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
716             (__v16qi) __B,
717             (__v16qi) __W,
718             (__mmask16) __U);
719}
720
721static __inline__ __m128i __DEFAULT_FN_ATTRS
722_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
723  return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
724             (__v16qi) __B,
725             (__v16qi)
726             _mm_setzero_si128 (),
727             (__mmask16) __U);
728}
729
730static __inline__ __m128i __DEFAULT_FN_ATTRS
731_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
732  return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
733             (__v8hi) __B,
734             (__v8hi) __W,
735             (__mmask8) __U);
736}
737
738static __inline__ __m128i __DEFAULT_FN_ATTRS
739_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
740  return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
741             (__v8hi) __B,
742             (__v8hi)
743             _mm_setzero_si128 (),
744             (__mmask8) __U);
745}
746
747static __inline__ __m256i __DEFAULT_FN_ATTRS
748_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
749  return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
750              (__v16hi) __B,
751              (__v16hi) __W,
752              (__mmask16) __U);
753}
754
755static __inline__ __m256i __DEFAULT_FN_ATTRS
756_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
757  return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
758              (__v16hi) __B,
759              (__v16hi)
760              _mm256_setzero_si256 (),
761              (__mmask16) __U);
762}
763
764static __inline__ __m128i __DEFAULT_FN_ATTRS
765_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
766  return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
767              (__v8hi) __B,
768              (__v8hi) __W,
769              (__mmask8) __U);
770}
771
772static __inline__ __m128i __DEFAULT_FN_ATTRS
773_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
774  return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
775              (__v8hi) __B,
776              (__v8hi)
777              _mm_setzero_si128 (),
778              (__mmask8) __U);
779}
780
781static __inline__ __m128i __DEFAULT_FN_ATTRS
782_mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
783{
784  return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A,
785               (__v16qi) __W,
786               (__mmask16) __U);
787}
788
789static __inline__ __m256i __DEFAULT_FN_ATTRS
790_mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
791{
792  return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A,
793               (__v32qi) __W,
794               (__mmask32) __U);
795}
796
797static __inline__ __m128i __DEFAULT_FN_ATTRS
798_mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
799{
800  return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A,
801               (__v8hi) __W,
802               (__mmask8) __U);
803}
804
805static __inline__ __m256i __DEFAULT_FN_ATTRS
806_mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
807{
808  return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A,
809               (__v16hi) __W,
810               (__mmask16) __U);
811}
812
813static __inline__ __m128i __DEFAULT_FN_ATTRS
814_mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
815{
816  return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
817               (__v16qi) __W,
818               (__mmask16) __U);
819}
820
821static __inline__ __m128i __DEFAULT_FN_ATTRS
822_mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
823{
824  return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
825               (__v16qi) _mm_setzero_si128 (),
826               (__mmask16) __U);
827}
828
829static __inline__ __m256i __DEFAULT_FN_ATTRS
830_mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
831{
832  return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
833               (__v32qi) __W,
834               (__mmask32) __U);
835}
836
837static __inline__ __m256i __DEFAULT_FN_ATTRS
838_mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
839{
840  return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
841               (__v32qi) _mm256_setzero_si256 (),
842               (__mmask32) __U);
843}
844
845static __inline__ __m128i __DEFAULT_FN_ATTRS
846_mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
847{
848  return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
849               (__v8hi) __W,
850               (__mmask8) __U);
851}
852
853static __inline__ __m128i __DEFAULT_FN_ATTRS
854_mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
855{
856  return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
857               (__v8hi) _mm_setzero_si128 (),
858               (__mmask8) __U);
859}
860
861static __inline__ __m256i __DEFAULT_FN_ATTRS
862_mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
863{
864  return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
865               (__v16hi) __W,
866               (__mmask16) __U);
867}
868
869static __inline__ __m256i __DEFAULT_FN_ATTRS
870_mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
871{
872  return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
873               (__v16hi) _mm256_setzero_si256 (),
874               (__mmask16) __U);
875}
876
877static __inline__ __m128i __DEFAULT_FN_ATTRS
878_mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
879{
880  return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
881               (__v4si) __B,
882               (__v8hi) _mm_setzero_si128 (), __M);
883}
884
885static __inline__ __m128i __DEFAULT_FN_ATTRS
886_mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
887          __m128i __B)
888{
889  return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
890               (__v4si) __B,
891               (__v8hi) __W, __M);
892}
893
894static __inline__ __m256i __DEFAULT_FN_ATTRS
895_mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
896{
897  return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
898               (__v8si) __B,
899               (__v16hi) _mm256_setzero_si256 (),
900               __M);
901}
902
903static __inline__ __m256i __DEFAULT_FN_ATTRS
904_mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
905       __m256i __B)
906{
907  return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
908               (__v8si) __B,
909               (__v16hi) __W, __M);
910}
911
912static __inline__ __m128i __DEFAULT_FN_ATTRS
913_mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
914{
915  return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
916               (__v8hi) __B,
917               (__v16qi) _mm_setzero_si128 (),
918               __M);
919}
920
921static __inline__ __m128i __DEFAULT_FN_ATTRS
922_mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
923          __m128i __B)
924{
925  return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
926               (__v8hi) __B,
927               (__v16qi) __W,
928               __M);
929}
930
931static __inline__ __m256i __DEFAULT_FN_ATTRS
932_mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
933{
934  return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
935               (__v16hi) __B,
936               (__v32qi) _mm256_setzero_si256 (),
937               __M);
938}
939
940static __inline__ __m256i __DEFAULT_FN_ATTRS
941_mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
942       __m256i __B)
943{
944  return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
945               (__v16hi) __B,
946               (__v32qi) __W,
947               __M);
948}
949
950static __inline__ __m128i __DEFAULT_FN_ATTRS
951_mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
952{
953  return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
954               (__v4si) __B,
955               (__v8hi) _mm_setzero_si128 (),
956               __M);
957}
958
959static __inline__ __m128i __DEFAULT_FN_ATTRS
960_mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
961           __m128i __B)
962{
963  return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
964               (__v4si) __B,
965               (__v8hi) __W, __M);
966}
967
968static __inline__ __m256i __DEFAULT_FN_ATTRS
969_mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
970{
971  return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
972               (__v8si) __B,
973               (__v16hi) _mm256_setzero_si256 (),
974               __M);
975}
976
977static __inline__ __m256i __DEFAULT_FN_ATTRS
978_mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
979        __m256i __B)
980{
981  return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
982               (__v8si) __B,
983               (__v16hi) __W,
984               __M);
985}
986
987static __inline__ __m128i __DEFAULT_FN_ATTRS
988_mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
989{
990  return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
991               (__v8hi) __B,
992               (__v16qi) _mm_setzero_si128 (),
993               __M);
994}
995
996static __inline__ __m128i __DEFAULT_FN_ATTRS
997_mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
998           __m128i __B)
999{
1000  return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
1001               (__v8hi) __B,
1002               (__v16qi) __W,
1003               __M);
1004}
1005
1006static __inline__ __m256i __DEFAULT_FN_ATTRS
1007_mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
1008{
1009  return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
1010               (__v16hi) __B,
1011               (__v32qi) _mm256_setzero_si256 (),
1012               __M);
1013}
1014
1015static __inline__ __m256i __DEFAULT_FN_ATTRS
1016_mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
1017        __m256i __B)
1018{
1019  return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
1020               (__v16hi) __B,
1021               (__v32qi) __W,
1022               __M);
1023}
1024
1025static __inline__ __m128i __DEFAULT_FN_ATTRS
1026_mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1027        __m128i __B)
1028{
1029  return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
1030               (__v16qi) __B,
1031               (__v16qi) __W,
1032               (__mmask16) __U);
1033}
1034
1035static __inline__ __m128i __DEFAULT_FN_ATTRS
1036_mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1037{
1038  return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
1039               (__v16qi) __B,
1040               (__v16qi) _mm_setzero_si128 (),
1041               (__mmask16) __U);
1042}
1043
1044static __inline__ __m256i __DEFAULT_FN_ATTRS
1045_mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1046           __m256i __B)
1047{
1048  return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
1049               (__v32qi) __B,
1050               (__v32qi) __W,
1051               (__mmask32) __U);
1052}
1053
1054static __inline__ __m256i __DEFAULT_FN_ATTRS
1055_mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1056{
1057  return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
1058               (__v32qi) __B,
1059               (__v32qi) _mm256_setzero_si256 (),
1060               (__mmask32) __U);
1061}
1062
1063static __inline__ __m128i __DEFAULT_FN_ATTRS
1064_mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1065         __m128i __B)
1066{
1067  return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
1068               (__v8hi) __B,
1069               (__v8hi) __W,
1070               (__mmask8) __U);
1071}
1072
1073static __inline__ __m128i __DEFAULT_FN_ATTRS
1074_mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1075{
1076  return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
1077               (__v8hi) __B,
1078               (__v8hi) _mm_setzero_si128 (),
1079               (__mmask8) __U);
1080}
1081
1082static __inline__ __m256i __DEFAULT_FN_ATTRS
1083_mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1084      __m256i __B)
1085{
1086  return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
1087               (__v16hi) __B,
1088               (__v16hi) __W,
1089               (__mmask16) __U);
1090}
1091
1092static __inline__ __m256i __DEFAULT_FN_ATTRS
1093_mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
1094{
1095  return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
1096               (__v16hi) __B,
1097               (__v16hi) _mm256_setzero_si256 (),
1098               (__mmask16) __U);
1099}
1100
1101static __inline__ __m128i __DEFAULT_FN_ATTRS
1102_mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1103        __m128i __B)
1104{
1105  return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
1106               (__v16qi) __B,
1107               (__v16qi) __W,
1108               (__mmask16) __U);
1109}
1110
1111static __inline__ __m128i __DEFAULT_FN_ATTRS
1112_mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1113{
1114  return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
1115               (__v16qi) __B,
1116               (__v16qi) _mm_setzero_si128 (),
1117               (__mmask16) __U);
1118}
1119
1120static __inline__ __m256i __DEFAULT_FN_ATTRS
1121_mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1122           __m256i __B)
1123{
1124  return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
1125               (__v32qi) __B,
1126               (__v32qi) __W,
1127               (__mmask32) __U);
1128}
1129
1130static __inline__ __m256i __DEFAULT_FN_ATTRS
1131_mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1132{
1133  return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
1134               (__v32qi) __B,
1135               (__v32qi) _mm256_setzero_si256 (),
1136               (__mmask32) __U);
1137}
1138
1139static __inline__ __m128i __DEFAULT_FN_ATTRS
1140_mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1141         __m128i __B)
1142{
1143  return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
1144               (__v8hi) __B,
1145               (__v8hi) __W,
1146               (__mmask8) __U);
1147}
1148
1149static __inline__ __m128i __DEFAULT_FN_ATTRS
1150_mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1151{
1152  return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
1153               (__v8hi) __B,
1154               (__v8hi) _mm_setzero_si128 (),
1155               (__mmask8) __U);
1156}
1157
1158static __inline__ __m256i __DEFAULT_FN_ATTRS
1159_mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1160      __m256i __B)
1161{
1162  return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
1163               (__v16hi) __B,
1164               (__v16hi) __W,
1165               (__mmask16) __U);
1166}
1167
1168static __inline__ __m256i __DEFAULT_FN_ATTRS
1169_mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1170{
1171  return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
1172               (__v16hi) __B,
1173               (__v16hi) _mm256_setzero_si256 (),
1174               (__mmask16) __U);
1175}
1176
1177static __inline__ __m128i __DEFAULT_FN_ATTRS
1178_mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1179       __m128i __B)
1180{
1181  return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
1182               (__v16qi) __B,
1183               (__v16qi) __W,
1184               (__mmask16) __U);
1185}
1186
1187static __inline__ __m128i __DEFAULT_FN_ATTRS
1188_mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1189{
1190  return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
1191               (__v16qi) __B,
1192               (__v16qi) _mm_setzero_si128 (),
1193               (__mmask16) __U);
1194}
1195
1196static __inline__ __m256i __DEFAULT_FN_ATTRS
1197_mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1198          __m256i __B)
1199{
1200  return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
1201               (__v32qi) __B,
1202               (__v32qi) __W,
1203               (__mmask32) __U);
1204}
1205
1206static __inline__ __m256i __DEFAULT_FN_ATTRS
1207_mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1208{
1209  return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
1210               (__v32qi) __B,
1211               (__v32qi) _mm256_setzero_si256 (),
1212               (__mmask32) __U);
1213}
1214
1215static __inline__ __m128i __DEFAULT_FN_ATTRS
1216_mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1217        __m128i __B)
1218{
1219  return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
1220               (__v8hi) __B,
1221               (__v8hi) __W,
1222               (__mmask8) __U);
1223}
1224
1225static __inline__ __m128i __DEFAULT_FN_ATTRS
1226_mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1227{
1228  return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
1229               (__v8hi) __B,
1230               (__v8hi) _mm_setzero_si128 (),
1231               (__mmask8) __U);
1232}
1233
1234static __inline__ __m256i __DEFAULT_FN_ATTRS
1235_mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1236           __m256i __B)
1237{
1238  return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
1239               (__v16hi) __B,
1240               (__v16hi) __W,
1241               (__mmask16) __U);
1242}
1243
1244static __inline__ __m256i __DEFAULT_FN_ATTRS
1245_mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1246{
1247  return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
1248               (__v16hi) __B,
1249               (__v16hi) _mm256_setzero_si256 (),
1250               (__mmask16) __U);
1251}
1252
1253static __inline__ __m128i __DEFAULT_FN_ATTRS
1254_mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1255{
1256  return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1257               (__v16qi) __B,
1258               (__v16qi) _mm_setzero_si128 (),
1259               (__mmask16) __M);
1260}
1261
1262static __inline__ __m128i __DEFAULT_FN_ATTRS
1263_mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1264       __m128i __B)
1265{
1266  return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1267               (__v16qi) __B,
1268               (__v16qi) __W,
1269               (__mmask16) __M);
1270}
1271
1272static __inline__ __m256i __DEFAULT_FN_ATTRS
1273_mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1274{
1275  return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1276               (__v32qi) __B,
1277               (__v32qi) _mm256_setzero_si256 (),
1278               (__mmask32) __M);
1279}
1280
1281static __inline__ __m256i __DEFAULT_FN_ATTRS
1282_mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1283          __m256i __B)
1284{
1285  return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1286               (__v32qi) __B,
1287               (__v32qi) __W,
1288               (__mmask32) __M);
1289}
1290
1291static __inline__ __m128i __DEFAULT_FN_ATTRS
1292_mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1293{
1294  return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1295               (__v8hi) __B,
1296               (__v8hi) _mm_setzero_si128 (),
1297               (__mmask8) __M);
1298}
1299
1300static __inline__ __m128i __DEFAULT_FN_ATTRS
1301_mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1302        __m128i __B)
1303{
1304  return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1305               (__v8hi) __B,
1306               (__v8hi) __W,
1307               (__mmask8) __M);
1308}
1309
1310static __inline__ __m256i __DEFAULT_FN_ATTRS
1311_mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1312{
1313  return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1314               (__v16hi) __B,
1315               (__v16hi) _mm256_setzero_si256 (),
1316               (__mmask16) __M);
1317}
1318
1319static __inline__ __m256i __DEFAULT_FN_ATTRS
1320_mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1321           __m256i __B)
1322{
1323  return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1324               (__v16hi) __B,
1325               (__v16hi) __W,
1326               (__mmask16) __M);
1327}
1328
1329static __inline__ __m128i __DEFAULT_FN_ATTRS
1330_mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1331{
1332  return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1333               (__v16qi) __B,
1334               (__v16qi) _mm_setzero_si128 (),
1335               (__mmask16) __M);
1336}
1337
1338static __inline__ __m128i __DEFAULT_FN_ATTRS
1339_mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1340       __m128i __B)
1341{
1342  return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1343               (__v16qi) __B,
1344               (__v16qi) __W,
1345               (__mmask16) __M);
1346}
1347
1348static __inline__ __m256i __DEFAULT_FN_ATTRS
1349_mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1350{
1351  return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1352               (__v32qi) __B,
1353               (__v32qi) _mm256_setzero_si256 (),
1354               (__mmask32) __M);
1355}
1356
1357static __inline__ __m256i __DEFAULT_FN_ATTRS
1358_mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1359          __m256i __B)
1360{
1361  return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1362               (__v32qi) __B,
1363               (__v32qi) __W,
1364               (__mmask32) __M);
1365}
1366
1367static __inline__ __m128i __DEFAULT_FN_ATTRS
1368_mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1369{
1370  return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1371               (__v8hi) __B,
1372               (__v8hi) _mm_setzero_si128 (),
1373               (__mmask8) __M);
1374}
1375
1376static __inline__ __m128i __DEFAULT_FN_ATTRS
1377_mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1378        __m128i __B)
1379{
1380  return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1381               (__v8hi) __B,
1382               (__v8hi) __W,
1383               (__mmask8) __M);
1384}
1385
1386static __inline__ __m256i __DEFAULT_FN_ATTRS
1387_mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1388{
1389  return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1390               (__v16hi) __B,
1391               (__v16hi) _mm256_setzero_si256 (),
1392               (__mmask16) __M);
1393}
1394
1395static __inline__ __m256i __DEFAULT_FN_ATTRS
1396_mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1397           __m256i __B)
1398{
1399  return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1400               (__v16hi) __B,
1401               (__v16hi) __W,
1402               (__mmask16) __M);
1403}
1404
1405static __inline__ __m128i __DEFAULT_FN_ATTRS
1406_mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1407{
1408  return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1409               (__v16qi) __B,
1410               (__v16qi) _mm_setzero_si128 (),
1411               (__mmask16) __M);
1412}
1413
1414static __inline__ __m128i __DEFAULT_FN_ATTRS
1415_mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1416       __m128i __B)
1417{
1418  return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1419               (__v16qi) __B,
1420               (__v16qi) __W,
1421               (__mmask16) __M);
1422}
1423
1424static __inline__ __m256i __DEFAULT_FN_ATTRS
1425_mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1426{
1427  return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1428               (__v32qi) __B,
1429               (__v32qi) _mm256_setzero_si256 (),
1430               (__mmask32) __M);
1431}
1432
1433static __inline__ __m256i __DEFAULT_FN_ATTRS
1434_mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1435          __m256i __B)
1436{
1437  return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1438               (__v32qi) __B,
1439               (__v32qi) __W,
1440               (__mmask32) __M);
1441}
1442
1443static __inline__ __m128i __DEFAULT_FN_ATTRS
1444_mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1445{
1446  return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1447               (__v8hi) __B,
1448               (__v8hi) _mm_setzero_si128 (),
1449               (__mmask8) __M);
1450}
1451
1452static __inline__ __m128i __DEFAULT_FN_ATTRS
1453_mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1454        __m128i __B)
1455{
1456  return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1457               (__v8hi) __B,
1458               (__v8hi) __W,
1459               (__mmask8) __M);
1460}
1461
1462static __inline__ __m256i __DEFAULT_FN_ATTRS
1463_mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1464{
1465  return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
1466               (__v16hi) __B,
1467               (__v16hi) _mm256_setzero_si256 (),
1468               (__mmask16) __M);
1469}
1470
1471static __inline__ __m256i __DEFAULT_FN_ATTRS
1472_mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1473           __m256i __B)
1474{
1475  return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
1476               (__v16hi) __B,
1477               (__v16hi) __W,
1478               (__mmask16) __M);
1479}
1480
1481static __inline__ __m128i __DEFAULT_FN_ATTRS
1482_mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1483{
1484  return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1485               (__v16qi) __B,
1486               (__v16qi) _mm_setzero_si128 (),
1487               (__mmask16) __M);
1488}
1489
1490static __inline__ __m128i __DEFAULT_FN_ATTRS
1491_mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1492       __m128i __B)
1493{
1494  return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1495               (__v16qi) __B,
1496               (__v16qi) __W,
1497               (__mmask16) __M);
1498}
1499
1500static __inline__ __m256i __DEFAULT_FN_ATTRS
1501_mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1502{
1503  return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1504               (__v32qi) __B,
1505               (__v32qi) _mm256_setzero_si256 (),
1506               (__mmask32) __M);
1507}
1508
1509static __inline__ __m256i __DEFAULT_FN_ATTRS
1510_mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1511          __m256i __B)
1512{
1513  return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1514               (__v32qi) __B,
1515               (__v32qi) __W,
1516               (__mmask32) __M);
1517}
1518
1519static __inline__ __m128i __DEFAULT_FN_ATTRS
1520_mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1521{
1522  return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
1523               (__v8hi) __B,
1524               (__v8hi) _mm_setzero_si128 (),
1525               (__mmask8) __M);
1526}
1527
1528static __inline__ __m128i __DEFAULT_FN_ATTRS
1529_mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1530        __m128i __B)
1531{
1532  return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
1533               (__v8hi) __B,
1534               (__v8hi) __W,
1535               (__mmask8) __M);
1536}
1537
1538static __inline__ __m256i __DEFAULT_FN_ATTRS
1539_mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1540{
1541  return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
1542               (__v16hi) __B,
1543               (__v16hi) _mm256_setzero_si256 (),
1544               (__mmask16) __M);
1545}
1546
1547static __inline__ __m256i __DEFAULT_FN_ATTRS
1548_mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1549           __m256i __B)
1550{
1551  return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
1552               (__v16hi) __B,
1553               (__v16hi) __W,
1554               (__mmask16) __M);
1555}
1556
1557static __inline__ __m128i __DEFAULT_FN_ATTRS
1558_mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1559           __m128i __B)
1560{
1561  return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
1562               (__v16qi) __B,
1563               (__v16qi) __W,
1564               (__mmask16) __U);
1565}
1566
1567static __inline__ __m128i __DEFAULT_FN_ATTRS
1568_mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1569{
1570  return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
1571               (__v16qi) __B,
1572               (__v16qi) _mm_setzero_si128 (),
1573               (__mmask16) __U);
1574}
1575
1576static __inline__ __m256i __DEFAULT_FN_ATTRS
1577_mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1578        __m256i __B)
1579{
1580  return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
1581               (__v32qi) __B,
1582               (__v32qi) __W,
1583               (__mmask32) __U);
1584}
1585
1586static __inline__ __m256i __DEFAULT_FN_ATTRS
1587_mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1588{
1589  return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
1590               (__v32qi) __B,
1591               (__v32qi) _mm256_setzero_si256 (),
1592               (__mmask32) __U);
1593}
1594
1595static __inline__ __m128i __DEFAULT_FN_ATTRS
1596_mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1597        __m128i __B)
1598{
1599  return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
1600               (__v16qi) __B,
1601               (__v16qi) __W,
1602               (__mmask16) __U);
1603}
1604
1605static __inline__ __m128i __DEFAULT_FN_ATTRS
1606_mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1607{
1608  return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
1609               (__v16qi) __B,
1610               (__v16qi) _mm_setzero_si128 (),
1611               (__mmask16) __U);
1612}
1613
1614static __inline__ __m256i __DEFAULT_FN_ATTRS
1615_mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1616           __m256i __B)
1617{
1618  return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
1619               (__v32qi) __B,
1620               (__v32qi) __W,
1621               (__mmask32) __U);
1622}
1623
1624static __inline__ __m256i __DEFAULT_FN_ATTRS
1625_mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1626{
1627  return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
1628               (__v32qi) __B,
1629               (__v32qi) _mm256_setzero_si256 (),
1630               (__mmask32) __U);
1631}
1632
1633static __inline__ __m128i __DEFAULT_FN_ATTRS
1634_mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1635         __m128i __B)
1636{
1637  return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
1638               (__v8hi) __B,
1639               (__v8hi) __W,
1640               (__mmask8) __U);
1641}
1642
1643static __inline__ __m128i __DEFAULT_FN_ATTRS
1644_mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1645{
1646  return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
1647               (__v8hi) __B,
1648               (__v8hi) _mm_setzero_si128 (),
1649               (__mmask8) __U);
1650}
1651
1652static __inline__ __m256i __DEFAULT_FN_ATTRS
1653_mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1654      __m256i __B)
1655{
1656  return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
1657               (__v16hi) __B,
1658               (__v16hi) __W,
1659               (__mmask16) __U);
1660}
1661
1662static __inline__ __m256i __DEFAULT_FN_ATTRS
1663_mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
1664{
1665  return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
1666               (__v16hi) __B,
1667               (__v16hi) _mm256_setzero_si256 (),
1668               (__mmask16) __U);
1669}
1670
1671static __inline__ __m128i __DEFAULT_FN_ATTRS
1672_mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1673        __m128i __B)
1674{
1675  return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
1676               (__v16qi) __B,
1677               (__v16qi) __W,
1678               (__mmask16) __U);
1679}
1680
1681static __inline__ __m128i __DEFAULT_FN_ATTRS
1682_mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1683{
1684  return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
1685               (__v16qi) __B,
1686               (__v16qi) _mm_setzero_si128 (),
1687               (__mmask16) __U);
1688}
1689
1690static __inline__ __m256i __DEFAULT_FN_ATTRS
1691_mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1692           __m256i __B)
1693{
1694  return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
1695               (__v32qi) __B,
1696               (__v32qi) __W,
1697               (__mmask32) __U);
1698}
1699
1700static __inline__ __m256i __DEFAULT_FN_ATTRS
1701_mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1702{
1703  return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
1704               (__v32qi) __B,
1705               (__v32qi) _mm256_setzero_si256 (),
1706               (__mmask32) __U);
1707}
1708
1709static __inline__ __m128i __DEFAULT_FN_ATTRS
1710_mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1711         __m128i __B)
1712{
1713  return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
1714               (__v8hi) __B,
1715               (__v8hi) __W,
1716               (__mmask8) __U);
1717}
1718
1719static __inline__ __m128i __DEFAULT_FN_ATTRS
1720_mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1721{
1722  return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
1723               (__v8hi) __B,
1724               (__v8hi) _mm_setzero_si128 (),
1725               (__mmask8) __U);
1726}
1727
1728static __inline__ __m256i __DEFAULT_FN_ATTRS
1729_mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1730      __m256i __B)
1731{
1732  return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
1733               (__v16hi) __B,
1734               (__v16hi) __W,
1735               (__mmask16) __U);
1736}
1737
1738static __inline__ __m256i __DEFAULT_FN_ATTRS
1739_mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1740{
1741  return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
1742               (__v16hi) __B,
1743               (__v16hi) _mm256_setzero_si256 (),
1744               (__mmask16) __U);
1745}
1746
1747static __inline__ __m128i __DEFAULT_FN_ATTRS
1748_mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
1749            __m128i __B)
1750{
1751  return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
1752               (__v8hi) __I /* idx */ ,
1753               (__v8hi) __B,
1754               (__mmask8) __U);
1755}
1756
1757static __inline__ __m256i __DEFAULT_FN_ATTRS
1758_mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
1759         __mmask16 __U, __m256i __B)
1760{
1761  return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
1762               (__v16hi) __I /* idx */ ,
1763               (__v16hi) __B,
1764               (__mmask16) __U);
1765}
1766
1767static __inline__ __m128i __DEFAULT_FN_ATTRS
1768_mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
1769{
1770  return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1771               (__v8hi) __A,
1772               (__v8hi) __B,
1773               (__mmask8) -1);
1774}
1775
1776static __inline__ __m128i __DEFAULT_FN_ATTRS
1777_mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
1778           __m128i __B)
1779{
1780  return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1781               (__v8hi) __A,
1782               (__v8hi) __B,
1783               (__mmask8) __U);
1784}
1785
1786static __inline__ __m128i __DEFAULT_FN_ATTRS
1787_mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
1788            __m128i __B)
1789{
1790  return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I/* idx */,
1791               (__v8hi) __A,
1792               (__v8hi) __B,
1793               (__mmask8) __U);
1794}
1795
1796static __inline__ __m256i __DEFAULT_FN_ATTRS
1797_mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
1798{
1799  return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1800               (__v16hi) __A,
1801               (__v16hi) __B,
1802               (__mmask16) -1);
1803}
1804
1805static __inline__ __m256i __DEFAULT_FN_ATTRS
1806_mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
1807        __m256i __I, __m256i __B)
1808{
1809  return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1810               (__v16hi) __A,
1811               (__v16hi) __B,
1812               (__mmask16) __U);
1813}
1814
1815static __inline__ __m256i __DEFAULT_FN_ATTRS
1816_mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
1817         __m256i __I, __m256i __B)
1818{
1819  return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I/* idx */,
1820               (__v16hi) __A,
1821               (__v16hi) __B,
1822               (__mmask16) __U);
1823}
1824
1825static __inline__ __m128i __DEFAULT_FN_ATTRS
1826_mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1827  return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
1828               (__v16qi) __Y,
1829               (__v8hi) __W,
1830               (__mmask8) __U);
1831}
1832
1833static __inline__ __m128i __DEFAULT_FN_ATTRS
1834_mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
1835  return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
1836               (__v16qi) __Y,
1837              (__v8hi) _mm_setzero_si128(),
1838               (__mmask8) __U);
1839}
1840
1841static __inline__ __m256i __DEFAULT_FN_ATTRS
1842_mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
1843         __m256i __Y) {
1844  return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
1845               (__v32qi) __Y,
1846               (__v16hi) __W,
1847               (__mmask16) __U);
1848}
1849
1850static __inline__ __m256i __DEFAULT_FN_ATTRS
1851_mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
1852  return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
1853               (__v32qi) __Y,
1854               (__v16hi) _mm256_setzero_si256(),
1855               (__mmask16) __U);
1856}
1857
1858static __inline__ __m128i __DEFAULT_FN_ATTRS
1859_mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1860         __m128i __B) {
1861  return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
1862               (__v8hi) __B,
1863               (__v4si) __W,
1864               (__mmask8) __U);
1865}
1866
1867static __inline__ __m128i __DEFAULT_FN_ATTRS
1868_mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
1869  return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
1870               (__v8hi) __B,
1871               (__v4si) _mm_setzero_si128(),
1872               (__mmask8) __U);
1873}
1874
1875static __inline__ __m256i __DEFAULT_FN_ATTRS
1876_mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1877  return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
1878               (__v16hi) __B,
1879               (__v8si) __W,
1880               (__mmask8) __U);
1881}
1882
1883static __inline__ __m256i __DEFAULT_FN_ATTRS
1884_mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B) {
1885  return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
1886               (__v16hi) __B,
1887               (__v8si) _mm256_setzero_si256(),
1888               (__mmask8) __U);
1889}
1890
1891static __inline__ __m128i __DEFAULT_FN_ATTRS
1892_mm_cvtsepi16_epi8 (__m128i __A) {
1893  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1894               (__v16qi) _mm_setzero_si128(),
1895               (__mmask8) -1);
1896}
1897
1898static __inline__ __m128i __DEFAULT_FN_ATTRS
1899_mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1900  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1901               (__v16qi) __O,
1902                __M);
1903}
1904
1905static __inline__ __m128i __DEFAULT_FN_ATTRS
1906_mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
1907  return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1908               (__v16qi) _mm_setzero_si128(),
1909               __M);
1910}
1911
1912static __inline__ __m128i __DEFAULT_FN_ATTRS
1913_mm256_cvtsepi16_epi8 (__m256i __A) {
1914  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1915               (__v16qi) _mm_setzero_si128(),
1916               (__mmask16) -1);
1917}
1918
1919static __inline__ __m128i __DEFAULT_FN_ATTRS
1920_mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1921  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1922               (__v16qi) __O,
1923                __M);
1924}
1925
1926static __inline__ __m128i __DEFAULT_FN_ATTRS
1927_mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
1928  return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1929               (__v16qi) _mm_setzero_si128(),
1930               __M);
1931}
1932
1933static __inline__ __m128i __DEFAULT_FN_ATTRS
1934_mm_cvtusepi16_epi8 (__m128i __A) {
1935  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1936                (__v16qi) _mm_setzero_si128(),
1937                (__mmask8) -1);
1938}
1939
1940static __inline__ __m128i __DEFAULT_FN_ATTRS
1941_mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1942  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1943                (__v16qi) __O,
1944                __M);
1945}
1946
1947static __inline__ __m128i __DEFAULT_FN_ATTRS
1948_mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
1949  return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1950                (__v16qi) _mm_setzero_si128(),
1951                __M);
1952}
1953
1954static __inline__ __m128i __DEFAULT_FN_ATTRS
1955_mm256_cvtusepi16_epi8 (__m256i __A) {
1956  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1957                (__v16qi) _mm_setzero_si128(),
1958                (__mmask16) -1);
1959}
1960
1961static __inline__ __m128i __DEFAULT_FN_ATTRS
1962_mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1963  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1964                (__v16qi) __O,
1965                __M);
1966}
1967
1968static __inline__ __m128i __DEFAULT_FN_ATTRS
1969_mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
1970  return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1971                (__v16qi) _mm_setzero_si128(),
1972                __M);
1973}
1974
1975static __inline__ __m128i __DEFAULT_FN_ATTRS
1976_mm_cvtepi16_epi8 (__m128i __A) {
1977
1978  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1979               (__v16qi) _mm_setzero_si128(),
1980               (__mmask8) -1);
1981}
1982
1983static __inline__ __m128i __DEFAULT_FN_ATTRS
1984_mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1985  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1986               (__v16qi) __O,
1987               __M);
1988}
1989
1990static __inline__ __m128i __DEFAULT_FN_ATTRS
1991_mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
1992  return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1993               (__v16qi) _mm_setzero_si128(),
1994               __M);
1995}
1996
1997static __inline__ __m128i __DEFAULT_FN_ATTRS
1998_mm256_cvtepi16_epi8 (__m256i __A) {
1999  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2000               (__v16qi) _mm_setzero_si128(),
2001               (__mmask16) -1);
2002}
2003
2004static __inline__ __m128i __DEFAULT_FN_ATTRS
2005_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
2006  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2007               (__v16qi) __O,
2008               __M);
2009}
2010
2011static __inline__ __m128i __DEFAULT_FN_ATTRS
2012_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
2013  return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2014               (__v16qi) _mm_setzero_si128(),
2015               __M);
2016}
2017
2018static __inline__ __m128i __DEFAULT_FN_ATTRS
2019_mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
2020  return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2021               (__v8hi) __Y,
2022               (__v8hi) __W,
2023               (__mmask8) __U);
2024}
2025
2026static __inline__ __m128i __DEFAULT_FN_ATTRS
2027_mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
2028  return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2029               (__v8hi) __Y,
2030              (__v8hi) _mm_setzero_si128(),
2031               (__mmask8) __U);
2032}
2033
2034static __inline__ __m256i __DEFAULT_FN_ATTRS
2035_mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
2036  return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2037               (__v16hi) __Y,
2038               (__v16hi) __W,
2039               (__mmask16) __U);
2040}
2041
2042static __inline__ __m256i __DEFAULT_FN_ATTRS
2043_mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
2044  return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2045               (__v16hi) __Y,
2046               (__v16hi) _mm256_setzero_si256(),
2047               (__mmask16) __U);
2048}
2049
2050static __inline__ __m128i __DEFAULT_FN_ATTRS
2051_mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2052          __m128i __B) {
2053  return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2054               (__v8hi) __B,
2055               (__v8hi) __W,
2056               (__mmask8) __U);
2057}
2058
2059static __inline__ __m128i __DEFAULT_FN_ATTRS
2060_mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B) {
2061  return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2062               (__v8hi) __B,
2063              (__v8hi) _mm_setzero_si128(),
2064               (__mmask8) __U);
2065}
2066
2067static __inline__ __m256i __DEFAULT_FN_ATTRS
2068_mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2069       __m256i __B) {
2070  return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2071               (__v16hi) __B,
2072               (__v16hi) __W,
2073               (__mmask16) __U);
2074}
2075
2076static __inline__ __m256i __DEFAULT_FN_ATTRS
2077_mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B) {
2078  return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2079               (__v16hi) __B,
2080               (__v16hi) _mm256_setzero_si256(),
2081               (__mmask16) __U);
2082}
2083
2084static __inline__ __m128i __DEFAULT_FN_ATTRS
2085_mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2086          __m128i __B) {
2087  return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2088               (__v8hi) __B,
2089               (__v8hi) __W,
2090               (__mmask8) __U);
2091}
2092
2093static __inline__ __m128i __DEFAULT_FN_ATTRS
2094_mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2095  return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2096               (__v8hi) __B,
2097              (__v8hi) _mm_setzero_si128(),
2098               (__mmask8) __U);
2099}
2100
2101static __inline__ __m256i __DEFAULT_FN_ATTRS
2102_mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2103       __m256i __B) {
2104  return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2105               (__v16hi) __B,
2106               (__v16hi) __W,
2107               (__mmask16) __U);
2108}
2109
2110static __inline__ __m256i __DEFAULT_FN_ATTRS
2111_mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2112  return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2113               (__v16hi) __B,
2114               (__v16hi) _mm256_setzero_si256(),
2115               (__mmask16) __U);
2116}
2117
2118static __inline__ __m128i __DEFAULT_FN_ATTRS
2119_mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2120      __m128i __B) {
2121  return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2122               (__v16qi) __B,
2123               (__v16qi) __W,
2124               (__mmask16) __U);
2125}
2126
2127static __inline__ __m128i __DEFAULT_FN_ATTRS
2128_mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
2129  return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2130               (__v16qi) __B,
2131               (__v16qi) _mm_setzero_si128(),
2132               (__mmask16) __U);
2133}
2134
2135static __inline__ __m256i __DEFAULT_FN_ATTRS
2136_mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2137         __m256i __B) {
2138  return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2139               (__v32qi) __B,
2140               (__v32qi) __W,
2141               (__mmask32) __U);
2142}
2143
2144static __inline__ __m256i __DEFAULT_FN_ATTRS
2145_mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
2146  return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2147               (__v32qi) __B,
2148               (__v32qi) _mm256_setzero_si256(),
2149               (__mmask32) __U);
2150}
2151
2152static __inline__ __m128i __DEFAULT_FN_ATTRS
2153_mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2154       __m128i __B) {
2155  return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2156               (__v8hi) __B,
2157               (__v8hi) __W,
2158               (__mmask8) __U);
2159}
2160
2161static __inline__ __m128i __DEFAULT_FN_ATTRS
2162_mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2163  return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2164               (__v8hi) __B,
2165               (__v8hi) _mm_setzero_si128(),
2166               (__mmask8) __U);
2167}
2168
2169static __inline__ __m256i __DEFAULT_FN_ATTRS
2170_mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2171          __m256i __B) {
2172  return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2173               (__v16hi) __B,
2174               (__v16hi) __W,
2175               (__mmask16) __U);
2176}
2177
2178static __inline__ __m256i __DEFAULT_FN_ATTRS
2179_mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2180  return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2181               (__v16hi) __B,
2182               (__v16hi) _mm256_setzero_si256(),
2183               (__mmask16) __U);
2184}
2185
2186static __inline__ __m128i __DEFAULT_FN_ATTRS
2187_mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2188      __m128i __B) {
2189  return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
2190               (__v16qi) __B,
2191               (__v16qi) __W,
2192               (__mmask16) __U);
2193}
2194
2195static __inline__ __m128i __DEFAULT_FN_ATTRS
2196_mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
2197  return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
2198               (__v16qi) __B,
2199               (__v16qi) _mm_setzero_si128(),
2200               (__mmask16) __U);
2201}
2202
2203static __inline__ __m256i __DEFAULT_FN_ATTRS
2204_mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2205         __m256i __B) {
2206  return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2207               (__v32qi) __B,
2208               (__v32qi) __W,
2209               (__mmask32) __U);
2210}
2211
2212static __inline__ __m256i __DEFAULT_FN_ATTRS
2213_mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
2214  return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2215               (__v32qi) __B,
2216               (__v32qi) _mm256_setzero_si256(),
2217               (__mmask32) __U);
2218}
2219
2220static __inline__ __m128i __DEFAULT_FN_ATTRS
2221_mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2222       __m128i __B) {
2223  return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
2224               (__v8hi) __B,
2225               (__v8hi) __W,
2226               (__mmask8) __U);
2227}
2228
2229static __inline__ __m128i __DEFAULT_FN_ATTRS
2230_mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2231  return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
2232               (__v8hi) __B,
2233               (__v8hi) _mm_setzero_si128(),
2234               (__mmask8) __U);
2235}
2236
2237static __inline__ __m256i __DEFAULT_FN_ATTRS
2238_mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2239          __m256i __B) {
2240  return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
2241               (__v16hi) __B,
2242               (__v16hi) __W,
2243               (__mmask16) __U);
2244}
2245
2246static __inline__ __m256i __DEFAULT_FN_ATTRS
2247_mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2248  return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
2249               (__v16hi) __B,
2250               (__v16hi) _mm256_setzero_si256(),
2251               (__mmask16) __U);
2252}
2253
2254#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
2255  (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2256                                         (__v16qi)(__m128i)(b), \
2257                                         (p), (__mmask16)-1); })
2258
2259#define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2260  (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2261                                         (__v16qi)(__m128i)(b), \
2262                                         (p), (__mmask16)(m)); })
2263
2264#define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
2265  (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2266                                          (__v16qi)(__m128i)(b), \
2267                                          (p), (__mmask16)-1); })
2268
2269#define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2270  (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2271                                          (__v16qi)(__m128i)(b), \
2272                                          (p), (__mmask16)(m)); })
2273
2274#define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
2275  (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2276                                         (__v32qi)(__m256i)(b), \
2277                                         (p), (__mmask32)-1); })
2278
2279#define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2280  (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2281                                         (__v32qi)(__m256i)(b), \
2282                                         (p), (__mmask32)(m)); })
2283
2284#define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
2285  (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2286                                          (__v32qi)(__m256i)(b), \
2287                                          (p), (__mmask32)-1); })
2288
2289#define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2290  (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2291                                          (__v32qi)(__m256i)(b), \
2292                                          (p), (__mmask32)(m)); })
2293
2294#define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
2295  (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2296                                        (__v8hi)(__m128i)(b), \
2297                                        (p), (__mmask8)-1); })
2298
2299#define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2300  (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2301                                        (__v8hi)(__m128i)(b), \
2302                                        (p), (__mmask8)(m)); })
2303
2304#define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
2305  (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2306                                         (__v8hi)(__m128i)(b), \
2307                                         (p), (__mmask8)-1); })
2308
2309#define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2310  (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2311                                         (__v8hi)(__m128i)(b), \
2312                                         (p), (__mmask8)(m)); })
2313
2314#define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
2315  (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2316                                         (__v16hi)(__m256i)(b), \
2317                                         (p), (__mmask16)-1); })
2318
2319#define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2320  (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2321                                         (__v16hi)(__m256i)(b), \
2322                                         (p), (__mmask16)(m)); })
2323
2324#define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
2325  (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2326                                          (__v16hi)(__m256i)(b), \
2327                                          (p), (__mmask16)-1); })
2328
2329#define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2330  (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2331                                          (__v16hi)(__m256i)(b), \
2332                                          (p), (__mmask16)(m)); })
2333
2334#undef __DEFAULT_FN_ATTRS
2335
2336#endif /* __AVX512VLBWINTRIN_H */
2337