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