Home | History | Annotate | Download | only in clang-include
      1 /*===---- avx512dqintrin.h - AVX512DQ intrinsics ---------------------------===
      2  *
      3  * Permission is hereby granted, free of charge, to any person obtaining a copy
      4  * of this software and associated documentation files (the "Software"), to deal
      5  * in the Software without restriction, including without limitation the rights
      6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      7  * copies of the Software, and to permit persons to whom the Software is
      8  * furnished to do so, subject to the following conditions:
      9  *
     10  * The above copyright notice and this permission notice shall be included in
     11  * all copies or substantial portions of the Software.
     12  *
     13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     19  * THE SOFTWARE.
     20  *
     21  *===-----------------------------------------------------------------------===
     22  */
     23 
     24 #ifndef __IMMINTRIN_H
     25 #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
     26 #endif
     27 
     28 #ifndef __AVX512DQINTRIN_H
     29 #define __AVX512DQINTRIN_H
     30 
     31 /* Define the default attributes for the functions in this file. */
     32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
     33 
     34 static __inline__ __m512i __DEFAULT_FN_ATTRS
     35 _mm512_mullo_epi64 (__m512i __A, __m512i __B) {
     36   return (__m512i) ((__v8di) __A * (__v8di) __B);
     37 }
     38 
     39 static __inline__ __m512i __DEFAULT_FN_ATTRS
     40 _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
     41   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
     42               (__v8di) __B,
     43               (__v8di) __W,
     44               (__mmask8) __U);
     45 }
     46 
     47 static __inline__ __m512i __DEFAULT_FN_ATTRS
     48 _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
     49   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
     50               (__v8di) __B,
     51               (__v8di)
     52               _mm512_setzero_si512 (),
     53               (__mmask8) __U);
     54 }
     55 
     56 static __inline__ __m512d __DEFAULT_FN_ATTRS
     57 _mm512_xor_pd (__m512d __A, __m512d __B) {
     58   return (__m512d) ((__v8di) __A ^ (__v8di) __B);
     59 }
     60 
     61 static __inline__ __m512d __DEFAULT_FN_ATTRS
     62 _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
     63   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
     64              (__v8df) __B,
     65              (__v8df) __W,
     66              (__mmask8) __U);
     67 }
     68 
     69 static __inline__ __m512d __DEFAULT_FN_ATTRS
     70 _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
     71   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
     72              (__v8df) __B,
     73              (__v8df)
     74              _mm512_setzero_pd (),
     75              (__mmask8) __U);
     76 }
     77 
     78 static __inline__ __m512 __DEFAULT_FN_ATTRS
     79 _mm512_xor_ps (__m512 __A, __m512 __B) {
     80   return (__m512) ((__v16si) __A ^ (__v16si) __B);
     81 }
     82 
     83 static __inline__ __m512 __DEFAULT_FN_ATTRS
     84 _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
     85   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
     86             (__v16sf) __B,
     87             (__v16sf) __W,
     88             (__mmask16) __U);
     89 }
     90 
     91 static __inline__ __m512 __DEFAULT_FN_ATTRS
     92 _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
     93   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
     94             (__v16sf) __B,
     95             (__v16sf)
     96             _mm512_setzero_ps (),
     97             (__mmask16) __U);
     98 }
     99 
    100 static __inline__ __m512d __DEFAULT_FN_ATTRS
    101 _mm512_or_pd (__m512d __A, __m512d __B) {
    102   return (__m512d) ((__v8di) __A | (__v8di) __B);
    103 }
    104 
    105 static __inline__ __m512d __DEFAULT_FN_ATTRS
    106 _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
    107   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
    108             (__v8df) __B,
    109             (__v8df) __W,
    110             (__mmask8) __U);
    111 }
    112 
    113 static __inline__ __m512d __DEFAULT_FN_ATTRS
    114 _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
    115   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
    116             (__v8df) __B,
    117             (__v8df)
    118             _mm512_setzero_pd (),
    119             (__mmask8) __U);
    120 }
    121 
    122 static __inline__ __m512 __DEFAULT_FN_ATTRS
    123 _mm512_or_ps (__m512 __A, __m512 __B) {
    124   return (__m512) ((__v16si) __A | (__v16si) __B);
    125 }
    126 
    127 static __inline__ __m512 __DEFAULT_FN_ATTRS
    128 _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
    129   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
    130                  (__v16sf) __B,
    131                  (__v16sf) __W,
    132                  (__mmask16) __U);
    133 }
    134 
    135 static __inline__ __m512 __DEFAULT_FN_ATTRS
    136 _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
    137   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
    138                  (__v16sf) __B,
    139                  (__v16sf)
    140                  _mm512_setzero_ps (),
    141                  (__mmask16) __U);
    142 }
    143 
    144 static __inline__ __m512d __DEFAULT_FN_ATTRS
    145 _mm512_and_pd (__m512d __A, __m512d __B) {
    146   return (__m512d) ((__v8di) __A & (__v8di) __B);
    147 }
    148 
    149 static __inline__ __m512d __DEFAULT_FN_ATTRS
    150 _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
    151   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
    152              (__v8df) __B,
    153              (__v8df) __W,
    154              (__mmask8) __U);
    155 }
    156 
    157 static __inline__ __m512d __DEFAULT_FN_ATTRS
    158 _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
    159   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
    160              (__v8df) __B,
    161              (__v8df)
    162              _mm512_setzero_pd (),
    163              (__mmask8) __U);
    164 }
    165 
    166 static __inline__ __m512 __DEFAULT_FN_ATTRS
    167 _mm512_and_ps (__m512 __A, __m512 __B) {
    168   return (__m512) ((__v16si) __A & (__v16si) __B);
    169 }
    170 
    171 static __inline__ __m512 __DEFAULT_FN_ATTRS
    172 _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
    173   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
    174             (__v16sf) __B,
    175             (__v16sf) __W,
    176             (__mmask16) __U);
    177 }
    178 
    179 static __inline__ __m512 __DEFAULT_FN_ATTRS
    180 _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
    181   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
    182             (__v16sf) __B,
    183             (__v16sf)
    184             _mm512_setzero_ps (),
    185             (__mmask16) __U);
    186 }
    187 
    188 static __inline__ __m512d __DEFAULT_FN_ATTRS
    189 _mm512_andnot_pd (__m512d __A, __m512d __B) {
    190   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
    191               (__v8df) __B,
    192               (__v8df)
    193               _mm512_setzero_pd (),
    194               (__mmask8) -1);
    195 }
    196 
    197 static __inline__ __m512d __DEFAULT_FN_ATTRS
    198 _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
    199   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
    200               (__v8df) __B,
    201               (__v8df) __W,
    202               (__mmask8) __U);
    203 }
    204 
    205 static __inline__ __m512d __DEFAULT_FN_ATTRS
    206 _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
    207   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
    208               (__v8df) __B,
    209               (__v8df)
    210               _mm512_setzero_pd (),
    211               (__mmask8) __U);
    212 }
    213 
    214 static __inline__ __m512 __DEFAULT_FN_ATTRS
    215 _mm512_andnot_ps (__m512 __A, __m512 __B) {
    216   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
    217              (__v16sf) __B,
    218              (__v16sf)
    219              _mm512_setzero_ps (),
    220              (__mmask16) -1);
    221 }
    222 
    223 static __inline__ __m512 __DEFAULT_FN_ATTRS
    224 _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
    225   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
    226              (__v16sf) __B,
    227              (__v16sf) __W,
    228              (__mmask16) __U);
    229 }
    230 
    231 static __inline__ __m512 __DEFAULT_FN_ATTRS
    232 _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
    233   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
    234              (__v16sf) __B,
    235              (__v16sf)
    236              _mm512_setzero_ps (),
    237              (__mmask16) __U);
    238 }
    239 
    240 static __inline__ __m512i __DEFAULT_FN_ATTRS
    241 _mm512_cvtpd_epi64 (__m512d __A) {
    242   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
    243                 (__v8di) _mm512_setzero_si512(),
    244                 (__mmask8) -1,
    245                 _MM_FROUND_CUR_DIRECTION);
    246 }
    247 
    248 static __inline__ __m512i __DEFAULT_FN_ATTRS
    249 _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
    250   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
    251                 (__v8di) __W,
    252                 (__mmask8) __U,
    253                 _MM_FROUND_CUR_DIRECTION);
    254 }
    255 
    256 static __inline__ __m512i __DEFAULT_FN_ATTRS
    257 _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A) {
    258   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
    259                 (__v8di) _mm512_setzero_si512(),
    260                 (__mmask8) __U,
    261                 _MM_FROUND_CUR_DIRECTION);
    262 }
    263 
    264 #define _mm512_cvt_roundpd_epi64(__A, __R) __extension__ ({              \
    265   (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,               \
    266                 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    267 
    268 #define _mm512_mask_cvt_roundpd_epi64(__W, __U, __A, __R) __extension__ ({ \
    269   (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,                 \
    270                 (__v8di) __W, (__mmask8) __U, __R);})
    271 
    272 #define _mm512_maskz_cvt_roundpd_epi64(__U, __A, __R) __extension__ ({   \
    273   (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,        \
    274                 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R); })
    275 
    276 static __inline__ __m512i __DEFAULT_FN_ATTRS
    277 _mm512_cvtpd_epu64 (__m512d __A) {
    278   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
    279                  (__v8di) _mm512_setzero_si512(),
    280                  (__mmask8) -1,
    281                  _MM_FROUND_CUR_DIRECTION);
    282 }
    283 
    284 static __inline__ __m512i __DEFAULT_FN_ATTRS
    285 _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
    286   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
    287                  (__v8di) __W,
    288                  (__mmask8) __U,
    289                  _MM_FROUND_CUR_DIRECTION);
    290 }
    291 
    292 static __inline__ __m512i __DEFAULT_FN_ATTRS
    293 _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A) {
    294   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
    295                  (__v8di) _mm512_setzero_si512(),
    296                  (__mmask8) __U,
    297                  _MM_FROUND_CUR_DIRECTION);
    298 }
    299 
    300 #define _mm512_cvt_roundpd_epu64(__A, __R) __extension__ ({               \
    301   (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,               \
    302                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    303 
    304 #define _mm512_mask_cvt_roundpd_epu64(__W, __U, __A, __R) __extension__ ({ \
    305   (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,                \
    306                  (__v8di) __W, (__mmask8) __U, __R);})
    307 
    308 #define _mm512_maskz_cvt_roundpd_epu64(__U, __A, __R) __extension__ ({     \
    309   (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,                \
    310                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    311 
    312 static __inline__ __m512i __DEFAULT_FN_ATTRS
    313 _mm512_cvtps_epi64 (__m256 __A) {
    314   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
    315                 (__v8di) _mm512_setzero_si512(),
    316                 (__mmask8) -1,
    317                 _MM_FROUND_CUR_DIRECTION);
    318 }
    319 
    320 static __inline__ __m512i __DEFAULT_FN_ATTRS
    321 _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
    322   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
    323                 (__v8di) __W,
    324                 (__mmask8) __U,
    325                 _MM_FROUND_CUR_DIRECTION);
    326 }
    327 
    328 static __inline__ __m512i __DEFAULT_FN_ATTRS
    329 _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A) {
    330   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
    331                 (__v8di) _mm512_setzero_si512(),
    332                 (__mmask8) __U,
    333                 _MM_FROUND_CUR_DIRECTION);
    334 }
    335 
    336 #define _mm512_cvt_roundps_epi64(__A, __R) __extension__ ({             \
    337   (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,              \
    338                 (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    339 
    340 #define _mm512_mask_cvt_roundps_epi64(__W, __U, __A, __R) __extension__ ({ \
    341   (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,                 \
    342                 (__v8di) __W, (__mmask8) __U, __R);})
    343 
    344 #define _mm512_maskz_cvt_roundps_epi64(__U, __A, __R) __extension__ ({   \
    345   (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,               \
    346                 (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    347 
    348 static __inline__ __m512i __DEFAULT_FN_ATTRS
    349 _mm512_cvtps_epu64 (__m256 __A) {
    350   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
    351                  (__v8di) _mm512_setzero_si512(),
    352                  (__mmask8) -1,
    353                  _MM_FROUND_CUR_DIRECTION);
    354 }
    355 
    356 static __inline__ __m512i __DEFAULT_FN_ATTRS
    357 _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
    358   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
    359                  (__v8di) __W,
    360                  (__mmask8) __U,
    361                  _MM_FROUND_CUR_DIRECTION);
    362 }
    363 
    364 static __inline__ __m512i __DEFAULT_FN_ATTRS
    365 _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A) {
    366   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
    367                  (__v8di) _mm512_setzero_si512(),
    368                  (__mmask8) __U,
    369                  _MM_FROUND_CUR_DIRECTION);
    370 }
    371 
    372 #define _mm512_cvt_roundps_epu64(__A, __R) __extension__ ({              \
    373   (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,              \
    374                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    375 
    376 #define _mm512_mask_cvt_roundps_epu64(__W, __U, __A, __R) __extension__ ({ \
    377   (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,                \
    378                  (__v8di) __W, (__mmask8) __U, __R);})
    379 
    380 #define _mm512_maskz_cvt_roundps_epu64(__U, __A, __R) __extension__ ({   \
    381   (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,              \
    382                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    383 
    384 
    385 static __inline__ __m512d __DEFAULT_FN_ATTRS
    386 _mm512_cvtepi64_pd (__m512i __A) {
    387   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
    388                 (__v8df) _mm512_setzero_pd(),
    389                 (__mmask8) -1,
    390                 _MM_FROUND_CUR_DIRECTION);
    391 }
    392 
    393 static __inline__ __m512d __DEFAULT_FN_ATTRS
    394 _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
    395   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
    396                 (__v8df) __W,
    397                 (__mmask8) __U,
    398                 _MM_FROUND_CUR_DIRECTION);
    399 }
    400 
    401 static __inline__ __m512d __DEFAULT_FN_ATTRS
    402 _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
    403   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
    404                 (__v8df) _mm512_setzero_pd(),
    405                 (__mmask8) __U,
    406                 _MM_FROUND_CUR_DIRECTION);
    407 }
    408 
    409 #define _mm512_cvt_roundepi64_pd(__A, __R) __extension__ ({          \
    410   (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,           \
    411                 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
    412 
    413 #define _mm512_mask_cvt_roundepi64_pd(__W, __U, __A, __R) __extension__ ({ \
    414   (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,                 \
    415                 (__v8df) __W, (__mmask8) __U, __R);})
    416 
    417 #define _mm512_maskz_cvt_roundepi64_pd(__U, __A, __R) __extension__ ({ \
    418   (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,             \
    419                 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
    420 
    421 static __inline__ __m256 __DEFAULT_FN_ATTRS
    422 _mm512_cvtepi64_ps (__m512i __A) {
    423   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
    424                (__v8sf) _mm256_setzero_ps(),
    425                (__mmask8) -1,
    426                _MM_FROUND_CUR_DIRECTION);
    427 }
    428 
    429 static __inline__ __m256 __DEFAULT_FN_ATTRS
    430 _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
    431   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
    432                (__v8sf) __W,
    433                (__mmask8) __U,
    434                _MM_FROUND_CUR_DIRECTION);
    435 }
    436 
    437 static __inline__ __m256 __DEFAULT_FN_ATTRS
    438 _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
    439   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
    440                (__v8sf) _mm256_setzero_ps(),
    441                (__mmask8) __U,
    442                _MM_FROUND_CUR_DIRECTION);
    443 }
    444 
    445 #define _mm512_cvt_roundepi64_ps(__A, __R) __extension__ ({        \
    446   (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,          \
    447                (__v8sf) _mm256_setzero_ps(), (__mmask8) -1, __R);})
    448 
    449 #define _mm512_mask_cvt_roundepi64_ps(__W, __U, __A, __R) __extension__ ({ \
    450   (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,                  \
    451                (__v8sf) __W, (__mmask8) __U, __R);})
    452 
    453 #define _mm512_maskz_cvt_roundepi64_ps(__U, __A, __R) __extension__ ({ \
    454   (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,              \
    455                (__v8sf) _mm256_setzero_ps(), (__mmask8) __U, __R);})
    456 
    457 
    458 static __inline__ __m512i __DEFAULT_FN_ATTRS
    459 _mm512_cvttpd_epi64 (__m512d __A) {
    460   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
    461                  (__v8di) _mm512_setzero_si512(),
    462                  (__mmask8) -1,
    463                  _MM_FROUND_CUR_DIRECTION);
    464 }
    465 
    466 static __inline__ __m512i __DEFAULT_FN_ATTRS
    467 _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
    468   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
    469                  (__v8di) __W,
    470                  (__mmask8) __U,
    471                  _MM_FROUND_CUR_DIRECTION);
    472 }
    473 
    474 static __inline__ __m512i __DEFAULT_FN_ATTRS
    475 _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
    476   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
    477                  (__v8di) _mm512_setzero_si512(),
    478                  (__mmask8) __U,
    479                  _MM_FROUND_CUR_DIRECTION);
    480 }
    481 
    482 #define _mm512_cvtt_roundpd_epi64(__A, __R) __extension__ ({             \
    483   (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,              \
    484                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    485 
    486 #define _mm512_mask_cvtt_roundpd_epi64(__W, __U, __A, __R) __extension__ ({ \
    487   (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,                 \
    488                  (__v8di) __W, (__mmask8) __U, __R);})
    489 
    490 #define _mm512_maskz_cvtt_roundpd_epi64(__U, __A, __R) __extension__ ({ \
    491   (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,             \
    492                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    493 
    494 static __inline__ __m512i __DEFAULT_FN_ATTRS
    495 _mm512_cvttpd_epu64 (__m512d __A) {
    496   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
    497                   (__v8di) _mm512_setzero_si512(),
    498                   (__mmask8) -1,
    499                   _MM_FROUND_CUR_DIRECTION);
    500 }
    501 
    502 static __inline__ __m512i __DEFAULT_FN_ATTRS
    503 _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
    504   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
    505                   (__v8di) __W,
    506                   (__mmask8) __U,
    507                   _MM_FROUND_CUR_DIRECTION);
    508 }
    509 
    510 static __inline__ __m512i __DEFAULT_FN_ATTRS
    511 _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
    512   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
    513                   (__v8di) _mm512_setzero_si512(),
    514                   (__mmask8) __U,
    515                   _MM_FROUND_CUR_DIRECTION);
    516 }
    517 
    518 #define _mm512_cvtt_roundpd_epu64(__A, __R) __extension__ ({              \
    519   (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,              \
    520                   (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    521 
    522 #define _mm512_mask_cvtt_roundpd_epu64(__W, __U, __A, __R) __extension__ ({ \
    523   (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,                \
    524                   (__v8di) __W, (__mmask8) __U, __R);})
    525 
    526 #define _mm512_maskz_cvtt_roundpd_epu64(__U, __A, __R) __extension__ ({   \
    527   (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,              \
    528                   (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    529 
    530 static __inline__ __m512i __DEFAULT_FN_ATTRS
    531 _mm512_cvttps_epi64 (__m256 __A) {
    532   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
    533                  (__v8di) _mm512_setzero_si512(),
    534                  (__mmask8) -1,
    535                  _MM_FROUND_CUR_DIRECTION);
    536 }
    537 
    538 static __inline__ __m512i __DEFAULT_FN_ATTRS
    539 _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
    540   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
    541                  (__v8di) __W,
    542                  (__mmask8) __U,
    543                  _MM_FROUND_CUR_DIRECTION);
    544 }
    545 
    546 static __inline__ __m512i __DEFAULT_FN_ATTRS
    547 _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
    548   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
    549                  (__v8di) _mm512_setzero_si512(),
    550                  (__mmask8) __U,
    551                  _MM_FROUND_CUR_DIRECTION);
    552 }
    553 
    554 #define _mm512_cvtt_roundps_epi64(__A, __R) __extension__ ({            \
    555   (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,             \
    556                  (__v8di) _mm512_setzero_si512(), (__mmask8) -1, __R);})
    557 
    558 #define _mm512_mask_cvtt_roundps_epi64(__W, __U, __A, __R) __extension__ ({ \
    559   (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,                 \
    560                  (__v8di) __W, (__mmask8) __U, __R);})
    561 
    562 #define _mm512_maskz_cvtt_roundps_epi64(__U, __A, __R) __extension__ ({  \
    563   (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,              \
    564                  (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    565 
    566 static __inline__ __m512i __DEFAULT_FN_ATTRS
    567 _mm512_cvttps_epu64 (__m256 __A) {
    568   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
    569                   (__v8di) _mm512_setzero_si512(),
    570                   (__mmask8) -1,
    571                   _MM_FROUND_CUR_DIRECTION);
    572 }
    573 
    574 static __inline__ __m512i __DEFAULT_FN_ATTRS
    575 _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
    576   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
    577                   (__v8di) __W,
    578                   (__mmask8) __U,
    579                   _MM_FROUND_CUR_DIRECTION);
    580 }
    581 
    582 static __inline__ __m512i __DEFAULT_FN_ATTRS
    583 _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
    584   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
    585                   (__v8di) _mm512_setzero_si512(),
    586                   (__mmask8) __U,
    587                   _MM_FROUND_CUR_DIRECTION);
    588 }
    589 
    590 #define _mm512_cvtt_roundps_epu64(__A, __R) __extension__ ({            \
    591   (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,            \
    592                   (__v8di) _mm512_setzero_si512(),(__mmask8) -1, __R);})
    593 
    594 #define _mm512_mask_cvtt_roundps_epu64(__W, __U, __A, __R) __extension__ ({ \
    595   (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,                \
    596                   (__v8di) __W, (__mmask8) __U, __R);})
    597 
    598 #define _mm512_maskz_cvtt_roundps_epu64(__U, __A, __R) __extension__ ({  \
    599   (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,             \
    600                   (__v8di) _mm512_setzero_si512(), (__mmask8) __U, __R);})
    601 
    602 static __inline__ __m512d __DEFAULT_FN_ATTRS
    603 _mm512_cvtepu64_pd (__m512i __A) {
    604   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
    605                  (__v8df) _mm512_setzero_pd(),
    606                  (__mmask8) -1,
    607                  _MM_FROUND_CUR_DIRECTION);
    608 }
    609 
    610 static __inline__ __m512d __DEFAULT_FN_ATTRS
    611 _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
    612   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
    613                  (__v8df) __W,
    614                  (__mmask8) __U,
    615                  _MM_FROUND_CUR_DIRECTION);
    616 }
    617 
    618 static __inline__ __m512d __DEFAULT_FN_ATTRS
    619 _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
    620   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
    621                  (__v8df) _mm512_setzero_pd(),
    622                  (__mmask8) __U,
    623                  _MM_FROUND_CUR_DIRECTION);
    624 }
    625 
    626 #define _mm512_cvt_roundepu64_pd(__A, __R) __extension__ ({          \
    627   (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,          \
    628                  (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
    629 
    630 #define _mm512_mask_cvt_roundepu64_pd(__W, __U, __A, __R) __extension__ ({ \
    631   (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,                \
    632                  (__v8df) __W, (__mmask8) __U, __R);})
    633 
    634 
    635 #define _mm512_maskz_cvt_roundepu64_pd(__U, __A, __R) __extension__ ({ \
    636   (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,            \
    637                  (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
    638 
    639 
    640 static __inline__ __m256 __DEFAULT_FN_ATTRS
    641 _mm512_cvtepu64_ps (__m512i __A) {
    642   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
    643                 (__v8sf) _mm256_setzero_ps(),
    644                 (__mmask8) -1,
    645                 _MM_FROUND_CUR_DIRECTION);
    646 }
    647 
    648 static __inline__ __m256 __DEFAULT_FN_ATTRS
    649 _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
    650   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
    651                 (__v8sf) __W,
    652                 (__mmask8) __U,
    653                 _MM_FROUND_CUR_DIRECTION);
    654 }
    655 
    656 static __inline__ __m256 __DEFAULT_FN_ATTRS
    657 _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
    658   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
    659                 (__v8sf) _mm256_setzero_ps(),
    660                 (__mmask8) __U,
    661                 _MM_FROUND_CUR_DIRECTION);
    662 }
    663 
    664 #define _mm512_cvt_roundepu64_ps(__A, __R) __extension__ ({         \
    665   (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,          \
    666                 (__v8sf) _mm256_setzero_ps(), (__mmask8) -1, __R);})
    667 
    668 #define _mm512_mask_cvt_roundepu64_ps(__W, __U, __A, __R) __extension__ ({ \
    669   (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,                 \
    670                 (__v8sf) __W, (__mmask8) __U, __R);})
    671 
    672 #define _mm512_maskz_cvt_roundepu64_ps(__U, __A, __R) __extension__ ({ \
    673   (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,             \
    674                 (__v8sf) _mm256_setzero_ps(), (__mmask8) __U, __R);})
    675 
    676 #define _mm512_range_pd(__A, __B, __C) __extension__ ({                     \
    677   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,\
    678                (__v8df) _mm512_setzero_pd(), (__mmask8) -1,                 \
    679                _MM_FROUND_CUR_DIRECTION);})
    680 
    681 #define _mm512_mask_range_pd(__W, __U, __A, __B, __C) __extension__ ({      \
    682   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,\
    683                (__v8df) __W, (__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
    684 
    685 #define _mm512_maskz_range_pd(__U, __A, __B, __C) __extension__ ({           \
    686   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
    687                (__v8df) _mm512_setzero_pd(), (__mmask8) __U,                 \
    688                _MM_FROUND_CUR_DIRECTION);})
    689 
    690 #define _mm512_range_round_pd(__A, __B, __C, __R) __extension__ ({           \
    691   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C, \
    692                (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
    693 
    694 #define _mm512_mask_range_round_pd(__W, __U, __A, __B, __C, __R) __extension__ ({ \
    695   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,      \
    696                (__v8df) __W, (__mmask8) __U, __R);})
    697 
    698 #define _mm512_maskz_range_round_pd(__U, __A, __B, __C, __R) __extension__ ({ \
    699   (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A, (__v8df) __B, __C,   \
    700                (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
    701 
    702 #define _mm512_range_ps(__A, __B, __C) __extension__ ({                       \
    703   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B, __C, \
    704                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1,                 \
    705                _MM_FROUND_CUR_DIRECTION);})
    706 
    707 #define _mm512_mask_range_ps(__W, __U, __A, __B, __C) __extension__ ({         \
    708   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,       \
    709                __C, (__v16sf) __W, (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
    710 
    711 #define _mm512_maskz_range_ps(__U, __A, __B, __C) __extension__ ({      \
    712   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,(__v16sf) __B, \
    713               __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) __U,      \
    714               _MM_FROUND_CUR_DIRECTION);})
    715 
    716 #define _mm512_range_round_ps(__A, __B, __C, __R) __extension__ ({         \
    717   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,   \
    718                 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R);})
    719 
    720 #define _mm512_mask_range_round_ps(__W, __U, __A, __B, __C, __R) __extension__ ({ \
    721   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,          \
    722                 __C, (__v16sf) __W, (__mmask16) __U, __R);})
    723 
    724 #define _mm512_maskz_range_round_ps(__U, __A, __B, __C, __R) __extension__ ({ \
    725   (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A, (__v16sf) __B,      \
    726                 __C, (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, __R);})
    727 
    728 #define _mm512_reduce_pd(__A, __B) __extension__ ({             \
    729   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
    730                 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);})
    731 
    732 #define _mm512_mask_reduce_pd(__W, __U, __A, __B) __extension__ ({ \
    733   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,    \
    734                 (__v8df) __W,(__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
    735 
    736 #define _mm512_maskz_reduce_pd(__U, __A, __B) __extension__ ({  \
    737   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
    738                 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, _MM_FROUND_CUR_DIRECTION);})
    739 
    740 #define _mm512_reduce_ps(__A, __B) __extension__ ({              \
    741   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,  \
    742                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);})
    743 
    744 #define _mm512_mask_reduce_ps(__W, __U, __A, __B) __extension__ ({   \
    745   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
    746                (__v16sf) __W, (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
    747 
    748 #define _mm512_maskz_reduce_ps(__U, __A, __B) __extension__ ({       \
    749   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
    750                (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, _MM_FROUND_CUR_DIRECTION);})
    751 
    752 #define _mm512_reduce_round_pd(__A, __B, __R) __extension__ ({\
    753   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
    754                 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R);})
    755 
    756 #define _mm512_mask_reduce_round_pd(__W, __U, __A, __B, __R) __extension__ ({\
    757   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,    \
    758                 (__v8df) __W,(__mmask8) __U, __R);})
    759 
    760 #define _mm512_maskz_reduce_round_pd(__U, __A, __B, __R) __extension__ ({\
    761   (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B, \
    762                 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
    763 
    764 #define _mm512_reduce_round_ps(__A, __B, __R) __extension__ ({\
    765   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,  \
    766                (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R);})
    767 
    768 #define _mm512_mask_reduce_round_ps(__W, __U, __A, __B, __R) __extension__ ({\
    769   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
    770                (__v16sf) __W, (__mmask16) __U, __R);})
    771 
    772 #define _mm512_maskz_reduce_round_ps(__U, __A, __B, __R) __extension__ ({\
    773   (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,      \
    774                (__v16sf) _mm512_setzero_ps(), (__mmask16) __U, __R);})
    775 
    776 #undef __DEFAULT_FN_ATTRS
    777 
    778 #endif
    779