avx512bwintrin.h revision 1.7 1 1.7 mrg /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
2 1.1 mrg
3 1.1 mrg This file is part of GCC.
4 1.1 mrg
5 1.1 mrg GCC is free software; you can redistribute it and/or modify
6 1.1 mrg it under the terms of the GNU General Public License as published by
7 1.1 mrg the Free Software Foundation; either version 3, or (at your option)
8 1.1 mrg any later version.
9 1.1 mrg
10 1.1 mrg GCC is distributed in the hope that it will be useful,
11 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of
12 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 1.1 mrg GNU General Public License for more details.
14 1.1 mrg
15 1.1 mrg Under Section 7 of GPL version 3, you are granted additional
16 1.1 mrg permissions described in the GCC Runtime Library Exception, version
17 1.1 mrg 3.1, as published by the Free Software Foundation.
18 1.1 mrg
19 1.1 mrg You should have received a copy of the GNU General Public License and
20 1.1 mrg a copy of the GCC Runtime Library Exception along with this program;
21 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 1.1 mrg <http://www.gnu.org/licenses/>. */
23 1.1 mrg
24 1.1 mrg #ifndef _IMMINTRIN_H_INCLUDED
25 1.1 mrg #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 1.1 mrg #endif
27 1.1 mrg
28 1.1 mrg #ifndef _AVX512BWINTRIN_H_INCLUDED
29 1.1 mrg #define _AVX512BWINTRIN_H_INCLUDED
30 1.1 mrg
31 1.1 mrg #ifndef __AVX512BW__
32 1.1 mrg #pragma GCC push_options
33 1.1 mrg #pragma GCC target("avx512bw")
34 1.1 mrg #define __DISABLE_AVX512BW__
35 1.1 mrg #endif /* __AVX512BW__ */
36 1.1 mrg
37 1.1 mrg /* Internal data types for implementing the intrinsics. */
38 1.1 mrg typedef short __v32hi __attribute__ ((__vector_size__ (64)));
39 1.7 mrg typedef short __v32hi_u __attribute__ ((__vector_size__ (64), \
40 1.7 mrg __may_alias__, __aligned__ (1)));
41 1.1 mrg typedef char __v64qi __attribute__ ((__vector_size__ (64)));
42 1.7 mrg typedef char __v64qi_u __attribute__ ((__vector_size__ (64), \
43 1.7 mrg __may_alias__, __aligned__ (1)));
44 1.1 mrg
45 1.1 mrg typedef unsigned long long __mmask64;
46 1.1 mrg
47 1.3 mrg extern __inline unsigned char
48 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
49 1.3 mrg _ktest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF)
50 1.3 mrg {
51 1.3 mrg *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
52 1.3 mrg return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
53 1.3 mrg }
54 1.3 mrg
55 1.3 mrg extern __inline unsigned char
56 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
57 1.3 mrg _ktest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF)
58 1.3 mrg {
59 1.3 mrg *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
60 1.3 mrg return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
61 1.3 mrg }
62 1.3 mrg
63 1.3 mrg extern __inline unsigned char
64 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
65 1.3 mrg _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
66 1.3 mrg {
67 1.3 mrg return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
68 1.3 mrg }
69 1.3 mrg
70 1.3 mrg extern __inline unsigned char
71 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
72 1.3 mrg _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
73 1.3 mrg {
74 1.3 mrg return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
75 1.3 mrg }
76 1.3 mrg
77 1.3 mrg extern __inline unsigned char
78 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
79 1.3 mrg _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
80 1.3 mrg {
81 1.3 mrg return (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
82 1.3 mrg }
83 1.3 mrg
84 1.3 mrg extern __inline unsigned char
85 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
86 1.3 mrg _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
87 1.3 mrg {
88 1.3 mrg return (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
89 1.3 mrg }
90 1.3 mrg
91 1.3 mrg extern __inline unsigned char
92 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
93 1.3 mrg _kortest_mask32_u8 (__mmask32 __A, __mmask32 __B, unsigned char *__CF)
94 1.3 mrg {
95 1.3 mrg *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
96 1.3 mrg return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
97 1.3 mrg }
98 1.3 mrg
99 1.3 mrg extern __inline unsigned char
100 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
101 1.3 mrg _kortest_mask64_u8 (__mmask64 __A, __mmask64 __B, unsigned char *__CF)
102 1.3 mrg {
103 1.3 mrg *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
104 1.3 mrg return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
105 1.3 mrg }
106 1.3 mrg
107 1.3 mrg extern __inline unsigned char
108 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
109 1.3 mrg _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
110 1.3 mrg {
111 1.3 mrg return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
112 1.3 mrg }
113 1.3 mrg
114 1.3 mrg extern __inline unsigned char
115 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
116 1.3 mrg _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
117 1.3 mrg {
118 1.3 mrg return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
119 1.3 mrg }
120 1.3 mrg
121 1.3 mrg extern __inline unsigned char
122 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
123 1.3 mrg _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
124 1.3 mrg {
125 1.3 mrg return (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
126 1.3 mrg }
127 1.3 mrg
128 1.3 mrg extern __inline unsigned char
129 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
130 1.3 mrg _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
131 1.3 mrg {
132 1.3 mrg return (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
133 1.3 mrg }
134 1.3 mrg
135 1.3 mrg extern __inline __mmask32
136 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
137 1.3 mrg _kadd_mask32 (__mmask32 __A, __mmask32 __B)
138 1.3 mrg {
139 1.3 mrg return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B);
140 1.3 mrg }
141 1.3 mrg
142 1.3 mrg extern __inline __mmask64
143 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
144 1.3 mrg _kadd_mask64 (__mmask64 __A, __mmask64 __B)
145 1.3 mrg {
146 1.3 mrg return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B);
147 1.3 mrg }
148 1.3 mrg
149 1.3 mrg extern __inline unsigned int
150 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
151 1.3 mrg _cvtmask32_u32 (__mmask32 __A)
152 1.3 mrg {
153 1.3 mrg return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A);
154 1.3 mrg }
155 1.3 mrg
156 1.3 mrg extern __inline unsigned long long
157 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
158 1.3 mrg _cvtmask64_u64 (__mmask64 __A)
159 1.3 mrg {
160 1.3 mrg return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A);
161 1.3 mrg }
162 1.3 mrg
163 1.3 mrg extern __inline __mmask32
164 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
165 1.3 mrg _cvtu32_mask32 (unsigned int __A)
166 1.3 mrg {
167 1.3 mrg return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A);
168 1.3 mrg }
169 1.3 mrg
170 1.3 mrg extern __inline __mmask64
171 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
172 1.3 mrg _cvtu64_mask64 (unsigned long long __A)
173 1.3 mrg {
174 1.3 mrg return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A);
175 1.3 mrg }
176 1.3 mrg
177 1.3 mrg extern __inline __mmask32
178 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
179 1.3 mrg _load_mask32 (__mmask32 *__A)
180 1.3 mrg {
181 1.3 mrg return (__mmask32) __builtin_ia32_kmovd (*__A);
182 1.3 mrg }
183 1.3 mrg
184 1.3 mrg extern __inline __mmask64
185 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
186 1.3 mrg _load_mask64 (__mmask64 *__A)
187 1.3 mrg {
188 1.3 mrg return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A);
189 1.3 mrg }
190 1.3 mrg
191 1.3 mrg extern __inline void
192 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
193 1.3 mrg _store_mask32 (__mmask32 *__A, __mmask32 __B)
194 1.3 mrg {
195 1.3 mrg *(__mmask32 *) __A = __builtin_ia32_kmovd (__B);
196 1.3 mrg }
197 1.3 mrg
198 1.3 mrg extern __inline void
199 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
200 1.3 mrg _store_mask64 (__mmask64 *__A, __mmask64 __B)
201 1.3 mrg {
202 1.3 mrg *(__mmask64 *) __A = __builtin_ia32_kmovq (__B);
203 1.3 mrg }
204 1.3 mrg
205 1.3 mrg extern __inline __mmask32
206 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
207 1.3 mrg _knot_mask32 (__mmask32 __A)
208 1.3 mrg {
209 1.3 mrg return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A);
210 1.3 mrg }
211 1.3 mrg
212 1.3 mrg extern __inline __mmask64
213 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
214 1.3 mrg _knot_mask64 (__mmask64 __A)
215 1.3 mrg {
216 1.3 mrg return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A);
217 1.3 mrg }
218 1.3 mrg
219 1.3 mrg extern __inline __mmask32
220 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
221 1.3 mrg _kor_mask32 (__mmask32 __A, __mmask32 __B)
222 1.3 mrg {
223 1.3 mrg return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B);
224 1.3 mrg }
225 1.3 mrg
226 1.3 mrg extern __inline __mmask64
227 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
228 1.3 mrg _kor_mask64 (__mmask64 __A, __mmask64 __B)
229 1.3 mrg {
230 1.3 mrg return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B);
231 1.3 mrg }
232 1.3 mrg
233 1.3 mrg extern __inline __mmask32
234 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
235 1.3 mrg _kxnor_mask32 (__mmask32 __A, __mmask32 __B)
236 1.3 mrg {
237 1.3 mrg return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B);
238 1.3 mrg }
239 1.3 mrg
240 1.3 mrg extern __inline __mmask64
241 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
242 1.3 mrg _kxnor_mask64 (__mmask64 __A, __mmask64 __B)
243 1.3 mrg {
244 1.3 mrg return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B);
245 1.3 mrg }
246 1.3 mrg
247 1.3 mrg extern __inline __mmask32
248 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
249 1.3 mrg _kxor_mask32 (__mmask32 __A, __mmask32 __B)
250 1.3 mrg {
251 1.3 mrg return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B);
252 1.3 mrg }
253 1.3 mrg
254 1.3 mrg extern __inline __mmask64
255 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
256 1.3 mrg _kxor_mask64 (__mmask64 __A, __mmask64 __B)
257 1.3 mrg {
258 1.3 mrg return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B);
259 1.3 mrg }
260 1.3 mrg
261 1.3 mrg extern __inline __mmask32
262 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
263 1.3 mrg _kand_mask32 (__mmask32 __A, __mmask32 __B)
264 1.3 mrg {
265 1.3 mrg return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B);
266 1.3 mrg }
267 1.3 mrg
268 1.3 mrg extern __inline __mmask64
269 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
270 1.3 mrg _kand_mask64 (__mmask64 __A, __mmask64 __B)
271 1.3 mrg {
272 1.3 mrg return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B);
273 1.3 mrg }
274 1.3 mrg
275 1.3 mrg extern __inline __mmask32
276 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
277 1.3 mrg _kandn_mask32 (__mmask32 __A, __mmask32 __B)
278 1.1 mrg {
279 1.3 mrg return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B);
280 1.1 mrg }
281 1.1 mrg
282 1.3 mrg extern __inline __mmask64
283 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
284 1.3 mrg _kandn_mask64 (__mmask64 __A, __mmask64 __B)
285 1.1 mrg {
286 1.3 mrg return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B);
287 1.1 mrg }
288 1.1 mrg
289 1.1 mrg extern __inline __m512i
290 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
291 1.1 mrg _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
292 1.1 mrg {
293 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
294 1.1 mrg (__v32hi) __W,
295 1.1 mrg (__mmask32) __U);
296 1.1 mrg }
297 1.1 mrg
298 1.1 mrg extern __inline __m512i
299 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
300 1.1 mrg _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
301 1.1 mrg {
302 1.1 mrg return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
303 1.1 mrg (__v32hi)
304 1.3 mrg _mm512_setzero_si512 (),
305 1.1 mrg (__mmask32) __U);
306 1.1 mrg }
307 1.1 mrg
308 1.1 mrg extern __inline __m512i
309 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
310 1.7 mrg _mm512_loadu_epi16 (void const *__P)
311 1.7 mrg {
312 1.7 mrg return (__m512i) (*(const __v32hi_u *) __P);
313 1.7 mrg }
314 1.7 mrg
315 1.7 mrg extern __inline __m512i
316 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
317 1.1 mrg _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
318 1.1 mrg {
319 1.3 mrg return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
320 1.1 mrg (__v32hi) __W,
321 1.1 mrg (__mmask32) __U);
322 1.1 mrg }
323 1.1 mrg
324 1.1 mrg extern __inline __m512i
325 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
326 1.1 mrg _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
327 1.1 mrg {
328 1.3 mrg return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
329 1.1 mrg (__v32hi)
330 1.3 mrg _mm512_setzero_si512 (),
331 1.1 mrg (__mmask32) __U);
332 1.1 mrg }
333 1.1 mrg
334 1.1 mrg extern __inline void
335 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
336 1.7 mrg _mm512_storeu_epi16 (void *__P, __m512i __A)
337 1.7 mrg {
338 1.7 mrg *(__v32hi_u *) __P = (__v32hi_u) __A;
339 1.7 mrg }
340 1.7 mrg
341 1.7 mrg extern __inline void
342 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
343 1.1 mrg _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
344 1.1 mrg {
345 1.3 mrg __builtin_ia32_storedquhi512_mask ((short *) __P,
346 1.1 mrg (__v32hi) __A,
347 1.1 mrg (__mmask32) __U);
348 1.1 mrg }
349 1.1 mrg
350 1.1 mrg extern __inline __m512i
351 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
352 1.1 mrg _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
353 1.1 mrg {
354 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
355 1.1 mrg (__v64qi) __W,
356 1.1 mrg (__mmask64) __U);
357 1.1 mrg }
358 1.1 mrg
359 1.1 mrg extern __inline __m512i
360 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
361 1.1 mrg _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
362 1.1 mrg {
363 1.1 mrg return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
364 1.1 mrg (__v64qi)
365 1.3 mrg _mm512_setzero_si512 (),
366 1.1 mrg (__mmask64) __U);
367 1.1 mrg }
368 1.1 mrg
369 1.1 mrg extern __inline __mmask32
370 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
371 1.1 mrg _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
372 1.1 mrg {
373 1.1 mrg return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
374 1.1 mrg (__mmask32) __B);
375 1.1 mrg }
376 1.1 mrg
377 1.3 mrg extern __inline __mmask32
378 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
379 1.3 mrg _kunpackw_mask32 (__mmask16 __A, __mmask16 __B)
380 1.3 mrg {
381 1.3 mrg return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
382 1.3 mrg (__mmask32) __B);
383 1.3 mrg }
384 1.3 mrg
385 1.1 mrg extern __inline __mmask64
386 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
387 1.1 mrg _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
388 1.1 mrg {
389 1.1 mrg return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
390 1.1 mrg (__mmask64) __B);
391 1.1 mrg }
392 1.1 mrg
393 1.3 mrg extern __inline __mmask64
394 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
395 1.3 mrg _kunpackd_mask64 (__mmask32 __A, __mmask32 __B)
396 1.3 mrg {
397 1.3 mrg return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
398 1.3 mrg (__mmask64) __B);
399 1.3 mrg }
400 1.3 mrg
401 1.1 mrg extern __inline __m512i
402 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
403 1.7 mrg _mm512_loadu_epi8 (void const *__P)
404 1.7 mrg {
405 1.7 mrg return (__m512i) (*(const __v64qi_u *) __P);
406 1.7 mrg }
407 1.7 mrg
408 1.7 mrg extern __inline __m512i
409 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
410 1.1 mrg _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
411 1.1 mrg {
412 1.3 mrg return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
413 1.1 mrg (__v64qi) __W,
414 1.1 mrg (__mmask64) __U);
415 1.1 mrg }
416 1.1 mrg
417 1.1 mrg extern __inline __m512i
418 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
419 1.1 mrg _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
420 1.1 mrg {
421 1.3 mrg return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
422 1.1 mrg (__v64qi)
423 1.3 mrg _mm512_setzero_si512 (),
424 1.1 mrg (__mmask64) __U);
425 1.1 mrg }
426 1.1 mrg
427 1.1 mrg extern __inline void
428 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
429 1.7 mrg _mm512_storeu_epi8 (void *__P, __m512i __A)
430 1.7 mrg {
431 1.7 mrg *(__v64qi_u *) __P = (__v64qi_u) __A;
432 1.7 mrg }
433 1.7 mrg
434 1.7 mrg extern __inline void
435 1.7 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
436 1.1 mrg _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
437 1.1 mrg {
438 1.3 mrg __builtin_ia32_storedquqi512_mask ((char *) __P,
439 1.1 mrg (__v64qi) __A,
440 1.1 mrg (__mmask64) __U);
441 1.1 mrg }
442 1.1 mrg
443 1.1 mrg extern __inline __m512i
444 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
445 1.1 mrg _mm512_sad_epu8 (__m512i __A, __m512i __B)
446 1.1 mrg {
447 1.1 mrg return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
448 1.1 mrg (__v64qi) __B);
449 1.1 mrg }
450 1.1 mrg
451 1.1 mrg extern __inline __m256i
452 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
453 1.1 mrg _mm512_cvtepi16_epi8 (__m512i __A)
454 1.1 mrg {
455 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
456 1.1 mrg (__v32qi) _mm256_undefined_si256(),
457 1.1 mrg (__mmask32) -1);
458 1.1 mrg }
459 1.1 mrg
460 1.4 mrg extern __inline void
461 1.4 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
462 1.4 mrg _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
463 1.4 mrg {
464 1.4 mrg __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
465 1.4 mrg }
466 1.4 mrg
467 1.1 mrg extern __inline __m256i
468 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
469 1.1 mrg _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
470 1.1 mrg {
471 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
472 1.1 mrg (__v32qi) __O, __M);
473 1.1 mrg }
474 1.1 mrg
475 1.1 mrg extern __inline __m256i
476 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
477 1.1 mrg _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
478 1.1 mrg {
479 1.1 mrg return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
480 1.1 mrg (__v32qi)
481 1.1 mrg _mm256_setzero_si256 (),
482 1.1 mrg __M);
483 1.1 mrg }
484 1.1 mrg
485 1.1 mrg extern __inline __m256i
486 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
487 1.1 mrg _mm512_cvtsepi16_epi8 (__m512i __A)
488 1.1 mrg {
489 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
490 1.1 mrg (__v32qi)_mm256_undefined_si256(),
491 1.1 mrg (__mmask32) -1);
492 1.1 mrg }
493 1.1 mrg
494 1.4 mrg extern __inline void
495 1.4 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
496 1.4 mrg _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
497 1.4 mrg {
498 1.4 mrg __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
499 1.4 mrg }
500 1.4 mrg
501 1.1 mrg extern __inline __m256i
502 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
503 1.1 mrg _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
504 1.1 mrg {
505 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
506 1.1 mrg (__v32qi)__O,
507 1.1 mrg __M);
508 1.1 mrg }
509 1.1 mrg
510 1.1 mrg extern __inline __m256i
511 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
512 1.1 mrg _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
513 1.1 mrg {
514 1.1 mrg return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
515 1.1 mrg (__v32qi)
516 1.1 mrg _mm256_setzero_si256 (),
517 1.1 mrg __M);
518 1.1 mrg }
519 1.1 mrg
520 1.1 mrg extern __inline __m256i
521 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
522 1.1 mrg _mm512_cvtusepi16_epi8 (__m512i __A)
523 1.1 mrg {
524 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
525 1.1 mrg (__v32qi)_mm256_undefined_si256(),
526 1.1 mrg (__mmask32) -1);
527 1.1 mrg }
528 1.1 mrg
529 1.1 mrg extern __inline __m256i
530 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
531 1.1 mrg _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
532 1.1 mrg {
533 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
534 1.1 mrg (__v32qi) __O,
535 1.1 mrg __M);
536 1.1 mrg }
537 1.1 mrg
538 1.4 mrg extern __inline void
539 1.4 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
540 1.4 mrg _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
541 1.4 mrg {
542 1.4 mrg __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
543 1.4 mrg }
544 1.4 mrg
545 1.1 mrg extern __inline __m256i
546 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
547 1.1 mrg _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
548 1.1 mrg {
549 1.1 mrg return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
550 1.1 mrg (__v32qi)
551 1.1 mrg _mm256_setzero_si256 (),
552 1.1 mrg __M);
553 1.1 mrg }
554 1.1 mrg
555 1.1 mrg extern __inline __m512i
556 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
557 1.1 mrg _mm512_broadcastb_epi8 (__m128i __A)
558 1.1 mrg {
559 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
560 1.3 mrg (__v64qi)_mm512_undefined_epi32(),
561 1.3 mrg (__mmask64) -1);
562 1.1 mrg }
563 1.1 mrg
564 1.1 mrg extern __inline __m512i
565 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
566 1.1 mrg _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
567 1.1 mrg {
568 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
569 1.1 mrg (__v64qi) __O,
570 1.1 mrg __M);
571 1.1 mrg }
572 1.1 mrg
573 1.1 mrg extern __inline __m512i
574 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
575 1.1 mrg _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
576 1.1 mrg {
577 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
578 1.1 mrg (__v64qi)
579 1.3 mrg _mm512_setzero_si512 (),
580 1.1 mrg __M);
581 1.1 mrg }
582 1.1 mrg
583 1.1 mrg extern __inline __m512i
584 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
585 1.1 mrg _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
586 1.1 mrg {
587 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
588 1.1 mrg (__v64qi) __O,
589 1.1 mrg __M);
590 1.1 mrg }
591 1.1 mrg
592 1.1 mrg extern __inline __m512i
593 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
594 1.1 mrg _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
595 1.1 mrg {
596 1.3 mrg return (__m512i)
597 1.3 mrg __builtin_ia32_pbroadcastb512_gpr_mask (__A,
598 1.3 mrg (__v64qi)
599 1.3 mrg _mm512_setzero_si512 (),
600 1.3 mrg __M);
601 1.1 mrg }
602 1.1 mrg
603 1.1 mrg extern __inline __m512i
604 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
605 1.1 mrg _mm512_broadcastw_epi16 (__m128i __A)
606 1.1 mrg {
607 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
608 1.3 mrg (__v32hi)_mm512_undefined_epi32(),
609 1.3 mrg (__mmask32) -1);
610 1.1 mrg }
611 1.1 mrg
612 1.1 mrg extern __inline __m512i
613 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
614 1.1 mrg _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
615 1.1 mrg {
616 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
617 1.1 mrg (__v32hi) __O,
618 1.1 mrg __M);
619 1.1 mrg }
620 1.1 mrg
621 1.1 mrg extern __inline __m512i
622 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
623 1.1 mrg _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
624 1.1 mrg {
625 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
626 1.1 mrg (__v32hi)
627 1.3 mrg _mm512_setzero_si512 (),
628 1.1 mrg __M);
629 1.1 mrg }
630 1.1 mrg
631 1.1 mrg extern __inline __m512i
632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
633 1.1 mrg _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
634 1.1 mrg {
635 1.1 mrg return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
636 1.1 mrg (__v32hi) __O,
637 1.1 mrg __M);
638 1.1 mrg }
639 1.1 mrg
640 1.1 mrg extern __inline __m512i
641 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
642 1.1 mrg _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
643 1.1 mrg {
644 1.3 mrg return (__m512i)
645 1.3 mrg __builtin_ia32_pbroadcastw512_gpr_mask (__A,
646 1.3 mrg (__v32hi)
647 1.3 mrg _mm512_setzero_si512 (),
648 1.3 mrg __M);
649 1.1 mrg }
650 1.1 mrg
651 1.1 mrg extern __inline __m512i
652 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
653 1.1 mrg _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
654 1.1 mrg {
655 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
656 1.1 mrg (__v32hi) __B,
657 1.1 mrg (__v32hi)
658 1.3 mrg _mm512_setzero_si512 (),
659 1.1 mrg (__mmask32) -1);
660 1.1 mrg }
661 1.1 mrg
662 1.1 mrg extern __inline __m512i
663 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
664 1.1 mrg _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
665 1.1 mrg __m512i __B)
666 1.1 mrg {
667 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
668 1.1 mrg (__v32hi) __B,
669 1.1 mrg (__v32hi) __W,
670 1.1 mrg (__mmask32) __U);
671 1.1 mrg }
672 1.1 mrg
673 1.1 mrg extern __inline __m512i
674 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
675 1.1 mrg _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
676 1.1 mrg {
677 1.1 mrg return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
678 1.1 mrg (__v32hi) __B,
679 1.1 mrg (__v32hi)
680 1.3 mrg _mm512_setzero_si512 (),
681 1.1 mrg (__mmask32) __U);
682 1.1 mrg }
683 1.1 mrg
684 1.1 mrg extern __inline __m512i
685 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
686 1.1 mrg _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
687 1.1 mrg {
688 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
689 1.1 mrg (__v32hi) __B,
690 1.1 mrg (__v32hi)
691 1.3 mrg _mm512_setzero_si512 (),
692 1.1 mrg (__mmask32) -1);
693 1.1 mrg }
694 1.1 mrg
695 1.1 mrg extern __inline __m512i
696 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
697 1.1 mrg _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
698 1.1 mrg __m512i __B)
699 1.1 mrg {
700 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
701 1.1 mrg (__v32hi) __B,
702 1.1 mrg (__v32hi) __W,
703 1.1 mrg (__mmask32) __U);
704 1.1 mrg }
705 1.1 mrg
706 1.1 mrg extern __inline __m512i
707 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
708 1.1 mrg _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
709 1.1 mrg {
710 1.1 mrg return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
711 1.1 mrg (__v32hi) __B,
712 1.1 mrg (__v32hi)
713 1.3 mrg _mm512_setzero_si512 (),
714 1.1 mrg (__mmask32) __U);
715 1.1 mrg }
716 1.1 mrg
717 1.1 mrg extern __inline __m512i
718 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
719 1.1 mrg _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
720 1.1 mrg {
721 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
722 1.1 mrg (__v32hi) __B,
723 1.1 mrg (__v32hi)
724 1.3 mrg _mm512_setzero_si512 (),
725 1.1 mrg (__mmask32) -1);
726 1.1 mrg }
727 1.1 mrg
728 1.1 mrg extern __inline __m512i
729 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
730 1.1 mrg _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
731 1.1 mrg __m512i __B)
732 1.1 mrg {
733 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
734 1.1 mrg (__v32hi) __B,
735 1.1 mrg (__v32hi) __W,
736 1.1 mrg (__mmask32) __U);
737 1.1 mrg }
738 1.1 mrg
739 1.1 mrg extern __inline __m512i
740 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
741 1.1 mrg _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
742 1.1 mrg {
743 1.1 mrg return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
744 1.1 mrg (__v32hi) __B,
745 1.1 mrg (__v32hi)
746 1.3 mrg _mm512_setzero_si512 (),
747 1.1 mrg (__mmask32) __U);
748 1.1 mrg }
749 1.1 mrg
750 1.1 mrg extern __inline __m512i
751 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
752 1.1 mrg _mm512_mullo_epi16 (__m512i __A, __m512i __B)
753 1.1 mrg {
754 1.1 mrg return (__m512i) ((__v32hu) __A * (__v32hu) __B);
755 1.1 mrg }
756 1.1 mrg
757 1.1 mrg extern __inline __m512i
758 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
759 1.1 mrg _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
760 1.1 mrg __m512i __B)
761 1.1 mrg {
762 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
763 1.1 mrg (__v32hi) __B,
764 1.1 mrg (__v32hi) __W,
765 1.1 mrg (__mmask32) __U);
766 1.1 mrg }
767 1.1 mrg
768 1.1 mrg extern __inline __m512i
769 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
770 1.1 mrg _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
771 1.1 mrg {
772 1.1 mrg return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
773 1.1 mrg (__v32hi) __B,
774 1.1 mrg (__v32hi)
775 1.3 mrg _mm512_setzero_si512 (),
776 1.1 mrg (__mmask32) __U);
777 1.1 mrg }
778 1.1 mrg
779 1.1 mrg extern __inline __m512i
780 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
781 1.1 mrg _mm512_cvtepi8_epi16 (__m256i __A)
782 1.1 mrg {
783 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
784 1.1 mrg (__v32hi)
785 1.3 mrg _mm512_setzero_si512 (),
786 1.1 mrg (__mmask32) -1);
787 1.1 mrg }
788 1.1 mrg
789 1.1 mrg extern __inline __m512i
790 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
791 1.1 mrg _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
792 1.1 mrg {
793 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
794 1.1 mrg (__v32hi) __W,
795 1.1 mrg (__mmask32) __U);
796 1.1 mrg }
797 1.1 mrg
798 1.1 mrg extern __inline __m512i
799 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
800 1.1 mrg _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
801 1.1 mrg {
802 1.1 mrg return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
803 1.1 mrg (__v32hi)
804 1.3 mrg _mm512_setzero_si512 (),
805 1.1 mrg (__mmask32) __U);
806 1.1 mrg }
807 1.1 mrg
808 1.1 mrg extern __inline __m512i
809 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
810 1.1 mrg _mm512_cvtepu8_epi16 (__m256i __A)
811 1.1 mrg {
812 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
813 1.1 mrg (__v32hi)
814 1.3 mrg _mm512_setzero_si512 (),
815 1.1 mrg (__mmask32) -1);
816 1.1 mrg }
817 1.1 mrg
818 1.1 mrg extern __inline __m512i
819 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
820 1.1 mrg _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
821 1.1 mrg {
822 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
823 1.1 mrg (__v32hi) __W,
824 1.1 mrg (__mmask32) __U);
825 1.1 mrg }
826 1.1 mrg
827 1.1 mrg extern __inline __m512i
828 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
829 1.1 mrg _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
830 1.1 mrg {
831 1.1 mrg return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
832 1.1 mrg (__v32hi)
833 1.3 mrg _mm512_setzero_si512 (),
834 1.1 mrg (__mmask32) __U);
835 1.1 mrg }
836 1.1 mrg
837 1.1 mrg extern __inline __m512i
838 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
839 1.1 mrg _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
840 1.1 mrg {
841 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
842 1.1 mrg (__v32hi) __A,
843 1.1 mrg (__v32hi)
844 1.3 mrg _mm512_setzero_si512 (),
845 1.1 mrg (__mmask32) -1);
846 1.1 mrg }
847 1.1 mrg
848 1.1 mrg extern __inline __m512i
849 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
850 1.1 mrg _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
851 1.1 mrg __m512i __B)
852 1.1 mrg {
853 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
854 1.1 mrg (__v32hi) __A,
855 1.1 mrg (__v32hi)
856 1.3 mrg _mm512_setzero_si512 (),
857 1.1 mrg (__mmask32) __M);
858 1.1 mrg }
859 1.1 mrg
860 1.1 mrg extern __inline __m512i
861 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
862 1.1 mrg _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
863 1.1 mrg __m512i __B)
864 1.1 mrg {
865 1.1 mrg return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
866 1.1 mrg (__v32hi) __A,
867 1.1 mrg (__v32hi) __W,
868 1.1 mrg (__mmask32) __M);
869 1.1 mrg }
870 1.1 mrg
871 1.1 mrg extern __inline __m512i
872 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
873 1.1 mrg _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
874 1.1 mrg {
875 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
876 1.1 mrg /* idx */ ,
877 1.1 mrg (__v32hi) __A,
878 1.1 mrg (__v32hi) __B,
879 1.3 mrg (__mmask32) -1);
880 1.1 mrg }
881 1.1 mrg
882 1.1 mrg extern __inline __m512i
883 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
884 1.1 mrg _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
885 1.1 mrg __m512i __I, __m512i __B)
886 1.1 mrg {
887 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
888 1.1 mrg /* idx */ ,
889 1.1 mrg (__v32hi) __A,
890 1.1 mrg (__v32hi) __B,
891 1.1 mrg (__mmask32)
892 1.1 mrg __U);
893 1.1 mrg }
894 1.1 mrg
895 1.1 mrg extern __inline __m512i
896 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
897 1.1 mrg _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
898 1.1 mrg __mmask32 __U, __m512i __B)
899 1.1 mrg {
900 1.1 mrg return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
901 1.1 mrg (__v32hi) __I
902 1.1 mrg /* idx */ ,
903 1.1 mrg (__v32hi) __B,
904 1.1 mrg (__mmask32)
905 1.1 mrg __U);
906 1.1 mrg }
907 1.1 mrg
908 1.1 mrg extern __inline __m512i
909 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
910 1.1 mrg _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
911 1.1 mrg __m512i __I, __m512i __B)
912 1.1 mrg {
913 1.1 mrg return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
914 1.1 mrg /* idx */ ,
915 1.1 mrg (__v32hi) __A,
916 1.1 mrg (__v32hi) __B,
917 1.1 mrg (__mmask32)
918 1.1 mrg __U);
919 1.1 mrg }
920 1.1 mrg
921 1.1 mrg extern __inline __m512i
922 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
923 1.1 mrg _mm512_avg_epu8 (__m512i __A, __m512i __B)
924 1.1 mrg {
925 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
926 1.1 mrg (__v64qi) __B,
927 1.1 mrg (__v64qi)
928 1.3 mrg _mm512_setzero_si512 (),
929 1.1 mrg (__mmask64) -1);
930 1.1 mrg }
931 1.1 mrg
932 1.1 mrg extern __inline __m512i
933 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
934 1.1 mrg _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
935 1.1 mrg __m512i __B)
936 1.1 mrg {
937 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
938 1.1 mrg (__v64qi) __B,
939 1.1 mrg (__v64qi) __W,
940 1.1 mrg (__mmask64) __U);
941 1.1 mrg }
942 1.1 mrg
943 1.1 mrg extern __inline __m512i
944 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
945 1.1 mrg _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
946 1.1 mrg {
947 1.1 mrg return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
948 1.1 mrg (__v64qi) __B,
949 1.1 mrg (__v64qi)
950 1.3 mrg _mm512_setzero_si512 (),
951 1.1 mrg (__mmask64) __U);
952 1.1 mrg }
953 1.1 mrg
954 1.1 mrg extern __inline __m512i
955 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
956 1.1 mrg _mm512_add_epi8 (__m512i __A, __m512i __B)
957 1.1 mrg {
958 1.1 mrg return (__m512i) ((__v64qu) __A + (__v64qu) __B);
959 1.1 mrg }
960 1.1 mrg
961 1.1 mrg extern __inline __m512i
962 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
963 1.1 mrg _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
964 1.1 mrg __m512i __B)
965 1.1 mrg {
966 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
967 1.1 mrg (__v64qi) __B,
968 1.1 mrg (__v64qi) __W,
969 1.1 mrg (__mmask64) __U);
970 1.1 mrg }
971 1.1 mrg
972 1.1 mrg extern __inline __m512i
973 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
974 1.1 mrg _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
975 1.1 mrg {
976 1.1 mrg return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
977 1.1 mrg (__v64qi) __B,
978 1.1 mrg (__v64qi)
979 1.3 mrg _mm512_setzero_si512 (),
980 1.1 mrg (__mmask64) __U);
981 1.1 mrg }
982 1.1 mrg
983 1.1 mrg extern __inline __m512i
984 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
985 1.1 mrg _mm512_sub_epi8 (__m512i __A, __m512i __B)
986 1.1 mrg {
987 1.1 mrg return (__m512i) ((__v64qu) __A - (__v64qu) __B);
988 1.1 mrg }
989 1.1 mrg
990 1.1 mrg extern __inline __m512i
991 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
992 1.1 mrg _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
993 1.1 mrg __m512i __B)
994 1.1 mrg {
995 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
996 1.1 mrg (__v64qi) __B,
997 1.1 mrg (__v64qi) __W,
998 1.1 mrg (__mmask64) __U);
999 1.1 mrg }
1000 1.1 mrg
1001 1.1 mrg extern __inline __m512i
1002 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1003 1.1 mrg _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1004 1.1 mrg {
1005 1.1 mrg return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
1006 1.1 mrg (__v64qi) __B,
1007 1.1 mrg (__v64qi)
1008 1.3 mrg _mm512_setzero_si512 (),
1009 1.1 mrg (__mmask64) __U);
1010 1.1 mrg }
1011 1.1 mrg
1012 1.1 mrg extern __inline __m512i
1013 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1014 1.1 mrg _mm512_avg_epu16 (__m512i __A, __m512i __B)
1015 1.1 mrg {
1016 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
1017 1.1 mrg (__v32hi) __B,
1018 1.1 mrg (__v32hi)
1019 1.3 mrg _mm512_setzero_si512 (),
1020 1.1 mrg (__mmask32) -1);
1021 1.1 mrg }
1022 1.1 mrg
1023 1.1 mrg extern __inline __m512i
1024 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1025 1.1 mrg _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1026 1.1 mrg __m512i __B)
1027 1.1 mrg {
1028 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
1029 1.1 mrg (__v32hi) __B,
1030 1.1 mrg (__v32hi) __W,
1031 1.1 mrg (__mmask32) __U);
1032 1.1 mrg }
1033 1.1 mrg
1034 1.1 mrg extern __inline __m512i
1035 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1036 1.1 mrg _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1037 1.1 mrg {
1038 1.1 mrg return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
1039 1.1 mrg (__v32hi) __B,
1040 1.1 mrg (__v32hi)
1041 1.3 mrg _mm512_setzero_si512 (),
1042 1.1 mrg (__mmask32) __U);
1043 1.1 mrg }
1044 1.1 mrg
1045 1.1 mrg extern __inline __m512i
1046 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1047 1.1 mrg _mm512_subs_epi8 (__m512i __A, __m512i __B)
1048 1.1 mrg {
1049 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1050 1.1 mrg (__v64qi) __B,
1051 1.1 mrg (__v64qi)
1052 1.3 mrg _mm512_setzero_si512 (),
1053 1.1 mrg (__mmask64) -1);
1054 1.1 mrg }
1055 1.1 mrg
1056 1.1 mrg extern __inline __m512i
1057 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1058 1.1 mrg _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1059 1.1 mrg __m512i __B)
1060 1.1 mrg {
1061 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1062 1.1 mrg (__v64qi) __B,
1063 1.1 mrg (__v64qi) __W,
1064 1.1 mrg (__mmask64) __U);
1065 1.1 mrg }
1066 1.1 mrg
1067 1.1 mrg extern __inline __m512i
1068 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1069 1.1 mrg _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1070 1.1 mrg {
1071 1.1 mrg return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1072 1.1 mrg (__v64qi) __B,
1073 1.1 mrg (__v64qi)
1074 1.3 mrg _mm512_setzero_si512 (),
1075 1.1 mrg (__mmask64) __U);
1076 1.1 mrg }
1077 1.1 mrg
1078 1.1 mrg extern __inline __m512i
1079 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1080 1.1 mrg _mm512_subs_epu8 (__m512i __A, __m512i __B)
1081 1.1 mrg {
1082 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1083 1.1 mrg (__v64qi) __B,
1084 1.1 mrg (__v64qi)
1085 1.3 mrg _mm512_setzero_si512 (),
1086 1.1 mrg (__mmask64) -1);
1087 1.1 mrg }
1088 1.1 mrg
1089 1.1 mrg extern __inline __m512i
1090 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1091 1.1 mrg _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1092 1.1 mrg __m512i __B)
1093 1.1 mrg {
1094 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1095 1.1 mrg (__v64qi) __B,
1096 1.1 mrg (__v64qi) __W,
1097 1.1 mrg (__mmask64) __U);
1098 1.1 mrg }
1099 1.1 mrg
1100 1.1 mrg extern __inline __m512i
1101 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1102 1.1 mrg _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1103 1.1 mrg {
1104 1.1 mrg return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1105 1.1 mrg (__v64qi) __B,
1106 1.1 mrg (__v64qi)
1107 1.3 mrg _mm512_setzero_si512 (),
1108 1.1 mrg (__mmask64) __U);
1109 1.1 mrg }
1110 1.1 mrg
1111 1.1 mrg extern __inline __m512i
1112 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1113 1.1 mrg _mm512_adds_epi8 (__m512i __A, __m512i __B)
1114 1.1 mrg {
1115 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1116 1.1 mrg (__v64qi) __B,
1117 1.1 mrg (__v64qi)
1118 1.3 mrg _mm512_setzero_si512 (),
1119 1.1 mrg (__mmask64) -1);
1120 1.1 mrg }
1121 1.1 mrg
1122 1.1 mrg extern __inline __m512i
1123 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1124 1.1 mrg _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1125 1.1 mrg __m512i __B)
1126 1.1 mrg {
1127 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1128 1.1 mrg (__v64qi) __B,
1129 1.1 mrg (__v64qi) __W,
1130 1.1 mrg (__mmask64) __U);
1131 1.1 mrg }
1132 1.1 mrg
1133 1.1 mrg extern __inline __m512i
1134 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1135 1.1 mrg _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1136 1.1 mrg {
1137 1.1 mrg return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1138 1.1 mrg (__v64qi) __B,
1139 1.1 mrg (__v64qi)
1140 1.3 mrg _mm512_setzero_si512 (),
1141 1.1 mrg (__mmask64) __U);
1142 1.1 mrg }
1143 1.1 mrg
1144 1.1 mrg extern __inline __m512i
1145 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1146 1.1 mrg _mm512_adds_epu8 (__m512i __A, __m512i __B)
1147 1.1 mrg {
1148 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1149 1.1 mrg (__v64qi) __B,
1150 1.1 mrg (__v64qi)
1151 1.3 mrg _mm512_setzero_si512 (),
1152 1.1 mrg (__mmask64) -1);
1153 1.1 mrg }
1154 1.1 mrg
1155 1.1 mrg extern __inline __m512i
1156 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1157 1.1 mrg _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1158 1.1 mrg __m512i __B)
1159 1.1 mrg {
1160 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1161 1.1 mrg (__v64qi) __B,
1162 1.1 mrg (__v64qi) __W,
1163 1.1 mrg (__mmask64) __U);
1164 1.1 mrg }
1165 1.1 mrg
1166 1.1 mrg extern __inline __m512i
1167 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1168 1.1 mrg _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1169 1.1 mrg {
1170 1.1 mrg return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1171 1.1 mrg (__v64qi) __B,
1172 1.1 mrg (__v64qi)
1173 1.3 mrg _mm512_setzero_si512 (),
1174 1.1 mrg (__mmask64) __U);
1175 1.1 mrg }
1176 1.1 mrg
1177 1.1 mrg extern __inline __m512i
1178 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1179 1.1 mrg _mm512_sub_epi16 (__m512i __A, __m512i __B)
1180 1.1 mrg {
1181 1.1 mrg return (__m512i) ((__v32hu) __A - (__v32hu) __B);
1182 1.1 mrg }
1183 1.1 mrg
1184 1.1 mrg extern __inline __m512i
1185 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1186 1.1 mrg _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1187 1.1 mrg __m512i __B)
1188 1.1 mrg {
1189 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
1190 1.1 mrg (__v32hi) __B,
1191 1.1 mrg (__v32hi) __W,
1192 1.1 mrg (__mmask32) __U);
1193 1.1 mrg }
1194 1.1 mrg
1195 1.1 mrg extern __inline __m512i
1196 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1197 1.1 mrg _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1198 1.1 mrg {
1199 1.1 mrg return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
1200 1.1 mrg (__v32hi) __B,
1201 1.1 mrg (__v32hi)
1202 1.3 mrg _mm512_setzero_si512 (),
1203 1.1 mrg (__mmask32) __U);
1204 1.1 mrg }
1205 1.1 mrg
1206 1.1 mrg extern __inline __m512i
1207 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1208 1.1 mrg _mm512_subs_epi16 (__m512i __A, __m512i __B)
1209 1.1 mrg {
1210 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1211 1.1 mrg (__v32hi) __B,
1212 1.1 mrg (__v32hi)
1213 1.3 mrg _mm512_setzero_si512 (),
1214 1.1 mrg (__mmask32) -1);
1215 1.1 mrg }
1216 1.1 mrg
1217 1.1 mrg extern __inline __m512i
1218 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1219 1.1 mrg _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1220 1.1 mrg __m512i __B)
1221 1.1 mrg {
1222 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1223 1.1 mrg (__v32hi) __B,
1224 1.1 mrg (__v32hi) __W,
1225 1.1 mrg (__mmask32) __U);
1226 1.1 mrg }
1227 1.1 mrg
1228 1.1 mrg extern __inline __m512i
1229 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1230 1.1 mrg _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1231 1.1 mrg {
1232 1.1 mrg return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1233 1.1 mrg (__v32hi) __B,
1234 1.1 mrg (__v32hi)
1235 1.3 mrg _mm512_setzero_si512 (),
1236 1.1 mrg (__mmask32) __U);
1237 1.1 mrg }
1238 1.1 mrg
1239 1.1 mrg extern __inline __m512i
1240 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1241 1.1 mrg _mm512_subs_epu16 (__m512i __A, __m512i __B)
1242 1.1 mrg {
1243 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1244 1.1 mrg (__v32hi) __B,
1245 1.1 mrg (__v32hi)
1246 1.3 mrg _mm512_setzero_si512 (),
1247 1.1 mrg (__mmask32) -1);
1248 1.1 mrg }
1249 1.1 mrg
1250 1.1 mrg extern __inline __m512i
1251 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1252 1.1 mrg _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1253 1.1 mrg __m512i __B)
1254 1.1 mrg {
1255 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1256 1.1 mrg (__v32hi) __B,
1257 1.1 mrg (__v32hi) __W,
1258 1.1 mrg (__mmask32) __U);
1259 1.1 mrg }
1260 1.1 mrg
1261 1.1 mrg extern __inline __m512i
1262 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1263 1.1 mrg _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1264 1.1 mrg {
1265 1.1 mrg return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1266 1.1 mrg (__v32hi) __B,
1267 1.1 mrg (__v32hi)
1268 1.3 mrg _mm512_setzero_si512 (),
1269 1.1 mrg (__mmask32) __U);
1270 1.1 mrg }
1271 1.1 mrg
1272 1.1 mrg extern __inline __m512i
1273 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1274 1.1 mrg _mm512_add_epi16 (__m512i __A, __m512i __B)
1275 1.1 mrg {
1276 1.1 mrg return (__m512i) ((__v32hu) __A + (__v32hu) __B);
1277 1.1 mrg }
1278 1.1 mrg
1279 1.1 mrg extern __inline __m512i
1280 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1281 1.1 mrg _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1282 1.1 mrg __m512i __B)
1283 1.1 mrg {
1284 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1285 1.1 mrg (__v32hi) __B,
1286 1.1 mrg (__v32hi) __W,
1287 1.1 mrg (__mmask32) __U);
1288 1.1 mrg }
1289 1.1 mrg
1290 1.1 mrg extern __inline __m512i
1291 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1292 1.1 mrg _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1293 1.1 mrg {
1294 1.1 mrg return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1295 1.1 mrg (__v32hi) __B,
1296 1.1 mrg (__v32hi)
1297 1.3 mrg _mm512_setzero_si512 (),
1298 1.1 mrg (__mmask32) __U);
1299 1.1 mrg }
1300 1.1 mrg
1301 1.1 mrg extern __inline __m512i
1302 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1303 1.1 mrg _mm512_adds_epi16 (__m512i __A, __m512i __B)
1304 1.1 mrg {
1305 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1306 1.1 mrg (__v32hi) __B,
1307 1.1 mrg (__v32hi)
1308 1.3 mrg _mm512_setzero_si512 (),
1309 1.1 mrg (__mmask32) -1);
1310 1.1 mrg }
1311 1.1 mrg
1312 1.1 mrg extern __inline __m512i
1313 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1314 1.1 mrg _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1315 1.1 mrg __m512i __B)
1316 1.1 mrg {
1317 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1318 1.1 mrg (__v32hi) __B,
1319 1.1 mrg (__v32hi) __W,
1320 1.1 mrg (__mmask32) __U);
1321 1.1 mrg }
1322 1.1 mrg
1323 1.1 mrg extern __inline __m512i
1324 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1325 1.1 mrg _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1326 1.1 mrg {
1327 1.1 mrg return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1328 1.1 mrg (__v32hi) __B,
1329 1.1 mrg (__v32hi)
1330 1.3 mrg _mm512_setzero_si512 (),
1331 1.1 mrg (__mmask32) __U);
1332 1.1 mrg }
1333 1.1 mrg
1334 1.1 mrg extern __inline __m512i
1335 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1336 1.1 mrg _mm512_adds_epu16 (__m512i __A, __m512i __B)
1337 1.1 mrg {
1338 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1339 1.1 mrg (__v32hi) __B,
1340 1.1 mrg (__v32hi)
1341 1.3 mrg _mm512_setzero_si512 (),
1342 1.1 mrg (__mmask32) -1);
1343 1.1 mrg }
1344 1.1 mrg
1345 1.1 mrg extern __inline __m512i
1346 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1347 1.1 mrg _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1348 1.1 mrg __m512i __B)
1349 1.1 mrg {
1350 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1351 1.1 mrg (__v32hi) __B,
1352 1.1 mrg (__v32hi) __W,
1353 1.1 mrg (__mmask32) __U);
1354 1.1 mrg }
1355 1.1 mrg
1356 1.1 mrg extern __inline __m512i
1357 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1358 1.1 mrg _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1359 1.1 mrg {
1360 1.1 mrg return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1361 1.1 mrg (__v32hi) __B,
1362 1.1 mrg (__v32hi)
1363 1.3 mrg _mm512_setzero_si512 (),
1364 1.1 mrg (__mmask32) __U);
1365 1.1 mrg }
1366 1.1 mrg
1367 1.1 mrg extern __inline __m512i
1368 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1369 1.1 mrg _mm512_srl_epi16 (__m512i __A, __m128i __B)
1370 1.1 mrg {
1371 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1372 1.1 mrg (__v8hi) __B,
1373 1.1 mrg (__v32hi)
1374 1.3 mrg _mm512_setzero_si512 (),
1375 1.1 mrg (__mmask32) -1);
1376 1.1 mrg }
1377 1.1 mrg
1378 1.1 mrg extern __inline __m512i
1379 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1380 1.1 mrg _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1381 1.1 mrg __m128i __B)
1382 1.1 mrg {
1383 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1384 1.1 mrg (__v8hi) __B,
1385 1.1 mrg (__v32hi) __W,
1386 1.1 mrg (__mmask32) __U);
1387 1.1 mrg }
1388 1.1 mrg
1389 1.1 mrg extern __inline __m512i
1390 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1391 1.1 mrg _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1392 1.1 mrg {
1393 1.1 mrg return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1394 1.1 mrg (__v8hi) __B,
1395 1.1 mrg (__v32hi)
1396 1.3 mrg _mm512_setzero_si512 (),
1397 1.1 mrg (__mmask32) __U);
1398 1.1 mrg }
1399 1.1 mrg
1400 1.1 mrg extern __inline __m512i
1401 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1402 1.1 mrg _mm512_packs_epi16 (__m512i __A, __m512i __B)
1403 1.1 mrg {
1404 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1405 1.1 mrg (__v32hi) __B,
1406 1.1 mrg (__v64qi)
1407 1.3 mrg _mm512_setzero_si512 (),
1408 1.1 mrg (__mmask64) -1);
1409 1.1 mrg }
1410 1.1 mrg
1411 1.1 mrg extern __inline __m512i
1412 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1413 1.1 mrg _mm512_sll_epi16 (__m512i __A, __m128i __B)
1414 1.1 mrg {
1415 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1416 1.1 mrg (__v8hi) __B,
1417 1.1 mrg (__v32hi)
1418 1.3 mrg _mm512_setzero_si512 (),
1419 1.1 mrg (__mmask32) -1);
1420 1.1 mrg }
1421 1.1 mrg
1422 1.1 mrg extern __inline __m512i
1423 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1424 1.1 mrg _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1425 1.1 mrg __m128i __B)
1426 1.1 mrg {
1427 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1428 1.1 mrg (__v8hi) __B,
1429 1.1 mrg (__v32hi) __W,
1430 1.1 mrg (__mmask32) __U);
1431 1.1 mrg }
1432 1.1 mrg
1433 1.1 mrg extern __inline __m512i
1434 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1435 1.1 mrg _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1436 1.1 mrg {
1437 1.1 mrg return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1438 1.1 mrg (__v8hi) __B,
1439 1.1 mrg (__v32hi)
1440 1.3 mrg _mm512_setzero_si512 (),
1441 1.1 mrg (__mmask32) __U);
1442 1.1 mrg }
1443 1.1 mrg
1444 1.1 mrg extern __inline __m512i
1445 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1446 1.1 mrg _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
1447 1.1 mrg {
1448 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1449 1.1 mrg (__v64qi) __Y,
1450 1.1 mrg (__v32hi)
1451 1.3 mrg _mm512_setzero_si512 (),
1452 1.1 mrg (__mmask32) -1);
1453 1.1 mrg }
1454 1.1 mrg
1455 1.1 mrg extern __inline __m512i
1456 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1457 1.1 mrg _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1458 1.1 mrg __m512i __Y)
1459 1.1 mrg {
1460 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1461 1.1 mrg (__v64qi) __Y,
1462 1.1 mrg (__v32hi) __W,
1463 1.1 mrg (__mmask32) __U);
1464 1.1 mrg }
1465 1.1 mrg
1466 1.1 mrg extern __inline __m512i
1467 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1468 1.1 mrg _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
1469 1.1 mrg {
1470 1.1 mrg return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1471 1.1 mrg (__v64qi) __Y,
1472 1.1 mrg (__v32hi)
1473 1.3 mrg _mm512_setzero_si512 (),
1474 1.1 mrg (__mmask32) __U);
1475 1.1 mrg }
1476 1.1 mrg
1477 1.1 mrg extern __inline __m512i
1478 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1479 1.1 mrg _mm512_madd_epi16 (__m512i __A, __m512i __B)
1480 1.1 mrg {
1481 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1482 1.1 mrg (__v32hi) __B,
1483 1.1 mrg (__v16si)
1484 1.1 mrg _mm512_setzero_si512 (),
1485 1.1 mrg (__mmask16) -1);
1486 1.1 mrg }
1487 1.1 mrg
1488 1.1 mrg extern __inline __m512i
1489 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1490 1.1 mrg _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1491 1.1 mrg __m512i __B)
1492 1.1 mrg {
1493 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1494 1.1 mrg (__v32hi) __B,
1495 1.1 mrg (__v16si) __W,
1496 1.1 mrg (__mmask16) __U);
1497 1.1 mrg }
1498 1.1 mrg
1499 1.1 mrg extern __inline __m512i
1500 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1501 1.1 mrg _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
1502 1.1 mrg {
1503 1.1 mrg return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1504 1.1 mrg (__v32hi) __B,
1505 1.1 mrg (__v16si)
1506 1.1 mrg _mm512_setzero_si512 (),
1507 1.1 mrg (__mmask16) __U);
1508 1.1 mrg }
1509 1.1 mrg
1510 1.1 mrg extern __inline __m512i
1511 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1512 1.1 mrg _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
1513 1.1 mrg {
1514 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1515 1.1 mrg (__v64qi) __B,
1516 1.1 mrg (__v64qi)
1517 1.3 mrg _mm512_setzero_si512 (),
1518 1.1 mrg (__mmask64) -1);
1519 1.1 mrg }
1520 1.1 mrg
1521 1.1 mrg extern __inline __m512i
1522 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1523 1.1 mrg _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1524 1.1 mrg __m512i __B)
1525 1.1 mrg {
1526 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1527 1.1 mrg (__v64qi) __B,
1528 1.1 mrg (__v64qi) __W,
1529 1.1 mrg (__mmask64) __U);
1530 1.1 mrg }
1531 1.1 mrg
1532 1.1 mrg extern __inline __m512i
1533 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1534 1.1 mrg _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1535 1.1 mrg {
1536 1.1 mrg return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1537 1.1 mrg (__v64qi) __B,
1538 1.1 mrg (__v64qi)
1539 1.3 mrg _mm512_setzero_si512 (),
1540 1.1 mrg (__mmask64) __U);
1541 1.1 mrg }
1542 1.1 mrg
1543 1.1 mrg extern __inline __m512i
1544 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1545 1.1 mrg _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
1546 1.1 mrg {
1547 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1548 1.1 mrg (__v32hi) __B,
1549 1.1 mrg (__v32hi)
1550 1.3 mrg _mm512_setzero_si512 (),
1551 1.1 mrg (__mmask32) -1);
1552 1.1 mrg }
1553 1.1 mrg
1554 1.1 mrg extern __inline __m512i
1555 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1556 1.1 mrg _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1557 1.1 mrg __m512i __B)
1558 1.1 mrg {
1559 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1560 1.1 mrg (__v32hi) __B,
1561 1.1 mrg (__v32hi) __W,
1562 1.1 mrg (__mmask32) __U);
1563 1.1 mrg }
1564 1.1 mrg
1565 1.1 mrg extern __inline __m512i
1566 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1567 1.1 mrg _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1568 1.1 mrg {
1569 1.1 mrg return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1570 1.1 mrg (__v32hi) __B,
1571 1.1 mrg (__v32hi)
1572 1.3 mrg _mm512_setzero_si512 (),
1573 1.1 mrg (__mmask32) __U);
1574 1.1 mrg }
1575 1.1 mrg
1576 1.1 mrg extern __inline __m512i
1577 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1578 1.1 mrg _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
1579 1.1 mrg {
1580 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1581 1.1 mrg (__v64qi) __B,
1582 1.1 mrg (__v64qi)
1583 1.3 mrg _mm512_setzero_si512 (),
1584 1.1 mrg (__mmask64) -1);
1585 1.1 mrg }
1586 1.1 mrg
1587 1.1 mrg extern __inline __m512i
1588 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1589 1.1 mrg _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1590 1.1 mrg __m512i __B)
1591 1.1 mrg {
1592 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1593 1.1 mrg (__v64qi) __B,
1594 1.1 mrg (__v64qi) __W,
1595 1.1 mrg (__mmask64) __U);
1596 1.1 mrg }
1597 1.1 mrg
1598 1.1 mrg extern __inline __m512i
1599 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1600 1.1 mrg _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1601 1.1 mrg {
1602 1.1 mrg return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1603 1.1 mrg (__v64qi) __B,
1604 1.1 mrg (__v64qi)
1605 1.3 mrg _mm512_setzero_si512 (),
1606 1.1 mrg (__mmask64) __U);
1607 1.1 mrg }
1608 1.1 mrg
1609 1.1 mrg extern __inline __m512i
1610 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1611 1.1 mrg _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
1612 1.1 mrg {
1613 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1614 1.1 mrg (__v32hi) __B,
1615 1.1 mrg (__v32hi)
1616 1.3 mrg _mm512_setzero_si512 (),
1617 1.1 mrg (__mmask32) -1);
1618 1.1 mrg }
1619 1.1 mrg
1620 1.1 mrg extern __inline __m512i
1621 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1622 1.1 mrg _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1623 1.1 mrg __m512i __B)
1624 1.1 mrg {
1625 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1626 1.1 mrg (__v32hi) __B,
1627 1.1 mrg (__v32hi) __W,
1628 1.1 mrg (__mmask32) __U);
1629 1.1 mrg }
1630 1.1 mrg
1631 1.1 mrg extern __inline __m512i
1632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1633 1.1 mrg _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1634 1.1 mrg {
1635 1.1 mrg return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1636 1.1 mrg (__v32hi) __B,
1637 1.1 mrg (__v32hi)
1638 1.3 mrg _mm512_setzero_si512 (),
1639 1.1 mrg (__mmask32) __U);
1640 1.1 mrg }
1641 1.1 mrg
1642 1.1 mrg extern __inline __mmask64
1643 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1644 1.1 mrg _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
1645 1.1 mrg {
1646 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1647 1.1 mrg (__v64qi) __B, 0,
1648 1.1 mrg (__mmask64) -1);
1649 1.1 mrg }
1650 1.1 mrg
1651 1.1 mrg extern __inline __mmask64
1652 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1653 1.1 mrg _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
1654 1.1 mrg {
1655 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1656 1.1 mrg (__v64qi) __B,
1657 1.1 mrg (__mmask64) -1);
1658 1.1 mrg }
1659 1.1 mrg
1660 1.1 mrg extern __inline __mmask64
1661 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1662 1.1 mrg _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1663 1.1 mrg {
1664 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1665 1.1 mrg (__v64qi) __B, 0,
1666 1.1 mrg __U);
1667 1.1 mrg }
1668 1.1 mrg
1669 1.1 mrg extern __inline __mmask64
1670 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1671 1.1 mrg _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1672 1.1 mrg {
1673 1.1 mrg return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1674 1.1 mrg (__v64qi) __B,
1675 1.1 mrg __U);
1676 1.1 mrg }
1677 1.1 mrg
1678 1.1 mrg extern __inline __mmask32
1679 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1680 1.1 mrg _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
1681 1.1 mrg {
1682 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1683 1.1 mrg (__v32hi) __B, 0,
1684 1.1 mrg (__mmask32) -1);
1685 1.1 mrg }
1686 1.1 mrg
1687 1.1 mrg extern __inline __mmask32
1688 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1689 1.1 mrg _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
1690 1.1 mrg {
1691 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1692 1.1 mrg (__v32hi) __B,
1693 1.1 mrg (__mmask32) -1);
1694 1.1 mrg }
1695 1.1 mrg
1696 1.1 mrg extern __inline __mmask32
1697 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1698 1.1 mrg _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1699 1.1 mrg {
1700 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1701 1.1 mrg (__v32hi) __B, 0,
1702 1.1 mrg __U);
1703 1.1 mrg }
1704 1.1 mrg
1705 1.1 mrg extern __inline __mmask32
1706 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1707 1.1 mrg _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1708 1.1 mrg {
1709 1.1 mrg return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1710 1.1 mrg (__v32hi) __B,
1711 1.1 mrg __U);
1712 1.1 mrg }
1713 1.1 mrg
1714 1.1 mrg extern __inline __mmask64
1715 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1716 1.1 mrg _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
1717 1.1 mrg {
1718 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1719 1.1 mrg (__v64qi) __B, 6,
1720 1.1 mrg (__mmask64) -1);
1721 1.1 mrg }
1722 1.1 mrg
1723 1.1 mrg extern __inline __mmask64
1724 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1725 1.1 mrg _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
1726 1.1 mrg {
1727 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1728 1.1 mrg (__v64qi) __B,
1729 1.1 mrg (__mmask64) -1);
1730 1.1 mrg }
1731 1.1 mrg
1732 1.1 mrg extern __inline __mmask64
1733 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1734 1.1 mrg _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1735 1.1 mrg {
1736 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1737 1.1 mrg (__v64qi) __B, 6,
1738 1.1 mrg __U);
1739 1.1 mrg }
1740 1.1 mrg
1741 1.1 mrg extern __inline __mmask64
1742 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1743 1.1 mrg _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1744 1.1 mrg {
1745 1.1 mrg return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1746 1.1 mrg (__v64qi) __B,
1747 1.1 mrg __U);
1748 1.1 mrg }
1749 1.1 mrg
1750 1.1 mrg extern __inline __mmask32
1751 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1752 1.1 mrg _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
1753 1.1 mrg {
1754 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1755 1.1 mrg (__v32hi) __B, 6,
1756 1.1 mrg (__mmask32) -1);
1757 1.1 mrg }
1758 1.1 mrg
1759 1.1 mrg extern __inline __mmask32
1760 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1761 1.1 mrg _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
1762 1.1 mrg {
1763 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1764 1.1 mrg (__v32hi) __B,
1765 1.1 mrg (__mmask32) -1);
1766 1.1 mrg }
1767 1.1 mrg
1768 1.1 mrg extern __inline __mmask32
1769 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1770 1.1 mrg _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1771 1.1 mrg {
1772 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1773 1.1 mrg (__v32hi) __B, 6,
1774 1.1 mrg __U);
1775 1.1 mrg }
1776 1.1 mrg
1777 1.1 mrg extern __inline __mmask32
1778 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1779 1.1 mrg _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1780 1.1 mrg {
1781 1.1 mrg return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1782 1.1 mrg (__v32hi) __B,
1783 1.1 mrg __U);
1784 1.1 mrg }
1785 1.1 mrg
1786 1.1 mrg extern __inline __mmask64
1787 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1788 1.1 mrg _mm512_movepi8_mask (__m512i __A)
1789 1.1 mrg {
1790 1.1 mrg return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1791 1.1 mrg }
1792 1.1 mrg
1793 1.1 mrg extern __inline __mmask32
1794 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1795 1.1 mrg _mm512_movepi16_mask (__m512i __A)
1796 1.1 mrg {
1797 1.1 mrg return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1798 1.1 mrg }
1799 1.1 mrg
1800 1.1 mrg extern __inline __m512i
1801 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1802 1.1 mrg _mm512_movm_epi8 (__mmask64 __A)
1803 1.1 mrg {
1804 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1805 1.1 mrg }
1806 1.1 mrg
1807 1.1 mrg extern __inline __m512i
1808 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1809 1.1 mrg _mm512_movm_epi16 (__mmask32 __A)
1810 1.1 mrg {
1811 1.1 mrg return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1812 1.1 mrg }
1813 1.1 mrg
1814 1.1 mrg extern __inline __mmask64
1815 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1816 1.1 mrg _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1817 1.1 mrg {
1818 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1819 1.1 mrg (__v64qi) __B,
1820 1.1 mrg (__mmask64) -1);
1821 1.1 mrg }
1822 1.1 mrg
1823 1.1 mrg extern __inline __mmask64
1824 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1825 1.1 mrg _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1826 1.1 mrg {
1827 1.1 mrg return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1828 1.1 mrg (__v64qi) __B, __U);
1829 1.1 mrg }
1830 1.1 mrg
1831 1.1 mrg extern __inline __mmask32
1832 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1833 1.1 mrg _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1834 1.1 mrg {
1835 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1836 1.1 mrg (__v32hi) __B,
1837 1.1 mrg (__mmask32) -1);
1838 1.1 mrg }
1839 1.1 mrg
1840 1.1 mrg extern __inline __mmask32
1841 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1842 1.1 mrg _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1843 1.1 mrg {
1844 1.1 mrg return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1845 1.1 mrg (__v32hi) __B, __U);
1846 1.1 mrg }
1847 1.1 mrg
1848 1.1 mrg extern __inline __mmask64
1849 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1850 1.1 mrg _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1851 1.1 mrg {
1852 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1853 1.1 mrg (__v64qi) __B,
1854 1.1 mrg (__mmask64) -1);
1855 1.1 mrg }
1856 1.1 mrg
1857 1.1 mrg extern __inline __mmask64
1858 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1859 1.1 mrg _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1860 1.1 mrg {
1861 1.1 mrg return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1862 1.1 mrg (__v64qi) __B, __U);
1863 1.1 mrg }
1864 1.1 mrg
1865 1.1 mrg extern __inline __mmask32
1866 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1867 1.1 mrg _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1868 1.1 mrg {
1869 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1870 1.1 mrg (__v32hi) __B,
1871 1.1 mrg (__mmask32) -1);
1872 1.1 mrg }
1873 1.1 mrg
1874 1.1 mrg extern __inline __mmask32
1875 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1876 1.1 mrg _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1877 1.1 mrg {
1878 1.1 mrg return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1879 1.1 mrg (__v32hi) __B, __U);
1880 1.1 mrg }
1881 1.1 mrg
1882 1.1 mrg extern __inline __m512i
1883 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1884 1.1 mrg _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1885 1.1 mrg {
1886 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1887 1.1 mrg (__v64qi) __B,
1888 1.1 mrg (__v64qi)
1889 1.3 mrg _mm512_setzero_si512 (),
1890 1.1 mrg (__mmask64) -1);
1891 1.1 mrg }
1892 1.1 mrg
1893 1.1 mrg extern __inline __m512i
1894 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1895 1.1 mrg _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1896 1.1 mrg __m512i __B)
1897 1.1 mrg {
1898 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1899 1.1 mrg (__v64qi) __B,
1900 1.1 mrg (__v64qi) __W,
1901 1.1 mrg (__mmask64) __U);
1902 1.1 mrg }
1903 1.1 mrg
1904 1.1 mrg extern __inline __m512i
1905 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1906 1.1 mrg _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1907 1.1 mrg {
1908 1.1 mrg return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1909 1.1 mrg (__v64qi) __B,
1910 1.1 mrg (__v64qi)
1911 1.3 mrg _mm512_setzero_si512 (),
1912 1.1 mrg (__mmask64) __U);
1913 1.1 mrg }
1914 1.1 mrg
1915 1.1 mrg extern __inline __m512i
1916 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1917 1.1 mrg _mm512_min_epu16 (__m512i __A, __m512i __B)
1918 1.1 mrg {
1919 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1920 1.1 mrg (__v32hi) __B,
1921 1.1 mrg (__v32hi)
1922 1.3 mrg _mm512_setzero_si512 (),
1923 1.1 mrg (__mmask32) -1);
1924 1.1 mrg }
1925 1.1 mrg
1926 1.1 mrg extern __inline __m512i
1927 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1928 1.1 mrg _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1929 1.1 mrg {
1930 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1931 1.1 mrg (__v32hi) __B,
1932 1.1 mrg (__v32hi)
1933 1.3 mrg _mm512_setzero_si512 (),
1934 1.1 mrg (__mmask32) __M);
1935 1.1 mrg }
1936 1.1 mrg
1937 1.1 mrg extern __inline __m512i
1938 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1939 1.1 mrg _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1940 1.1 mrg __m512i __B)
1941 1.1 mrg {
1942 1.1 mrg return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1943 1.1 mrg (__v32hi) __B,
1944 1.1 mrg (__v32hi) __W,
1945 1.1 mrg (__mmask32) __M);
1946 1.1 mrg }
1947 1.1 mrg
1948 1.1 mrg extern __inline __m512i
1949 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1950 1.1 mrg _mm512_min_epi16 (__m512i __A, __m512i __B)
1951 1.1 mrg {
1952 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1953 1.1 mrg (__v32hi) __B,
1954 1.1 mrg (__v32hi)
1955 1.3 mrg _mm512_setzero_si512 (),
1956 1.1 mrg (__mmask32) -1);
1957 1.1 mrg }
1958 1.1 mrg
1959 1.1 mrg extern __inline __m512i
1960 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1961 1.1 mrg _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1962 1.1 mrg {
1963 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1964 1.1 mrg (__v32hi) __B,
1965 1.1 mrg (__v32hi)
1966 1.3 mrg _mm512_setzero_si512 (),
1967 1.1 mrg (__mmask32) __M);
1968 1.1 mrg }
1969 1.1 mrg
1970 1.1 mrg extern __inline __m512i
1971 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1972 1.1 mrg _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1973 1.1 mrg __m512i __B)
1974 1.1 mrg {
1975 1.1 mrg return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1976 1.1 mrg (__v32hi) __B,
1977 1.1 mrg (__v32hi) __W,
1978 1.1 mrg (__mmask32) __M);
1979 1.1 mrg }
1980 1.1 mrg
1981 1.1 mrg extern __inline __m512i
1982 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1983 1.1 mrg _mm512_max_epu8 (__m512i __A, __m512i __B)
1984 1.1 mrg {
1985 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1986 1.1 mrg (__v64qi) __B,
1987 1.1 mrg (__v64qi)
1988 1.3 mrg _mm512_setzero_si512 (),
1989 1.1 mrg (__mmask64) -1);
1990 1.1 mrg }
1991 1.1 mrg
1992 1.1 mrg extern __inline __m512i
1993 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1994 1.1 mrg _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1995 1.1 mrg {
1996 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1997 1.1 mrg (__v64qi) __B,
1998 1.1 mrg (__v64qi)
1999 1.3 mrg _mm512_setzero_si512 (),
2000 1.1 mrg (__mmask64) __M);
2001 1.1 mrg }
2002 1.1 mrg
2003 1.1 mrg extern __inline __m512i
2004 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2005 1.1 mrg _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
2006 1.1 mrg __m512i __B)
2007 1.1 mrg {
2008 1.1 mrg return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
2009 1.1 mrg (__v64qi) __B,
2010 1.1 mrg (__v64qi) __W,
2011 1.1 mrg (__mmask64) __M);
2012 1.1 mrg }
2013 1.1 mrg
2014 1.1 mrg extern __inline __m512i
2015 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2016 1.1 mrg _mm512_max_epi8 (__m512i __A, __m512i __B)
2017 1.1 mrg {
2018 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
2019 1.1 mrg (__v64qi) __B,
2020 1.1 mrg (__v64qi)
2021 1.3 mrg _mm512_setzero_si512 (),
2022 1.1 mrg (__mmask64) -1);
2023 1.1 mrg }
2024 1.1 mrg
2025 1.1 mrg extern __inline __m512i
2026 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2027 1.1 mrg _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
2028 1.1 mrg {
2029 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
2030 1.1 mrg (__v64qi) __B,
2031 1.1 mrg (__v64qi)
2032 1.3 mrg _mm512_setzero_si512 (),
2033 1.1 mrg (__mmask64) __M);
2034 1.1 mrg }
2035 1.1 mrg
2036 1.1 mrg extern __inline __m512i
2037 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2038 1.1 mrg _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
2039 1.1 mrg __m512i __B)
2040 1.1 mrg {
2041 1.1 mrg return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
2042 1.1 mrg (__v64qi) __B,
2043 1.1 mrg (__v64qi) __W,
2044 1.1 mrg (__mmask64) __M);
2045 1.1 mrg }
2046 1.1 mrg
2047 1.1 mrg extern __inline __m512i
2048 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2049 1.1 mrg _mm512_min_epu8 (__m512i __A, __m512i __B)
2050 1.1 mrg {
2051 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2052 1.1 mrg (__v64qi) __B,
2053 1.1 mrg (__v64qi)
2054 1.3 mrg _mm512_setzero_si512 (),
2055 1.1 mrg (__mmask64) -1);
2056 1.1 mrg }
2057 1.1 mrg
2058 1.1 mrg extern __inline __m512i
2059 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2060 1.1 mrg _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
2061 1.1 mrg {
2062 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2063 1.1 mrg (__v64qi) __B,
2064 1.1 mrg (__v64qi)
2065 1.3 mrg _mm512_setzero_si512 (),
2066 1.1 mrg (__mmask64) __M);
2067 1.1 mrg }
2068 1.1 mrg
2069 1.1 mrg extern __inline __m512i
2070 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2071 1.1 mrg _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
2072 1.1 mrg __m512i __B)
2073 1.1 mrg {
2074 1.1 mrg return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2075 1.1 mrg (__v64qi) __B,
2076 1.1 mrg (__v64qi) __W,
2077 1.1 mrg (__mmask64) __M);
2078 1.1 mrg }
2079 1.1 mrg
2080 1.1 mrg extern __inline __m512i
2081 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2082 1.1 mrg _mm512_min_epi8 (__m512i __A, __m512i __B)
2083 1.1 mrg {
2084 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2085 1.1 mrg (__v64qi) __B,
2086 1.1 mrg (__v64qi)
2087 1.3 mrg _mm512_setzero_si512 (),
2088 1.1 mrg (__mmask64) -1);
2089 1.1 mrg }
2090 1.1 mrg
2091 1.1 mrg extern __inline __m512i
2092 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2093 1.1 mrg _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
2094 1.1 mrg {
2095 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2096 1.1 mrg (__v64qi) __B,
2097 1.1 mrg (__v64qi)
2098 1.3 mrg _mm512_setzero_si512 (),
2099 1.1 mrg (__mmask64) __M);
2100 1.1 mrg }
2101 1.1 mrg
2102 1.1 mrg extern __inline __m512i
2103 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2104 1.1 mrg _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
2105 1.1 mrg __m512i __B)
2106 1.1 mrg {
2107 1.1 mrg return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2108 1.1 mrg (__v64qi) __B,
2109 1.1 mrg (__v64qi) __W,
2110 1.1 mrg (__mmask64) __M);
2111 1.1 mrg }
2112 1.1 mrg
2113 1.1 mrg extern __inline __m512i
2114 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2115 1.1 mrg _mm512_max_epi16 (__m512i __A, __m512i __B)
2116 1.1 mrg {
2117 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2118 1.1 mrg (__v32hi) __B,
2119 1.1 mrg (__v32hi)
2120 1.3 mrg _mm512_setzero_si512 (),
2121 1.1 mrg (__mmask32) -1);
2122 1.1 mrg }
2123 1.1 mrg
2124 1.1 mrg extern __inline __m512i
2125 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2126 1.1 mrg _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
2127 1.1 mrg {
2128 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2129 1.1 mrg (__v32hi) __B,
2130 1.1 mrg (__v32hi)
2131 1.3 mrg _mm512_setzero_si512 (),
2132 1.1 mrg (__mmask32) __M);
2133 1.1 mrg }
2134 1.1 mrg
2135 1.1 mrg extern __inline __m512i
2136 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2137 1.1 mrg _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2138 1.1 mrg __m512i __B)
2139 1.1 mrg {
2140 1.1 mrg return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2141 1.1 mrg (__v32hi) __B,
2142 1.1 mrg (__v32hi) __W,
2143 1.1 mrg (__mmask32) __M);
2144 1.1 mrg }
2145 1.1 mrg
2146 1.1 mrg extern __inline __m512i
2147 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2148 1.1 mrg _mm512_max_epu16 (__m512i __A, __m512i __B)
2149 1.1 mrg {
2150 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2151 1.1 mrg (__v32hi) __B,
2152 1.1 mrg (__v32hi)
2153 1.3 mrg _mm512_setzero_si512 (),
2154 1.1 mrg (__mmask32) -1);
2155 1.1 mrg }
2156 1.1 mrg
2157 1.1 mrg extern __inline __m512i
2158 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2159 1.1 mrg _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
2160 1.1 mrg {
2161 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2162 1.1 mrg (__v32hi) __B,
2163 1.1 mrg (__v32hi)
2164 1.3 mrg _mm512_setzero_si512 (),
2165 1.1 mrg (__mmask32) __M);
2166 1.1 mrg }
2167 1.1 mrg
2168 1.1 mrg extern __inline __m512i
2169 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2170 1.1 mrg _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
2171 1.1 mrg __m512i __B)
2172 1.1 mrg {
2173 1.1 mrg return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2174 1.1 mrg (__v32hi) __B,
2175 1.1 mrg (__v32hi) __W,
2176 1.1 mrg (__mmask32) __M);
2177 1.1 mrg }
2178 1.1 mrg
2179 1.1 mrg extern __inline __m512i
2180 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2181 1.1 mrg _mm512_sra_epi16 (__m512i __A, __m128i __B)
2182 1.1 mrg {
2183 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2184 1.1 mrg (__v8hi) __B,
2185 1.1 mrg (__v32hi)
2186 1.3 mrg _mm512_setzero_si512 (),
2187 1.1 mrg (__mmask32) -1);
2188 1.1 mrg }
2189 1.1 mrg
2190 1.1 mrg extern __inline __m512i
2191 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2192 1.1 mrg _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2193 1.1 mrg __m128i __B)
2194 1.1 mrg {
2195 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2196 1.1 mrg (__v8hi) __B,
2197 1.1 mrg (__v32hi) __W,
2198 1.1 mrg (__mmask32) __U);
2199 1.1 mrg }
2200 1.1 mrg
2201 1.1 mrg extern __inline __m512i
2202 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2203 1.1 mrg _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
2204 1.1 mrg {
2205 1.1 mrg return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2206 1.1 mrg (__v8hi) __B,
2207 1.1 mrg (__v32hi)
2208 1.3 mrg _mm512_setzero_si512 (),
2209 1.1 mrg (__mmask32) __U);
2210 1.1 mrg }
2211 1.1 mrg
2212 1.1 mrg extern __inline __m512i
2213 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2214 1.1 mrg _mm512_srav_epi16 (__m512i __A, __m512i __B)
2215 1.1 mrg {
2216 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2217 1.1 mrg (__v32hi) __B,
2218 1.1 mrg (__v32hi)
2219 1.3 mrg _mm512_setzero_si512 (),
2220 1.1 mrg (__mmask32) -1);
2221 1.1 mrg }
2222 1.1 mrg
2223 1.1 mrg extern __inline __m512i
2224 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2225 1.1 mrg _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2226 1.1 mrg __m512i __B)
2227 1.1 mrg {
2228 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2229 1.1 mrg (__v32hi) __B,
2230 1.1 mrg (__v32hi) __W,
2231 1.1 mrg (__mmask32) __U);
2232 1.1 mrg }
2233 1.1 mrg
2234 1.1 mrg extern __inline __m512i
2235 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2236 1.1 mrg _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2237 1.1 mrg {
2238 1.1 mrg return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2239 1.1 mrg (__v32hi) __B,
2240 1.1 mrg (__v32hi)
2241 1.3 mrg _mm512_setzero_si512 (),
2242 1.1 mrg (__mmask32) __U);
2243 1.1 mrg }
2244 1.1 mrg
2245 1.1 mrg extern __inline __m512i
2246 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2247 1.1 mrg _mm512_srlv_epi16 (__m512i __A, __m512i __B)
2248 1.1 mrg {
2249 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2250 1.1 mrg (__v32hi) __B,
2251 1.1 mrg (__v32hi)
2252 1.3 mrg _mm512_setzero_si512 (),
2253 1.1 mrg (__mmask32) -1);
2254 1.1 mrg }
2255 1.1 mrg
2256 1.1 mrg extern __inline __m512i
2257 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2258 1.1 mrg _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2259 1.1 mrg __m512i __B)
2260 1.1 mrg {
2261 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2262 1.1 mrg (__v32hi) __B,
2263 1.1 mrg (__v32hi) __W,
2264 1.1 mrg (__mmask32) __U);
2265 1.1 mrg }
2266 1.1 mrg
2267 1.1 mrg extern __inline __m512i
2268 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2269 1.1 mrg _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2270 1.1 mrg {
2271 1.1 mrg return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2272 1.1 mrg (__v32hi) __B,
2273 1.1 mrg (__v32hi)
2274 1.3 mrg _mm512_setzero_si512 (),
2275 1.1 mrg (__mmask32) __U);
2276 1.1 mrg }
2277 1.1 mrg
2278 1.1 mrg extern __inline __m512i
2279 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2280 1.1 mrg _mm512_sllv_epi16 (__m512i __A, __m512i __B)
2281 1.1 mrg {
2282 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2283 1.1 mrg (__v32hi) __B,
2284 1.1 mrg (__v32hi)
2285 1.3 mrg _mm512_setzero_si512 (),
2286 1.1 mrg (__mmask32) -1);
2287 1.1 mrg }
2288 1.1 mrg
2289 1.1 mrg extern __inline __m512i
2290 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2291 1.1 mrg _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2292 1.1 mrg __m512i __B)
2293 1.1 mrg {
2294 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2295 1.1 mrg (__v32hi) __B,
2296 1.1 mrg (__v32hi) __W,
2297 1.1 mrg (__mmask32) __U);
2298 1.1 mrg }
2299 1.1 mrg
2300 1.1 mrg extern __inline __m512i
2301 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2302 1.1 mrg _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2303 1.1 mrg {
2304 1.1 mrg return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2305 1.1 mrg (__v32hi) __B,
2306 1.1 mrg (__v32hi)
2307 1.3 mrg _mm512_setzero_si512 (),
2308 1.1 mrg (__mmask32) __U);
2309 1.1 mrg }
2310 1.1 mrg
2311 1.1 mrg extern __inline __m512i
2312 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2313 1.1 mrg _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2314 1.1 mrg __m512i __B)
2315 1.1 mrg {
2316 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2317 1.1 mrg (__v32hi) __B,
2318 1.1 mrg (__v64qi) __W,
2319 1.1 mrg (__mmask64) __M);
2320 1.1 mrg }
2321 1.1 mrg
2322 1.1 mrg extern __inline __m512i
2323 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2324 1.1 mrg _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2325 1.1 mrg {
2326 1.1 mrg return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2327 1.1 mrg (__v32hi) __B,
2328 1.1 mrg (__v64qi)
2329 1.3 mrg _mm512_setzero_si512 (),
2330 1.1 mrg __M);
2331 1.1 mrg }
2332 1.1 mrg
2333 1.1 mrg extern __inline __m512i
2334 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2335 1.1 mrg _mm512_packus_epi16 (__m512i __A, __m512i __B)
2336 1.1 mrg {
2337 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2338 1.1 mrg (__v32hi) __B,
2339 1.1 mrg (__v64qi)
2340 1.3 mrg _mm512_setzero_si512 (),
2341 1.1 mrg (__mmask64) -1);
2342 1.1 mrg }
2343 1.1 mrg
2344 1.1 mrg extern __inline __m512i
2345 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2346 1.1 mrg _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2347 1.1 mrg __m512i __B)
2348 1.1 mrg {
2349 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2350 1.1 mrg (__v32hi) __B,
2351 1.1 mrg (__v64qi) __W,
2352 1.1 mrg (__mmask64) __M);
2353 1.1 mrg }
2354 1.1 mrg
2355 1.1 mrg extern __inline __m512i
2356 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2357 1.1 mrg _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2358 1.1 mrg {
2359 1.1 mrg return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2360 1.1 mrg (__v32hi) __B,
2361 1.1 mrg (__v64qi)
2362 1.3 mrg _mm512_setzero_si512 (),
2363 1.1 mrg (__mmask64) __M);
2364 1.1 mrg }
2365 1.1 mrg
2366 1.1 mrg extern __inline __m512i
2367 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2368 1.1 mrg _mm512_abs_epi8 (__m512i __A)
2369 1.1 mrg {
2370 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2371 1.1 mrg (__v64qi)
2372 1.3 mrg _mm512_setzero_si512 (),
2373 1.1 mrg (__mmask64) -1);
2374 1.1 mrg }
2375 1.1 mrg
2376 1.1 mrg extern __inline __m512i
2377 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2378 1.1 mrg _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2379 1.1 mrg {
2380 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2381 1.1 mrg (__v64qi) __W,
2382 1.1 mrg (__mmask64) __U);
2383 1.1 mrg }
2384 1.1 mrg
2385 1.1 mrg extern __inline __m512i
2386 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2387 1.1 mrg _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
2388 1.1 mrg {
2389 1.1 mrg return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2390 1.1 mrg (__v64qi)
2391 1.3 mrg _mm512_setzero_si512 (),
2392 1.1 mrg (__mmask64) __U);
2393 1.1 mrg }
2394 1.1 mrg
2395 1.1 mrg extern __inline __m512i
2396 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2397 1.1 mrg _mm512_abs_epi16 (__m512i __A)
2398 1.1 mrg {
2399 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2400 1.1 mrg (__v32hi)
2401 1.3 mrg _mm512_setzero_si512 (),
2402 1.1 mrg (__mmask32) -1);
2403 1.1 mrg }
2404 1.1 mrg
2405 1.1 mrg extern __inline __m512i
2406 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2407 1.1 mrg _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2408 1.1 mrg {
2409 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2410 1.1 mrg (__v32hi) __W,
2411 1.1 mrg (__mmask32) __U);
2412 1.1 mrg }
2413 1.1 mrg
2414 1.1 mrg extern __inline __m512i
2415 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2416 1.1 mrg _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
2417 1.1 mrg {
2418 1.1 mrg return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2419 1.1 mrg (__v32hi)
2420 1.3 mrg _mm512_setzero_si512 (),
2421 1.1 mrg (__mmask32) __U);
2422 1.1 mrg }
2423 1.1 mrg
2424 1.1 mrg extern __inline __mmask64
2425 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2426 1.1 mrg _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2427 1.1 mrg {
2428 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2429 1.1 mrg (__v64qi) __Y, 4,
2430 1.1 mrg (__mmask64) __M);
2431 1.1 mrg }
2432 1.1 mrg
2433 1.1 mrg extern __inline __mmask64
2434 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2435 1.1 mrg _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2436 1.1 mrg {
2437 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2438 1.1 mrg (__v64qi) __Y, 1,
2439 1.1 mrg (__mmask64) __M);
2440 1.1 mrg }
2441 1.1 mrg
2442 1.1 mrg extern __inline __mmask64
2443 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2444 1.1 mrg _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2445 1.1 mrg {
2446 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2447 1.1 mrg (__v64qi) __Y, 5,
2448 1.1 mrg (__mmask64) __M);
2449 1.1 mrg }
2450 1.1 mrg
2451 1.1 mrg extern __inline __mmask64
2452 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2453 1.1 mrg _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2454 1.1 mrg {
2455 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2456 1.1 mrg (__v64qi) __Y, 2,
2457 1.1 mrg (__mmask64) __M);
2458 1.1 mrg }
2459 1.1 mrg
2460 1.1 mrg extern __inline __mmask32
2461 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2462 1.1 mrg _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2463 1.1 mrg {
2464 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2465 1.1 mrg (__v32hi) __Y, 4,
2466 1.1 mrg (__mmask32) __M);
2467 1.1 mrg }
2468 1.1 mrg
2469 1.1 mrg extern __inline __mmask32
2470 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2471 1.1 mrg _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2472 1.1 mrg {
2473 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2474 1.1 mrg (__v32hi) __Y, 1,
2475 1.1 mrg (__mmask32) __M);
2476 1.1 mrg }
2477 1.1 mrg
2478 1.1 mrg extern __inline __mmask32
2479 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2480 1.1 mrg _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2481 1.1 mrg {
2482 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2483 1.1 mrg (__v32hi) __Y, 5,
2484 1.1 mrg (__mmask32) __M);
2485 1.1 mrg }
2486 1.1 mrg
2487 1.1 mrg extern __inline __mmask32
2488 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2489 1.1 mrg _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2490 1.1 mrg {
2491 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2492 1.1 mrg (__v32hi) __Y, 2,
2493 1.1 mrg (__mmask32) __M);
2494 1.1 mrg }
2495 1.1 mrg
2496 1.1 mrg extern __inline __mmask64
2497 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2498 1.1 mrg _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2499 1.1 mrg {
2500 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2501 1.1 mrg (__v64qi) __Y, 4,
2502 1.1 mrg (__mmask64) __M);
2503 1.1 mrg }
2504 1.1 mrg
2505 1.1 mrg extern __inline __mmask64
2506 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2507 1.1 mrg _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2508 1.1 mrg {
2509 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2510 1.1 mrg (__v64qi) __Y, 1,
2511 1.1 mrg (__mmask64) __M);
2512 1.1 mrg }
2513 1.1 mrg
2514 1.1 mrg extern __inline __mmask64
2515 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2516 1.1 mrg _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2517 1.1 mrg {
2518 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2519 1.1 mrg (__v64qi) __Y, 5,
2520 1.1 mrg (__mmask64) __M);
2521 1.1 mrg }
2522 1.1 mrg
2523 1.1 mrg extern __inline __mmask64
2524 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2525 1.1 mrg _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2526 1.1 mrg {
2527 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2528 1.1 mrg (__v64qi) __Y, 2,
2529 1.1 mrg (__mmask64) __M);
2530 1.1 mrg }
2531 1.1 mrg
2532 1.1 mrg extern __inline __mmask32
2533 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2534 1.1 mrg _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2535 1.1 mrg {
2536 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2537 1.1 mrg (__v32hi) __Y, 4,
2538 1.1 mrg (__mmask32) __M);
2539 1.1 mrg }
2540 1.1 mrg
2541 1.1 mrg extern __inline __mmask32
2542 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2543 1.1 mrg _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2544 1.1 mrg {
2545 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2546 1.1 mrg (__v32hi) __Y, 1,
2547 1.1 mrg (__mmask32) __M);
2548 1.1 mrg }
2549 1.1 mrg
2550 1.1 mrg extern __inline __mmask32
2551 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2552 1.1 mrg _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2553 1.1 mrg {
2554 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2555 1.1 mrg (__v32hi) __Y, 5,
2556 1.1 mrg (__mmask32) __M);
2557 1.1 mrg }
2558 1.1 mrg
2559 1.1 mrg extern __inline __mmask32
2560 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2561 1.1 mrg _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2562 1.1 mrg {
2563 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2564 1.1 mrg (__v32hi) __Y, 2,
2565 1.1 mrg (__mmask32) __M);
2566 1.1 mrg }
2567 1.1 mrg
2568 1.1 mrg extern __inline __mmask64
2569 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2570 1.1 mrg _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
2571 1.1 mrg {
2572 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2573 1.1 mrg (__v64qi) __Y, 4,
2574 1.3 mrg (__mmask64) -1);
2575 1.1 mrg }
2576 1.1 mrg
2577 1.1 mrg extern __inline __mmask64
2578 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2579 1.1 mrg _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
2580 1.1 mrg {
2581 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2582 1.1 mrg (__v64qi) __Y, 1,
2583 1.3 mrg (__mmask64) -1);
2584 1.1 mrg }
2585 1.1 mrg
2586 1.1 mrg extern __inline __mmask64
2587 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2588 1.1 mrg _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
2589 1.1 mrg {
2590 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2591 1.1 mrg (__v64qi) __Y, 5,
2592 1.3 mrg (__mmask64) -1);
2593 1.1 mrg }
2594 1.1 mrg
2595 1.1 mrg extern __inline __mmask64
2596 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2597 1.1 mrg _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
2598 1.1 mrg {
2599 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2600 1.1 mrg (__v64qi) __Y, 2,
2601 1.3 mrg (__mmask64) -1);
2602 1.1 mrg }
2603 1.1 mrg
2604 1.1 mrg extern __inline __mmask32
2605 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2606 1.1 mrg _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
2607 1.1 mrg {
2608 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2609 1.1 mrg (__v32hi) __Y, 4,
2610 1.3 mrg (__mmask32) -1);
2611 1.1 mrg }
2612 1.1 mrg
2613 1.1 mrg extern __inline __mmask32
2614 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2615 1.1 mrg _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
2616 1.1 mrg {
2617 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2618 1.1 mrg (__v32hi) __Y, 1,
2619 1.3 mrg (__mmask32) -1);
2620 1.1 mrg }
2621 1.1 mrg
2622 1.1 mrg extern __inline __mmask32
2623 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2624 1.1 mrg _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
2625 1.1 mrg {
2626 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2627 1.1 mrg (__v32hi) __Y, 5,
2628 1.3 mrg (__mmask32) -1);
2629 1.1 mrg }
2630 1.1 mrg
2631 1.1 mrg extern __inline __mmask32
2632 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2633 1.1 mrg _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
2634 1.1 mrg {
2635 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2636 1.1 mrg (__v32hi) __Y, 2,
2637 1.3 mrg (__mmask32) -1);
2638 1.1 mrg }
2639 1.1 mrg
2640 1.1 mrg extern __inline __mmask64
2641 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2642 1.1 mrg _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
2643 1.1 mrg {
2644 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2645 1.1 mrg (__v64qi) __Y, 4,
2646 1.3 mrg (__mmask64) -1);
2647 1.1 mrg }
2648 1.1 mrg
2649 1.1 mrg extern __inline __mmask64
2650 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2651 1.1 mrg _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
2652 1.1 mrg {
2653 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2654 1.1 mrg (__v64qi) __Y, 1,
2655 1.3 mrg (__mmask64) -1);
2656 1.1 mrg }
2657 1.1 mrg
2658 1.1 mrg extern __inline __mmask64
2659 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2660 1.1 mrg _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
2661 1.1 mrg {
2662 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2663 1.1 mrg (__v64qi) __Y, 5,
2664 1.3 mrg (__mmask64) -1);
2665 1.1 mrg }
2666 1.1 mrg
2667 1.1 mrg extern __inline __mmask64
2668 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2669 1.1 mrg _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
2670 1.1 mrg {
2671 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2672 1.1 mrg (__v64qi) __Y, 2,
2673 1.3 mrg (__mmask64) -1);
2674 1.1 mrg }
2675 1.1 mrg
2676 1.1 mrg extern __inline __mmask32
2677 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2678 1.1 mrg _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
2679 1.1 mrg {
2680 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2681 1.1 mrg (__v32hi) __Y, 4,
2682 1.3 mrg (__mmask32) -1);
2683 1.1 mrg }
2684 1.1 mrg
2685 1.1 mrg extern __inline __mmask32
2686 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2687 1.1 mrg _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
2688 1.1 mrg {
2689 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2690 1.1 mrg (__v32hi) __Y, 1,
2691 1.3 mrg (__mmask32) -1);
2692 1.1 mrg }
2693 1.1 mrg
2694 1.1 mrg extern __inline __mmask32
2695 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2696 1.1 mrg _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
2697 1.1 mrg {
2698 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2699 1.1 mrg (__v32hi) __Y, 5,
2700 1.3 mrg (__mmask32) -1);
2701 1.1 mrg }
2702 1.1 mrg
2703 1.1 mrg extern __inline __mmask32
2704 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2705 1.1 mrg _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
2706 1.1 mrg {
2707 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2708 1.1 mrg (__v32hi) __Y, 2,
2709 1.3 mrg (__mmask32) -1);
2710 1.3 mrg }
2711 1.3 mrg
2712 1.3 mrg extern __inline __m512i
2713 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2714 1.3 mrg _mm512_packs_epi32 (__m512i __A, __m512i __B)
2715 1.3 mrg {
2716 1.3 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2717 1.3 mrg (__v16si) __B,
2718 1.3 mrg (__v32hi)
2719 1.3 mrg _mm512_setzero_si512 (),
2720 1.3 mrg (__mmask32) -1);
2721 1.3 mrg }
2722 1.3 mrg
2723 1.3 mrg extern __inline __m512i
2724 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2725 1.3 mrg _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2726 1.3 mrg {
2727 1.3 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2728 1.3 mrg (__v16si) __B,
2729 1.3 mrg (__v32hi)
2730 1.3 mrg _mm512_setzero_si512 (),
2731 1.3 mrg __M);
2732 1.3 mrg }
2733 1.3 mrg
2734 1.3 mrg extern __inline __m512i
2735 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2736 1.3 mrg _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2737 1.3 mrg __m512i __B)
2738 1.3 mrg {
2739 1.3 mrg return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2740 1.3 mrg (__v16si) __B,
2741 1.3 mrg (__v32hi) __W,
2742 1.3 mrg __M);
2743 1.3 mrg }
2744 1.3 mrg
2745 1.3 mrg extern __inline __m512i
2746 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2747 1.3 mrg _mm512_packus_epi32 (__m512i __A, __m512i __B)
2748 1.3 mrg {
2749 1.3 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2750 1.3 mrg (__v16si) __B,
2751 1.3 mrg (__v32hi)
2752 1.3 mrg _mm512_setzero_si512 (),
2753 1.3 mrg (__mmask32) -1);
2754 1.3 mrg }
2755 1.3 mrg
2756 1.3 mrg extern __inline __m512i
2757 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2758 1.3 mrg _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2759 1.3 mrg {
2760 1.3 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2761 1.3 mrg (__v16si) __B,
2762 1.3 mrg (__v32hi)
2763 1.3 mrg _mm512_setzero_si512 (),
2764 1.3 mrg __M);
2765 1.3 mrg }
2766 1.3 mrg
2767 1.3 mrg extern __inline __m512i
2768 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2769 1.3 mrg _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2770 1.3 mrg __m512i __B)
2771 1.3 mrg {
2772 1.3 mrg return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2773 1.3 mrg (__v16si) __B,
2774 1.3 mrg (__v32hi) __W,
2775 1.3 mrg __M);
2776 1.1 mrg }
2777 1.1 mrg
2778 1.1 mrg #ifdef __OPTIMIZE__
2779 1.3 mrg extern __inline __mmask32
2780 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2781 1.3 mrg _kshiftli_mask32 (__mmask32 __A, unsigned int __B)
2782 1.3 mrg {
2783 1.3 mrg return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A,
2784 1.3 mrg (__mmask8) __B);
2785 1.3 mrg }
2786 1.3 mrg
2787 1.3 mrg extern __inline __mmask64
2788 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2789 1.3 mrg _kshiftli_mask64 (__mmask64 __A, unsigned int __B)
2790 1.3 mrg {
2791 1.3 mrg return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A,
2792 1.3 mrg (__mmask8) __B);
2793 1.3 mrg }
2794 1.3 mrg
2795 1.3 mrg extern __inline __mmask32
2796 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2797 1.3 mrg _kshiftri_mask32 (__mmask32 __A, unsigned int __B)
2798 1.3 mrg {
2799 1.3 mrg return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A,
2800 1.3 mrg (__mmask8) __B);
2801 1.3 mrg }
2802 1.3 mrg
2803 1.3 mrg extern __inline __mmask64
2804 1.3 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2805 1.3 mrg _kshiftri_mask64 (__mmask64 __A, unsigned int __B)
2806 1.3 mrg {
2807 1.3 mrg return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A,
2808 1.3 mrg (__mmask8) __B);
2809 1.3 mrg }
2810 1.3 mrg
2811 1.1 mrg extern __inline __m512i
2812 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2813 1.1 mrg _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
2814 1.1 mrg {
2815 1.1 mrg return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
2816 1.1 mrg (__v8di) __B, __N * 8);
2817 1.1 mrg }
2818 1.1 mrg
2819 1.1 mrg extern __inline __m512i
2820 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2821 1.1 mrg _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
2822 1.1 mrg __m512i __B, const int __N)
2823 1.1 mrg {
2824 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2825 1.1 mrg (__v8di) __B,
2826 1.1 mrg __N * 8,
2827 1.1 mrg (__v8di) __W,
2828 1.1 mrg (__mmask64) __U);
2829 1.1 mrg }
2830 1.1 mrg
2831 1.1 mrg extern __inline __m512i
2832 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2833 1.1 mrg _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
2834 1.1 mrg const int __N)
2835 1.1 mrg {
2836 1.1 mrg return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2837 1.1 mrg (__v8di) __B,
2838 1.1 mrg __N * 8,
2839 1.1 mrg (__v8di)
2840 1.1 mrg _mm512_setzero_si512 (),
2841 1.1 mrg (__mmask64) __U);
2842 1.1 mrg }
2843 1.1 mrg
2844 1.1 mrg extern __inline __m512i
2845 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2846 1.1 mrg _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
2847 1.1 mrg {
2848 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2849 1.1 mrg (__v64qi) __B,
2850 1.1 mrg __imm,
2851 1.1 mrg (__v32hi)
2852 1.3 mrg _mm512_setzero_si512 (),
2853 1.1 mrg (__mmask32) -1);
2854 1.1 mrg }
2855 1.1 mrg
2856 1.1 mrg extern __inline __m512i
2857 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2858 1.1 mrg _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
2859 1.1 mrg __m512i __B, const int __imm)
2860 1.1 mrg {
2861 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2862 1.1 mrg (__v64qi) __B,
2863 1.1 mrg __imm,
2864 1.1 mrg (__v32hi) __W,
2865 1.1 mrg (__mmask32) __U);
2866 1.1 mrg }
2867 1.1 mrg
2868 1.1 mrg extern __inline __m512i
2869 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2870 1.1 mrg _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
2871 1.1 mrg const int __imm)
2872 1.1 mrg {
2873 1.1 mrg return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2874 1.1 mrg (__v64qi) __B,
2875 1.1 mrg __imm,
2876 1.1 mrg (__v32hi)
2877 1.3 mrg _mm512_setzero_si512 (),
2878 1.1 mrg (__mmask32) __U);
2879 1.1 mrg }
2880 1.1 mrg
2881 1.1 mrg extern __inline __m512i
2882 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2883 1.1 mrg _mm512_srli_epi16 (__m512i __A, const int __imm)
2884 1.1 mrg {
2885 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2886 1.1 mrg (__v32hi)
2887 1.3 mrg _mm512_setzero_si512 (),
2888 1.1 mrg (__mmask32) -1);
2889 1.1 mrg }
2890 1.1 mrg
2891 1.1 mrg extern __inline __m512i
2892 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2893 1.1 mrg _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2894 1.1 mrg const int __imm)
2895 1.1 mrg {
2896 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2897 1.1 mrg (__v32hi) __W,
2898 1.1 mrg (__mmask32) __U);
2899 1.1 mrg }
2900 1.1 mrg
2901 1.1 mrg extern __inline __m512i
2902 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2903 1.1 mrg _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2904 1.1 mrg {
2905 1.1 mrg return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2906 1.1 mrg (__v32hi)
2907 1.3 mrg _mm512_setzero_si512 (),
2908 1.1 mrg (__mmask32) __U);
2909 1.1 mrg }
2910 1.1 mrg
2911 1.1 mrg extern __inline __m512i
2912 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2913 1.1 mrg _mm512_slli_epi16 (__m512i __A, const int __B)
2914 1.1 mrg {
2915 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2916 1.1 mrg (__v32hi)
2917 1.3 mrg _mm512_setzero_si512 (),
2918 1.1 mrg (__mmask32) -1);
2919 1.1 mrg }
2920 1.1 mrg
2921 1.1 mrg extern __inline __m512i
2922 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2923 1.1 mrg _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2924 1.1 mrg const int __B)
2925 1.1 mrg {
2926 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2927 1.1 mrg (__v32hi) __W,
2928 1.1 mrg (__mmask32) __U);
2929 1.1 mrg }
2930 1.1 mrg
2931 1.1 mrg extern __inline __m512i
2932 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2933 1.1 mrg _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
2934 1.1 mrg {
2935 1.1 mrg return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2936 1.1 mrg (__v32hi)
2937 1.3 mrg _mm512_setzero_si512 (),
2938 1.1 mrg (__mmask32) __U);
2939 1.1 mrg }
2940 1.1 mrg
2941 1.1 mrg extern __inline __m512i
2942 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2943 1.1 mrg _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
2944 1.1 mrg {
2945 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2946 1.1 mrg __imm,
2947 1.1 mrg (__v32hi)
2948 1.3 mrg _mm512_setzero_si512 (),
2949 1.1 mrg (__mmask32) -1);
2950 1.1 mrg }
2951 1.1 mrg
2952 1.1 mrg extern __inline __m512i
2953 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2954 1.1 mrg _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2955 1.1 mrg const int __imm)
2956 1.1 mrg {
2957 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2958 1.1 mrg __imm,
2959 1.1 mrg (__v32hi) __W,
2960 1.1 mrg (__mmask32) __U);
2961 1.1 mrg }
2962 1.1 mrg
2963 1.1 mrg extern __inline __m512i
2964 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2965 1.1 mrg _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
2966 1.1 mrg const int __imm)
2967 1.1 mrg {
2968 1.1 mrg return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2969 1.1 mrg __imm,
2970 1.1 mrg (__v32hi)
2971 1.3 mrg _mm512_setzero_si512 (),
2972 1.1 mrg (__mmask32) __U);
2973 1.1 mrg }
2974 1.1 mrg
2975 1.1 mrg extern __inline __m512i
2976 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2977 1.1 mrg _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
2978 1.1 mrg {
2979 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2980 1.1 mrg __imm,
2981 1.1 mrg (__v32hi)
2982 1.3 mrg _mm512_setzero_si512 (),
2983 1.1 mrg (__mmask32) -1);
2984 1.1 mrg }
2985 1.1 mrg
2986 1.1 mrg extern __inline __m512i
2987 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2988 1.1 mrg _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2989 1.1 mrg const int __imm)
2990 1.1 mrg {
2991 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2992 1.1 mrg __imm,
2993 1.1 mrg (__v32hi) __W,
2994 1.1 mrg (__mmask32) __U);
2995 1.1 mrg }
2996 1.1 mrg
2997 1.1 mrg extern __inline __m512i
2998 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2999 1.1 mrg _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
3000 1.1 mrg const int __imm)
3001 1.1 mrg {
3002 1.1 mrg return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
3003 1.1 mrg __imm,
3004 1.1 mrg (__v32hi)
3005 1.3 mrg _mm512_setzero_si512 (),
3006 1.1 mrg (__mmask32) __U);
3007 1.1 mrg }
3008 1.1 mrg
3009 1.1 mrg extern __inline __m512i
3010 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3011 1.1 mrg _mm512_srai_epi16 (__m512i __A, const int __imm)
3012 1.1 mrg {
3013 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
3014 1.1 mrg (__v32hi)
3015 1.3 mrg _mm512_setzero_si512 (),
3016 1.1 mrg (__mmask32) -1);
3017 1.1 mrg }
3018 1.1 mrg
3019 1.1 mrg extern __inline __m512i
3020 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3021 1.1 mrg _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
3022 1.1 mrg const int __imm)
3023 1.1 mrg {
3024 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
3025 1.1 mrg (__v32hi) __W,
3026 1.1 mrg (__mmask32) __U);
3027 1.1 mrg }
3028 1.1 mrg
3029 1.1 mrg extern __inline __m512i
3030 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3031 1.1 mrg _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
3032 1.1 mrg {
3033 1.1 mrg return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
3034 1.1 mrg (__v32hi)
3035 1.3 mrg _mm512_setzero_si512 (),
3036 1.1 mrg (__mmask32) __U);
3037 1.1 mrg }
3038 1.1 mrg
3039 1.1 mrg extern __inline __m512i
3040 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3041 1.1 mrg _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
3042 1.1 mrg {
3043 1.1 mrg return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
3044 1.1 mrg (__v32hi) __W,
3045 1.1 mrg (__mmask32) __U);
3046 1.1 mrg }
3047 1.1 mrg
3048 1.1 mrg extern __inline __m512i
3049 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3050 1.1 mrg _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
3051 1.1 mrg {
3052 1.1 mrg return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
3053 1.1 mrg (__v64qi) __W,
3054 1.1 mrg (__mmask64) __U);
3055 1.1 mrg }
3056 1.1 mrg
3057 1.1 mrg extern __inline __mmask32
3058 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3059 1.1 mrg _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3060 1.1 mrg const int __P)
3061 1.1 mrg {
3062 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
3063 1.1 mrg (__v32hi) __Y, __P,
3064 1.1 mrg (__mmask32) __U);
3065 1.1 mrg }
3066 1.1 mrg
3067 1.1 mrg extern __inline __mmask32
3068 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3069 1.1 mrg _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
3070 1.1 mrg {
3071 1.1 mrg return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
3072 1.1 mrg (__v32hi) __Y, __P,
3073 1.1 mrg (__mmask32) -1);
3074 1.1 mrg }
3075 1.1 mrg
3076 1.1 mrg extern __inline __mmask64
3077 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3078 1.4 mrg _mm512_mask_cmp_epi8_mask (__mmask64 __U, __m512i __X, __m512i __Y,
3079 1.1 mrg const int __P)
3080 1.1 mrg {
3081 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
3082 1.1 mrg (__v64qi) __Y, __P,
3083 1.1 mrg (__mmask64) __U);
3084 1.1 mrg }
3085 1.1 mrg
3086 1.1 mrg extern __inline __mmask64
3087 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3088 1.1 mrg _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
3089 1.1 mrg {
3090 1.1 mrg return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
3091 1.1 mrg (__v64qi) __Y, __P,
3092 1.1 mrg (__mmask64) -1);
3093 1.1 mrg }
3094 1.1 mrg
3095 1.1 mrg extern __inline __mmask32
3096 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3097 1.1 mrg _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3098 1.1 mrg const int __P)
3099 1.1 mrg {
3100 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
3101 1.1 mrg (__v32hi) __Y, __P,
3102 1.1 mrg (__mmask32) __U);
3103 1.1 mrg }
3104 1.1 mrg
3105 1.1 mrg extern __inline __mmask32
3106 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3107 1.1 mrg _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
3108 1.1 mrg {
3109 1.1 mrg return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
3110 1.1 mrg (__v32hi) __Y, __P,
3111 1.1 mrg (__mmask32) -1);
3112 1.1 mrg }
3113 1.1 mrg
3114 1.1 mrg extern __inline __mmask64
3115 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3116 1.4 mrg _mm512_mask_cmp_epu8_mask (__mmask64 __U, __m512i __X, __m512i __Y,
3117 1.1 mrg const int __P)
3118 1.1 mrg {
3119 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
3120 1.1 mrg (__v64qi) __Y, __P,
3121 1.1 mrg (__mmask64) __U);
3122 1.1 mrg }
3123 1.1 mrg
3124 1.1 mrg extern __inline __mmask64
3125 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3126 1.1 mrg _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
3127 1.1 mrg {
3128 1.1 mrg return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
3129 1.1 mrg (__v64qi) __Y, __P,
3130 1.1 mrg (__mmask64) -1);
3131 1.1 mrg }
3132 1.1 mrg
3133 1.1 mrg extern __inline __m512i
3134 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3135 1.1 mrg _mm512_bslli_epi128 (__m512i __A, const int __N)
3136 1.1 mrg {
3137 1.1 mrg return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
3138 1.1 mrg }
3139 1.1 mrg
3140 1.1 mrg extern __inline __m512i
3141 1.1 mrg __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3142 1.1 mrg _mm512_bsrli_epi128 (__m512i __A, const int __N)
3143 1.1 mrg {
3144 1.1 mrg return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
3145 1.1 mrg }
3146 1.1 mrg
3147 1.1 mrg #else
3148 1.3 mrg #define _kshiftli_mask32(X, Y) \
3149 1.3 mrg ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y)))
3150 1.3 mrg
3151 1.3 mrg #define _kshiftli_mask64(X, Y) \
3152 1.3 mrg ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y)))
3153 1.3 mrg
3154 1.3 mrg #define _kshiftri_mask32(X, Y) \
3155 1.3 mrg ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y)))
3156 1.3 mrg
3157 1.3 mrg #define _kshiftri_mask64(X, Y) \
3158 1.3 mrg ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y)))
3159 1.3 mrg
3160 1.1 mrg #define _mm512_alignr_epi8(X, Y, N) \
3161 1.1 mrg ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \
3162 1.1 mrg (__v8di)(__m512i)(Y), \
3163 1.6 mrg (int)((N) * 8)))
3164 1.1 mrg
3165 1.1 mrg #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \
3166 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
3167 1.6 mrg (__v8di)(__m512i)(Y), (int)((N) * 8), \
3168 1.1 mrg (__v8di)(__m512i)(W), (__mmask64)(U)))
3169 1.1 mrg
3170 1.1 mrg #define _mm512_maskz_alignr_epi8(U, X, Y, N) \
3171 1.1 mrg ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
3172 1.6 mrg (__v8di)(__m512i)(Y), (int)((N) * 8), \
3173 1.3 mrg (__v8di)(__m512i) \
3174 1.3 mrg _mm512_setzero_si512 (), \
3175 1.3 mrg (__mmask64)(U)))
3176 1.1 mrg
3177 1.1 mrg #define _mm512_dbsad_epu8(X, Y, C) \
3178 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
3179 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
3180 1.3 mrg (__v32hi)(__m512i) \
3181 1.3 mrg _mm512_setzero_si512 (), \
3182 1.1 mrg (__mmask32)-1))
3183 1.1 mrg
3184 1.1 mrg #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \
3185 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
3186 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
3187 1.1 mrg (__v32hi)(__m512i)(W), \
3188 1.1 mrg (__mmask32)(U)))
3189 1.1 mrg
3190 1.1 mrg #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \
3191 1.1 mrg ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
3192 1.1 mrg (__v64qi)(__m512i) (Y), (int) (C), \
3193 1.3 mrg (__v32hi)(__m512i) \
3194 1.3 mrg _mm512_setzero_si512 (), \
3195 1.1 mrg (__mmask32)(U)))
3196 1.1 mrg
3197 1.1 mrg #define _mm512_srli_epi16(A, B) \
3198 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
3199 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
3200 1.1 mrg
3201 1.1 mrg #define _mm512_mask_srli_epi16(W, U, A, B) \
3202 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
3203 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
3204 1.1 mrg
3205 1.1 mrg #define _mm512_maskz_srli_epi16(U, A, B) \
3206 1.1 mrg ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
3207 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
3208 1.1 mrg
3209 1.1 mrg #define _mm512_slli_epi16(X, C) \
3210 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3211 1.3 mrg (__v32hi)(__m512i)_mm512_setzero_si512 (), \
3212 1.1 mrg (__mmask32)-1))
3213 1.1 mrg
3214 1.1 mrg #define _mm512_mask_slli_epi16(W, U, X, C) \
3215 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3216 1.1 mrg (__v32hi)(__m512i)(W),\
3217 1.1 mrg (__mmask32)(U)))
3218 1.1 mrg
3219 1.1 mrg #define _mm512_maskz_slli_epi16(U, X, C) \
3220 1.1 mrg ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3221 1.3 mrg (__v32hi)(__m512i)_mm512_setzero_si512 (), \
3222 1.1 mrg (__mmask32)(U)))
3223 1.1 mrg
3224 1.1 mrg #define _mm512_shufflehi_epi16(A, B) \
3225 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3226 1.3 mrg (__v32hi)(__m512i) \
3227 1.3 mrg _mm512_setzero_si512 (), \
3228 1.1 mrg (__mmask32)-1))
3229 1.1 mrg
3230 1.1 mrg #define _mm512_mask_shufflehi_epi16(W, U, A, B) \
3231 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3232 1.1 mrg (__v32hi)(__m512i)(W), \
3233 1.1 mrg (__mmask32)(U)))
3234 1.1 mrg
3235 1.1 mrg #define _mm512_maskz_shufflehi_epi16(U, A, B) \
3236 1.1 mrg ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3237 1.3 mrg (__v32hi)(__m512i) \
3238 1.3 mrg _mm512_setzero_si512 (), \
3239 1.1 mrg (__mmask32)(U)))
3240 1.1 mrg
3241 1.1 mrg #define _mm512_shufflelo_epi16(A, B) \
3242 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3243 1.3 mrg (__v32hi)(__m512i) \
3244 1.3 mrg _mm512_setzero_si512 (), \
3245 1.1 mrg (__mmask32)-1))
3246 1.1 mrg
3247 1.1 mrg #define _mm512_mask_shufflelo_epi16(W, U, A, B) \
3248 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3249 1.1 mrg (__v32hi)(__m512i)(W), \
3250 1.1 mrg (__mmask32)(U)))
3251 1.1 mrg
3252 1.1 mrg #define _mm512_maskz_shufflelo_epi16(U, A, B) \
3253 1.1 mrg ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
3254 1.3 mrg (__v32hi)(__m512i) \
3255 1.3 mrg _mm512_setzero_si512 (), \
3256 1.1 mrg (__mmask32)(U)))
3257 1.1 mrg
3258 1.1 mrg #define _mm512_srai_epi16(A, B) \
3259 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
3260 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
3261 1.1 mrg
3262 1.1 mrg #define _mm512_mask_srai_epi16(W, U, A, B) \
3263 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
3264 1.1 mrg (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
3265 1.1 mrg
3266 1.1 mrg #define _mm512_maskz_srai_epi16(U, A, B) \
3267 1.1 mrg ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
3268 1.3 mrg (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
3269 1.1 mrg
3270 1.1 mrg #define _mm512_mask_blend_epi16(__U, __A, __W) \
3271 1.1 mrg ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \
3272 1.1 mrg (__v32hi) (__W), \
3273 1.1 mrg (__mmask32) (__U)))
3274 1.1 mrg
3275 1.1 mrg #define _mm512_mask_blend_epi8(__U, __A, __W) \
3276 1.1 mrg ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \
3277 1.1 mrg (__v64qi) (__W), \
3278 1.1 mrg (__mmask64) (__U)))
3279 1.1 mrg
3280 1.1 mrg #define _mm512_cmp_epi16_mask(X, Y, P) \
3281 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
3282 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3283 1.1 mrg (__mmask32)(-1)))
3284 1.1 mrg
3285 1.1 mrg #define _mm512_cmp_epi8_mask(X, Y, P) \
3286 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
3287 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3288 1.1 mrg (__mmask64)(-1)))
3289 1.1 mrg
3290 1.1 mrg #define _mm512_cmp_epu16_mask(X, Y, P) \
3291 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
3292 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3293 1.1 mrg (__mmask32)(-1)))
3294 1.1 mrg
3295 1.1 mrg #define _mm512_cmp_epu8_mask(X, Y, P) \
3296 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
3297 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3298 1.1 mrg (__mmask64)(-1)))
3299 1.1 mrg
3300 1.1 mrg #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \
3301 1.1 mrg ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
3302 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3303 1.1 mrg (__mmask32)(M)))
3304 1.1 mrg
3305 1.1 mrg #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \
3306 1.1 mrg ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
3307 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3308 1.1 mrg (__mmask64)(M)))
3309 1.1 mrg
3310 1.1 mrg #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \
3311 1.1 mrg ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
3312 1.1 mrg (__v32hi)(__m512i)(Y), (int)(P),\
3313 1.1 mrg (__mmask32)(M)))
3314 1.1 mrg
3315 1.1 mrg #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \
3316 1.1 mrg ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
3317 1.1 mrg (__v64qi)(__m512i)(Y), (int)(P),\
3318 1.1 mrg (__mmask64)(M)))
3319 1.1 mrg
3320 1.1 mrg #define _mm512_bslli_epi128(A, N) \
3321 1.1 mrg ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
3322 1.1 mrg
3323 1.1 mrg #define _mm512_bsrli_epi128(A, N) \
3324 1.1 mrg ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
3325 1.1 mrg
3326 1.1 mrg #endif
3327 1.1 mrg
3328 1.1 mrg #ifdef __DISABLE_AVX512BW__
3329 1.1 mrg #undef __DISABLE_AVX512BW__
3330 1.1 mrg #pragma GCC pop_options
3331 1.1 mrg #endif /* __DISABLE_AVX512BW__ */
3332 1.1 mrg
3333 1.1 mrg #endif /* _AVX512BWINTRIN_H_INCLUDED */
3334