blob: d8e67fc15a571a4235c30eaa049b6d9651175f69 [file] [log] [blame]
Ben Murdoch097c5b22016-05-18 11:27:45 +01001/*===---- 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){ 0LL, 0LL };
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_blendmb_128_mask ((__v16qi) __A,
790 (__v16qi) __W,
791 (__mmask16) __U);
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_blendmb_256_mask ((__v32qi) __A,
798 (__v32qi) __W,
799 (__mmask32) __U);
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_blendmw_128_mask ((__v8hi) __A,
806 (__v8hi) __W,
807 (__mmask8) __U);
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_blendmw_256_mask ((__v16hi) __A,
814 (__v16hi) __W,
815 (__mmask16) __U);
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__ __m128i __DEFAULT_FN_ATTRS
2003_mm256_cvtepi16_epi8 (__m256i __A) {
2004 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2005 (__v16qi) _mm_setzero_si128(),
2006 (__mmask16) -1);
2007}
2008
2009static __inline__ __m128i __DEFAULT_FN_ATTRS
2010_mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
2011 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2012 (__v16qi) __O,
2013 __M);
2014}
2015
2016static __inline__ __m128i __DEFAULT_FN_ATTRS
2017_mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
2018 return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2019 (__v16qi) _mm_setzero_si128(),
2020 __M);
2021}
2022
2023static __inline__ __m128i __DEFAULT_FN_ATTRS
2024_mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
2025 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2026 (__v8hi) __Y,
2027 (__v8hi) __W,
2028 (__mmask8) __U);
2029}
2030
2031static __inline__ __m128i __DEFAULT_FN_ATTRS
2032_mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
2033 return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2034 (__v8hi) __Y,
2035 (__v8hi) _mm_setzero_si128(),
2036 (__mmask8) __U);
2037}
2038
2039static __inline__ __m256i __DEFAULT_FN_ATTRS
2040_mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
2041 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2042 (__v16hi) __Y,
2043 (__v16hi) __W,
2044 (__mmask16) __U);
2045}
2046
2047static __inline__ __m256i __DEFAULT_FN_ATTRS
2048_mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
2049 return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2050 (__v16hi) __Y,
2051 (__v16hi) _mm256_setzero_si256(),
2052 (__mmask16) __U);
2053}
2054
2055static __inline__ __m128i __DEFAULT_FN_ATTRS
2056_mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2057 __m128i __B) {
2058 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2059 (__v8hi) __B,
2060 (__v8hi) __W,
2061 (__mmask8) __U);
2062}
2063
2064static __inline__ __m128i __DEFAULT_FN_ATTRS
2065_mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B) {
2066 return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2067 (__v8hi) __B,
2068 (__v8hi) _mm_setzero_si128(),
2069 (__mmask8) __U);
2070}
2071
2072static __inline__ __m256i __DEFAULT_FN_ATTRS
2073_mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2074 __m256i __B) {
2075 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2076 (__v16hi) __B,
2077 (__v16hi) __W,
2078 (__mmask16) __U);
2079}
2080
2081static __inline__ __m256i __DEFAULT_FN_ATTRS
2082_mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B) {
2083 return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2084 (__v16hi) __B,
2085 (__v16hi) _mm256_setzero_si256(),
2086 (__mmask16) __U);
2087}
2088
2089static __inline__ __m128i __DEFAULT_FN_ATTRS
2090_mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2091 __m128i __B) {
2092 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2093 (__v8hi) __B,
2094 (__v8hi) __W,
2095 (__mmask8) __U);
2096}
2097
2098static __inline__ __m128i __DEFAULT_FN_ATTRS
2099_mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2100 return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2101 (__v8hi) __B,
2102 (__v8hi) _mm_setzero_si128(),
2103 (__mmask8) __U);
2104}
2105
2106static __inline__ __m256i __DEFAULT_FN_ATTRS
2107_mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2108 __m256i __B) {
2109 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2110 (__v16hi) __B,
2111 (__v16hi) __W,
2112 (__mmask16) __U);
2113}
2114
2115static __inline__ __m256i __DEFAULT_FN_ATTRS
2116_mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2117 return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2118 (__v16hi) __B,
2119 (__v16hi) _mm256_setzero_si256(),
2120 (__mmask16) __U);
2121}
2122
2123static __inline__ __m128i __DEFAULT_FN_ATTRS
2124_mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2125 __m128i __B) {
2126 return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2127 (__v16qi) __B,
2128 (__v16qi) __W,
2129 (__mmask16) __U);
2130}
2131
2132static __inline__ __m128i __DEFAULT_FN_ATTRS
2133_mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
2134 return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2135 (__v16qi) __B,
2136 (__v16qi) _mm_setzero_si128(),
2137 (__mmask16) __U);
2138}
2139
2140static __inline__ __m256i __DEFAULT_FN_ATTRS
2141_mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2142 __m256i __B) {
2143 return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2144 (__v32qi) __B,
2145 (__v32qi) __W,
2146 (__mmask32) __U);
2147}
2148
2149static __inline__ __m256i __DEFAULT_FN_ATTRS
2150_mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
2151 return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2152 (__v32qi) __B,
2153 (__v32qi) _mm256_setzero_si256(),
2154 (__mmask32) __U);
2155}
2156
2157static __inline__ __m128i __DEFAULT_FN_ATTRS
2158_mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2159 __m128i __B) {
2160 return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2161 (__v8hi) __B,
2162 (__v8hi) __W,
2163 (__mmask8) __U);
2164}
2165
2166static __inline__ __m128i __DEFAULT_FN_ATTRS
2167_mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2168 return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2169 (__v8hi) __B,
2170 (__v8hi) _mm_setzero_si128(),
2171 (__mmask8) __U);
2172}
2173
2174static __inline__ __m256i __DEFAULT_FN_ATTRS
2175_mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2176 __m256i __B) {
2177 return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2178 (__v16hi) __B,
2179 (__v16hi) __W,
2180 (__mmask16) __U);
2181}
2182
2183static __inline__ __m256i __DEFAULT_FN_ATTRS
2184_mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2185 return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2186 (__v16hi) __B,
2187 (__v16hi) _mm256_setzero_si256(),
2188 (__mmask16) __U);
2189}
2190
2191static __inline__ __m128i __DEFAULT_FN_ATTRS
2192_mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2193 __m128i __B) {
2194 return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
2195 (__v16qi) __B,
2196 (__v16qi) __W,
2197 (__mmask16) __U);
2198}
2199
2200static __inline__ __m128i __DEFAULT_FN_ATTRS
2201_mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
2202 return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
2203 (__v16qi) __B,
2204 (__v16qi) _mm_setzero_si128(),
2205 (__mmask16) __U);
2206}
2207
2208static __inline__ __m256i __DEFAULT_FN_ATTRS
2209_mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2210 __m256i __B) {
2211 return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2212 (__v32qi) __B,
2213 (__v32qi) __W,
2214 (__mmask32) __U);
2215}
2216
2217static __inline__ __m256i __DEFAULT_FN_ATTRS
2218_mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
2219 return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2220 (__v32qi) __B,
2221 (__v32qi) _mm256_setzero_si256(),
2222 (__mmask32) __U);
2223}
2224
2225static __inline__ __m128i __DEFAULT_FN_ATTRS
2226_mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2227 __m128i __B) {
2228 return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
2229 (__v8hi) __B,
2230 (__v8hi) __W,
2231 (__mmask8) __U);
2232}
2233
2234static __inline__ __m128i __DEFAULT_FN_ATTRS
2235_mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2236 return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
2237 (__v8hi) __B,
2238 (__v8hi) _mm_setzero_si128(),
2239 (__mmask8) __U);
2240}
2241
2242static __inline__ __m256i __DEFAULT_FN_ATTRS
2243_mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2244 __m256i __B) {
2245 return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
2246 (__v16hi) __B,
2247 (__v16hi) __W,
2248 (__mmask16) __U);
2249}
2250
2251static __inline__ __m256i __DEFAULT_FN_ATTRS
2252_mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2253 return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
2254 (__v16hi) __B,
2255 (__v16hi) _mm256_setzero_si256(),
2256 (__mmask16) __U);
2257}
2258
2259static __inline__ __m128i __DEFAULT_FN_ATTRS
2260_mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2261{
2262 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2263 (__v8hi) __W,
2264 (__mmask8) __U);
2265}
2266
2267static __inline__ __m128i __DEFAULT_FN_ATTRS
2268_mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
2269{
2270 return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2271 (__v8hi)
2272 _mm_setzero_si128 (),
2273 (__mmask8) __U);
2274}
2275
2276static __inline__ __m256i __DEFAULT_FN_ATTRS
2277_mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2278{
2279 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2280 (__v16hi) __W,
2281 (__mmask16) __U);
2282}
2283
2284static __inline__ __m256i __DEFAULT_FN_ATTRS
2285_mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
2286{
2287 return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2288 (__v16hi)
2289 _mm256_setzero_si256 (),
2290 (__mmask16) __U);
2291}
2292
2293
2294static __inline__ __m128i __DEFAULT_FN_ATTRS
2295_mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2296{
2297 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2298 (__v8hi) __W,
2299 (__mmask8) __U);
2300}
2301
2302static __inline__ __m128i __DEFAULT_FN_ATTRS
2303_mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
2304{
2305 return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2306 (__v8hi)
2307 _mm_setzero_si128 (),
2308 (__mmask8) __U);
2309}
2310
2311static __inline__ __m256i __DEFAULT_FN_ATTRS
2312_mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2313{
2314 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2315 (__v16hi) __W,
2316 (__mmask16) __U);
2317}
2318
2319static __inline__ __m256i __DEFAULT_FN_ATTRS
2320_mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
2321{
2322 return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2323 (__v16hi)
2324 _mm256_setzero_si256 (),
2325 (__mmask16) __U);
2326}
2327
2328
2329#define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
2330 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2331 (__v16qi)(__m128i)(b), \
2332 (p), (__mmask16)-1); })
2333
2334#define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2335 (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2336 (__v16qi)(__m128i)(b), \
2337 (p), (__mmask16)(m)); })
2338
2339#define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
2340 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2341 (__v16qi)(__m128i)(b), \
2342 (p), (__mmask16)-1); })
2343
2344#define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2345 (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2346 (__v16qi)(__m128i)(b), \
2347 (p), (__mmask16)(m)); })
2348
2349#define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
2350 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2351 (__v32qi)(__m256i)(b), \
2352 (p), (__mmask32)-1); })
2353
2354#define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2355 (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2356 (__v32qi)(__m256i)(b), \
2357 (p), (__mmask32)(m)); })
2358
2359#define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
2360 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2361 (__v32qi)(__m256i)(b), \
2362 (p), (__mmask32)-1); })
2363
2364#define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2365 (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2366 (__v32qi)(__m256i)(b), \
2367 (p), (__mmask32)(m)); })
2368
2369#define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
2370 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2371 (__v8hi)(__m128i)(b), \
2372 (p), (__mmask8)-1); })
2373
2374#define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2375 (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2376 (__v8hi)(__m128i)(b), \
2377 (p), (__mmask8)(m)); })
2378
2379#define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
2380 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2381 (__v8hi)(__m128i)(b), \
2382 (p), (__mmask8)-1); })
2383
2384#define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2385 (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2386 (__v8hi)(__m128i)(b), \
2387 (p), (__mmask8)(m)); })
2388
2389#define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
2390 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2391 (__v16hi)(__m256i)(b), \
2392 (p), (__mmask16)-1); })
2393
2394#define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2395 (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2396 (__v16hi)(__m256i)(b), \
2397 (p), (__mmask16)(m)); })
2398
2399#define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
2400 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2401 (__v16hi)(__m256i)(b), \
2402 (p), (__mmask16)-1); })
2403
2404#define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2405 (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2406 (__v16hi)(__m256i)(b), \
2407 (p), (__mmask16)(m)); })
2408
2409#define _mm_mask_shufflehi_epi16( __W, __U, __A, __imm) __extension__ ({ \
2410__builtin_ia32_pshufhw128_mask ((__v8hi) __A, (__imm),\
2411 (__v8hi)( __W),\
2412 (__mmask8)( __U));\
2413})
2414
2415#define _mm_maskz_shufflehi_epi16( __U, __A, __imm) __extension__ ({ \
2416__builtin_ia32_pshufhw128_mask ((__v8hi)( __A),( __imm),\
2417 (__v8hi)\
2418 _mm_setzero_hi (),\
2419 (__mmask8)( __U));\
2420})
2421
2422
2423#define _mm256_mask_shufflehi_epi16( __W, __U, __A, __imm) __extension__ ({ \
2424__builtin_ia32_pshufhw256_mask ((__v16hi) (__A),\
2425 (__imm),\
2426 (__v16hi)( __W),\
2427 (__mmask16)( __U));\
2428})
2429
2430
2431#define _mm256_maskz_shufflehi_epi16( __U, __A, __imm) __extension__ ({ \
2432__builtin_ia32_pshufhw256_mask ((__v16hi) (__A),\
2433 (__imm),\
2434 (__v16hi)\
2435 _mm256_setzero_si256 (),\
2436 (__mmask16)( __U));\
2437})
2438
2439
2440#define _mm_mask_shufflelo_epi16( __W, __U, __A, __imm) __extension__ ({ \
2441__builtin_ia32_pshuflw128_mask ((__v8hi) __A, (__imm),\
2442 (__v8hi)( __W),\
2443 (__mmask8)( __U));\
2444})
2445
2446#define _mm_maskz_shufflelo_epi16( __U, __A, __imm) __extension__ ({ \
2447__builtin_ia32_pshuflw128_mask ((__v8hi)( __A),( __imm),\
2448 (__v8hi)\
2449 _mm_setzero_hi (),\
2450 (__mmask8)( __U));\
2451})
2452
2453
2454#define _mm256_mask_shufflelo_epi16( __W, __U, __A, __imm) __extension__ ({ \
2455__builtin_ia32_pshuflw256_mask ((__v16hi) (__A),\
2456 (__imm),\
2457 (__v16hi)( __W),\
2458 (__mmask16)( __U));\
2459})
2460
2461
2462#define _mm256_maskz_shufflelo_epi16( __U, __A, __imm) __extension__ ({ \
2463__builtin_ia32_pshuflw256_mask ((__v16hi) (__A),\
2464 (__imm),\
2465 (__v16hi)\
2466 _mm256_setzero_si256 (),\
2467 (__mmask16)( __U));\
2468})
2469
2470static __inline__ __m256i __DEFAULT_FN_ATTRS
2471_mm256_sllv_epi16 (__m256i __A, __m256i __B)
2472{
2473 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2474 (__v16hi) __B,
2475 (__v16hi)
2476 _mm256_setzero_si256 (),
2477 (__mmask16) -1);
2478}
2479
2480static __inline__ __m256i __DEFAULT_FN_ATTRS
2481_mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2482 __m256i __B)
2483{
2484 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2485 (__v16hi) __B,
2486 (__v16hi) __W,
2487 (__mmask16) __U);
2488}
2489
2490static __inline__ __m256i __DEFAULT_FN_ATTRS
2491_mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2492{
2493 return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2494 (__v16hi) __B,
2495 (__v16hi)
2496 _mm256_setzero_si256 (),
2497 (__mmask16) __U);
2498}
2499
2500static __inline__ __m128i __DEFAULT_FN_ATTRS
2501_mm_sllv_epi16 (__m128i __A, __m128i __B)
2502{
2503 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2504 (__v8hi) __B,
2505 (__v8hi)
2506 _mm_setzero_hi (),
2507 (__mmask8) -1);
2508}
2509
2510static __inline__ __m128i __DEFAULT_FN_ATTRS
2511_mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2512 __m128i __B)
2513{
2514 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2515 (__v8hi) __B,
2516 (__v8hi) __W,
2517 (__mmask8) __U);
2518}
2519
2520static __inline__ __m128i __DEFAULT_FN_ATTRS
2521_mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2522{
2523 return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2524 (__v8hi) __B,
2525 (__v8hi)
2526 _mm_setzero_si128 (),
2527 (__mmask8) __U);
2528}
2529
2530static __inline__ __m128i __DEFAULT_FN_ATTRS
2531_mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2532 __m128i __B)
2533{
2534 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
2535 (__v8hi) __B,
2536 (__v8hi) __W,
2537 (__mmask8) __U);
2538}
2539
2540static __inline__ __m128i __DEFAULT_FN_ATTRS
2541_mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2542{
2543 return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
2544 (__v8hi) __B,
2545 (__v8hi)
2546 _mm_setzero_si128 (),
2547 (__mmask8) __U);
2548}
2549
2550static __inline__ __m256i __DEFAULT_FN_ATTRS
2551_mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2552 __m128i __B)
2553{
2554 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
2555 (__v8hi) __B,
2556 (__v16hi) __W,
2557 (__mmask16) __U);
2558}
2559
2560static __inline__ __m256i __DEFAULT_FN_ATTRS
2561_mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2562{
2563 return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
2564 (__v8hi) __B,
2565 (__v16hi)
2566 _mm256_setzero_si256 (),
2567 (__mmask16) __U);
2568}
2569
2570#define _mm_mask_slli_epi16( __W, __U, __A, __B) __extension__ ({ \
2571__builtin_ia32_psllwi128_mask ((__v8hi)( __A),( __B),\
2572 (__v8hi)( __W),\
2573 (__mmask8)( __U));\
2574})
2575
2576#define _mm_maskz_slli_epi16( __U, __A, __B) __extension__ ({ \
2577__builtin_ia32_psllwi128_mask ((__v8hi)( __A),( __B),\
2578 (__v8hi)\
2579 _mm_setzero_si128 (),\
2580 (__mmask8)( __U));\
2581})
2582
2583#define _mm256_mask_slli_epi16( __W, __U, __A, __B) __extension__ ({ \
2584__builtin_ia32_psllwi256_mask ((__v16hi)( __A),( __B),\
2585 (__v16hi)( __W),\
2586 (__mmask16)( __U));\
2587})
2588
2589#define _mm256_maskz_slli_epi16( __U, __A, __B) __extension__ ({ \
2590__builtin_ia32_psllwi256_mask ((__v16hi)( __A),( __B),\
2591 (__v16hi)\
2592 _mm256_setzero_si256 (),\
2593 (__mmask16)( __U));\
2594})
2595
2596
2597
2598static __inline__ __m256i __DEFAULT_FN_ATTRS
2599_mm256_srlv_epi16 (__m256i __A, __m256i __B)
2600{
2601 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2602 (__v16hi) __B,
2603 (__v16hi)
2604 _mm256_setzero_si256 (),
2605 (__mmask16) -1);
2606}
2607
2608static __inline__ __m256i __DEFAULT_FN_ATTRS
2609_mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2610 __m256i __B)
2611{
2612 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2613 (__v16hi) __B,
2614 (__v16hi) __W,
2615 (__mmask16) __U);
2616}
2617
2618static __inline__ __m256i __DEFAULT_FN_ATTRS
2619_mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2620{
2621 return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2622 (__v16hi) __B,
2623 (__v16hi)
2624 _mm256_setzero_si256 (),
2625 (__mmask16) __U);
2626}
2627
2628static __inline__ __m128i __DEFAULT_FN_ATTRS
2629_mm_srlv_epi16 (__m128i __A, __m128i __B)
2630{
2631 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2632 (__v8hi) __B,
2633 (__v8hi)
2634 _mm_setzero_hi (),
2635 (__mmask8) -1);
2636}
2637
2638static __inline__ __m128i __DEFAULT_FN_ATTRS
2639_mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2640 __m128i __B)
2641{
2642 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2643 (__v8hi) __B,
2644 (__v8hi) __W,
2645 (__mmask8) __U);
2646}
2647
2648static __inline__ __m128i __DEFAULT_FN_ATTRS
2649_mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2650{
2651 return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2652 (__v8hi) __B,
2653 (__v8hi)
2654 _mm_setzero_si128 (),
2655 (__mmask8) __U);
2656}
2657
2658static __inline__ __m256i __DEFAULT_FN_ATTRS
2659_mm256_srav_epi16 (__m256i __A, __m256i __B)
2660{
2661 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2662 (__v16hi) __B,
2663 (__v16hi)
2664 _mm256_setzero_si256 (),
2665 (__mmask16) -1);
2666}
2667
2668static __inline__ __m256i __DEFAULT_FN_ATTRS
2669_mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2670 __m256i __B)
2671{
2672 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2673 (__v16hi) __B,
2674 (__v16hi) __W,
2675 (__mmask16) __U);
2676}
2677
2678static __inline__ __m256i __DEFAULT_FN_ATTRS
2679_mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2680{
2681 return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2682 (__v16hi) __B,
2683 (__v16hi)
2684 _mm256_setzero_si256 (),
2685 (__mmask16) __U);
2686}
2687
2688static __inline__ __m128i __DEFAULT_FN_ATTRS
2689_mm_srav_epi16 (__m128i __A, __m128i __B)
2690{
2691 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2692 (__v8hi) __B,
2693 (__v8hi)
2694 _mm_setzero_hi (),
2695 (__mmask8) -1);
2696}
2697
2698static __inline__ __m128i __DEFAULT_FN_ATTRS
2699_mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2700 __m128i __B)
2701{
2702 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2703 (__v8hi) __B,
2704 (__v8hi) __W,
2705 (__mmask8) __U);
2706}
2707
2708static __inline__ __m128i __DEFAULT_FN_ATTRS
2709_mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2710{
2711 return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2712 (__v8hi) __B,
2713 (__v8hi)
2714 _mm_setzero_si128 (),
2715 (__mmask8) __U);
2716}
2717
2718static __inline__ __m128i __DEFAULT_FN_ATTRS
2719_mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2720 __m128i __B)
2721{
2722 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
2723 (__v8hi) __B,
2724 (__v8hi) __W,
2725 (__mmask8) __U);
2726}
2727
2728static __inline__ __m128i __DEFAULT_FN_ATTRS
2729_mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2730{
2731 return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
2732 (__v8hi) __B,
2733 (__v8hi)
2734 _mm_setzero_si128 (),
2735 (__mmask8) __U);
2736}
2737
2738static __inline__ __m256i __DEFAULT_FN_ATTRS
2739_mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2740 __m128i __B)
2741{
2742 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
2743 (__v8hi) __B,
2744 (__v16hi) __W,
2745 (__mmask16) __U);
2746}
2747
2748static __inline__ __m256i __DEFAULT_FN_ATTRS
2749_mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2750{
2751 return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
2752 (__v8hi) __B,
2753 (__v16hi)
2754 _mm256_setzero_si256 (),
2755 (__mmask16) __U);
2756}
2757
2758#define _mm_mask_srai_epi16( __W, __U, __A, __imm) __extension__ ({ \
2759__builtin_ia32_psrawi128_mask ((__v8hi)( __A),( __imm),\
2760 (__v8hi)( __W),\
2761 (__mmask8)( __U));\
2762})
2763
2764#define _mm_maskz_srai_epi16( __U, __A, __imm) __extension__ ({ \
2765__builtin_ia32_psrawi128_mask ((__v8hi)( __A),( __imm),\
2766 (__v8hi)\
2767 _mm_setzero_si128 (),\
2768 (__mmask8)( __U));\
2769})
2770
2771#define _mm256_mask_srai_epi16( __W, __U, __A, __imm) __extension__ ({ \
2772__builtin_ia32_psrawi256_mask ((__v16hi)( __A),( __imm),\
2773 (__v16hi)( __W),\
2774 (__mmask16)( __U));\
2775})
2776
2777#define _mm256_maskz_srai_epi16( __U, __A, __imm) __extension__ ({ \
2778__builtin_ia32_psrawi256_mask ((__v16hi)( __A),( __imm),\
2779 (__v16hi)\
2780 _mm256_setzero_si256 (),\
2781 (__mmask16)( __U));\
2782})
2783
2784static __inline__ __m128i __DEFAULT_FN_ATTRS
2785_mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2786 __m128i __B)
2787{
2788 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
2789 (__v8hi) __B,
2790 (__v8hi) __W,
2791 (__mmask8) __U);
2792}
2793
2794static __inline__ __m128i __DEFAULT_FN_ATTRS
2795_mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2796{
2797 return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
2798 (__v8hi) __B,
2799 (__v8hi)
2800 _mm_setzero_si128 (),
2801 (__mmask8) __U);
2802}
2803
2804static __inline__ __m256i __DEFAULT_FN_ATTRS
2805_mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2806 __m128i __B)
2807{
2808 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
2809 (__v8hi) __B,
2810 (__v16hi) __W,
2811 (__mmask16) __U);
2812}
2813
2814static __inline__ __m256i __DEFAULT_FN_ATTRS
2815_mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2816{
2817 return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
2818 (__v8hi) __B,
2819 (__v16hi)
2820 _mm256_setzero_si256 (),
2821 (__mmask16) __U);
2822}
2823
2824#define _mm_mask_srli_epi16( __W, __U, __A, __imm) __extension__ ({ \
2825__builtin_ia32_psrlwi128_mask ((__v8hi)( __A),( __imm),\
2826 (__v8hi)( __W),\
2827 (__mmask8)( __U));\
2828})
2829
2830#define _mm_maskz_srli_epi16( __U, __A, __imm) __extension__ ({ \
2831__builtin_ia32_psrlwi128_mask ((__v8hi)( __A),( __imm),\
2832 (__v8hi)\
2833 _mm_setzero_si128 (),\
2834 (__mmask8)( __U));\
2835})
2836
2837#define _mm256_mask_srli_epi16( __W, __U, __A, __imm) __extension__ ({ \
2838__builtin_ia32_psrlwi256_mask ((__v16hi)( __A),( __imm),\
2839 (__v16hi)( __W),\
2840 (__mmask16)( __U));\
2841})
2842
2843#define _mm256_maskz_srli_epi16( __U, __A, __imm) __extension__ ({ \
2844__builtin_ia32_psrlwi256_mask ((__v16hi)( __A),( __imm),\
2845 (__v16hi)\
2846 _mm256_setzero_si256 (),\
2847 (__mmask16)( __U));\
2848})
2849
2850static __inline__ __m128i __DEFAULT_FN_ATTRS
2851_mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2852{
2853 return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
2854 (__v8hi) __W,
2855 (__mmask8) __U);
2856}
2857
2858static __inline__ __m128i __DEFAULT_FN_ATTRS
2859_mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
2860{
2861 return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
2862 (__v8hi)
2863 _mm_setzero_hi (),
2864 (__mmask8) __U);
2865}
2866
2867static __inline__ __m256i __DEFAULT_FN_ATTRS
2868_mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
2869{
2870 return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
2871 (__v16hi) __W,
2872 (__mmask16) __U);
2873}
2874
2875static __inline__ __m256i __DEFAULT_FN_ATTRS
2876_mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
2877{
2878 return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
2879 (__v16hi)
2880 _mm256_setzero_si256 (),
2881 (__mmask16) __U);
2882}
2883
2884static __inline__ __m128i __DEFAULT_FN_ATTRS
2885_mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
2886{
2887 return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
2888 (__v16qi) __W,
2889 (__mmask16) __U);
2890}
2891
2892static __inline__ __m128i __DEFAULT_FN_ATTRS
2893_mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
2894{
2895 return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
2896 (__v16qi)
2897 _mm_setzero_hi (),
2898 (__mmask16) __U);
2899}
2900
2901static __inline__ __m256i __DEFAULT_FN_ATTRS
2902_mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
2903{
2904 return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
2905 (__v32qi) __W,
2906 (__mmask32) __U);
2907}
2908
2909static __inline__ __m256i __DEFAULT_FN_ATTRS
2910_mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2911{
2912 return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
2913 (__v32qi)
2914 _mm256_setzero_si256 (),
2915 (__mmask32) __U);
2916}
2917
2918
2919static __inline__ __m128i __DEFAULT_FN_ATTRS
2920_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2921{
2922 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2923 (__v16qi) __O,
2924 __M);
2925}
2926
2927static __inline__ __m128i __DEFAULT_FN_ATTRS
2928_mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2929{
2930 return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2931 (__v16qi)
2932 _mm_setzero_si128 (),
2933 __M);
2934}
2935
2936static __inline__ __m256i __DEFAULT_FN_ATTRS
2937_mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2938{
2939 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2940 (__v32qi) __O,
2941 __M);
2942}
2943
2944static __inline__ __m256i __DEFAULT_FN_ATTRS
2945_mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2946{
2947 return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2948 (__v32qi)
2949 _mm256_setzero_si256 (),
2950 __M);
2951}
2952
2953static __inline__ __m128i __DEFAULT_FN_ATTRS
2954_mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
2955{
2956 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2957 (__v8hi) __W,
2958 (__mmask8) __U);
2959}
2960
2961static __inline__ __m128i __DEFAULT_FN_ATTRS
2962_mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
2963{
2964 return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2965 (__v8hi)
2966 _mm_setzero_hi (),
2967 (__mmask8) __U);
2968}
2969
2970static __inline__ __m256i __DEFAULT_FN_ATTRS
2971_mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
2972{
2973 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2974 (__v16hi) __W,
2975 (__mmask16) __U);
2976}
2977
2978static __inline__ __m256i __DEFAULT_FN_ATTRS
2979_mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
2980{
2981 return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2982 (__v16hi)
2983 _mm256_setzero_si256 (),
2984 (__mmask16) __U);
2985}
2986
2987static __inline__ __m128i __DEFAULT_FN_ATTRS
2988_mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
2989{
2990 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2991 (__v16qi) __W,
2992 (__mmask16) __U);
2993}
2994
2995static __inline__ __m128i __DEFAULT_FN_ATTRS
2996_mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
2997{
2998 return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2999 (__v16qi)
3000 _mm_setzero_si128 (),
3001 (__mmask16) __U);
3002}
3003
3004static __inline__ __m256i __DEFAULT_FN_ATTRS
3005_mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
3006{
3007 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
3008 (__v32qi) __W,
3009 (__mmask32) __U);
3010}
3011
3012static __inline__ __m256i __DEFAULT_FN_ATTRS
3013_mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
3014{
3015 return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
3016 (__v32qi)
3017 _mm256_setzero_si256 (),
3018 (__mmask32) __U);
3019}
Ben Murdoch61f157c2016-09-16 13:49:30 +01003020static __inline__ void __DEFAULT_FN_ATTRS
3021_mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
3022{
3023 __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
3024 (__v8hi) __A,
3025 (__mmask8) __U);
3026}
3027
3028static __inline__ void __DEFAULT_FN_ATTRS
3029_mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
3030{
3031 __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
3032 (__v16hi) __A,
3033 (__mmask16) __U);
3034}
3035
3036static __inline__ void __DEFAULT_FN_ATTRS
3037_mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
3038{
3039 __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
3040 (__v16qi) __A,
3041 (__mmask16) __U);
3042}
3043
3044static __inline__ void __DEFAULT_FN_ATTRS
3045_mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
3046{
3047 __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
3048 (__v32qi) __A,
3049 (__mmask32) __U);
3050}
3051
3052static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3053_mm_test_epi8_mask (__m128i __A, __m128i __B)
3054{
3055 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
3056 (__v16qi) __B,
3057 (__mmask16) -1);
3058}
3059
3060static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3061_mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3062{
3063 return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
3064 (__v16qi) __B, __U);
3065}
3066
3067static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3068_mm256_test_epi8_mask (__m256i __A, __m256i __B)
3069{
3070 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
3071 (__v32qi) __B,
3072 (__mmask32) -1);
3073}
3074
3075static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3076_mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3077{
3078 return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
3079 (__v32qi) __B, __U);
3080}
3081
3082static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3083_mm_test_epi16_mask (__m128i __A, __m128i __B)
3084{
3085 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
3086 (__v8hi) __B,
3087 (__mmask8) -1);
3088}
3089
3090static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3091_mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3092{
3093 return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
3094 (__v8hi) __B, __U);
3095}
3096
3097static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3098_mm256_test_epi16_mask (__m256i __A, __m256i __B)
3099{
3100 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
3101 (__v16hi) __B,
3102 (__mmask16) -1);
3103}
3104
3105static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3106_mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3107{
3108 return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
3109 (__v16hi) __B, __U);
3110}
3111
3112static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3113_mm_testn_epi8_mask (__m128i __A, __m128i __B)
3114{
3115 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3116 (__v16qi) __B,
3117 (__mmask16) -1);
3118}
3119
3120static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3121_mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3122{
3123 return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3124 (__v16qi) __B, __U);
3125}
3126
3127static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3128_mm256_testn_epi8_mask (__m256i __A, __m256i __B)
3129{
3130 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3131 (__v32qi) __B,
3132 (__mmask32) -1);
3133}
3134
3135static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3136_mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3137{
3138 return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3139 (__v32qi) __B, __U);
3140}
3141
3142static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3143_mm_testn_epi16_mask (__m128i __A, __m128i __B)
3144{
3145 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3146 (__v8hi) __B,
3147 (__mmask8) -1);
3148}
3149
3150static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3151_mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3152{
3153 return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3154 (__v8hi) __B, __U);
3155}
3156
3157static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3158_mm256_testn_epi16_mask (__m256i __A, __m256i __B)
3159{
3160 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3161 (__v16hi) __B,
3162 (__mmask16) -1);
3163}
3164
3165static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3166_mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3167{
3168 return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3169 (__v16hi) __B, __U);
3170}
3171
3172static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3173_mm_movepi8_mask (__m128i __A)
3174{
3175 return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
3176}
3177
3178static __inline__ __mmask32 __DEFAULT_FN_ATTRS
3179_mm256_movepi8_mask (__m256i __A)
3180{
3181 return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
3182}
3183
3184static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3185_mm_movepi16_mask (__m128i __A)
3186{
3187 return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
3188}
3189
3190static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3191_mm256_movepi16_mask (__m256i __A)
3192{
3193 return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
3194}
3195
3196static __inline__ __m128i __DEFAULT_FN_ATTRS
3197_mm_movm_epi8 (__mmask16 __A)
3198{
3199 return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
3200}
3201
3202static __inline__ __m256i __DEFAULT_FN_ATTRS
3203_mm256_movm_epi8 (__mmask32 __A)
3204{
3205 return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
3206}
3207
3208static __inline__ __m128i __DEFAULT_FN_ATTRS
3209_mm_movm_epi16 (__mmask8 __A)
3210{
3211 return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
3212}
3213
3214static __inline__ __m256i __DEFAULT_FN_ATTRS
3215_mm256_movm_epi16 (__mmask16 __A)
3216{
3217 return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
3218}
3219
3220static __inline__ __m128i __DEFAULT_FN_ATTRS
3221_mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
3222{
3223 return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
3224 (__v16qi) __O,
3225 __M);
3226}
3227
3228static __inline__ __m128i __DEFAULT_FN_ATTRS
3229_mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
3230{
3231 return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
3232 (__v16qi) _mm_setzero_si128 (),
3233 __M);
3234}
3235
3236static __inline__ __m256i __DEFAULT_FN_ATTRS
3237_mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
3238{
3239 return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
3240 (__v32qi) __O,
3241 __M);
3242}
3243
3244static __inline__ __m256i __DEFAULT_FN_ATTRS
3245_mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
3246{
3247 return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
3248 (__v32qi) _mm256_setzero_si256 (),
3249 __M);
3250}
3251
3252static __inline__ __m128i __DEFAULT_FN_ATTRS
3253_mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
3254{
3255 return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
3256 (__v8hi) __O,
3257 __M);
3258}
3259
3260static __inline__ __m128i __DEFAULT_FN_ATTRS
3261_mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
3262{
3263 return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
3264 (__v8hi) _mm_setzero_si128 (),
3265 __M);
3266}
3267
3268static __inline__ __m256i __DEFAULT_FN_ATTRS
3269_mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
3270{
3271 return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
3272 (__v16hi) __O,
3273 __M);
3274}
3275
3276static __inline__ __m256i __DEFAULT_FN_ATTRS
3277_mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
3278{
3279 return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
3280 (__v16hi) _mm256_setzero_si256 (),
3281 __M);
3282}
3283
3284static __inline__ __m256i __DEFAULT_FN_ATTRS
3285_mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
3286{
3287 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3288 (__v16hi) __O,
3289 __M);
3290}
3291
3292static __inline__ __m256i __DEFAULT_FN_ATTRS
3293_mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
3294{
3295 return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3296 (__v16hi) _mm256_setzero_si256 (),
3297 __M);
3298}
3299
3300static __inline__ __m128i __DEFAULT_FN_ATTRS
3301_mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
3302{
3303 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3304 (__v8hi) __O,
3305 __M);
3306}
3307
3308static __inline__ __m128i __DEFAULT_FN_ATTRS
3309_mm_maskz_set1_epi16 (__mmask8 __M, short __A)
3310{
3311 return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3312 (__v8hi) _mm_setzero_si128 (),
3313 __M);
3314}
3315
3316static __inline__ __m128i __DEFAULT_FN_ATTRS
3317_mm_permutexvar_epi16 (__m128i __A, __m128i __B)
3318{
3319 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3320 (__v8hi) __A,
3321 (__v8hi) _mm_undefined_si128 (),
3322 (__mmask8) -1);
3323}
3324
3325static __inline__ __m128i __DEFAULT_FN_ATTRS
3326_mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
3327{
3328 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3329 (__v8hi) __A,
3330 (__v8hi) _mm_setzero_si128 (),
3331 (__mmask8) __M);
3332}
3333
3334static __inline__ __m128i __DEFAULT_FN_ATTRS
3335_mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
3336 __m128i __B)
3337{
3338 return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3339 (__v8hi) __A,
3340 (__v8hi) __W,
3341 (__mmask8) __M);
3342}
3343
3344static __inline__ __m256i __DEFAULT_FN_ATTRS
3345_mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
3346{
3347 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3348 (__v16hi) __A,
3349 (__v16hi) _mm256_undefined_si256 (),
3350 (__mmask16) -1);
3351}
3352
3353static __inline__ __m256i __DEFAULT_FN_ATTRS
3354_mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
3355 __m256i __B)
3356{
3357 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3358 (__v16hi) __A,
3359 (__v16hi) _mm256_setzero_si256 (),
3360 (__mmask16) __M);
3361}
3362
3363static __inline__ __m256i __DEFAULT_FN_ATTRS
3364_mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
3365 __m256i __B)
3366{
3367 return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3368 (__v16hi) __A,
3369 (__v16hi) __W,
3370 (__mmask16) __M);
3371}
3372
3373#define _mm_mask_alignr_epi8( __W, __U, __A, __B, __N) __extension__ ({ \
3374__builtin_ia32_palignr128_mask ((__v2di)( __A),\
3375 (__v2di)( __B),\
3376 ( __N) * 8,\
3377 (__v2di)( __W),\
3378 (__mmask16)( __U));\
3379})
3380
3381#define _mm_maskz_alignr_epi8( __U, __A, __B, __N) __extension__ ({ \
3382__builtin_ia32_palignr128_mask ((__v2di)( __A),\
3383 (__v2di)( __B),\
3384 ( __N) * 8,\
3385 (__v2di)\
3386 _mm_setzero_si128 (),\
3387 (__mmask16)( __U));\
3388})
3389
3390#define _mm256_mask_alignr_epi8( __W, __U, __A, __B, __N) __extension__ ({ \
3391__builtin_ia32_palignr256_mask ((__v4di)( __A),\
3392 (__v4di)( __B),\
3393 ( __N) * 8,\
3394 (__v4di)( __W),\
3395 (__mmask32)( __U));\
3396})
3397
3398#define _mm256_maskz_alignr_epi8( __U, __A, __B, __N) __extension__ ({ \
3399__builtin_ia32_palignr256_mask ((__v4di)( __A),\
3400 (__v4di)( __B),\
3401 ( __N) * 8,\
3402 (__v4di)\
3403 _mm256_setzero_si256 (),\
3404 (__mmask32)( __U));\
3405})
3406
3407#define _mm_dbsad_epu8( __A, __B, __imm) __extension__ ({ \
3408__builtin_ia32_dbpsadbw128_mask ((__v16qi)( __A),\
3409 (__v16qi)( __B),\
3410 ( __imm),\
3411 (__v8hi) _mm_setzero_hi (),\
3412 (__mmask8) -1);\
3413})
3414
3415#define _mm_mask_dbsad_epu8( __W, __U, __A, __B, __imm) __extension__ ({ \
3416__builtin_ia32_dbpsadbw128_mask ((__v16qi)( __A),\
3417 (__v16qi)( __B),\
3418 ( __imm),\
3419 (__v8hi)( __W),\
3420 (__mmask8)( __U));\
3421})
3422
3423#define _mm_maskz_dbsad_epu8( __U, __A, __B, __imm) __extension__ ({ \
3424__builtin_ia32_dbpsadbw128_mask ((__v16qi)( __A),\
3425 (__v16qi)( __B),\
3426 ( __imm),\
3427 (__v8hi) _mm_setzero_si128 (),\
3428 (__mmask8)( __U));\
3429})
3430
3431#define _mm256_dbsad_epu8( __A, __B, __imm) __extension__ ({ \
3432__builtin_ia32_dbpsadbw256_mask ((__v32qi)( __A),\
3433 (__v32qi)( __B),\
3434 ( __imm),\
3435 (__v16hi) _mm256_setzero_si256 (),\
3436 (__mmask16) -1);\
3437})
3438
3439#define _mm256_mask_dbsad_epu8( __W, __U, __A, __B, __imm) __extension__ ({ \
3440__builtin_ia32_dbpsadbw256_mask ((__v32qi)( __A),\
3441 (__v32qi)( __B),\
3442 ( __imm),\
3443 (__v16hi)( __W),\
3444 (__mmask16)( __U));\
3445})
3446
3447#define _mm256_maskz_dbsad_epu8( __U, __A, __B, __imm) __extension__ ({ \
3448__builtin_ia32_dbpsadbw256_mask ((__v32qi)( __A),\
3449 (__v32qi)( __B),\
3450 ( __imm),\
3451 (__v16hi) _mm256_setzero_si256 (),\
3452 (__mmask16)( __U));\
3453})
3454
Ben Murdoch097c5b22016-05-18 11:27:45 +01003455#undef __DEFAULT_FN_ATTRS
3456
3457#endif /* __AVX512VLBWINTRIN_H */