1 /*===---- avx512dqintrin.h - AVX512DQ intrinsics ---------------------------===
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 *===-----------------------------------------------------------------------===
25 #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
28 #ifndef __AVX512DQINTRIN_H
29 #define __AVX512DQINTRIN_H
31 /* Define the default attributes for the functions in this file. */
32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
34 static __inline__ __m512i __DEFAULT_FN_ATTRS
35 _mm512_mullo_epi64 (__m512i __A, __m512i __B) {
36 return (__m512i) ((__v8di) __A * (__v8di) __B);
39 static __inline__ __m512i __DEFAULT_FN_ATTRS
40 _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
41 return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
47 static __inline__ __m512i __DEFAULT_FN_ATTRS
48 _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
49 return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
52 _mm512_setzero_si512 (),
56 static __inline__ __m512d __DEFAULT_FN_ATTRS
57 _mm512_xor_pd (__m512d __A, __m512d __B) {
58 return (__m512d) ((__v8di) __A ^ (__v8di) __B);
61 static __inline__ __m512d __DEFAULT_FN_ATTRS
62 _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
63 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
69 static __inline__ __m512d __DEFAULT_FN_ATTRS
70 _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
71 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
78 static __inline__ __m512 __DEFAULT_FN_ATTRS
79 _mm512_xor_ps (__m512 __A, __m512 __B) {
80 return (__m512) ((__v16si) __A ^ (__v16si) __B);
83 static __inline__ __m512 __DEFAULT_FN_ATTRS
84 _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
85 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
91 static __inline__ __m512 __DEFAULT_FN_ATTRS
92 _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
93 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
100 static __inline__ __m512d __DEFAULT_FN_ATTRS
101 _mm512_or_pd (__m512d __A, __m512d __B) {
102 return (__m512d) ((__v8di) __A | (__v8di) __B);
105 static __inline__ __m512d __DEFAULT_FN_ATTRS
106 _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
107 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
113 static __inline__ __m512d __DEFAULT_FN_ATTRS
114 _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
115 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
118 _mm512_setzero_pd (),
122 static __inline__ __m512 __DEFAULT_FN_ATTRS
123 _mm512_or_ps (__m512 __A, __m512 __B) {
124 return (__m512) ((__v16si) __A | (__v16si) __B);
127 static __inline__ __m512 __DEFAULT_FN_ATTRS
128 _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
129 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
135 static __inline__ __m512 __DEFAULT_FN_ATTRS
136 _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
137 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
140 _mm512_setzero_ps (),
144 static __inline__ __m512d __DEFAULT_FN_ATTRS
145 _mm512_and_pd (__m512d __A, __m512d __B) {
146 return (__m512d) ((__v8di) __A & (__v8di) __B);
149 static __inline__ __m512d __DEFAULT_FN_ATTRS
150 _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
151 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
157 static __inline__ __m512d __DEFAULT_FN_ATTRS
158 _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
159 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
162 _mm512_setzero_pd (),
166 static __inline__ __m512 __DEFAULT_FN_ATTRS
167 _mm512_and_ps (__m512 __A, __m512 __B) {
168 return (__m512) ((__v16si) __A & (__v16si) __B);
171 static __inline__ __m512 __DEFAULT_FN_ATTRS
172 _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
173 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
179 static __inline__ __m512 __DEFAULT_FN_ATTRS
180 _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
181 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
184 _mm512_setzero_ps (),
188 static __inline__ __m512d __DEFAULT_FN_ATTRS
189 _mm512_andnot_pd (__m512d __A, __m512d __B) {
190 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
193 _mm512_setzero_pd (),
197 static __inline__ __m512d __DEFAULT_FN_ATTRS
198 _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
199 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
205 static __inline__ __m512d __DEFAULT_FN_ATTRS
206 _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
207 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
210 _mm512_setzero_pd (),
214 static __inline__ __m512 __DEFAULT_FN_ATTRS
215 _mm512_andnot_ps (__m512 __A, __m512 __B) {
216 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
219 _mm512_setzero_ps (),
223 static __inline__ __m512 __DEFAULT_FN_ATTRS
224 _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
225 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
231 static __inline__ __m512 __DEFAULT_FN_ATTRS
232 _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
233 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
236 _mm512_setzero_ps (),
240 static __inline__ __m512i __DEFAULT_FN_ATTRS
241 _mm512_cvtpd_epi64 (__m512d __A) {
242 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
243 (__v8di) _mm512_setzero_si512(),
245 _MM_FROUND_CUR_DIRECTION);
248 static __inline__ __m512i __DEFAULT_FN_ATTRS
249 _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
250 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
253 _MM_FROUND_CUR_DIRECTION);
256 static __inline__ __m512i __DEFAULT_FN_ATTRS
257 _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A) {
258 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
259 (__v8di) _mm512_setzero_si512(),
261 _MM_FROUND_CUR_DIRECTION);
264 #define _mm512_cvt_roundpd_epi64(__A, __R) __extension__ ({ \
265 (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A, \
266 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
268 #define _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, __R) __extension__ ({ \
269 (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A, \
270 (__v8di) __W, (__mmask8) __U, __R);})
272 #define _mm512_maskz_cvt_roundpd_epi64(__U, __A, __R) __extension__ ({ \
273 (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A, \
274 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R); })
276 static __inline__ __m512i __DEFAULT_FN_ATTRS
277 _mm512_cvtpd_epu64 (__m512d __A) {
278 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
279 (__v8di) _mm512_setzero_si512(),
281 _MM_FROUND_CUR_DIRECTION);
284 static __inline__ __m512i __DEFAULT_FN_ATTRS
285 _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
286 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
289 _MM_FROUND_CUR_DIRECTION);
292 static __inline__ __m512i __DEFAULT_FN_ATTRS
293 _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A) {
294 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
295 (__v8di) _mm512_setzero_si512(),
297 _MM_FROUND_CUR_DIRECTION);
300 #define _mm512_cvt_roundpd_epu64(__A, __R) __extension__ ({ \
301 (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A, \
302 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
304 #define _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, __R) __extension__ ({ \
305 (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A, \
306 (__v8di) __W, (__mmask8) __U, __R);})
308 #define _mm512_maskz_cvt_roundpd_epu64(__U, __A, __R) __extension__ ({ \
309 (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A, \
310 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
312 static __inline__ __m512i __DEFAULT_FN_ATTRS
313 _mm512_cvtps_epi64 (__m256 __A) {
314 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
315 (__v8di) _mm512_setzero_si512(),
317 _MM_FROUND_CUR_DIRECTION);
320 static __inline__ __m512i __DEFAULT_FN_ATTRS
321 _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
322 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
325 _MM_FROUND_CUR_DIRECTION);
328 static __inline__ __m512i __DEFAULT_FN_ATTRS
329 _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A) {
330 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
331 (__v8di) _mm512_setzero_si512(),
333 _MM_FROUND_CUR_DIRECTION);
336 #define _mm512_cvt_roundps_epi64(__A, __R) __extension__ ({ \
337 (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A, \
338 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
340 #define _mm512_mask_cvt_roundps_epi64(__W, __U, __A, __R) __extension__ ({ \
341 (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A, \
342 (__v8di) __W, (__mmask8) __U, __R);})
344 #define _mm512_maskz_cvt_roundps_epi64(__U, __A, __R) __extension__ ({ \
345 (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A, \
346 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
348 static __inline__ __m512i __DEFAULT_FN_ATTRS
349 _mm512_cvtps_epu64 (__m256 __A) {
350 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
351 (__v8di) _mm512_setzero_si512(),
353 _MM_FROUND_CUR_DIRECTION);
356 static __inline__ __m512i __DEFAULT_FN_ATTRS
357 _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
358 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
361 _MM_FROUND_CUR_DIRECTION);
364 static __inline__ __m512i __DEFAULT_FN_ATTRS
365 _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A) {
366 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
367 (__v8di) _mm512_setzero_si512(),
369 _MM_FROUND_CUR_DIRECTION);
372 #define _mm512_cvt_roundps_epu64(__A, __R) __extension__ ({ \
373 (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A, \
374 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
376 #define _mm512_mask_cvt_roundps_epu64(__W, __U, __A, __R) __extension__ ({ \
377 (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A, \
378 (__v8di) __W, (__mmask8) __U, __R);})
380 #define _mm512_maskz_cvt_roundps_epu64(__U, __A, __R) __extension__ ({ \
381 (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A, \
382 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
385 static __inline__ __m512d __DEFAULT_FN_ATTRS
386 _mm512_cvtepi64_pd (__m512i __A) {
387 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
388 (__v8df) _mm512_setzero_pd(),
390 _MM_FROUND_CUR_DIRECTION);
393 static __inline__ __m512d __DEFAULT_FN_ATTRS
394 _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
395 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
398 _MM_FROUND_CUR_DIRECTION);
401 static __inline__ __m512d __DEFAULT_FN_ATTRS
402 _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
403 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
404 (__v8df) _mm512_setzero_pd(),
406 _MM_FROUND_CUR_DIRECTION);
409 #define _mm512_cvt_roundepi64_pd(__A, __R) __extension__ ({ \
410 (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A, \
411 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
413 #define _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, __R) __extension__ ({ \
414 (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A, \
415 (__v8df) __W, (__mmask8) __U, __R);})
417 #define _mm512_maskz_cvt_roundepi64_pd(__U, __A, __R) __extension__ ({ \
418 (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A, \
419 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
421 static __inline__ __m256 __DEFAULT_FN_ATTRS
422 _mm512_cvtepi64_ps (__m512i __A) {
423 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
424 (__v8sf) _mm256_setzero_ps(),
426 _MM_FROUND_CUR_DIRECTION);
429 static __inline__ __m256 __DEFAULT_FN_ATTRS
430 _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
431 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
434 _MM_FROUND_CUR_DIRECTION);
437 static __inline__ __m256 __DEFAULT_FN_ATTRS
438 _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
439 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
440 (__v8sf) _mm256_setzero_ps(),
442 _MM_FROUND_CUR_DIRECTION);
445 #define _mm512_cvt_roundepi64_ps(__A, __R) __extension__ ({ \
446 (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A, \
447 (__v8sf) _mm256_setzero_ps(), (__mmask8) -1, __R);})
449 #define _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, __R) __extension__ ({ \
450 (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A, \
451 (__v8sf) __W, (__mmask8) __U, __R);})
453 #define _mm512_maskz_cvt_roundepi64_ps(__U, __A, __R) __extension__ ({ \
454 (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A, \
455 (__v8sf) _mm256_setzero_ps(), (__mmask8) __U, __R);})
458 static __inline__ __m512i __DEFAULT_FN_ATTRS
459 _mm512_cvttpd_epi64 (__m512d __A) {
460 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
461 (__v8di) _mm512_setzero_si512(),
463 _MM_FROUND_CUR_DIRECTION);
466 static __inline__ __m512i __DEFAULT_FN_ATTRS
467 _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
468 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
471 _MM_FROUND_CUR_DIRECTION);
474 static __inline__ __m512i __DEFAULT_FN_ATTRS
475 _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
476 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
477 (__v8di) _mm512_setzero_si512(),
479 _MM_FROUND_CUR_DIRECTION);
482 #define _mm512_cvtt_roundpd_epi64(__A, __R) __extension__ ({ \
483 (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A, \
484 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
486 #define _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, __R) __extension__ ({ \
487 (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A, \
488 (__v8di) __W, (__mmask8) __U, __R);})
490 #define _mm512_maskz_cvtt_roundpd_epi64(__U, __A, __R) __extension__ ({ \
491 (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A, \
492 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
494 static __inline__ __m512i __DEFAULT_FN_ATTRS
495 _mm512_cvttpd_epu64 (__m512d __A) {
496 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
497 (__v8di) _mm512_setzero_si512(),
499 _MM_FROUND_CUR_DIRECTION);
502 static __inline__ __m512i __DEFAULT_FN_ATTRS
503 _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
504 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
507 _MM_FROUND_CUR_DIRECTION);
510 static __inline__ __m512i __DEFAULT_FN_ATTRS
511 _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
512 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
513 (__v8di) _mm512_setzero_si512(),
515 _MM_FROUND_CUR_DIRECTION);
518 #define _mm512_cvtt_roundpd_epu64(__A, __R) __extension__ ({ \
519 (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A, \
520 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
522 #define _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, __R) __extension__ ({ \
523 (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A, \
524 (__v8di) __W, (__mmask8) __U, __R);})
526 #define _mm512_maskz_cvtt_roundpd_epu64(__U, __A, __R) __extension__ ({ \
527 (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A, \
528 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
530 static __inline__ __m512i __DEFAULT_FN_ATTRS
531 _mm512_cvttps_epi64 (__m256 __A) {
532 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
533 (__v8di) _mm512_setzero_si512(),
535 _MM_FROUND_CUR_DIRECTION);
538 static __inline__ __m512i __DEFAULT_FN_ATTRS
539 _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
540 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
543 _MM_FROUND_CUR_DIRECTION);
546 static __inline__ __m512i __DEFAULT_FN_ATTRS
547 _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
548 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
549 (__v8di) _mm512_setzero_si512(),
551 _MM_FROUND_CUR_DIRECTION);
554 #define _mm512_cvtt_roundps_epi64(__A, __R) __extension__ ({ \
555 (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A, \
556 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
558 #define _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, __R) __extension__ ({ \
559 (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A, \
560 (__v8di) __W, (__mmask8) __U, __R);})
562 #define _mm512_maskz_cvtt_roundps_epi64(__U, __A, __R) __extension__ ({ \
563 (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A, \
564 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
566 static __inline__ __m512i __DEFAULT_FN_ATTRS
567 _mm512_cvttps_epu64 (__m256 __A) {
568 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
569 (__v8di) _mm512_setzero_si512(),
571 _MM_FROUND_CUR_DIRECTION);
574 static __inline__ __m512i __DEFAULT_FN_ATTRS
575 _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
576 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
579 _MM_FROUND_CUR_DIRECTION);
582 static __inline__ __m512i __DEFAULT_FN_ATTRS
583 _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
584 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
585 (__v8di) _mm512_setzero_si512(),
587 _MM_FROUND_CUR_DIRECTION);
590 #define _mm512_cvtt_roundps_epu64(__A, __R) __extension__ ({ \
591 (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A, \
592 (__v8di) _mm512_setzero_si512(),(__mmask8) -1, __R);})
594 #define _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, __R) __extension__ ({ \
595 (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A, \
596 (__v8di) __W, (__mmask8) __U, __R);})
598 #define _mm512_maskz_cvtt_roundps_epu64(__U, __A, __R) __extension__ ({ \
599 (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A, \
600 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
602 static __inline__ __m512d __DEFAULT_FN_ATTRS
603 _mm512_cvtepu64_pd (__m512i __A) {
604 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
605 (__v8df) _mm512_setzero_pd(),
607 _MM_FROUND_CUR_DIRECTION);
610 static __inline__ __m512d __DEFAULT_FN_ATTRS
611 _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
612 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
615 _MM_FROUND_CUR_DIRECTION);
618 static __inline__ __m512d __DEFAULT_FN_ATTRS
619 _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
620 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
621 (__v8df) _mm512_setzero_pd(),
623 _MM_FROUND_CUR_DIRECTION);
626 #define _mm512_cvt_roundepu64_pd(__A, __R) __extension__ ({ \
627 (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A, \
628 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
630 #define _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, __R) __extension__ ({ \
631 (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A, \
632 (__v8df) __W, (__mmask8) __U, __R);})
635 #define _mm512_maskz_cvt_roundepu64_pd(__U, __A, __R) __extension__ ({ \
636 (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A, \
637 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
640 static __inline__ __m256 __DEFAULT_FN_ATTRS
641 _mm512_cvtepu64_ps (__m512i __A) {
642 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
643 (__v8sf) _mm256_setzero_ps(),
645 _MM_FROUND_CUR_DIRECTION);
648 static __inline__ __m256 __DEFAULT_FN_ATTRS
649 _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
650 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
653 _MM_FROUND_CUR_DIRECTION);
656 static __inline__ __m256 __DEFAULT_FN_ATTRS
657 _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
658 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
659 (__v8sf) _mm256_setzero_ps(),
661 _MM_FROUND_CUR_DIRECTION);
664 #define _mm512_cvt_roundepu64_ps(__A, __R) __extension__ ({ \
665 (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A, \
666 (__v8sf) _mm256_setzero_ps(), (__mmask8) -1, __R);})
668 #define _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, __R) __extension__ ({ \
669 (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A, \
670 (__v8sf) __W, (__mmask8) __U, __R);})
672 #define _mm512_maskz_cvt_roundepu64_ps(__U, __A, __R) __extension__ ({ \
673 (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A, \
674 (__v8sf) _mm256_setzero_ps(), (__mmask8) __U, __R);})
676 #define _mm512_range_pd(__A, __B, __C) __extension__ ({ \
677 (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,\
678 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, \
679 _MM_FROUND_CUR_DIRECTION);})
681 #define _mm512_mask_range_pd(__W, __U, __A, __B, __C) __extension__ ({ \
682 (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,\
683 (__v8df) __W, (__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
685 #define _mm512_maskz_range_pd(__U, __A, __B, __C) __extension__ ({ \
686 (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
687 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, \
688 _MM_FROUND_CUR_DIRECTION);})
690 #define _mm512_range_round_pd(__A, __B, __C, __R) __extension__ ({ \
691 (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
692 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
694 #define _mm512_mask_range_round_pd(__W, __U, __A, __B, __C, __R) __extension__ ({ \
695 (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
696 (__v8df) __W, (__mmask8) __U, __R);})
698 #define _mm512_maskz_range_round_pd(__U, __A, __B, __C, __R) __extension__ ({ \
699 (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
700 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
702 #define _mm512_range_ps(__A, __B, __C) __extension__ ({ \
703 (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, __C, \
704 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, \
705 _MM_FROUND_CUR_DIRECTION);})
707 #define _mm512_mask_range_ps(__W, __U, __A, __B, __C) __extension__ ({ \
708 (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, \
709 __C, (__v16sf) __W, (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
711 #define _mm512_maskz_range_ps(__U, __A, __B, __C) __extension__ ({ \
712 (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,(__v16sf) __B, \
713 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, \
714 _MM_FROUND_CUR_DIRECTION);})
716 #define _mm512_range_round_ps(__A, __B, __C, __R) __extension__ ({ \
717 (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, \
718 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R);})
720 #define _mm512_mask_range_round_ps(__W, __U, __A, __B, __C, __R) __extension__ ({ \
721 (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, \
722 __C, (__v16sf) __W, (__mmask16) __U, __R);})
724 #define _mm512_maskz_range_round_ps(__U, __A, __B, __C, __R) __extension__ ({ \
725 (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, \
726 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, __R);})
728 #define _mm512_reduce_pd(__A, __B) __extension__ ({ \
729 (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
730 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);})
732 #define _mm512_mask_reduce_pd(__W, __U, __A, __B) __extension__ ({ \
733 (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
734 (__v8df) __W,(__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
736 #define _mm512_maskz_reduce_pd(__U, __A, __B) __extension__ ({ \
737 (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
738 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
740 #define _mm512_reduce_ps(__A, __B) __extension__ ({ \
741 (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B, \
742 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);})
744 #define _mm512_mask_reduce_ps(__W, __U, __A, __B) __extension__ ({ \
745 (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B, \
746 (__v16sf) __W, (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
748 #define _mm512_maskz_reduce_ps(__U, __A, __B) __extension__ ({ \
749 (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B, \
750 (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
752 #define _mm512_reduce_round_pd(__A, __B, __R) __extension__ ({\
753 (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
754 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
756 #define _mm512_mask_reduce_round_pd(__W, __U, __A, __B, __R) __extension__ ({\
757 (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
758 (__v8df) __W,(__mmask8) __U, __R);})
760 #define _mm512_maskz_reduce_round_pd(__U, __A, __B, __R) __extension__ ({\
761 (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
762 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
764 #define _mm512_reduce_round_ps(__A, __B, __R) __extension__ ({\
765 (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B, \
766 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R);})
768 #define _mm512_mask_reduce_round_ps(__W, __U, __A, __B, __R) __extension__ ({\
769 (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B, \
770 (__v16sf) __W, (__mmask16) __U, __R);})
772 #define _mm512_maskz_reduce_round_ps(__U, __A, __B, __R) __extension__ ({\
773 (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B, \
774 (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, __R);})
776 #undef __DEFAULT_FN_ATTRS