1/*===---- avx512dqintrin.h - AVX512DQ intrinsics ---------------------------=== 2 * 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: 9 * 10 * The above copyright notice and this permission notice shall be included in 11 * all copies or substantial portions of the Software. 12 * 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 19 * THE SOFTWARE. 20 * 21 *===-----------------------------------------------------------------------=== 22 */ 23 24#ifndef __IMMINTRIN_H 25#error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead." 26#endif 27 28#ifndef __AVX512DQINTRIN_H 29#define __AVX512DQINTRIN_H 30 31/* Define the default attributes for the functions in this file. */ 32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq"))) 33 34static __inline__ __m512i __DEFAULT_FN_ATTRS 35_mm512_mullo_epi64 (__m512i __A, __m512i __B) { 36 return (__m512i) ((__v8di) __A * (__v8di) __B); 37} 38 39static __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, 42 (__v8di) __B, 43 (__v8di) __W, 44 (__mmask8) __U); 45} 46 47static __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, 50 (__v8di) __B, 51 (__v8di) 52 _mm512_setzero_si512 (), 53 (__mmask8) __U); 54} 55 56static __inline__ __m512d __DEFAULT_FN_ATTRS 57_mm512_xor_pd (__m512d __A, __m512d __B) { 58 return (__m512d) ((__v8di) __A ^ (__v8di) __B); 59} 60 61static __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, 64 (__v8df) __B, 65 (__v8df) __W, 66 (__mmask8) __U); 67} 68 69static __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, 72 (__v8df) __B, 73 (__v8df) 74 _mm512_setzero_pd (), 75 (__mmask8) __U); 76} 77 78static __inline__ __m512 __DEFAULT_FN_ATTRS 79_mm512_xor_ps (__m512 __A, __m512 __B) { 80 return (__m512) ((__v16si) __A ^ (__v16si) __B); 81} 82 83static __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, 86 (__v16sf) __B, 87 (__v16sf) __W, 88 (__mmask16) __U); 89} 90 91static __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, 94 (__v16sf) __B, 95 (__v16sf) 96 _mm512_setzero_ps (), 97 (__mmask16) __U); 98} 99 100static __inline__ __m512d __DEFAULT_FN_ATTRS 101_mm512_or_pd (__m512d __A, __m512d __B) { 102 return (__m512d) ((__v8di) __A | (__v8di) __B); 103} 104 105static __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, 108 (__v8df) __B, 109 (__v8df) __W, 110 (__mmask8) __U); 111} 112 113static __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, 116 (__v8df) __B, 117 (__v8df) 118 _mm512_setzero_pd (), 119 (__mmask8) __U); 120} 121 122static __inline__ __m512 __DEFAULT_FN_ATTRS 123_mm512_or_ps (__m512 __A, __m512 __B) { 124 return (__m512) ((__v16si) __A | (__v16si) __B); 125} 126 127static __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, 130 (__v16sf) __B, 131 (__v16sf) __W, 132 (__mmask16) __U); 133} 134 135static __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, 138 (__v16sf) __B, 139 (__v16sf) 140 _mm512_setzero_ps (), 141 (__mmask16) __U); 142} 143 144static __inline__ __m512d __DEFAULT_FN_ATTRS 145_mm512_and_pd (__m512d __A, __m512d __B) { 146 return (__m512d) ((__v8di) __A & (__v8di) __B); 147} 148 149static __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, 152 (__v8df) __B, 153 (__v8df) __W, 154 (__mmask8) __U); 155} 156 157static __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, 160 (__v8df) __B, 161 (__v8df) 162 _mm512_setzero_pd (), 163 (__mmask8) __U); 164} 165 166static __inline__ __m512 __DEFAULT_FN_ATTRS 167_mm512_and_ps (__m512 __A, __m512 __B) { 168 return (__m512) ((__v16si) __A & (__v16si) __B); 169} 170 171static __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, 174 (__v16sf) __B, 175 (__v16sf) __W, 176 (__mmask16) __U); 177} 178 179static __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, 182 (__v16sf) __B, 183 (__v16sf) 184 _mm512_setzero_ps (), 185 (__mmask16) __U); 186} 187 188static __inline__ __m512d __DEFAULT_FN_ATTRS 189_mm512_andnot_pd (__m512d __A, __m512d __B) { 190 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A, 191 (__v8df) __B, 192 (__v8df) 193 _mm512_setzero_pd (), 194 (__mmask8) -1); 195} 196 197static __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, 200 (__v8df) __B, 201 (__v8df) __W, 202 (__mmask8) __U); 203} 204 205static __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, 208 (__v8df) __B, 209 (__v8df) 210 _mm512_setzero_pd (), 211 (__mmask8) __U); 212} 213 214static __inline__ __m512 __DEFAULT_FN_ATTRS 215_mm512_andnot_ps (__m512 __A, __m512 __B) { 216 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A, 217 (__v16sf) __B, 218 (__v16sf) 219 _mm512_setzero_ps (), 220 (__mmask16) -1); 221} 222 223static __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, 226 (__v16sf) __B, 227 (__v16sf) __W, 228 (__mmask16) __U); 229} 230 231static __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, 234 (__v16sf) __B, 235 (__v16sf) 236 _mm512_setzero_ps (), 237 (__mmask16) __U); 238} 239 240static __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(), 244 (__mmask8) -1, 245 _MM_FROUND_CUR_DIRECTION); 246} 247 248static __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, 251 (__v8di) __W, 252 (__mmask8) __U, 253 _MM_FROUND_CUR_DIRECTION); 254} 255 256static __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(), 260 (__mmask8) __U, 261 _MM_FROUND_CUR_DIRECTION); 262} 263 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);}) 267 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);}) 271 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); }) 275 276static __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(), 280 (__mmask8) -1, 281 _MM_FROUND_CUR_DIRECTION); 282} 283 284static __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, 287 (__v8di) __W, 288 (__mmask8) __U, 289 _MM_FROUND_CUR_DIRECTION); 290} 291 292static __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(), 296 (__mmask8) __U, 297 _MM_FROUND_CUR_DIRECTION); 298} 299 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);}) 303 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);}) 307 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);}) 311 312static __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(), 316 (__mmask8) -1, 317 _MM_FROUND_CUR_DIRECTION); 318} 319 320static __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, 323 (__v8di) __W, 324 (__mmask8) __U, 325 _MM_FROUND_CUR_DIRECTION); 326} 327 328static __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(), 332 (__mmask8) __U, 333 _MM_FROUND_CUR_DIRECTION); 334} 335 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);}) 339 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);}) 343 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);}) 347 348static __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(), 352 (__mmask8) -1, 353 _MM_FROUND_CUR_DIRECTION); 354} 355 356static __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, 359 (__v8di) __W, 360 (__mmask8) __U, 361 _MM_FROUND_CUR_DIRECTION); 362} 363 364static __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(), 368 (__mmask8) __U, 369 _MM_FROUND_CUR_DIRECTION); 370} 371 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);}) 375 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);}) 379 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);}) 383 384 385static __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(), 389 (__mmask8) -1, 390 _MM_FROUND_CUR_DIRECTION); 391} 392 393static __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, 396 (__v8df) __W, 397 (__mmask8) __U, 398 _MM_FROUND_CUR_DIRECTION); 399} 400 401static __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(), 405 (__mmask8) __U, 406 _MM_FROUND_CUR_DIRECTION); 407} 408 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);}) 412 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);}) 416 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);}) 420 421static __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(), 425 (__mmask8) -1, 426 _MM_FROUND_CUR_DIRECTION); 427} 428 429static __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, 432 (__v8sf) __W, 433 (__mmask8) __U, 434 _MM_FROUND_CUR_DIRECTION); 435} 436 437static __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(), 441 (__mmask8) __U, 442 _MM_FROUND_CUR_DIRECTION); 443} 444 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);}) 448 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);}) 452 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);}) 456 457 458static __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(), 462 (__mmask8) -1, 463 _MM_FROUND_CUR_DIRECTION); 464} 465 466static __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, 469 (__v8di) __W, 470 (__mmask8) __U, 471 _MM_FROUND_CUR_DIRECTION); 472} 473 474static __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(), 478 (__mmask8) __U, 479 _MM_FROUND_CUR_DIRECTION); 480} 481 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);}) 485 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);}) 489 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);}) 493 494static __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(), 498 (__mmask8) -1, 499 _MM_FROUND_CUR_DIRECTION); 500} 501 502static __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, 505 (__v8di) __W, 506 (__mmask8) __U, 507 _MM_FROUND_CUR_DIRECTION); 508} 509 510static __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(), 514 (__mmask8) __U, 515 _MM_FROUND_CUR_DIRECTION); 516} 517 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);}) 521 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);}) 525 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);}) 529 530static __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(), 534 (__mmask8) -1, 535 _MM_FROUND_CUR_DIRECTION); 536} 537 538static __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, 541 (__v8di) __W, 542 (__mmask8) __U, 543 _MM_FROUND_CUR_DIRECTION); 544} 545 546static __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(), 550 (__mmask8) __U, 551 _MM_FROUND_CUR_DIRECTION); 552} 553 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);}) 557 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);}) 561 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);}) 565 566static __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(), 570 (__mmask8) -1, 571 _MM_FROUND_CUR_DIRECTION); 572} 573 574static __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, 577 (__v8di) __W, 578 (__mmask8) __U, 579 _MM_FROUND_CUR_DIRECTION); 580} 581 582static __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(), 586 (__mmask8) __U, 587 _MM_FROUND_CUR_DIRECTION); 588} 589 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);}) 593 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);}) 597 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);}) 601 602static __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(), 606 (__mmask8) -1, 607 _MM_FROUND_CUR_DIRECTION); 608} 609 610static __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, 613 (__v8df) __W, 614 (__mmask8) __U, 615 _MM_FROUND_CUR_DIRECTION); 616} 617 618static __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(), 622 (__mmask8) __U, 623 _MM_FROUND_CUR_DIRECTION); 624} 625 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);}) 629 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);}) 633 634 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);}) 638 639 640static __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(), 644 (__mmask8) -1, 645 _MM_FROUND_CUR_DIRECTION); 646} 647 648static __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, 651 (__v8sf) __W, 652 (__mmask8) __U, 653 _MM_FROUND_CUR_DIRECTION); 654} 655 656static __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(), 660 (__mmask8) __U, 661 _MM_FROUND_CUR_DIRECTION); 662} 663 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);}) 667 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);}) 671 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);}) 675 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);}) 680 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);}) 684 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);}) 689 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);}) 693 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);}) 697 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);}) 701 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);}) 706 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);}) 710 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);}) 715 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);}) 719 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);}) 723 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);}) 727 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);}) 731 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);}) 735 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);}) 739 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);}) 743 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);}) 747 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);}) 751 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);}) 755 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);}) 759 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);}) 763 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);}) 767 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);}) 771 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);}) 775 776#undef __DEFAULT_FN_ATTRS 777 778#endif 779