avx512fintrin.h revision 296417
1296417Sdim/*===---- avx512fintrin.h - AVX512F 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. */ 50296417Sdim#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f"))) 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 60296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 61296417Sdim_mm512_undefined_pd() 62296417Sdim{ 63296417Sdim return (__m512d)__builtin_ia32_undef512(); 64296417Sdim} 65296417Sdim 66296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 67296417Sdim_mm512_undefined() 68296417Sdim{ 69296417Sdim return (__m512)__builtin_ia32_undef512(); 70296417Sdim} 71296417Sdim 72296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 73296417Sdim_mm512_undefined_ps() 74296417Sdim{ 75296417Sdim return (__m512)__builtin_ia32_undef512(); 76296417Sdim} 77296417Sdim 78296417Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 79296417Sdim_mm512_undefined_epi32() 80296417Sdim{ 81296417Sdim return (__m512i)__builtin_ia32_undef512(); 82296417Sdim} 83296417Sdim 84288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 85277325Sdim_mm512_maskz_set1_epi32(__mmask16 __M, int __A) 86277325Sdim{ 87277325Sdim return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, 88277325Sdim (__v16si) 89277325Sdim _mm512_setzero_si512 (), 90277325Sdim __M); 91277325Sdim} 92277325Sdim 93288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 94277325Sdim_mm512_maskz_set1_epi64(__mmask8 __M, long long __A) 95277325Sdim{ 96277325Sdim#ifdef __x86_64__ 97277325Sdim return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, 98277325Sdim (__v8di) 99277325Sdim _mm512_setzero_si512 (), 100277325Sdim __M); 101277325Sdim#else 102277325Sdim return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A, 103277325Sdim (__v8di) 104277325Sdim _mm512_setzero_si512 (), 105277325Sdim __M); 106277325Sdim#endif 107277325Sdim} 108277325Sdim 109288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 110277325Sdim_mm512_setzero_ps(void) 111277325Sdim{ 112277325Sdim return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 113277325Sdim 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; 114277325Sdim} 115288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 116277325Sdim_mm512_setzero_pd(void) 117277325Sdim{ 118277325Sdim return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; 119277325Sdim} 120277325Sdim 121288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 122277325Sdim_mm512_set1_ps(float __w) 123277325Sdim{ 124277325Sdim return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w, 125277325Sdim __w, __w, __w, __w, __w, __w, __w, __w }; 126277325Sdim} 127277325Sdim 128288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 129277325Sdim_mm512_set1_pd(double __w) 130277325Sdim{ 131277325Sdim return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w }; 132277325Sdim} 133277325Sdim 134288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 135277325Sdim_mm512_set1_epi32(int __s) 136277325Sdim{ 137277325Sdim return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s, 138277325Sdim __s, __s, __s, __s, __s, __s, __s, __s }; 139277325Sdim} 140277325Sdim 141288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 142277325Sdim_mm512_set1_epi64(long long __d) 143277325Sdim{ 144277325Sdim return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d }; 145277325Sdim} 146277325Sdim 147288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 148277325Sdim_mm512_broadcastss_ps(__m128 __X) 149277325Sdim{ 150277325Sdim float __f = __X[0]; 151277325Sdim return (__v16sf){ __f, __f, __f, __f, 152277325Sdim __f, __f, __f, __f, 153277325Sdim __f, __f, __f, __f, 154277325Sdim __f, __f, __f, __f }; 155277325Sdim} 156277325Sdim 157288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 158277325Sdim_mm512_broadcastsd_pd(__m128d __X) 159277325Sdim{ 160277325Sdim double __d = __X[0]; 161277325Sdim return (__v8df){ __d, __d, __d, __d, 162277325Sdim __d, __d, __d, __d }; 163277325Sdim} 164277325Sdim 165277325Sdim/* Cast between vector types */ 166277325Sdim 167288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 168277325Sdim_mm512_castpd256_pd512(__m256d __a) 169277325Sdim{ 170277325Sdim return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1); 171277325Sdim} 172277325Sdim 173288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 174277325Sdim_mm512_castps256_ps512(__m256 __a) 175277325Sdim{ 176277325Sdim return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7, 177277325Sdim -1, -1, -1, -1, -1, -1, -1, -1); 178277325Sdim} 179277325Sdim 180288943Sdimstatic __inline __m128d __DEFAULT_FN_ATTRS 181277325Sdim_mm512_castpd512_pd128(__m512d __a) 182277325Sdim{ 183277325Sdim return __builtin_shufflevector(__a, __a, 0, 1); 184277325Sdim} 185277325Sdim 186288943Sdimstatic __inline __m128 __DEFAULT_FN_ATTRS 187277325Sdim_mm512_castps512_ps128(__m512 __a) 188277325Sdim{ 189277325Sdim return __builtin_shufflevector(__a, __a, 0, 1, 2, 3); 190277325Sdim} 191277325Sdim 192288943Sdim/* Bitwise operators */ 193288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 194288943Sdim_mm512_and_epi32(__m512i __a, __m512i __b) 195288943Sdim{ 196288943Sdim return __a & __b; 197288943Sdim} 198288943Sdim 199288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 200288943Sdim_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b) 201288943Sdim{ 202288943Sdim return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a, 203288943Sdim (__v16si) __b, 204288943Sdim (__v16si) __src, 205288943Sdim (__mmask16) __k); 206288943Sdim} 207288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 208288943Sdim_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) 209288943Sdim{ 210288943Sdim return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a, 211288943Sdim (__v16si) __b, 212288943Sdim (__v16si) 213288943Sdim _mm512_setzero_si512 (), 214288943Sdim (__mmask16) __k); 215288943Sdim} 216288943Sdim 217288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 218288943Sdim_mm512_and_epi64(__m512i __a, __m512i __b) 219288943Sdim{ 220288943Sdim return __a & __b; 221288943Sdim} 222288943Sdim 223288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 224288943Sdim_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b) 225288943Sdim{ 226288943Sdim return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a, 227288943Sdim (__v8di) __b, 228288943Sdim (__v8di) __src, 229288943Sdim (__mmask8) __k); 230288943Sdim} 231288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 232288943Sdim_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) 233288943Sdim{ 234288943Sdim return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a, 235288943Sdim (__v8di) __b, 236288943Sdim (__v8di) 237288943Sdim _mm512_setzero_si512 (), 238288943Sdim (__mmask8) __k); 239288943Sdim} 240288943Sdim 241288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 242288943Sdim_mm512_andnot_epi32 (__m512i __A, __m512i __B) 243288943Sdim{ 244288943Sdim return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, 245288943Sdim (__v16si) __B, 246288943Sdim (__v16si) 247288943Sdim _mm512_setzero_si512 (), 248288943Sdim (__mmask16) -1); 249288943Sdim} 250288943Sdim 251288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 252288943Sdim_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) 253288943Sdim{ 254288943Sdim return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, 255288943Sdim (__v16si) __B, 256288943Sdim (__v16si) __W, 257288943Sdim (__mmask16) __U); 258288943Sdim} 259288943Sdim 260288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 261288943Sdim_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B) 262288943Sdim{ 263288943Sdim return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A, 264288943Sdim (__v16si) __B, 265288943Sdim (__v16si) 266288943Sdim _mm512_setzero_si512 (), 267288943Sdim (__mmask16) __U); 268288943Sdim} 269288943Sdim 270288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 271288943Sdim_mm512_andnot_epi64 (__m512i __A, __m512i __B) 272288943Sdim{ 273288943Sdim return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, 274288943Sdim (__v8di) __B, 275288943Sdim (__v8di) 276288943Sdim _mm512_setzero_si512 (), 277288943Sdim (__mmask8) -1); 278288943Sdim} 279288943Sdim 280288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 281288943Sdim_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) 282288943Sdim{ 283288943Sdim return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, 284288943Sdim (__v8di) __B, 285288943Sdim (__v8di) __W, __U); 286288943Sdim} 287288943Sdim 288288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 289288943Sdim_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B) 290288943Sdim{ 291288943Sdim return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A, 292288943Sdim (__v8di) __B, 293288943Sdim (__v8di) 294288943Sdim _mm512_setzero_pd (), 295288943Sdim __U); 296288943Sdim} 297288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 298288943Sdim_mm512_or_epi32(__m512i __a, __m512i __b) 299288943Sdim{ 300288943Sdim return __a | __b; 301288943Sdim} 302288943Sdim 303288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 304288943Sdim_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b) 305288943Sdim{ 306288943Sdim return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a, 307288943Sdim (__v16si) __b, 308288943Sdim (__v16si) __src, 309288943Sdim (__mmask16) __k); 310288943Sdim} 311288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 312288943Sdim_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) 313288943Sdim{ 314288943Sdim return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a, 315288943Sdim (__v16si) __b, 316288943Sdim (__v16si) 317288943Sdim _mm512_setzero_si512 (), 318288943Sdim (__mmask16) __k); 319288943Sdim} 320288943Sdim 321288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 322288943Sdim_mm512_or_epi64(__m512i __a, __m512i __b) 323288943Sdim{ 324288943Sdim return __a | __b; 325288943Sdim} 326288943Sdim 327288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 328288943Sdim_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b) 329288943Sdim{ 330288943Sdim return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a, 331288943Sdim (__v8di) __b, 332288943Sdim (__v8di) __src, 333288943Sdim (__mmask8) __k); 334288943Sdim} 335288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 336288943Sdim_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) 337288943Sdim{ 338288943Sdim return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a, 339288943Sdim (__v8di) __b, 340288943Sdim (__v8di) 341288943Sdim _mm512_setzero_si512 (), 342288943Sdim (__mmask8) __k); 343288943Sdim} 344288943Sdim 345288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 346288943Sdim_mm512_xor_epi32(__m512i __a, __m512i __b) 347288943Sdim{ 348288943Sdim return __a ^ __b; 349288943Sdim} 350288943Sdim 351288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 352288943Sdim_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b) 353288943Sdim{ 354288943Sdim return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a, 355288943Sdim (__v16si) __b, 356288943Sdim (__v16si) __src, 357288943Sdim (__mmask16) __k); 358288943Sdim} 359288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 360288943Sdim_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) 361288943Sdim{ 362288943Sdim return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a, 363288943Sdim (__v16si) __b, 364288943Sdim (__v16si) 365288943Sdim _mm512_setzero_si512 (), 366288943Sdim (__mmask16) __k); 367288943Sdim} 368288943Sdim 369288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 370288943Sdim_mm512_xor_epi64(__m512i __a, __m512i __b) 371288943Sdim{ 372288943Sdim return __a ^ __b; 373288943Sdim} 374288943Sdim 375288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 376288943Sdim_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b) 377288943Sdim{ 378288943Sdim return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a, 379288943Sdim (__v8di) __b, 380288943Sdim (__v8di) __src, 381288943Sdim (__mmask8) __k); 382288943Sdim} 383288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 384288943Sdim_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) 385288943Sdim{ 386288943Sdim return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a, 387288943Sdim (__v8di) __b, 388288943Sdim (__v8di) 389288943Sdim _mm512_setzero_si512 (), 390288943Sdim (__mmask8) __k); 391288943Sdim} 392288943Sdim 393288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 394288943Sdim_mm512_and_si512(__m512i __a, __m512i __b) 395288943Sdim{ 396288943Sdim return __a & __b; 397288943Sdim} 398288943Sdim 399288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 400288943Sdim_mm512_or_si512(__m512i __a, __m512i __b) 401288943Sdim{ 402288943Sdim return __a | __b; 403288943Sdim} 404288943Sdim 405288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 406288943Sdim_mm512_xor_si512(__m512i __a, __m512i __b) 407288943Sdim{ 408288943Sdim return __a ^ __b; 409288943Sdim} 410277325Sdim/* Arithmetic */ 411277325Sdim 412288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 413277325Sdim_mm512_add_pd(__m512d __a, __m512d __b) 414277325Sdim{ 415277325Sdim return __a + __b; 416277325Sdim} 417277325Sdim 418288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 419277325Sdim_mm512_add_ps(__m512 __a, __m512 __b) 420277325Sdim{ 421277325Sdim return __a + __b; 422277325Sdim} 423277325Sdim 424288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 425277325Sdim_mm512_mul_pd(__m512d __a, __m512d __b) 426277325Sdim{ 427277325Sdim return __a * __b; 428277325Sdim} 429277325Sdim 430288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 431277325Sdim_mm512_mul_ps(__m512 __a, __m512 __b) 432277325Sdim{ 433277325Sdim return __a * __b; 434277325Sdim} 435277325Sdim 436288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 437277325Sdim_mm512_sub_pd(__m512d __a, __m512d __b) 438277325Sdim{ 439277325Sdim return __a - __b; 440277325Sdim} 441277325Sdim 442288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 443277325Sdim_mm512_sub_ps(__m512 __a, __m512 __b) 444277325Sdim{ 445277325Sdim return __a - __b; 446277325Sdim} 447277325Sdim 448288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 449288943Sdim_mm512_add_epi64 (__m512i __A, __m512i __B) 450288943Sdim{ 451288943Sdim return (__m512i) ((__v8di) __A + (__v8di) __B); 452288943Sdim} 453288943Sdim 454288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 455288943Sdim_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) 456288943Sdim{ 457288943Sdim return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, 458288943Sdim (__v8di) __B, 459288943Sdim (__v8di) __W, 460288943Sdim (__mmask8) __U); 461288943Sdim} 462288943Sdim 463288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 464288943Sdim_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B) 465288943Sdim{ 466288943Sdim return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A, 467288943Sdim (__v8di) __B, 468288943Sdim (__v8di) 469288943Sdim _mm512_setzero_si512 (), 470288943Sdim (__mmask8) __U); 471288943Sdim} 472288943Sdim 473288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 474288943Sdim_mm512_sub_epi64 (__m512i __A, __m512i __B) 475288943Sdim{ 476288943Sdim return (__m512i) ((__v8di) __A - (__v8di) __B); 477288943Sdim} 478288943Sdim 479288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 480288943Sdim_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) 481288943Sdim{ 482288943Sdim return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, 483288943Sdim (__v8di) __B, 484288943Sdim (__v8di) __W, 485288943Sdim (__mmask8) __U); 486288943Sdim} 487288943Sdim 488288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 489288943Sdim_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B) 490288943Sdim{ 491288943Sdim return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A, 492288943Sdim (__v8di) __B, 493288943Sdim (__v8di) 494288943Sdim _mm512_setzero_si512 (), 495288943Sdim (__mmask8) __U); 496288943Sdim} 497288943Sdim 498288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 499288943Sdim_mm512_add_epi32 (__m512i __A, __m512i __B) 500288943Sdim{ 501288943Sdim return (__m512i) ((__v16si) __A + (__v16si) __B); 502288943Sdim} 503288943Sdim 504288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 505288943Sdim_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) 506288943Sdim{ 507288943Sdim return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, 508288943Sdim (__v16si) __B, 509288943Sdim (__v16si) __W, 510288943Sdim (__mmask16) __U); 511288943Sdim} 512288943Sdim 513288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 514288943Sdim_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B) 515288943Sdim{ 516288943Sdim return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A, 517288943Sdim (__v16si) __B, 518288943Sdim (__v16si) 519288943Sdim _mm512_setzero_si512 (), 520288943Sdim (__mmask16) __U); 521288943Sdim} 522288943Sdim 523288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 524288943Sdim_mm512_sub_epi32 (__m512i __A, __m512i __B) 525288943Sdim{ 526288943Sdim return (__m512i) ((__v16si) __A - (__v16si) __B); 527288943Sdim} 528288943Sdim 529288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 530288943Sdim_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) 531288943Sdim{ 532288943Sdim return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, 533288943Sdim (__v16si) __B, 534288943Sdim (__v16si) __W, 535288943Sdim (__mmask16) __U); 536288943Sdim} 537288943Sdim 538288943Sdimstatic __inline__ __m512i __DEFAULT_FN_ATTRS 539288943Sdim_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B) 540288943Sdim{ 541288943Sdim return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A, 542288943Sdim (__v16si) __B, 543288943Sdim (__v16si) 544288943Sdim _mm512_setzero_si512 (), 545288943Sdim (__mmask16) __U); 546288943Sdim} 547288943Sdim 548288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 549277325Sdim_mm512_max_pd(__m512d __A, __m512d __B) 550277325Sdim{ 551277325Sdim return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A, 552277325Sdim (__v8df) __B, 553277325Sdim (__v8df) 554277325Sdim _mm512_setzero_pd (), 555277325Sdim (__mmask8) -1, 556277325Sdim _MM_FROUND_CUR_DIRECTION); 557277325Sdim} 558277325Sdim 559288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 560277325Sdim_mm512_max_ps(__m512 __A, __m512 __B) 561277325Sdim{ 562277325Sdim return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A, 563277325Sdim (__v16sf) __B, 564277325Sdim (__v16sf) 565277325Sdim _mm512_setzero_ps (), 566277325Sdim (__mmask16) -1, 567277325Sdim _MM_FROUND_CUR_DIRECTION); 568277325Sdim} 569277325Sdim 570296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 571296417Sdim_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) { 572296417Sdim return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, 573296417Sdim (__v4sf) __B, 574296417Sdim (__v4sf) __W, 575296417Sdim (__mmask8) __U, 576296417Sdim _MM_FROUND_CUR_DIRECTION); 577296417Sdim} 578296417Sdim 579296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 580296417Sdim_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) { 581296417Sdim return (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, 582296417Sdim (__v4sf) __B, 583296417Sdim (__v4sf) _mm_setzero_ps (), 584296417Sdim (__mmask8) __U, 585296417Sdim _MM_FROUND_CUR_DIRECTION); 586296417Sdim} 587296417Sdim 588296417Sdim#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \ 589296417Sdim (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, (__v4sf) __B, \ 590296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); }) 591296417Sdim 592296417Sdim#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \ 593296417Sdim (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, (__v4sf) __B, \ 594296417Sdim (__v4sf) __W, (__mmask8) __U,__R); }) 595296417Sdim 596296417Sdim#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \ 597296417Sdim (__m128) __builtin_ia32_maxss_round ((__v4sf) __A, (__v4sf) __B, \ 598296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); }) 599296417Sdim 600296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 601296417Sdim_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) { 602296417Sdim return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, 603296417Sdim (__v2df) __B, 604296417Sdim (__v2df) __W, 605296417Sdim (__mmask8) __U, 606296417Sdim _MM_FROUND_CUR_DIRECTION); 607296417Sdim} 608296417Sdim 609296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 610296417Sdim_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) { 611296417Sdim return (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, 612296417Sdim (__v2df) __B, 613296417Sdim (__v2df) _mm_setzero_pd (), 614296417Sdim (__mmask8) __U, 615296417Sdim _MM_FROUND_CUR_DIRECTION); 616296417Sdim} 617296417Sdim 618296417Sdim#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \ 619296417Sdim (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, (__v2df) __B, \ 620296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); }) 621296417Sdim 622296417Sdim#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \ 623296417Sdim (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, (__v2df) __B, \ 624296417Sdim (__v2df) __W, (__mmask8) __U,__R); }) 625296417Sdim 626296417Sdim#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \ 627296417Sdim (__m128d) __builtin_ia32_maxsd_round ((__v2df) __A, (__v2df) __B, \ 628296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); }) 629296417Sdim 630277325Sdimstatic __inline __m512i 631288943Sdim__DEFAULT_FN_ATTRS 632277325Sdim_mm512_max_epi32(__m512i __A, __m512i __B) 633277325Sdim{ 634277325Sdim return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A, 635277325Sdim (__v16si) __B, 636277325Sdim (__v16si) 637277325Sdim _mm512_setzero_si512 (), 638277325Sdim (__mmask16) -1); 639277325Sdim} 640277325Sdim 641288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 642277325Sdim_mm512_max_epu32(__m512i __A, __m512i __B) 643277325Sdim{ 644277325Sdim return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A, 645277325Sdim (__v16si) __B, 646277325Sdim (__v16si) 647277325Sdim _mm512_setzero_si512 (), 648277325Sdim (__mmask16) -1); 649277325Sdim} 650277325Sdim 651288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 652277325Sdim_mm512_max_epi64(__m512i __A, __m512i __B) 653277325Sdim{ 654277325Sdim return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A, 655277325Sdim (__v8di) __B, 656277325Sdim (__v8di) 657277325Sdim _mm512_setzero_si512 (), 658277325Sdim (__mmask8) -1); 659277325Sdim} 660277325Sdim 661288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 662277325Sdim_mm512_max_epu64(__m512i __A, __m512i __B) 663277325Sdim{ 664277325Sdim return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A, 665277325Sdim (__v8di) __B, 666277325Sdim (__v8di) 667277325Sdim _mm512_setzero_si512 (), 668277325Sdim (__mmask8) -1); 669277325Sdim} 670277325Sdim 671288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 672277325Sdim_mm512_min_pd(__m512d __A, __m512d __B) 673277325Sdim{ 674277325Sdim return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A, 675277325Sdim (__v8df) __B, 676277325Sdim (__v8df) 677277325Sdim _mm512_setzero_pd (), 678277325Sdim (__mmask8) -1, 679277325Sdim _MM_FROUND_CUR_DIRECTION); 680277325Sdim} 681277325Sdim 682288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 683277325Sdim_mm512_min_ps(__m512 __A, __m512 __B) 684277325Sdim{ 685277325Sdim return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A, 686277325Sdim (__v16sf) __B, 687277325Sdim (__v16sf) 688277325Sdim _mm512_setzero_ps (), 689277325Sdim (__mmask16) -1, 690277325Sdim _MM_FROUND_CUR_DIRECTION); 691277325Sdim} 692277325Sdim 693296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 694296417Sdim_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) { 695296417Sdim return (__m128) __builtin_ia32_minss_round ((__v4sf) __A, 696296417Sdim (__v4sf) __B, 697296417Sdim (__v4sf) __W, 698296417Sdim (__mmask8) __U, 699296417Sdim _MM_FROUND_CUR_DIRECTION); 700296417Sdim} 701296417Sdim 702296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 703296417Sdim_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) { 704296417Sdim return (__m128) __builtin_ia32_minss_round ((__v4sf) __A, 705296417Sdim (__v4sf) __B, 706296417Sdim (__v4sf) _mm_setzero_ps (), 707296417Sdim (__mmask8) __U, 708296417Sdim _MM_FROUND_CUR_DIRECTION); 709296417Sdim} 710296417Sdim 711296417Sdim#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \ 712296417Sdim (__m128) __builtin_ia32_minss_round ((__v4sf) __A, (__v4sf) __B, \ 713296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); }) 714296417Sdim 715296417Sdim#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \ 716296417Sdim (__m128) __builtin_ia32_minss_round ((__v4sf) __A, (__v4sf) __B, \ 717296417Sdim (__v4sf) __W, (__mmask8) __U,__R); }) 718296417Sdim 719296417Sdim#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \ 720296417Sdim (__m128) __builtin_ia32_minss_round ((__v4sf) __A, (__v4sf) __B, \ 721296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); }) 722296417Sdim 723296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 724296417Sdim_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) { 725296417Sdim return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, 726296417Sdim (__v2df) __B, 727296417Sdim (__v2df) __W, 728296417Sdim (__mmask8) __U, 729296417Sdim _MM_FROUND_CUR_DIRECTION); 730296417Sdim} 731296417Sdim 732296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 733296417Sdim_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) { 734296417Sdim return (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, 735296417Sdim (__v2df) __B, 736296417Sdim (__v2df) _mm_setzero_pd (), 737296417Sdim (__mmask8) __U, 738296417Sdim _MM_FROUND_CUR_DIRECTION); 739296417Sdim} 740296417Sdim 741296417Sdim#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \ 742296417Sdim (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, (__v2df) __B, \ 743296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); }) 744296417Sdim 745296417Sdim#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \ 746296417Sdim (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, (__v2df) __B, \ 747296417Sdim (__v2df) __W, (__mmask8) __U,__R); }) 748296417Sdim 749296417Sdim#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \ 750296417Sdim (__m128d) __builtin_ia32_minsd_round ((__v2df) __A, (__v2df) __B, \ 751296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); }) 752296417Sdim 753277325Sdimstatic __inline __m512i 754288943Sdim__DEFAULT_FN_ATTRS 755277325Sdim_mm512_min_epi32(__m512i __A, __m512i __B) 756277325Sdim{ 757277325Sdim return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A, 758277325Sdim (__v16si) __B, 759277325Sdim (__v16si) 760277325Sdim _mm512_setzero_si512 (), 761277325Sdim (__mmask16) -1); 762277325Sdim} 763277325Sdim 764288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 765277325Sdim_mm512_min_epu32(__m512i __A, __m512i __B) 766277325Sdim{ 767277325Sdim return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A, 768277325Sdim (__v16si) __B, 769277325Sdim (__v16si) 770277325Sdim _mm512_setzero_si512 (), 771277325Sdim (__mmask16) -1); 772277325Sdim} 773277325Sdim 774288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 775277325Sdim_mm512_min_epi64(__m512i __A, __m512i __B) 776277325Sdim{ 777277325Sdim return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A, 778277325Sdim (__v8di) __B, 779277325Sdim (__v8di) 780277325Sdim _mm512_setzero_si512 (), 781277325Sdim (__mmask8) -1); 782277325Sdim} 783277325Sdim 784288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 785277325Sdim_mm512_min_epu64(__m512i __A, __m512i __B) 786277325Sdim{ 787277325Sdim return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A, 788277325Sdim (__v8di) __B, 789277325Sdim (__v8di) 790277325Sdim _mm512_setzero_si512 (), 791277325Sdim (__mmask8) -1); 792277325Sdim} 793277325Sdim 794288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 795277325Sdim_mm512_mul_epi32(__m512i __X, __m512i __Y) 796277325Sdim{ 797277325Sdim return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, 798277325Sdim (__v16si) __Y, 799277325Sdim (__v8di) 800277325Sdim _mm512_setzero_si512 (), 801277325Sdim (__mmask8) -1); 802277325Sdim} 803277325Sdim 804288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 805288943Sdim_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) 806288943Sdim{ 807288943Sdim return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, 808288943Sdim (__v16si) __Y, 809288943Sdim (__v8di) __W, __M); 810288943Sdim} 811288943Sdim 812288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 813288943Sdim_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y) 814288943Sdim{ 815288943Sdim return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X, 816288943Sdim (__v16si) __Y, 817288943Sdim (__v8di) 818288943Sdim _mm512_setzero_si512 (), 819288943Sdim __M); 820288943Sdim} 821288943Sdim 822288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 823277325Sdim_mm512_mul_epu32(__m512i __X, __m512i __Y) 824277325Sdim{ 825277325Sdim return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, 826277325Sdim (__v16si) __Y, 827277325Sdim (__v8di) 828277325Sdim _mm512_setzero_si512 (), 829277325Sdim (__mmask8) -1); 830277325Sdim} 831277325Sdim 832288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 833288943Sdim_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) 834288943Sdim{ 835288943Sdim return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, 836288943Sdim (__v16si) __Y, 837288943Sdim (__v8di) __W, __M); 838288943Sdim} 839288943Sdim 840288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 841288943Sdim_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y) 842288943Sdim{ 843288943Sdim return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X, 844288943Sdim (__v16si) __Y, 845288943Sdim (__v8di) 846288943Sdim _mm512_setzero_si512 (), 847288943Sdim __M); 848288943Sdim} 849288943Sdim 850288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 851288943Sdim_mm512_mullo_epi32 (__m512i __A, __m512i __B) 852288943Sdim{ 853288943Sdim return (__m512i) ((__v16si) __A * (__v16si) __B); 854288943Sdim} 855288943Sdim 856288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 857288943Sdim_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B) 858288943Sdim{ 859288943Sdim return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, 860288943Sdim (__v16si) __B, 861288943Sdim (__v16si) 862288943Sdim _mm512_setzero_si512 (), 863288943Sdim __M); 864288943Sdim} 865288943Sdim 866288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 867288943Sdim_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) 868288943Sdim{ 869288943Sdim return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A, 870288943Sdim (__v16si) __B, 871288943Sdim (__v16si) __W, __M); 872288943Sdim} 873288943Sdim 874288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 875296417Sdim_mm512_sqrt_pd(__m512d __a) 876277325Sdim{ 877296417Sdim return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a, 878277325Sdim (__v8df) _mm512_setzero_pd (), 879277325Sdim (__mmask8) -1, 880277325Sdim _MM_FROUND_CUR_DIRECTION); 881277325Sdim} 882277325Sdim 883288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 884296417Sdim_mm512_sqrt_ps(__m512 __a) 885277325Sdim{ 886296417Sdim return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a, 887277325Sdim (__v16sf) _mm512_setzero_ps (), 888277325Sdim (__mmask16) -1, 889277325Sdim _MM_FROUND_CUR_DIRECTION); 890277325Sdim} 891277325Sdim 892288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 893277325Sdim_mm512_rsqrt14_pd(__m512d __A) 894277325Sdim{ 895277325Sdim return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A, 896277325Sdim (__v8df) 897277325Sdim _mm512_setzero_pd (), 898277325Sdim (__mmask8) -1);} 899277325Sdim 900288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 901277325Sdim_mm512_rsqrt14_ps(__m512 __A) 902277325Sdim{ 903277325Sdim return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A, 904277325Sdim (__v16sf) 905277325Sdim _mm512_setzero_ps (), 906277325Sdim (__mmask16) -1); 907277325Sdim} 908277325Sdim 909288943Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 910277325Sdim_mm_rsqrt14_ss(__m128 __A, __m128 __B) 911277325Sdim{ 912296417Sdim return (__m128) __builtin_ia32_rsqrt14ss ((__v4sf) __A, 913277325Sdim (__v4sf) __B, 914277325Sdim (__v4sf) 915277325Sdim _mm_setzero_ps (), 916277325Sdim (__mmask8) -1); 917277325Sdim} 918277325Sdim 919288943Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 920277325Sdim_mm_rsqrt14_sd(__m128d __A, __m128d __B) 921277325Sdim{ 922296417Sdim return (__m128d) __builtin_ia32_rsqrt14sd ((__v2df) __A, 923277325Sdim (__v2df) __B, 924277325Sdim (__v2df) 925277325Sdim _mm_setzero_pd (), 926277325Sdim (__mmask8) -1); 927277325Sdim} 928277325Sdim 929288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 930277325Sdim_mm512_rcp14_pd(__m512d __A) 931277325Sdim{ 932277325Sdim return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A, 933277325Sdim (__v8df) 934277325Sdim _mm512_setzero_pd (), 935277325Sdim (__mmask8) -1); 936277325Sdim} 937277325Sdim 938288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 939277325Sdim_mm512_rcp14_ps(__m512 __A) 940277325Sdim{ 941277325Sdim return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A, 942277325Sdim (__v16sf) 943277325Sdim _mm512_setzero_ps (), 944277325Sdim (__mmask16) -1); 945277325Sdim} 946288943Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 947277325Sdim_mm_rcp14_ss(__m128 __A, __m128 __B) 948277325Sdim{ 949296417Sdim return (__m128) __builtin_ia32_rcp14ss ((__v4sf) __A, 950277325Sdim (__v4sf) __B, 951277325Sdim (__v4sf) 952277325Sdim _mm_setzero_ps (), 953277325Sdim (__mmask8) -1); 954277325Sdim} 955277325Sdim 956288943Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 957277325Sdim_mm_rcp14_sd(__m128d __A, __m128d __B) 958277325Sdim{ 959296417Sdim return (__m128d) __builtin_ia32_rcp14sd ((__v2df) __A, 960277325Sdim (__v2df) __B, 961277325Sdim (__v2df) 962277325Sdim _mm_setzero_pd (), 963277325Sdim (__mmask8) -1); 964277325Sdim} 965277325Sdim 966288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 967277325Sdim_mm512_floor_ps(__m512 __A) 968277325Sdim{ 969277325Sdim return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, 970277325Sdim _MM_FROUND_FLOOR, 971277325Sdim (__v16sf) __A, -1, 972277325Sdim _MM_FROUND_CUR_DIRECTION); 973277325Sdim} 974277325Sdim 975288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 976277325Sdim_mm512_floor_pd(__m512d __A) 977277325Sdim{ 978277325Sdim return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, 979277325Sdim _MM_FROUND_FLOOR, 980277325Sdim (__v8df) __A, -1, 981277325Sdim _MM_FROUND_CUR_DIRECTION); 982277325Sdim} 983277325Sdim 984288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 985277325Sdim_mm512_ceil_ps(__m512 __A) 986277325Sdim{ 987277325Sdim return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A, 988277325Sdim _MM_FROUND_CEIL, 989277325Sdim (__v16sf) __A, -1, 990277325Sdim _MM_FROUND_CUR_DIRECTION); 991277325Sdim} 992277325Sdim 993288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 994277325Sdim_mm512_ceil_pd(__m512d __A) 995277325Sdim{ 996277325Sdim return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A, 997277325Sdim _MM_FROUND_CEIL, 998277325Sdim (__v8df) __A, -1, 999277325Sdim _MM_FROUND_CUR_DIRECTION); 1000277325Sdim} 1001277325Sdim 1002288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1003277325Sdim_mm512_abs_epi64(__m512i __A) 1004277325Sdim{ 1005277325Sdim return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A, 1006277325Sdim (__v8di) 1007277325Sdim _mm512_setzero_si512 (), 1008277325Sdim (__mmask8) -1); 1009277325Sdim} 1010277325Sdim 1011288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 1012277325Sdim_mm512_abs_epi32(__m512i __A) 1013277325Sdim{ 1014277325Sdim return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A, 1015277325Sdim (__v16si) 1016277325Sdim _mm512_setzero_si512 (), 1017277325Sdim (__mmask16) -1); 1018277325Sdim} 1019277325Sdim 1020296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1021296417Sdim_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) { 1022296417Sdim return (__m128) __builtin_ia32_addss_round ((__v4sf) __A, 1023296417Sdim (__v4sf) __B, 1024296417Sdim (__v4sf) __W, 1025296417Sdim (__mmask8) __U, 1026296417Sdim _MM_FROUND_CUR_DIRECTION); 1027296417Sdim} 1028296417Sdim 1029296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1030296417Sdim_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) { 1031296417Sdim return (__m128) __builtin_ia32_addss_round ((__v4sf) __A, 1032296417Sdim (__v4sf) __B, 1033296417Sdim (__v4sf) _mm_setzero_ps (), 1034296417Sdim (__mmask8) __U, 1035296417Sdim _MM_FROUND_CUR_DIRECTION); 1036296417Sdim} 1037296417Sdim 1038296417Sdim#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \ 1039296417Sdim (__m128) __builtin_ia32_addss_round ((__v4sf) __A, (__v4sf) __B, \ 1040296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); }) 1041296417Sdim 1042296417Sdim#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \ 1043296417Sdim (__m128) __builtin_ia32_addss_round ((__v4sf) __A, (__v4sf) __B, \ 1044296417Sdim (__v4sf) __W, (__mmask8) __U,__R); }) 1045296417Sdim 1046296417Sdim#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \ 1047296417Sdim (__m128) __builtin_ia32_addss_round ((__v4sf) __A, (__v4sf) __B, \ 1048296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); }) 1049296417Sdim 1050296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1051296417Sdim_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) { 1052296417Sdim return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, 1053296417Sdim (__v2df) __B, 1054296417Sdim (__v2df) __W, 1055296417Sdim (__mmask8) __U, 1056296417Sdim _MM_FROUND_CUR_DIRECTION); 1057296417Sdim} 1058296417Sdim 1059296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1060296417Sdim_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) { 1061296417Sdim return (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, 1062296417Sdim (__v2df) __B, 1063296417Sdim (__v2df) _mm_setzero_pd (), 1064296417Sdim (__mmask8) __U, 1065296417Sdim _MM_FROUND_CUR_DIRECTION); 1066296417Sdim} 1067296417Sdim#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \ 1068296417Sdim (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, (__v2df) __B, \ 1069296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); }) 1070296417Sdim 1071296417Sdim#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \ 1072296417Sdim (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, (__v2df) __B, \ 1073296417Sdim (__v2df) __W, (__mmask8) __U,__R); }) 1074296417Sdim 1075296417Sdim#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \ 1076296417Sdim (__m128d) __builtin_ia32_addsd_round ((__v2df) __A, (__v2df) __B, \ 1077296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); }) 1078296417Sdim 1079296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1080296417Sdim_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1081296417Sdim return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, 1082296417Sdim (__v8df) __B, 1083296417Sdim (__v8df) __W, 1084296417Sdim (__mmask8) __U, 1085296417Sdim _MM_FROUND_CUR_DIRECTION); 1086296417Sdim} 1087296417Sdim 1088296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1089296417Sdim_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1090296417Sdim return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, 1091296417Sdim (__v8df) __B, 1092296417Sdim (__v8df) _mm512_setzero_pd (), 1093296417Sdim (__mmask8) __U, 1094296417Sdim _MM_FROUND_CUR_DIRECTION); 1095296417Sdim} 1096296417Sdim 1097296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1098296417Sdim_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1099296417Sdim return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, 1100296417Sdim (__v16sf) __B, 1101296417Sdim (__v16sf) __W, 1102296417Sdim (__mmask16) __U, 1103296417Sdim _MM_FROUND_CUR_DIRECTION); 1104296417Sdim} 1105296417Sdim 1106296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1107296417Sdim_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1108296417Sdim return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, 1109296417Sdim (__v16sf) __B, 1110296417Sdim (__v16sf) _mm512_setzero_ps (), 1111296417Sdim (__mmask16) __U, 1112296417Sdim _MM_FROUND_CUR_DIRECTION); 1113296417Sdim} 1114296417Sdim 1115296417Sdim#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \ 1116296417Sdim (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \ 1117296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) 1118296417Sdim 1119296417Sdim#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ 1120296417Sdim (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \ 1121296417Sdim (__v8df) __W, (__mmask8) __U, __R); }) 1122296417Sdim 1123296417Sdim#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \ 1124296417Sdim (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \ 1125296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); }) 1126296417Sdim 1127296417Sdim#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \ 1128296417Sdim (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1129296417Sdim (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); }) 1130296417Sdim 1131296417Sdim#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ 1132296417Sdim (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1133296417Sdim (__v16sf) __W, (__mmask16)__U, __R); }) 1134296417Sdim 1135296417Sdim#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \ 1136296417Sdim (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1137296417Sdim (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); }) 1138296417Sdim 1139296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1140296417Sdim_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) { 1141296417Sdim return (__m128) __builtin_ia32_subss_round ((__v4sf) __A, 1142296417Sdim (__v4sf) __B, 1143296417Sdim (__v4sf) __W, 1144296417Sdim (__mmask8) __U, 1145296417Sdim _MM_FROUND_CUR_DIRECTION); 1146296417Sdim} 1147296417Sdim 1148296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1149296417Sdim_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) { 1150296417Sdim return (__m128) __builtin_ia32_subss_round ((__v4sf) __A, 1151296417Sdim (__v4sf) __B, 1152296417Sdim (__v4sf) _mm_setzero_ps (), 1153296417Sdim (__mmask8) __U, 1154296417Sdim _MM_FROUND_CUR_DIRECTION); 1155296417Sdim} 1156296417Sdim#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \ 1157296417Sdim (__m128) __builtin_ia32_subss_round ((__v4sf) __A, (__v4sf) __B, \ 1158296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); }) 1159296417Sdim 1160296417Sdim#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \ 1161296417Sdim (__m128) __builtin_ia32_subss_round ((__v4sf) __A, (__v4sf) __B, \ 1162296417Sdim (__v4sf) __W, (__mmask8) __U,__R); }) 1163296417Sdim 1164296417Sdim#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \ 1165296417Sdim (__m128) __builtin_ia32_subss_round ((__v4sf) __A, (__v4sf) __B, \ 1166296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); }) 1167296417Sdim 1168296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1169296417Sdim_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) { 1170296417Sdim return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, 1171296417Sdim (__v2df) __B, 1172296417Sdim (__v2df) __W, 1173296417Sdim (__mmask8) __U, 1174296417Sdim _MM_FROUND_CUR_DIRECTION); 1175296417Sdim} 1176296417Sdim 1177296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1178296417Sdim_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) { 1179296417Sdim return (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, 1180296417Sdim (__v2df) __B, 1181296417Sdim (__v2df) _mm_setzero_pd (), 1182296417Sdim (__mmask8) __U, 1183296417Sdim _MM_FROUND_CUR_DIRECTION); 1184296417Sdim} 1185296417Sdim 1186296417Sdim#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \ 1187296417Sdim (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, (__v2df) __B, \ 1188296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); }) 1189296417Sdim 1190296417Sdim#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \ 1191296417Sdim (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, (__v2df) __B, \ 1192296417Sdim (__v2df) __W, (__mmask8) __U,__R); }) 1193296417Sdim 1194296417Sdim#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \ 1195296417Sdim (__m128d) __builtin_ia32_subsd_round ((__v2df) __A, (__v2df) __B, \ 1196296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); }) 1197296417Sdim 1198296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1199296417Sdim_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1200296417Sdim return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, 1201296417Sdim (__v8df) __B, 1202296417Sdim (__v8df) __W, 1203296417Sdim (__mmask8) __U, 1204296417Sdim _MM_FROUND_CUR_DIRECTION); 1205296417Sdim} 1206296417Sdim 1207296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1208296417Sdim_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1209296417Sdim return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, 1210296417Sdim (__v8df) __B, 1211296417Sdim (__v8df) 1212296417Sdim _mm512_setzero_pd (), 1213296417Sdim (__mmask8) __U, 1214296417Sdim _MM_FROUND_CUR_DIRECTION); 1215296417Sdim} 1216296417Sdim 1217296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1218296417Sdim_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1219296417Sdim return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, 1220296417Sdim (__v16sf) __B, 1221296417Sdim (__v16sf) __W, 1222296417Sdim (__mmask16) __U, 1223296417Sdim _MM_FROUND_CUR_DIRECTION); 1224296417Sdim} 1225296417Sdim 1226296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1227296417Sdim_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1228296417Sdim return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, 1229296417Sdim (__v16sf) __B, 1230296417Sdim (__v16sf) 1231296417Sdim _mm512_setzero_ps (), 1232296417Sdim (__mmask16) __U, 1233296417Sdim _MM_FROUND_CUR_DIRECTION); 1234296417Sdim} 1235296417Sdim 1236296417Sdim#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \ 1237296417Sdim (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\ 1238296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) 1239296417Sdim 1240296417Sdim#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ 1241296417Sdim (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \ 1242296417Sdim (__v8df) __W, (__mmask8) __U, __R); }) 1243296417Sdim 1244296417Sdim#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \ 1245296417Sdim (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \ 1246296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);}) 1247296417Sdim 1248296417Sdim#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \ 1249296417Sdim (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1250296417Sdim (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);}) 1251296417Sdim 1252296417Sdim#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ 1253296417Sdim (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1254296417Sdim (__v16sf) __W, (__mmask16) __U, __R); }); 1255296417Sdim 1256296417Sdim#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \ 1257296417Sdim (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1258296417Sdim (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);}); 1259296417Sdim 1260296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1261296417Sdim_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) { 1262296417Sdim return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, 1263296417Sdim (__v4sf) __B, 1264296417Sdim (__v4sf) __W, 1265296417Sdim (__mmask8) __U, 1266296417Sdim _MM_FROUND_CUR_DIRECTION); 1267296417Sdim} 1268296417Sdim 1269296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1270296417Sdim_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) { 1271296417Sdim return (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, 1272296417Sdim (__v4sf) __B, 1273296417Sdim (__v4sf) _mm_setzero_ps (), 1274296417Sdim (__mmask8) __U, 1275296417Sdim _MM_FROUND_CUR_DIRECTION); 1276296417Sdim} 1277296417Sdim#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \ 1278296417Sdim (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, (__v4sf) __B, \ 1279296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); }) 1280296417Sdim 1281296417Sdim#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \ 1282296417Sdim (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, (__v4sf) __B, \ 1283296417Sdim (__v4sf) __W, (__mmask8) __U,__R); }) 1284296417Sdim 1285296417Sdim#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \ 1286296417Sdim (__m128) __builtin_ia32_mulss_round ((__v4sf) __A, (__v4sf) __B, \ 1287296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); }) 1288296417Sdim 1289296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1290296417Sdim_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) { 1291296417Sdim return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, 1292296417Sdim (__v2df) __B, 1293296417Sdim (__v2df) __W, 1294296417Sdim (__mmask8) __U, 1295296417Sdim _MM_FROUND_CUR_DIRECTION); 1296296417Sdim} 1297296417Sdim 1298296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1299296417Sdim_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) { 1300296417Sdim return (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, 1301296417Sdim (__v2df) __B, 1302296417Sdim (__v2df) _mm_setzero_pd (), 1303296417Sdim (__mmask8) __U, 1304296417Sdim _MM_FROUND_CUR_DIRECTION); 1305296417Sdim} 1306296417Sdim 1307296417Sdim#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \ 1308296417Sdim (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, (__v2df) __B, \ 1309296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); }) 1310296417Sdim 1311296417Sdim#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \ 1312296417Sdim (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, (__v2df) __B, \ 1313296417Sdim (__v2df) __W, (__mmask8) __U,__R); }) 1314296417Sdim 1315296417Sdim#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \ 1316296417Sdim (__m128d) __builtin_ia32_mulsd_round ((__v2df) __A, (__v2df) __B, \ 1317296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); }) 1318296417Sdim 1319296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1320296417Sdim_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1321296417Sdim return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, 1322296417Sdim (__v8df) __B, 1323296417Sdim (__v8df) __W, 1324296417Sdim (__mmask8) __U, 1325296417Sdim _MM_FROUND_CUR_DIRECTION); 1326296417Sdim} 1327296417Sdim 1328296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1329296417Sdim_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1330296417Sdim return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, 1331296417Sdim (__v8df) __B, 1332296417Sdim (__v8df) 1333296417Sdim _mm512_setzero_pd (), 1334296417Sdim (__mmask8) __U, 1335296417Sdim _MM_FROUND_CUR_DIRECTION); 1336296417Sdim} 1337296417Sdim 1338296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1339296417Sdim_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1340296417Sdim return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, 1341296417Sdim (__v16sf) __B, 1342296417Sdim (__v16sf) __W, 1343296417Sdim (__mmask16) __U, 1344296417Sdim _MM_FROUND_CUR_DIRECTION); 1345296417Sdim} 1346296417Sdim 1347296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1348296417Sdim_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1349296417Sdim return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, 1350296417Sdim (__v16sf) __B, 1351296417Sdim (__v16sf) 1352296417Sdim _mm512_setzero_ps (), 1353296417Sdim (__mmask16) __U, 1354296417Sdim _MM_FROUND_CUR_DIRECTION); 1355296417Sdim} 1356296417Sdim 1357296417Sdim#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \ 1358296417Sdim (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\ 1359296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) 1360296417Sdim 1361296417Sdim#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ 1362296417Sdim (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \ 1363296417Sdim (__v8df) __W, (__mmask8) __U, __R); }) 1364296417Sdim 1365296417Sdim#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \ 1366296417Sdim (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \ 1367296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);}) 1368296417Sdim 1369296417Sdim#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \ 1370296417Sdim (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1371296417Sdim (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);}) 1372296417Sdim 1373296417Sdim#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ 1374296417Sdim (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1375296417Sdim (__v16sf) __W, (__mmask16) __U, __R); }); 1376296417Sdim 1377296417Sdim#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \ 1378296417Sdim (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1379296417Sdim (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);}); 1380296417Sdim 1381296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1382296417Sdim_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) { 1383296417Sdim return (__m128) __builtin_ia32_divss_round ((__v4sf) __A, 1384296417Sdim (__v4sf) __B, 1385296417Sdim (__v4sf) __W, 1386296417Sdim (__mmask8) __U, 1387296417Sdim _MM_FROUND_CUR_DIRECTION); 1388296417Sdim} 1389296417Sdim 1390296417Sdimstatic __inline__ __m128 __DEFAULT_FN_ATTRS 1391296417Sdim_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) { 1392296417Sdim return (__m128) __builtin_ia32_divss_round ((__v4sf) __A, 1393296417Sdim (__v4sf) __B, 1394296417Sdim (__v4sf) _mm_setzero_ps (), 1395296417Sdim (__mmask8) __U, 1396296417Sdim _MM_FROUND_CUR_DIRECTION); 1397296417Sdim} 1398296417Sdim 1399296417Sdim#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \ 1400296417Sdim (__m128) __builtin_ia32_divss_round ((__v4sf) __A, (__v4sf) __B, \ 1401296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); }) 1402296417Sdim 1403296417Sdim#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \ 1404296417Sdim (__m128) __builtin_ia32_divss_round ((__v4sf) __A, (__v4sf) __B, \ 1405296417Sdim (__v4sf) __W, (__mmask8) __U,__R); }) 1406296417Sdim 1407296417Sdim#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \ 1408296417Sdim (__m128) __builtin_ia32_divss_round ((__v4sf) __A, (__v4sf) __B, \ 1409296417Sdim (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); }) 1410296417Sdim 1411296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1412296417Sdim_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) { 1413296417Sdim return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, 1414296417Sdim (__v2df) __B, 1415296417Sdim (__v2df) __W, 1416296417Sdim (__mmask8) __U, 1417296417Sdim _MM_FROUND_CUR_DIRECTION); 1418296417Sdim} 1419296417Sdim 1420296417Sdimstatic __inline__ __m128d __DEFAULT_FN_ATTRS 1421296417Sdim_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) { 1422296417Sdim return (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, 1423296417Sdim (__v2df) __B, 1424296417Sdim (__v2df) _mm_setzero_pd (), 1425296417Sdim (__mmask8) __U, 1426296417Sdim _MM_FROUND_CUR_DIRECTION); 1427296417Sdim} 1428296417Sdim 1429296417Sdim#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \ 1430296417Sdim (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, (__v2df) __B, \ 1431296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); }) 1432296417Sdim 1433296417Sdim#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \ 1434296417Sdim (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, (__v2df) __B, \ 1435296417Sdim (__v2df) __W, (__mmask8) __U,__R); }) 1436296417Sdim 1437296417Sdim#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \ 1438296417Sdim (__m128d) __builtin_ia32_divsd_round ((__v2df) __A, (__v2df) __B, \ 1439296417Sdim (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); }) 1440296417Sdim 1441296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1442296417Sdim_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1443296417Sdim return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, 1444296417Sdim (__v8df) __B, 1445296417Sdim (__v8df) __W, 1446296417Sdim (__mmask8) __U, 1447296417Sdim _MM_FROUND_CUR_DIRECTION); 1448296417Sdim} 1449296417Sdim 1450296417Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1451296417Sdim_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1452296417Sdim return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, 1453296417Sdim (__v8df) __B, 1454296417Sdim (__v8df) 1455296417Sdim _mm512_setzero_pd (), 1456296417Sdim (__mmask8) __U, 1457296417Sdim _MM_FROUND_CUR_DIRECTION); 1458296417Sdim} 1459296417Sdim 1460296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1461296417Sdim_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1462296417Sdim return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, 1463296417Sdim (__v16sf) __B, 1464296417Sdim (__v16sf) __W, 1465296417Sdim (__mmask16) __U, 1466296417Sdim _MM_FROUND_CUR_DIRECTION); 1467296417Sdim} 1468296417Sdim 1469296417Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1470296417Sdim_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1471296417Sdim return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, 1472296417Sdim (__v16sf) __B, 1473296417Sdim (__v16sf) 1474296417Sdim _mm512_setzero_ps (), 1475296417Sdim (__mmask16) __U, 1476296417Sdim _MM_FROUND_CUR_DIRECTION); 1477296417Sdim} 1478296417Sdim 1479296417Sdim#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \ 1480296417Sdim (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\ 1481296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); }) 1482296417Sdim 1483296417Sdim#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \ 1484296417Sdim (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \ 1485296417Sdim (__v8df) __W, (__mmask8) __U, __R); }) 1486296417Sdim 1487296417Sdim#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \ 1488296417Sdim (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \ 1489296417Sdim (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);}) 1490296417Sdim 1491296417Sdim#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \ 1492296417Sdim (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1493296417Sdim (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);}) 1494296417Sdim 1495296417Sdim#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \ 1496296417Sdim (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1497296417Sdim (__v16sf) __W, (__mmask16) __U, __R); }); 1498296417Sdim 1499296417Sdim#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \ 1500296417Sdim (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \ 1501296417Sdim (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);}); 1502296417Sdim 1503288943Sdim#define _mm512_roundscale_ps(A, B) __extension__ ({ \ 1504288943Sdim (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \ 1505288943Sdim -1, _MM_FROUND_CUR_DIRECTION); }) 1506288943Sdim 1507288943Sdim#define _mm512_roundscale_pd(A, B) __extension__ ({ \ 1508288943Sdim (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \ 1509288943Sdim -1, _MM_FROUND_CUR_DIRECTION); }) 1510288943Sdim 1511288943Sdim#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \ 1512288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 1513288943Sdim (__v8df) (B), (__v8df) (C), \ 1514288943Sdim (__mmask8) -1, (R)); }) 1515288943Sdim 1516288943Sdim 1517288943Sdim#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \ 1518288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 1519288943Sdim (__v8df) (B), (__v8df) (C), \ 1520288943Sdim (__mmask8) (U), (R)); }) 1521288943Sdim 1522288943Sdim 1523288943Sdim#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \ 1524288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \ 1525288943Sdim (__v8df) (B), (__v8df) (C), \ 1526288943Sdim (__mmask8) (U), (R)); }) 1527288943Sdim 1528288943Sdim 1529288943Sdim#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \ 1530288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \ 1531288943Sdim (__v8df) (B), (__v8df) (C), \ 1532288943Sdim (__mmask8) (U), (R)); }) 1533288943Sdim 1534288943Sdim 1535288943Sdim#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \ 1536288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 1537288943Sdim (__v8df) (B), -(__v8df) (C), \ 1538288943Sdim (__mmask8) -1, (R)); }) 1539288943Sdim 1540288943Sdim 1541288943Sdim#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \ 1542288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \ 1543288943Sdim (__v8df) (B), -(__v8df) (C), \ 1544288943Sdim (__mmask8) (U), (R)); }) 1545288943Sdim 1546288943Sdim 1547288943Sdim#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \ 1548288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \ 1549288943Sdim (__v8df) (B), -(__v8df) (C), \ 1550288943Sdim (__mmask8) (U), (R)); }) 1551288943Sdim 1552288943Sdim 1553288943Sdim#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \ 1554288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \ 1555288943Sdim (__v8df) (B), (__v8df) (C), \ 1556288943Sdim (__mmask8) -1, (R)); }) 1557288943Sdim 1558288943Sdim 1559288943Sdim#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \ 1560288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \ 1561288943Sdim (__v8df) (B), (__v8df) (C), \ 1562288943Sdim (__mmask8) (U), (R)); }) 1563288943Sdim 1564288943Sdim 1565288943Sdim#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \ 1566288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \ 1567288943Sdim (__v8df) (B), (__v8df) (C), \ 1568288943Sdim (__mmask8) (U), (R)); }) 1569288943Sdim 1570288943Sdim 1571288943Sdim#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \ 1572288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \ 1573288943Sdim (__v8df) (B), -(__v8df) (C), \ 1574288943Sdim (__mmask8) -1, (R)); }) 1575288943Sdim 1576288943Sdim 1577288943Sdim#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \ 1578288943Sdim (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \ 1579288943Sdim (__v8df) (B), -(__v8df) (C), \ 1580288943Sdim (__mmask8) (U), (R)); }) 1581288943Sdim 1582288943Sdim 1583288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1584288943Sdim_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) 1585277325Sdim{ 1586288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 1587288943Sdim (__v8df) __B, 1588288943Sdim (__v8df) __C, 1589288943Sdim (__mmask8) -1, 1590288943Sdim _MM_FROUND_CUR_DIRECTION); 1591277325Sdim} 1592288943Sdim 1593288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1594288943Sdim_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1595277325Sdim{ 1596288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 1597288943Sdim (__v8df) __B, 1598288943Sdim (__v8df) __C, 1599288943Sdim (__mmask8) __U, 1600288943Sdim _MM_FROUND_CUR_DIRECTION); 1601277325Sdim} 1602277325Sdim 1603288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1604288943Sdim_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1605277325Sdim{ 1606288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A, 1607288943Sdim (__v8df) __B, 1608288943Sdim (__v8df) __C, 1609288943Sdim (__mmask8) __U, 1610288943Sdim _MM_FROUND_CUR_DIRECTION); 1611277325Sdim} 1612277325Sdim 1613288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1614288943Sdim_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1615288943Sdim{ 1616288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, 1617288943Sdim (__v8df) __B, 1618288943Sdim (__v8df) __C, 1619288943Sdim (__mmask8) __U, 1620288943Sdim _MM_FROUND_CUR_DIRECTION); 1621288943Sdim} 1622288943Sdim 1623288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1624277325Sdim_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) 1625277325Sdim{ 1626288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 1627288943Sdim (__v8df) __B, 1628288943Sdim -(__v8df) __C, 1629288943Sdim (__mmask8) -1, 1630288943Sdim _MM_FROUND_CUR_DIRECTION); 1631277325Sdim} 1632277325Sdim 1633288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1634288943Sdim_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1635288943Sdim{ 1636288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A, 1637288943Sdim (__v8df) __B, 1638288943Sdim -(__v8df) __C, 1639288943Sdim (__mmask8) __U, 1640288943Sdim _MM_FROUND_CUR_DIRECTION); 1641288943Sdim} 1642288943Sdim 1643288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1644288943Sdim_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1645288943Sdim{ 1646288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A, 1647288943Sdim (__v8df) __B, 1648288943Sdim -(__v8df) __C, 1649288943Sdim (__mmask8) __U, 1650288943Sdim _MM_FROUND_CUR_DIRECTION); 1651288943Sdim} 1652288943Sdim 1653288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1654277325Sdim_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) 1655277325Sdim{ 1656288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, 1657288943Sdim (__v8df) __B, 1658288943Sdim (__v8df) __C, 1659288943Sdim (__mmask8) -1, 1660288943Sdim _MM_FROUND_CUR_DIRECTION); 1661277325Sdim} 1662277325Sdim 1663288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1664288943Sdim_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1665288943Sdim{ 1666288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A, 1667288943Sdim (__v8df) __B, 1668288943Sdim (__v8df) __C, 1669288943Sdim (__mmask8) __U, 1670288943Sdim _MM_FROUND_CUR_DIRECTION); 1671288943Sdim} 1672288943Sdim 1673288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1674288943Sdim_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1675288943Sdim{ 1676288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, 1677288943Sdim (__v8df) __B, 1678288943Sdim (__v8df) __C, 1679288943Sdim (__mmask8) __U, 1680288943Sdim _MM_FROUND_CUR_DIRECTION); 1681288943Sdim} 1682288943Sdim 1683288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1684288943Sdim_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) 1685288943Sdim{ 1686288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A, 1687288943Sdim (__v8df) __B, 1688288943Sdim -(__v8df) __C, 1689288943Sdim (__mmask8) -1, 1690288943Sdim _MM_FROUND_CUR_DIRECTION); 1691288943Sdim} 1692288943Sdim 1693288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1694288943Sdim_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1695288943Sdim{ 1696288943Sdim return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A, 1697288943Sdim (__v8df) __B, 1698288943Sdim -(__v8df) __C, 1699288943Sdim (__mmask8) __U, 1700288943Sdim _MM_FROUND_CUR_DIRECTION); 1701288943Sdim} 1702288943Sdim 1703288943Sdim#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \ 1704288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1705288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1706288943Sdim (__mmask16) -1, (R)); }) 1707288943Sdim 1708288943Sdim 1709288943Sdim#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \ 1710288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1711288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1712288943Sdim (__mmask16) (U), (R)); }) 1713288943Sdim 1714288943Sdim 1715288943Sdim#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \ 1716288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \ 1717288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1718288943Sdim (__mmask16) (U), (R)); }) 1719288943Sdim 1720288943Sdim 1721288943Sdim#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \ 1722288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \ 1723288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1724288943Sdim (__mmask16) (U), (R)); }) 1725288943Sdim 1726288943Sdim 1727288943Sdim#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \ 1728288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1729288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1730288943Sdim (__mmask16) -1, (R)); }) 1731288943Sdim 1732288943Sdim 1733288943Sdim#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \ 1734288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \ 1735288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1736288943Sdim (__mmask16) (U), (R)); }) 1737288943Sdim 1738288943Sdim 1739288943Sdim#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \ 1740288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \ 1741288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1742288943Sdim (__mmask16) (U), (R)); }) 1743288943Sdim 1744288943Sdim 1745288943Sdim#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \ 1746288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \ 1747288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1748288943Sdim (__mmask16) -1, (R)); }) 1749288943Sdim 1750288943Sdim 1751288943Sdim#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \ 1752288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \ 1753288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1754288943Sdim (__mmask16) (U), (R)); }) 1755288943Sdim 1756288943Sdim 1757288943Sdim#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \ 1758288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \ 1759288943Sdim (__v16sf) (B), (__v16sf) (C), \ 1760288943Sdim (__mmask16) (U), (R)); }) 1761288943Sdim 1762288943Sdim 1763288943Sdim#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \ 1764288943Sdim (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \ 1765288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1766288943Sdim (__mmask16) -1, (R)); }) 1767288943Sdim 1768288943Sdim 1769288943Sdim#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \ 1770288943Sdim (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \ 1771288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 1772288943Sdim (__mmask16) (U), (R)); }) 1773288943Sdim 1774288943Sdim 1775288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1776277325Sdim_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) 1777277325Sdim{ 1778288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1779288943Sdim (__v16sf) __B, 1780288943Sdim (__v16sf) __C, 1781288943Sdim (__mmask16) -1, 1782288943Sdim _MM_FROUND_CUR_DIRECTION); 1783277325Sdim} 1784277325Sdim 1785288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1786288943Sdim_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1787288943Sdim{ 1788288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1789288943Sdim (__v16sf) __B, 1790288943Sdim (__v16sf) __C, 1791288943Sdim (__mmask16) __U, 1792288943Sdim _MM_FROUND_CUR_DIRECTION); 1793288943Sdim} 1794288943Sdim 1795288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1796288943Sdim_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1797288943Sdim{ 1798288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A, 1799288943Sdim (__v16sf) __B, 1800288943Sdim (__v16sf) __C, 1801288943Sdim (__mmask16) __U, 1802288943Sdim _MM_FROUND_CUR_DIRECTION); 1803288943Sdim} 1804288943Sdim 1805288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1806288943Sdim_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1807288943Sdim{ 1808288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, 1809288943Sdim (__v16sf) __B, 1810288943Sdim (__v16sf) __C, 1811288943Sdim (__mmask16) __U, 1812288943Sdim _MM_FROUND_CUR_DIRECTION); 1813288943Sdim} 1814288943Sdim 1815288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1816277325Sdim_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) 1817277325Sdim{ 1818288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1819288943Sdim (__v16sf) __B, 1820288943Sdim -(__v16sf) __C, 1821288943Sdim (__mmask16) -1, 1822288943Sdim _MM_FROUND_CUR_DIRECTION); 1823277325Sdim} 1824277325Sdim 1825288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1826288943Sdim_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 1827288943Sdim{ 1828288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A, 1829288943Sdim (__v16sf) __B, 1830288943Sdim -(__v16sf) __C, 1831288943Sdim (__mmask16) __U, 1832288943Sdim _MM_FROUND_CUR_DIRECTION); 1833288943Sdim} 1834288943Sdim 1835288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1836288943Sdim_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1837288943Sdim{ 1838288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A, 1839288943Sdim (__v16sf) __B, 1840288943Sdim -(__v16sf) __C, 1841288943Sdim (__mmask16) __U, 1842288943Sdim _MM_FROUND_CUR_DIRECTION); 1843288943Sdim} 1844288943Sdim 1845288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1846277325Sdim_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) 1847277325Sdim{ 1848288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, 1849288943Sdim (__v16sf) __B, 1850288943Sdim (__v16sf) __C, 1851288943Sdim (__mmask16) -1, 1852288943Sdim _MM_FROUND_CUR_DIRECTION); 1853277325Sdim} 1854277325Sdim 1855288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1856288943Sdim_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 1857288943Sdim{ 1858288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A, 1859288943Sdim (__v16sf) __B, 1860288943Sdim (__v16sf) __C, 1861288943Sdim (__mmask16) __U, 1862288943Sdim _MM_FROUND_CUR_DIRECTION); 1863288943Sdim} 1864288943Sdim 1865288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1866288943Sdim_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1867288943Sdim{ 1868288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, 1869288943Sdim (__v16sf) __B, 1870288943Sdim (__v16sf) __C, 1871288943Sdim (__mmask16) __U, 1872288943Sdim _MM_FROUND_CUR_DIRECTION); 1873288943Sdim} 1874288943Sdim 1875288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1876288943Sdim_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) 1877288943Sdim{ 1878288943Sdim return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A, 1879288943Sdim (__v16sf) __B, 1880288943Sdim -(__v16sf) __C, 1881288943Sdim (__mmask16) -1, 1882288943Sdim _MM_FROUND_CUR_DIRECTION); 1883288943Sdim} 1884288943Sdim 1885288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 1886288943Sdim_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 1887288943Sdim{ 1888288943Sdim return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A, 1889288943Sdim (__v16sf) __B, 1890288943Sdim -(__v16sf) __C, 1891288943Sdim (__mmask16) __U, 1892288943Sdim _MM_FROUND_CUR_DIRECTION); 1893288943Sdim} 1894288943Sdim 1895288943Sdim#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \ 1896288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1897288943Sdim (__v8df) (B), (__v8df) (C), \ 1898288943Sdim (__mmask8) -1, (R)); }) 1899288943Sdim 1900288943Sdim 1901288943Sdim#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \ 1902288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1903288943Sdim (__v8df) (B), (__v8df) (C), \ 1904288943Sdim (__mmask8) (U), (R)); }) 1905288943Sdim 1906288943Sdim 1907288943Sdim#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \ 1908288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \ 1909288943Sdim (__v8df) (B), (__v8df) (C), \ 1910288943Sdim (__mmask8) (U), (R)); }) 1911288943Sdim 1912288943Sdim 1913288943Sdim#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \ 1914288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \ 1915288943Sdim (__v8df) (B), (__v8df) (C), \ 1916288943Sdim (__mmask8) (U), (R)); }) 1917288943Sdim 1918288943Sdim 1919288943Sdim#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \ 1920288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1921288943Sdim (__v8df) (B), -(__v8df) (C), \ 1922288943Sdim (__mmask8) -1, (R)); }) 1923288943Sdim 1924288943Sdim 1925288943Sdim#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \ 1926288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \ 1927288943Sdim (__v8df) (B), -(__v8df) (C), \ 1928288943Sdim (__mmask8) (U), (R)); }) 1929288943Sdim 1930288943Sdim 1931288943Sdim#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \ 1932288943Sdim (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \ 1933288943Sdim (__v8df) (B), -(__v8df) (C), \ 1934288943Sdim (__mmask8) (U), (R)); }) 1935288943Sdim 1936288943Sdim 1937288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1938288943Sdim_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) 1939288943Sdim{ 1940288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1941288943Sdim (__v8df) __B, 1942288943Sdim (__v8df) __C, 1943288943Sdim (__mmask8) -1, 1944288943Sdim _MM_FROUND_CUR_DIRECTION); 1945288943Sdim} 1946288943Sdim 1947288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1948288943Sdim_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1949288943Sdim{ 1950288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1951288943Sdim (__v8df) __B, 1952288943Sdim (__v8df) __C, 1953288943Sdim (__mmask8) __U, 1954288943Sdim _MM_FROUND_CUR_DIRECTION); 1955288943Sdim} 1956288943Sdim 1957288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1958288943Sdim_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 1959288943Sdim{ 1960288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A, 1961288943Sdim (__v8df) __B, 1962288943Sdim (__v8df) __C, 1963288943Sdim (__mmask8) __U, 1964288943Sdim _MM_FROUND_CUR_DIRECTION); 1965288943Sdim} 1966288943Sdim 1967288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1968288943Sdim_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1969288943Sdim{ 1970288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, 1971288943Sdim (__v8df) __B, 1972288943Sdim (__v8df) __C, 1973288943Sdim (__mmask8) __U, 1974288943Sdim _MM_FROUND_CUR_DIRECTION); 1975288943Sdim} 1976288943Sdim 1977288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1978288943Sdim_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) 1979288943Sdim{ 1980288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1981288943Sdim (__v8df) __B, 1982288943Sdim -(__v8df) __C, 1983288943Sdim (__mmask8) -1, 1984288943Sdim _MM_FROUND_CUR_DIRECTION); 1985288943Sdim} 1986288943Sdim 1987288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1988288943Sdim_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 1989288943Sdim{ 1990288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A, 1991288943Sdim (__v8df) __B, 1992288943Sdim -(__v8df) __C, 1993288943Sdim (__mmask8) __U, 1994288943Sdim _MM_FROUND_CUR_DIRECTION); 1995288943Sdim} 1996288943Sdim 1997288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 1998288943Sdim_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) 1999288943Sdim{ 2000288943Sdim return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A, 2001288943Sdim (__v8df) __B, 2002288943Sdim -(__v8df) __C, 2003288943Sdim (__mmask8) __U, 2004288943Sdim _MM_FROUND_CUR_DIRECTION); 2005288943Sdim} 2006288943Sdim 2007288943Sdim#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \ 2008288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 2009288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2010288943Sdim (__mmask16) -1, (R)); }) 2011288943Sdim 2012288943Sdim 2013288943Sdim#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \ 2014288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 2015288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2016288943Sdim (__mmask16) (U), (R)); }) 2017288943Sdim 2018288943Sdim 2019288943Sdim#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \ 2020288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \ 2021288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2022288943Sdim (__mmask16) (U), (R)); }) 2023288943Sdim 2024288943Sdim 2025288943Sdim#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \ 2026288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \ 2027288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2028288943Sdim (__mmask16) (U), (R)); }) 2029288943Sdim 2030288943Sdim 2031288943Sdim#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \ 2032288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 2033288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 2034288943Sdim (__mmask16) -1, (R)); }) 2035288943Sdim 2036288943Sdim 2037288943Sdim#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \ 2038288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \ 2039288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 2040288943Sdim (__mmask16) (U), (R)); }) 2041288943Sdim 2042288943Sdim 2043288943Sdim#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \ 2044288943Sdim (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \ 2045288943Sdim (__v16sf) (B), -(__v16sf) (C), \ 2046288943Sdim (__mmask16) (U), (R)); }) 2047288943Sdim 2048288943Sdim 2049288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2050288943Sdim_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) 2051288943Sdim{ 2052288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 2053288943Sdim (__v16sf) __B, 2054288943Sdim (__v16sf) __C, 2055288943Sdim (__mmask16) -1, 2056288943Sdim _MM_FROUND_CUR_DIRECTION); 2057288943Sdim} 2058288943Sdim 2059288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2060288943Sdim_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 2061288943Sdim{ 2062288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 2063288943Sdim (__v16sf) __B, 2064288943Sdim (__v16sf) __C, 2065288943Sdim (__mmask16) __U, 2066288943Sdim _MM_FROUND_CUR_DIRECTION); 2067288943Sdim} 2068288943Sdim 2069288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2070288943Sdim_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 2071288943Sdim{ 2072288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A, 2073288943Sdim (__v16sf) __B, 2074288943Sdim (__v16sf) __C, 2075288943Sdim (__mmask16) __U, 2076288943Sdim _MM_FROUND_CUR_DIRECTION); 2077288943Sdim} 2078288943Sdim 2079288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2080288943Sdim_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 2081288943Sdim{ 2082288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, 2083288943Sdim (__v16sf) __B, 2084288943Sdim (__v16sf) __C, 2085288943Sdim (__mmask16) __U, 2086288943Sdim _MM_FROUND_CUR_DIRECTION); 2087288943Sdim} 2088288943Sdim 2089288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2090288943Sdim_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) 2091288943Sdim{ 2092288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 2093288943Sdim (__v16sf) __B, 2094288943Sdim -(__v16sf) __C, 2095288943Sdim (__mmask16) -1, 2096288943Sdim _MM_FROUND_CUR_DIRECTION); 2097288943Sdim} 2098288943Sdim 2099288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2100288943Sdim_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 2101288943Sdim{ 2102288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A, 2103288943Sdim (__v16sf) __B, 2104288943Sdim -(__v16sf) __C, 2105288943Sdim (__mmask16) __U, 2106288943Sdim _MM_FROUND_CUR_DIRECTION); 2107288943Sdim} 2108288943Sdim 2109288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2110288943Sdim_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) 2111288943Sdim{ 2112288943Sdim return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A, 2113288943Sdim (__v16sf) __B, 2114288943Sdim -(__v16sf) __C, 2115288943Sdim (__mmask16) __U, 2116288943Sdim _MM_FROUND_CUR_DIRECTION); 2117288943Sdim} 2118288943Sdim 2119288943Sdim#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \ 2120288943Sdim (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \ 2121288943Sdim (__v8df) (B), (__v8df) (C), \ 2122288943Sdim (__mmask8) (U), (R)); }) 2123288943Sdim 2124288943Sdim 2125288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 2126288943Sdim_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 2127288943Sdim{ 2128288943Sdim return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A, 2129288943Sdim (__v8df) __B, 2130288943Sdim (__v8df) __C, 2131288943Sdim (__mmask8) __U, 2132288943Sdim _MM_FROUND_CUR_DIRECTION); 2133288943Sdim} 2134288943Sdim 2135288943Sdim#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \ 2136288943Sdim (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \ 2137288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2138288943Sdim (__mmask16) (U), (R)); }) 2139288943Sdim 2140288943Sdim 2141288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2142288943Sdim_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 2143288943Sdim{ 2144288943Sdim return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A, 2145288943Sdim (__v16sf) __B, 2146288943Sdim (__v16sf) __C, 2147288943Sdim (__mmask16) __U, 2148288943Sdim _MM_FROUND_CUR_DIRECTION); 2149288943Sdim} 2150288943Sdim 2151288943Sdim#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \ 2152288943Sdim (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \ 2153288943Sdim (__v8df) (B), (__v8df) (C), \ 2154288943Sdim (__mmask8) (U), (R)); }) 2155288943Sdim 2156288943Sdim 2157288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 2158288943Sdim_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 2159288943Sdim{ 2160288943Sdim return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A, 2161288943Sdim (__v8df) __B, 2162288943Sdim (__v8df) __C, 2163288943Sdim (__mmask8) __U, 2164288943Sdim _MM_FROUND_CUR_DIRECTION); 2165288943Sdim} 2166288943Sdim 2167288943Sdim#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \ 2168288943Sdim (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \ 2169288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2170288943Sdim (__mmask16) (U), (R)); }) 2171288943Sdim 2172288943Sdim 2173288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2174288943Sdim_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 2175288943Sdim{ 2176288943Sdim return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A, 2177288943Sdim (__v16sf) __B, 2178288943Sdim (__v16sf) __C, 2179288943Sdim (__mmask16) __U, 2180288943Sdim _MM_FROUND_CUR_DIRECTION); 2181288943Sdim} 2182288943Sdim 2183288943Sdim#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \ 2184288943Sdim (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \ 2185288943Sdim (__v8df) (B), (__v8df) (C), \ 2186288943Sdim (__mmask8) (U), (R)); }) 2187288943Sdim 2188288943Sdim 2189288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 2190288943Sdim_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 2191288943Sdim{ 2192288943Sdim return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A, 2193288943Sdim (__v8df) __B, 2194288943Sdim (__v8df) __C, 2195288943Sdim (__mmask8) __U, 2196288943Sdim _MM_FROUND_CUR_DIRECTION); 2197288943Sdim} 2198288943Sdim 2199288943Sdim#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \ 2200288943Sdim (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \ 2201288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2202288943Sdim (__mmask16) (U), (R)); }) 2203288943Sdim 2204288943Sdim 2205288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2206288943Sdim_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 2207288943Sdim{ 2208288943Sdim return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A, 2209288943Sdim (__v16sf) __B, 2210288943Sdim (__v16sf) __C, 2211288943Sdim (__mmask16) __U, 2212288943Sdim _MM_FROUND_CUR_DIRECTION); 2213288943Sdim} 2214288943Sdim 2215288943Sdim#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \ 2216288943Sdim (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \ 2217288943Sdim (__v8df) (B), (__v8df) (C), \ 2218288943Sdim (__mmask8) (U), (R)); }) 2219288943Sdim 2220288943Sdim 2221288943Sdim#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \ 2222288943Sdim (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \ 2223288943Sdim (__v8df) (B), (__v8df) (C), \ 2224288943Sdim (__mmask8) (U), (R)); }) 2225288943Sdim 2226288943Sdim 2227288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 2228288943Sdim_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) 2229288943Sdim{ 2230288943Sdim return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A, 2231288943Sdim (__v8df) __B, 2232288943Sdim (__v8df) __C, 2233288943Sdim (__mmask8) __U, 2234288943Sdim _MM_FROUND_CUR_DIRECTION); 2235288943Sdim} 2236288943Sdim 2237288943Sdimstatic __inline__ __m512d __DEFAULT_FN_ATTRS 2238288943Sdim_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) 2239288943Sdim{ 2240288943Sdim return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A, 2241288943Sdim (__v8df) __B, 2242288943Sdim (__v8df) __C, 2243288943Sdim (__mmask8) __U, 2244288943Sdim _MM_FROUND_CUR_DIRECTION); 2245288943Sdim} 2246288943Sdim 2247288943Sdim#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \ 2248288943Sdim (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \ 2249288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2250288943Sdim (__mmask16) (U), (R)); }) 2251288943Sdim 2252288943Sdim 2253288943Sdim#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \ 2254288943Sdim (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \ 2255288943Sdim (__v16sf) (B), (__v16sf) (C), \ 2256288943Sdim (__mmask16) (U), (R)); }) 2257288943Sdim 2258288943Sdim 2259288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2260288943Sdim_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) 2261288943Sdim{ 2262288943Sdim return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A, 2263288943Sdim (__v16sf) __B, 2264288943Sdim (__v16sf) __C, 2265288943Sdim (__mmask16) __U, 2266288943Sdim _MM_FROUND_CUR_DIRECTION); 2267288943Sdim} 2268288943Sdim 2269288943Sdimstatic __inline__ __m512 __DEFAULT_FN_ATTRS 2270288943Sdim_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) 2271288943Sdim{ 2272288943Sdim return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A, 2273288943Sdim (__v16sf) __B, 2274288943Sdim (__v16sf) __C, 2275288943Sdim (__mmask16) __U, 2276288943Sdim _MM_FROUND_CUR_DIRECTION); 2277288943Sdim} 2278288943Sdim 2279288943Sdim 2280288943Sdim 2281277325Sdim/* Vector permutations */ 2282277325Sdim 2283288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2284277325Sdim_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B) 2285277325Sdim{ 2286277325Sdim return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I 2287277325Sdim /* idx */ , 2288277325Sdim (__v16si) __A, 2289277325Sdim (__v16si) __B, 2290277325Sdim (__mmask16) -1); 2291277325Sdim} 2292288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2293277325Sdim_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B) 2294277325Sdim{ 2295277325Sdim return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I 2296277325Sdim /* idx */ , 2297277325Sdim (__v8di) __A, 2298277325Sdim (__v8di) __B, 2299277325Sdim (__mmask8) -1); 2300277325Sdim} 2301277325Sdim 2302288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2303277325Sdim_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B) 2304277325Sdim{ 2305277325Sdim return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I 2306277325Sdim /* idx */ , 2307277325Sdim (__v8df) __A, 2308277325Sdim (__v8df) __B, 2309277325Sdim (__mmask8) -1); 2310277325Sdim} 2311288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2312277325Sdim_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B) 2313277325Sdim{ 2314277325Sdim return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I 2315277325Sdim /* idx */ , 2316277325Sdim (__v16sf) __A, 2317277325Sdim (__v16sf) __B, 2318277325Sdim (__mmask16) -1); 2319277325Sdim} 2320277325Sdim 2321288943Sdim#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \ 2322288943Sdim (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \ 2323288943Sdim (__v8di)(__m512i)(B), \ 2324288943Sdim (I), (__v8di)_mm512_setzero_si512(), \ 2325288943Sdim (__mmask8)-1); }) 2326277325Sdim 2327288943Sdim#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \ 2328288943Sdim (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \ 2329288943Sdim (__v16si)(__m512i)(B), \ 2330288943Sdim (I), (__v16si)_mm512_setzero_si512(), \ 2331288943Sdim (__mmask16)-1); }) 2332277325Sdim 2333288943Sdim/* Vector Extract */ 2334288943Sdim 2335288943Sdim#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \ 2336288943Sdim (__m256d) \ 2337296417Sdim __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \ 2338288943Sdim (I), \ 2339288943Sdim (__v4df)_mm256_setzero_si256(), \ 2340288943Sdim (__mmask8) -1); }) 2341288943Sdim 2342288943Sdim#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \ 2343288943Sdim (__m128) \ 2344296417Sdim __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \ 2345288943Sdim (I), \ 2346288943Sdim (__v4sf)_mm_setzero_ps(), \ 2347288943Sdim (__mmask8) -1); }) 2348288943Sdim 2349277325Sdim/* Vector Blend */ 2350277325Sdim 2351288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2352277325Sdim_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W) 2353277325Sdim{ 2354277325Sdim return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A, 2355277325Sdim (__v8df) __W, 2356277325Sdim (__mmask8) __U); 2357277325Sdim} 2358277325Sdim 2359288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2360277325Sdim_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W) 2361277325Sdim{ 2362277325Sdim return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A, 2363277325Sdim (__v16sf) __W, 2364277325Sdim (__mmask16) __U); 2365277325Sdim} 2366277325Sdim 2367288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2368277325Sdim_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W) 2369277325Sdim{ 2370277325Sdim return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A, 2371277325Sdim (__v8di) __W, 2372277325Sdim (__mmask8) __U); 2373277325Sdim} 2374277325Sdim 2375288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2376277325Sdim_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W) 2377277325Sdim{ 2378277325Sdim return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A, 2379277325Sdim (__v16si) __W, 2380277325Sdim (__mmask16) __U); 2381277325Sdim} 2382277325Sdim 2383277325Sdim/* Compare */ 2384277325Sdim 2385288943Sdim#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \ 2386288943Sdim (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \ 2387288943Sdim (__v16sf)(__m512)(B), \ 2388288943Sdim (P), (__mmask16)-1, (R)); }) 2389277325Sdim 2390288943Sdim#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \ 2391288943Sdim (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \ 2392288943Sdim (__v16sf)(__m512)(B), \ 2393288943Sdim (P), (__mmask16)(U), (R)); }) 2394277325Sdim 2395288943Sdim#define _mm512_cmp_ps_mask(A, B, P) \ 2396288943Sdim _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION) 2397288943Sdim 2398288943Sdim#define _mm512_mask_cmp_ps_mask(U, A, B, P) \ 2399288943Sdim _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION) 2400288943Sdim 2401288943Sdim#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \ 2402288943Sdim (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \ 2403288943Sdim (__v8df)(__m512d)(B), \ 2404288943Sdim (P), (__mmask8)-1, (R)); }) 2405288943Sdim 2406288943Sdim#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \ 2407288943Sdim (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \ 2408288943Sdim (__v8df)(__m512d)(B), \ 2409288943Sdim (P), (__mmask8)(U), (R)); }) 2410288943Sdim 2411288943Sdim#define _mm512_cmp_pd_mask(A, B, P) \ 2412288943Sdim _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION) 2413288943Sdim 2414288943Sdim#define _mm512_mask_cmp_pd_mask(U, A, B, P) \ 2415288943Sdim _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION) 2416288943Sdim 2417277325Sdim/* Conversion */ 2418277325Sdim 2419288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2420277325Sdim_mm512_cvttps_epu32(__m512 __A) 2421277325Sdim{ 2422277325Sdim return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A, 2423277325Sdim (__v16si) 2424277325Sdim _mm512_setzero_si512 (), 2425277325Sdim (__mmask16) -1, 2426277325Sdim _MM_FROUND_CUR_DIRECTION); 2427277325Sdim} 2428277325Sdim 2429288943Sdim#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \ 2430288943Sdim (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \ 2431288943Sdim (__v16sf)_mm512_setzero_ps(), \ 2432288943Sdim (__mmask16)-1, (R)); }) 2433277325Sdim 2434288943Sdim#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \ 2435288943Sdim (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \ 2436288943Sdim (__v16sf)_mm512_setzero_ps(), \ 2437288943Sdim (__mmask16)-1, (R)); }) 2438277325Sdim 2439288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2440277325Sdim_mm512_cvtepi32_pd(__m256i __A) 2441277325Sdim{ 2442277325Sdim return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A, 2443277325Sdim (__v8df) 2444277325Sdim _mm512_setzero_pd (), 2445277325Sdim (__mmask8) -1); 2446277325Sdim} 2447277325Sdim 2448288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2449277325Sdim_mm512_cvtepu32_pd(__m256i __A) 2450277325Sdim{ 2451277325Sdim return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A, 2452277325Sdim (__v8df) 2453277325Sdim _mm512_setzero_pd (), 2454277325Sdim (__mmask8) -1); 2455277325Sdim} 2456277325Sdim 2457288943Sdim#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \ 2458288943Sdim (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \ 2459288943Sdim (__v8sf)_mm256_setzero_ps(), \ 2460288943Sdim (__mmask8)-1, (R)); }) 2461277325Sdim 2462288943Sdim#define _mm512_cvtps_ph(A, I) __extension__ ({ \ 2463288943Sdim (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \ 2464288943Sdim (__v16hi)_mm256_setzero_si256(), \ 2465288943Sdim -1); }) 2466288943Sdim 2467288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2468277325Sdim_mm512_cvtph_ps(__m256i __A) 2469277325Sdim{ 2470277325Sdim return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A, 2471277325Sdim (__v16sf) 2472277325Sdim _mm512_setzero_ps (), 2473277325Sdim (__mmask16) -1, 2474277325Sdim _MM_FROUND_CUR_DIRECTION); 2475277325Sdim} 2476277325Sdim 2477288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2478296417Sdim_mm512_cvttps_epi32(__m512 __a) 2479277325Sdim{ 2480277325Sdim return (__m512i) 2481296417Sdim __builtin_ia32_cvttps2dq512_mask((__v16sf) __a, 2482277325Sdim (__v16si) _mm512_setzero_si512 (), 2483277325Sdim (__mmask16) -1, _MM_FROUND_CUR_DIRECTION); 2484277325Sdim} 2485277325Sdim 2486288943Sdimstatic __inline __m256i __DEFAULT_FN_ATTRS 2487296417Sdim_mm512_cvttpd_epi32(__m512d __a) 2488277325Sdim{ 2489296417Sdim return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a, 2490277325Sdim (__v8si)_mm256_setzero_si256(), 2491277325Sdim (__mmask8) -1, 2492277325Sdim _MM_FROUND_CUR_DIRECTION); 2493277325Sdim} 2494277325Sdim 2495288943Sdim#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \ 2496288943Sdim (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \ 2497288943Sdim (__v8si)_mm256_setzero_si256(), \ 2498288943Sdim (__mmask8)-1, (R)); }) 2499277325Sdim 2500288943Sdim#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \ 2501288943Sdim (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \ 2502288943Sdim (__v16si)_mm512_setzero_si512(), \ 2503288943Sdim (__mmask16)-1, (R)); }) 2504277325Sdim 2505288943Sdim#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \ 2506288943Sdim (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \ 2507288943Sdim (__v16si)_mm512_setzero_si512(), \ 2508288943Sdim (__mmask16)-1, (R)); }) 2509288943Sdim 2510288943Sdim#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \ 2511288943Sdim (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \ 2512288943Sdim (__v8si)_mm256_setzero_si256(), \ 2513288943Sdim (__mmask8)-1, (R)); }) 2514288943Sdim 2515288943Sdim#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \ 2516288943Sdim (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \ 2517288943Sdim (__v16si)_mm512_setzero_si512(), \ 2518288943Sdim (__mmask16)-1, (R)); }) 2519288943Sdim 2520288943Sdim#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \ 2521288943Sdim (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \ 2522288943Sdim (__v8si)_mm256_setzero_si256(), \ 2523288943Sdim (__mmask8) -1, (R)); }) 2524288943Sdim 2525277325Sdim/* Unpack and Interleave */ 2526288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2527277325Sdim_mm512_unpackhi_pd(__m512d __a, __m512d __b) 2528277325Sdim{ 2529277325Sdim return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6); 2530277325Sdim} 2531277325Sdim 2532288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2533277325Sdim_mm512_unpacklo_pd(__m512d __a, __m512d __b) 2534277325Sdim{ 2535277325Sdim return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6); 2536277325Sdim} 2537277325Sdim 2538288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2539277325Sdim_mm512_unpackhi_ps(__m512 __a, __m512 __b) 2540277325Sdim{ 2541277325Sdim return __builtin_shufflevector(__a, __b, 2542277325Sdim 2, 18, 3, 19, 2543277325Sdim 2+4, 18+4, 3+4, 19+4, 2544277325Sdim 2+8, 18+8, 3+8, 19+8, 2545277325Sdim 2+12, 18+12, 3+12, 19+12); 2546277325Sdim} 2547277325Sdim 2548288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2549277325Sdim_mm512_unpacklo_ps(__m512 __a, __m512 __b) 2550277325Sdim{ 2551277325Sdim return __builtin_shufflevector(__a, __b, 2552277325Sdim 0, 16, 1, 17, 2553277325Sdim 0+4, 16+4, 1+4, 17+4, 2554277325Sdim 0+8, 16+8, 1+8, 17+8, 2555277325Sdim 0+12, 16+12, 1+12, 17+12); 2556277325Sdim} 2557277325Sdim 2558277325Sdim/* Bit Test */ 2559277325Sdim 2560288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS 2561277325Sdim_mm512_test_epi32_mask(__m512i __A, __m512i __B) 2562277325Sdim{ 2563277325Sdim return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A, 2564277325Sdim (__v16si) __B, 2565277325Sdim (__mmask16) -1); 2566277325Sdim} 2567277325Sdim 2568288943Sdimstatic __inline __mmask8 __DEFAULT_FN_ATTRS 2569277325Sdim_mm512_test_epi64_mask(__m512i __A, __m512i __B) 2570277325Sdim{ 2571277325Sdim return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, 2572277325Sdim (__v8di) __B, 2573277325Sdim (__mmask8) -1); 2574277325Sdim} 2575277325Sdim 2576277325Sdim/* SIMD load ops */ 2577277325Sdim 2578288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2579277325Sdim_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P) 2580277325Sdim{ 2581277325Sdim return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P, 2582277325Sdim (__v16si) 2583277325Sdim _mm512_setzero_si512 (), 2584277325Sdim (__mmask16) __U); 2585277325Sdim} 2586277325Sdim 2587288943Sdimstatic __inline __m512i __DEFAULT_FN_ATTRS 2588277325Sdim_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P) 2589277325Sdim{ 2590277325Sdim return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P, 2591277325Sdim (__v8di) 2592277325Sdim _mm512_setzero_si512 (), 2593277325Sdim (__mmask8) __U); 2594277325Sdim} 2595277325Sdim 2596288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2597277325Sdim_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P) 2598277325Sdim{ 2599277325Sdim return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P, 2600277325Sdim (__v16sf) 2601277325Sdim _mm512_setzero_ps (), 2602277325Sdim (__mmask16) __U); 2603277325Sdim} 2604277325Sdim 2605288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2606277325Sdim_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P) 2607277325Sdim{ 2608277325Sdim return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P, 2609277325Sdim (__v8df) 2610277325Sdim _mm512_setzero_pd (), 2611277325Sdim (__mmask8) __U); 2612277325Sdim} 2613277325Sdim 2614288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2615288943Sdim_mm512_maskz_load_ps(__mmask16 __U, void const *__P) 2616288943Sdim{ 2617288943Sdim return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P, 2618288943Sdim (__v16sf) 2619288943Sdim _mm512_setzero_ps (), 2620288943Sdim (__mmask16) __U); 2621288943Sdim} 2622288943Sdim 2623288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2624288943Sdim_mm512_maskz_load_pd(__mmask8 __U, void const *__P) 2625288943Sdim{ 2626288943Sdim return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P, 2627288943Sdim (__v8df) 2628288943Sdim _mm512_setzero_pd (), 2629288943Sdim (__mmask8) __U); 2630288943Sdim} 2631288943Sdim 2632288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2633277325Sdim_mm512_loadu_pd(double const *__p) 2634277325Sdim{ 2635277325Sdim struct __loadu_pd { 2636277325Sdim __m512d __v; 2637288943Sdim } __attribute__((__packed__, __may_alias__)); 2638277325Sdim return ((struct __loadu_pd*)__p)->__v; 2639277325Sdim} 2640277325Sdim 2641288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2642277325Sdim_mm512_loadu_ps(float const *__p) 2643277325Sdim{ 2644277325Sdim struct __loadu_ps { 2645277325Sdim __m512 __v; 2646288943Sdim } __attribute__((__packed__, __may_alias__)); 2647277325Sdim return ((struct __loadu_ps*)__p)->__v; 2648277325Sdim} 2649277325Sdim 2650288943Sdimstatic __inline __m512 __DEFAULT_FN_ATTRS 2651288943Sdim_mm512_load_ps(double const *__p) 2652288943Sdim{ 2653288943Sdim return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p, 2654288943Sdim (__v16sf) 2655288943Sdim _mm512_setzero_ps (), 2656288943Sdim (__mmask16) -1); 2657288943Sdim} 2658288943Sdim 2659288943Sdimstatic __inline __m512d __DEFAULT_FN_ATTRS 2660288943Sdim_mm512_load_pd(float const *__p) 2661288943Sdim{ 2662288943Sdim return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p, 2663288943Sdim (__v8df) 2664288943Sdim _mm512_setzero_pd (), 2665288943Sdim (__mmask8) -1); 2666288943Sdim} 2667288943Sdim 2668277325Sdim/* SIMD store ops */ 2669277325Sdim 2670288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2671277325Sdim_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) 2672277325Sdim{ 2673277325Sdim __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A, 2674277325Sdim (__mmask8) __U); 2675277325Sdim} 2676277325Sdim 2677288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2678277325Sdim_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) 2679277325Sdim{ 2680277325Sdim __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A, 2681277325Sdim (__mmask16) __U); 2682277325Sdim} 2683277325Sdim 2684288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2685277325Sdim_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A) 2686277325Sdim{ 2687277325Sdim __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U); 2688277325Sdim} 2689277325Sdim 2690288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2691277325Sdim_mm512_storeu_pd(void *__P, __m512d __A) 2692277325Sdim{ 2693277325Sdim __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1); 2694277325Sdim} 2695277325Sdim 2696288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2697277325Sdim_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A) 2698277325Sdim{ 2699277325Sdim __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A, 2700277325Sdim (__mmask16) __U); 2701277325Sdim} 2702277325Sdim 2703288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2704277325Sdim_mm512_storeu_ps(void *__P, __m512 __A) 2705277325Sdim{ 2706277325Sdim __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1); 2707277325Sdim} 2708277325Sdim 2709288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2710288943Sdim_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A) 2711277325Sdim{ 2712288943Sdim __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U); 2713277325Sdim} 2714277325Sdim 2715288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2716277325Sdim_mm512_store_pd(void *__P, __m512d __A) 2717277325Sdim{ 2718277325Sdim *(__m512d*)__P = __A; 2719277325Sdim} 2720277325Sdim 2721288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2722288943Sdim_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A) 2723288943Sdim{ 2724288943Sdim __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A, 2725288943Sdim (__mmask16) __U); 2726288943Sdim} 2727288943Sdim 2728288943Sdimstatic __inline void __DEFAULT_FN_ATTRS 2729288943Sdim_mm512_store_ps(void *__P, __m512 __A) 2730288943Sdim{ 2731288943Sdim *(__m512*)__P = __A; 2732288943Sdim} 2733288943Sdim 2734277325Sdim/* Mask ops */ 2735277325Sdim 2736288943Sdimstatic __inline __mmask16 __DEFAULT_FN_ATTRS 2737277325Sdim_mm512_knot(__mmask16 __M) 2738277325Sdim{ 2739277325Sdim return __builtin_ia32_knothi(__M); 2740277325Sdim} 2741277325Sdim 2742277325Sdim/* Integer compare */ 2743277325Sdim 2744288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2745277325Sdim_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) { 2746277325Sdim return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b, 2747277325Sdim (__mmask16)-1); 2748277325Sdim} 2749277325Sdim 2750288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2751277325Sdim_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2752277325Sdim return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b, 2753277325Sdim __u); 2754277325Sdim} 2755277325Sdim 2756288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2757288943Sdim_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) { 2758288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0, 2759288943Sdim (__mmask16)-1); 2760288943Sdim} 2761288943Sdim 2762288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2763288943Sdim_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2764288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0, 2765288943Sdim __u); 2766288943Sdim} 2767288943Sdim 2768288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2769277325Sdim_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2770277325Sdim return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b, 2771277325Sdim __u); 2772277325Sdim} 2773277325Sdim 2774288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2775277325Sdim_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) { 2776277325Sdim return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b, 2777277325Sdim (__mmask8)-1); 2778277325Sdim} 2779277325Sdim 2780288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2781288943Sdim_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) { 2782288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0, 2783288943Sdim (__mmask8)-1); 2784288943Sdim} 2785288943Sdim 2786288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2787288943Sdim_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2788288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0, 2789288943Sdim __u); 2790288943Sdim} 2791288943Sdim 2792288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2793288943Sdim_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) { 2794288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2795288943Sdim (__mmask16)-1); 2796288943Sdim} 2797288943Sdim 2798288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2799288943Sdim_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2800288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2801288943Sdim __u); 2802288943Sdim} 2803288943Sdim 2804288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2805288943Sdim_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) { 2806288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2807288943Sdim (__mmask16)-1); 2808288943Sdim} 2809288943Sdim 2810288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2811288943Sdim_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2812288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5, 2813288943Sdim __u); 2814288943Sdim} 2815288943Sdim 2816288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2817288943Sdim_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) { 2818288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2819288943Sdim (__mmask8)-1); 2820288943Sdim} 2821288943Sdim 2822288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2823288943Sdim_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2824288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2825288943Sdim __u); 2826288943Sdim} 2827288943Sdim 2828288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2829288943Sdim_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) { 2830288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2831288943Sdim (__mmask8)-1); 2832288943Sdim} 2833288943Sdim 2834288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2835288943Sdim_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2836288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5, 2837288943Sdim __u); 2838288943Sdim} 2839288943Sdim 2840288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2841288943Sdim_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) { 2842288943Sdim return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b, 2843288943Sdim (__mmask16)-1); 2844288943Sdim} 2845288943Sdim 2846288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2847288943Sdim_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2848288943Sdim return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b, 2849288943Sdim __u); 2850288943Sdim} 2851288943Sdim 2852288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2853288943Sdim_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) { 2854288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6, 2855288943Sdim (__mmask16)-1); 2856288943Sdim} 2857288943Sdim 2858288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2859288943Sdim_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2860288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6, 2861288943Sdim __u); 2862288943Sdim} 2863288943Sdim 2864288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2865288943Sdim_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2866288943Sdim return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b, 2867288943Sdim __u); 2868288943Sdim} 2869288943Sdim 2870288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2871288943Sdim_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) { 2872288943Sdim return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b, 2873288943Sdim (__mmask8)-1); 2874288943Sdim} 2875288943Sdim 2876288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2877288943Sdim_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) { 2878288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6, 2879288943Sdim (__mmask8)-1); 2880288943Sdim} 2881288943Sdim 2882288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2883288943Sdim_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2884288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6, 2885288943Sdim __u); 2886288943Sdim} 2887288943Sdim 2888288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2889288943Sdim_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) { 2890288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2891288943Sdim (__mmask16)-1); 2892288943Sdim} 2893288943Sdim 2894288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2895288943Sdim_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2896288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2897288943Sdim __u); 2898288943Sdim} 2899288943Sdim 2900288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2901288943Sdim_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) { 2902288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2903288943Sdim (__mmask16)-1); 2904288943Sdim} 2905288943Sdim 2906288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2907288943Sdim_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2908288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2, 2909288943Sdim __u); 2910288943Sdim} 2911288943Sdim 2912288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2913288943Sdim_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) { 2914288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2915288943Sdim (__mmask8)-1); 2916288943Sdim} 2917288943Sdim 2918288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2919288943Sdim_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2920288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2921288943Sdim __u); 2922288943Sdim} 2923288943Sdim 2924288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2925288943Sdim_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) { 2926288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2927288943Sdim (__mmask8)-1); 2928288943Sdim} 2929288943Sdim 2930288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2931288943Sdim_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2932288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2, 2933288943Sdim __u); 2934288943Sdim} 2935288943Sdim 2936288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2937288943Sdim_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) { 2938288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2939288943Sdim (__mmask16)-1); 2940288943Sdim} 2941288943Sdim 2942288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2943288943Sdim_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2944288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2945288943Sdim __u); 2946288943Sdim} 2947288943Sdim 2948288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2949288943Sdim_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) { 2950288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2951288943Sdim (__mmask16)-1); 2952288943Sdim} 2953288943Sdim 2954288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2955288943Sdim_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2956288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1, 2957288943Sdim __u); 2958288943Sdim} 2959288943Sdim 2960288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2961288943Sdim_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) { 2962288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2963288943Sdim (__mmask8)-1); 2964288943Sdim} 2965288943Sdim 2966288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2967288943Sdim_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2968288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2969288943Sdim __u); 2970288943Sdim} 2971288943Sdim 2972288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2973288943Sdim_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) { 2974288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2975288943Sdim (__mmask8)-1); 2976288943Sdim} 2977288943Sdim 2978288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 2979288943Sdim_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 2980288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1, 2981288943Sdim __u); 2982288943Sdim} 2983288943Sdim 2984288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2985288943Sdim_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) { 2986288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2987288943Sdim (__mmask16)-1); 2988288943Sdim} 2989288943Sdim 2990288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2991288943Sdim_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 2992288943Sdim return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2993288943Sdim __u); 2994288943Sdim} 2995288943Sdim 2996288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 2997288943Sdim_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) { 2998288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4, 2999288943Sdim (__mmask16)-1); 3000288943Sdim} 3001288943Sdim 3002288943Sdimstatic __inline__ __mmask16 __DEFAULT_FN_ATTRS 3003288943Sdim_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 3004288943Sdim return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4, 3005288943Sdim __u); 3006288943Sdim} 3007288943Sdim 3008288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 3009288943Sdim_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) { 3010288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4, 3011288943Sdim (__mmask8)-1); 3012288943Sdim} 3013288943Sdim 3014288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 3015288943Sdim_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 3016288943Sdim return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4, 3017288943Sdim __u); 3018288943Sdim} 3019288943Sdim 3020288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 3021288943Sdim_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) { 3022288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4, 3023288943Sdim (__mmask8)-1); 3024288943Sdim} 3025288943Sdim 3026288943Sdimstatic __inline__ __mmask8 __DEFAULT_FN_ATTRS 3027288943Sdim_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 3028288943Sdim return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4, 3029288943Sdim __u); 3030288943Sdim} 3031288943Sdim 3032288943Sdim#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \ 3033296417Sdim (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \ 3034296417Sdim (__v16si)(__m512i)(b), (p), \ 3035288943Sdim (__mmask16)-1); }) 3036288943Sdim 3037288943Sdim#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \ 3038296417Sdim (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \ 3039296417Sdim (__v16si)(__m512i)(b), (p), \ 3040288943Sdim (__mmask16)-1); }) 3041288943Sdim 3042288943Sdim#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \ 3043296417Sdim (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \ 3044296417Sdim (__v8di)(__m512i)(b), (p), \ 3045288943Sdim (__mmask8)-1); }) 3046288943Sdim 3047288943Sdim#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \ 3048296417Sdim (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \ 3049296417Sdim (__v8di)(__m512i)(b), (p), \ 3050288943Sdim (__mmask8)-1); }) 3051288943Sdim 3052288943Sdim#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \ 3053296417Sdim (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \ 3054296417Sdim (__v16si)(__m512i)(b), (p), \ 3055288943Sdim (__mmask16)(m)); }) 3056288943Sdim 3057288943Sdim#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \ 3058296417Sdim (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \ 3059296417Sdim (__v16si)(__m512i)(b), (p), \ 3060288943Sdim (__mmask16)(m)); }) 3061288943Sdim 3062288943Sdim#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \ 3063296417Sdim (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \ 3064296417Sdim (__v8di)(__m512i)(b), (p), \ 3065288943Sdim (__mmask8)(m)); }) 3066288943Sdim 3067288943Sdim#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \ 3068296417Sdim (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \ 3069296417Sdim (__v8di)(__m512i)(b), (p), \ 3070288943Sdim (__mmask8)(m)); }) 3071288943Sdim 3072288943Sdim#undef __DEFAULT_FN_ATTRS 3073288943Sdim 3074277325Sdim#endif // __AVX512FINTRIN_H 3075