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