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