]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/clang/lib/Headers/avx512vlbwintrin.h
MFC r355940:
[FreeBSD/FreeBSD.git] / contrib / llvm-project / clang / lib / Headers / avx512vlbwintrin.h
1 /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------===
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7  *===-----------------------------------------------------------------------===
8  */
9
10 #ifndef __IMMINTRIN_H
11 #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
12 #endif
13
14 #ifndef __AVX512VLBWINTRIN_H
15 #define __AVX512VLBWINTRIN_H
16
17 /* Define the default attributes for the functions in this file. */
18 #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"), __min_vector_width__(128)))
19 #define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"), __min_vector_width__(256)))
20
21 /* Integer compare */
22
23 #define _mm_cmp_epi8_mask(a, b, p) \
24   (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
25                                          (__v16qi)(__m128i)(b), (int)(p), \
26                                          (__mmask16)-1)
27
28 #define _mm_mask_cmp_epi8_mask(m, a, b, p) \
29   (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
30                                          (__v16qi)(__m128i)(b), (int)(p), \
31                                          (__mmask16)(m))
32
33 #define _mm_cmp_epu8_mask(a, b, p) \
34   (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
35                                           (__v16qi)(__m128i)(b), (int)(p), \
36                                           (__mmask16)-1)
37
38 #define _mm_mask_cmp_epu8_mask(m, a, b, p) \
39   (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
40                                           (__v16qi)(__m128i)(b), (int)(p), \
41                                           (__mmask16)(m))
42
43 #define _mm256_cmp_epi8_mask(a, b, p) \
44   (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
45                                          (__v32qi)(__m256i)(b), (int)(p), \
46                                          (__mmask32)-1)
47
48 #define _mm256_mask_cmp_epi8_mask(m, a, b, p) \
49   (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
50                                          (__v32qi)(__m256i)(b), (int)(p), \
51                                          (__mmask32)(m))
52
53 #define _mm256_cmp_epu8_mask(a, b, p) \
54   (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
55                                           (__v32qi)(__m256i)(b), (int)(p), \
56                                           (__mmask32)-1)
57
58 #define _mm256_mask_cmp_epu8_mask(m, a, b, p) \
59   (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
60                                           (__v32qi)(__m256i)(b), (int)(p), \
61                                           (__mmask32)(m))
62
63 #define _mm_cmp_epi16_mask(a, b, p) \
64   (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
65                                         (__v8hi)(__m128i)(b), (int)(p), \
66                                         (__mmask8)-1)
67
68 #define _mm_mask_cmp_epi16_mask(m, a, b, p) \
69   (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
70                                         (__v8hi)(__m128i)(b), (int)(p), \
71                                         (__mmask8)(m))
72
73 #define _mm_cmp_epu16_mask(a, b, p) \
74   (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
75                                          (__v8hi)(__m128i)(b), (int)(p), \
76                                          (__mmask8)-1)
77
78 #define _mm_mask_cmp_epu16_mask(m, a, b, p) \
79   (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
80                                          (__v8hi)(__m128i)(b), (int)(p), \
81                                          (__mmask8)(m))
82
83 #define _mm256_cmp_epi16_mask(a, b, p) \
84   (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
85                                          (__v16hi)(__m256i)(b), (int)(p), \
86                                          (__mmask16)-1)
87
88 #define _mm256_mask_cmp_epi16_mask(m, a, b, p) \
89   (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
90                                          (__v16hi)(__m256i)(b), (int)(p), \
91                                          (__mmask16)(m))
92
93 #define _mm256_cmp_epu16_mask(a, b, p) \
94   (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
95                                           (__v16hi)(__m256i)(b), (int)(p), \
96                                           (__mmask16)-1)
97
98 #define _mm256_mask_cmp_epu16_mask(m, a, b, p) \
99   (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
100                                           (__v16hi)(__m256i)(b), (int)(p), \
101                                           (__mmask16)(m))
102
103 #define _mm_cmpeq_epi8_mask(A, B) \
104     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
105 #define _mm_mask_cmpeq_epi8_mask(k, A, B) \
106     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
107 #define _mm_cmpge_epi8_mask(A, B) \
108     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
109 #define _mm_mask_cmpge_epi8_mask(k, A, B) \
110     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
111 #define _mm_cmpgt_epi8_mask(A, B) \
112     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
113 #define _mm_mask_cmpgt_epi8_mask(k, A, B) \
114     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
115 #define _mm_cmple_epi8_mask(A, B) \
116     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
117 #define _mm_mask_cmple_epi8_mask(k, A, B) \
118     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
119 #define _mm_cmplt_epi8_mask(A, B) \
120     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
121 #define _mm_mask_cmplt_epi8_mask(k, A, B) \
122     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
123 #define _mm_cmpneq_epi8_mask(A, B) \
124     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
125 #define _mm_mask_cmpneq_epi8_mask(k, A, B) \
126     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
127
128 #define _mm256_cmpeq_epi8_mask(A, B) \
129     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
130 #define _mm256_mask_cmpeq_epi8_mask(k, A, B) \
131     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
132 #define _mm256_cmpge_epi8_mask(A, B) \
133     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
134 #define _mm256_mask_cmpge_epi8_mask(k, A, B) \
135     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
136 #define _mm256_cmpgt_epi8_mask(A, B) \
137     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
138 #define _mm256_mask_cmpgt_epi8_mask(k, A, B) \
139     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
140 #define _mm256_cmple_epi8_mask(A, B) \
141     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
142 #define _mm256_mask_cmple_epi8_mask(k, A, B) \
143     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
144 #define _mm256_cmplt_epi8_mask(A, B) \
145     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
146 #define _mm256_mask_cmplt_epi8_mask(k, A, B) \
147     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
148 #define _mm256_cmpneq_epi8_mask(A, B) \
149     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
150 #define _mm256_mask_cmpneq_epi8_mask(k, A, B) \
151     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
152
153 #define _mm_cmpeq_epu8_mask(A, B) \
154     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
155 #define _mm_mask_cmpeq_epu8_mask(k, A, B) \
156     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
157 #define _mm_cmpge_epu8_mask(A, B) \
158     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
159 #define _mm_mask_cmpge_epu8_mask(k, A, B) \
160     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
161 #define _mm_cmpgt_epu8_mask(A, B) \
162     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
163 #define _mm_mask_cmpgt_epu8_mask(k, A, B) \
164     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
165 #define _mm_cmple_epu8_mask(A, B) \
166     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
167 #define _mm_mask_cmple_epu8_mask(k, A, B) \
168     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
169 #define _mm_cmplt_epu8_mask(A, B) \
170     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
171 #define _mm_mask_cmplt_epu8_mask(k, A, B) \
172     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
173 #define _mm_cmpneq_epu8_mask(A, B) \
174     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
175 #define _mm_mask_cmpneq_epu8_mask(k, A, B) \
176     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
177
178 #define _mm256_cmpeq_epu8_mask(A, B) \
179     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
180 #define _mm256_mask_cmpeq_epu8_mask(k, A, B) \
181     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
182 #define _mm256_cmpge_epu8_mask(A, B) \
183     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
184 #define _mm256_mask_cmpge_epu8_mask(k, A, B) \
185     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
186 #define _mm256_cmpgt_epu8_mask(A, B) \
187     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
188 #define _mm256_mask_cmpgt_epu8_mask(k, A, B) \
189     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
190 #define _mm256_cmple_epu8_mask(A, B) \
191     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
192 #define _mm256_mask_cmple_epu8_mask(k, A, B) \
193     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
194 #define _mm256_cmplt_epu8_mask(A, B) \
195     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
196 #define _mm256_mask_cmplt_epu8_mask(k, A, B) \
197     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
198 #define _mm256_cmpneq_epu8_mask(A, B) \
199     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
200 #define _mm256_mask_cmpneq_epu8_mask(k, A, B) \
201     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
202
203 #define _mm_cmpeq_epi16_mask(A, B) \
204     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
205 #define _mm_mask_cmpeq_epi16_mask(k, A, B) \
206     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
207 #define _mm_cmpge_epi16_mask(A, B) \
208     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
209 #define _mm_mask_cmpge_epi16_mask(k, A, B) \
210     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
211 #define _mm_cmpgt_epi16_mask(A, B) \
212     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
213 #define _mm_mask_cmpgt_epi16_mask(k, A, B) \
214     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
215 #define _mm_cmple_epi16_mask(A, B) \
216     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
217 #define _mm_mask_cmple_epi16_mask(k, A, B) \
218     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
219 #define _mm_cmplt_epi16_mask(A, B) \
220     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
221 #define _mm_mask_cmplt_epi16_mask(k, A, B) \
222     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
223 #define _mm_cmpneq_epi16_mask(A, B) \
224     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
225 #define _mm_mask_cmpneq_epi16_mask(k, A, B) \
226     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
227
228 #define _mm256_cmpeq_epi16_mask(A, B) \
229     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
230 #define _mm256_mask_cmpeq_epi16_mask(k, A, B) \
231     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
232 #define _mm256_cmpge_epi16_mask(A, B) \
233     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
234 #define _mm256_mask_cmpge_epi16_mask(k, A, B) \
235     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
236 #define _mm256_cmpgt_epi16_mask(A, B) \
237     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
238 #define _mm256_mask_cmpgt_epi16_mask(k, A, B) \
239     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
240 #define _mm256_cmple_epi16_mask(A, B) \
241     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
242 #define _mm256_mask_cmple_epi16_mask(k, A, B) \
243     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
244 #define _mm256_cmplt_epi16_mask(A, B) \
245     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
246 #define _mm256_mask_cmplt_epi16_mask(k, A, B) \
247     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
248 #define _mm256_cmpneq_epi16_mask(A, B) \
249     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
250 #define _mm256_mask_cmpneq_epi16_mask(k, A, B) \
251     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
252
253 #define _mm_cmpeq_epu16_mask(A, B) \
254     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
255 #define _mm_mask_cmpeq_epu16_mask(k, A, B) \
256     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
257 #define _mm_cmpge_epu16_mask(A, B) \
258     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
259 #define _mm_mask_cmpge_epu16_mask(k, A, B) \
260     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
261 #define _mm_cmpgt_epu16_mask(A, B) \
262     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
263 #define _mm_mask_cmpgt_epu16_mask(k, A, B) \
264     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
265 #define _mm_cmple_epu16_mask(A, B) \
266     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
267 #define _mm_mask_cmple_epu16_mask(k, A, B) \
268     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
269 #define _mm_cmplt_epu16_mask(A, B) \
270     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
271 #define _mm_mask_cmplt_epu16_mask(k, A, B) \
272     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
273 #define _mm_cmpneq_epu16_mask(A, B) \
274     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
275 #define _mm_mask_cmpneq_epu16_mask(k, A, B) \
276     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
277
278 #define _mm256_cmpeq_epu16_mask(A, B) \
279     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
280 #define _mm256_mask_cmpeq_epu16_mask(k, A, B) \
281     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
282 #define _mm256_cmpge_epu16_mask(A, B) \
283     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
284 #define _mm256_mask_cmpge_epu16_mask(k, A, B) \
285     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
286 #define _mm256_cmpgt_epu16_mask(A, B) \
287     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
288 #define _mm256_mask_cmpgt_epu16_mask(k, A, B) \
289     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
290 #define _mm256_cmple_epu16_mask(A, B) \
291     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
292 #define _mm256_mask_cmple_epu16_mask(k, A, B) \
293     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
294 #define _mm256_cmplt_epu16_mask(A, B) \
295     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
296 #define _mm256_mask_cmplt_epu16_mask(k, A, B) \
297     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
298 #define _mm256_cmpneq_epu16_mask(A, B) \
299     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
300 #define _mm256_mask_cmpneq_epu16_mask(k, A, B) \
301     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
302
303 static __inline__ __m256i __DEFAULT_FN_ATTRS256
304 _mm256_mask_add_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
305   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
306                                              (__v32qi)_mm256_add_epi8(__A, __B),
307                                              (__v32qi)__W);
308 }
309
310 static __inline__ __m256i __DEFAULT_FN_ATTRS256
311 _mm256_maskz_add_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
312   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
313                                              (__v32qi)_mm256_add_epi8(__A, __B),
314                                              (__v32qi)_mm256_setzero_si256());
315 }
316
317 static __inline__ __m256i __DEFAULT_FN_ATTRS256
318 _mm256_mask_add_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
319   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
320                                              (__v16hi)_mm256_add_epi16(__A, __B),
321                                              (__v16hi)__W);
322 }
323
324 static __inline__ __m256i __DEFAULT_FN_ATTRS256
325 _mm256_maskz_add_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
326   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
327                                              (__v16hi)_mm256_add_epi16(__A, __B),
328                                              (__v16hi)_mm256_setzero_si256());
329 }
330
331 static __inline__ __m256i __DEFAULT_FN_ATTRS256
332 _mm256_mask_sub_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
333   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
334                                              (__v32qi)_mm256_sub_epi8(__A, __B),
335                                              (__v32qi)__W);
336 }
337
338 static __inline__ __m256i __DEFAULT_FN_ATTRS256
339 _mm256_maskz_sub_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
340   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
341                                              (__v32qi)_mm256_sub_epi8(__A, __B),
342                                              (__v32qi)_mm256_setzero_si256());
343 }
344
345 static __inline__ __m256i __DEFAULT_FN_ATTRS256
346 _mm256_mask_sub_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
347   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
348                                              (__v16hi)_mm256_sub_epi16(__A, __B),
349                                              (__v16hi)__W);
350 }
351
352 static __inline__ __m256i __DEFAULT_FN_ATTRS256
353 _mm256_maskz_sub_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
354   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
355                                              (__v16hi)_mm256_sub_epi16(__A, __B),
356                                              (__v16hi)_mm256_setzero_si256());
357 }
358
359 static __inline__ __m128i __DEFAULT_FN_ATTRS128
360 _mm_mask_add_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
361   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
362                                              (__v16qi)_mm_add_epi8(__A, __B),
363                                              (__v16qi)__W);
364 }
365
366 static __inline__ __m128i __DEFAULT_FN_ATTRS128
367 _mm_maskz_add_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
368   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
369                                              (__v16qi)_mm_add_epi8(__A, __B),
370                                              (__v16qi)_mm_setzero_si128());
371 }
372
373 static __inline__ __m128i __DEFAULT_FN_ATTRS128
374 _mm_mask_add_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
375   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
376                                              (__v8hi)_mm_add_epi16(__A, __B),
377                                              (__v8hi)__W);
378 }
379
380 static __inline__ __m128i __DEFAULT_FN_ATTRS128
381 _mm_maskz_add_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
382   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
383                                              (__v8hi)_mm_add_epi16(__A, __B),
384                                              (__v8hi)_mm_setzero_si128());
385 }
386
387 static __inline__ __m128i __DEFAULT_FN_ATTRS128
388 _mm_mask_sub_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
389   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
390                                              (__v16qi)_mm_sub_epi8(__A, __B),
391                                              (__v16qi)__W);
392 }
393
394 static __inline__ __m128i __DEFAULT_FN_ATTRS128
395 _mm_maskz_sub_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
396   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
397                                              (__v16qi)_mm_sub_epi8(__A, __B),
398                                              (__v16qi)_mm_setzero_si128());
399 }
400
401 static __inline__ __m128i __DEFAULT_FN_ATTRS128
402 _mm_mask_sub_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
403   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
404                                              (__v8hi)_mm_sub_epi16(__A, __B),
405                                              (__v8hi)__W);
406 }
407
408 static __inline__ __m128i __DEFAULT_FN_ATTRS128
409 _mm_maskz_sub_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
410   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
411                                              (__v8hi)_mm_sub_epi16(__A, __B),
412                                              (__v8hi)_mm_setzero_si128());
413 }
414
415 static __inline__ __m256i __DEFAULT_FN_ATTRS256
416 _mm256_mask_mullo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
417   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
418                                              (__v16hi)_mm256_mullo_epi16(__A, __B),
419                                              (__v16hi)__W);
420 }
421
422 static __inline__ __m256i __DEFAULT_FN_ATTRS256
423 _mm256_maskz_mullo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
424   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
425                                              (__v16hi)_mm256_mullo_epi16(__A, __B),
426                                              (__v16hi)_mm256_setzero_si256());
427 }
428
429 static __inline__ __m128i __DEFAULT_FN_ATTRS128
430 _mm_mask_mullo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
431   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
432                                              (__v8hi)_mm_mullo_epi16(__A, __B),
433                                              (__v8hi)__W);
434 }
435
436 static __inline__ __m128i __DEFAULT_FN_ATTRS128
437 _mm_maskz_mullo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
438   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
439                                              (__v8hi)_mm_mullo_epi16(__A, __B),
440                                              (__v8hi)_mm_setzero_si128());
441 }
442
443 static __inline__ __m128i __DEFAULT_FN_ATTRS128
444 _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
445 {
446   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
447               (__v16qi) __W,
448               (__v16qi) __A);
449 }
450
451 static __inline__ __m256i __DEFAULT_FN_ATTRS256
452 _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
453 {
454   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
455                (__v32qi) __W,
456                (__v32qi) __A);
457 }
458
459 static __inline__ __m128i __DEFAULT_FN_ATTRS128
460 _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
461 {
462   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
463                (__v8hi) __W,
464                (__v8hi) __A);
465 }
466
467 static __inline__ __m256i __DEFAULT_FN_ATTRS256
468 _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
469 {
470   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
471                (__v16hi) __W,
472                (__v16hi) __A);
473 }
474
475 static __inline__ __m128i __DEFAULT_FN_ATTRS128
476 _mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A)
477 {
478   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
479                                              (__v16qi)_mm_abs_epi8(__A),
480                                              (__v16qi)__W);
481 }
482
483 static __inline__ __m128i __DEFAULT_FN_ATTRS128
484 _mm_maskz_abs_epi8(__mmask16 __U, __m128i __A)
485 {
486   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
487                                              (__v16qi)_mm_abs_epi8(__A),
488                                              (__v16qi)_mm_setzero_si128());
489 }
490
491 static __inline__ __m256i __DEFAULT_FN_ATTRS256
492 _mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A)
493 {
494   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
495                                              (__v32qi)_mm256_abs_epi8(__A),
496                                              (__v32qi)__W);
497 }
498
499 static __inline__ __m256i __DEFAULT_FN_ATTRS256
500 _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
501 {
502   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
503                                              (__v32qi)_mm256_abs_epi8(__A),
504                                              (__v32qi)_mm256_setzero_si256());
505 }
506
507 static __inline__ __m128i __DEFAULT_FN_ATTRS128
508 _mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A)
509 {
510   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
511                                              (__v8hi)_mm_abs_epi16(__A),
512                                              (__v8hi)__W);
513 }
514
515 static __inline__ __m128i __DEFAULT_FN_ATTRS128
516 _mm_maskz_abs_epi16(__mmask8 __U, __m128i __A)
517 {
518   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
519                                              (__v8hi)_mm_abs_epi16(__A),
520                                              (__v8hi)_mm_setzero_si128());
521 }
522
523 static __inline__ __m256i __DEFAULT_FN_ATTRS256
524 _mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A)
525 {
526   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
527                                              (__v16hi)_mm256_abs_epi16(__A),
528                                              (__v16hi)__W);
529 }
530
531 static __inline__ __m256i __DEFAULT_FN_ATTRS256
532 _mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A)
533 {
534   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
535                                              (__v16hi)_mm256_abs_epi16(__A),
536                                              (__v16hi)_mm256_setzero_si256());
537 }
538
539 static __inline__ __m128i __DEFAULT_FN_ATTRS128
540 _mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
541   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
542                                              (__v8hi)_mm_packs_epi32(__A, __B),
543                                              (__v8hi)_mm_setzero_si128());
544 }
545
546 static __inline__ __m128i __DEFAULT_FN_ATTRS128
547 _mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
548 {
549   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
550                                              (__v8hi)_mm_packs_epi32(__A, __B),
551                                              (__v8hi)__W);
552 }
553
554 static __inline__ __m256i __DEFAULT_FN_ATTRS256
555 _mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B)
556 {
557   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
558                                           (__v16hi)_mm256_packs_epi32(__A, __B),
559                                           (__v16hi)_mm256_setzero_si256());
560 }
561
562 static __inline__ __m256i __DEFAULT_FN_ATTRS256
563 _mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
564 {
565   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
566                                           (__v16hi)_mm256_packs_epi32(__A, __B),
567                                           (__v16hi)__W);
568 }
569
570 static __inline__ __m128i __DEFAULT_FN_ATTRS128
571 _mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B)
572 {
573   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
574                                              (__v16qi)_mm_packs_epi16(__A, __B),
575                                              (__v16qi)_mm_setzero_si128());
576 }
577
578 static __inline__ __m128i __DEFAULT_FN_ATTRS128
579 _mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
580 {
581   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
582                                              (__v16qi)_mm_packs_epi16(__A, __B),
583                                              (__v16qi)__W);
584 }
585
586 static __inline__ __m256i __DEFAULT_FN_ATTRS256
587 _mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B)
588 {
589   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
590                                           (__v32qi)_mm256_packs_epi16(__A, __B),
591                                           (__v32qi)_mm256_setzero_si256());
592 }
593
594 static __inline__ __m256i __DEFAULT_FN_ATTRS256
595 _mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
596 {
597   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
598                                           (__v32qi)_mm256_packs_epi16(__A, __B),
599                                           (__v32qi)__W);
600 }
601
602 static __inline__ __m128i __DEFAULT_FN_ATTRS128
603 _mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B)
604 {
605   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
606                                              (__v8hi)_mm_packus_epi32(__A, __B),
607                                              (__v8hi)_mm_setzero_si128());
608 }
609
610 static __inline__ __m128i __DEFAULT_FN_ATTRS128
611 _mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
612 {
613   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
614                                              (__v8hi)_mm_packus_epi32(__A, __B),
615                                              (__v8hi)__W);
616 }
617
618 static __inline__ __m256i __DEFAULT_FN_ATTRS256
619 _mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B)
620 {
621   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
622                                          (__v16hi)_mm256_packus_epi32(__A, __B),
623                                          (__v16hi)_mm256_setzero_si256());
624 }
625
626 static __inline__ __m256i __DEFAULT_FN_ATTRS256
627 _mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
628 {
629   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
630                                          (__v16hi)_mm256_packus_epi32(__A, __B),
631                                          (__v16hi)__W);
632 }
633
634 static __inline__ __m128i __DEFAULT_FN_ATTRS128
635 _mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B)
636 {
637   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
638                                             (__v16qi)_mm_packus_epi16(__A, __B),
639                                             (__v16qi)_mm_setzero_si128());
640 }
641
642 static __inline__ __m128i __DEFAULT_FN_ATTRS128
643 _mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
644 {
645   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
646                                             (__v16qi)_mm_packus_epi16(__A, __B),
647                                             (__v16qi)__W);
648 }
649
650 static __inline__ __m256i __DEFAULT_FN_ATTRS256
651 _mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B)
652 {
653   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
654                                          (__v32qi)_mm256_packus_epi16(__A, __B),
655                                          (__v32qi)_mm256_setzero_si256());
656 }
657
658 static __inline__ __m256i __DEFAULT_FN_ATTRS256
659 _mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
660 {
661   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
662                                          (__v32qi)_mm256_packus_epi16(__A, __B),
663                                          (__v32qi)__W);
664 }
665
666 static __inline__ __m128i __DEFAULT_FN_ATTRS128
667 _mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
668 {
669   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
670                                              (__v16qi)_mm_adds_epi8(__A, __B),
671                                              (__v16qi)__W);
672 }
673
674 static __inline__ __m128i __DEFAULT_FN_ATTRS128
675 _mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B)
676 {
677   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
678                                              (__v16qi)_mm_adds_epi8(__A, __B),
679                                              (__v16qi)_mm_setzero_si128());
680 }
681
682 static __inline__ __m256i __DEFAULT_FN_ATTRS256
683 _mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
684 {
685   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
686                                             (__v32qi)_mm256_adds_epi8(__A, __B),
687                                             (__v32qi)__W);
688 }
689
690 static __inline__ __m256i __DEFAULT_FN_ATTRS256
691 _mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B)
692 {
693   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
694                                             (__v32qi)_mm256_adds_epi8(__A, __B),
695                                             (__v32qi)_mm256_setzero_si256());
696 }
697
698 static __inline__ __m128i __DEFAULT_FN_ATTRS128
699 _mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
700 {
701   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
702                                              (__v8hi)_mm_adds_epi16(__A, __B),
703                                              (__v8hi)__W);
704 }
705
706 static __inline__ __m128i __DEFAULT_FN_ATTRS128
707 _mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B)
708 {
709   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
710                                              (__v8hi)_mm_adds_epi16(__A, __B),
711                                              (__v8hi)_mm_setzero_si128());
712 }
713
714 static __inline__ __m256i __DEFAULT_FN_ATTRS256
715 _mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
716 {
717   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
718                                            (__v16hi)_mm256_adds_epi16(__A, __B),
719                                            (__v16hi)__W);
720 }
721
722 static __inline__ __m256i __DEFAULT_FN_ATTRS256
723 _mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B)
724 {
725   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
726                                            (__v16hi)_mm256_adds_epi16(__A, __B),
727                                            (__v16hi)_mm256_setzero_si256());
728 }
729
730 static __inline__ __m128i __DEFAULT_FN_ATTRS128
731 _mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
732 {
733   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
734                                              (__v16qi)_mm_adds_epu8(__A, __B),
735                                              (__v16qi)__W);
736 }
737
738 static __inline__ __m128i __DEFAULT_FN_ATTRS128
739 _mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B)
740 {
741   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
742                                              (__v16qi)_mm_adds_epu8(__A, __B),
743                                              (__v16qi)_mm_setzero_si128());
744 }
745
746 static __inline__ __m256i __DEFAULT_FN_ATTRS256
747 _mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
748 {
749   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
750                                             (__v32qi)_mm256_adds_epu8(__A, __B),
751                                             (__v32qi)__W);
752 }
753
754 static __inline__ __m256i __DEFAULT_FN_ATTRS256
755 _mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B)
756 {
757   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
758                                             (__v32qi)_mm256_adds_epu8(__A, __B),
759                                             (__v32qi)_mm256_setzero_si256());
760 }
761
762 static __inline__ __m128i __DEFAULT_FN_ATTRS128
763 _mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
764 {
765   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
766                                              (__v8hi)_mm_adds_epu16(__A, __B),
767                                              (__v8hi)__W);
768 }
769
770 static __inline__ __m128i __DEFAULT_FN_ATTRS128
771 _mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B)
772 {
773   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
774                                              (__v8hi)_mm_adds_epu16(__A, __B),
775                                              (__v8hi)_mm_setzero_si128());
776 }
777
778 static __inline__ __m256i __DEFAULT_FN_ATTRS256
779 _mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
780 {
781   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
782                                            (__v16hi)_mm256_adds_epu16(__A, __B),
783                                            (__v16hi)__W);
784 }
785
786 static __inline__ __m256i __DEFAULT_FN_ATTRS256
787 _mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B)
788 {
789   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
790                                            (__v16hi)_mm256_adds_epu16(__A, __B),
791                                            (__v16hi)_mm256_setzero_si256());
792 }
793
794 static __inline__ __m128i __DEFAULT_FN_ATTRS128
795 _mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
796 {
797   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
798                                              (__v16qi)_mm_avg_epu8(__A, __B),
799                                              (__v16qi)__W);
800 }
801
802 static __inline__ __m128i __DEFAULT_FN_ATTRS128
803 _mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B)
804 {
805   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
806                                              (__v16qi)_mm_avg_epu8(__A, __B),
807                                              (__v16qi)_mm_setzero_si128());
808 }
809
810 static __inline__ __m256i __DEFAULT_FN_ATTRS256
811 _mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
812 {
813   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
814                                              (__v32qi)_mm256_avg_epu8(__A, __B),
815                                              (__v32qi)__W);
816 }
817
818 static __inline__ __m256i __DEFAULT_FN_ATTRS256
819 _mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B)
820 {
821   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
822                                              (__v32qi)_mm256_avg_epu8(__A, __B),
823                                              (__v32qi)_mm256_setzero_si256());
824 }
825
826 static __inline__ __m128i __DEFAULT_FN_ATTRS128
827 _mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
828 {
829   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
830                                              (__v8hi)_mm_avg_epu16(__A, __B),
831                                              (__v8hi)__W);
832 }
833
834 static __inline__ __m128i __DEFAULT_FN_ATTRS128
835 _mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B)
836 {
837   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
838                                              (__v8hi)_mm_avg_epu16(__A, __B),
839                                              (__v8hi)_mm_setzero_si128());
840 }
841
842 static __inline__ __m256i __DEFAULT_FN_ATTRS256
843 _mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
844 {
845   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
846                                             (__v16hi)_mm256_avg_epu16(__A, __B),
847                                             (__v16hi)__W);
848 }
849
850 static __inline__ __m256i __DEFAULT_FN_ATTRS256
851 _mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B)
852 {
853   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
854                                             (__v16hi)_mm256_avg_epu16(__A, __B),
855                                             (__v16hi)_mm256_setzero_si256());
856 }
857
858 static __inline__ __m128i __DEFAULT_FN_ATTRS128
859 _mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B)
860 {
861   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
862                                              (__v16qi)_mm_max_epi8(__A, __B),
863                                              (__v16qi)_mm_setzero_si128());
864 }
865
866 static __inline__ __m128i __DEFAULT_FN_ATTRS128
867 _mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
868 {
869   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
870                                              (__v16qi)_mm_max_epi8(__A, __B),
871                                              (__v16qi)__W);
872 }
873
874 static __inline__ __m256i __DEFAULT_FN_ATTRS256
875 _mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B)
876 {
877   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
878                                              (__v32qi)_mm256_max_epi8(__A, __B),
879                                              (__v32qi)_mm256_setzero_si256());
880 }
881
882 static __inline__ __m256i __DEFAULT_FN_ATTRS256
883 _mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
884 {
885   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
886                                              (__v32qi)_mm256_max_epi8(__A, __B),
887                                              (__v32qi)__W);
888 }
889
890 static __inline__ __m128i __DEFAULT_FN_ATTRS128
891 _mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B)
892 {
893   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
894                                              (__v8hi)_mm_max_epi16(__A, __B),
895                                              (__v8hi)_mm_setzero_si128());
896 }
897
898 static __inline__ __m128i __DEFAULT_FN_ATTRS128
899 _mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
900 {
901   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
902                                              (__v8hi)_mm_max_epi16(__A, __B),
903                                              (__v8hi)__W);
904 }
905
906 static __inline__ __m256i __DEFAULT_FN_ATTRS256
907 _mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B)
908 {
909   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
910                                             (__v16hi)_mm256_max_epi16(__A, __B),
911                                             (__v16hi)_mm256_setzero_si256());
912 }
913
914 static __inline__ __m256i __DEFAULT_FN_ATTRS256
915 _mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
916 {
917   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
918                                             (__v16hi)_mm256_max_epi16(__A, __B),
919                                             (__v16hi)__W);
920 }
921
922 static __inline__ __m128i __DEFAULT_FN_ATTRS128
923 _mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B)
924 {
925   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
926                                              (__v16qi)_mm_max_epu8(__A, __B),
927                                              (__v16qi)_mm_setzero_si128());
928 }
929
930 static __inline__ __m128i __DEFAULT_FN_ATTRS128
931 _mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
932 {
933   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
934                                              (__v16qi)_mm_max_epu8(__A, __B),
935                                              (__v16qi)__W);
936 }
937
938 static __inline__ __m256i __DEFAULT_FN_ATTRS256
939 _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
940 {
941   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
942                                              (__v32qi)_mm256_max_epu8(__A, __B),
943                                              (__v32qi)_mm256_setzero_si256());
944 }
945
946 static __inline__ __m256i __DEFAULT_FN_ATTRS256
947 _mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
948 {
949   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
950                                              (__v32qi)_mm256_max_epu8(__A, __B),
951                                              (__v32qi)__W);
952 }
953
954 static __inline__ __m128i __DEFAULT_FN_ATTRS128
955 _mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B)
956 {
957   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
958                                              (__v8hi)_mm_max_epu16(__A, __B),
959                                              (__v8hi)_mm_setzero_si128());
960 }
961
962 static __inline__ __m128i __DEFAULT_FN_ATTRS128
963 _mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
964 {
965   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
966                                              (__v8hi)_mm_max_epu16(__A, __B),
967                                              (__v8hi)__W);
968 }
969
970 static __inline__ __m256i __DEFAULT_FN_ATTRS256
971 _mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B)
972 {
973   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
974                                             (__v16hi)_mm256_max_epu16(__A, __B),
975                                             (__v16hi)_mm256_setzero_si256());
976 }
977
978 static __inline__ __m256i __DEFAULT_FN_ATTRS256
979 _mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
980 {
981   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
982                                             (__v16hi)_mm256_max_epu16(__A, __B),
983                                             (__v16hi)__W);
984 }
985
986 static __inline__ __m128i __DEFAULT_FN_ATTRS128
987 _mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B)
988 {
989   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
990                                              (__v16qi)_mm_min_epi8(__A, __B),
991                                              (__v16qi)_mm_setzero_si128());
992 }
993
994 static __inline__ __m128i __DEFAULT_FN_ATTRS128
995 _mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
996 {
997   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
998                                              (__v16qi)_mm_min_epi8(__A, __B),
999                                              (__v16qi)__W);
1000 }
1001
1002 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1003 _mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B)
1004 {
1005   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1006                                              (__v32qi)_mm256_min_epi8(__A, __B),
1007                                              (__v32qi)_mm256_setzero_si256());
1008 }
1009
1010 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1011 _mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
1012 {
1013   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1014                                              (__v32qi)_mm256_min_epi8(__A, __B),
1015                                              (__v32qi)__W);
1016 }
1017
1018 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1019 _mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B)
1020 {
1021   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1022                                              (__v8hi)_mm_min_epi16(__A, __B),
1023                                              (__v8hi)_mm_setzero_si128());
1024 }
1025
1026 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1027 _mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
1028 {
1029   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1030                                              (__v8hi)_mm_min_epi16(__A, __B),
1031                                              (__v8hi)__W);
1032 }
1033
1034 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1035 _mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B)
1036 {
1037   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1038                                             (__v16hi)_mm256_min_epi16(__A, __B),
1039                                             (__v16hi)_mm256_setzero_si256());
1040 }
1041
1042 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1043 _mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
1044 {
1045   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1046                                             (__v16hi)_mm256_min_epi16(__A, __B),
1047                                             (__v16hi)__W);
1048 }
1049
1050 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1051 _mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B)
1052 {
1053   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1054                                              (__v16qi)_mm_min_epu8(__A, __B),
1055                                              (__v16qi)_mm_setzero_si128());
1056 }
1057
1058 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1059 _mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
1060 {
1061   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1062                                              (__v16qi)_mm_min_epu8(__A, __B),
1063                                              (__v16qi)__W);
1064 }
1065
1066 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1067 _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1068 {
1069   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1070                                              (__v32qi)_mm256_min_epu8(__A, __B),
1071                                              (__v32qi)_mm256_setzero_si256());
1072 }
1073
1074 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1075 _mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
1076 {
1077   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1078                                              (__v32qi)_mm256_min_epu8(__A, __B),
1079                                              (__v32qi)__W);
1080 }
1081
1082 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1083 _mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B)
1084 {
1085   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1086                                              (__v8hi)_mm_min_epu16(__A, __B),
1087                                              (__v8hi)_mm_setzero_si128());
1088 }
1089
1090 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1091 _mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
1092 {
1093   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1094                                              (__v8hi)_mm_min_epu16(__A, __B),
1095                                              (__v8hi)__W);
1096 }
1097
1098 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1099 _mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B)
1100 {
1101   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1102                                             (__v16hi)_mm256_min_epu16(__A, __B),
1103                                             (__v16hi)_mm256_setzero_si256());
1104 }
1105
1106 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1107 _mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
1108 {
1109   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1110                                             (__v16hi)_mm256_min_epu16(__A, __B),
1111                                             (__v16hi)__W);
1112 }
1113
1114 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1115 _mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
1116 {
1117   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1118                                             (__v16qi)_mm_shuffle_epi8(__A, __B),
1119                                             (__v16qi)__W);
1120 }
1121
1122 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1123 _mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B)
1124 {
1125   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1126                                             (__v16qi)_mm_shuffle_epi8(__A, __B),
1127                                             (__v16qi)_mm_setzero_si128());
1128 }
1129
1130 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1131 _mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
1132 {
1133   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1134                                          (__v32qi)_mm256_shuffle_epi8(__A, __B),
1135                                          (__v32qi)__W);
1136 }
1137
1138 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1139 _mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B)
1140 {
1141   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1142                                          (__v32qi)_mm256_shuffle_epi8(__A, __B),
1143                                          (__v32qi)_mm256_setzero_si256());
1144 }
1145
1146 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1147 _mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
1148 {
1149   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1150                                              (__v16qi)_mm_subs_epi8(__A, __B),
1151                                              (__v16qi)__W);
1152 }
1153
1154 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1155 _mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B)
1156 {
1157   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1158                                              (__v16qi)_mm_subs_epi8(__A, __B),
1159                                              (__v16qi)_mm_setzero_si128());
1160 }
1161
1162 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1163 _mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
1164 {
1165   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1166                                             (__v32qi)_mm256_subs_epi8(__A, __B),
1167                                             (__v32qi)__W);
1168 }
1169
1170 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1171 _mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B)
1172 {
1173   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1174                                             (__v32qi)_mm256_subs_epi8(__A, __B),
1175                                             (__v32qi)_mm256_setzero_si256());
1176 }
1177
1178 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1179 _mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1180 {
1181   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1182                                              (__v8hi)_mm_subs_epi16(__A, __B),
1183                                              (__v8hi)__W);
1184 }
1185
1186 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1187 _mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B)
1188 {
1189   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1190                                              (__v8hi)_mm_subs_epi16(__A, __B),
1191                                              (__v8hi)_mm_setzero_si128());
1192 }
1193
1194 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1195 _mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
1196 {
1197   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1198                                            (__v16hi)_mm256_subs_epi16(__A, __B),
1199                                            (__v16hi)__W);
1200 }
1201
1202 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1203 _mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B)
1204 {
1205   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1206                                            (__v16hi)_mm256_subs_epi16(__A, __B),
1207                                            (__v16hi)_mm256_setzero_si256());
1208 }
1209
1210 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1211 _mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
1212 {
1213   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1214                                              (__v16qi)_mm_subs_epu8(__A, __B),
1215                                              (__v16qi)__W);
1216 }
1217
1218 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1219 _mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B)
1220 {
1221   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1222                                              (__v16qi)_mm_subs_epu8(__A, __B),
1223                                              (__v16qi)_mm_setzero_si128());
1224 }
1225
1226 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1227 _mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
1228 {
1229   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1230                                             (__v32qi)_mm256_subs_epu8(__A, __B),
1231                                             (__v32qi)__W);
1232 }
1233
1234 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1235 _mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B)
1236 {
1237   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1238                                             (__v32qi)_mm256_subs_epu8(__A, __B),
1239                                             (__v32qi)_mm256_setzero_si256());
1240 }
1241
1242 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1243 _mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1244 {
1245   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1246                                              (__v8hi)_mm_subs_epu16(__A, __B),
1247                                              (__v8hi)__W);
1248 }
1249
1250 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1251 _mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B)
1252 {
1253   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1254                                              (__v8hi)_mm_subs_epu16(__A, __B),
1255                                              (__v8hi)_mm_setzero_si128());
1256 }
1257
1258 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1259 _mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A,
1260       __m256i __B) {
1261   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1262                                            (__v16hi)_mm256_subs_epu16(__A, __B),
1263                                            (__v16hi)__W);
1264 }
1265
1266 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1267 _mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B)
1268 {
1269   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1270                                            (__v16hi)_mm256_subs_epu16(__A, __B),
1271                                            (__v16hi)_mm256_setzero_si256());
1272 }
1273
1274 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1275 _mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B)
1276 {
1277   return (__m128i)__builtin_ia32_vpermi2varhi128((__v8hi)__A, (__v8hi)__I,
1278                                                  (__v8hi) __B);
1279 }
1280
1281 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1282 _mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I,
1283                             __m128i __B)
1284 {
1285   return (__m128i)__builtin_ia32_selectw_128(__U,
1286                                   (__v8hi)_mm_permutex2var_epi16(__A, __I, __B),
1287                                   (__v8hi)__A);
1288 }
1289
1290 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1291 _mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U,
1292                              __m128i __B)
1293 {
1294   return (__m128i)__builtin_ia32_selectw_128(__U,
1295                                   (__v8hi)_mm_permutex2var_epi16(__A, __I, __B),
1296                                   (__v8hi)__I);
1297 }
1298
1299 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1300 _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
1301             __m128i __B)
1302 {
1303   return (__m128i)__builtin_ia32_selectw_128(__U,
1304                                   (__v8hi)_mm_permutex2var_epi16(__A, __I, __B),
1305                                   (__v8hi)_mm_setzero_si128());
1306 }
1307
1308 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1309 _mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B)
1310 {
1311   return (__m256i)__builtin_ia32_vpermi2varhi256((__v16hi)__A, (__v16hi)__I,
1312                                                  (__v16hi)__B);
1313 }
1314
1315 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1316 _mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I,
1317                                __m256i __B)
1318 {
1319   return (__m256i)__builtin_ia32_selectw_256(__U,
1320                               (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B),
1321                               (__v16hi)__A);
1322 }
1323
1324 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1325 _mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U,
1326                                 __m256i __B)
1327 {
1328   return (__m256i)__builtin_ia32_selectw_256(__U,
1329                               (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B),
1330                               (__v16hi)__I);
1331 }
1332
1333 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1334 _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A, __m256i __I,
1335                                  __m256i __B)
1336 {
1337   return (__m256i)__builtin_ia32_selectw_256(__U,
1338                               (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B),
1339                               (__v16hi)_mm256_setzero_si256());
1340 }
1341
1342 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1343 _mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1344   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1345                                             (__v8hi)_mm_maddubs_epi16(__X, __Y),
1346                                             (__v8hi)__W);
1347 }
1348
1349 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1350 _mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1351   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1352                                             (__v8hi)_mm_maddubs_epi16(__X, __Y),
1353                                             (__v8hi)_mm_setzero_si128());
1354 }
1355
1356 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1357 _mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X,
1358                           __m256i __Y) {
1359   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1360                                         (__v16hi)_mm256_maddubs_epi16(__X, __Y),
1361                                         (__v16hi)__W);
1362 }
1363
1364 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1365 _mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1366   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1367                                         (__v16hi)_mm256_maddubs_epi16(__X, __Y),
1368                                         (__v16hi)_mm256_setzero_si256());
1369 }
1370
1371 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1372 _mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1373   return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1374                                              (__v4si)_mm_madd_epi16(__A, __B),
1375                                              (__v4si)__W);
1376 }
1377
1378 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1379 _mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1380   return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1381                                              (__v4si)_mm_madd_epi16(__A, __B),
1382                                              (__v4si)_mm_setzero_si128());
1383 }
1384
1385 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1386 _mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1387   return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1388                                             (__v8si)_mm256_madd_epi16(__A, __B),
1389                                             (__v8si)__W);
1390 }
1391
1392 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1393 _mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
1394   return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1395                                             (__v8si)_mm256_madd_epi16(__A, __B),
1396                                             (__v8si)_mm256_setzero_si256());
1397 }
1398
1399 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1400 _mm_cvtsepi16_epi8 (__m128i __A) {
1401   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1402                (__v16qi) _mm_setzero_si128(),
1403                (__mmask8) -1);
1404 }
1405
1406 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1407 _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1408   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1409                (__v16qi) __O,
1410                 __M);
1411 }
1412
1413 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1414 _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
1415   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1416                (__v16qi) _mm_setzero_si128(),
1417                __M);
1418 }
1419
1420 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1421 _mm256_cvtsepi16_epi8 (__m256i __A) {
1422   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1423                (__v16qi) _mm_setzero_si128(),
1424                (__mmask16) -1);
1425 }
1426
1427 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1428 _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1429   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1430                (__v16qi) __O,
1431                 __M);
1432 }
1433
1434 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1435 _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
1436   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1437                (__v16qi) _mm_setzero_si128(),
1438                __M);
1439 }
1440
1441 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1442 _mm_cvtusepi16_epi8 (__m128i __A) {
1443   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1444                 (__v16qi) _mm_setzero_si128(),
1445                 (__mmask8) -1);
1446 }
1447
1448 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1449 _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1450   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1451                 (__v16qi) __O,
1452                 __M);
1453 }
1454
1455 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1456 _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
1457   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1458                 (__v16qi) _mm_setzero_si128(),
1459                 __M);
1460 }
1461
1462 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1463 _mm256_cvtusepi16_epi8 (__m256i __A) {
1464   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1465                 (__v16qi) _mm_setzero_si128(),
1466                 (__mmask16) -1);
1467 }
1468
1469 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1470 _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1471   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1472                 (__v16qi) __O,
1473                 __M);
1474 }
1475
1476 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1477 _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
1478   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1479                 (__v16qi) _mm_setzero_si128(),
1480                 __M);
1481 }
1482
1483 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1484 _mm_cvtepi16_epi8 (__m128i __A) {
1485   return (__m128i)__builtin_shufflevector(
1486       __builtin_convertvector((__v8hi)__A, __v8qi),
1487       (__v8qi){0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1488       12, 13, 14, 15);
1489 }
1490
1491 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1492 _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1493   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1494                (__v16qi) __O,
1495                __M);
1496 }
1497
1498 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1499 _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
1500   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1501                (__v16qi) _mm_setzero_si128(),
1502                __M);
1503 }
1504
1505 static __inline__ void __DEFAULT_FN_ATTRS128
1506 _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
1507 {
1508   __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
1509 }
1510
1511
1512 static __inline__ void __DEFAULT_FN_ATTRS128
1513 _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
1514 {
1515   __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
1516 }
1517
1518 static __inline__ void __DEFAULT_FN_ATTRS128
1519 _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
1520 {
1521   __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
1522 }
1523
1524 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1525 _mm256_cvtepi16_epi8 (__m256i __A) {
1526   return (__m128i)__builtin_convertvector((__v16hi) __A, __v16qi);
1527 }
1528
1529 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1530 _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1531   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1532                                              (__v16qi)_mm256_cvtepi16_epi8(__A),
1533                                              (__v16qi)__O);
1534 }
1535
1536 static __inline__ __m128i __DEFAULT_FN_ATTRS256
1537 _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
1538   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1539                                              (__v16qi)_mm256_cvtepi16_epi8(__A),
1540                                              (__v16qi)_mm_setzero_si128());
1541 }
1542
1543 static __inline__ void __DEFAULT_FN_ATTRS256
1544 _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
1545 {
1546   __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
1547 }
1548
1549 static __inline__ void __DEFAULT_FN_ATTRS256
1550 _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
1551 {
1552   __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
1553 }
1554
1555 static __inline__ void __DEFAULT_FN_ATTRS256
1556 _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
1557 {
1558   __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M);
1559 }
1560
1561 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1562 _mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1563   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1564                                              (__v8hi)_mm_mulhrs_epi16(__X, __Y),
1565                                              (__v8hi)__W);
1566 }
1567
1568 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1569 _mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1570   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1571                                              (__v8hi)_mm_mulhrs_epi16(__X, __Y),
1572                                              (__v8hi)_mm_setzero_si128());
1573 }
1574
1575 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1576 _mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1577   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1578                                          (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
1579                                          (__v16hi)__W);
1580 }
1581
1582 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1583 _mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1584   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1585                                          (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
1586                                          (__v16hi)_mm256_setzero_si256());
1587 }
1588
1589 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1590 _mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1591   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1592                                              (__v8hi)_mm_mulhi_epu16(__A, __B),
1593                                              (__v8hi)__W);
1594 }
1595
1596 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1597 _mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1598   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1599                                              (__v8hi)_mm_mulhi_epu16(__A, __B),
1600                                              (__v8hi)_mm_setzero_si128());
1601 }
1602
1603 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1604 _mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1605   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1606                                           (__v16hi)_mm256_mulhi_epu16(__A, __B),
1607                                           (__v16hi)__W);
1608 }
1609
1610 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1611 _mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1612   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1613                                           (__v16hi)_mm256_mulhi_epu16(__A, __B),
1614                                           (__v16hi)_mm256_setzero_si256());
1615 }
1616
1617 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1618 _mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1619   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1620                                              (__v8hi)_mm_mulhi_epi16(__A, __B),
1621                                              (__v8hi)__W);
1622 }
1623
1624 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1625 _mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1626   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1627                                              (__v8hi)_mm_mulhi_epi16(__A, __B),
1628                                              (__v8hi)_mm_setzero_si128());
1629 }
1630
1631 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1632 _mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1633   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1634                                           (__v16hi)_mm256_mulhi_epi16(__A, __B),
1635                                           (__v16hi)__W);
1636 }
1637
1638 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1639 _mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1640   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1641                                           (__v16hi)_mm256_mulhi_epi16(__A, __B),
1642                                           (__v16hi)_mm256_setzero_si256());
1643 }
1644
1645 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1646 _mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1647   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1648                                            (__v16qi)_mm_unpackhi_epi8(__A, __B),
1649                                            (__v16qi)__W);
1650 }
1651
1652 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1653 _mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1654   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1655                                            (__v16qi)_mm_unpackhi_epi8(__A, __B),
1656                                            (__v16qi)_mm_setzero_si128());
1657 }
1658
1659 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1660 _mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1661   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1662                                         (__v32qi)_mm256_unpackhi_epi8(__A, __B),
1663                                         (__v32qi)__W);
1664 }
1665
1666 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1667 _mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1668   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1669                                         (__v32qi)_mm256_unpackhi_epi8(__A, __B),
1670                                         (__v32qi)_mm256_setzero_si256());
1671 }
1672
1673 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1674 _mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1675   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1676                                            (__v8hi)_mm_unpackhi_epi16(__A, __B),
1677                                            (__v8hi)__W);
1678 }
1679
1680 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1681 _mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1682   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1683                                            (__v8hi)_mm_unpackhi_epi16(__A, __B),
1684                                            (__v8hi) _mm_setzero_si128());
1685 }
1686
1687 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1688 _mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1689   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1690                                        (__v16hi)_mm256_unpackhi_epi16(__A, __B),
1691                                        (__v16hi)__W);
1692 }
1693
1694 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1695 _mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1696   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1697                                        (__v16hi)_mm256_unpackhi_epi16(__A, __B),
1698                                        (__v16hi)_mm256_setzero_si256());
1699 }
1700
1701 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1702 _mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1703   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1704                                            (__v16qi)_mm_unpacklo_epi8(__A, __B),
1705                                            (__v16qi)__W);
1706 }
1707
1708 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1709 _mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1710   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1711                                            (__v16qi)_mm_unpacklo_epi8(__A, __B),
1712                                            (__v16qi)_mm_setzero_si128());
1713 }
1714
1715 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1716 _mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1717   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1718                                         (__v32qi)_mm256_unpacklo_epi8(__A, __B),
1719                                         (__v32qi)__W);
1720 }
1721
1722 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1723 _mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1724   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1725                                         (__v32qi)_mm256_unpacklo_epi8(__A, __B),
1726                                         (__v32qi)_mm256_setzero_si256());
1727 }
1728
1729 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1730 _mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1731   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1732                                            (__v8hi)_mm_unpacklo_epi16(__A, __B),
1733                                            (__v8hi)__W);
1734 }
1735
1736 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1737 _mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1738   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1739                                            (__v8hi)_mm_unpacklo_epi16(__A, __B),
1740                                            (__v8hi) _mm_setzero_si128());
1741 }
1742
1743 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1744 _mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1745   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1746                                        (__v16hi)_mm256_unpacklo_epi16(__A, __B),
1747                                        (__v16hi)__W);
1748 }
1749
1750 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1751 _mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1752   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1753                                        (__v16hi)_mm256_unpacklo_epi16(__A, __B),
1754                                        (__v16hi)_mm256_setzero_si256());
1755 }
1756
1757 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1758 _mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
1759 {
1760   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1761                                              (__v8hi)_mm_cvtepi8_epi16(__A),
1762                                              (__v8hi)__W);
1763 }
1764
1765 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1766 _mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A)
1767 {
1768   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1769                                              (__v8hi)_mm_cvtepi8_epi16(__A),
1770                                              (__v8hi)_mm_setzero_si128());
1771 }
1772
1773 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1774 _mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
1775 {
1776   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1777                                              (__v16hi)_mm256_cvtepi8_epi16(__A),
1778                                              (__v16hi)__W);
1779 }
1780
1781 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1782 _mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A)
1783 {
1784   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1785                                              (__v16hi)_mm256_cvtepi8_epi16(__A),
1786                                              (__v16hi)_mm256_setzero_si256());
1787 }
1788
1789
1790 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1791 _mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
1792 {
1793   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1794                                              (__v8hi)_mm_cvtepu8_epi16(__A),
1795                                              (__v8hi)__W);
1796 }
1797
1798 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1799 _mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A)
1800 {
1801   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1802                                              (__v8hi)_mm_cvtepu8_epi16(__A),
1803                                              (__v8hi)_mm_setzero_si128());
1804 }
1805
1806 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1807 _mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
1808 {
1809   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1810                                              (__v16hi)_mm256_cvtepu8_epi16(__A),
1811                                              (__v16hi)__W);
1812 }
1813
1814 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1815 _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
1816 {
1817   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1818                                              (__v16hi)_mm256_cvtepu8_epi16(__A),
1819                                              (__v16hi)_mm256_setzero_si256());
1820 }
1821
1822
1823 #define _mm_mask_shufflehi_epi16(W, U, A, imm) \
1824   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1825                                       (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
1826                                       (__v8hi)(__m128i)(W))
1827
1828 #define _mm_maskz_shufflehi_epi16(U, A, imm) \
1829   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1830                                       (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
1831                                       (__v8hi)_mm_setzero_si128())
1832
1833 #define _mm256_mask_shufflehi_epi16(W, U, A, imm) \
1834   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1835                                       (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
1836                                       (__v16hi)(__m256i)(W))
1837
1838 #define _mm256_maskz_shufflehi_epi16(U, A, imm) \
1839   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1840                                       (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
1841                                       (__v16hi)_mm256_setzero_si256())
1842
1843 #define _mm_mask_shufflelo_epi16(W, U, A, imm) \
1844   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1845                                       (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
1846                                       (__v8hi)(__m128i)(W))
1847
1848 #define _mm_maskz_shufflelo_epi16(U, A, imm) \
1849   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1850                                       (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
1851                                       (__v8hi)_mm_setzero_si128())
1852
1853 #define _mm256_mask_shufflelo_epi16(W, U, A, imm) \
1854   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1855                                       (__v16hi)_mm256_shufflelo_epi16((A), \
1856                                                                       (imm)), \
1857                                       (__v16hi)(__m256i)(W))
1858
1859 #define _mm256_maskz_shufflelo_epi16(U, A, imm) \
1860   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1861                                       (__v16hi)_mm256_shufflelo_epi16((A), \
1862                                                                       (imm)), \
1863                                       (__v16hi)_mm256_setzero_si256())
1864
1865 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1866 _mm256_sllv_epi16(__m256i __A, __m256i __B)
1867 {
1868   return (__m256i)__builtin_ia32_psllv16hi((__v16hi)__A, (__v16hi)__B);
1869 }
1870
1871 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1872 _mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
1873 {
1874   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1875                                            (__v16hi)_mm256_sllv_epi16(__A, __B),
1876                                            (__v16hi)__W);
1877 }
1878
1879 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1880 _mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
1881 {
1882   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1883                                            (__v16hi)_mm256_sllv_epi16(__A, __B),
1884                                            (__v16hi)_mm256_setzero_si256());
1885 }
1886
1887 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1888 _mm_sllv_epi16(__m128i __A, __m128i __B)
1889 {
1890   return (__m128i)__builtin_ia32_psllv8hi((__v8hi)__A, (__v8hi)__B);
1891 }
1892
1893 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1894 _mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1895 {
1896   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1897                                              (__v8hi)_mm_sllv_epi16(__A, __B),
1898                                              (__v8hi)__W);
1899 }
1900
1901 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1902 _mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
1903 {
1904   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1905                                              (__v8hi)_mm_sllv_epi16(__A, __B),
1906                                              (__v8hi)_mm_setzero_si128());
1907 }
1908
1909 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1910 _mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1911 {
1912   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1913                                              (__v8hi)_mm_sll_epi16(__A, __B),
1914                                              (__v8hi)__W);
1915 }
1916
1917 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1918 _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1919 {
1920   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1921                                              (__v8hi)_mm_sll_epi16(__A, __B),
1922                                              (__v8hi)_mm_setzero_si128());
1923 }
1924
1925 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1926 _mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
1927 {
1928   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1929                                           (__v16hi)_mm256_sll_epi16(__A, __B),
1930                                           (__v16hi)__W);
1931 }
1932
1933 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1934 _mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B)
1935 {
1936   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1937                                           (__v16hi)_mm256_sll_epi16(__A, __B),
1938                                           (__v16hi)_mm256_setzero_si256());
1939 }
1940
1941 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1942 _mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
1943 {
1944   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1945                                              (__v8hi)_mm_slli_epi16(__A, __B),
1946                                              (__v8hi)__W);
1947 }
1948
1949 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1950 _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
1951 {
1952   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1953                                              (__v8hi)_mm_slli_epi16(__A, __B),
1954                                              (__v8hi)_mm_setzero_si128());
1955 }
1956
1957 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1958 _mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
1959 {
1960   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1961                                          (__v16hi)_mm256_slli_epi16(__A, __B),
1962                                          (__v16hi)__W);
1963 }
1964
1965 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1966 _mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A, int __B)
1967 {
1968   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1969                                          (__v16hi)_mm256_slli_epi16(__A, __B),
1970                                          (__v16hi)_mm256_setzero_si256());
1971 }
1972
1973 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1974 _mm256_srlv_epi16(__m256i __A, __m256i __B)
1975 {
1976   return (__m256i)__builtin_ia32_psrlv16hi((__v16hi)__A, (__v16hi)__B);
1977 }
1978
1979 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1980 _mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
1981 {
1982   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1983                                            (__v16hi)_mm256_srlv_epi16(__A, __B),
1984                                            (__v16hi)__W);
1985 }
1986
1987 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1988 _mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
1989 {
1990   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1991                                            (__v16hi)_mm256_srlv_epi16(__A, __B),
1992                                            (__v16hi)_mm256_setzero_si256());
1993 }
1994
1995 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1996 _mm_srlv_epi16(__m128i __A, __m128i __B)
1997 {
1998   return (__m128i)__builtin_ia32_psrlv8hi((__v8hi)__A, (__v8hi)__B);
1999 }
2000
2001 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2002 _mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2003 {
2004   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2005                                              (__v8hi)_mm_srlv_epi16(__A, __B),
2006                                              (__v8hi)__W);
2007 }
2008
2009 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2010 _mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
2011 {
2012   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2013                                              (__v8hi)_mm_srlv_epi16(__A, __B),
2014                                              (__v8hi)_mm_setzero_si128());
2015 }
2016
2017 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2018 _mm256_srav_epi16(__m256i __A, __m256i __B)
2019 {
2020   return (__m256i)__builtin_ia32_psrav16hi((__v16hi)__A, (__v16hi)__B);
2021 }
2022
2023 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2024 _mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
2025 {
2026   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2027                                            (__v16hi)_mm256_srav_epi16(__A, __B),
2028                                            (__v16hi)__W);
2029 }
2030
2031 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2032 _mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B)
2033 {
2034   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2035                                            (__v16hi)_mm256_srav_epi16(__A, __B),
2036                                            (__v16hi)_mm256_setzero_si256());
2037 }
2038
2039 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2040 _mm_srav_epi16(__m128i __A, __m128i __B)
2041 {
2042   return (__m128i)__builtin_ia32_psrav8hi((__v8hi)__A, (__v8hi)__B);
2043 }
2044
2045 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2046 _mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2047 {
2048   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2049                                              (__v8hi)_mm_srav_epi16(__A, __B),
2050                                              (__v8hi)__W);
2051 }
2052
2053 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2054 _mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B)
2055 {
2056   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2057                                              (__v8hi)_mm_srav_epi16(__A, __B),
2058                                              (__v8hi)_mm_setzero_si128());
2059 }
2060
2061 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2062 _mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2063 {
2064   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2065                                              (__v8hi)_mm_sra_epi16(__A, __B),
2066                                              (__v8hi)__W);
2067 }
2068
2069 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2070 _mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B)
2071 {
2072   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2073                                              (__v8hi)_mm_sra_epi16(__A, __B),
2074                                              (__v8hi)_mm_setzero_si128());
2075 }
2076
2077 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2078 _mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
2079 {
2080   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2081                                           (__v16hi)_mm256_sra_epi16(__A, __B),
2082                                           (__v16hi)__W);
2083 }
2084
2085 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2086 _mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B)
2087 {
2088   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2089                                           (__v16hi)_mm256_sra_epi16(__A, __B),
2090                                           (__v16hi)_mm256_setzero_si256());
2091 }
2092
2093 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2094 _mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
2095 {
2096   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2097                                              (__v8hi)_mm_srai_epi16(__A, __B),
2098                                              (__v8hi)__W);
2099 }
2100
2101 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2102 _mm_maskz_srai_epi16(__mmask8 __U, __m128i __A, int __B)
2103 {
2104   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2105                                              (__v8hi)_mm_srai_epi16(__A, __B),
2106                                              (__v8hi)_mm_setzero_si128());
2107 }
2108
2109 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2110 _mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
2111 {
2112   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2113                                          (__v16hi)_mm256_srai_epi16(__A, __B),
2114                                          (__v16hi)__W);
2115 }
2116
2117 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2118 _mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A, int __B)
2119 {
2120   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2121                                          (__v16hi)_mm256_srai_epi16(__A, __B),
2122                                          (__v16hi)_mm256_setzero_si256());
2123 }
2124
2125 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2126 _mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2127 {
2128   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2129                                              (__v8hi)_mm_srl_epi16(__A, __B),
2130                                              (__v8hi)__W);
2131 }
2132
2133 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2134 _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2135 {
2136   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2137                                              (__v8hi)_mm_srl_epi16(__A, __B),
2138                                              (__v8hi)_mm_setzero_si128());
2139 }
2140
2141 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2142 _mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
2143 {
2144   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2145                                           (__v16hi)_mm256_srl_epi16(__A, __B),
2146                                           (__v16hi)__W);
2147 }
2148
2149 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2150 _mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B)
2151 {
2152   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2153                                           (__v16hi)_mm256_srl_epi16(__A, __B),
2154                                           (__v16hi)_mm256_setzero_si256());
2155 }
2156
2157 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2158 _mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
2159 {
2160   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2161                                              (__v8hi)_mm_srli_epi16(__A, __B),
2162                                              (__v8hi)__W);
2163 }
2164
2165 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2166 _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, int __B)
2167 {
2168   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2169                                              (__v8hi)_mm_srli_epi16(__A, __B),
2170                                              (__v8hi)_mm_setzero_si128());
2171 }
2172
2173 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2174 _mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
2175 {
2176   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2177                                          (__v16hi)_mm256_srli_epi16(__A, __B),
2178                                          (__v16hi)__W);
2179 }
2180
2181 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2182 _mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A, int __B)
2183 {
2184   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2185                                          (__v16hi)_mm256_srli_epi16(__A, __B),
2186                                          (__v16hi)_mm256_setzero_si256());
2187 }
2188
2189 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2190 _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2191 {
2192   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2193                 (__v8hi) __A,
2194                 (__v8hi) __W);
2195 }
2196
2197 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2198 _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
2199 {
2200   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2201                 (__v8hi) __A,
2202                 (__v8hi) _mm_setzero_si128 ());
2203 }
2204
2205 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2206 _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
2207 {
2208   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2209                 (__v16hi) __A,
2210                 (__v16hi) __W);
2211 }
2212
2213 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2214 _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
2215 {
2216   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2217                 (__v16hi) __A,
2218                 (__v16hi) _mm256_setzero_si256 ());
2219 }
2220
2221 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2222 _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
2223 {
2224   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2225                 (__v16qi) __A,
2226                 (__v16qi) __W);
2227 }
2228
2229 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2230 _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
2231 {
2232   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2233                 (__v16qi) __A,
2234                 (__v16qi) _mm_setzero_si128 ());
2235 }
2236
2237 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2238 _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
2239 {
2240   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2241                 (__v32qi) __A,
2242                 (__v32qi) __W);
2243 }
2244
2245 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2246 _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2247 {
2248   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2249                 (__v32qi) __A,
2250                 (__v32qi) _mm256_setzero_si256 ());
2251 }
2252
2253
2254 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2255 _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2256 {
2257   return (__m128i) __builtin_ia32_selectb_128(__M,
2258                                               (__v16qi) _mm_set1_epi8(__A),
2259                                               (__v16qi) __O);
2260 }
2261
2262 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2263 _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2264 {
2265  return (__m128i) __builtin_ia32_selectb_128(__M,
2266                                              (__v16qi) _mm_set1_epi8(__A),
2267                                              (__v16qi) _mm_setzero_si128());
2268 }
2269
2270 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2271 _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2272 {
2273   return (__m256i) __builtin_ia32_selectb_256(__M,
2274                                               (__v32qi) _mm256_set1_epi8(__A),
2275                                               (__v32qi) __O);
2276 }
2277
2278 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2279 _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2280 {
2281   return (__m256i) __builtin_ia32_selectb_256(__M,
2282                                               (__v32qi) _mm256_set1_epi8(__A),
2283                                               (__v32qi) _mm256_setzero_si256());
2284 }
2285
2286 static __inline __m128i __DEFAULT_FN_ATTRS128
2287 _mm_loadu_epi16 (void const *__P)
2288 {
2289   struct __loadu_epi16 {
2290     __m128i_u __v;
2291   } __attribute__((__packed__, __may_alias__));
2292   return ((struct __loadu_epi16*)__P)->__v;
2293 }
2294
2295 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2296 _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
2297 {
2298   return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2299                  (__v8hi) __W,
2300                  (__mmask8) __U);
2301 }
2302
2303 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2304 _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
2305 {
2306   return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2307                  (__v8hi)
2308                  _mm_setzero_si128 (),
2309                  (__mmask8) __U);
2310 }
2311
2312 static __inline __m256i __DEFAULT_FN_ATTRS256
2313 _mm256_loadu_epi16 (void const *__P)
2314 {
2315   struct __loadu_epi16 {
2316     __m256i_u __v;
2317   } __attribute__((__packed__, __may_alias__));
2318   return ((struct __loadu_epi16*)__P)->__v;
2319 }
2320
2321 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2322 _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
2323 {
2324   return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2325                  (__v16hi) __W,
2326                  (__mmask16) __U);
2327 }
2328
2329 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2330 _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
2331 {
2332   return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2333                  (__v16hi)
2334                  _mm256_setzero_si256 (),
2335                  (__mmask16) __U);
2336 }
2337
2338 static __inline __m128i __DEFAULT_FN_ATTRS128
2339 _mm_loadu_epi8 (void const *__P)
2340 {
2341   struct __loadu_epi8 {
2342     __m128i_u __v;
2343   } __attribute__((__packed__, __may_alias__));
2344   return ((struct __loadu_epi8*)__P)->__v;
2345 }
2346
2347 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2348 _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
2349 {
2350   return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2351                  (__v16qi) __W,
2352                  (__mmask16) __U);
2353 }
2354
2355 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2356 _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
2357 {
2358   return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2359                  (__v16qi)
2360                  _mm_setzero_si128 (),
2361                  (__mmask16) __U);
2362 }
2363
2364 static __inline __m256i __DEFAULT_FN_ATTRS256
2365 _mm256_loadu_epi8 (void const *__P)
2366 {
2367   struct __loadu_epi8 {
2368     __m256i_u __v;
2369   } __attribute__((__packed__, __may_alias__));
2370   return ((struct __loadu_epi8*)__P)->__v;
2371 }
2372
2373 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2374 _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
2375 {
2376   return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2377                  (__v32qi) __W,
2378                  (__mmask32) __U);
2379 }
2380
2381 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2382 _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
2383 {
2384   return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2385                  (__v32qi)
2386                  _mm256_setzero_si256 (),
2387                  (__mmask32) __U);
2388 }
2389
2390 static __inline void __DEFAULT_FN_ATTRS128
2391 _mm_storeu_epi16 (void *__P, __m128i __A)
2392 {
2393   struct __storeu_epi16 {
2394     __m128i_u __v;
2395   } __attribute__((__packed__, __may_alias__));
2396   ((struct __storeu_epi16*)__P)->__v = __A;
2397 }
2398
2399 static __inline__ void __DEFAULT_FN_ATTRS128
2400 _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
2401 {
2402   __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
2403              (__v8hi) __A,
2404              (__mmask8) __U);
2405 }
2406
2407 static __inline void __DEFAULT_FN_ATTRS256
2408 _mm256_storeu_epi16 (void *__P, __m256i __A)
2409 {
2410   struct __storeu_epi16 {
2411     __m256i_u __v;
2412   } __attribute__((__packed__, __may_alias__));
2413   ((struct __storeu_epi16*)__P)->__v = __A;
2414 }
2415
2416 static __inline__ void __DEFAULT_FN_ATTRS256
2417 _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
2418 {
2419   __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
2420              (__v16hi) __A,
2421              (__mmask16) __U);
2422 }
2423
2424 static __inline void __DEFAULT_FN_ATTRS128
2425 _mm_storeu_epi8 (void *__P, __m128i __A)
2426 {
2427   struct __storeu_epi8 {
2428     __m128i_u __v;
2429   } __attribute__((__packed__, __may_alias__));
2430   ((struct __storeu_epi8*)__P)->__v = __A;
2431 }
2432
2433 static __inline__ void __DEFAULT_FN_ATTRS128
2434 _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
2435 {
2436   __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
2437              (__v16qi) __A,
2438              (__mmask16) __U);
2439 }
2440
2441 static __inline void __DEFAULT_FN_ATTRS256
2442 _mm256_storeu_epi8 (void *__P, __m256i __A)
2443 {
2444   struct __storeu_epi8 {
2445     __m256i_u __v;
2446   } __attribute__((__packed__, __may_alias__));
2447   ((struct __storeu_epi8*)__P)->__v = __A;
2448 }
2449
2450 static __inline__ void __DEFAULT_FN_ATTRS256
2451 _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
2452 {
2453   __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
2454              (__v32qi) __A,
2455              (__mmask32) __U);
2456 }
2457
2458 static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
2459 _mm_test_epi8_mask (__m128i __A, __m128i __B)
2460 {
2461   return _mm_cmpneq_epi8_mask (_mm_and_si128(__A, __B), _mm_setzero_si128());
2462 }
2463
2464 static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
2465 _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
2466 {
2467   return _mm_mask_cmpneq_epi8_mask (__U, _mm_and_si128 (__A, __B),
2468                                     _mm_setzero_si128());
2469 }
2470
2471 static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
2472 _mm256_test_epi8_mask (__m256i __A, __m256i __B)
2473 {
2474   return _mm256_cmpneq_epi8_mask (_mm256_and_si256(__A, __B),
2475                                   _mm256_setzero_si256());
2476 }
2477
2478 static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
2479 _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
2480 {
2481   return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B),
2482                                        _mm256_setzero_si256());
2483 }
2484
2485 static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
2486 _mm_test_epi16_mask (__m128i __A, __m128i __B)
2487 {
2488   return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
2489 }
2490
2491 static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
2492 _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
2493 {
2494   return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B),
2495                                      _mm_setzero_si128());
2496 }
2497
2498 static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
2499 _mm256_test_epi16_mask (__m256i __A, __m256i __B)
2500 {
2501   return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B),
2502                                    _mm256_setzero_si256 ());
2503 }
2504
2505 static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
2506 _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
2507 {
2508   return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B),
2509                                         _mm256_setzero_si256());
2510 }
2511
2512 static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
2513 _mm_testn_epi8_mask (__m128i __A, __m128i __B)
2514 {
2515   return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
2516 }
2517
2518 static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
2519 _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
2520 {
2521   return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B),
2522                                   _mm_setzero_si128());
2523 }
2524
2525 static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
2526 _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
2527 {
2528   return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B),
2529                                  _mm256_setzero_si256());
2530 }
2531
2532 static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
2533 _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
2534 {
2535   return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B),
2536                                       _mm256_setzero_si256());
2537 }
2538
2539 static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
2540 _mm_testn_epi16_mask (__m128i __A, __m128i __B)
2541 {
2542   return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
2543 }
2544
2545 static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
2546 _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
2547 {
2548   return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_si128());
2549 }
2550
2551 static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
2552 _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
2553 {
2554   return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B),
2555                                   _mm256_setzero_si256());
2556 }
2557
2558 static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
2559 _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
2560 {
2561   return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B),
2562                                        _mm256_setzero_si256());
2563 }
2564
2565 static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
2566 _mm_movepi8_mask (__m128i __A)
2567 {
2568   return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
2569 }
2570
2571 static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
2572 _mm256_movepi8_mask (__m256i __A)
2573 {
2574   return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
2575 }
2576
2577 static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
2578 _mm_movepi16_mask (__m128i __A)
2579 {
2580   return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
2581 }
2582
2583 static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
2584 _mm256_movepi16_mask (__m256i __A)
2585 {
2586   return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
2587 }
2588
2589 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2590 _mm_movm_epi8 (__mmask16 __A)
2591 {
2592   return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
2593 }
2594
2595 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2596 _mm256_movm_epi8 (__mmask32 __A)
2597 {
2598   return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
2599 }
2600
2601 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2602 _mm_movm_epi16 (__mmask8 __A)
2603 {
2604   return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
2605 }
2606
2607 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2608 _mm256_movm_epi16 (__mmask16 __A)
2609 {
2610   return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
2611 }
2612
2613 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2614 _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
2615 {
2616   return (__m128i)__builtin_ia32_selectb_128(__M,
2617                                              (__v16qi) _mm_broadcastb_epi8(__A),
2618                                              (__v16qi) __O);
2619 }
2620
2621 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2622 _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
2623 {
2624   return (__m128i)__builtin_ia32_selectb_128(__M,
2625                                              (__v16qi) _mm_broadcastb_epi8(__A),
2626                                              (__v16qi) _mm_setzero_si128());
2627 }
2628
2629 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2630 _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
2631 {
2632   return (__m256i)__builtin_ia32_selectb_256(__M,
2633                                              (__v32qi) _mm256_broadcastb_epi8(__A),
2634                                              (__v32qi) __O);
2635 }
2636
2637 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2638 _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
2639 {
2640   return (__m256i)__builtin_ia32_selectb_256(__M,
2641                                              (__v32qi) _mm256_broadcastb_epi8(__A),
2642                                              (__v32qi) _mm256_setzero_si256());
2643 }
2644
2645 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2646 _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
2647 {
2648   return (__m128i)__builtin_ia32_selectw_128(__M,
2649                                              (__v8hi) _mm_broadcastw_epi16(__A),
2650                                              (__v8hi) __O);
2651 }
2652
2653 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2654 _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
2655 {
2656   return (__m128i)__builtin_ia32_selectw_128(__M,
2657                                              (__v8hi) _mm_broadcastw_epi16(__A),
2658                                              (__v8hi) _mm_setzero_si128());
2659 }
2660
2661 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2662 _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
2663 {
2664   return (__m256i)__builtin_ia32_selectw_256(__M,
2665                                              (__v16hi) _mm256_broadcastw_epi16(__A),
2666                                              (__v16hi) __O);
2667 }
2668
2669 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2670 _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
2671 {
2672   return (__m256i)__builtin_ia32_selectw_256(__M,
2673                                              (__v16hi) _mm256_broadcastw_epi16(__A),
2674                                              (__v16hi) _mm256_setzero_si256());
2675 }
2676
2677 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2678 _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
2679 {
2680   return (__m256i) __builtin_ia32_selectw_256 (__M,
2681                                                (__v16hi) _mm256_set1_epi16(__A),
2682                                                (__v16hi) __O);
2683 }
2684
2685 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2686 _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
2687 {
2688   return (__m256i) __builtin_ia32_selectw_256(__M,
2689                                               (__v16hi)_mm256_set1_epi16(__A),
2690                                               (__v16hi) _mm256_setzero_si256());
2691 }
2692
2693 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2694 _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
2695 {
2696   return (__m128i) __builtin_ia32_selectw_128(__M,
2697                                               (__v8hi) _mm_set1_epi16(__A),
2698                                               (__v8hi) __O);
2699 }
2700
2701 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2702 _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
2703 {
2704   return (__m128i) __builtin_ia32_selectw_128(__M,
2705                                               (__v8hi) _mm_set1_epi16(__A),
2706                                               (__v8hi) _mm_setzero_si128());
2707 }
2708
2709 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2710 _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
2711 {
2712   return (__m128i)__builtin_ia32_permvarhi128((__v8hi) __B, (__v8hi) __A);
2713 }
2714
2715 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2716 _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
2717 {
2718   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
2719                                         (__v8hi)_mm_permutexvar_epi16(__A, __B),
2720                                         (__v8hi) _mm_setzero_si128());
2721 }
2722
2723 static __inline__ __m128i __DEFAULT_FN_ATTRS128
2724 _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
2725           __m128i __B)
2726 {
2727   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
2728                                         (__v8hi)_mm_permutexvar_epi16(__A, __B),
2729                                         (__v8hi)__W);
2730 }
2731
2732 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2733 _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
2734 {
2735   return (__m256i)__builtin_ia32_permvarhi256((__v16hi) __B, (__v16hi) __A);
2736 }
2737
2738 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2739 _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
2740         __m256i __B)
2741 {
2742   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
2743                                     (__v16hi)_mm256_permutexvar_epi16(__A, __B),
2744                                     (__v16hi)_mm256_setzero_si256());
2745 }
2746
2747 static __inline__ __m256i __DEFAULT_FN_ATTRS256
2748 _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
2749              __m256i __B)
2750 {
2751   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
2752                                     (__v16hi)_mm256_permutexvar_epi16(__A, __B),
2753                                     (__v16hi)__W);
2754 }
2755
2756 #define _mm_mask_alignr_epi8(W, U, A, B, N) \
2757   (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
2758                                  (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
2759                                  (__v16qi)(__m128i)(W))
2760
2761 #define _mm_maskz_alignr_epi8(U, A, B, N) \
2762   (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
2763                                  (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
2764                                  (__v16qi)_mm_setzero_si128())
2765
2766 #define _mm256_mask_alignr_epi8(W, U, A, B, N) \
2767   (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
2768                               (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
2769                               (__v32qi)(__m256i)(W))
2770
2771 #define _mm256_maskz_alignr_epi8(U, A, B, N) \
2772   (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
2773                               (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
2774                               (__v32qi)_mm256_setzero_si256())
2775
2776 #define _mm_dbsad_epu8(A, B, imm) \
2777   (__m128i)__builtin_ia32_dbpsadbw128((__v16qi)(__m128i)(A), \
2778                                       (__v16qi)(__m128i)(B), (int)(imm))
2779
2780 #define _mm_mask_dbsad_epu8(W, U, A, B, imm) \
2781   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2782                                       (__v8hi)_mm_dbsad_epu8((A), (B), (imm)), \
2783                                       (__v8hi)(__m128i)(W))
2784
2785 #define _mm_maskz_dbsad_epu8(U, A, B, imm) \
2786   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2787                                       (__v8hi)_mm_dbsad_epu8((A), (B), (imm)), \
2788                                       (__v8hi)_mm_setzero_si128())
2789
2790 #define _mm256_dbsad_epu8(A, B, imm) \
2791   (__m256i)__builtin_ia32_dbpsadbw256((__v32qi)(__m256i)(A), \
2792                                       (__v32qi)(__m256i)(B), (int)(imm))
2793
2794 #define _mm256_mask_dbsad_epu8(W, U, A, B, imm) \
2795   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2796                                   (__v16hi)_mm256_dbsad_epu8((A), (B), (imm)), \
2797                                   (__v16hi)(__m256i)(W))
2798
2799 #define _mm256_maskz_dbsad_epu8(U, A, B, imm) \
2800   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2801                                   (__v16hi)_mm256_dbsad_epu8((A), (B), (imm)), \
2802                                   (__v16hi)_mm256_setzero_si256())
2803
2804 #undef __DEFAULT_FN_ATTRS128
2805 #undef __DEFAULT_FN_ATTRS256
2806
2807 #endif /* __AVX512VLBWINTRIN_H */