avx512fintrin.h revision 288943
1277325Sdim/*===---- avx512fintrin.h - AVX2 intrinsics --------------------------------=== 2277325Sdim * 3277325Sdim * Permission is hereby granted, free of charge, to any person obtaining a copy 4277325Sdim * of this software and associated documentation files (the "Software"), to deal 5277325Sdim * in the Software without restriction, including without limitation the rights 6277325Sdim * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7277325Sdim * copies of the Software, and to permit persons to whom the Software is 8277325Sdim * furnished to do so, subject to the following conditions: 9277325Sdim * 10277325Sdim * The above copyright notice and this permission notice shall be included in 11277325Sdim * all copies or substantial portions of the Software. 12277325Sdim * 13277325Sdim * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14277325Sdim * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15277325Sdim * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16277325Sdim * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17277325Sdim * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18277325Sdim * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19277325Sdim * THE SOFTWARE. 20277325Sdim * 21277325Sdim *===-----------------------------------------------------------------------=== 22277325Sdim */ 23277325Sdim#ifndef __IMMINTRIN_H 24277325Sdim#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead." 25277325Sdim#endif 26277325Sdim 27277325Sdim#ifndef __AVX512FINTRIN_H 28277325Sdim#define __AVX512FINTRIN_H 29277325Sdim 30277325Sdimtypedef double __v8df __attribute__((__vector_size__(64))); 31277325Sdimtypedef float __v16sf __attribute__((__vector_size__(64))); 32277325Sdimtypedef long long __v8di __attribute__((__vector_size__(64))); 33277325Sdimtypedef int __v16si __attribute__((__vector_size__(64))); 34277325Sdim 35277325Sdimtypedef float __m512 __attribute__((__vector_size__(64))); 36277325Sdimtypedef double __m512d __attribute__((__vector_size__(64))); 37277325Sdimtypedef long long __m512i __attribute__((__vector_size__(64))); 38277325Sdim 39277325Sdimtypedef unsigned char __mmask8; 40277325Sdimtypedef unsigned short __mmask16; 41277325Sdim 42277325Sdim/* Rounding mode macros. */ 43277325Sdim#define _MM_FROUND_TO_NEAREST_INT 0x00 44277325Sdim#define _MM_FROUND_TO_NEG_INF 0x01 45277325Sdim#define _MM_FROUND_TO_POS_INF 0x02 46277325Sdim#define _MM_FROUND_TO_ZERO 0x03 47277325Sdim#define _MM_FROUND_CUR_DIRECTION 0x04 48277325Sdim 49288943Sdim/* Define the default attributes for the functions in this file. */ 50288943Sdim#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__)) 51288943Sdim 52277325Sdim/* Create vectors with repeated elements */ 53277325Sdim 54288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 55277325Sdim_mm512_setzero_si512(void) 56277325Sdim{ 57277325Sdim return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 }; 58277325Sdim} 59277325Sdim 60288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 61277325Sdim_mm512_maskz_set1_epi32(__mmask16 __M, int __A) 62277325Sdim{ 63277325Sdim return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, 64277325Sdim (__v16si) 65277325Sdim _mm512_setzero_si512 (), 66277325Sdim __M); 67277325Sdim} 68277325Sdim 69288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 70277325Sdim_mm512_maskz_set1_epi64(__mmask8 __M, long long __A) 71277325Sdim{ 72277325Sdim#ifdef __x86_64__ 73277325Sdim return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, 74277325Sdim (__v8di) 75277325Sdim _mm512_setzero_si512 (), 76277325Sdim __M); 77277325Sdim#else 78277325Sdim return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A, 79277325Sdim (__v8di) 80277325Sdim _mm512_setzero_si512 (), 81277325Sdim __M); 82277325Sdim#endif 83277325Sdim} 84277325Sdim 85288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 86277325Sdim_mm512_setzero_ps(void) 87277325Sdim{ 88277325Sdim return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 89277325Sdim 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; 90277325Sdim} 91288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 92277325Sdim_mm512_setzero_pd(void) 93277325Sdim{ 94277325Sdim return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; 95277325Sdim} 96277325Sdim 97288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 98277325Sdim_mm512_set1_ps(float __w) 99277325Sdim{ 100277325Sdim return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w, 101277325Sdim __w, __w, __w, __w, __w, __w, __w, __w }; 102277325Sdim} 103277325Sdim 104288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 105277325Sdim_mm512_set1_pd(double __w) 106277325Sdim{ 107277325Sdim return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w }; 108277325Sdim} 109277325Sdim 110288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 111277325Sdim_mm512_set1_epi32(int __s) 112277325Sdim{ 113277325Sdim return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s, 114277325Sdim __s, __s, __s, __s, __s, __s, __s, __s }; 115277325Sdim} 116277325Sdim 117288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 118277325Sdim_mm512_set1_epi64(long long __d) 119277325Sdim{ 120277325Sdim return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d }; 121277325Sdim} 122277325Sdim 123288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 124277325Sdim_mm512_broadcastss_ps(__m128 __X) 125277325Sdim{ 126277325Sdim float __f = __X[0]; 127277325Sdim return (__v16sf){ __f, __f, __f, __f, 128277325Sdim __f, __f, __f, __f, 129277325Sdim __f, __f, __f, __f, 130277325Sdim __f, __f, __f, __f }; 131277325Sdim} 132277325Sdim 133288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 134277325Sdim_mm512_broadcastsd_pd(__m128d __X) 135277325Sdim{ 136277325Sdim double __d = __X[0]; 137277325Sdim return (__v8df){ __d, __d, __d, __d, 138277325Sdim __d, __d, __d, __d }; 139277325Sdim} 140277325Sdim 141277325Sdim/* Cast between vector types */ 142277325Sdim 143288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 144277325Sdim_mm512_castpd256_pd512(__m256d __a) 145277325Sdim{ 146277325Sdim return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1); 147277325Sdim} 148277325Sdim 149288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 150277325Sdim_mm512_castps256_ps512(__m256 __a) 151277325Sdim{ 152277325Sdim return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, 153277325Sdim -1, -1, -1, -1, -1, -1, -1, -1); 154277325Sdim} 155277325Sdim 156288943Sdimstatic __inline __m128d __DEFAULT_FN_ATTRS 157277325Sdim_mm512_castpd512_pd128(__m512d __a) 158277325Sdim{ 159277325Sdim return __builtin_shufflevector(__a, __a, 0, 1); 160277325Sdim} 161277325Sdim 162288943Sdimstatic __inline __m128 __DEFAULT_FN_ATTRS 163277325Sdim_mm512_castps512_ps128(__m512 __a) 164277325Sdim{ 165277325Sdim return __builtin_shufflevector(__a, __a, 0, 1, 2, 3); 166277325Sdim} 167277325Sdim 168288943Sdim/* Bitwise operators */ 169288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 170288943Sdim_mm512_and_epi32(__m512i __a, __m512i __b) 171288943Sdim{ 172288943Sdim return __a & __b; 173288943Sdim} 174288943Sdim 175288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 176288943Sdim_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b) 177288943Sdim{ 178288943Sdim return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a, 179288943Sdim (__v16si) __b, 180288943Sdim (__v16si) __src, 181288943Sdim (__mmask16) __k); 182288943Sdim} 183288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 184288943Sdim_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) 185288943Sdim{ 186288943Sdim return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a, 187288943Sdim (__v16si) __b, 188288943Sdim (__v16si) 189288943Sdim _mm512_setzero_si512 (), 190288943Sdim (__mmask16) __k); 191288943Sdim} 192288943Sdim 193288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 194288943Sdim_mm512_and_epi64(__m512i __a, __m512i __b) 195288943Sdim{ 196288943Sdim return __a & __b; 197288943Sdim} 198288943Sdim 199288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 200288943Sdim_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b) 201288943Sdim{ 202288943Sdim return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a, 203288943Sdim (__v8di) __b, 204288943Sdim (__v8di) __src, 205288943Sdim (__mmask8) __k); 206288943Sdim} 207288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 208288943Sdim_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) 209288943Sdim{ 210288943Sdim return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a, 211288943Sdim (__v8di) __b, 212288943Sdim (__v8di) 213288943Sdim _mm512_setzero_si512 (), 214288943Sdim (__mmask8) __k); 215288943Sdim} 216288943Sdim 217288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 218288943Sdim_mm512_andnot_epi32 (__m512i __A, __m512i __B) 219288943Sdim{ 220288943Sdim return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, 221288943Sdim (__v16si) __B, 222288943Sdim (__v16si) 223288943Sdim _mm512_setzero_si512 (), 224288943Sdim (__mmask16) -1); 225288943Sdim} 226288943Sdim 227288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 228288943Sdim_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) 229288943Sdim{ 230288943Sdim return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, 231288943Sdim (__v16si) __B, 232288943Sdim (__v16si) __W, 233288943Sdim (__mmask16) __U); 234288943Sdim} 235288943Sdim 236288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 237288943Sdim_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B) 238288943Sdim{ 239288943Sdim return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, 240288943Sdim (__v16si) __B, 241288943Sdim (__v16si) 242288943Sdim _mm512_setzero_si512 (), 243288943Sdim (__mmask16) __U); 244288943Sdim} 245288943Sdim 246288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 247288943Sdim_mm512_andnot_epi64 (__m512i __A, __m512i __B) 248288943Sdim{ 249288943Sdim return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, 250288943Sdim (__v8di) __B, 251288943Sdim (__v8di) 252288943Sdim _mm512_setzero_si512 (), 253288943Sdim (__mmask8) -1); 254288943Sdim} 255288943Sdim 256288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 257288943Sdim_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) 258288943Sdim{ 259288943Sdim return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, 260288943Sdim (__v8di) __B, 261288943Sdim (__v8di) __W, __U); 262288943Sdim} 263288943Sdim 264288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 265288943Sdim_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B) 266288943Sdim{ 267288943Sdim return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, 268288943Sdim (__v8di) __B, 269288943Sdim (__v8di) 270288943Sdim _mm512_setzero_pd (), 271288943Sdim __U); 272288943Sdim} 273288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 274288943Sdim_mm512_or_epi32(__m512i __a, __m512i __b) 275288943Sdim{ 276288943Sdim return __a | __b; 277288943Sdim} 278288943Sdim 279288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 280288943Sdim_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b) 281288943Sdim{ 282288943Sdim return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a, 283288943Sdim (__v16si) __b, 284288943Sdim (__v16si) __src, 285288943Sdim (__mmask16) __k); 286288943Sdim} 287288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 288288943Sdim_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) 289288943Sdim{ 290288943Sdim return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a, 291288943Sdim (__v16si) __b, 292288943Sdim (__v16si) 293288943Sdim _mm512_setzero_si512 (), 294288943Sdim (__mmask16) __k); 295288943Sdim} 296288943Sdim 297288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 298288943Sdim_mm512_or_epi64(__m512i __a, __m512i __b) 299288943Sdim{ 300288943Sdim return __a | __b; 301288943Sdim} 302288943Sdim 303288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 304288943Sdim_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b) 305288943Sdim{ 306288943Sdim return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a, 307288943Sdim (__v8di) __b, 308288943Sdim (__v8di) __src, 309288943Sdim (__mmask8) __k); 310288943Sdim} 311288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 312288943Sdim_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) 313288943Sdim{ 314288943Sdim return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a, 315288943Sdim (__v8di) __b, 316288943Sdim (__v8di) 317288943Sdim _mm512_setzero_si512 (), 318288943Sdim (__mmask8) __k); 319288943Sdim} 320288943Sdim 321288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 322288943Sdim_mm512_xor_epi32(__m512i __a, __m512i __b) 323288943Sdim{ 324288943Sdim return __a ^ __b; 325288943Sdim} 326288943Sdim 327288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 328288943Sdim_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b) 329288943Sdim{ 330288943Sdim return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a, 331288943Sdim (__v16si) __b, 332288943Sdim (__v16si) __src, 333288943Sdim (__mmask16) __k); 334288943Sdim} 335288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 336288943Sdim_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) 337288943Sdim{ 338288943Sdim return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a, 339288943Sdim (__v16si) __b, 340288943Sdim (__v16si) 341288943Sdim _mm512_setzero_si512 (), 342288943Sdim (__mmask16) __k); 343288943Sdim} 344288943Sdim 345288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 346288943Sdim_mm512_xor_epi64(__m512i __a, __m512i __b) 347288943Sdim{ 348288943Sdim return __a ^ __b; 349288943Sdim} 350288943Sdim 351288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 352288943Sdim_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b) 353288943Sdim{ 354288943Sdim return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a, 355288943Sdim (__v8di) __b, 356288943Sdim (__v8di) __src, 357288943Sdim (__mmask8) __k); 358288943Sdim} 359288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 360288943Sdim_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) 361288943Sdim{ 362288943Sdim return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a, 363288943Sdim (__v8di) __b, 364288943Sdim (__v8di) 365288943Sdim _mm512_setzero_si512 (), 366288943Sdim (__mmask8) __k); 367288943Sdim} 368288943Sdim 369288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 370288943Sdim_mm512_and_si512(__m512i __a, __m512i __b) 371288943Sdim{ 372288943Sdim return __a & __b; 373288943Sdim} 374288943Sdim 375288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 376288943Sdim_mm512_or_si512(__m512i __a, __m512i __b) 377288943Sdim{ 378288943Sdim return __a | __b; 379288943Sdim} 380288943Sdim 381288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 382288943Sdim_mm512_xor_si512(__m512i __a, __m512i __b) 383288943Sdim{ 384288943Sdim return __a ^ __b; 385288943Sdim} 386277325Sdim/* Arithmetic */ 387277325Sdim 388288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 389277325Sdim_mm512_add_pd(__m512d __a, __m512d __b) 390277325Sdim{ 391277325Sdim return __a + __b; 392277325Sdim} 393277325Sdim 394288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 395277325Sdim_mm512_add_ps(__m512 __a, __m512 __b) 396277325Sdim{ 397277325Sdim return __a + __b; 398277325Sdim} 399277325Sdim 400288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 401277325Sdim_mm512_mul_pd(__m512d __a, __m512d __b) 402277325Sdim{ 403277325Sdim return __a * __b; 404277325Sdim} 405277325Sdim 406288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 407277325Sdim_mm512_mul_ps(__m512 __a, __m512 __b) 408277325Sdim{ 409277325Sdim return __a * __b; 410277325Sdim} 411277325Sdim 412288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 413277325Sdim_mm512_sub_pd(__m512d __a, __m512d __b) 414277325Sdim{ 415277325Sdim return __a - __b; 416277325Sdim} 417277325Sdim 418288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 419277325Sdim_mm512_sub_ps(__m512 __a, __m512 __b) 420277325Sdim{ 421277325Sdim return __a - __b; 422277325Sdim} 423277325Sdim 424288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 425288943Sdim_mm512_add_epi64 (__m512i __A, __m512i __B) 426288943Sdim{ 427288943Sdim return (__m512i) ((__v8di) __A + (__v8di) __B); 428288943Sdim} 429288943Sdim 430288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 431288943Sdim_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) 432288943Sdim{ 433288943Sdim return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, 434288943Sdim (__v8di) __B, 435288943Sdim (__v8di) __W, 436288943Sdim (__mmask8) __U); 437288943Sdim} 438288943Sdim 439288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 440288943Sdim_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B) 441288943Sdim{ 442288943Sdim return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, 443288943Sdim (__v8di) __B, 444288943Sdim (__v8di) 445288943Sdim _mm512_setzero_si512 (), 446288943Sdim (__mmask8) __U); 447288943Sdim} 448288943Sdim 449288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 450288943Sdim_mm512_sub_epi64 (__m512i __A, __m512i __B) 451288943Sdim{ 452288943Sdim return (__m512i) ((__v8di) __A - (__v8di) __B); 453288943Sdim} 454288943Sdim 455288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 456288943Sdim_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) 457288943Sdim{ 458288943Sdim return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, 459288943Sdim (__v8di) __B, 460288943Sdim (__v8di) __W, 461288943Sdim (__mmask8) __U); 462288943Sdim} 463288943Sdim 464288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 465288943Sdim_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B) 466288943Sdim{ 467288943Sdim return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, 468288943Sdim (__v8di) __B, 469288943Sdim (__v8di) 470288943Sdim _mm512_setzero_si512 (), 471288943Sdim (__mmask8) __U); 472288943Sdim} 473288943Sdim 474288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 475288943Sdim_mm512_add_epi32 (__m512i __A, __m512i __B) 476288943Sdim{ 477288943Sdim return (__m512i) ((__v16si) __A + (__v16si) __B); 478288943Sdim} 479288943Sdim 480288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 481288943Sdim_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) 482288943Sdim{ 483288943Sdim return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, 484288943Sdim (__v16si) __B, 485288943Sdim (__v16si) __W, 486288943Sdim (__mmask16) __U); 487288943Sdim} 488288943Sdim 489288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 490288943Sdim_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B) 491288943Sdim{ 492288943Sdim return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, 493288943Sdim (__v16si) __B, 494288943Sdim (__v16si) 495288943Sdim _mm512_setzero_si512 (), 496288943Sdim (__mmask16) __U); 497288943Sdim} 498288943Sdim 499288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 500288943Sdim_mm512_sub_epi32 (__m512i __A, __m512i __B) 501288943Sdim{ 502288943Sdim return (__m512i) ((__v16si) __A - (__v16si) __B); 503288943Sdim} 504288943Sdim 505288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 506288943Sdim_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) 507288943Sdim{ 508288943Sdim return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, 509288943Sdim (__v16si) __B, 510288943Sdim (__v16si) __W, 511288943Sdim (__mmask16) __U); 512288943Sdim} 513288943Sdim 514288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 515288943Sdim_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B) 516288943Sdim{ 517288943Sdim return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, 518288943Sdim (__v16si) __B, 519288943Sdim (__v16si) 520288943Sdim _mm512_setzero_si512 (), 521288943Sdim (__mmask16) __U); 522288943Sdim} 523288943Sdim 524288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 525277325Sdim_mm512_max_pd(__m512d __A, __m512d __B) 526277325Sdim{ 527277325Sdim return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, 528277325Sdim (__v8df) __B, 529277325Sdim (__v8df) 530277325Sdim _mm512_setzero_pd (), 531277325Sdim (__mmask8) -1, 532277325Sdim _MM_FROUND_CUR_DIRECTION); 533277325Sdim} 534277325Sdim 535288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 536277325Sdim_mm512_max_ps(__m512 __A, __m512 __B) 537277325Sdim{ 538277325Sdim return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, 539277325Sdim (__v16sf) __B, 540277325Sdim (__v16sf) 541277325Sdim _mm512_setzero_ps (), 542277325Sdim (__mmask16) -1, 543277325Sdim _MM_FROUND_CUR_DIRECTION); 544277325Sdim} 545277325Sdim 546277325Sdimstatic __inline __m512i 547288943Sdim__DEFAULT_FN_ATTRS 548277325Sdim_mm512_max_epi32(__m512i __A, __m512i __B) 549277325Sdim{ 550277325Sdim return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A, 551277325Sdim (__v16si) __B, 552277325Sdim (__v16si) 553277325Sdim _mm512_setzero_si512 (), 554277325Sdim (__mmask16) -1); 555277325Sdim} 556277325Sdim 557288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 558277325Sdim_mm512_max_epu32(__m512i __A, __m512i __B) 559277325Sdim{ 560277325Sdim return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A, 561277325Sdim (__v16si) __B, 562277325Sdim (__v16si) 563277325Sdim _mm512_setzero_si512 (), 564277325Sdim (__mmask16) -1); 565277325Sdim} 566277325Sdim 567288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 568277325Sdim_mm512_max_epi64(__m512i __A, __m512i __B) 569277325Sdim{ 570277325Sdim return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A, 571277325Sdim (__v8di) __B, 572277325Sdim (__v8di) 573277325Sdim _mm512_setzero_si512 (), 574277325Sdim (__mmask8) -1); 575277325Sdim} 576277325Sdim 577288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 578277325Sdim_mm512_max_epu64(__m512i __A, __m512i __B) 579277325Sdim{ 580277325Sdim return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A, 581277325Sdim (__v8di) __B, 582277325Sdim (__v8di) 583277325Sdim _mm512_setzero_si512 (), 584277325Sdim (__mmask8) -1); 585277325Sdim} 586277325Sdim 587288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 588277325Sdim_mm512_min_pd(__m512d __A, __m512d __B) 589277325Sdim{ 590277325Sdim return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, 591277325Sdim (__v8df) __B, 592277325Sdim (__v8df) 593277325Sdim _mm512_setzero_pd (), 594277325Sdim (__mmask8) -1, 595277325Sdim _MM_FROUND_CUR_DIRECTION); 596277325Sdim} 597277325Sdim 598288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 599277325Sdim_mm512_min_ps(__m512 __A, __m512 __B) 600277325Sdim{ 601277325Sdim return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, 602277325Sdim (__v16sf) __B, 603277325Sdim (__v16sf) 604277325Sdim _mm512_setzero_ps (), 605277325Sdim (__mmask16) -1, 606277325Sdim _MM_FROUND_CUR_DIRECTION); 607277325Sdim} 608277325Sdim 609277325Sdimstatic __inline __m512i 610288943Sdim__DEFAULT_FN_ATTRS 611277325Sdim_mm512_min_epi32(__m512i __A, __m512i __B) 612277325Sdim{ 613277325Sdim return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A, 614277325Sdim (__v16si) __B, 615277325Sdim (__v16si) 616277325Sdim _mm512_setzero_si512 (), 617277325Sdim (__mmask16) -1); 618277325Sdim} 619277325Sdim 620288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 621277325Sdim_mm512_min_epu32(__m512i __A, __m512i __B) 622277325Sdim{ 623277325Sdim return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A, 624277325Sdim (__v16si) __B, 625277325Sdim (__v16si) 626277325Sdim _mm512_setzero_si512 (), 627277325Sdim (__mmask16) -1); 628277325Sdim} 629277325Sdim 630288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 631277325Sdim_mm512_min_epi64(__m512i __A, __m512i __B) 632277325Sdim{ 633277325Sdim return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A, 634277325Sdim (__v8di) __B, 635277325Sdim (__v8di) 636277325Sdim _mm512_setzero_si512 (), 637277325Sdim (__mmask8) -1); 638277325Sdim} 639277325Sdim 640288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 641277325Sdim_mm512_min_epu64(__m512i __A, __m512i __B) 642277325Sdim{ 643277325Sdim return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A, 644277325Sdim (__v8di) __B, 645277325Sdim (__v8di) 646277325Sdim _mm512_setzero_si512 (), 647277325Sdim (__mmask8) -1); 648277325Sdim} 649277325Sdim 650288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 651277325Sdim_mm512_mul_epi32(__m512i __X, __m512i __Y) 652277325Sdim{ 653277325Sdim return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, 654277325Sdim (__v16si) __Y, 655277325Sdim (__v8di) 656277325Sdim _mm512_setzero_si512 (), 657277325Sdim (__mmask8) -1); 658277325Sdim} 659277325Sdim 660288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 661288943Sdim_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) 662288943Sdim{ 663288943Sdim return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, 664288943Sdim (__v16si) __Y, 665288943Sdim (__v8di) __W, __M); 666288943Sdim} 667288943Sdim 668288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 669288943Sdim_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y) 670288943Sdim{ 671288943Sdim return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, 672288943Sdim (__v16si) __Y, 673288943Sdim (__v8di) 674288943Sdim _mm512_setzero_si512 (), 675288943Sdim __M); 676288943Sdim} 677288943Sdim 678288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 679277325Sdim_mm512_mul_epu32(__m512i __X, __m512i __Y) 680277325Sdim{ 681277325Sdim return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, 682277325Sdim (__v16si) __Y, 683277325Sdim (__v8di) 684277325Sdim _mm512_setzero_si512 (), 685277325Sdim (__mmask8) -1); 686277325Sdim} 687277325Sdim 688288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 689288943Sdim_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) 690288943Sdim{ 691288943Sdim return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, 692288943Sdim (__v16si) __Y, 693288943Sdim (__v8di) __W, __M); 694288943Sdim} 695288943Sdim 696288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 697288943Sdim_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y) 698288943Sdim{ 699288943Sdim return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, 700288943Sdim (__v16si) __Y, 701288943Sdim (__v8di) 702288943Sdim _mm512_setzero_si512 (), 703288943Sdim __M); 704288943Sdim} 705288943Sdim 706288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 707288943Sdim_mm512_mullo_epi32 (__m512i __A, __m512i __B) 708288943Sdim{ 709288943Sdim return (__m512i) ((__v16si) __A * (__v16si) __B); 710288943Sdim} 711288943Sdim 712288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 713288943Sdim_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B) 714288943Sdim{ 715288943Sdim return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, 716288943Sdim (__v16si) __B, 717288943Sdim (__v16si) 718288943Sdim _mm512_setzero_si512 (), 719288943Sdim __M); 720288943Sdim} 721288943Sdim 722288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 723288943Sdim_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) 724288943Sdim{ 725288943Sdim return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, 726288943Sdim (__v16si) __B, 727288943Sdim (__v16si) __W, __M); 728288943Sdim} 729288943Sdim 730288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 731277325Sdim_mm512_sqrt_pd(__m512d a) 732277325Sdim{ 733277325Sdim return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a, 734277325Sdim (__v8df) _mm512_setzero_pd (), 735277325Sdim (__mmask8) -1, 736277325Sdim _MM_FROUND_CUR_DIRECTION); 737277325Sdim} 738277325Sdim 739288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 740277325Sdim_mm512_sqrt_ps(__m512 a) 741277325Sdim{ 742277325Sdim return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a, 743277325Sdim (__v16sf) _mm512_setzero_ps (), 744277325Sdim (__mmask16) -1, 745277325Sdim _MM_FROUND_CUR_DIRECTION); 746277325Sdim} 747277325Sdim 748288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 749277325Sdim_mm512_rsqrt14_pd(__m512d __A) 750277325Sdim{ 751277325Sdim return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A, 752277325Sdim (__v8df) 753277325Sdim _mm512_setzero_pd (), 754277325Sdim (__mmask8) -1);} 755277325Sdim 756288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 757277325Sdim_mm512_rsqrt14_ps(__m512 __A) 758277325Sdim{ 759277325Sdim return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A, 760277325Sdim (__v16sf) 761277325Sdim _mm512_setzero_ps (), 762277325Sdim (__mmask16) -1); 763277325Sdim} 764277325Sdim 765288943Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 766277325Sdim_mm_rsqrt14_ss(__m128 __A, __m128 __B) 767277325Sdim{ 768277325Sdim return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A, 769277325Sdim (__v4sf) __B, 770277325Sdim (__v4sf) 771277325Sdim _mm_setzero_ps (), 772277325Sdim (__mmask8) -1); 773277325Sdim} 774277325Sdim 775288943Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 776277325Sdim_mm_rsqrt14_sd(__m128d __A, __m128d __B) 777277325Sdim{ 778277325Sdim return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A, 779277325Sdim (__v2df) __B, 780277325Sdim (__v2df) 781277325Sdim _mm_setzero_pd (), 782277325Sdim (__mmask8) -1); 783277325Sdim} 784277325Sdim 785288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 786277325Sdim_mm512_rcp14_pd(__m512d __A) 787277325Sdim{ 788277325Sdim return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A, 789277325Sdim (__v8df) 790277325Sdim _mm512_setzero_pd (), 791277325Sdim (__mmask8) -1); 792277325Sdim} 793277325Sdim 794288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 795277325Sdim_mm512_rcp14_ps(__m512 __A) 796277325Sdim{ 797277325Sdim return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A, 798277325Sdim (__v16sf) 799277325Sdim _mm512_setzero_ps (), 800277325Sdim (__mmask16) -1); 801277325Sdim} 802288943Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 803277325Sdim_mm_rcp14_ss(__m128 __A, __m128 __B) 804277325Sdim{ 805277325Sdim return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A, 806277325Sdim (__v4sf) __B, 807277325Sdim (__v4sf) 808277325Sdim _mm_setzero_ps (), 809277325Sdim (__mmask8) -1); 810277325Sdim} 811277325Sdim 812288943Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 813277325Sdim_mm_rcp14_sd(__m128d __A, __m128d __B) 814277325Sdim{ 815277325Sdim return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A, 816277325Sdim (__v2df) __B, 817277325Sdim (__v2df) 818277325Sdim _mm_setzero_pd (), 819277325Sdim (__mmask8) -1); 820277325Sdim} 821277325Sdim 822288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 823277325Sdim_mm512_floor_ps(__m512 __A) 824277325Sdim{ 825277325Sdim return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, 826277325Sdim _MM_FROUND_FLOOR, 827277325Sdim (__v16sf) __A, -1, 828277325Sdim _MM_FROUND_CUR_DIRECTION); 829277325Sdim} 830277325Sdim 831288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 832277325Sdim_mm512_floor_pd(__m512d __A) 833277325Sdim{ 834277325Sdim return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, 835277325Sdim _MM_FROUND_FLOOR, 836277325Sdim (__v8df) __A, -1, 837277325Sdim _MM_FROUND_CUR_DIRECTION); 838277325Sdim} 839277325Sdim 840288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 841277325Sdim_mm512_ceil_ps(__m512 __A) 842277325Sdim{ 843277325Sdim return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, 844277325Sdim _MM_FROUND_CEIL, 845277325Sdim (__v16sf) __A, -1, 846277325Sdim _MM_FROUND_CUR_DIRECTION); 847277325Sdim} 848277325Sdim 849288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 850277325Sdim_mm512_ceil_pd(__m512d __A) 851277325Sdim{ 852277325Sdim return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, 853277325Sdim _MM_FROUND_CEIL, 854277325Sdim (__v8df) __A, -1, 855277325Sdim _MM_FROUND_CUR_DIRECTION); 856277325Sdim} 857277325Sdim 858288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 859277325Sdim_mm512_abs_epi64(__m512i __A) 860277325Sdim{ 861277325Sdim return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A, 862277325Sdim (__v8di) 863277325Sdim _mm512_setzero_si512 (), 864277325Sdim (__mmask8) -1); 865277325Sdim} 866277325Sdim 867288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 868277325Sdim_mm512_abs_epi32(__m512i __A) 869277325Sdim{ 870277325Sdim return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A, 871277325Sdim (__v16si) 872277325Sdim _mm512_setzero_si512 (), 873277325Sdim (__mmask16) -1); 874277325Sdim} 875277325Sdim 876288943Sdim#define _mm512_roundscale_ps(A, B) __extension__ ({ \ 877288943Sdim (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \ 878288943Sdim -1, _MM_FROUND_CUR_DIRECTION); }) 879288943Sdim 880288943Sdim#define _mm512_roundscale_pd(A, B) __extension__ ({ \ 881288943Sdim (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \ 882288943Sdim -1, _MM_FROUND_CUR_DIRECTION); }) 883288943Sdim 884288943Sdim#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \ 885288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 886288943Sdim (__v8df) (B), (__v8df) (C), \ 887288943Sdim (__mmask8) -1, (R)); }) 888288943Sdim 889288943Sdim 890288943Sdim#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \ 891288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 892288943Sdim (__v8df) (B), (__v8df) (C), \ 893288943Sdim (__mmask8) (U), (R)); }) 894288943Sdim 895288943Sdim 896288943Sdim#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \ 897288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \ 898288943Sdim (__v8df) (B), (__v8df) (C), \ 899288943Sdim (__mmask8) (U), (R)); }) 900288943Sdim 901288943Sdim 902288943Sdim#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \ 903288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \ 904288943Sdim (__v8df) (B), (__v8df) (C), \ 905288943Sdim (__mmask8) (U), (R)); }) 906288943Sdim 907288943Sdim 908288943Sdim#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \ 909288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 910288943Sdim (__v8df) (B), -(__v8df) (C), \ 911288943Sdim (__mmask8) -1, (R)); }) 912288943Sdim 913288943Sdim 914288943Sdim#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \ 915288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 916288943Sdim (__v8df) (B), -(__v8df) (C), \ 917288943Sdim (__mmask8) (U), (R)); }) 918288943Sdim 919288943Sdim 920288943Sdim#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \ 921288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \ 922288943Sdim (__v8df) (B), -(__v8df) (C), \ 923288943Sdim (__mmask8) (U), (R)); }) 924288943Sdim 925288943Sdim 926288943Sdim#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \ 927288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \ 928288943Sdim (__v8df) (B), (__v8df) (C), \ 929288943Sdim (__mmask8) -1, (R)); }) 930288943Sdim 931288943Sdim 932288943Sdim#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \ 933288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \ 934288943Sdim (__v8df) (B), (__v8df) (C), \ 935288943Sdim (__mmask8) (U), (R)); }) 936288943Sdim 937288943Sdim 938288943Sdim#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \ 939288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \ 940288943Sdim (__v8df) (B), (__v8df) (C), \ 941288943Sdim (__mmask8) (U), (R)); }) 942288943Sdim 943288943Sdim 944288943Sdim#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \ 945288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \ 946288943Sdim (__v8df) (B), -(__v8df) (C), \ 947288943Sdim (__mmask8) -1, (R)); }) 948288943Sdim 949288943Sdim 950288943Sdim#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \ 951288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \ 952288943Sdim (__v8df) (B), -(__v8df) (C), \ 953288943Sdim (__mmask8) (U), (R)); }) 954288943Sdim 955288943Sdim 956288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 957288943Sdim_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) 958277325Sdim{ 959288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 960288943Sdim (__v8df) __B, 961288943Sdim (__v8df) __C, 962288943Sdim (__mmask8) -1, 963288943Sdim _MM_FROUND_CUR_DIRECTION); 964277325Sdim} 965288943Sdim 966288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 967288943Sdim_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 968277325Sdim{ 969288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 970288943Sdim (__v8df) __B, 971288943Sdim (__v8df) __C, 972288943Sdim (__mmask8) __U, 973288943Sdim _MM_FROUND_CUR_DIRECTION); 974277325Sdim} 975277325Sdim 976288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 977288943Sdim_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 978277325Sdim{ 979288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A, 980288943Sdim (__v8df) __B, 981288943Sdim (__v8df) __C, 982288943Sdim (__mmask8) __U, 983288943Sdim _MM_FROUND_CUR_DIRECTION); 984277325Sdim} 985277325Sdim 986288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 987288943Sdim_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 988288943Sdim{ 989288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, 990288943Sdim (__v8df) __B, 991288943Sdim (__v8df) __C, 992288943Sdim (__mmask8) __U, 993288943Sdim _MM_FROUND_CUR_DIRECTION); 994288943Sdim} 995288943Sdim 996288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 997277325Sdim_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) 998277325Sdim{ 999288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 1000288943Sdim (__v8df) __B, 1001288943Sdim -(__v8df) __C, 1002288943Sdim (__mmask8) -1, 1003288943Sdim _MM_FROUND_CUR_DIRECTION); 1004277325Sdim} 1005277325Sdim 1006288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1007288943Sdim_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1008288943Sdim{ 1009288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 1010288943Sdim (__v8df) __B, 1011288943Sdim -(__v8df) __C, 1012288943Sdim (__mmask8) __U, 1013288943Sdim _MM_FROUND_CUR_DIRECTION); 1014288943Sdim} 1015288943Sdim 1016288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1017288943Sdim_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1018288943Sdim{ 1019288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, 1020288943Sdim (__v8df) __B, 1021288943Sdim -(__v8df) __C, 1022288943Sdim (__mmask8) __U, 1023288943Sdim _MM_FROUND_CUR_DIRECTION); 1024288943Sdim} 1025288943Sdim 1026288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1027277325Sdim_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) 1028277325Sdim{ 1029288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, 1030288943Sdim (__v8df) __B, 1031288943Sdim (__v8df) __C, 1032288943Sdim (__mmask8) -1, 1033288943Sdim _MM_FROUND_CUR_DIRECTION); 1034277325Sdim} 1035277325Sdim 1036288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1037288943Sdim_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1038288943Sdim{ 1039288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A, 1040288943Sdim (__v8df) __B, 1041288943Sdim (__v8df) __C, 1042288943Sdim (__mmask8) __U, 1043288943Sdim _MM_FROUND_CUR_DIRECTION); 1044288943Sdim} 1045288943Sdim 1046288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1047288943Sdim_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1048288943Sdim{ 1049288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, 1050288943Sdim (__v8df) __B, 1051288943Sdim (__v8df) __C, 1052288943Sdim (__mmask8) __U, 1053288943Sdim _MM_FROUND_CUR_DIRECTION); 1054288943Sdim} 1055288943Sdim 1056288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1057288943Sdim_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) 1058288943Sdim{ 1059288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, 1060288943Sdim (__v8df) __B, 1061288943Sdim -(__v8df) __C, 1062288943Sdim (__mmask8) -1, 1063288943Sdim _MM_FROUND_CUR_DIRECTION); 1064288943Sdim} 1065288943Sdim 1066288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1067288943Sdim_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1068288943Sdim{ 1069288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, 1070288943Sdim (__v8df) __B, 1071288943Sdim -(__v8df) __C, 1072288943Sdim (__mmask8) __U, 1073288943Sdim _MM_FROUND_CUR_DIRECTION); 1074288943Sdim} 1075288943Sdim 1076288943Sdim#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \ 1077288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1078288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1079288943Sdim (__mmask16) -1, (R)); }) 1080288943Sdim 1081288943Sdim 1082288943Sdim#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \ 1083288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1084288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1085288943Sdim (__mmask16) (U), (R)); }) 1086288943Sdim 1087288943Sdim 1088288943Sdim#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \ 1089288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \ 1090288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1091288943Sdim (__mmask16) (U), (R)); }) 1092288943Sdim 1093288943Sdim 1094288943Sdim#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \ 1095288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \ 1096288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1097288943Sdim (__mmask16) (U), (R)); }) 1098288943Sdim 1099288943Sdim 1100288943Sdim#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \ 1101288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1102288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1103288943Sdim (__mmask16) -1, (R)); }) 1104288943Sdim 1105288943Sdim 1106288943Sdim#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \ 1107288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1108288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1109288943Sdim (__mmask16) (U), (R)); }) 1110288943Sdim 1111288943Sdim 1112288943Sdim#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \ 1113288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \ 1114288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1115288943Sdim (__mmask16) (U), (R)); }) 1116288943Sdim 1117288943Sdim 1118288943Sdim#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \ 1119288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \ 1120288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1121288943Sdim (__mmask16) -1, (R)); }) 1122288943Sdim 1123288943Sdim 1124288943Sdim#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \ 1125288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \ 1126288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1127288943Sdim (__mmask16) (U), (R)); }) 1128288943Sdim 1129288943Sdim 1130288943Sdim#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \ 1131288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \ 1132288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1133288943Sdim (__mmask16) (U), (R)); }) 1134288943Sdim 1135288943Sdim 1136288943Sdim#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \ 1137288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \ 1138288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1139288943Sdim (__mmask16) -1, (R)); }) 1140288943Sdim 1141288943Sdim 1142288943Sdim#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \ 1143288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \ 1144288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1145288943Sdim (__mmask16) (U), (R)); }) 1146288943Sdim 1147288943Sdim 1148288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1149277325Sdim_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) 1150277325Sdim{ 1151288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1152288943Sdim (__v16sf) __B, 1153288943Sdim (__v16sf) __C, 1154288943Sdim (__mmask16) -1, 1155288943Sdim _MM_FROUND_CUR_DIRECTION); 1156277325Sdim} 1157277325Sdim 1158288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1159288943Sdim_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1160288943Sdim{ 1161288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1162288943Sdim (__v16sf) __B, 1163288943Sdim (__v16sf) __C, 1164288943Sdim (__mmask16) __U, 1165288943Sdim _MM_FROUND_CUR_DIRECTION); 1166288943Sdim} 1167288943Sdim 1168288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1169288943Sdim_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1170288943Sdim{ 1171288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A, 1172288943Sdim (__v16sf) __B, 1173288943Sdim (__v16sf) __C, 1174288943Sdim (__mmask16) __U, 1175288943Sdim _MM_FROUND_CUR_DIRECTION); 1176288943Sdim} 1177288943Sdim 1178288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1179288943Sdim_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1180288943Sdim{ 1181288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, 1182288943Sdim (__v16sf) __B, 1183288943Sdim (__v16sf) __C, 1184288943Sdim (__mmask16) __U, 1185288943Sdim _MM_FROUND_CUR_DIRECTION); 1186288943Sdim} 1187288943Sdim 1188288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1189277325Sdim_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) 1190277325Sdim{ 1191288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1192288943Sdim (__v16sf) __B, 1193288943Sdim -(__v16sf) __C, 1194288943Sdim (__mmask16) -1, 1195288943Sdim _MM_FROUND_CUR_DIRECTION); 1196277325Sdim} 1197277325Sdim 1198288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1199288943Sdim_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1200288943Sdim{ 1201288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1202288943Sdim (__v16sf) __B, 1203288943Sdim -(__v16sf) __C, 1204288943Sdim (__mmask16) __U, 1205288943Sdim _MM_FROUND_CUR_DIRECTION); 1206288943Sdim} 1207288943Sdim 1208288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1209288943Sdim_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1210288943Sdim{ 1211288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, 1212288943Sdim (__v16sf) __B, 1213288943Sdim -(__v16sf) __C, 1214288943Sdim (__mmask16) __U, 1215288943Sdim _MM_FROUND_CUR_DIRECTION); 1216288943Sdim} 1217288943Sdim 1218288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1219277325Sdim_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) 1220277325Sdim{ 1221288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, 1222288943Sdim (__v16sf) __B, 1223288943Sdim (__v16sf) __C, 1224288943Sdim (__mmask16) -1, 1225288943Sdim _MM_FROUND_CUR_DIRECTION); 1226277325Sdim} 1227277325Sdim 1228288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1229288943Sdim_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1230288943Sdim{ 1231288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A, 1232288943Sdim (__v16sf) __B, 1233288943Sdim (__v16sf) __C, 1234288943Sdim (__mmask16) __U, 1235288943Sdim _MM_FROUND_CUR_DIRECTION); 1236288943Sdim} 1237288943Sdim 1238288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1239288943Sdim_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1240288943Sdim{ 1241288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, 1242288943Sdim (__v16sf) __B, 1243288943Sdim (__v16sf) __C, 1244288943Sdim (__mmask16) __U, 1245288943Sdim _MM_FROUND_CUR_DIRECTION); 1246288943Sdim} 1247288943Sdim 1248288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1249288943Sdim_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) 1250288943Sdim{ 1251288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, 1252288943Sdim (__v16sf) __B, 1253288943Sdim -(__v16sf) __C, 1254288943Sdim (__mmask16) -1, 1255288943Sdim _MM_FROUND_CUR_DIRECTION); 1256288943Sdim} 1257288943Sdim 1258288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1259288943Sdim_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1260288943Sdim{ 1261288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, 1262288943Sdim (__v16sf) __B, 1263288943Sdim -(__v16sf) __C, 1264288943Sdim (__mmask16) __U, 1265288943Sdim _MM_FROUND_CUR_DIRECTION); 1266288943Sdim} 1267288943Sdim 1268288943Sdim#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \ 1269288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1270288943Sdim (__v8df) (B), (__v8df) (C), \ 1271288943Sdim (__mmask8) -1, (R)); }) 1272288943Sdim 1273288943Sdim 1274288943Sdim#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \ 1275288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1276288943Sdim (__v8df) (B), (__v8df) (C), \ 1277288943Sdim (__mmask8) (U), (R)); }) 1278288943Sdim 1279288943Sdim 1280288943Sdim#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \ 1281288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \ 1282288943Sdim (__v8df) (B), (__v8df) (C), \ 1283288943Sdim (__mmask8) (U), (R)); }) 1284288943Sdim 1285288943Sdim 1286288943Sdim#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \ 1287288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \ 1288288943Sdim (__v8df) (B), (__v8df) (C), \ 1289288943Sdim (__mmask8) (U), (R)); }) 1290288943Sdim 1291288943Sdim 1292288943Sdim#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \ 1293288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1294288943Sdim (__v8df) (B), -(__v8df) (C), \ 1295288943Sdim (__mmask8) -1, (R)); }) 1296288943Sdim 1297288943Sdim 1298288943Sdim#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \ 1299288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1300288943Sdim (__v8df) (B), -(__v8df) (C), \ 1301288943Sdim (__mmask8) (U), (R)); }) 1302288943Sdim 1303288943Sdim 1304288943Sdim#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \ 1305288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \ 1306288943Sdim (__v8df) (B), -(__v8df) (C), \ 1307288943Sdim (__mmask8) (U), (R)); }) 1308288943Sdim 1309288943Sdim 1310288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1311288943Sdim_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) 1312288943Sdim{ 1313288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1314288943Sdim (__v8df) __B, 1315288943Sdim (__v8df) __C, 1316288943Sdim (__mmask8) -1, 1317288943Sdim _MM_FROUND_CUR_DIRECTION); 1318288943Sdim} 1319288943Sdim 1320288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1321288943Sdim_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1322288943Sdim{ 1323288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1324288943Sdim (__v8df) __B, 1325288943Sdim (__v8df) __C, 1326288943Sdim (__mmask8) __U, 1327288943Sdim _MM_FROUND_CUR_DIRECTION); 1328288943Sdim} 1329288943Sdim 1330288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1331288943Sdim_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1332288943Sdim{ 1333288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A, 1334288943Sdim (__v8df) __B, 1335288943Sdim (__v8df) __C, 1336288943Sdim (__mmask8) __U, 1337288943Sdim _MM_FROUND_CUR_DIRECTION); 1338288943Sdim} 1339288943Sdim 1340288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1341288943Sdim_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1342288943Sdim{ 1343288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, 1344288943Sdim (__v8df) __B, 1345288943Sdim (__v8df) __C, 1346288943Sdim (__mmask8) __U, 1347288943Sdim _MM_FROUND_CUR_DIRECTION); 1348288943Sdim} 1349288943Sdim 1350288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1351288943Sdim_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) 1352288943Sdim{ 1353288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1354288943Sdim (__v8df) __B, 1355288943Sdim -(__v8df) __C, 1356288943Sdim (__mmask8) -1, 1357288943Sdim _MM_FROUND_CUR_DIRECTION); 1358288943Sdim} 1359288943Sdim 1360288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1361288943Sdim_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1362288943Sdim{ 1363288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1364288943Sdim (__v8df) __B, 1365288943Sdim -(__v8df) __C, 1366288943Sdim (__mmask8) __U, 1367288943Sdim _MM_FROUND_CUR_DIRECTION); 1368288943Sdim} 1369288943Sdim 1370288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1371288943Sdim_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1372288943Sdim{ 1373288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, 1374288943Sdim (__v8df) __B, 1375288943Sdim -(__v8df) __C, 1376288943Sdim (__mmask8) __U, 1377288943Sdim _MM_FROUND_CUR_DIRECTION); 1378288943Sdim} 1379288943Sdim 1380288943Sdim#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \ 1381288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 1382288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1383288943Sdim (__mmask16) -1, (R)); }) 1384288943Sdim 1385288943Sdim 1386288943Sdim#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \ 1387288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 1388288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1389288943Sdim (__mmask16) (U), (R)); }) 1390288943Sdim 1391288943Sdim 1392288943Sdim#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \ 1393288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \ 1394288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1395288943Sdim (__mmask16) (U), (R)); }) 1396288943Sdim 1397288943Sdim 1398288943Sdim#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \ 1399288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \ 1400288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1401288943Sdim (__mmask16) (U), (R)); }) 1402288943Sdim 1403288943Sdim 1404288943Sdim#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \ 1405288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 1406288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1407288943Sdim (__mmask16) -1, (R)); }) 1408288943Sdim 1409288943Sdim 1410288943Sdim#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \ 1411288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 1412288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1413288943Sdim (__mmask16) (U), (R)); }) 1414288943Sdim 1415288943Sdim 1416288943Sdim#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \ 1417288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \ 1418288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1419288943Sdim (__mmask16) (U), (R)); }) 1420288943Sdim 1421288943Sdim 1422288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1423288943Sdim_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) 1424288943Sdim{ 1425288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 1426288943Sdim (__v16sf) __B, 1427288943Sdim (__v16sf) __C, 1428288943Sdim (__mmask16) -1, 1429288943Sdim _MM_FROUND_CUR_DIRECTION); 1430288943Sdim} 1431288943Sdim 1432288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1433288943Sdim_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1434288943Sdim{ 1435288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 1436288943Sdim (__v16sf) __B, 1437288943Sdim (__v16sf) __C, 1438288943Sdim (__mmask16) __U, 1439288943Sdim _MM_FROUND_CUR_DIRECTION); 1440288943Sdim} 1441288943Sdim 1442288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1443288943Sdim_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1444288943Sdim{ 1445288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A, 1446288943Sdim (__v16sf) __B, 1447288943Sdim (__v16sf) __C, 1448288943Sdim (__mmask16) __U, 1449288943Sdim _MM_FROUND_CUR_DIRECTION); 1450288943Sdim} 1451288943Sdim 1452288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1453288943Sdim_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1454288943Sdim{ 1455288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, 1456288943Sdim (__v16sf) __B, 1457288943Sdim (__v16sf) __C, 1458288943Sdim (__mmask16) __U, 1459288943Sdim _MM_FROUND_CUR_DIRECTION); 1460288943Sdim} 1461288943Sdim 1462288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1463288943Sdim_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) 1464288943Sdim{ 1465288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 1466288943Sdim (__v16sf) __B, 1467288943Sdim -(__v16sf) __C, 1468288943Sdim (__mmask16) -1, 1469288943Sdim _MM_FROUND_CUR_DIRECTION); 1470288943Sdim} 1471288943Sdim 1472288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1473288943Sdim_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1474288943Sdim{ 1475288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 1476288943Sdim (__v16sf) __B, 1477288943Sdim -(__v16sf) __C, 1478288943Sdim (__mmask16) __U, 1479288943Sdim _MM_FROUND_CUR_DIRECTION); 1480288943Sdim} 1481288943Sdim 1482288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1483288943Sdim_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1484288943Sdim{ 1485288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, 1486288943Sdim (__v16sf) __B, 1487288943Sdim -(__v16sf) __C, 1488288943Sdim (__mmask16) __U, 1489288943Sdim _MM_FROUND_CUR_DIRECTION); 1490288943Sdim} 1491288943Sdim 1492288943Sdim#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \ 1493288943Sdim (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \ 1494288943Sdim (__v8df) (B), (__v8df) (C), \ 1495288943Sdim (__mmask8) (U), (R)); }) 1496288943Sdim 1497288943Sdim 1498288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1499288943Sdim_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1500288943Sdim{ 1501288943Sdim return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A, 1502288943Sdim (__v8df) __B, 1503288943Sdim (__v8df) __C, 1504288943Sdim (__mmask8) __U, 1505288943Sdim _MM_FROUND_CUR_DIRECTION); 1506288943Sdim} 1507288943Sdim 1508288943Sdim#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \ 1509288943Sdim (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \ 1510288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1511288943Sdim (__mmask16) (U), (R)); }) 1512288943Sdim 1513288943Sdim 1514288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1515288943Sdim_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1516288943Sdim{ 1517288943Sdim return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A, 1518288943Sdim (__v16sf) __B, 1519288943Sdim (__v16sf) __C, 1520288943Sdim (__mmask16) __U, 1521288943Sdim _MM_FROUND_CUR_DIRECTION); 1522288943Sdim} 1523288943Sdim 1524288943Sdim#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \ 1525288943Sdim (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \ 1526288943Sdim (__v8df) (B), (__v8df) (C), \ 1527288943Sdim (__mmask8) (U), (R)); }) 1528288943Sdim 1529288943Sdim 1530288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1531288943Sdim_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1532288943Sdim{ 1533288943Sdim return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A, 1534288943Sdim (__v8df) __B, 1535288943Sdim (__v8df) __C, 1536288943Sdim (__mmask8) __U, 1537288943Sdim _MM_FROUND_CUR_DIRECTION); 1538288943Sdim} 1539288943Sdim 1540288943Sdim#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \ 1541288943Sdim (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \ 1542288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1543288943Sdim (__mmask16) (U), (R)); }) 1544288943Sdim 1545288943Sdim 1546288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1547288943Sdim_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1548288943Sdim{ 1549288943Sdim return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A, 1550288943Sdim (__v16sf) __B, 1551288943Sdim (__v16sf) __C, 1552288943Sdim (__mmask16) __U, 1553288943Sdim _MM_FROUND_CUR_DIRECTION); 1554288943Sdim} 1555288943Sdim 1556288943Sdim#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \ 1557288943Sdim (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \ 1558288943Sdim (__v8df) (B), (__v8df) (C), \ 1559288943Sdim (__mmask8) (U), (R)); }) 1560288943Sdim 1561288943Sdim 1562288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1563288943Sdim_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1564288943Sdim{ 1565288943Sdim return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A, 1566288943Sdim (__v8df) __B, 1567288943Sdim (__v8df) __C, 1568288943Sdim (__mmask8) __U, 1569288943Sdim _MM_FROUND_CUR_DIRECTION); 1570288943Sdim} 1571288943Sdim 1572288943Sdim#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \ 1573288943Sdim (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \ 1574288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1575288943Sdim (__mmask16) (U), (R)); }) 1576288943Sdim 1577288943Sdim 1578288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1579288943Sdim_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1580288943Sdim{ 1581288943Sdim return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A, 1582288943Sdim (__v16sf) __B, 1583288943Sdim (__v16sf) __C, 1584288943Sdim (__mmask16) __U, 1585288943Sdim _MM_FROUND_CUR_DIRECTION); 1586288943Sdim} 1587288943Sdim 1588288943Sdim#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \ 1589288943Sdim (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \ 1590288943Sdim (__v8df) (B), (__v8df) (C), \ 1591288943Sdim (__mmask8) (U), (R)); }) 1592288943Sdim 1593288943Sdim 1594288943Sdim#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \ 1595288943Sdim (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \ 1596288943Sdim (__v8df) (B), (__v8df) (C), \ 1597288943Sdim (__mmask8) (U), (R)); }) 1598288943Sdim 1599288943Sdim 1600288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1601288943Sdim_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1602288943Sdim{ 1603288943Sdim return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A, 1604288943Sdim (__v8df) __B, 1605288943Sdim (__v8df) __C, 1606288943Sdim (__mmask8) __U, 1607288943Sdim _MM_FROUND_CUR_DIRECTION); 1608288943Sdim} 1609288943Sdim 1610288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1611288943Sdim_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1612288943Sdim{ 1613288943Sdim return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A, 1614288943Sdim (__v8df) __B, 1615288943Sdim (__v8df) __C, 1616288943Sdim (__mmask8) __U, 1617288943Sdim _MM_FROUND_CUR_DIRECTION); 1618288943Sdim} 1619288943Sdim 1620288943Sdim#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \ 1621288943Sdim (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \ 1622288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1623288943Sdim (__mmask16) (U), (R)); }) 1624288943Sdim 1625288943Sdim 1626288943Sdim#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \ 1627288943Sdim (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \ 1628288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1629288943Sdim (__mmask16) (U), (R)); }) 1630288943Sdim 1631288943Sdim 1632288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1633288943Sdim_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1634288943Sdim{ 1635288943Sdim return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A, 1636288943Sdim (__v16sf) __B, 1637288943Sdim (__v16sf) __C, 1638288943Sdim (__mmask16) __U, 1639288943Sdim _MM_FROUND_CUR_DIRECTION); 1640288943Sdim} 1641288943Sdim 1642288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1643288943Sdim_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1644288943Sdim{ 1645288943Sdim return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A, 1646288943Sdim (__v16sf) __B, 1647288943Sdim (__v16sf) __C, 1648288943Sdim (__mmask16) __U, 1649288943Sdim _MM_FROUND_CUR_DIRECTION); 1650288943Sdim} 1651288943Sdim 1652288943Sdim 1653288943Sdim 1654277325Sdim/* Vector permutations */ 1655277325Sdim 1656288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1657277325Sdim_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B) 1658277325Sdim{ 1659277325Sdim return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I 1660277325Sdim /* idx */ , 1661277325Sdim (__v16si) __A, 1662277325Sdim (__v16si) __B, 1663277325Sdim (__mmask16) -1); 1664277325Sdim} 1665288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1666277325Sdim_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B) 1667277325Sdim{ 1668277325Sdim return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I 1669277325Sdim /* idx */ , 1670277325Sdim (__v8di) __A, 1671277325Sdim (__v8di) __B, 1672277325Sdim (__mmask8) -1); 1673277325Sdim} 1674277325Sdim 1675288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1676277325Sdim_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B) 1677277325Sdim{ 1678277325Sdim return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I 1679277325Sdim /* idx */ , 1680277325Sdim (__v8df) __A, 1681277325Sdim (__v8df) __B, 1682277325Sdim (__mmask8) -1); 1683277325Sdim} 1684288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1685277325Sdim_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B) 1686277325Sdim{ 1687277325Sdim return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I 1688277325Sdim /* idx */ , 1689277325Sdim (__v16sf) __A, 1690277325Sdim (__v16sf) __B, 1691277325Sdim (__mmask16) -1); 1692277325Sdim} 1693277325Sdim 1694288943Sdim#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \ 1695288943Sdim (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \ 1696288943Sdim (__v8di)(__m512i)(B), \ 1697288943Sdim (I), (__v8di)_mm512_setzero_si512(), \ 1698288943Sdim (__mmask8)-1); }) 1699277325Sdim 1700288943Sdim#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \ 1701288943Sdim (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \ 1702288943Sdim (__v16si)(__m512i)(B), \ 1703288943Sdim (I), (__v16si)_mm512_setzero_si512(), \ 1704288943Sdim (__mmask16)-1); }) 1705277325Sdim 1706288943Sdim/* Vector Extract */ 1707288943Sdim 1708288943Sdim#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \ 1709288943Sdim __m512d __A = (A); \ 1710288943Sdim (__m256d) \ 1711288943Sdim __builtin_ia32_extractf64x4_mask((__v8df)__A, \ 1712288943Sdim (I), \ 1713288943Sdim (__v4df)_mm256_setzero_si256(), \ 1714288943Sdim (__mmask8) -1); }) 1715288943Sdim 1716288943Sdim#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \ 1717288943Sdim __m512 __A = (A); \ 1718288943Sdim (__m128) \ 1719288943Sdim __builtin_ia32_extractf32x4_mask((__v16sf)__A, \ 1720288943Sdim (I), \ 1721288943Sdim (__v4sf)_mm_setzero_ps(), \ 1722288943Sdim (__mmask8) -1); }) 1723288943Sdim 1724277325Sdim/* Vector Blend */ 1725277325Sdim 1726288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1727277325Sdim_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W) 1728277325Sdim{ 1729277325Sdim return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A, 1730277325Sdim (__v8df) __W, 1731277325Sdim (__mmask8) __U); 1732277325Sdim} 1733277325Sdim 1734288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1735277325Sdim_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W) 1736277325Sdim{ 1737277325Sdim return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A, 1738277325Sdim (__v16sf) __W, 1739277325Sdim (__mmask16) __U); 1740277325Sdim} 1741277325Sdim 1742288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1743277325Sdim_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W) 1744277325Sdim{ 1745277325Sdim return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A, 1746277325Sdim (__v8di) __W, 1747277325Sdim (__mmask8) __U); 1748277325Sdim} 1749277325Sdim 1750288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1751277325Sdim_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W) 1752277325Sdim{ 1753277325Sdim return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A, 1754277325Sdim (__v16si) __W, 1755277325Sdim (__mmask16) __U); 1756277325Sdim} 1757277325Sdim 1758277325Sdim/* Compare */ 1759277325Sdim 1760288943Sdim#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \ 1761288943Sdim (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \ 1762288943Sdim (__v16sf)(__m512)(B), \ 1763288943Sdim (P), (__mmask16)-1, (R)); }) 1764277325Sdim 1765288943Sdim#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \ 1766288943Sdim (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \ 1767288943Sdim (__v16sf)(__m512)(B), \ 1768288943Sdim (P), (__mmask16)(U), (R)); }) 1769277325Sdim 1770288943Sdim#define _mm512_cmp_ps_mask(A, B, P) \ 1771288943Sdim _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION) 1772288943Sdim 1773288943Sdim#define _mm512_mask_cmp_ps_mask(U, A, B, P) \ 1774288943Sdim _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION) 1775288943Sdim 1776288943Sdim#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \ 1777288943Sdim (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \ 1778288943Sdim (__v8df)(__m512d)(B), \ 1779288943Sdim (P), (__mmask8)-1, (R)); }) 1780288943Sdim 1781288943Sdim#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \ 1782288943Sdim (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \ 1783288943Sdim (__v8df)(__m512d)(B), \ 1784288943Sdim (P), (__mmask8)(U), (R)); }) 1785288943Sdim 1786288943Sdim#define _mm512_cmp_pd_mask(A, B, P) \ 1787288943Sdim _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION) 1788288943Sdim 1789288943Sdim#define _mm512_mask_cmp_pd_mask(U, A, B, P) \ 1790288943Sdim _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION) 1791288943Sdim 1792277325Sdim/* Conversion */ 1793277325Sdim 1794288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1795277325Sdim_mm512_cvttps_epu32(__m512 __A) 1796277325Sdim{ 1797277325Sdim return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, 1798277325Sdim (__v16si) 1799277325Sdim _mm512_setzero_si512 (), 1800277325Sdim (__mmask16) -1, 1801277325Sdim _MM_FROUND_CUR_DIRECTION); 1802277325Sdim} 1803277325Sdim 1804288943Sdim#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \ 1805288943Sdim (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \ 1806288943Sdim (__v16sf)_mm512_setzero_ps(), \ 1807288943Sdim (__mmask16)-1, (R)); }) 1808277325Sdim 1809288943Sdim#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \ 1810288943Sdim (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \ 1811288943Sdim (__v16sf)_mm512_setzero_ps(), \ 1812288943Sdim (__mmask16)-1, (R)); }) 1813277325Sdim 1814288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1815277325Sdim_mm512_cvtepi32_pd(__m256i __A) 1816277325Sdim{ 1817277325Sdim return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A, 1818277325Sdim (__v8df) 1819277325Sdim _mm512_setzero_pd (), 1820277325Sdim (__mmask8) -1); 1821277325Sdim} 1822277325Sdim 1823288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1824277325Sdim_mm512_cvtepu32_pd(__m256i __A) 1825277325Sdim{ 1826277325Sdim return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A, 1827277325Sdim (__v8df) 1828277325Sdim _mm512_setzero_pd (), 1829277325Sdim (__mmask8) -1); 1830277325Sdim} 1831277325Sdim 1832288943Sdim#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \ 1833288943Sdim (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \ 1834288943Sdim (__v8sf)_mm256_setzero_ps(), \ 1835288943Sdim (__mmask8)-1, (R)); }) 1836277325Sdim 1837288943Sdim#define _mm512_cvtps_ph(A, I) __extension__ ({ \ 1838288943Sdim (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \ 1839288943Sdim (__v16hi)_mm256_setzero_si256(), \ 1840288943Sdim -1); }) 1841288943Sdim 1842288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1843277325Sdim_mm512_cvtph_ps(__m256i __A) 1844277325Sdim{ 1845277325Sdim return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, 1846277325Sdim (__v16sf) 1847277325Sdim _mm512_setzero_ps (), 1848277325Sdim (__mmask16) -1, 1849277325Sdim _MM_FROUND_CUR_DIRECTION); 1850277325Sdim} 1851277325Sdim 1852288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1853277325Sdim_mm512_cvttps_epi32(__m512 a) 1854277325Sdim{ 1855277325Sdim return (__m512i) 1856277325Sdim __builtin_ia32_cvttps2dq512_mask((__v16sf) a, 1857277325Sdim (__v16si) _mm512_setzero_si512 (), 1858277325Sdim (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); 1859277325Sdim} 1860277325Sdim 1861288943Sdimstatic __inline __m256i __DEFAULT_FN_ATTRS 1862277325Sdim_mm512_cvttpd_epi32(__m512d a) 1863277325Sdim{ 1864277325Sdim return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a, 1865277325Sdim (__v8si)_mm256_setzero_si256(), 1866277325Sdim (__mmask8) -1, 1867277325Sdim _MM_FROUND_CUR_DIRECTION); 1868277325Sdim} 1869277325Sdim 1870288943Sdim#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \ 1871288943Sdim (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \ 1872288943Sdim (__v8si)_mm256_setzero_si256(), \ 1873288943Sdim (__mmask8)-1, (R)); }) 1874277325Sdim 1875288943Sdim#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \ 1876288943Sdim (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \ 1877288943Sdim (__v16si)_mm512_setzero_si512(), \ 1878288943Sdim (__mmask16)-1, (R)); }) 1879277325Sdim 1880288943Sdim#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \ 1881288943Sdim (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \ 1882288943Sdim (__v16si)_mm512_setzero_si512(), \ 1883288943Sdim (__mmask16)-1, (R)); }) 1884288943Sdim 1885288943Sdim#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \ 1886288943Sdim (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \ 1887288943Sdim (__v8si)_mm256_setzero_si256(), \ 1888288943Sdim (__mmask8)-1, (R)); }) 1889288943Sdim 1890288943Sdim#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \ 1891288943Sdim (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \ 1892288943Sdim (__v16si)_mm512_setzero_si512(), \ 1893288943Sdim (__mmask16)-1, (R)); }) 1894288943Sdim 1895288943Sdim#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \ 1896288943Sdim (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \ 1897288943Sdim (__v8si)_mm256_setzero_si256(), \ 1898288943Sdim (__mmask8) -1, (R)); }) 1899288943Sdim 1900277325Sdim/* Unpack and Interleave */ 1901288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1902277325Sdim_mm512_unpackhi_pd(__m512d __a, __m512d __b) 1903277325Sdim{ 1904277325Sdim return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6); 1905277325Sdim} 1906277325Sdim 1907288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1908277325Sdim_mm512_unpacklo_pd(__m512d __a, __m512d __b) 1909277325Sdim{ 1910277325Sdim return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6); 1911277325Sdim} 1912277325Sdim 1913288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1914277325Sdim_mm512_unpackhi_ps(__m512 __a, __m512 __b) 1915277325Sdim{ 1916277325Sdim return __builtin_shufflevector(__a, __b, 1917277325Sdim 2, 18, 3, 19, 1918277325Sdim 2+4, 18+4, 3+4, 19+4, 1919277325Sdim 2+8, 18+8, 3+8, 19+8, 1920277325Sdim 2+12, 18+12, 3+12, 19+12); 1921277325Sdim} 1922277325Sdim 1923288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1924277325Sdim_mm512_unpacklo_ps(__m512 __a, __m512 __b) 1925277325Sdim{ 1926277325Sdim return __builtin_shufflevector(__a, __b, 1927277325Sdim 0, 16, 1, 17, 1928277325Sdim 0+4, 16+4, 1+4, 17+4, 1929277325Sdim 0+8, 16+8, 1+8, 17+8, 1930277325Sdim 0+12, 16+12, 1+12, 17+12); 1931277325Sdim} 1932277325Sdim 1933277325Sdim/* Bit Test */ 1934277325Sdim 1935288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS 1936277325Sdim_mm512_test_epi32_mask(__m512i __A, __m512i __B) 1937277325Sdim{ 1938277325Sdim return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A, 1939277325Sdim (__v16si) __B, 1940277325Sdim (__mmask16) -1); 1941277325Sdim} 1942277325Sdim 1943288943Sdimstatic __inline __mmask8 __DEFAULT_FN_ATTRS 1944277325Sdim_mm512_test_epi64_mask(__m512i __A, __m512i __B) 1945277325Sdim{ 1946277325Sdim return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, 1947277325Sdim (__v8di) __B, 1948277325Sdim (__mmask8) -1); 1949277325Sdim} 1950277325Sdim 1951277325Sdim/* SIMD load ops */ 1952277325Sdim 1953288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1954277325Sdim_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P) 1955277325Sdim{ 1956277325Sdim return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P, 1957277325Sdim (__v16si) 1958277325Sdim _mm512_setzero_si512 (), 1959277325Sdim (__mmask16) __U); 1960277325Sdim} 1961277325Sdim 1962288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1963277325Sdim_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P) 1964277325Sdim{ 1965277325Sdim return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P, 1966277325Sdim (__v8di) 1967277325Sdim _mm512_setzero_si512 (), 1968277325Sdim (__mmask8) __U); 1969277325Sdim} 1970277325Sdim 1971288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1972277325Sdim_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P) 1973277325Sdim{ 1974277325Sdim return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P, 1975277325Sdim (__v16sf) 1976277325Sdim _mm512_setzero_ps (), 1977277325Sdim (__mmask16) __U); 1978277325Sdim} 1979277325Sdim 1980288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1981277325Sdim_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P) 1982277325Sdim{ 1983277325Sdim return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P, 1984277325Sdim (__v8df) 1985277325Sdim _mm512_setzero_pd (), 1986277325Sdim (__mmask8) __U); 1987277325Sdim} 1988277325Sdim 1989288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 1990288943Sdim_mm512_maskz_load_ps(__mmask16 __U, void const *__P) 1991288943Sdim{ 1992288943Sdim return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P, 1993288943Sdim (__v16sf) 1994288943Sdim _mm512_setzero_ps (), 1995288943Sdim (__mmask16) __U); 1996288943Sdim} 1997288943Sdim 1998288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 1999288943Sdim_mm512_maskz_load_pd(__mmask8 __U, void const *__P) 2000288943Sdim{ 2001288943Sdim return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P, 2002288943Sdim (__v8df) 2003288943Sdim _mm512_setzero_pd (), 2004288943Sdim (__mmask8) __U); 2005288943Sdim} 2006288943Sdim 2007288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2008277325Sdim_mm512_loadu_pd(double const *__p) 2009277325Sdim{ 2010277325Sdim struct __loadu_pd { 2011277325Sdim __m512d __v; 2012288943Sdim } __attribute__((__packed__, __may_alias__)); 2013277325Sdim return ((struct __loadu_pd*)__p)->__v; 2014277325Sdim} 2015277325Sdim 2016288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2017277325Sdim_mm512_loadu_ps(float const *__p) 2018277325Sdim{ 2019277325Sdim struct __loadu_ps { 2020277325Sdim __m512 __v; 2021288943Sdim } __attribute__((__packed__, __may_alias__)); 2022277325Sdim return ((struct __loadu_ps*)__p)->__v; 2023277325Sdim} 2024277325Sdim 2025288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2026288943Sdim_mm512_load_ps(double const *__p) 2027288943Sdim{ 2028288943Sdim return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p, 2029288943Sdim (__v16sf) 2030288943Sdim _mm512_setzero_ps (), 2031288943Sdim (__mmask16) -1); 2032288943Sdim} 2033288943Sdim 2034288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2035288943Sdim_mm512_load_pd(float const *__p) 2036288943Sdim{ 2037288943Sdim return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p, 2038288943Sdim (__v8df) 2039288943Sdim _mm512_setzero_pd (), 2040288943Sdim (__mmask8) -1); 2041288943Sdim} 2042288943Sdim 2043277325Sdim/* SIMD store ops */ 2044277325Sdim 2045288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2046277325Sdim_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) 2047277325Sdim{ 2048277325Sdim __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A, 2049277325Sdim (__mmask8) __U); 2050277325Sdim} 2051277325Sdim 2052288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2053277325Sdim_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) 2054277325Sdim{ 2055277325Sdim __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A, 2056277325Sdim (__mmask16) __U); 2057277325Sdim} 2058277325Sdim 2059288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2060277325Sdim_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A) 2061277325Sdim{ 2062277325Sdim __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U); 2063277325Sdim} 2064277325Sdim 2065288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2066277325Sdim_mm512_storeu_pd(void *__P, __m512d __A) 2067277325Sdim{ 2068277325Sdim __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1); 2069277325Sdim} 2070277325Sdim 2071288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2072277325Sdim_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A) 2073277325Sdim{ 2074277325Sdim __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A, 2075277325Sdim (__mmask16) __U); 2076277325Sdim} 2077277325Sdim 2078288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2079277325Sdim_mm512_storeu_ps(void *__P, __m512 __A) 2080277325Sdim{ 2081277325Sdim __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1); 2082277325Sdim} 2083277325Sdim 2084288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2085288943Sdim_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A) 2086277325Sdim{ 2087288943Sdim __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U); 2088277325Sdim} 2089277325Sdim 2090288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2091277325Sdim_mm512_store_pd(void *__P, __m512d __A) 2092277325Sdim{ 2093277325Sdim *(__m512d*)__P = __A; 2094277325Sdim} 2095277325Sdim 2096288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2097288943Sdim_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A) 2098288943Sdim{ 2099288943Sdim __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A, 2100288943Sdim (__mmask16) __U); 2101288943Sdim} 2102288943Sdim 2103288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2104288943Sdim_mm512_store_ps(void *__P, __m512 __A) 2105288943Sdim{ 2106288943Sdim *(__m512*)__P = __A; 2107288943Sdim} 2108288943Sdim 2109277325Sdim/* Mask ops */ 2110277325Sdim 2111288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS 2112277325Sdim_mm512_knot(__mmask16 __M) 2113277325Sdim{ 2114277325Sdim return __builtin_ia32_knothi(__M); 2115277325Sdim} 2116277325Sdim 2117277325Sdim/* Integer compare */ 2118277325Sdim 2119288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2120277325Sdim_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) { 2121277325Sdim return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b, 2122277325Sdim (__mmask16)-1); 2123277325Sdim} 2124277325Sdim 2125288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2126277325Sdim_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2127277325Sdim return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b, 2128277325Sdim __u); 2129277325Sdim} 2130277325Sdim 2131288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2132288943Sdim_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) { 2133288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0, 2134288943Sdim (__mmask16)-1); 2135288943Sdim} 2136288943Sdim 2137288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2138288943Sdim_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2139288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0, 2140288943Sdim __u); 2141288943Sdim} 2142288943Sdim 2143288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2144277325Sdim_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2145277325Sdim return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b, 2146277325Sdim __u); 2147277325Sdim} 2148277325Sdim 2149288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2150277325Sdim_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) { 2151277325Sdim return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b, 2152277325Sdim (__mmask8)-1); 2153277325Sdim} 2154277325Sdim 2155288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2156288943Sdim_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) { 2157288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0, 2158288943Sdim (__mmask8)-1); 2159288943Sdim} 2160288943Sdim 2161288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2162288943Sdim_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2163288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0, 2164288943Sdim __u); 2165288943Sdim} 2166288943Sdim 2167288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2168288943Sdim_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) { 2169288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2170288943Sdim (__mmask16)-1); 2171288943Sdim} 2172288943Sdim 2173288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2174288943Sdim_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2175288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2176288943Sdim __u); 2177288943Sdim} 2178288943Sdim 2179288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2180288943Sdim_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) { 2181288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2182288943Sdim (__mmask16)-1); 2183288943Sdim} 2184288943Sdim 2185288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2186288943Sdim_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2187288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2188288943Sdim __u); 2189288943Sdim} 2190288943Sdim 2191288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2192288943Sdim_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) { 2193288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2194288943Sdim (__mmask8)-1); 2195288943Sdim} 2196288943Sdim 2197288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2198288943Sdim_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2199288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2200288943Sdim __u); 2201288943Sdim} 2202288943Sdim 2203288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2204288943Sdim_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) { 2205288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2206288943Sdim (__mmask8)-1); 2207288943Sdim} 2208288943Sdim 2209288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2210288943Sdim_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2211288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2212288943Sdim __u); 2213288943Sdim} 2214288943Sdim 2215288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2216288943Sdim_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) { 2217288943Sdim return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b, 2218288943Sdim (__mmask16)-1); 2219288943Sdim} 2220288943Sdim 2221288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2222288943Sdim_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2223288943Sdim return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b, 2224288943Sdim __u); 2225288943Sdim} 2226288943Sdim 2227288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2228288943Sdim_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) { 2229288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6, 2230288943Sdim (__mmask16)-1); 2231288943Sdim} 2232288943Sdim 2233288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2234288943Sdim_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2235288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6, 2236288943Sdim __u); 2237288943Sdim} 2238288943Sdim 2239288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2240288943Sdim_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2241288943Sdim return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b, 2242288943Sdim __u); 2243288943Sdim} 2244288943Sdim 2245288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2246288943Sdim_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) { 2247288943Sdim return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b, 2248288943Sdim (__mmask8)-1); 2249288943Sdim} 2250288943Sdim 2251288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2252288943Sdim_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) { 2253288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6, 2254288943Sdim (__mmask8)-1); 2255288943Sdim} 2256288943Sdim 2257288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2258288943Sdim_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2259288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6, 2260288943Sdim __u); 2261288943Sdim} 2262288943Sdim 2263288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2264288943Sdim_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) { 2265288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2266288943Sdim (__mmask16)-1); 2267288943Sdim} 2268288943Sdim 2269288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2270288943Sdim_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2271288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2272288943Sdim __u); 2273288943Sdim} 2274288943Sdim 2275288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2276288943Sdim_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) { 2277288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2278288943Sdim (__mmask16)-1); 2279288943Sdim} 2280288943Sdim 2281288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2282288943Sdim_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2283288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2284288943Sdim __u); 2285288943Sdim} 2286288943Sdim 2287288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2288288943Sdim_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) { 2289288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2290288943Sdim (__mmask8)-1); 2291288943Sdim} 2292288943Sdim 2293288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2294288943Sdim_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2295288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2296288943Sdim __u); 2297288943Sdim} 2298288943Sdim 2299288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2300288943Sdim_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) { 2301288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2302288943Sdim (__mmask8)-1); 2303288943Sdim} 2304288943Sdim 2305288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2306288943Sdim_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2307288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2308288943Sdim __u); 2309288943Sdim} 2310288943Sdim 2311288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2312288943Sdim_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) { 2313288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2314288943Sdim (__mmask16)-1); 2315288943Sdim} 2316288943Sdim 2317288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2318288943Sdim_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2319288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2320288943Sdim __u); 2321288943Sdim} 2322288943Sdim 2323288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2324288943Sdim_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) { 2325288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2326288943Sdim (__mmask16)-1); 2327288943Sdim} 2328288943Sdim 2329288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2330288943Sdim_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2331288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2332288943Sdim __u); 2333288943Sdim} 2334288943Sdim 2335288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2336288943Sdim_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) { 2337288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2338288943Sdim (__mmask8)-1); 2339288943Sdim} 2340288943Sdim 2341288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2342288943Sdim_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2343288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2344288943Sdim __u); 2345288943Sdim} 2346288943Sdim 2347288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2348288943Sdim_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) { 2349288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2350288943Sdim (__mmask8)-1); 2351288943Sdim} 2352288943Sdim 2353288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2354288943Sdim_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2355288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2356288943Sdim __u); 2357288943Sdim} 2358288943Sdim 2359288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2360288943Sdim_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) { 2361288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2362288943Sdim (__mmask16)-1); 2363288943Sdim} 2364288943Sdim 2365288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2366288943Sdim_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2367288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2368288943Sdim __u); 2369288943Sdim} 2370288943Sdim 2371288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2372288943Sdim_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) { 2373288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2374288943Sdim (__mmask16)-1); 2375288943Sdim} 2376288943Sdim 2377288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2378288943Sdim_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2379288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2380288943Sdim __u); 2381288943Sdim} 2382288943Sdim 2383288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2384288943Sdim_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) { 2385288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4, 2386288943Sdim (__mmask8)-1); 2387288943Sdim} 2388288943Sdim 2389288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2390288943Sdim_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2391288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4, 2392288943Sdim __u); 2393288943Sdim} 2394288943Sdim 2395288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2396288943Sdim_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) { 2397288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4, 2398288943Sdim (__mmask8)-1); 2399288943Sdim} 2400288943Sdim 2401288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2402288943Sdim_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2403288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4, 2404288943Sdim __u); 2405288943Sdim} 2406288943Sdim 2407288943Sdim#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \ 2408288943Sdim __m512i __a = (a); \ 2409288943Sdim __m512i __b = (b); \ 2410288943Sdim (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \ 2411288943Sdim (__mmask16)-1); }) 2412288943Sdim 2413288943Sdim#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \ 2414288943Sdim __m512i __a = (a); \ 2415288943Sdim __m512i __b = (b); \ 2416288943Sdim (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \ 2417288943Sdim (__mmask16)-1); }) 2418288943Sdim 2419288943Sdim#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \ 2420288943Sdim __m512i __a = (a); \ 2421288943Sdim __m512i __b = (b); \ 2422288943Sdim (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \ 2423288943Sdim (__mmask8)-1); }) 2424288943Sdim 2425288943Sdim#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \ 2426288943Sdim __m512i __a = (a); \ 2427288943Sdim __m512i __b = (b); \ 2428288943Sdim (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \ 2429288943Sdim (__mmask8)-1); }) 2430288943Sdim 2431288943Sdim#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \ 2432288943Sdim __m512i __a = (a); \ 2433288943Sdim __m512i __b = (b); \ 2434288943Sdim (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \ 2435288943Sdim (__mmask16)(m)); }) 2436288943Sdim 2437288943Sdim#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \ 2438288943Sdim __m512i __a = (a); \ 2439288943Sdim __m512i __b = (b); \ 2440288943Sdim (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \ 2441288943Sdim (__mmask16)(m)); }) 2442288943Sdim 2443288943Sdim#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \ 2444288943Sdim __m512i __a = (a); \ 2445288943Sdim __m512i __b = (b); \ 2446288943Sdim (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \ 2447288943Sdim (__mmask8)(m)); }) 2448288943Sdim 2449288943Sdim#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \ 2450288943Sdim __m512i __a = (a); \ 2451288943Sdim __m512i __b = (b); \ 2452288943Sdim (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \ 2453288943Sdim (__mmask8)(m)); }) 2454288943Sdim 2455288943Sdim#undef __DEFAULT_FN_ATTRS 2456288943Sdim 2457277325Sdim#endif // __AVX512FINTRIN_H 2458