]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/i386/avx512dqintrin.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / i386 / avx512dqintrin.h
1 /* Copyright (C) 2014-2024 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 <avx512dqintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef _AVX512DQINTRIN_H_INCLUDED
29 #define _AVX512DQINTRIN_H_INCLUDED
30
31 #if !defined (__AVX512DQ__) || defined (__EVEX512__)
32 #pragma GCC push_options
33 #pragma GCC target("avx512dq,no-evex512")
34 #define __DISABLE_AVX512DQ__
35 #endif /* __AVX512DQ__ */
36
37 extern __inline unsigned char
38 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
39 _ktest_mask8_u8 (__mmask8 __A, __mmask8 __B, unsigned char *__CF)
40 {
41 *__CF = (unsigned char) __builtin_ia32_ktestcqi (__A, __B);
42 return (unsigned char) __builtin_ia32_ktestzqi (__A, __B);
43 }
44
45 extern __inline unsigned char
46 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47 _ktestz_mask8_u8 (__mmask8 __A, __mmask8 __B)
48 {
49 return (unsigned char) __builtin_ia32_ktestzqi (__A, __B);
50 }
51
52 extern __inline unsigned char
53 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
54 _ktestc_mask8_u8 (__mmask8 __A, __mmask8 __B)
55 {
56 return (unsigned char) __builtin_ia32_ktestcqi (__A, __B);
57 }
58
59 extern __inline unsigned char
60 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
61 _ktest_mask16_u8 (__mmask16 __A, __mmask16 __B, unsigned char *__CF)
62 {
63 *__CF = (unsigned char) __builtin_ia32_ktestchi (__A, __B);
64 return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
65 }
66
67 extern __inline unsigned char
68 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
69 _ktestz_mask16_u8 (__mmask16 __A, __mmask16 __B)
70 {
71 return (unsigned char) __builtin_ia32_ktestzhi (__A, __B);
72 }
73
74 extern __inline unsigned char
75 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
76 _ktestc_mask16_u8 (__mmask16 __A, __mmask16 __B)
77 {
78 return (unsigned char) __builtin_ia32_ktestchi (__A, __B);
79 }
80
81 extern __inline unsigned char
82 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
83 _kortest_mask8_u8 (__mmask8 __A, __mmask8 __B, unsigned char *__CF)
84 {
85 *__CF = (unsigned char) __builtin_ia32_kortestcqi (__A, __B);
86 return (unsigned char) __builtin_ia32_kortestzqi (__A, __B);
87 }
88
89 extern __inline unsigned char
90 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
91 _kortestz_mask8_u8 (__mmask8 __A, __mmask8 __B)
92 {
93 return (unsigned char) __builtin_ia32_kortestzqi (__A, __B);
94 }
95
96 extern __inline unsigned char
97 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
98 _kortestc_mask8_u8 (__mmask8 __A, __mmask8 __B)
99 {
100 return (unsigned char) __builtin_ia32_kortestcqi (__A, __B);
101 }
102
103 extern __inline __mmask8
104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
105 _kadd_mask8 (__mmask8 __A, __mmask8 __B)
106 {
107 return (__mmask8) __builtin_ia32_kaddqi ((__mmask8) __A, (__mmask8) __B);
108 }
109
110 extern __inline __mmask16
111 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
112 _kadd_mask16 (__mmask16 __A, __mmask16 __B)
113 {
114 return (__mmask16) __builtin_ia32_kaddhi ((__mmask16) __A, (__mmask16) __B);
115 }
116
117 extern __inline unsigned int
118 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
119 _cvtmask8_u32 (__mmask8 __A)
120 {
121 return (unsigned int) __builtin_ia32_kmovb ((__mmask8 ) __A);
122 }
123
124 extern __inline __mmask8
125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
126 _cvtu32_mask8 (unsigned int __A)
127 {
128 return (__mmask8) __builtin_ia32_kmovb ((__mmask8) __A);
129 }
130
131 extern __inline __mmask8
132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
133 _load_mask8 (__mmask8 *__A)
134 {
135 return (__mmask8) __builtin_ia32_kmovb (*(__mmask8 *) __A);
136 }
137
138 extern __inline void
139 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
140 _store_mask8 (__mmask8 *__A, __mmask8 __B)
141 {
142 *(__mmask8 *) __A = __builtin_ia32_kmovb (__B);
143 }
144
145 extern __inline __mmask8
146 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
147 _knot_mask8 (__mmask8 __A)
148 {
149 return (__mmask8) __builtin_ia32_knotqi ((__mmask8) __A);
150 }
151
152 extern __inline __mmask8
153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
154 _kor_mask8 (__mmask8 __A, __mmask8 __B)
155 {
156 return (__mmask8) __builtin_ia32_korqi ((__mmask8) __A, (__mmask8) __B);
157 }
158
159 extern __inline __mmask8
160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
161 _kxnor_mask8 (__mmask8 __A, __mmask8 __B)
162 {
163 return (__mmask8) __builtin_ia32_kxnorqi ((__mmask8) __A, (__mmask8) __B);
164 }
165
166 extern __inline __mmask8
167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
168 _kxor_mask8 (__mmask8 __A, __mmask8 __B)
169 {
170 return (__mmask8) __builtin_ia32_kxorqi ((__mmask8) __A, (__mmask8) __B);
171 }
172
173 extern __inline __mmask8
174 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
175 _kand_mask8 (__mmask8 __A, __mmask8 __B)
176 {
177 return (__mmask8) __builtin_ia32_kandqi ((__mmask8) __A, (__mmask8) __B);
178 }
179
180 extern __inline __mmask8
181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
182 _kandn_mask8 (__mmask8 __A, __mmask8 __B)
183 {
184 return (__mmask8) __builtin_ia32_kandnqi ((__mmask8) __A, (__mmask8) __B);
185 }
186
187 #ifdef __OPTIMIZE__
188 extern __inline __mmask8
189 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
190 _kshiftli_mask8 (__mmask8 __A, unsigned int __B)
191 {
192 return (__mmask8) __builtin_ia32_kshiftliqi ((__mmask8) __A, (__mmask8) __B);
193 }
194
195 extern __inline __mmask8
196 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
197 _kshiftri_mask8 (__mmask8 __A, unsigned int __B)
198 {
199 return (__mmask8) __builtin_ia32_kshiftriqi ((__mmask8) __A, (__mmask8) __B);
200 }
201
202 extern __inline __m128d
203 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
204 _mm_reduce_sd (__m128d __A, __m128d __B, int __C)
205 {
206 return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
207 (__v2df) __B, __C,
208 (__v2df) _mm_avx512_setzero_pd (),
209 (__mmask8) -1);
210 }
211
212 extern __inline __m128d
213 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
214 _mm_reduce_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
215 {
216 return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
217 (__v2df) __B, __C,
218 (__v2df)
219 _mm_avx512_setzero_pd (),
220 (__mmask8) -1, __R);
221 }
222
223 extern __inline __m128d
224 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
225 _mm_mask_reduce_sd (__m128d __W, __mmask8 __U, __m128d __A,
226 __m128d __B, int __C)
227 {
228 return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
229 (__v2df) __B, __C,
230 (__v2df) __W,
231 (__mmask8) __U);
232 }
233
234 extern __inline __m128d
235 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
236 _mm_mask_reduce_round_sd (__m128d __W, __mmask8 __U, __m128d __A,
237 __m128d __B, int __C, const int __R)
238 {
239 return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
240 (__v2df) __B, __C,
241 (__v2df) __W,
242 __U, __R);
243 }
244
245 extern __inline __m128d
246 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
247 _mm_maskz_reduce_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C)
248 {
249 return (__m128d) __builtin_ia32_reducesd_mask ((__v2df) __A,
250 (__v2df) __B, __C,
251 (__v2df) _mm_avx512_setzero_pd (),
252 (__mmask8) __U);
253 }
254
255 extern __inline __m128d
256 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
257 _mm_maskz_reduce_round_sd (__mmask8 __U, __m128d __A, __m128d __B,
258 int __C, const int __R)
259 {
260 return (__m128d) __builtin_ia32_reducesd_mask_round ((__v2df) __A,
261 (__v2df) __B, __C,
262 (__v2df)
263 _mm_avx512_setzero_pd (),
264 __U, __R);
265 }
266
267 extern __inline __m128
268 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
269 _mm_reduce_ss (__m128 __A, __m128 __B, int __C)
270 {
271 return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
272 (__v4sf) __B, __C,
273 (__v4sf) _mm_avx512_setzero_ps (),
274 (__mmask8) -1);
275 }
276
277 extern __inline __m128
278 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
279 _mm_reduce_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
280 {
281 return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
282 (__v4sf) __B, __C,
283 (__v4sf)
284 _mm_avx512_setzero_ps (),
285 (__mmask8) -1, __R);
286 }
287
288 extern __inline __m128
289 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
290 _mm_mask_reduce_ss (__m128 __W, __mmask8 __U, __m128 __A,
291 __m128 __B, int __C)
292 {
293 return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
294 (__v4sf) __B, __C,
295 (__v4sf) __W,
296 (__mmask8) __U);
297 }
298
299 extern __inline __m128
300 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
301 _mm_mask_reduce_round_ss (__m128 __W, __mmask8 __U, __m128 __A,
302 __m128 __B, int __C, const int __R)
303 {
304 return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
305 (__v4sf) __B, __C,
306 (__v4sf) __W,
307 __U, __R);
308 }
309
310 extern __inline __m128
311 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
312 _mm_maskz_reduce_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C)
313 {
314 return (__m128) __builtin_ia32_reducess_mask ((__v4sf) __A,
315 (__v4sf) __B, __C,
316 (__v4sf) _mm_avx512_setzero_ps (),
317 (__mmask8) __U);
318 }
319
320 extern __inline __m128
321 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
322 _mm_maskz_reduce_round_ss (__mmask8 __U, __m128 __A, __m128 __B,
323 int __C, const int __R)
324 {
325 return (__m128) __builtin_ia32_reducess_mask_round ((__v4sf) __A,
326 (__v4sf) __B, __C,
327 (__v4sf)
328 _mm_avx512_setzero_ps (),
329 __U, __R);
330 }
331
332 extern __inline __m128d
333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
334 _mm_range_sd (__m128d __A, __m128d __B, int __C)
335 {
336 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
337 (__v2df) __B, __C,
338 (__v2df)
339 _mm_avx512_setzero_pd (),
340 (__mmask8) -1,
341 _MM_FROUND_CUR_DIRECTION);
342 }
343
344 extern __inline __m128d
345 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
346 _mm_mask_range_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B, int __C)
347 {
348 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
349 (__v2df) __B, __C,
350 (__v2df) __W,
351 (__mmask8) __U,
352 _MM_FROUND_CUR_DIRECTION);
353 }
354
355 extern __inline __m128d
356 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
357 _mm_maskz_range_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C)
358 {
359 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
360 (__v2df) __B, __C,
361 (__v2df)
362 _mm_avx512_setzero_pd (),
363 (__mmask8) __U,
364 _MM_FROUND_CUR_DIRECTION);
365 }
366
367 extern __inline __m128
368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
369 _mm_range_ss (__m128 __A, __m128 __B, int __C)
370 {
371 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
372 (__v4sf) __B, __C,
373 (__v4sf)
374 _mm_avx512_setzero_ps (),
375 (__mmask8) -1,
376 _MM_FROUND_CUR_DIRECTION);
377 }
378
379 extern __inline __m128
380 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
381 _mm_mask_range_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B, int __C)
382 {
383 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
384 (__v4sf) __B, __C,
385 (__v4sf) __W,
386 (__mmask8) __U,
387 _MM_FROUND_CUR_DIRECTION);
388 }
389
390 extern __inline __m128
391 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
392 _mm_maskz_range_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C)
393 {
394 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
395 (__v4sf) __B, __C,
396 (__v4sf)
397 _mm_avx512_setzero_ps (),
398 (__mmask8) __U,
399 _MM_FROUND_CUR_DIRECTION);
400 }
401
402 extern __inline __m128d
403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
404 _mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
405 {
406 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
407 (__v2df) __B, __C,
408 (__v2df)
409 _mm_avx512_setzero_pd (),
410 (__mmask8) -1, __R);
411 }
412
413 extern __inline __m128d
414 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
415 _mm_mask_range_round_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B,
416 int __C, const int __R)
417 {
418 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
419 (__v2df) __B, __C,
420 (__v2df) __W,
421 (__mmask8) __U, __R);
422 }
423
424 extern __inline __m128d
425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
426 _mm_maskz_range_round_sd (__mmask8 __U, __m128d __A, __m128d __B, int __C,
427 const int __R)
428 {
429 return (__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df) __A,
430 (__v2df) __B, __C,
431 (__v2df)
432 _mm_avx512_setzero_pd (),
433 (__mmask8) __U, __R);
434 }
435
436 extern __inline __m128
437 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
438 _mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
439 {
440 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
441 (__v4sf) __B, __C,
442 (__v4sf)
443 _mm_avx512_setzero_ps (),
444 (__mmask8) -1, __R);
445 }
446
447 extern __inline __m128
448 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
449 _mm_mask_range_round_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B,
450 int __C, const int __R)
451 {
452 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
453 (__v4sf) __B, __C,
454 (__v4sf) __W,
455 (__mmask8) __U, __R);
456 }
457
458 extern __inline __m128
459 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
460 _mm_maskz_range_round_ss (__mmask8 __U, __m128 __A, __m128 __B, int __C,
461 const int __R)
462 {
463 return (__m128) __builtin_ia32_rangess128_mask_round ((__v4sf) __A,
464 (__v4sf) __B, __C,
465 (__v4sf)
466 _mm_avx512_setzero_ps (),
467 (__mmask8) __U, __R);
468 }
469
470 extern __inline __mmask8
471 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
472 _mm_fpclass_ss_mask (__m128 __A, const int __imm)
473 {
474 return (__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) __A, __imm,
475 (__mmask8) -1);
476 }
477
478 extern __inline __mmask8
479 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
480 _mm_fpclass_sd_mask (__m128d __A, const int __imm)
481 {
482 return (__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) __A, __imm,
483 (__mmask8) -1);
484 }
485
486 extern __inline __mmask8
487 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
488 _mm_mask_fpclass_ss_mask (__mmask8 __U, __m128 __A, const int __imm)
489 {
490 return (__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) __A, __imm, __U);
491 }
492
493 extern __inline __mmask8
494 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
495 _mm_mask_fpclass_sd_mask (__mmask8 __U, __m128d __A, const int __imm)
496 {
497 return (__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) __A, __imm, __U);
498 }
499
500 #else
501 #define _kshiftli_mask8(X, Y) \
502 ((__mmask8) __builtin_ia32_kshiftliqi ((__mmask8)(X), (__mmask8)(Y)))
503
504 #define _kshiftri_mask8(X, Y) \
505 ((__mmask8) __builtin_ia32_kshiftriqi ((__mmask8)(X), (__mmask8)(Y)))
506
507 #define _mm_range_sd(A, B, C) \
508 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
509 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
510 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION))
511
512 #define _mm_mask_range_sd(W, U, A, B, C) \
513 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
514 (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \
515 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
516
517 #define _mm_maskz_range_sd(U, A, B, C) \
518 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
519 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
520 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
521
522 #define _mm_range_ss(A, B, C) \
523 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
524 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
525 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION))
526
527 #define _mm_mask_range_ss(W, U, A, B, C) \
528 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
529 (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \
530 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
531
532 #define _mm_maskz_range_ss(U, A, B, C) \
533 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
534 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
535 (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
536
537 #define _mm_range_round_sd(A, B, C, R) \
538 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
539 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
540 (__mmask8) -1, (R)))
541
542 #define _mm_mask_range_round_sd(W, U, A, B, C, R) \
543 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
544 (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \
545 (__mmask8)(U), (R)))
546
547 #define _mm_maskz_range_round_sd(U, A, B, C, R) \
548 ((__m128d) __builtin_ia32_rangesd128_mask_round ((__v2df)(__m128d)(A), \
549 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
550 (__mmask8)(U), (R)))
551
552 #define _mm_range_round_ss(A, B, C, R) \
553 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
554 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
555 (__mmask8) -1, (R)))
556
557 #define _mm_mask_range_round_ss(W, U, A, B, C, R) \
558 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
559 (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \
560 (__mmask8)(U), (R)))
561
562 #define _mm_maskz_range_round_ss(U, A, B, C, R) \
563 ((__m128) __builtin_ia32_rangess128_mask_round ((__v4sf)(__m128)(A), \
564 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
565 (__mmask8)(U), (R)))
566
567 #define _mm_fpclass_ss_mask(X, C) \
568 ((__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) (__m128) (X), \
569 (int) (C), (__mmask8) (-1))) \
570
571 #define _mm_fpclass_sd_mask(X, C) \
572 ((__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) (__m128d) (X), \
573 (int) (C), (__mmask8) (-1))) \
574
575 #define _mm_mask_fpclass_ss_mask(X, C, U) \
576 ((__mmask8) __builtin_ia32_fpclassss_mask ((__v4sf) (__m128) (X), \
577 (int) (C), (__mmask8) (U)))
578
579 #define _mm_mask_fpclass_sd_mask(X, C, U) \
580 ((__mmask8) __builtin_ia32_fpclasssd_mask ((__v2df) (__m128d) (X), \
581 (int) (C), (__mmask8) (U)))
582 #define _mm_reduce_sd(A, B, C) \
583 ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A), \
584 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
585 (__mmask8)-1))
586
587 #define _mm_mask_reduce_sd(W, U, A, B, C) \
588 ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A), \
589 (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), (__mmask8)(U)))
590
591 #define _mm_maskz_reduce_sd(U, A, B, C) \
592 ((__m128d) __builtin_ia32_reducesd_mask ((__v2df)(__m128d)(A), \
593 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
594 (__mmask8)(U)))
595
596 #define _mm_reduce_round_sd(A, B, C, R) \
597 ((__m128d) __builtin_ia32_reducesd_round ((__v2df)(__m128d)(A), \
598 (__v2df)(__m128d)(B), (int)(C), (__mmask8)(U), (int)(R)))
599
600 #define _mm_mask_reduce_round_sd(W, U, A, B, C, R) \
601 ((__m128d) __builtin_ia32_reducesd_mask_round ((__v2df)(__m128d)(A), \
602 (__v2df)(__m128d)(B), (int)(C), (__v2df)(__m128d)(W), \
603 (__mmask8)(U), (int)(R)))
604
605 #define _mm_maskz_reduce_round_sd(U, A, B, C, R) \
606 ((__m128d) __builtin_ia32_reducesd_mask_round ((__v2df)(__m128d)(A), \
607 (__v2df)(__m128d)(B), (int)(C), (__v2df) _mm_avx512_setzero_pd (), \
608 (__mmask8)(U), (int)(R)))
609
610 #define _mm_reduce_ss(A, B, C) \
611 ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A), \
612 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
613 (__mmask8)-1))
614
615 #define _mm_mask_reduce_ss(W, U, A, B, C) \
616 ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A), \
617 (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), (__mmask8)(U)))
618
619 #define _mm_maskz_reduce_ss(U, A, B, C) \
620 ((__m128) __builtin_ia32_reducess_mask ((__v4sf)(__m128)(A), \
621 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
622 (__mmask8)(U)))
623
624 #define _mm_reduce_round_ss(A, B, C, R) \
625 ((__m128) __builtin_ia32_reducess_round ((__v4sf)(__m128)(A), \
626 (__v4sf)(__m128)(B), (int)(C), (__mmask8)(U), (int)(R)))
627
628 #define _mm_mask_reduce_round_ss(W, U, A, B, C, R) \
629 ((__m128) __builtin_ia32_reducess_mask_round ((__v4sf)(__m128)(A), \
630 (__v4sf)(__m128)(B), (int)(C), (__v4sf)(__m128)(W), \
631 (__mmask8)(U), (int)(R)))
632
633 #define _mm_maskz_reduce_round_ss(U, A, B, C, R) \
634 ((__m128) __builtin_ia32_reducesd_mask_round ((__v4sf)(__m128)(A), \
635 (__v4sf)(__m128)(B), (int)(C), (__v4sf) _mm_avx512_setzero_ps (), \
636 (__mmask8)(U), (int)(R)))
637
638 #endif
639
640 #ifdef __DISABLE_AVX512DQ__
641 #undef __DISABLE_AVX512DQ__
642 #pragma GCC pop_options
643 #endif /* __DISABLE_AVX512DQ__ */
644
645 #if !defined (__AVX512DQ__) || !defined (__EVEX512__)
646 #pragma GCC push_options
647 #pragma GCC target("avx512dq,evex512")
648 #define __DISABLE_AVX512DQ_512__
649 #endif /* __AVX512DQ_512__ */
650
651 extern __inline __m512d
652 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
653 _mm512_broadcast_f64x2 (__m128d __A)
654 {
655 return (__m512d)
656 __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
657 _mm512_undefined_pd (),
658 (__mmask8) -1);
659 }
660
661 extern __inline __m512d
662 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
663 _mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
664 {
665 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
666 __A,
667 (__v8df)
668 __O, __M);
669 }
670
671 extern __inline __m512d
672 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
673 _mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
674 {
675 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
676 __A,
677 (__v8df)
678 _mm512_setzero_ps (),
679 __M);
680 }
681
682 extern __inline __m512i
683 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
684 _mm512_broadcast_i64x2 (__m128i __A)
685 {
686 return (__m512i)
687 __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
688 _mm512_undefined_epi32 (),
689 (__mmask8) -1);
690 }
691
692 extern __inline __m512i
693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
694 _mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
695 {
696 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
697 __A,
698 (__v8di)
699 __O, __M);
700 }
701
702 extern __inline __m512i
703 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
704 _mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
705 {
706 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
707 __A,
708 (__v8di)
709 _mm512_setzero_si512 (),
710 __M);
711 }
712
713 extern __inline __m512
714 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
715 _mm512_broadcast_f32x2 (__m128 __A)
716 {
717 return (__m512)
718 __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
719 (__v16sf)_mm512_undefined_ps (),
720 (__mmask16) -1);
721 }
722
723 extern __inline __m512
724 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
725 _mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
726 {
727 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
728 (__v16sf)
729 __O, __M);
730 }
731
732 extern __inline __m512
733 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
734 _mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
735 {
736 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
737 (__v16sf)
738 _mm512_setzero_ps (),
739 __M);
740 }
741
742 extern __inline __m512i
743 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
744 _mm512_broadcast_i32x2 (__m128i __A)
745 {
746 return (__m512i)
747 __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
748 (__v16si)
749 _mm512_undefined_epi32 (),
750 (__mmask16) -1);
751 }
752
753 extern __inline __m512i
754 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
755 _mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
756 {
757 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
758 __A,
759 (__v16si)
760 __O, __M);
761 }
762
763 extern __inline __m512i
764 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
765 _mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
766 {
767 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
768 __A,
769 (__v16si)
770 _mm512_setzero_si512 (),
771 __M);
772 }
773
774 extern __inline __m512
775 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
776 _mm512_broadcast_f32x8 (__m256 __A)
777 {
778 return (__m512)
779 __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
780 _mm512_undefined_ps (),
781 (__mmask16) -1);
782 }
783
784 extern __inline __m512
785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
786 _mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
787 {
788 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
789 (__v16sf)__O,
790 __M);
791 }
792
793 extern __inline __m512
794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
795 _mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
796 {
797 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
798 (__v16sf)
799 _mm512_setzero_ps (),
800 __M);
801 }
802
803 extern __inline __m512i
804 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
805 _mm512_broadcast_i32x8 (__m256i __A)
806 {
807 return (__m512i)
808 __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
809 (__v16si)
810 _mm512_undefined_epi32 (),
811 (__mmask16) -1);
812 }
813
814 extern __inline __m512i
815 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
816 _mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
817 {
818 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
819 __A,
820 (__v16si)__O,
821 __M);
822 }
823
824 extern __inline __m512i
825 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
826 _mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
827 {
828 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
829 __A,
830 (__v16si)
831 _mm512_setzero_si512 (),
832 __M);
833 }
834
835 extern __inline __m512i
836 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
837 _mm512_mullo_epi64 (__m512i __A, __m512i __B)
838 {
839 return (__m512i) ((__v8du) __A * (__v8du) __B);
840 }
841
842 extern __inline __m512i
843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
844 _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
845 __m512i __B)
846 {
847 return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
848 (__v8di) __B,
849 (__v8di) __W,
850 (__mmask8) __U);
851 }
852
853 extern __inline __m512i
854 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
855 _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
856 {
857 return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
858 (__v8di) __B,
859 (__v8di)
860 _mm512_setzero_si512 (),
861 (__mmask8) __U);
862 }
863
864 extern __inline __m512d
865 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
866 _mm512_xor_pd (__m512d __A, __m512d __B)
867 {
868 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
869 (__v8df) __B,
870 (__v8df)
871 _mm512_setzero_pd (),
872 (__mmask8) -1);
873 }
874
875 extern __inline __m512d
876 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
877 _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A,
878 __m512d __B)
879 {
880 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
881 (__v8df) __B,
882 (__v8df) __W,
883 (__mmask8) __U);
884 }
885
886 extern __inline __m512d
887 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
888 _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B)
889 {
890 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
891 (__v8df) __B,
892 (__v8df)
893 _mm512_setzero_pd (),
894 (__mmask8) __U);
895 }
896
897 extern __inline __m512
898 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
899 _mm512_xor_ps (__m512 __A, __m512 __B)
900 {
901 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
902 (__v16sf) __B,
903 (__v16sf)
904 _mm512_setzero_ps (),
905 (__mmask16) -1);
906 }
907
908 extern __inline __m512
909 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
910 _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
911 {
912 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
913 (__v16sf) __B,
914 (__v16sf) __W,
915 (__mmask16) __U);
916 }
917
918 extern __inline __m512
919 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
920 _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B)
921 {
922 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
923 (__v16sf) __B,
924 (__v16sf)
925 _mm512_setzero_ps (),
926 (__mmask16) __U);
927 }
928
929 extern __inline __m512d
930 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
931 _mm512_or_pd (__m512d __A, __m512d __B)
932 {
933 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
934 (__v8df) __B,
935 (__v8df)
936 _mm512_setzero_pd (),
937 (__mmask8) -1);
938 }
939
940 extern __inline __m512d
941 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
942 _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
943 {
944 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
945 (__v8df) __B,
946 (__v8df) __W,
947 (__mmask8) __U);
948 }
949
950 extern __inline __m512d
951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
952 _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B)
953 {
954 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
955 (__v8df) __B,
956 (__v8df)
957 _mm512_setzero_pd (),
958 (__mmask8) __U);
959 }
960
961 extern __inline __m512
962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
963 _mm512_or_ps (__m512 __A, __m512 __B)
964 {
965 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
966 (__v16sf) __B,
967 (__v16sf)
968 _mm512_setzero_ps (),
969 (__mmask16) -1);
970 }
971
972 extern __inline __m512
973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
974 _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
975 {
976 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
977 (__v16sf) __B,
978 (__v16sf) __W,
979 (__mmask16) __U);
980 }
981
982 extern __inline __m512
983 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
984 _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B)
985 {
986 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
987 (__v16sf) __B,
988 (__v16sf)
989 _mm512_setzero_ps (),
990 (__mmask16) __U);
991 }
992
993 extern __inline __m512d
994 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
995 _mm512_and_pd (__m512d __A, __m512d __B)
996 {
997 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
998 (__v8df) __B,
999 (__v8df)
1000 _mm512_setzero_pd (),
1001 (__mmask8) -1);
1002 }
1003
1004 extern __inline __m512d
1005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1006 _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A,
1007 __m512d __B)
1008 {
1009 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
1010 (__v8df) __B,
1011 (__v8df) __W,
1012 (__mmask8) __U);
1013 }
1014
1015 extern __inline __m512d
1016 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1017 _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B)
1018 {
1019 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
1020 (__v8df) __B,
1021 (__v8df)
1022 _mm512_setzero_pd (),
1023 (__mmask8) __U);
1024 }
1025
1026 extern __inline __m512
1027 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1028 _mm512_and_ps (__m512 __A, __m512 __B)
1029 {
1030 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
1031 (__v16sf) __B,
1032 (__v16sf)
1033 _mm512_setzero_ps (),
1034 (__mmask16) -1);
1035 }
1036
1037 extern __inline __m512
1038 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1039 _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1040 {
1041 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
1042 (__v16sf) __B,
1043 (__v16sf) __W,
1044 (__mmask16) __U);
1045 }
1046
1047 extern __inline __m512
1048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1049 _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B)
1050 {
1051 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
1052 (__v16sf) __B,
1053 (__v16sf)
1054 _mm512_setzero_ps (),
1055 (__mmask16) __U);
1056 }
1057
1058 extern __inline __m512d
1059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1060 _mm512_andnot_pd (__m512d __A, __m512d __B)
1061 {
1062 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
1063 (__v8df) __B,
1064 (__v8df)
1065 _mm512_setzero_pd (),
1066 (__mmask8) -1);
1067 }
1068
1069 extern __inline __m512d
1070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1071 _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A,
1072 __m512d __B)
1073 {
1074 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
1075 (__v8df) __B,
1076 (__v8df) __W,
1077 (__mmask8) __U);
1078 }
1079
1080 extern __inline __m512d
1081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1082 _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B)
1083 {
1084 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
1085 (__v8df) __B,
1086 (__v8df)
1087 _mm512_setzero_pd (),
1088 (__mmask8) __U);
1089 }
1090
1091 extern __inline __m512
1092 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1093 _mm512_andnot_ps (__m512 __A, __m512 __B)
1094 {
1095 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
1096 (__v16sf) __B,
1097 (__v16sf)
1098 _mm512_setzero_ps (),
1099 (__mmask16) -1);
1100 }
1101
1102 extern __inline __m512
1103 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1104 _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A,
1105 __m512 __B)
1106 {
1107 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
1108 (__v16sf) __B,
1109 (__v16sf) __W,
1110 (__mmask16) __U);
1111 }
1112
1113 extern __inline __m512
1114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1115 _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B)
1116 {
1117 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
1118 (__v16sf) __B,
1119 (__v16sf)
1120 _mm512_setzero_ps (),
1121 (__mmask16) __U);
1122 }
1123
1124 extern __inline __mmask16
1125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1126 _mm512_movepi32_mask (__m512i __A)
1127 {
1128 return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
1129 }
1130
1131 extern __inline __mmask8
1132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1133 _mm512_movepi64_mask (__m512i __A)
1134 {
1135 return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
1136 }
1137
1138 extern __inline __m512i
1139 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1140 _mm512_movm_epi32 (__mmask16 __A)
1141 {
1142 return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
1143 }
1144
1145 extern __inline __m512i
1146 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1147 _mm512_movm_epi64 (__mmask8 __A)
1148 {
1149 return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
1150 }
1151
1152 extern __inline __m512i
1153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1154 _mm512_cvttpd_epi64 (__m512d __A)
1155 {
1156 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1157 (__v8di)
1158 _mm512_setzero_si512 (),
1159 (__mmask8) -1,
1160 _MM_FROUND_CUR_DIRECTION);
1161 }
1162
1163 extern __inline __m512i
1164 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1165 _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
1166 {
1167 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1168 (__v8di) __W,
1169 (__mmask8) __U,
1170 _MM_FROUND_CUR_DIRECTION);
1171 }
1172
1173 extern __inline __m512i
1174 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1175 _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A)
1176 {
1177 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1178 (__v8di)
1179 _mm512_setzero_si512 (),
1180 (__mmask8) __U,
1181 _MM_FROUND_CUR_DIRECTION);
1182 }
1183
1184 extern __inline __m512i
1185 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1186 _mm512_cvttpd_epu64 (__m512d __A)
1187 {
1188 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1189 (__v8di)
1190 _mm512_setzero_si512 (),
1191 (__mmask8) -1,
1192 _MM_FROUND_CUR_DIRECTION);
1193 }
1194
1195 extern __inline __m512i
1196 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1197 _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
1198 {
1199 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1200 (__v8di) __W,
1201 (__mmask8) __U,
1202 _MM_FROUND_CUR_DIRECTION);
1203 }
1204
1205 extern __inline __m512i
1206 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1207 _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A)
1208 {
1209 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1210 (__v8di)
1211 _mm512_setzero_si512 (),
1212 (__mmask8) __U,
1213 _MM_FROUND_CUR_DIRECTION);
1214 }
1215
1216 extern __inline __m512i
1217 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1218 _mm512_cvttps_epi64 (__m256 __A)
1219 {
1220 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1221 (__v8di)
1222 _mm512_setzero_si512 (),
1223 (__mmask8) -1,
1224 _MM_FROUND_CUR_DIRECTION);
1225 }
1226
1227 extern __inline __m512i
1228 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1229 _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
1230 {
1231 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1232 (__v8di) __W,
1233 (__mmask8) __U,
1234 _MM_FROUND_CUR_DIRECTION);
1235 }
1236
1237 extern __inline __m512i
1238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1239 _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A)
1240 {
1241 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1242 (__v8di)
1243 _mm512_setzero_si512 (),
1244 (__mmask8) __U,
1245 _MM_FROUND_CUR_DIRECTION);
1246 }
1247
1248 extern __inline __m512i
1249 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1250 _mm512_cvttps_epu64 (__m256 __A)
1251 {
1252 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1253 (__v8di)
1254 _mm512_setzero_si512 (),
1255 (__mmask8) -1,
1256 _MM_FROUND_CUR_DIRECTION);
1257 }
1258
1259 extern __inline __m512i
1260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1261 _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
1262 {
1263 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1264 (__v8di) __W,
1265 (__mmask8) __U,
1266 _MM_FROUND_CUR_DIRECTION);
1267 }
1268
1269 extern __inline __m512i
1270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1271 _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A)
1272 {
1273 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1274 (__v8di)
1275 _mm512_setzero_si512 (),
1276 (__mmask8) __U,
1277 _MM_FROUND_CUR_DIRECTION);
1278 }
1279
1280 extern __inline __m512i
1281 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1282 _mm512_cvtpd_epi64 (__m512d __A)
1283 {
1284 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1285 (__v8di)
1286 _mm512_setzero_si512 (),
1287 (__mmask8) -1,
1288 _MM_FROUND_CUR_DIRECTION);
1289 }
1290
1291 extern __inline __m512i
1292 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1293 _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
1294 {
1295 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1296 (__v8di) __W,
1297 (__mmask8) __U,
1298 _MM_FROUND_CUR_DIRECTION);
1299 }
1300
1301 extern __inline __m512i
1302 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1303 _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A)
1304 {
1305 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1306 (__v8di)
1307 _mm512_setzero_si512 (),
1308 (__mmask8) __U,
1309 _MM_FROUND_CUR_DIRECTION);
1310 }
1311
1312 extern __inline __m512i
1313 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1314 _mm512_cvtpd_epu64 (__m512d __A)
1315 {
1316 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1317 (__v8di)
1318 _mm512_setzero_si512 (),
1319 (__mmask8) -1,
1320 _MM_FROUND_CUR_DIRECTION);
1321 }
1322
1323 extern __inline __m512i
1324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1325 _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
1326 {
1327 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1328 (__v8di) __W,
1329 (__mmask8) __U,
1330 _MM_FROUND_CUR_DIRECTION);
1331 }
1332
1333 extern __inline __m512i
1334 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1335 _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A)
1336 {
1337 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1338 (__v8di)
1339 _mm512_setzero_si512 (),
1340 (__mmask8) __U,
1341 _MM_FROUND_CUR_DIRECTION);
1342 }
1343
1344 extern __inline __m512i
1345 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1346 _mm512_cvtps_epi64 (__m256 __A)
1347 {
1348 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1349 (__v8di)
1350 _mm512_setzero_si512 (),
1351 (__mmask8) -1,
1352 _MM_FROUND_CUR_DIRECTION);
1353 }
1354
1355 extern __inline __m512i
1356 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1357 _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
1358 {
1359 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1360 (__v8di) __W,
1361 (__mmask8) __U,
1362 _MM_FROUND_CUR_DIRECTION);
1363 }
1364
1365 extern __inline __m512i
1366 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1367 _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A)
1368 {
1369 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1370 (__v8di)
1371 _mm512_setzero_si512 (),
1372 (__mmask8) __U,
1373 _MM_FROUND_CUR_DIRECTION);
1374 }
1375
1376 extern __inline __m512i
1377 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1378 _mm512_cvtps_epu64 (__m256 __A)
1379 {
1380 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1381 (__v8di)
1382 _mm512_setzero_si512 (),
1383 (__mmask8) -1,
1384 _MM_FROUND_CUR_DIRECTION);
1385 }
1386
1387 extern __inline __m512i
1388 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1389 _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
1390 {
1391 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1392 (__v8di) __W,
1393 (__mmask8) __U,
1394 _MM_FROUND_CUR_DIRECTION);
1395 }
1396
1397 extern __inline __m512i
1398 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1399 _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A)
1400 {
1401 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1402 (__v8di)
1403 _mm512_setzero_si512 (),
1404 (__mmask8) __U,
1405 _MM_FROUND_CUR_DIRECTION);
1406 }
1407
1408 extern __inline __m256
1409 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1410 _mm512_cvtepi64_ps (__m512i __A)
1411 {
1412 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1413 (__v8sf)
1414 _mm256_setzero_ps (),
1415 (__mmask8) -1,
1416 _MM_FROUND_CUR_DIRECTION);
1417 }
1418
1419 extern __inline __m256
1420 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1421 _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A)
1422 {
1423 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1424 (__v8sf) __W,
1425 (__mmask8) __U,
1426 _MM_FROUND_CUR_DIRECTION);
1427 }
1428
1429 extern __inline __m256
1430 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1431 _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A)
1432 {
1433 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1434 (__v8sf)
1435 _mm256_setzero_ps (),
1436 (__mmask8) __U,
1437 _MM_FROUND_CUR_DIRECTION);
1438 }
1439
1440 extern __inline __m256
1441 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1442 _mm512_cvtepu64_ps (__m512i __A)
1443 {
1444 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1445 (__v8sf)
1446 _mm256_setzero_ps (),
1447 (__mmask8) -1,
1448 _MM_FROUND_CUR_DIRECTION);
1449 }
1450
1451 extern __inline __m256
1452 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1453 _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A)
1454 {
1455 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1456 (__v8sf) __W,
1457 (__mmask8) __U,
1458 _MM_FROUND_CUR_DIRECTION);
1459 }
1460
1461 extern __inline __m256
1462 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1463 _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A)
1464 {
1465 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1466 (__v8sf)
1467 _mm256_setzero_ps (),
1468 (__mmask8) __U,
1469 _MM_FROUND_CUR_DIRECTION);
1470 }
1471
1472 extern __inline __m512d
1473 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1474 _mm512_cvtepi64_pd (__m512i __A)
1475 {
1476 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1477 (__v8df)
1478 _mm512_setzero_pd (),
1479 (__mmask8) -1,
1480 _MM_FROUND_CUR_DIRECTION);
1481 }
1482
1483 extern __inline __m512d
1484 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1485 _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A)
1486 {
1487 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1488 (__v8df) __W,
1489 (__mmask8) __U,
1490 _MM_FROUND_CUR_DIRECTION);
1491 }
1492
1493 extern __inline __m512d
1494 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1495 _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A)
1496 {
1497 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1498 (__v8df)
1499 _mm512_setzero_pd (),
1500 (__mmask8) __U,
1501 _MM_FROUND_CUR_DIRECTION);
1502 }
1503
1504 extern __inline __m512d
1505 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1506 _mm512_cvtepu64_pd (__m512i __A)
1507 {
1508 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1509 (__v8df)
1510 _mm512_setzero_pd (),
1511 (__mmask8) -1,
1512 _MM_FROUND_CUR_DIRECTION);
1513 }
1514
1515 extern __inline __m512d
1516 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1517 _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A)
1518 {
1519 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1520 (__v8df) __W,
1521 (__mmask8) __U,
1522 _MM_FROUND_CUR_DIRECTION);
1523 }
1524
1525 extern __inline __m512d
1526 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1527 _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A)
1528 {
1529 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1530 (__v8df)
1531 _mm512_setzero_pd (),
1532 (__mmask8) __U,
1533 _MM_FROUND_CUR_DIRECTION);
1534 }
1535
1536 #ifdef __OPTIMIZE__
1537 extern __inline __m512d
1538 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1539 _mm512_range_pd (__m512d __A, __m512d __B, int __C)
1540 {
1541 return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
1542 (__v8df) __B, __C,
1543 (__v8df)
1544 _mm512_setzero_pd (),
1545 (__mmask8) -1,
1546 _MM_FROUND_CUR_DIRECTION);
1547 }
1548
1549 extern __inline __m512d
1550 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1551 _mm512_mask_range_pd (__m512d __W, __mmask8 __U,
1552 __m512d __A, __m512d __B, int __C)
1553 {
1554 return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
1555 (__v8df) __B, __C,
1556 (__v8df) __W,
1557 (__mmask8) __U,
1558 _MM_FROUND_CUR_DIRECTION);
1559 }
1560
1561 extern __inline __m512d
1562 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1563 _mm512_maskz_range_pd (__mmask8 __U, __m512d __A, __m512d __B, int __C)
1564 {
1565 return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
1566 (__v8df) __B, __C,
1567 (__v8df)
1568 _mm512_setzero_pd (),
1569 (__mmask8) __U,
1570 _MM_FROUND_CUR_DIRECTION);
1571 }
1572
1573 extern __inline __m512
1574 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1575 _mm512_range_ps (__m512 __A, __m512 __B, int __C)
1576 {
1577 return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
1578 (__v16sf) __B, __C,
1579 (__v16sf)
1580 _mm512_setzero_ps (),
1581 (__mmask16) -1,
1582 _MM_FROUND_CUR_DIRECTION);
1583 }
1584
1585 extern __inline __m512
1586 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1587 _mm512_mask_range_ps (__m512 __W, __mmask16 __U,
1588 __m512 __A, __m512 __B, int __C)
1589 {
1590 return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
1591 (__v16sf) __B, __C,
1592 (__v16sf) __W,
1593 (__mmask16) __U,
1594 _MM_FROUND_CUR_DIRECTION);
1595 }
1596
1597 extern __inline __m512
1598 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1599 _mm512_maskz_range_ps (__mmask16 __U, __m512 __A, __m512 __B, int __C)
1600 {
1601 return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
1602 (__v16sf) __B, __C,
1603 (__v16sf)
1604 _mm512_setzero_ps (),
1605 (__mmask16) __U,
1606 _MM_FROUND_CUR_DIRECTION);
1607 }
1608
1609 extern __inline __m512i
1610 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1611 _mm512_cvtt_roundpd_epi64 (__m512d __A, const int __R)
1612 {
1613 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1614 (__v8di)
1615 _mm512_setzero_si512 (),
1616 (__mmask8) -1,
1617 __R);
1618 }
1619
1620 extern __inline __m512i
1621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1622 _mm512_mask_cvtt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
1623 const int __R)
1624 {
1625 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1626 (__v8di) __W,
1627 (__mmask8) __U,
1628 __R);
1629 }
1630
1631 extern __inline __m512i
1632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1633 _mm512_maskz_cvtt_roundpd_epi64 (__mmask8 __U, __m512d __A,
1634 const int __R)
1635 {
1636 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
1637 (__v8di)
1638 _mm512_setzero_si512 (),
1639 (__mmask8) __U,
1640 __R);
1641 }
1642
1643 extern __inline __m512i
1644 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1645 _mm512_cvtt_roundpd_epu64 (__m512d __A, const int __R)
1646 {
1647 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1648 (__v8di)
1649 _mm512_setzero_si512 (),
1650 (__mmask8) -1,
1651 __R);
1652 }
1653
1654 extern __inline __m512i
1655 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1656 _mm512_mask_cvtt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
1657 const int __R)
1658 {
1659 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1660 (__v8di) __W,
1661 (__mmask8) __U,
1662 __R);
1663 }
1664
1665 extern __inline __m512i
1666 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1667 _mm512_maskz_cvtt_roundpd_epu64 (__mmask8 __U, __m512d __A,
1668 const int __R)
1669 {
1670 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
1671 (__v8di)
1672 _mm512_setzero_si512 (),
1673 (__mmask8) __U,
1674 __R);
1675 }
1676
1677 extern __inline __m512i
1678 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1679 _mm512_cvtt_roundps_epi64 (__m256 __A, const int __R)
1680 {
1681 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1682 (__v8di)
1683 _mm512_setzero_si512 (),
1684 (__mmask8) -1,
1685 __R);
1686 }
1687
1688 extern __inline __m512i
1689 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1690 _mm512_mask_cvtt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
1691 const int __R)
1692 {
1693 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1694 (__v8di) __W,
1695 (__mmask8) __U,
1696 __R);
1697 }
1698
1699 extern __inline __m512i
1700 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1701 _mm512_maskz_cvtt_roundps_epi64 (__mmask8 __U, __m256 __A,
1702 const int __R)
1703 {
1704 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
1705 (__v8di)
1706 _mm512_setzero_si512 (),
1707 (__mmask8) __U,
1708 __R);
1709 }
1710
1711 extern __inline __m512i
1712 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1713 _mm512_cvtt_roundps_epu64 (__m256 __A, const int __R)
1714 {
1715 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1716 (__v8di)
1717 _mm512_setzero_si512 (),
1718 (__mmask8) -1,
1719 __R);
1720 }
1721
1722 extern __inline __m512i
1723 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1724 _mm512_mask_cvtt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
1725 const int __R)
1726 {
1727 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1728 (__v8di) __W,
1729 (__mmask8) __U,
1730 __R);
1731 }
1732
1733 extern __inline __m512i
1734 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1735 _mm512_maskz_cvtt_roundps_epu64 (__mmask8 __U, __m256 __A,
1736 const int __R)
1737 {
1738 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
1739 (__v8di)
1740 _mm512_setzero_si512 (),
1741 (__mmask8) __U,
1742 __R);
1743 }
1744
1745 extern __inline __m512i
1746 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1747 _mm512_cvt_roundpd_epi64 (__m512d __A, const int __R)
1748 {
1749 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1750 (__v8di)
1751 _mm512_setzero_si512 (),
1752 (__mmask8) -1,
1753 __R);
1754 }
1755
1756 extern __inline __m512i
1757 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1758 _mm512_mask_cvt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
1759 const int __R)
1760 {
1761 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1762 (__v8di) __W,
1763 (__mmask8) __U,
1764 __R);
1765 }
1766
1767 extern __inline __m512i
1768 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1769 _mm512_maskz_cvt_roundpd_epi64 (__mmask8 __U, __m512d __A,
1770 const int __R)
1771 {
1772 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
1773 (__v8di)
1774 _mm512_setzero_si512 (),
1775 (__mmask8) __U,
1776 __R);
1777 }
1778
1779 extern __inline __m512i
1780 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1781 _mm512_cvt_roundpd_epu64 (__m512d __A, const int __R)
1782 {
1783 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1784 (__v8di)
1785 _mm512_setzero_si512 (),
1786 (__mmask8) -1,
1787 __R);
1788 }
1789
1790 extern __inline __m512i
1791 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1792 _mm512_mask_cvt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
1793 const int __R)
1794 {
1795 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1796 (__v8di) __W,
1797 (__mmask8) __U,
1798 __R);
1799 }
1800
1801 extern __inline __m512i
1802 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1803 _mm512_maskz_cvt_roundpd_epu64 (__mmask8 __U, __m512d __A,
1804 const int __R)
1805 {
1806 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
1807 (__v8di)
1808 _mm512_setzero_si512 (),
1809 (__mmask8) __U,
1810 __R);
1811 }
1812
1813 extern __inline __m512i
1814 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1815 _mm512_cvt_roundps_epi64 (__m256 __A, const int __R)
1816 {
1817 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1818 (__v8di)
1819 _mm512_setzero_si512 (),
1820 (__mmask8) -1,
1821 __R);
1822 }
1823
1824 extern __inline __m512i
1825 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1826 _mm512_mask_cvt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
1827 const int __R)
1828 {
1829 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1830 (__v8di) __W,
1831 (__mmask8) __U,
1832 __R);
1833 }
1834
1835 extern __inline __m512i
1836 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1837 _mm512_maskz_cvt_roundps_epi64 (__mmask8 __U, __m256 __A,
1838 const int __R)
1839 {
1840 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
1841 (__v8di)
1842 _mm512_setzero_si512 (),
1843 (__mmask8) __U,
1844 __R);
1845 }
1846
1847 extern __inline __m512i
1848 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1849 _mm512_cvt_roundps_epu64 (__m256 __A, const int __R)
1850 {
1851 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1852 (__v8di)
1853 _mm512_setzero_si512 (),
1854 (__mmask8) -1,
1855 __R);
1856 }
1857
1858 extern __inline __m512i
1859 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1860 _mm512_mask_cvt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
1861 const int __R)
1862 {
1863 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1864 (__v8di) __W,
1865 (__mmask8) __U,
1866 __R);
1867 }
1868
1869 extern __inline __m512i
1870 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1871 _mm512_maskz_cvt_roundps_epu64 (__mmask8 __U, __m256 __A,
1872 const int __R)
1873 {
1874 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
1875 (__v8di)
1876 _mm512_setzero_si512 (),
1877 (__mmask8) __U,
1878 __R);
1879 }
1880
1881 extern __inline __m256
1882 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1883 _mm512_cvt_roundepi64_ps (__m512i __A, const int __R)
1884 {
1885 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1886 (__v8sf)
1887 _mm256_setzero_ps (),
1888 (__mmask8) -1,
1889 __R);
1890 }
1891
1892 extern __inline __m256
1893 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1894 _mm512_mask_cvt_roundepi64_ps (__m256 __W, __mmask8 __U, __m512i __A,
1895 const int __R)
1896 {
1897 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1898 (__v8sf) __W,
1899 (__mmask8) __U,
1900 __R);
1901 }
1902
1903 extern __inline __m256
1904 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1905 _mm512_maskz_cvt_roundepi64_ps (__mmask8 __U, __m512i __A,
1906 const int __R)
1907 {
1908 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
1909 (__v8sf)
1910 _mm256_setzero_ps (),
1911 (__mmask8) __U,
1912 __R);
1913 }
1914
1915 extern __inline __m256
1916 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1917 _mm512_cvt_roundepu64_ps (__m512i __A, const int __R)
1918 {
1919 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1920 (__v8sf)
1921 _mm256_setzero_ps (),
1922 (__mmask8) -1,
1923 __R);
1924 }
1925
1926 extern __inline __m256
1927 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1928 _mm512_mask_cvt_roundepu64_ps (__m256 __W, __mmask8 __U, __m512i __A,
1929 const int __R)
1930 {
1931 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1932 (__v8sf) __W,
1933 (__mmask8) __U,
1934 __R);
1935 }
1936
1937 extern __inline __m256
1938 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1939 _mm512_maskz_cvt_roundepu64_ps (__mmask8 __U, __m512i __A,
1940 const int __R)
1941 {
1942 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
1943 (__v8sf)
1944 _mm256_setzero_ps (),
1945 (__mmask8) __U,
1946 __R);
1947 }
1948
1949 extern __inline __m512d
1950 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1951 _mm512_cvt_roundepi64_pd (__m512i __A, const int __R)
1952 {
1953 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1954 (__v8df)
1955 _mm512_setzero_pd (),
1956 (__mmask8) -1,
1957 __R);
1958 }
1959
1960 extern __inline __m512d
1961 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1962 _mm512_mask_cvt_roundepi64_pd (__m512d __W, __mmask8 __U, __m512i __A,
1963 const int __R)
1964 {
1965 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1966 (__v8df) __W,
1967 (__mmask8) __U,
1968 __R);
1969 }
1970
1971 extern __inline __m512d
1972 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1973 _mm512_maskz_cvt_roundepi64_pd (__mmask8 __U, __m512i __A,
1974 const int __R)
1975 {
1976 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
1977 (__v8df)
1978 _mm512_setzero_pd (),
1979 (__mmask8) __U,
1980 __R);
1981 }
1982
1983 extern __inline __m512d
1984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1985 _mm512_cvt_roundepu64_pd (__m512i __A, const int __R)
1986 {
1987 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
1988 (__v8df)
1989 _mm512_setzero_pd (),
1990 (__mmask8) -1,
1991 __R);
1992 }
1993
1994 extern __inline __m512d
1995 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1996 _mm512_mask_cvt_roundepu64_pd (__m512d __W, __mmask8 __U, __m512i __A,
1997 const int __R)
1998 {
1999 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
2000 (__v8df) __W,
2001 (__mmask8) __U,
2002 __R);
2003 }
2004
2005 extern __inline __m512d
2006 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2007 _mm512_maskz_cvt_roundepu64_pd (__mmask8 __U, __m512i __A,
2008 const int __R)
2009 {
2010 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
2011 (__v8df)
2012 _mm512_setzero_pd (),
2013 (__mmask8) __U,
2014 __R);
2015 }
2016
2017 extern __inline __m512d
2018 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2019 _mm512_reduce_pd (__m512d __A, int __B)
2020 {
2021 return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
2022 (__v8df)
2023 _mm512_setzero_pd (),
2024 (__mmask8) -1);
2025 }
2026
2027 extern __inline __m512d
2028 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2029 _mm512_reduce_round_pd (__m512d __A, int __B, const int __R)
2030 {
2031 return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
2032 __B,
2033 (__v8df)
2034 _mm512_setzero_pd (),
2035 (__mmask8) -1, __R);
2036 }
2037
2038 extern __inline __m512d
2039 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2040 _mm512_mask_reduce_pd (__m512d __W, __mmask8 __U, __m512d __A, int __B)
2041 {
2042 return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
2043 (__v8df) __W,
2044 (__mmask8) __U);
2045 }
2046
2047 extern __inline __m512d
2048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2049 _mm512_mask_reduce_round_pd (__m512d __W, __mmask8 __U, __m512d __A,
2050 int __B, const int __R)
2051 {
2052 return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
2053 __B,
2054 (__v8df) __W,
2055 __U, __R);
2056 }
2057
2058 extern __inline __m512d
2059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2060 _mm512_maskz_reduce_pd (__mmask8 __U, __m512d __A, int __B)
2061 {
2062 return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
2063 (__v8df)
2064 _mm512_setzero_pd (),
2065 (__mmask8) __U);
2066 }
2067
2068 extern __inline __m512d
2069 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2070 _mm512_maskz_reduce_round_pd (__mmask8 __U, __m512d __A, int __B,
2071 const int __R)
2072 {
2073 return (__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df) __A,
2074 __B,
2075 (__v8df)
2076 _mm512_setzero_pd (),
2077 __U, __R);
2078 }
2079
2080 extern __inline __m512
2081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2082 _mm512_reduce_ps (__m512 __A, int __B)
2083 {
2084 return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
2085 (__v16sf)
2086 _mm512_setzero_ps (),
2087 (__mmask16) -1);
2088 }
2089
2090 extern __inline __m512
2091 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2092 _mm512_reduce_round_ps (__m512 __A, int __B, const int __R)
2093 {
2094 return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
2095 __B,
2096 (__v16sf)
2097 _mm512_setzero_ps (),
2098 (__mmask16) -1, __R);
2099 }
2100
2101 extern __inline __m512
2102 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2103 _mm512_mask_reduce_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B)
2104 {
2105 return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
2106 (__v16sf) __W,
2107 (__mmask16) __U);
2108 }
2109
2110 extern __inline __m512
2111 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2112 _mm512_mask_reduce_round_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B,
2113 const int __R)
2114 {
2115 return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
2116 __B,
2117 (__v16sf) __W,
2118 __U, __R);
2119 }
2120
2121 extern __inline __m512
2122 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2123 _mm512_maskz_reduce_ps (__mmask16 __U, __m512 __A, int __B)
2124 {
2125 return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
2126 (__v16sf)
2127 _mm512_setzero_ps (),
2128 (__mmask16) __U);
2129 }
2130
2131 extern __inline __m512
2132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2133 _mm512_maskz_reduce_round_ps (__mmask16 __U, __m512 __A, int __B,
2134 const int __R)
2135 {
2136 return (__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf) __A,
2137 __B,
2138 (__v16sf)
2139 _mm512_setzero_ps (),
2140 __U, __R);
2141 }
2142
2143 extern __inline __m256
2144 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2145 _mm512_extractf32x8_ps (__m512 __A, const int __imm)
2146 {
2147 return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
2148 __imm,
2149 (__v8sf)
2150 _mm256_setzero_ps (),
2151 (__mmask8) -1);
2152 }
2153
2154 extern __inline __m256
2155 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2156 _mm512_mask_extractf32x8_ps (__m256 __W, __mmask8 __U, __m512 __A,
2157 const int __imm)
2158 {
2159 return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
2160 __imm,
2161 (__v8sf) __W,
2162 (__mmask8) __U);
2163 }
2164
2165 extern __inline __m256
2166 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2167 _mm512_maskz_extractf32x8_ps (__mmask8 __U, __m512 __A,
2168 const int __imm)
2169 {
2170 return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
2171 __imm,
2172 (__v8sf)
2173 _mm256_setzero_ps (),
2174 (__mmask8) __U);
2175 }
2176
2177 extern __inline __m128d
2178 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2179 _mm512_extractf64x2_pd (__m512d __A, const int __imm)
2180 {
2181 return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
2182 __imm,
2183 (__v2df)
2184 _mm_setzero_pd (),
2185 (__mmask8) -1);
2186 }
2187
2188 extern __inline __m128d
2189 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2190 _mm512_mask_extractf64x2_pd (__m128d __W, __mmask8 __U, __m512d __A,
2191 const int __imm)
2192 {
2193 return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
2194 __imm,
2195 (__v2df) __W,
2196 (__mmask8)
2197 __U);
2198 }
2199
2200 extern __inline __m128d
2201 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2202 _mm512_maskz_extractf64x2_pd (__mmask8 __U, __m512d __A,
2203 const int __imm)
2204 {
2205 return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
2206 __imm,
2207 (__v2df)
2208 _mm_setzero_pd (),
2209 (__mmask8)
2210 __U);
2211 }
2212
2213 extern __inline __m256i
2214 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2215 _mm512_extracti32x8_epi32 (__m512i __A, const int __imm)
2216 {
2217 return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
2218 __imm,
2219 (__v8si)
2220 _mm256_setzero_si256 (),
2221 (__mmask8) -1);
2222 }
2223
2224 extern __inline __m256i
2225 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2226 _mm512_mask_extracti32x8_epi32 (__m256i __W, __mmask8 __U, __m512i __A,
2227 const int __imm)
2228 {
2229 return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
2230 __imm,
2231 (__v8si) __W,
2232 (__mmask8) __U);
2233 }
2234
2235 extern __inline __m256i
2236 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2237 _mm512_maskz_extracti32x8_epi32 (__mmask8 __U, __m512i __A,
2238 const int __imm)
2239 {
2240 return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
2241 __imm,
2242 (__v8si)
2243 _mm256_setzero_si256 (),
2244 (__mmask8) __U);
2245 }
2246
2247 extern __inline __m128i
2248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2249 _mm512_extracti64x2_epi64 (__m512i __A, const int __imm)
2250 {
2251 return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
2252 __imm,
2253 (__v2di)
2254 _mm_setzero_si128 (),
2255 (__mmask8) -1);
2256 }
2257
2258 extern __inline __m128i
2259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2260 _mm512_mask_extracti64x2_epi64 (__m128i __W, __mmask8 __U, __m512i __A,
2261 const int __imm)
2262 {
2263 return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
2264 __imm,
2265 (__v2di) __W,
2266 (__mmask8)
2267 __U);
2268 }
2269
2270 extern __inline __m128i
2271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2272 _mm512_maskz_extracti64x2_epi64 (__mmask8 __U, __m512i __A,
2273 const int __imm)
2274 {
2275 return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
2276 __imm,
2277 (__v2di)
2278 _mm_setzero_si128 (),
2279 (__mmask8)
2280 __U);
2281 }
2282
2283 extern __inline __m512d
2284 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2285 _mm512_range_round_pd (__m512d __A, __m512d __B, int __C,
2286 const int __R)
2287 {
2288 return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
2289 (__v8df) __B, __C,
2290 (__v8df)
2291 _mm512_setzero_pd (),
2292 (__mmask8) -1,
2293 __R);
2294 }
2295
2296 extern __inline __m512d
2297 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2298 _mm512_mask_range_round_pd (__m512d __W, __mmask8 __U,
2299 __m512d __A, __m512d __B, int __C,
2300 const int __R)
2301 {
2302 return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
2303 (__v8df) __B, __C,
2304 (__v8df) __W,
2305 (__mmask8) __U,
2306 __R);
2307 }
2308
2309 extern __inline __m512d
2310 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2311 _mm512_maskz_range_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
2312 int __C, const int __R)
2313 {
2314 return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
2315 (__v8df) __B, __C,
2316 (__v8df)
2317 _mm512_setzero_pd (),
2318 (__mmask8) __U,
2319 __R);
2320 }
2321
2322 extern __inline __m512
2323 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2324 _mm512_range_round_ps (__m512 __A, __m512 __B, int __C, const int __R)
2325 {
2326 return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
2327 (__v16sf) __B, __C,
2328 (__v16sf)
2329 _mm512_setzero_ps (),
2330 (__mmask16) -1,
2331 __R);
2332 }
2333
2334 extern __inline __m512
2335 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2336 _mm512_mask_range_round_ps (__m512 __W, __mmask16 __U,
2337 __m512 __A, __m512 __B, int __C,
2338 const int __R)
2339 {
2340 return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
2341 (__v16sf) __B, __C,
2342 (__v16sf) __W,
2343 (__mmask16) __U,
2344 __R);
2345 }
2346
2347 extern __inline __m512
2348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2349 _mm512_maskz_range_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
2350 int __C, const int __R)
2351 {
2352 return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
2353 (__v16sf) __B, __C,
2354 (__v16sf)
2355 _mm512_setzero_ps (),
2356 (__mmask16) __U,
2357 __R);
2358 }
2359
2360 extern __inline __m512i
2361 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2362 _mm512_inserti32x8 (__m512i __A, __m256i __B, const int __imm)
2363 {
2364 return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
2365 (__v8si) __B,
2366 __imm,
2367 (__v16si)
2368 _mm512_setzero_si512 (),
2369 (__mmask16) -1);
2370 }
2371
2372 extern __inline __m512i
2373 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2374 _mm512_mask_inserti32x8 (__m512i __W, __mmask16 __U, __m512i __A,
2375 __m256i __B, const int __imm)
2376 {
2377 return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
2378 (__v8si) __B,
2379 __imm,
2380 (__v16si) __W,
2381 (__mmask16) __U);
2382 }
2383
2384 extern __inline __m512i
2385 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2386 _mm512_maskz_inserti32x8 (__mmask16 __U, __m512i __A, __m256i __B,
2387 const int __imm)
2388 {
2389 return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
2390 (__v8si) __B,
2391 __imm,
2392 (__v16si)
2393 _mm512_setzero_si512 (),
2394 (__mmask16) __U);
2395 }
2396
2397 extern __inline __m512
2398 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2399 _mm512_insertf32x8 (__m512 __A, __m256 __B, const int __imm)
2400 {
2401 return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
2402 (__v8sf) __B,
2403 __imm,
2404 (__v16sf)
2405 _mm512_setzero_ps (),
2406 (__mmask16) -1);
2407 }
2408
2409 extern __inline __m512
2410 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2411 _mm512_mask_insertf32x8 (__m512 __W, __mmask16 __U, __m512 __A,
2412 __m256 __B, const int __imm)
2413 {
2414 return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
2415 (__v8sf) __B,
2416 __imm,
2417 (__v16sf) __W,
2418 (__mmask16) __U);
2419 }
2420
2421 extern __inline __m512
2422 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2423 _mm512_maskz_insertf32x8 (__mmask16 __U, __m512 __A, __m256 __B,
2424 const int __imm)
2425 {
2426 return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
2427 (__v8sf) __B,
2428 __imm,
2429 (__v16sf)
2430 _mm512_setzero_ps (),
2431 (__mmask16) __U);
2432 }
2433
2434 extern __inline __m512i
2435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2436 _mm512_inserti64x2 (__m512i __A, __m128i __B, const int __imm)
2437 {
2438 return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
2439 (__v2di) __B,
2440 __imm,
2441 (__v8di)
2442 _mm512_setzero_si512 (),
2443 (__mmask8) -1);
2444 }
2445
2446 extern __inline __m512i
2447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2448 _mm512_mask_inserti64x2 (__m512i __W, __mmask8 __U, __m512i __A,
2449 __m128i __B, const int __imm)
2450 {
2451 return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
2452 (__v2di) __B,
2453 __imm,
2454 (__v8di) __W,
2455 (__mmask8)
2456 __U);
2457 }
2458
2459 extern __inline __m512i
2460 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2461 _mm512_maskz_inserti64x2 (__mmask8 __U, __m512i __A, __m128i __B,
2462 const int __imm)
2463 {
2464 return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
2465 (__v2di) __B,
2466 __imm,
2467 (__v8di)
2468 _mm512_setzero_si512 (),
2469 (__mmask8)
2470 __U);
2471 }
2472
2473 extern __inline __m512d
2474 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2475 _mm512_insertf64x2 (__m512d __A, __m128d __B, const int __imm)
2476 {
2477 return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
2478 (__v2df) __B,
2479 __imm,
2480 (__v8df)
2481 _mm512_setzero_pd (),
2482 (__mmask8) -1);
2483 }
2484
2485 extern __inline __m512d
2486 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2487 _mm512_mask_insertf64x2 (__m512d __W, __mmask8 __U, __m512d __A,
2488 __m128d __B, const int __imm)
2489 {
2490 return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
2491 (__v2df) __B,
2492 __imm,
2493 (__v8df) __W,
2494 (__mmask8)
2495 __U);
2496 }
2497
2498 extern __inline __m512d
2499 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2500 _mm512_maskz_insertf64x2 (__mmask8 __U, __m512d __A, __m128d __B,
2501 const int __imm)
2502 {
2503 return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
2504 (__v2df) __B,
2505 __imm,
2506 (__v8df)
2507 _mm512_setzero_pd (),
2508 (__mmask8)
2509 __U);
2510 }
2511
2512 extern __inline __mmask8
2513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2514 _mm512_mask_fpclass_pd_mask (__mmask8 __U, __m512d __A,
2515 const int __imm)
2516 {
2517 return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
2518 __imm, __U);
2519 }
2520
2521 extern __inline __mmask8
2522 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2523 _mm512_fpclass_pd_mask (__m512d __A, const int __imm)
2524 {
2525 return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
2526 __imm,
2527 (__mmask8) -1);
2528 }
2529
2530 extern __inline __mmask16
2531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2532 _mm512_mask_fpclass_ps_mask (__mmask16 __U, __m512 __A,
2533 const int __imm)
2534 {
2535 return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
2536 __imm, __U);
2537 }
2538
2539 extern __inline __mmask16
2540 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2541 _mm512_fpclass_ps_mask (__m512 __A, const int __imm)
2542 {
2543 return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
2544 __imm,
2545 (__mmask16) -1);
2546 }
2547
2548 #else
2549 #define _mm512_cvtt_roundpd_epi64(A, B) \
2550 ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di) \
2551 _mm512_setzero_si512 (), \
2552 -1, (B)))
2553
2554 #define _mm512_mask_cvtt_roundpd_epi64(W, U, A, B) \
2555 ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di)(W), (U), (B)))
2556
2557 #define _mm512_maskz_cvtt_roundpd_epi64(U, A, B) \
2558 ((__m512i)__builtin_ia32_cvttpd2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2559
2560 #define _mm512_cvtt_roundpd_epu64(A, B) \
2561 ((__m512i)__builtin_ia32_cvttpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2562
2563 #define _mm512_mask_cvtt_roundpd_epu64(W, U, A, B) \
2564 ((__m512i)__builtin_ia32_cvttpd2uqq512_mask ((A), (__v8di)(W), (U), (B)))
2565
2566 #define _mm512_maskz_cvtt_roundpd_epu64(U, A, B) \
2567 ((__m512i)__builtin_ia32_cvttpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2568
2569 #define _mm512_cvtt_roundps_epi64(A, B) \
2570 ((__m512i)__builtin_ia32_cvttps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2571
2572 #define _mm512_mask_cvtt_roundps_epi64(W, U, A, B) \
2573 ((__m512i)__builtin_ia32_cvttps2qq512_mask ((A), (__v8di)(W), (U), (B)))
2574
2575 #define _mm512_maskz_cvtt_roundps_epi64(U, A, B) \
2576 ((__m512i)__builtin_ia32_cvttps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2577
2578 #define _mm512_cvtt_roundps_epu64(A, B) \
2579 ((__m512i)__builtin_ia32_cvttps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2580
2581 #define _mm512_mask_cvtt_roundps_epu64(W, U, A, B) \
2582 ((__m512i)__builtin_ia32_cvttps2uqq512_mask ((A), (__v8di)(W), (U), (B)))
2583
2584 #define _mm512_maskz_cvtt_roundps_epu64(U, A, B) \
2585 ((__m512i)__builtin_ia32_cvttps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2586
2587 #define _mm512_cvt_roundpd_epi64(A, B) \
2588 ((__m512i)__builtin_ia32_cvtpd2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2589
2590 #define _mm512_mask_cvt_roundpd_epi64(W, U, A, B) \
2591 ((__m512i)__builtin_ia32_cvtpd2qq512_mask ((A), (__v8di)(W), (U), (B)))
2592
2593 #define _mm512_maskz_cvt_roundpd_epi64(U, A, B) \
2594 ((__m512i)__builtin_ia32_cvtpd2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2595
2596 #define _mm512_cvt_roundpd_epu64(A, B) \
2597 ((__m512i)__builtin_ia32_cvtpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2598
2599 #define _mm512_mask_cvt_roundpd_epu64(W, U, A, B) \
2600 ((__m512i)__builtin_ia32_cvtpd2uqq512_mask ((A), (__v8di)(W), (U), (B)))
2601
2602 #define _mm512_maskz_cvt_roundpd_epu64(U, A, B) \
2603 ((__m512i)__builtin_ia32_cvtpd2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2604
2605 #define _mm512_cvt_roundps_epi64(A, B) \
2606 ((__m512i)__builtin_ia32_cvtps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2607
2608 #define _mm512_mask_cvt_roundps_epi64(W, U, A, B) \
2609 ((__m512i)__builtin_ia32_cvtps2qq512_mask ((A), (__v8di)(W), (U), (B)))
2610
2611 #define _mm512_maskz_cvt_roundps_epi64(U, A, B) \
2612 ((__m512i)__builtin_ia32_cvtps2qq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2613
2614 #define _mm512_cvt_roundps_epu64(A, B) \
2615 ((__m512i)__builtin_ia32_cvtps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
2616
2617 #define _mm512_mask_cvt_roundps_epu64(W, U, A, B) \
2618 ((__m512i)__builtin_ia32_cvtps2uqq512_mask ((A), (__v8di)(W), (U), (B)))
2619
2620 #define _mm512_maskz_cvt_roundps_epu64(U, A, B) \
2621 ((__m512i)__builtin_ia32_cvtps2uqq512_mask ((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
2622
2623 #define _mm512_cvt_roundepi64_ps(A, B) \
2624 ((__m256)__builtin_ia32_cvtqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), -1, (B)))
2625
2626 #define _mm512_mask_cvt_roundepi64_ps(W, U, A, B) \
2627 ((__m256)__builtin_ia32_cvtqq2ps512_mask ((__v8di)(A), (W), (U), (B)))
2628
2629 #define _mm512_maskz_cvt_roundepi64_ps(U, A, B) \
2630 ((__m256)__builtin_ia32_cvtqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), (U), (B)))
2631
2632 #define _mm512_cvt_roundepu64_ps(A, B) \
2633 ((__m256)__builtin_ia32_cvtuqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), -1, (B)))
2634
2635 #define _mm512_mask_cvt_roundepu64_ps(W, U, A, B) \
2636 ((__m256)__builtin_ia32_cvtuqq2ps512_mask ((__v8di)(A), (W), (U), (B)))
2637
2638 #define _mm512_maskz_cvt_roundepu64_ps(U, A, B) \
2639 ((__m256)__builtin_ia32_cvtuqq2ps512_mask ((__v8di)(A), (__v8sf)_mm256_setzero_ps (), (U), (B)))
2640
2641 #define _mm512_cvt_roundepi64_pd(A, B) \
2642 ((__m512d)__builtin_ia32_cvtqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), -1, (B)))
2643
2644 #define _mm512_mask_cvt_roundepi64_pd(W, U, A, B) \
2645 ((__m512d)__builtin_ia32_cvtqq2pd512_mask ((__v8di)(A), (W), (U), (B)))
2646
2647 #define _mm512_maskz_cvt_roundepi64_pd(U, A, B) \
2648 ((__m512d)__builtin_ia32_cvtqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), (U), (B)))
2649
2650 #define _mm512_cvt_roundepu64_pd(A, B) \
2651 ((__m512d)__builtin_ia32_cvtuqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), -1, (B)))
2652
2653 #define _mm512_mask_cvt_roundepu64_pd(W, U, A, B) \
2654 ((__m512d)__builtin_ia32_cvtuqq2pd512_mask ((__v8di)(A), (W), (U), (B)))
2655
2656 #define _mm512_maskz_cvt_roundepu64_pd(U, A, B) \
2657 ((__m512d)__builtin_ia32_cvtuqq2pd512_mask ((__v8di)(A), (__v8df)_mm512_setzero_pd (), (U), (B)))
2658
2659 #define _mm512_reduce_pd(A, B) \
2660 ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A), \
2661 (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)-1))
2662
2663 #define _mm512_reduce_round_pd(A, B, R) \
2664 ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
2665 (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)-1, (R)))
2666
2667 #define _mm512_mask_reduce_pd(W, U, A, B) \
2668 ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A), \
2669 (int)(B), (__v8df)(__m512d)(W), (__mmask8)(U)))
2670
2671 #define _mm512_mask_reduce_round_pd(W, U, A, B, R) \
2672 ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
2673 (int)(B), (__v8df)(__m512d)(W), (U), (R)))
2674
2675 #define _mm512_maskz_reduce_pd(U, A, B) \
2676 ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A), \
2677 (int)(B), (__v8df)_mm512_setzero_pd (), (__mmask8)(U)))
2678
2679 #define _mm512_maskz_reduce_round_pd(U, A, B, R) \
2680 ((__m512d) __builtin_ia32_reducepd512_mask_round ((__v8df)(__m512d)(A),\
2681 (int)(B), (__v8df)_mm512_setzero_pd (), (U), (R)))
2682
2683 #define _mm512_reduce_ps(A, B) \
2684 ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A), \
2685 (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)-1))
2686
2687 #define _mm512_reduce_round_ps(A, B, R) \
2688 ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
2689 (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, (R)))
2690
2691 #define _mm512_mask_reduce_ps(W, U, A, B) \
2692 ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A), \
2693 (int)(B), (__v16sf)(__m512)(W), (__mmask16)(U)))
2694
2695 #define _mm512_mask_reduce_round_ps(W, U, A, B, R) \
2696 ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
2697 (int)(B), (__v16sf)(__m512)(W), (U), (R)))
2698
2699 #define _mm512_maskz_reduce_ps(U, A, B) \
2700 ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A), \
2701 (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)(U)))
2702
2703 #define _mm512_maskz_reduce_round_ps(U, A, B, R) \
2704 ((__m512) __builtin_ia32_reduceps512_mask_round ((__v16sf)(__m512)(A),\
2705 (int)(B), (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), (R)))
2706
2707 #define _mm512_extractf32x8_ps(X, C) \
2708 ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X), \
2709 (int) (C), (__v8sf)(__m256) _mm256_setzero_ps (), (__mmask8)-1))
2710
2711 #define _mm512_mask_extractf32x8_ps(W, U, X, C) \
2712 ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X), \
2713 (int) (C), (__v8sf)(__m256) (W), (__mmask8) (U)))
2714
2715 #define _mm512_maskz_extractf32x8_ps(U, X, C) \
2716 ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X), \
2717 (int) (C), (__v8sf)(__m256) _mm256_setzero_ps (), (__mmask8) (U)))
2718
2719 #define _mm512_extractf64x2_pd(X, C) \
2720 ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
2721 (int) (C), (__v2df)(__m128d) _mm_setzero_pd (), (__mmask8)-1))
2722
2723 #define _mm512_mask_extractf64x2_pd(W, U, X, C) \
2724 ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
2725 (int) (C), (__v2df)(__m128d) (W), (__mmask8) (U)))
2726
2727 #define _mm512_maskz_extractf64x2_pd(U, X, C) \
2728 ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
2729 (int) (C), (__v2df)(__m128d) _mm_setzero_pd (), (__mmask8) (U)))
2730
2731 #define _mm512_extracti32x8_epi32(X, C) \
2732 ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X), \
2733 (int) (C), (__v8si)(__m256i) _mm256_setzero_si256 (), (__mmask8)-1))
2734
2735 #define _mm512_mask_extracti32x8_epi32(W, U, X, C) \
2736 ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X), \
2737 (int) (C), (__v8si)(__m256i) (W), (__mmask8) (U)))
2738
2739 #define _mm512_maskz_extracti32x8_epi32(U, X, C) \
2740 ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X), \
2741 (int) (C), (__v8si)(__m256i) _mm256_setzero_si256 (), (__mmask8) (U)))
2742
2743 #define _mm512_extracti64x2_epi64(X, C) \
2744 ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
2745 (int) (C), (__v2di)(__m128i) _mm_setzero_si128 (), (__mmask8)-1))
2746
2747 #define _mm512_mask_extracti64x2_epi64(W, U, X, C) \
2748 ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
2749 (int) (C), (__v2di)(__m128i) (W), (__mmask8) (U)))
2750
2751 #define _mm512_maskz_extracti64x2_epi64(U, X, C) \
2752 ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
2753 (int) (C), (__v2di)(__m128i) _mm_setzero_si128 (), (__mmask8) (U)))
2754
2755 #define _mm512_range_pd(A, B, C) \
2756 ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
2757 (__v8df)(__m512d)(B), (int)(C), \
2758 (__v8df)_mm512_setzero_pd (), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
2759
2760 #define _mm512_mask_range_pd(W, U, A, B, C) \
2761 ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
2762 (__v8df)(__m512d)(B), (int)(C), \
2763 (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
2764
2765 #define _mm512_maskz_range_pd(U, A, B, C) \
2766 ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
2767 (__v8df)(__m512d)(B), (int)(C), \
2768 (__v8df)_mm512_setzero_pd (), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
2769
2770 #define _mm512_range_ps(A, B, C) \
2771 ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
2772 (__v16sf)(__m512)(B), (int)(C), \
2773 (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
2774
2775 #define _mm512_mask_range_ps(W, U, A, B, C) \
2776 ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
2777 (__v16sf)(__m512)(B), (int)(C), \
2778 (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
2779
2780 #define _mm512_maskz_range_ps(U, A, B, C) \
2781 ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
2782 (__v16sf)(__m512)(B), (int)(C), \
2783 (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
2784
2785 #define _mm512_range_round_pd(A, B, C, R) \
2786 ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
2787 (__v8df)(__m512d)(B), (int)(C), \
2788 (__v8df)_mm512_setzero_pd (), (__mmask8)-1, (R)))
2789
2790 #define _mm512_mask_range_round_pd(W, U, A, B, C, R) \
2791 ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
2792 (__v8df)(__m512d)(B), (int)(C), \
2793 (__v8df)(__m512d)(W), (__mmask8)(U), (R)))
2794
2795 #define _mm512_maskz_range_round_pd(U, A, B, C, R) \
2796 ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A), \
2797 (__v8df)(__m512d)(B), (int)(C), \
2798 (__v8df)_mm512_setzero_pd (), (__mmask8)(U), (R)))
2799
2800 #define _mm512_range_round_ps(A, B, C, R) \
2801 ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
2802 (__v16sf)(__m512)(B), (int)(C), \
2803 (__v16sf)_mm512_setzero_ps (), (__mmask16)-1, (R)))
2804
2805 #define _mm512_mask_range_round_ps(W, U, A, B, C, R) \
2806 ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
2807 (__v16sf)(__m512)(B), (int)(C), \
2808 (__v16sf)(__m512)(W), (__mmask16)(U), (R)))
2809
2810 #define _mm512_maskz_range_round_ps(U, A, B, C, R) \
2811 ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A), \
2812 (__v16sf)(__m512)(B), (int)(C), \
2813 (__v16sf)_mm512_setzero_ps (), (__mmask16)(U), (R)))
2814
2815 #define _mm512_insertf64x2(X, Y, C) \
2816 ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
2817 (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (X), \
2818 (__mmask8)-1))
2819
2820 #define _mm512_mask_insertf64x2(W, U, X, Y, C) \
2821 ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
2822 (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (W), \
2823 (__mmask8) (U)))
2824
2825 #define _mm512_maskz_insertf64x2(U, X, Y, C) \
2826 ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
2827 (__v2df)(__m128d) (Y), (int) (C), \
2828 (__v8df)(__m512d) _mm512_setzero_pd (), (__mmask8) (U)))
2829
2830 #define _mm512_inserti64x2(X, Y, C) \
2831 ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
2832 (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (X), (__mmask8)-1))
2833
2834 #define _mm512_mask_inserti64x2(W, U, X, Y, C) \
2835 ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
2836 (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (W), \
2837 (__mmask8) (U)))
2838
2839 #define _mm512_maskz_inserti64x2(U, X, Y, C) \
2840 ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
2841 (__v2di)(__m128i) (Y), (int) (C), \
2842 (__v8di)(__m512i) _mm512_setzero_si512 (), (__mmask8) (U)))
2843
2844 #define _mm512_insertf32x8(X, Y, C) \
2845 ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X), \
2846 (__v8sf)(__m256) (Y), (int) (C),\
2847 (__v16sf)(__m512)_mm512_setzero_ps (),\
2848 (__mmask16)-1))
2849
2850 #define _mm512_mask_insertf32x8(W, U, X, Y, C) \
2851 ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X), \
2852 (__v8sf)(__m256) (Y), (int) (C),\
2853 (__v16sf)(__m512)(W),\
2854 (__mmask16)(U)))
2855
2856 #define _mm512_maskz_insertf32x8(U, X, Y, C) \
2857 ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X), \
2858 (__v8sf)(__m256) (Y), (int) (C),\
2859 (__v16sf)(__m512)_mm512_setzero_ps (),\
2860 (__mmask16)(U)))
2861
2862 #define _mm512_inserti32x8(X, Y, C) \
2863 ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X), \
2864 (__v8si)(__m256i) (Y), (int) (C),\
2865 (__v16si)(__m512i)_mm512_setzero_si512 (),\
2866 (__mmask16)-1))
2867
2868 #define _mm512_mask_inserti32x8(W, U, X, Y, C) \
2869 ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X), \
2870 (__v8si)(__m256i) (Y), (int) (C),\
2871 (__v16si)(__m512i)(W),\
2872 (__mmask16)(U)))
2873
2874 #define _mm512_maskz_inserti32x8(U, X, Y, C) \
2875 ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X), \
2876 (__v8si)(__m256i) (Y), (int) (C),\
2877 (__v16si)(__m512i)_mm512_setzero_si512 (),\
2878 (__mmask16)(U)))
2879
2880 #define _mm512_mask_fpclass_pd_mask(u, X, C) \
2881 ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
2882 (int) (C), (__mmask8)(u)))
2883
2884 #define _mm512_mask_fpclass_ps_mask(u, x, c) \
2885 ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
2886 (int) (c),(__mmask16)(u)))
2887
2888 #define _mm512_fpclass_pd_mask(X, C) \
2889 ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
2890 (int) (C), (__mmask8)-1))
2891
2892 #define _mm512_fpclass_ps_mask(x, c) \
2893 ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
2894 (int) (c),(__mmask16)-1))
2895
2896 #endif
2897
2898 #ifdef __DISABLE_AVX512DQ_512__
2899 #undef __DISABLE_AVX512DQ_512__
2900 #pragma GCC pop_options
2901 #endif /* __DISABLE_AVX512DQ_512__ */
2902
2903 #endif /* _AVX512DQINTRIN_H_INCLUDED */