Home | History | Annotate | Line # | Download | only in i386
avx512dqintrin.h revision 1.1
      1 /* Copyright (C) 2014-2015 Free Software Foundation, Inc.
      2 
      3    This file is part of GCC.
      4 
      5    GCC is free software; you can redistribute it and/or modify
      6    it under the terms of the GNU General Public License as published by
      7    the Free Software Foundation; either version 3, or (at your option)
      8    any later version.
      9 
     10    GCC is distributed in the hope that it will be useful,
     11    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13    GNU General Public License for more details.
     14 
     15    Under Section 7 of GPL version 3, you are granted additional
     16    permissions described in the GCC Runtime Library Exception, version
     17    3.1, as published by the Free Software Foundation.
     18 
     19    You should have received a copy of the GNU General Public License and
     20    a copy of the GCC Runtime Library Exception along with this program;
     21    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     22    <http://www.gnu.org/licenses/>.  */
     23 
     24 #ifndef _IMMINTRIN_H_INCLUDED
     25 #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
     26 #endif
     27 
     28 #ifndef _AVX512DQINTRIN_H_INCLUDED
     29 #define _AVX512DQINTRIN_H_INCLUDED
     30 
     31 #ifndef __AVX512DQ__
     32 #pragma GCC push_options
     33 #pragma GCC target("avx512dq")
     34 #define __DISABLE_AVX512DQ__
     35 #endif /* __AVX512DQ__ */
     36 
     37 extern __inline __m512d
     38 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     39 _mm512_broadcast_f64x2 (__m128d __A)
     40 {
     41   return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
     42 							   __A,
     43 							   _mm512_undefined_pd(),
     44 							   (__mmask8) -
     45 							   1);
     46 }
     47 
     48 extern __inline __m512d
     49 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     50 _mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
     51 {
     52   return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
     53 							   __A,
     54 							   (__v8df)
     55 							   __O, __M);
     56 }
     57 
     58 extern __inline __m512d
     59 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     60 _mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
     61 {
     62   return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df)
     63 							   __A,
     64 							   (__v8df)
     65 							   _mm512_setzero_ps (),
     66 							   __M);
     67 }
     68 
     69 extern __inline __m512i
     70 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     71 _mm512_broadcast_i64x2 (__m128i __A)
     72 {
     73   return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
     74 							   __A,
     75 							   _mm512_undefined_si512(),
     76 							   (__mmask8) -
     77 							   1);
     78 }
     79 
     80 extern __inline __m512i
     81 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     82 _mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
     83 {
     84   return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
     85 							   __A,
     86 							   (__v8di)
     87 							   __O, __M);
     88 }
     89 
     90 extern __inline __m512i
     91 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     92 _mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
     93 {
     94   return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di)
     95 							   __A,
     96 							   (__v8di)
     97 							   _mm512_setzero_si512 (),
     98 							   __M);
     99 }
    100 
    101 extern __inline __m512
    102 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    103 _mm512_broadcast_f32x2 (__m128 __A)
    104 {
    105   return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
    106 							  (__v16sf)_mm512_undefined_ps(),
    107 							  (__mmask16) -
    108 							  1);
    109 }
    110 
    111 extern __inline __m512
    112 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    113 _mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
    114 {
    115   return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
    116 							  (__v16sf)
    117 							  __O, __M);
    118 }
    119 
    120 extern __inline __m512
    121 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    122 _mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
    123 {
    124   return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
    125 							  (__v16sf)
    126 							  _mm512_setzero_ps (),
    127 							  __M);
    128 }
    129 
    130 extern __inline __m512i
    131 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    132 _mm512_broadcast_i32x2 (__m128i __A)
    133 {
    134   return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
    135 							   __A,
    136 							   (__v16si)_mm512_undefined_si512(),
    137 							   (__mmask16)
    138 							   -1);
    139 }
    140 
    141 extern __inline __m512i
    142 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    143 _mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
    144 {
    145   return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
    146 							   __A,
    147 							   (__v16si)
    148 							   __O, __M);
    149 }
    150 
    151 extern __inline __m512i
    152 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    153 _mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
    154 {
    155   return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si)
    156 							   __A,
    157 							   (__v16si)
    158 							   _mm512_setzero_si512 (),
    159 							   __M);
    160 }
    161 
    162 extern __inline __m512
    163 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    164 _mm512_broadcast_f32x8 (__m256 __A)
    165 {
    166   return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
    167 							  _mm512_undefined_ps(),
    168 							  (__mmask16) -
    169 							  1);
    170 }
    171 
    172 extern __inline __m512
    173 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    174 _mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
    175 {
    176   return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
    177 							  (__v16sf)__O,
    178 							  __M);
    179 }
    180 
    181 extern __inline __m512
    182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    183 _mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
    184 {
    185   return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
    186 							  (__v16sf)
    187 							  _mm512_setzero_ps (),
    188 							  __M);
    189 }
    190 
    191 extern __inline __m512i
    192 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    193 _mm512_broadcast_i32x8 (__m256i __A)
    194 {
    195   return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
    196 							   __A,
    197 							   (__v16si)_mm512_undefined_si512(),
    198 							   (__mmask16)
    199 							   -1);
    200 }
    201 
    202 extern __inline __m512i
    203 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    204 _mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
    205 {
    206   return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
    207 							   __A,
    208 							   (__v16si)__O,
    209 							   __M);
    210 }
    211 
    212 extern __inline __m512i
    213 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    214 _mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
    215 {
    216   return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si)
    217 							   __A,
    218 							   (__v16si)
    219 							   _mm512_setzero_si512 (),
    220 							   __M);
    221 }
    222 
    223 extern __inline __m512i
    224 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    225 _mm512_mullo_epi64 (__m512i __A, __m512i __B)
    226 {
    227   return (__m512i) ((__v8du) __A * (__v8du) __B);
    228 }
    229 
    230 extern __inline __m512i
    231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    232 _mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A,
    233 			 __m512i __B)
    234 {
    235   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
    236 						  (__v8di) __B,
    237 						  (__v8di) __W,
    238 						  (__mmask8) __U);
    239 }
    240 
    241 extern __inline __m512i
    242 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    243 _mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
    244 {
    245   return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
    246 						  (__v8di) __B,
    247 						  (__v8di)
    248 						  _mm512_setzero_si512 (),
    249 						  (__mmask8) __U);
    250 }
    251 
    252 extern __inline __m512d
    253 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    254 _mm512_xor_pd (__m512d __A, __m512d __B)
    255 {
    256   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
    257 						 (__v8df) __B,
    258 						 (__v8df)
    259 						 _mm512_setzero_pd (),
    260 						 (__mmask8) -1);
    261 }
    262 
    263 extern __inline __m512d
    264 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    265 _mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A,
    266 		    __m512d __B)
    267 {
    268   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
    269 						 (__v8df) __B,
    270 						 (__v8df) __W,
    271 						 (__mmask8) __U);
    272 }
    273 
    274 extern __inline __m512d
    275 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    276 _mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B)
    277 {
    278   return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
    279 						 (__v8df) __B,
    280 						 (__v8df)
    281 						 _mm512_setzero_pd (),
    282 						 (__mmask8) __U);
    283 }
    284 
    285 extern __inline __m512
    286 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    287 _mm512_xor_ps (__m512 __A, __m512 __B)
    288 {
    289   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
    290 						(__v16sf) __B,
    291 						(__v16sf)
    292 						_mm512_setzero_ps (),
    293 						(__mmask16) -1);
    294 }
    295 
    296 extern __inline __m512
    297 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    298 _mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
    299 {
    300   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
    301 						(__v16sf) __B,
    302 						(__v16sf) __W,
    303 						(__mmask16) __U);
    304 }
    305 
    306 extern __inline __m512
    307 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    308 _mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B)
    309 {
    310   return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
    311 						(__v16sf) __B,
    312 						(__v16sf)
    313 						_mm512_setzero_ps (),
    314 						(__mmask16) __U);
    315 }
    316 
    317 extern __inline __m512d
    318 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    319 _mm512_or_pd (__m512d __A, __m512d __B)
    320 {
    321   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
    322 						(__v8df) __B,
    323 						(__v8df)
    324 						_mm512_setzero_pd (),
    325 						(__mmask8) -1);
    326 }
    327 
    328 extern __inline __m512d
    329 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    330 _mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
    331 {
    332   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
    333 						(__v8df) __B,
    334 						(__v8df) __W,
    335 						(__mmask8) __U);
    336 }
    337 
    338 extern __inline __m512d
    339 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    340 _mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B)
    341 {
    342   return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
    343 						(__v8df) __B,
    344 						(__v8df)
    345 						_mm512_setzero_pd (),
    346 						(__mmask8) __U);
    347 }
    348 
    349 extern __inline __m512
    350 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    351 _mm512_or_ps (__m512 __A, __m512 __B)
    352 {
    353   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
    354 					       (__v16sf) __B,
    355 					       (__v16sf)
    356 					       _mm512_setzero_ps (),
    357 					       (__mmask16) -1);
    358 }
    359 
    360 extern __inline __m512
    361 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    362 _mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
    363 {
    364   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
    365 					       (__v16sf) __B,
    366 					       (__v16sf) __W,
    367 					       (__mmask16) __U);
    368 }
    369 
    370 extern __inline __m512
    371 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    372 _mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B)
    373 {
    374   return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
    375 					       (__v16sf) __B,
    376 					       (__v16sf)
    377 					       _mm512_setzero_ps (),
    378 					       (__mmask16) __U);
    379 }
    380 
    381 extern __inline __m512d
    382 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    383 _mm512_and_pd (__m512d __A, __m512d __B)
    384 {
    385   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
    386 						 (__v8df) __B,
    387 						 (__v8df)
    388 						 _mm512_setzero_pd (),
    389 						 (__mmask8) -1);
    390 }
    391 
    392 extern __inline __m512d
    393 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    394 _mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A,
    395 		    __m512d __B)
    396 {
    397   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
    398 						 (__v8df) __B,
    399 						 (__v8df) __W,
    400 						 (__mmask8) __U);
    401 }
    402 
    403 extern __inline __m512d
    404 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    405 _mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B)
    406 {
    407   return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
    408 						 (__v8df) __B,
    409 						 (__v8df)
    410 						 _mm512_setzero_pd (),
    411 						 (__mmask8) __U);
    412 }
    413 
    414 extern __inline __m512
    415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    416 _mm512_and_ps (__m512 __A, __m512 __B)
    417 {
    418   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
    419 						(__v16sf) __B,
    420 						(__v16sf)
    421 						_mm512_setzero_ps (),
    422 						(__mmask16) -1);
    423 }
    424 
    425 extern __inline __m512
    426 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    427 _mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
    428 {
    429   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
    430 						(__v16sf) __B,
    431 						(__v16sf) __W,
    432 						(__mmask16) __U);
    433 }
    434 
    435 extern __inline __m512
    436 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    437 _mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B)
    438 {
    439   return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
    440 						(__v16sf) __B,
    441 						(__v16sf)
    442 						_mm512_setzero_ps (),
    443 						(__mmask16) __U);
    444 }
    445 
    446 extern __inline __m512d
    447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    448 _mm512_andnot_pd (__m512d __A, __m512d __B)
    449 {
    450   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
    451 						  (__v8df) __B,
    452 						  (__v8df)
    453 						  _mm512_setzero_pd (),
    454 						  (__mmask8) -1);
    455 }
    456 
    457 extern __inline __m512d
    458 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    459 _mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A,
    460 		       __m512d __B)
    461 {
    462   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
    463 						  (__v8df) __B,
    464 						  (__v8df) __W,
    465 						  (__mmask8) __U);
    466 }
    467 
    468 extern __inline __m512d
    469 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    470 _mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B)
    471 {
    472   return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
    473 						  (__v8df) __B,
    474 						  (__v8df)
    475 						  _mm512_setzero_pd (),
    476 						  (__mmask8) __U);
    477 }
    478 
    479 extern __inline __m512
    480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    481 _mm512_andnot_ps (__m512 __A, __m512 __B)
    482 {
    483   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
    484 						 (__v16sf) __B,
    485 						 (__v16sf)
    486 						 _mm512_setzero_ps (),
    487 						 (__mmask16) -1);
    488 }
    489 
    490 extern __inline __m512
    491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    492 _mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A,
    493 		       __m512 __B)
    494 {
    495   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
    496 						 (__v16sf) __B,
    497 						 (__v16sf) __W,
    498 						 (__mmask16) __U);
    499 }
    500 
    501 extern __inline __m512
    502 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    503 _mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B)
    504 {
    505   return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
    506 						 (__v16sf) __B,
    507 						 (__v16sf)
    508 						 _mm512_setzero_ps (),
    509 						 (__mmask16) __U);
    510 }
    511 
    512 extern __inline __mmask16
    513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    514 _mm512_movepi32_mask (__m512i __A)
    515 {
    516   return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
    517 }
    518 
    519 extern __inline __mmask8
    520 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    521 _mm512_movepi64_mask (__m512i __A)
    522 {
    523   return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
    524 }
    525 
    526 extern __inline __m512i
    527 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    528 _mm512_movm_epi32 (__mmask16 __A)
    529 {
    530   return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
    531 }
    532 
    533 extern __inline __m512i
    534 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    535 _mm512_movm_epi64 (__mmask8 __A)
    536 {
    537   return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
    538 }
    539 
    540 extern __inline __m512i
    541 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    542 _mm512_cvttpd_epi64 (__m512d __A)
    543 {
    544   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
    545 						     (__v8di)
    546 						     _mm512_setzero_si512 (),
    547 						     (__mmask8) -1,
    548 						     _MM_FROUND_CUR_DIRECTION);
    549 }
    550 
    551 extern __inline __m512i
    552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    553 _mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
    554 {
    555   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
    556 						     (__v8di) __W,
    557 						     (__mmask8) __U,
    558 						     _MM_FROUND_CUR_DIRECTION);
    559 }
    560 
    561 extern __inline __m512i
    562 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    563 _mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A)
    564 {
    565   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
    566 						     (__v8di)
    567 						     _mm512_setzero_si512 (),
    568 						     (__mmask8) __U,
    569 						     _MM_FROUND_CUR_DIRECTION);
    570 }
    571 
    572 extern __inline __m512i
    573 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    574 _mm512_cvttpd_epu64 (__m512d __A)
    575 {
    576   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
    577 						      (__v8di)
    578 						      _mm512_setzero_si512 (),
    579 						      (__mmask8) -1,
    580 						      _MM_FROUND_CUR_DIRECTION);
    581 }
    582 
    583 extern __inline __m512i
    584 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    585 _mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
    586 {
    587   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
    588 						      (__v8di) __W,
    589 						      (__mmask8) __U,
    590 						      _MM_FROUND_CUR_DIRECTION);
    591 }
    592 
    593 extern __inline __m512i
    594 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    595 _mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A)
    596 {
    597   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
    598 						      (__v8di)
    599 						      _mm512_setzero_si512 (),
    600 						      (__mmask8) __U,
    601 						      _MM_FROUND_CUR_DIRECTION);
    602 }
    603 
    604 extern __inline __m512i
    605 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    606 _mm512_cvttps_epi64 (__m256 __A)
    607 {
    608   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
    609 						     (__v8di)
    610 						     _mm512_setzero_si512 (),
    611 						     (__mmask8) -1,
    612 						     _MM_FROUND_CUR_DIRECTION);
    613 }
    614 
    615 extern __inline __m512i
    616 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    617 _mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
    618 {
    619   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
    620 						     (__v8di) __W,
    621 						     (__mmask8) __U,
    622 						     _MM_FROUND_CUR_DIRECTION);
    623 }
    624 
    625 extern __inline __m512i
    626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    627 _mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A)
    628 {
    629   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
    630 						     (__v8di)
    631 						     _mm512_setzero_si512 (),
    632 						     (__mmask8) __U,
    633 						     _MM_FROUND_CUR_DIRECTION);
    634 }
    635 
    636 extern __inline __m512i
    637 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    638 _mm512_cvttps_epu64 (__m256 __A)
    639 {
    640   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
    641 						      (__v8di)
    642 						      _mm512_setzero_si512 (),
    643 						      (__mmask8) -1,
    644 						      _MM_FROUND_CUR_DIRECTION);
    645 }
    646 
    647 extern __inline __m512i
    648 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    649 _mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
    650 {
    651   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
    652 						      (__v8di) __W,
    653 						      (__mmask8) __U,
    654 						      _MM_FROUND_CUR_DIRECTION);
    655 }
    656 
    657 extern __inline __m512i
    658 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    659 _mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A)
    660 {
    661   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
    662 						      (__v8di)
    663 						      _mm512_setzero_si512 (),
    664 						      (__mmask8) __U,
    665 						      _MM_FROUND_CUR_DIRECTION);
    666 }
    667 
    668 extern __inline __m512i
    669 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    670 _mm512_cvtpd_epi64 (__m512d __A)
    671 {
    672   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
    673 						    (__v8di)
    674 						    _mm512_setzero_si512 (),
    675 						    (__mmask8) -1,
    676 						    _MM_FROUND_CUR_DIRECTION);
    677 }
    678 
    679 extern __inline __m512i
    680 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    681 _mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A)
    682 {
    683   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
    684 						    (__v8di) __W,
    685 						    (__mmask8) __U,
    686 						    _MM_FROUND_CUR_DIRECTION);
    687 }
    688 
    689 extern __inline __m512i
    690 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    691 _mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A)
    692 {
    693   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
    694 						    (__v8di)
    695 						    _mm512_setzero_si512 (),
    696 						    (__mmask8) __U,
    697 						    _MM_FROUND_CUR_DIRECTION);
    698 }
    699 
    700 extern __inline __m512i
    701 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    702 _mm512_cvtpd_epu64 (__m512d __A)
    703 {
    704   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
    705 						     (__v8di)
    706 						     _mm512_setzero_si512 (),
    707 						     (__mmask8) -1,
    708 						     _MM_FROUND_CUR_DIRECTION);
    709 }
    710 
    711 extern __inline __m512i
    712 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    713 _mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A)
    714 {
    715   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
    716 						     (__v8di) __W,
    717 						     (__mmask8) __U,
    718 						     _MM_FROUND_CUR_DIRECTION);
    719 }
    720 
    721 extern __inline __m512i
    722 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    723 _mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A)
    724 {
    725   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
    726 						     (__v8di)
    727 						     _mm512_setzero_si512 (),
    728 						     (__mmask8) __U,
    729 						     _MM_FROUND_CUR_DIRECTION);
    730 }
    731 
    732 extern __inline __m512i
    733 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    734 _mm512_cvtps_epi64 (__m256 __A)
    735 {
    736   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
    737 						    (__v8di)
    738 						    _mm512_setzero_si512 (),
    739 						    (__mmask8) -1,
    740 						    _MM_FROUND_CUR_DIRECTION);
    741 }
    742 
    743 extern __inline __m512i
    744 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    745 _mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A)
    746 {
    747   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
    748 						    (__v8di) __W,
    749 						    (__mmask8) __U,
    750 						    _MM_FROUND_CUR_DIRECTION);
    751 }
    752 
    753 extern __inline __m512i
    754 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    755 _mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A)
    756 {
    757   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
    758 						    (__v8di)
    759 						    _mm512_setzero_si512 (),
    760 						    (__mmask8) __U,
    761 						    _MM_FROUND_CUR_DIRECTION);
    762 }
    763 
    764 extern __inline __m512i
    765 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    766 _mm512_cvtps_epu64 (__m256 __A)
    767 {
    768   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
    769 						     (__v8di)
    770 						     _mm512_setzero_si512 (),
    771 						     (__mmask8) -1,
    772 						     _MM_FROUND_CUR_DIRECTION);
    773 }
    774 
    775 extern __inline __m512i
    776 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    777 _mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A)
    778 {
    779   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
    780 						     (__v8di) __W,
    781 						     (__mmask8) __U,
    782 						     _MM_FROUND_CUR_DIRECTION);
    783 }
    784 
    785 extern __inline __m512i
    786 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    787 _mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A)
    788 {
    789   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
    790 						     (__v8di)
    791 						     _mm512_setzero_si512 (),
    792 						     (__mmask8) __U,
    793 						     _MM_FROUND_CUR_DIRECTION);
    794 }
    795 
    796 extern __inline __m256
    797 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    798 _mm512_cvtepi64_ps (__m512i __A)
    799 {
    800   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
    801 						   (__v8sf)
    802 						   _mm256_setzero_ps (),
    803 						   (__mmask8) -1,
    804 						   _MM_FROUND_CUR_DIRECTION);
    805 }
    806 
    807 extern __inline __m256
    808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    809 _mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A)
    810 {
    811   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
    812 						   (__v8sf) __W,
    813 						   (__mmask8) __U,
    814 						   _MM_FROUND_CUR_DIRECTION);
    815 }
    816 
    817 extern __inline __m256
    818 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    819 _mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A)
    820 {
    821   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
    822 						   (__v8sf)
    823 						   _mm256_setzero_ps (),
    824 						   (__mmask8) __U,
    825 						   _MM_FROUND_CUR_DIRECTION);
    826 }
    827 
    828 extern __inline __m256
    829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    830 _mm512_cvtepu64_ps (__m512i __A)
    831 {
    832   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
    833 						    (__v8sf)
    834 						    _mm256_setzero_ps (),
    835 						    (__mmask8) -1,
    836 						    _MM_FROUND_CUR_DIRECTION);
    837 }
    838 
    839 extern __inline __m256
    840 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    841 _mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A)
    842 {
    843   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
    844 						    (__v8sf) __W,
    845 						    (__mmask8) __U,
    846 						    _MM_FROUND_CUR_DIRECTION);
    847 }
    848 
    849 extern __inline __m256
    850 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    851 _mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A)
    852 {
    853   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
    854 						    (__v8sf)
    855 						    _mm256_setzero_ps (),
    856 						    (__mmask8) __U,
    857 						    _MM_FROUND_CUR_DIRECTION);
    858 }
    859 
    860 extern __inline __m512d
    861 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    862 _mm512_cvtepi64_pd (__m512i __A)
    863 {
    864   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
    865 						    (__v8df)
    866 						    _mm512_setzero_pd (),
    867 						    (__mmask8) -1,
    868 						    _MM_FROUND_CUR_DIRECTION);
    869 }
    870 
    871 extern __inline __m512d
    872 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    873 _mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A)
    874 {
    875   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
    876 						    (__v8df) __W,
    877 						    (__mmask8) __U,
    878 						    _MM_FROUND_CUR_DIRECTION);
    879 }
    880 
    881 extern __inline __m512d
    882 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    883 _mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A)
    884 {
    885   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
    886 						    (__v8df)
    887 						    _mm512_setzero_pd (),
    888 						    (__mmask8) __U,
    889 						    _MM_FROUND_CUR_DIRECTION);
    890 }
    891 
    892 extern __inline __m512d
    893 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    894 _mm512_cvtepu64_pd (__m512i __A)
    895 {
    896   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
    897 						     (__v8df)
    898 						     _mm512_setzero_pd (),
    899 						     (__mmask8) -1,
    900 						     _MM_FROUND_CUR_DIRECTION);
    901 }
    902 
    903 extern __inline __m512d
    904 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    905 _mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A)
    906 {
    907   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
    908 						     (__v8df) __W,
    909 						     (__mmask8) __U,
    910 						     _MM_FROUND_CUR_DIRECTION);
    911 }
    912 
    913 extern __inline __m512d
    914 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    915 _mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A)
    916 {
    917   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
    918 						     (__v8df)
    919 						     _mm512_setzero_pd (),
    920 						     (__mmask8) __U,
    921 						     _MM_FROUND_CUR_DIRECTION);
    922 }
    923 
    924 #ifdef __OPTIMIZE__
    925 extern __inline __m512d
    926 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    927 _mm512_range_pd (__m512d __A, __m512d __B, int __C)
    928 {
    929   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
    930 						   (__v8df) __B, __C,
    931 						   (__v8df)
    932 						   _mm512_setzero_pd (),
    933 						   (__mmask8) -1,
    934 						   _MM_FROUND_CUR_DIRECTION);
    935 }
    936 
    937 extern __inline __m512d
    938 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    939 _mm512_mask_range_pd (__m512d __W, __mmask8 __U,
    940 		      __m512d __A, __m512d __B, int __C)
    941 {
    942   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
    943 						   (__v8df) __B, __C,
    944 						   (__v8df) __W,
    945 						   (__mmask8) __U,
    946 						   _MM_FROUND_CUR_DIRECTION);
    947 }
    948 
    949 extern __inline __m512d
    950 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    951 _mm512_maskz_range_pd (__mmask8 __U, __m512d __A, __m512d __B, int __C)
    952 {
    953   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
    954 						   (__v8df) __B, __C,
    955 						   (__v8df)
    956 						   _mm512_setzero_pd (),
    957 						   (__mmask8) __U,
    958 						   _MM_FROUND_CUR_DIRECTION);
    959 }
    960 
    961 extern __inline __m512
    962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    963 _mm512_range_ps (__m512 __A, __m512 __B, int __C)
    964 {
    965   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
    966 						  (__v16sf) __B, __C,
    967 						  (__v16sf)
    968 						  _mm512_setzero_ps (),
    969 						  (__mmask16) -1,
    970 						  _MM_FROUND_CUR_DIRECTION);
    971 }
    972 
    973 extern __inline __m512
    974 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    975 _mm512_mask_range_ps (__m512 __W, __mmask16 __U,
    976 		      __m512 __A, __m512 __B, int __C)
    977 {
    978   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
    979 						  (__v16sf) __B, __C,
    980 						  (__v16sf) __W,
    981 						  (__mmask16) __U,
    982 						  _MM_FROUND_CUR_DIRECTION);
    983 }
    984 
    985 extern __inline __m512
    986 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    987 _mm512_maskz_range_ps (__mmask16 __U, __m512 __A, __m512 __B, int __C)
    988 {
    989   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
    990 						  (__v16sf) __B, __C,
    991 						  (__v16sf)
    992 						  _mm512_setzero_ps (),
    993 						  (__mmask16) __U,
    994 						  _MM_FROUND_CUR_DIRECTION);
    995 }
    996 
    997 extern __inline __m128d
    998 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    999 _mm_reduce_sd (__m128d __A, __m128d __B, int __C)
   1000 {
   1001   return (__m128d) __builtin_ia32_reducesd ((__v2df) __A,
   1002 						 (__v2df) __B, __C);
   1003 }
   1004 
   1005 extern __inline __m128
   1006 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1007 _mm_reduce_ss (__m128 __A, __m128 __B, int __C)
   1008 {
   1009   return (__m128) __builtin_ia32_reducess ((__v4sf) __A,
   1010 						(__v4sf) __B, __C);
   1011 }
   1012 
   1013 extern __inline __m128d
   1014 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1015 _mm_range_sd (__m128d __A, __m128d __B, int __C)
   1016 {
   1017   return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A,
   1018 						   (__v2df) __B, __C,
   1019 						   _MM_FROUND_CUR_DIRECTION);
   1020 }
   1021 
   1022 
   1023 extern __inline __m128
   1024 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1025 _mm_range_ss (__m128 __A, __m128 __B, int __C)
   1026 {
   1027   return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A,
   1028 						  (__v4sf) __B, __C,
   1029 						  _MM_FROUND_CUR_DIRECTION);
   1030 }
   1031 
   1032 extern __inline __m128d
   1033 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1034 _mm_range_round_sd (__m128d __A, __m128d __B, int __C, const int __R)
   1035 {
   1036   return (__m128d) __builtin_ia32_rangesd128_round ((__v2df) __A,
   1037 						   (__v2df) __B, __C,
   1038 						   __R);
   1039 }
   1040 
   1041 extern __inline __m128
   1042 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1043 _mm_range_round_ss (__m128 __A, __m128 __B, int __C, const int __R)
   1044 {
   1045   return (__m128) __builtin_ia32_rangess128_round ((__v4sf) __A,
   1046 						  (__v4sf) __B, __C,
   1047 						  __R);
   1048 }
   1049 
   1050 extern __inline __mmask8
   1051 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1052 _mm_fpclass_ss_mask (__m128 __A, const int __imm)
   1053 {
   1054   return (__mmask8) __builtin_ia32_fpclassss ((__v4sf) __A, __imm);
   1055 }
   1056 
   1057 extern __inline __mmask8
   1058 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1059 _mm_fpclass_sd_mask (__m128d __A, const int __imm)
   1060 {
   1061   return (__mmask8) __builtin_ia32_fpclasssd ((__v2df) __A, __imm);
   1062 }
   1063 
   1064 extern __inline __m512i
   1065 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1066 _mm512_cvtt_roundpd_epi64 (__m512d __A, const int __R)
   1067 {
   1068   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
   1069 						     (__v8di)
   1070 						     _mm512_setzero_si512 (),
   1071 						     (__mmask8) -1,
   1072 						     __R);
   1073 }
   1074 
   1075 extern __inline __m512i
   1076 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1077 _mm512_mask_cvtt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
   1078 				const int __R)
   1079 {
   1080   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
   1081 						     (__v8di) __W,
   1082 						     (__mmask8) __U,
   1083 						     __R);
   1084 }
   1085 
   1086 extern __inline __m512i
   1087 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1088 _mm512_maskz_cvtt_roundpd_epi64 (__mmask8 __U, __m512d __A,
   1089 				 const int __R)
   1090 {
   1091   return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
   1092 						     (__v8di)
   1093 						     _mm512_setzero_si512 (),
   1094 						     (__mmask8) __U,
   1095 						     __R);
   1096 }
   1097 
   1098 extern __inline __m512i
   1099 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1100 _mm512_cvtt_roundpd_epu64 (__m512d __A, const int __R)
   1101 {
   1102   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
   1103 						      (__v8di)
   1104 						      _mm512_setzero_si512 (),
   1105 						      (__mmask8) -1,
   1106 						      __R);
   1107 }
   1108 
   1109 extern __inline __m512i
   1110 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1111 _mm512_mask_cvtt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
   1112 				const int __R)
   1113 {
   1114   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
   1115 						      (__v8di) __W,
   1116 						      (__mmask8) __U,
   1117 						      __R);
   1118 }
   1119 
   1120 extern __inline __m512i
   1121 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1122 _mm512_maskz_cvtt_roundpd_epu64 (__mmask8 __U, __m512d __A,
   1123 				 const int __R)
   1124 {
   1125   return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
   1126 						      (__v8di)
   1127 						      _mm512_setzero_si512 (),
   1128 						      (__mmask8) __U,
   1129 						      __R);
   1130 }
   1131 
   1132 extern __inline __m512i
   1133 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1134 _mm512_cvtt_roundps_epi64 (__m256 __A, const int __R)
   1135 {
   1136   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
   1137 						     (__v8di)
   1138 						     _mm512_setzero_si512 (),
   1139 						     (__mmask8) -1,
   1140 						     __R);
   1141 }
   1142 
   1143 extern __inline __m512i
   1144 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1145 _mm512_mask_cvtt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
   1146 				const int __R)
   1147 {
   1148   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
   1149 						     (__v8di) __W,
   1150 						     (__mmask8) __U,
   1151 						     __R);
   1152 }
   1153 
   1154 extern __inline __m512i
   1155 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1156 _mm512_maskz_cvtt_roundps_epi64 (__mmask8 __U, __m256 __A,
   1157 				 const int __R)
   1158 {
   1159   return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
   1160 						     (__v8di)
   1161 						     _mm512_setzero_si512 (),
   1162 						     (__mmask8) __U,
   1163 						     __R);
   1164 }
   1165 
   1166 extern __inline __m512i
   1167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1168 _mm512_cvtt_roundps_epu64 (__m256 __A, const int __R)
   1169 {
   1170   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
   1171 						      (__v8di)
   1172 						      _mm512_setzero_si512 (),
   1173 						      (__mmask8) -1,
   1174 						      __R);
   1175 }
   1176 
   1177 extern __inline __m512i
   1178 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1179 _mm512_mask_cvtt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
   1180 				const int __R)
   1181 {
   1182   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
   1183 						      (__v8di) __W,
   1184 						      (__mmask8) __U,
   1185 						      __R);
   1186 }
   1187 
   1188 extern __inline __m512i
   1189 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1190 _mm512_maskz_cvtt_roundps_epu64 (__mmask8 __U, __m256 __A,
   1191 				 const int __R)
   1192 {
   1193   return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
   1194 						      (__v8di)
   1195 						      _mm512_setzero_si512 (),
   1196 						      (__mmask8) __U,
   1197 						      __R);
   1198 }
   1199 
   1200 extern __inline __m512i
   1201 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1202 _mm512_cvt_roundpd_epi64 (__m512d __A, const int __R)
   1203 {
   1204   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
   1205 						    (__v8di)
   1206 						    _mm512_setzero_si512 (),
   1207 						    (__mmask8) -1,
   1208 						    __R);
   1209 }
   1210 
   1211 extern __inline __m512i
   1212 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1213 _mm512_mask_cvt_roundpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A,
   1214 			       const int __R)
   1215 {
   1216   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
   1217 						    (__v8di) __W,
   1218 						    (__mmask8) __U,
   1219 						    __R);
   1220 }
   1221 
   1222 extern __inline __m512i
   1223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1224 _mm512_maskz_cvt_roundpd_epi64 (__mmask8 __U, __m512d __A,
   1225 				const int __R)
   1226 {
   1227   return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
   1228 						    (__v8di)
   1229 						    _mm512_setzero_si512 (),
   1230 						    (__mmask8) __U,
   1231 						    __R);
   1232 }
   1233 
   1234 extern __inline __m512i
   1235 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1236 _mm512_cvt_roundpd_epu64 (__m512d __A, const int __R)
   1237 {
   1238   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
   1239 						     (__v8di)
   1240 						     _mm512_setzero_si512 (),
   1241 						     (__mmask8) -1,
   1242 						     __R);
   1243 }
   1244 
   1245 extern __inline __m512i
   1246 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1247 _mm512_mask_cvt_roundpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A,
   1248 			       const int __R)
   1249 {
   1250   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
   1251 						     (__v8di) __W,
   1252 						     (__mmask8) __U,
   1253 						     __R);
   1254 }
   1255 
   1256 extern __inline __m512i
   1257 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1258 _mm512_maskz_cvt_roundpd_epu64 (__mmask8 __U, __m512d __A,
   1259 				const int __R)
   1260 {
   1261   return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
   1262 						     (__v8di)
   1263 						     _mm512_setzero_si512 (),
   1264 						     (__mmask8) __U,
   1265 						     __R);
   1266 }
   1267 
   1268 extern __inline __m512i
   1269 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1270 _mm512_cvt_roundps_epi64 (__m256 __A, const int __R)
   1271 {
   1272   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
   1273 						    (__v8di)
   1274 						    _mm512_setzero_si512 (),
   1275 						    (__mmask8) -1,
   1276 						    __R);
   1277 }
   1278 
   1279 extern __inline __m512i
   1280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1281 _mm512_mask_cvt_roundps_epi64 (__m512i __W, __mmask8 __U, __m256 __A,
   1282 			       const int __R)
   1283 {
   1284   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
   1285 						    (__v8di) __W,
   1286 						    (__mmask8) __U,
   1287 						    __R);
   1288 }
   1289 
   1290 extern __inline __m512i
   1291 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1292 _mm512_maskz_cvt_roundps_epi64 (__mmask8 __U, __m256 __A,
   1293 				const int __R)
   1294 {
   1295   return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
   1296 						    (__v8di)
   1297 						    _mm512_setzero_si512 (),
   1298 						    (__mmask8) __U,
   1299 						    __R);
   1300 }
   1301 
   1302 extern __inline __m512i
   1303 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1304 _mm512_cvt_roundps_epu64 (__m256 __A, const int __R)
   1305 {
   1306   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
   1307 						     (__v8di)
   1308 						     _mm512_setzero_si512 (),
   1309 						     (__mmask8) -1,
   1310 						     __R);
   1311 }
   1312 
   1313 extern __inline __m512i
   1314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1315 _mm512_mask_cvt_roundps_epu64 (__m512i __W, __mmask8 __U, __m256 __A,
   1316 			       const int __R)
   1317 {
   1318   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
   1319 						     (__v8di) __W,
   1320 						     (__mmask8) __U,
   1321 						     __R);
   1322 }
   1323 
   1324 extern __inline __m512i
   1325 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1326 _mm512_maskz_cvt_roundps_epu64 (__mmask8 __U, __m256 __A,
   1327 				const int __R)
   1328 {
   1329   return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
   1330 						     (__v8di)
   1331 						     _mm512_setzero_si512 (),
   1332 						     (__mmask8) __U,
   1333 						     __R);
   1334 }
   1335 
   1336 extern __inline __m256
   1337 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1338 _mm512_cvt_roundepi64_ps (__m512i __A, const int __R)
   1339 {
   1340   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
   1341 						   (__v8sf)
   1342 						   _mm256_setzero_ps (),
   1343 						   (__mmask8) -1,
   1344 						   __R);
   1345 }
   1346 
   1347 extern __inline __m256
   1348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1349 _mm512_mask_cvt_roundepi64_ps (__m256 __W, __mmask8 __U, __m512i __A,
   1350 			       const int __R)
   1351 {
   1352   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
   1353 						   (__v8sf) __W,
   1354 						   (__mmask8) __U,
   1355 						   __R);
   1356 }
   1357 
   1358 extern __inline __m256
   1359 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1360 _mm512_maskz_cvt_roundepi64_ps (__mmask8 __U, __m512i __A,
   1361 				const int __R)
   1362 {
   1363   return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
   1364 						   (__v8sf)
   1365 						   _mm256_setzero_ps (),
   1366 						   (__mmask8) __U,
   1367 						   __R);
   1368 }
   1369 
   1370 extern __inline __m256
   1371 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1372 _mm512_cvt_roundepu64_ps (__m512i __A, const int __R)
   1373 {
   1374   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
   1375 						    (__v8sf)
   1376 						    _mm256_setzero_ps (),
   1377 						    (__mmask8) -1,
   1378 						    __R);
   1379 }
   1380 
   1381 extern __inline __m256
   1382 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1383 _mm512_mask_cvt_roundepu64_ps (__m256 __W, __mmask8 __U, __m512i __A,
   1384 			       const int __R)
   1385 {
   1386   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
   1387 						    (__v8sf) __W,
   1388 						    (__mmask8) __U,
   1389 						    __R);
   1390 }
   1391 
   1392 extern __inline __m256
   1393 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1394 _mm512_maskz_cvt_roundepu64_ps (__mmask8 __U, __m512i __A,
   1395 				const int __R)
   1396 {
   1397   return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
   1398 						    (__v8sf)
   1399 						    _mm256_setzero_ps (),
   1400 						    (__mmask8) __U,
   1401 						    __R);
   1402 }
   1403 
   1404 extern __inline __m512d
   1405 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1406 _mm512_cvt_roundepi64_pd (__m512i __A, const int __R)
   1407 {
   1408   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
   1409 						    (__v8df)
   1410 						    _mm512_setzero_pd (),
   1411 						    (__mmask8) -1,
   1412 						    __R);
   1413 }
   1414 
   1415 extern __inline __m512d
   1416 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1417 _mm512_mask_cvt_roundepi64_pd (__m512d __W, __mmask8 __U, __m512i __A,
   1418 			       const int __R)
   1419 {
   1420   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
   1421 						    (__v8df) __W,
   1422 						    (__mmask8) __U,
   1423 						    __R);
   1424 }
   1425 
   1426 extern __inline __m512d
   1427 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1428 _mm512_maskz_cvt_roundepi64_pd (__mmask8 __U, __m512i __A,
   1429 				const int __R)
   1430 {
   1431   return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
   1432 						    (__v8df)
   1433 						    _mm512_setzero_pd (),
   1434 						    (__mmask8) __U,
   1435 						    __R);
   1436 }
   1437 
   1438 extern __inline __m512d
   1439 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1440 _mm512_cvt_roundepu64_pd (__m512i __A, const int __R)
   1441 {
   1442   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
   1443 						     (__v8df)
   1444 						     _mm512_setzero_pd (),
   1445 						     (__mmask8) -1,
   1446 						     __R);
   1447 }
   1448 
   1449 extern __inline __m512d
   1450 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1451 _mm512_mask_cvt_roundepu64_pd (__m512d __W, __mmask8 __U, __m512i __A,
   1452 			       const int __R)
   1453 {
   1454   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
   1455 						     (__v8df) __W,
   1456 						     (__mmask8) __U,
   1457 						     __R);
   1458 }
   1459 
   1460 extern __inline __m512d
   1461 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1462 _mm512_maskz_cvt_roundepu64_pd (__mmask8 __U, __m512i __A,
   1463 				const int __R)
   1464 {
   1465   return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
   1466 						     (__v8df)
   1467 						     _mm512_setzero_pd (),
   1468 						     (__mmask8) __U,
   1469 						     __R);
   1470 }
   1471 
   1472 extern __inline __m512d
   1473 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1474 _mm512_reduce_pd (__m512d __A, int __B)
   1475 {
   1476   return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
   1477 						    (__v8df)
   1478 						    _mm512_setzero_pd (),
   1479 						    (__mmask8) -1);
   1480 }
   1481 
   1482 extern __inline __m512d
   1483 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1484 _mm512_mask_reduce_pd (__m512d __W, __mmask8 __U, __m512d __A, int __B)
   1485 {
   1486   return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
   1487 						    (__v8df) __W,
   1488 						    (__mmask8) __U);
   1489 }
   1490 
   1491 extern __inline __m512d
   1492 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1493 _mm512_maskz_reduce_pd (__mmask8 __U, __m512d __A, int __B)
   1494 {
   1495   return (__m512d) __builtin_ia32_reducepd512_mask ((__v8df) __A, __B,
   1496 						    (__v8df)
   1497 						    _mm512_setzero_pd (),
   1498 						    (__mmask8) __U);
   1499 }
   1500 
   1501 extern __inline __m512
   1502 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1503 _mm512_reduce_ps (__m512 __A, int __B)
   1504 {
   1505   return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
   1506 						   (__v16sf)
   1507 						   _mm512_setzero_ps (),
   1508 						   (__mmask16) -1);
   1509 }
   1510 
   1511 extern __inline __m512
   1512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1513 _mm512_mask_reduce_ps (__m512 __W, __mmask16 __U, __m512 __A, int __B)
   1514 {
   1515   return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
   1516 						   (__v16sf) __W,
   1517 						   (__mmask16) __U);
   1518 }
   1519 
   1520 extern __inline __m512
   1521 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1522 _mm512_maskz_reduce_ps (__mmask16 __U, __m512 __A, int __B)
   1523 {
   1524   return (__m512) __builtin_ia32_reduceps512_mask ((__v16sf) __A, __B,
   1525 						   (__v16sf)
   1526 						   _mm512_setzero_ps (),
   1527 						   (__mmask16) __U);
   1528 }
   1529 
   1530 extern __inline __m256
   1531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1532 _mm512_extractf32x8_ps (__m512 __A, const int __imm)
   1533 {
   1534   return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
   1535 						    __imm,
   1536 						    (__v8sf)
   1537 						    _mm256_setzero_ps (),
   1538 						    (__mmask8) -1);
   1539 }
   1540 
   1541 extern __inline __m256
   1542 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1543 _mm512_mask_extractf32x8_ps (__m256 __W, __mmask8 __U, __m512 __A,
   1544 			     const int __imm)
   1545 {
   1546   return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
   1547 						    __imm,
   1548 						    (__v8sf) __W,
   1549 						    (__mmask8) __U);
   1550 }
   1551 
   1552 extern __inline __m256
   1553 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1554 _mm512_maskz_extractf32x8_ps (__mmask8 __U, __m512 __A,
   1555 			      const int __imm)
   1556 {
   1557   return (__m256) __builtin_ia32_extractf32x8_mask ((__v16sf) __A,
   1558 						    __imm,
   1559 						    (__v8sf)
   1560 						    _mm256_setzero_ps (),
   1561 						    (__mmask8) __U);
   1562 }
   1563 
   1564 extern __inline __m128d
   1565 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1566 _mm512_extractf64x2_pd (__m512d __A, const int __imm)
   1567 {
   1568   return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
   1569 							 __imm,
   1570 							 (__v2df)
   1571 							 _mm_setzero_pd (),
   1572 							 (__mmask8) -
   1573 							 1);
   1574 }
   1575 
   1576 extern __inline __m128d
   1577 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1578 _mm512_mask_extractf64x2_pd (__m128d __W, __mmask8 __U, __m512d __A,
   1579 			     const int __imm)
   1580 {
   1581   return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
   1582 							 __imm,
   1583 							 (__v2df) __W,
   1584 							 (__mmask8)
   1585 							 __U);
   1586 }
   1587 
   1588 extern __inline __m128d
   1589 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1590 _mm512_maskz_extractf64x2_pd (__mmask8 __U, __m512d __A,
   1591 			      const int __imm)
   1592 {
   1593   return (__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df) __A,
   1594 							 __imm,
   1595 							 (__v2df)
   1596 							 _mm_setzero_pd (),
   1597 							 (__mmask8)
   1598 							 __U);
   1599 }
   1600 
   1601 extern __inline __m256i
   1602 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1603 _mm512_extracti32x8_epi32 (__m512i __A, const int __imm)
   1604 {
   1605   return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
   1606 						     __imm,
   1607 						     (__v8si)
   1608 						     _mm256_setzero_si256 (),
   1609 						     (__mmask8) -1);
   1610 }
   1611 
   1612 extern __inline __m256i
   1613 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1614 _mm512_mask_extracti32x8_epi32 (__m256i __W, __mmask8 __U, __m512i __A,
   1615 				const int __imm)
   1616 {
   1617   return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
   1618 						     __imm,
   1619 						     (__v8si) __W,
   1620 						     (__mmask8) __U);
   1621 }
   1622 
   1623 extern __inline __m256i
   1624 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1625 _mm512_maskz_extracti32x8_epi32 (__mmask8 __U, __m512i __A,
   1626 				 const int __imm)
   1627 {
   1628   return (__m256i) __builtin_ia32_extracti32x8_mask ((__v16si) __A,
   1629 						     __imm,
   1630 						     (__v8si)
   1631 						     _mm256_setzero_si256 (),
   1632 						     (__mmask8) __U);
   1633 }
   1634 
   1635 extern __inline __m128i
   1636 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1637 _mm512_extracti64x2_epi64 (__m512i __A, const int __imm)
   1638 {
   1639   return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
   1640 							 __imm,
   1641 							 (__v2di)
   1642 							 _mm_setzero_di (),
   1643 							 (__mmask8) -
   1644 							 1);
   1645 }
   1646 
   1647 extern __inline __m128i
   1648 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1649 _mm512_mask_extracti64x2_epi64 (__m128i __W, __mmask8 __U, __m512i __A,
   1650 				const int __imm)
   1651 {
   1652   return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
   1653 							 __imm,
   1654 							 (__v2di) __W,
   1655 							 (__mmask8)
   1656 							 __U);
   1657 }
   1658 
   1659 extern __inline __m128i
   1660 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1661 _mm512_maskz_extracti64x2_epi64 (__mmask8 __U, __m512i __A,
   1662 				 const int __imm)
   1663 {
   1664   return (__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di) __A,
   1665 							 __imm,
   1666 							 (__v2di)
   1667 							 _mm_setzero_di (),
   1668 							 (__mmask8)
   1669 							 __U);
   1670 }
   1671 
   1672 extern __inline __m512d
   1673 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1674 _mm512_range_round_pd (__m512d __A, __m512d __B, int __C,
   1675 		       const int __R)
   1676 {
   1677   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
   1678 						   (__v8df) __B, __C,
   1679 						   (__v8df)
   1680 						   _mm512_setzero_pd (),
   1681 						   (__mmask8) -1,
   1682 						   __R);
   1683 }
   1684 
   1685 extern __inline __m512d
   1686 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1687 _mm512_mask_range_round_pd (__m512d __W, __mmask8 __U,
   1688 			    __m512d __A, __m512d __B, int __C,
   1689 			    const int __R)
   1690 {
   1691   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
   1692 						   (__v8df) __B, __C,
   1693 						   (__v8df) __W,
   1694 						   (__mmask8) __U,
   1695 						   __R);
   1696 }
   1697 
   1698 extern __inline __m512d
   1699 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1700 _mm512_maskz_range_round_pd (__mmask8 __U, __m512d __A, __m512d __B,
   1701 			     int __C, const int __R)
   1702 {
   1703   return (__m512d) __builtin_ia32_rangepd512_mask ((__v8df) __A,
   1704 						   (__v8df) __B, __C,
   1705 						   (__v8df)
   1706 						   _mm512_setzero_pd (),
   1707 						   (__mmask8) __U,
   1708 						   __R);
   1709 }
   1710 
   1711 extern __inline __m512
   1712 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1713 _mm512_range_round_ps (__m512 __A, __m512 __B, int __C, const int __R)
   1714 {
   1715   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
   1716 						  (__v16sf) __B, __C,
   1717 						  (__v16sf)
   1718 						  _mm512_setzero_ps (),
   1719 						  (__mmask16) -1,
   1720 						  __R);
   1721 }
   1722 
   1723 extern __inline __m512
   1724 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1725 _mm512_mask_range_round_ps (__m512 __W, __mmask16 __U,
   1726 			    __m512 __A, __m512 __B, int __C,
   1727 			    const int __R)
   1728 {
   1729   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
   1730 						  (__v16sf) __B, __C,
   1731 						  (__v16sf) __W,
   1732 						  (__mmask16) __U,
   1733 						  __R);
   1734 }
   1735 
   1736 extern __inline __m512
   1737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1738 _mm512_maskz_range_round_ps (__mmask16 __U, __m512 __A, __m512 __B,
   1739 			     int __C, const int __R)
   1740 {
   1741   return (__m512) __builtin_ia32_rangeps512_mask ((__v16sf) __A,
   1742 						  (__v16sf) __B, __C,
   1743 						  (__v16sf)
   1744 						  _mm512_setzero_ps (),
   1745 						  (__mmask16) __U,
   1746 						  __R);
   1747 }
   1748 
   1749 extern __inline __m512i
   1750 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1751 _mm512_inserti32x8 (__m512i __A, __m256i __B, const int __imm)
   1752 {
   1753   return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
   1754 						    (__v8si) __B,
   1755 						    __imm,
   1756 						    (__v16si)
   1757 						    _mm512_setzero_si512 (),
   1758 						    (__mmask16) -1);
   1759 }
   1760 
   1761 extern __inline __m512i
   1762 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1763 _mm512_mask_inserti32x8 (__m512i __W, __mmask16 __U, __m512i __A,
   1764 			 __m256i __B, const int __imm)
   1765 {
   1766   return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
   1767 						    (__v8si) __B,
   1768 						    __imm,
   1769 						    (__v16si) __W,
   1770 						    (__mmask16) __U);
   1771 }
   1772 
   1773 extern __inline __m512i
   1774 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1775 _mm512_maskz_inserti32x8 (__mmask16 __U, __m512i __A, __m256i __B,
   1776 			  const int __imm)
   1777 {
   1778   return (__m512i) __builtin_ia32_inserti32x8_mask ((__v16si) __A,
   1779 						    (__v8si) __B,
   1780 						    __imm,
   1781 						    (__v16si)
   1782 						    _mm512_setzero_si512 (),
   1783 						    (__mmask16) __U);
   1784 }
   1785 
   1786 extern __inline __m512
   1787 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1788 _mm512_insertf32x8 (__m512 __A, __m256 __B, const int __imm)
   1789 {
   1790   return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
   1791 						   (__v8sf) __B,
   1792 						   __imm,
   1793 						   (__v16sf)
   1794 						   _mm512_setzero_ps (),
   1795 						   (__mmask16) -1);
   1796 }
   1797 
   1798 extern __inline __m512
   1799 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1800 _mm512_mask_insertf32x8 (__m512 __W, __mmask16 __U, __m512 __A,
   1801 			 __m256 __B, const int __imm)
   1802 {
   1803   return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
   1804 						   (__v8sf) __B,
   1805 						   __imm,
   1806 						   (__v16sf) __W,
   1807 						   (__mmask16) __U);
   1808 }
   1809 
   1810 extern __inline __m512
   1811 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1812 _mm512_maskz_insertf32x8 (__mmask16 __U, __m512 __A, __m256 __B,
   1813 			  const int __imm)
   1814 {
   1815   return (__m512) __builtin_ia32_insertf32x8_mask ((__v16sf) __A,
   1816 						   (__v8sf) __B,
   1817 						   __imm,
   1818 						   (__v16sf)
   1819 						   _mm512_setzero_ps (),
   1820 						   (__mmask16) __U);
   1821 }
   1822 
   1823 extern __inline __m512i
   1824 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1825 _mm512_inserti64x2 (__m512i __A, __m128i __B, const int __imm)
   1826 {
   1827   return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
   1828 							(__v2di) __B,
   1829 							__imm,
   1830 							(__v8di)
   1831 							_mm512_setzero_si512 (),
   1832 							(__mmask8) -
   1833 							1);
   1834 }
   1835 
   1836 extern __inline __m512i
   1837 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1838 _mm512_mask_inserti64x2 (__m512i __W, __mmask8 __U, __m512i __A,
   1839 			 __m128i __B, const int __imm)
   1840 {
   1841   return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
   1842 							(__v2di) __B,
   1843 							__imm,
   1844 							(__v8di) __W,
   1845 							(__mmask8)
   1846 							__U);
   1847 }
   1848 
   1849 extern __inline __m512i
   1850 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1851 _mm512_maskz_inserti64x2 (__mmask8 __U, __m512i __A, __m128i __B,
   1852 			  const int __imm)
   1853 {
   1854   return (__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di) __A,
   1855 							(__v2di) __B,
   1856 							__imm,
   1857 							(__v8di)
   1858 							_mm512_setzero_si512 (),
   1859 							(__mmask8)
   1860 							__U);
   1861 }
   1862 
   1863 extern __inline __m512d
   1864 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1865 _mm512_insertf64x2 (__m512d __A, __m128d __B, const int __imm)
   1866 {
   1867   return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
   1868 							(__v2df) __B,
   1869 							__imm,
   1870 							(__v8df)
   1871 							_mm512_setzero_pd (),
   1872 							(__mmask8) -
   1873 							1);
   1874 }
   1875 
   1876 extern __inline __m512d
   1877 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1878 _mm512_mask_insertf64x2 (__m512d __W, __mmask8 __U, __m512d __A,
   1879 			 __m128d __B, const int __imm)
   1880 {
   1881   return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
   1882 							(__v2df) __B,
   1883 							__imm,
   1884 							(__v8df) __W,
   1885 							(__mmask8)
   1886 							__U);
   1887 }
   1888 
   1889 extern __inline __m512d
   1890 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1891 _mm512_maskz_insertf64x2 (__mmask8 __U, __m512d __A, __m128d __B,
   1892 			  const int __imm)
   1893 {
   1894   return (__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df) __A,
   1895 							(__v2df) __B,
   1896 							__imm,
   1897 							(__v8df)
   1898 							_mm512_setzero_pd (),
   1899 							(__mmask8)
   1900 							__U);
   1901 }
   1902 
   1903 extern __inline __mmask8
   1904 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1905 _mm512_mask_fpclass_pd_mask (__mmask8 __U, __m512d __A,
   1906 			     const int __imm)
   1907 {
   1908   return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
   1909 						      __imm, __U);
   1910 }
   1911 
   1912 extern __inline __mmask8
   1913 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1914 _mm512_fpclass_pd_mask (__m512d __A, const int __imm)
   1915 {
   1916   return (__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) __A,
   1917 						      __imm,
   1918 						      (__mmask8) -1);
   1919 }
   1920 
   1921 extern __inline __mmask16
   1922 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1923 _mm512_mask_fpclass_ps_mask (__mmask16 __U, __m512 __A,
   1924 			     const int __imm)
   1925 {
   1926   return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
   1927 						       __imm, __U);
   1928 }
   1929 
   1930 extern __inline __mmask16
   1931 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1932 _mm512_fpclass_ps_mask (__m512 __A, const int __imm)
   1933 {
   1934   return (__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) __A,
   1935 						       __imm,
   1936 						       (__mmask16) -
   1937 						       1);
   1938 }
   1939 
   1940 #else
   1941 #define _mm_range_sd(A, B, C)						\
   1942   ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A),	\
   1943     (__v2df)(__m128d)(B), (int)(C),					\
   1944     _MM_FROUND_CUR_DIRECTION))
   1945 
   1946 #define _mm_range_ss(A, B, C)						\
   1947   ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A),	\
   1948     (__v4sf)(__m128)(B), (int)(C),					\
   1949     _MM_FROUND_CUR_DIRECTION))
   1950 
   1951 #define _mm_range_round_sd(A, B, C, R)					\
   1952   ((__m128d) __builtin_ia32_rangesd128_round ((__v2df)(__m128d)(A),	\
   1953     (__v2df)(__m128d)(B), (int)(C), (R)))
   1954 
   1955 #define _mm_range_round_ss(A, B, C, R)					\
   1956   ((__m128) __builtin_ia32_rangess128_round ((__v4sf)(__m128)(A),	\
   1957     (__v4sf)(__m128)(B), (int)(C), (R)))
   1958 
   1959 #define _mm512_cvtt_roundpd_epi64(A, B)		    \
   1960     ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   1961 
   1962 #define _mm512_mask_cvtt_roundpd_epi64(W, U, A, B)  \
   1963     ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)(W), (U), (B)))
   1964 
   1965 #define _mm512_maskz_cvtt_roundpd_epi64(U, A, B)    \
   1966     ((__m512i)__builtin_ia32_cvttpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   1967 
   1968 #define _mm512_cvtt_roundpd_epu64(A, B)		    \
   1969     ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   1970 
   1971 #define _mm512_mask_cvtt_roundpd_epu64(W, U, A, B)  \
   1972     ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)(W), (U), (B)))
   1973 
   1974 #define _mm512_maskz_cvtt_roundpd_epu64(U, A, B)    \
   1975     ((__m512i)__builtin_ia32_cvttpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   1976 
   1977 #define _mm512_cvtt_roundps_epi64(A, B)		    \
   1978     ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   1979 
   1980 #define _mm512_mask_cvtt_roundps_epi64(W, U, A, B)  \
   1981     ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)(W), (U), (B)))
   1982 
   1983 #define _mm512_maskz_cvtt_roundps_epi64(U, A, B)    \
   1984     ((__m512i)__builtin_ia32_cvttps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   1985 
   1986 #define _mm512_cvtt_roundps_epu64(A, B)		    \
   1987     ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   1988 
   1989 #define _mm512_mask_cvtt_roundps_epu64(W, U, A, B)  \
   1990     ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)(W), (U), (B)))
   1991 
   1992 #define _mm512_maskz_cvtt_roundps_epu64(U, A, B)    \
   1993     ((__m512i)__builtin_ia32_cvttps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   1994 
   1995 #define _mm512_cvt_roundpd_epi64(A, B)		    \
   1996     ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   1997 
   1998 #define _mm512_mask_cvt_roundpd_epi64(W, U, A, B)   \
   1999     ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)(W), (U), (B)))
   2000 
   2001 #define _mm512_maskz_cvt_roundpd_epi64(U, A, B)     \
   2002     ((__m512i)__builtin_ia32_cvtpd2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   2003 
   2004 #define _mm512_cvt_roundpd_epu64(A, B)		    \
   2005     ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   2006 
   2007 #define _mm512_mask_cvt_roundpd_epu64(W, U, A, B)   \
   2008     ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)(W), (U), (B)))
   2009 
   2010 #define _mm512_maskz_cvt_roundpd_epu64(U, A, B)     \
   2011     ((__m512i)__builtin_ia32_cvtpd2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   2012 
   2013 #define _mm512_cvt_roundps_epi64(A, B)		    \
   2014     ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   2015 
   2016 #define _mm512_mask_cvt_roundps_epi64(W, U, A, B)   \
   2017     ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)(W), (U), (B)))
   2018 
   2019 #define _mm512_maskz_cvt_roundps_epi64(U, A, B)     \
   2020     ((__m512i)__builtin_ia32_cvtps2qq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   2021 
   2022 #define _mm512_cvt_roundps_epu64(A, B)		    \
   2023     ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), -1, (B)))
   2024 
   2025 #define _mm512_mask_cvt_roundps_epu64(W, U, A, B)   \
   2026     ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)(W), (U), (B)))
   2027 
   2028 #define _mm512_maskz_cvt_roundps_epu64(U, A, B)     \
   2029     ((__m512i)__builtin_ia32_cvtps2uqq512_mask((A), (__v8di)_mm512_setzero_si512 (), (U), (B)))
   2030 
   2031 #define _mm512_cvt_roundepi64_ps(A, B)		    \
   2032     ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), -1, (B)))
   2033 
   2034 #define _mm512_mask_cvt_roundepi64_ps(W, U, A, B)   \
   2035     ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (W), (U), (B)))
   2036 
   2037 #define _mm512_maskz_cvt_roundepi64_ps(U, A, B)     \
   2038     ((__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), (U), (B)))
   2039 
   2040 #define _mm512_cvt_roundepu64_ps(A, B)		    \
   2041     ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), -1, (B)))
   2042 
   2043 #define _mm512_mask_cvt_roundepu64_ps(W, U, A, B)   \
   2044     ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (W), (U), (B)))
   2045 
   2046 #define _mm512_maskz_cvt_roundepu64_ps(U, A, B)     \
   2047     ((__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(A), (__v8sf)_mm256_setzero_ps(), (U), (B)))
   2048 
   2049 #define _mm512_cvt_roundepi64_pd(A, B)		    \
   2050     ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), -1, (B)))
   2051 
   2052 #define _mm512_mask_cvt_roundepi64_pd(W, U, A, B)   \
   2053     ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (W), (U), (B)))
   2054 
   2055 #define _mm512_maskz_cvt_roundepi64_pd(U, A, B)     \
   2056     ((__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), (U), (B)))
   2057 
   2058 #define _mm512_cvt_roundepu64_pd(A, B)		    \
   2059     ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), -1, (B)))
   2060 
   2061 #define _mm512_mask_cvt_roundepu64_pd(W, U, A, B)   \
   2062     ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (W), (U), (B)))
   2063 
   2064 #define _mm512_maskz_cvt_roundepu64_pd(U, A, B)     \
   2065     ((__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(A), (__v8df)_mm512_setzero_pd(), (U), (B)))
   2066 
   2067 #define _mm512_reduce_pd(A, B)						\
   2068   ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
   2069     (int)(B), (__v8df)_mm512_setzero_pd(), (__mmask8)-1))
   2070 
   2071 #define _mm512_mask_reduce_pd(W, U, A, B)				\
   2072   ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
   2073     (int)(B), (__v8df)(__m512d)(W), (__mmask8)(U)))
   2074 
   2075 #define _mm512_maskz_reduce_pd(U, A, B)					\
   2076   ((__m512d) __builtin_ia32_reducepd512_mask ((__v8df)(__m512d)(A),	\
   2077     (int)(B), (__v8df)_mm512_setzero_pd(), (__mmask8)(U)))
   2078 
   2079 #define _mm512_reduce_ps(A, B)						\
   2080   ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
   2081     (int)(B), (__v16sf)_mm512_setzero_ps(), (__mmask16)-1))
   2082 
   2083 #define _mm512_mask_reduce_ps(W, U, A, B)				\
   2084   ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
   2085     (int)(B), (__v16sf)(__m512)(W), (__mmask16)(U)))
   2086 
   2087 #define _mm512_maskz_reduce_ps(U, A, B)					\
   2088   ((__m512) __builtin_ia32_reduceps512_mask ((__v16sf)(__m512)(A),	\
   2089     (int)(B), (__v16sf)_mm512_setzero_ps(), (__mmask16)(U)))
   2090 
   2091 #define _mm512_extractf32x8_ps(X, C)                                    \
   2092   ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
   2093     (int) (C), (__v8sf)(__m256) _mm256_setzero_ps(), (__mmask8)-1))
   2094 
   2095 #define _mm512_mask_extractf32x8_ps(W, U, X, C)                         \
   2096   ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
   2097     (int) (C), (__v8sf)(__m256) (W), (__mmask8) (U)))
   2098 
   2099 #define _mm512_maskz_extractf32x8_ps(U, X, C)                           \
   2100   ((__m256) __builtin_ia32_extractf32x8_mask ((__v16sf)(__m512) (X),    \
   2101     (int) (C), (__v8sf)(__m256) _mm256_setzero_ps(), (__mmask8) (U)))
   2102 
   2103 #define _mm512_extractf64x2_pd(X, C)                                    \
   2104   ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
   2105     (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8)-1))
   2106 
   2107 #define _mm512_mask_extractf64x2_pd(W, U, X, C)                         \
   2108   ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
   2109     (int) (C), (__v2df)(__m128d) (W), (__mmask8) (U)))
   2110 
   2111 #define _mm512_maskz_extractf64x2_pd(U, X, C)                           \
   2112   ((__m128d) __builtin_ia32_extractf64x2_512_mask ((__v8df)(__m512d) (X),\
   2113     (int) (C), (__v2df)(__m128d) _mm_setzero_pd(), (__mmask8) (U)))
   2114 
   2115 #define _mm512_extracti32x8_epi32(X, C)                                 \
   2116   ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
   2117     (int) (C), (__v8si)(__m256i) _mm256_setzero_si256(), (__mmask8)-1))
   2118 
   2119 #define _mm512_mask_extracti32x8_epi32(W, U, X, C)                      \
   2120   ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
   2121     (int) (C), (__v8si)(__m256i) (W), (__mmask8) (U)))
   2122 
   2123 #define _mm512_maskz_extracti32x8_epi32(U, X, C)                        \
   2124   ((__m256i) __builtin_ia32_extracti32x8_mask ((__v16si)(__m512i) (X),  \
   2125     (int) (C), (__v8si)(__m256i) _mm256_setzero_si256(), (__mmask8) (U)))
   2126 
   2127 #define _mm512_extracti64x2_epi64(X, C)                                 \
   2128   ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
   2129     (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8)-1))
   2130 
   2131 #define _mm512_mask_extracti64x2_epi64(W, U, X, C)                      \
   2132   ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
   2133     (int) (C), (__v2di)(__m128i) (W), (__mmask8) (U)))
   2134 
   2135 #define _mm512_maskz_extracti64x2_epi64(U, X, C)                        \
   2136   ((__m128i) __builtin_ia32_extracti64x2_512_mask ((__v8di)(__m512i) (X),\
   2137     (int) (C), (__v2di)(__m128i) _mm_setzero_di(), (__mmask8) (U)))
   2138 
   2139 #define _mm512_range_pd(A, B, C)					\
   2140   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
   2141     (__v8df)(__m512d)(B), (int)(C),					\
   2142     (__v8df)_mm512_setzero_pd(), (__mmask8)-1, _MM_FROUND_CUR_DIRECTION))
   2143 
   2144 #define _mm512_mask_range_pd(W, U, A, B, C)				\
   2145   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
   2146     (__v8df)(__m512d)(B), (int)(C),					\
   2147     (__v8df)(__m512d)(W), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
   2148 
   2149 #define _mm512_maskz_range_pd(U, A, B, C)				\
   2150   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
   2151     (__v8df)(__m512d)(B), (int)(C),					\
   2152     (__v8df)_mm512_setzero_pd(), (__mmask8)(U), _MM_FROUND_CUR_DIRECTION))
   2153 
   2154 #define _mm512_range_ps(A, B, C)					\
   2155   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
   2156     (__v16sf)(__m512)(B), (int)(C),					\
   2157     (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, _MM_FROUND_CUR_DIRECTION))
   2158 
   2159 #define _mm512_mask_range_ps(W, U, A, B, C)				\
   2160   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
   2161     (__v16sf)(__m512)(B), (int)(C),					\
   2162     (__v16sf)(__m512)(W), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
   2163 
   2164 #define _mm512_maskz_range_ps(U, A, B, C)				\
   2165   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
   2166     (__v16sf)(__m512)(B), (int)(C),					\
   2167     (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), _MM_FROUND_CUR_DIRECTION))
   2168 
   2169 #define _mm512_range_round_pd(A, B, C, R)					\
   2170   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
   2171     (__v8df)(__m512d)(B), (int)(C),					\
   2172     (__v8df)_mm512_setzero_pd(), (__mmask8)-1, (R)))
   2173 
   2174 #define _mm512_mask_range_round_pd(W, U, A, B, C, R)				\
   2175   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
   2176     (__v8df)(__m512d)(B), (int)(C),					\
   2177     (__v8df)(__m512d)(W), (__mmask8)(U), (R)))
   2178 
   2179 #define _mm512_maskz_range_round_pd(U, A, B, C, R)				\
   2180   ((__m512d) __builtin_ia32_rangepd512_mask ((__v8df)(__m512d)(A),	\
   2181     (__v8df)(__m512d)(B), (int)(C),					\
   2182     (__v8df)_mm512_setzero_pd(), (__mmask8)(U), (R)))
   2183 
   2184 #define _mm512_range_round_ps(A, B, C, R)					\
   2185   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
   2186     (__v16sf)(__m512)(B), (int)(C),					\
   2187     (__v16sf)_mm512_setzero_ps(), (__mmask16)-1, (R)))
   2188 
   2189 #define _mm512_mask_range_round_ps(W, U, A, B, C, R)				\
   2190   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
   2191     (__v16sf)(__m512)(B), (int)(C),					\
   2192     (__v16sf)(__m512)(W), (__mmask16)(U), (R)))
   2193 
   2194 #define _mm512_maskz_range_round_ps(U, A, B, C, R)				\
   2195   ((__m512) __builtin_ia32_rangeps512_mask ((__v16sf)(__m512)(A),	\
   2196     (__v16sf)(__m512)(B), (int)(C),					\
   2197     (__v16sf)_mm512_setzero_ps(), (__mmask16)(U), (R)))
   2198 
   2199 #define _mm512_insertf64x2(X, Y, C)                                     \
   2200   ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
   2201     (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (X),            \
   2202     (__mmask8)-1))
   2203 
   2204 #define _mm512_mask_insertf64x2(W, U, X, Y, C)                          \
   2205   ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
   2206     (__v2df)(__m128d) (Y), (int) (C), (__v8df)(__m512d) (W),            \
   2207     (__mmask8) (U)))
   2208 
   2209 #define _mm512_maskz_insertf64x2(U, X, Y, C)                            \
   2210   ((__m512d) __builtin_ia32_insertf64x2_512_mask ((__v8df)(__m512d) (X),\
   2211     (__v2df)(__m128d) (Y), (int) (C),                                   \
   2212     (__v8df)(__m512d) _mm512_setzero_pd(), (__mmask8) (U)))
   2213 
   2214 #define _mm512_inserti64x2(X, Y, C)                                     \
   2215   ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
   2216     (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (X), (__mmask8)-1))
   2217 
   2218 #define _mm512_mask_inserti64x2(W, U, X, Y, C)                          \
   2219   ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
   2220     (__v2di)(__m128i) (Y), (int) (C), (__v8di)(__m512i) (W),            \
   2221     (__mmask8) (U)))
   2222 
   2223 #define _mm512_maskz_inserti64x2(U, X, Y, C)                            \
   2224   ((__m512i) __builtin_ia32_inserti64x2_512_mask ((__v8di)(__m512i) (X),\
   2225     (__v2di)(__m128i) (Y), (int) (C),                                   \
   2226     (__v8di)(__m512i) _mm512_setzero_si512 (), (__mmask8) (U)))
   2227 
   2228 #define _mm512_insertf32x8(X, Y, C)                                     \
   2229   ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
   2230     (__v8sf)(__m256) (Y), (int) (C),\
   2231     (__v16sf)(__m512)_mm512_setzero_ps(),\
   2232     (__mmask16)-1))
   2233 
   2234 #define _mm512_mask_insertf32x8(W, U, X, Y, C)                          \
   2235   ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
   2236     (__v8sf)(__m256) (Y), (int) (C),\
   2237     (__v16sf)(__m512)(W),\
   2238     (__mmask16)(U)))
   2239 
   2240 #define _mm512_maskz_insertf32x8(U, X, Y, C)                            \
   2241   ((__m512) __builtin_ia32_insertf32x8_mask ((__v16sf)(__m512) (X),     \
   2242     (__v8sf)(__m256) (Y), (int) (C),\
   2243     (__v16sf)(__m512)_mm512_setzero_ps(),\
   2244     (__mmask16)(U)))
   2245 
   2246 #define _mm512_inserti32x8(X, Y, C)                                     \
   2247   ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
   2248     (__v8si)(__m256i) (Y), (int) (C),\
   2249     (__v16si)(__m512i)_mm512_setzero_si512 (),\
   2250     (__mmask16)-1))
   2251 
   2252 #define _mm512_mask_inserti32x8(W, U, X, Y, C)                          \
   2253   ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
   2254     (__v8si)(__m256i) (Y), (int) (C),\
   2255     (__v16si)(__m512i)(W),\
   2256     (__mmask16)(U)))
   2257 
   2258 #define _mm512_maskz_inserti32x8(U, X, Y, C)                            \
   2259   ((__m512i) __builtin_ia32_inserti32x8_mask ((__v16si)(__m512i) (X),   \
   2260     (__v8si)(__m256i) (Y), (int) (C),\
   2261     (__v16si)(__m512i)_mm512_setzero_si512 (),\
   2262     (__mmask16)(U)))
   2263 
   2264 #define _mm_fpclass_ss_mask(X, C)						\
   2265   ((__mmask8) __builtin_ia32_fpclassss ((__v4sf) (__m128) (X), (int) (C)))  \
   2266 
   2267 #define _mm_fpclass_sd_mask(X, C)						\
   2268   ((__mmask8) __builtin_ia32_fpclasssd ((__v2df) (__m128d) (X), (int) (C))) \
   2269 
   2270 #define _mm512_mask_fpclass_pd_mask(u, X, C)                            \
   2271   ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
   2272 						(int) (C), (__mmask8)(u)))
   2273 
   2274 #define _mm512_mask_fpclass_ps_mask(u, x, c)				\
   2275   ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
   2276 						 (int) (c),(__mmask8)(u)))
   2277 
   2278 #define _mm512_fpclass_pd_mask(X, C)                                    \
   2279   ((__mmask8) __builtin_ia32_fpclasspd512_mask ((__v8df) (__m512d) (X), \
   2280 						(int) (C), (__mmask8)-1))
   2281 
   2282 #define _mm512_fpclass_ps_mask(x, c)                                    \
   2283   ((__mmask16) __builtin_ia32_fpclassps512_mask ((__v16sf) (__m512) (x),\
   2284 						 (int) (c),(__mmask8)-1))
   2285 
   2286 #define _mm_reduce_sd(A, B, C)						\
   2287   ((__m128d) __builtin_ia32_reducesd ((__v2df)(__m128d)(A),	\
   2288     (__v2df)(__m128d)(B), (int)(C)))					\
   2289 
   2290 #define _mm_reduce_ss(A, B, C)						\
   2291   ((__m128) __builtin_ia32_reducess ((__v4sf)(__m128)(A),		\
   2292     (__v4sf)(__m128)(A), (int)(C)))					\
   2293 
   2294 #endif
   2295 
   2296 #ifdef __DISABLE_AVX512DQ__
   2297 #undef __DISABLE_AVX512DQ__
   2298 #pragma GCC pop_options
   2299 #endif /* __DISABLE_AVX512DQ__ */
   2300 
   2301 #endif /* _AVX512DQINTRIN_H_INCLUDED */
   2302