Home | History | Annotate | Line # | Download | only in i386
avx512bwintrin.h revision 1.3
      1 /* Copyright (C) 2014-2017 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 <avx512bwintrin.h> directly; include <immintrin.h> instead."
     26 #endif
     27 
     28 #ifndef _AVX512BWINTRIN_H_INCLUDED
     29 #define _AVX512BWINTRIN_H_INCLUDED
     30 
     31 #ifndef __AVX512BW__
     32 #pragma GCC push_options
     33 #pragma GCC target("avx512bw")
     34 #define __DISABLE_AVX512BW__
     35 #endif /* __AVX512BW__ */
     36 
     37 /* Internal data types for implementing the intrinsics.  */
     38 typedef short __v32hi __attribute__ ((__vector_size__ (64)));
     39 typedef char __v64qi __attribute__ ((__vector_size__ (64)));
     40 
     41 typedef unsigned long long __mmask64;
     42 
     43 extern __inline unsigned char
     44 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     45 _ktest_mask32_u8  (__mmask32 __A,  __mmask32 __B, unsigned char *__CF)
     46 {
     47   *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
     48   return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
     49 }
     50 
     51 extern __inline unsigned char
     52 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     53 _ktest_mask64_u8  (__mmask64 __A,  __mmask64 __B, unsigned char *__CF)
     54 {
     55   *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
     56   return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
     57 }
     58 
     59 extern __inline unsigned char
     60 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     61 _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
     62 {
     63   return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
     64 }
     65 
     66 extern __inline unsigned char
     67 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     68 _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
     69 {
     70   return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
     71 }
     72 
     73 extern __inline unsigned char
     74 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     75 _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
     76 {
     77   return (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
     78 }
     79 
     80 extern __inline unsigned char
     81 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     82 _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
     83 {
     84   return (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
     85 }
     86 
     87 extern __inline unsigned char
     88 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     89 _kortest_mask32_u8  (__mmask32 __A,  __mmask32 __B, unsigned char *__CF)
     90 {
     91   *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
     92   return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
     93 }
     94 
     95 extern __inline unsigned char
     96 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     97 _kortest_mask64_u8  (__mmask64 __A,  __mmask64 __B, unsigned char *__CF)
     98 {
     99   *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
    100   return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
    101 }
    102 
    103 extern __inline unsigned char
    104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    105 _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
    106 {
    107   return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
    108 }
    109 
    110 extern __inline unsigned char
    111 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    112 _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
    113 {
    114   return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
    115 }
    116 
    117 extern __inline unsigned char
    118 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    119 _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
    120 {
    121   return (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
    122 }
    123 
    124 extern __inline unsigned char
    125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    126 _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
    127 {
    128   return (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
    129 }
    130 
    131 extern __inline __mmask32
    132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    133 _kadd_mask32 (__mmask32 __A, __mmask32 __B)
    134 {
    135   return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B);
    136 }
    137 
    138 extern __inline __mmask64
    139 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    140 _kadd_mask64 (__mmask64 __A, __mmask64 __B)
    141 {
    142   return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B);
    143 }
    144 
    145 extern __inline unsigned int
    146 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    147 _cvtmask32_u32 (__mmask32 __A)
    148 {
    149   return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A);
    150 }
    151 
    152 extern __inline unsigned long long
    153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    154 _cvtmask64_u64 (__mmask64 __A)
    155 {
    156   return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A);
    157 }
    158 
    159 extern __inline __mmask32
    160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    161 _cvtu32_mask32 (unsigned int __A)
    162 {
    163   return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A);
    164 }
    165 
    166 extern __inline __mmask64
    167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    168 _cvtu64_mask64 (unsigned long long __A)
    169 {
    170   return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A);
    171 }
    172 
    173 extern __inline __mmask32
    174 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    175 _load_mask32 (__mmask32 *__A)
    176 {
    177   return (__mmask32) __builtin_ia32_kmovd (*__A);
    178 }
    179 
    180 extern __inline __mmask64
    181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    182 _load_mask64 (__mmask64 *__A)
    183 {
    184   return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A);
    185 }
    186 
    187 extern __inline void
    188 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    189 _store_mask32 (__mmask32 *__A, __mmask32 __B)
    190 {
    191   *(__mmask32 *) __A = __builtin_ia32_kmovd (__B);
    192 }
    193 
    194 extern __inline void
    195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    196 _store_mask64 (__mmask64 *__A, __mmask64 __B)
    197 {
    198   *(__mmask64 *) __A = __builtin_ia32_kmovq (__B);
    199 }
    200 
    201 extern __inline __mmask32
    202 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    203 _knot_mask32 (__mmask32 __A)
    204 {
    205   return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A);
    206 }
    207 
    208 extern __inline __mmask64
    209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    210 _knot_mask64 (__mmask64 __A)
    211 {
    212   return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A);
    213 }
    214 
    215 extern __inline __mmask32
    216 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    217 _kor_mask32 (__mmask32 __A, __mmask32 __B)
    218 {
    219   return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B);
    220 }
    221 
    222 extern __inline __mmask64
    223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    224 _kor_mask64 (__mmask64 __A, __mmask64 __B)
    225 {
    226   return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B);
    227 }
    228 
    229 extern __inline __mmask32
    230 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    231 _kxnor_mask32 (__mmask32 __A, __mmask32 __B)
    232 {
    233   return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B);
    234 }
    235 
    236 extern __inline __mmask64
    237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    238 _kxnor_mask64 (__mmask64 __A, __mmask64 __B)
    239 {
    240   return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B);
    241 }
    242 
    243 extern __inline __mmask32
    244 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    245 _kxor_mask32 (__mmask32 __A, __mmask32 __B)
    246 {
    247   return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B);
    248 }
    249 
    250 extern __inline __mmask64
    251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    252 _kxor_mask64 (__mmask64 __A, __mmask64 __B)
    253 {
    254   return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B);
    255 }
    256 
    257 extern __inline __mmask32
    258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    259 _kand_mask32 (__mmask32 __A, __mmask32 __B)
    260 {
    261   return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B);
    262 }
    263 
    264 extern __inline __mmask64
    265 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    266 _kand_mask64 (__mmask64 __A, __mmask64 __B)
    267 {
    268   return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B);
    269 }
    270 
    271 extern __inline __mmask32
    272 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    273 _kandn_mask32 (__mmask32 __A, __mmask32 __B)
    274 {
    275   return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B);
    276 }
    277 
    278 extern __inline __mmask64
    279 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    280 _kandn_mask64 (__mmask64 __A, __mmask64 __B)
    281 {
    282   return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B);
    283 }
    284 
    285 extern __inline __m512i
    286 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    287 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
    288 {
    289   return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
    290 						    (__v32hi) __W,
    291 						    (__mmask32) __U);
    292 }
    293 
    294 extern __inline __m512i
    295 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    296 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
    297 {
    298   return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
    299 						    (__v32hi)
    300 						    _mm512_setzero_si512 (),
    301 						    (__mmask32) __U);
    302 }
    303 
    304 extern __inline __m512i
    305 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    306 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
    307 {
    308   return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
    309 						     (__v32hi) __W,
    310 						     (__mmask32) __U);
    311 }
    312 
    313 extern __inline __m512i
    314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    315 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
    316 {
    317   return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
    318 						     (__v32hi)
    319 						     _mm512_setzero_si512 (),
    320 						     (__mmask32) __U);
    321 }
    322 
    323 extern __inline void
    324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    325 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
    326 {
    327   __builtin_ia32_storedquhi512_mask ((short *) __P,
    328 				     (__v32hi) __A,
    329 				     (__mmask32) __U);
    330 }
    331 
    332 extern __inline __m512i
    333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    334 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
    335 {
    336   return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
    337 						    (__v64qi) __W,
    338 						    (__mmask64) __U);
    339 }
    340 
    341 extern __inline __m512i
    342 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    343 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
    344 {
    345   return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
    346 						    (__v64qi)
    347 						    _mm512_setzero_si512 (),
    348 						    (__mmask64) __U);
    349 }
    350 
    351 extern __inline __mmask32
    352 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    353 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
    354 {
    355   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
    356 					      (__mmask32) __B);
    357 }
    358 
    359 extern __inline __mmask32
    360 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    361 _kunpackw_mask32 (__mmask16 __A, __mmask16 __B)
    362 {
    363   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
    364 					      (__mmask32) __B);
    365 }
    366 
    367 extern __inline __mmask64
    368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    369 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
    370 {
    371   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
    372 					      (__mmask64) __B);
    373 }
    374 
    375 extern __inline __mmask64
    376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    377 _kunpackd_mask64 (__mmask32 __A, __mmask32 __B)
    378 {
    379   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
    380 					      (__mmask64) __B);
    381 }
    382 
    383 extern __inline __m512i
    384 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    385 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
    386 {
    387   return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
    388 						     (__v64qi) __W,
    389 						     (__mmask64) __U);
    390 }
    391 
    392 extern __inline __m512i
    393 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    394 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
    395 {
    396   return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
    397 						     (__v64qi)
    398 						     _mm512_setzero_si512 (),
    399 						     (__mmask64) __U);
    400 }
    401 
    402 extern __inline void
    403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    404 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
    405 {
    406   __builtin_ia32_storedquqi512_mask ((char *) __P,
    407 				     (__v64qi) __A,
    408 				     (__mmask64) __U);
    409 }
    410 
    411 extern __inline __m512i
    412 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    413 _mm512_sad_epu8 (__m512i __A, __m512i __B)
    414 {
    415   return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
    416 					     (__v64qi) __B);
    417 }
    418 
    419 extern __inline __m256i
    420 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    421 _mm512_cvtepi16_epi8 (__m512i __A)
    422 {
    423   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
    424 						  (__v32qi) _mm256_undefined_si256(),
    425 						  (__mmask32) -1);
    426 }
    427 
    428 extern __inline __m256i
    429 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    430 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
    431 {
    432   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
    433 						  (__v32qi) __O, __M);
    434 }
    435 
    436 extern __inline __m256i
    437 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    438 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
    439 {
    440   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
    441 						  (__v32qi)
    442 						  _mm256_setzero_si256 (),
    443 						  __M);
    444 }
    445 
    446 extern __inline __m256i
    447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    448 _mm512_cvtsepi16_epi8 (__m512i __A)
    449 {
    450   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
    451 						   (__v32qi)_mm256_undefined_si256(),
    452 						   (__mmask32) -1);
    453 }
    454 
    455 extern __inline __m256i
    456 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    457 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
    458 {
    459   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
    460 						   (__v32qi)__O,
    461 						   __M);
    462 }
    463 
    464 extern __inline __m256i
    465 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    466 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
    467 {
    468   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
    469 						   (__v32qi)
    470 						   _mm256_setzero_si256 (),
    471 						   __M);
    472 }
    473 
    474 extern __inline __m256i
    475 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    476 _mm512_cvtusepi16_epi8 (__m512i __A)
    477 {
    478   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
    479 						    (__v32qi)_mm256_undefined_si256(),
    480 						    (__mmask32) -1);
    481 }
    482 
    483 extern __inline __m256i
    484 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    485 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
    486 {
    487   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
    488 						    (__v32qi) __O,
    489 						    __M);
    490 }
    491 
    492 extern __inline __m256i
    493 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    494 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
    495 {
    496   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
    497 						    (__v32qi)
    498 						    _mm256_setzero_si256 (),
    499 						    __M);
    500 }
    501 
    502 extern __inline __m512i
    503 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    504 _mm512_broadcastb_epi8 (__m128i __A)
    505 {
    506   return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
    507 						       (__v64qi)_mm512_undefined_epi32(),
    508 						       (__mmask64) -1);
    509 }
    510 
    511 extern __inline __m512i
    512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    513 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
    514 {
    515   return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
    516 						       (__v64qi) __O,
    517 						       __M);
    518 }
    519 
    520 extern __inline __m512i
    521 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    522 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
    523 {
    524   return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
    525 						       (__v64qi)
    526 						       _mm512_setzero_si512 (),
    527 						       __M);
    528 }
    529 
    530 extern __inline __m512i
    531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    532 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
    533 {
    534   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
    535 							   (__v64qi) __O,
    536 							   __M);
    537 }
    538 
    539 extern __inline __m512i
    540 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    541 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
    542 {
    543   return (__m512i)
    544 	 __builtin_ia32_pbroadcastb512_gpr_mask (__A,
    545 						 (__v64qi)
    546 						 _mm512_setzero_si512 (),
    547 						 __M);
    548 }
    549 
    550 extern __inline __m512i
    551 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    552 _mm512_broadcastw_epi16 (__m128i __A)
    553 {
    554   return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
    555 						       (__v32hi)_mm512_undefined_epi32(),
    556 						       (__mmask32) -1);
    557 }
    558 
    559 extern __inline __m512i
    560 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    561 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
    562 {
    563   return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
    564 						       (__v32hi) __O,
    565 						       __M);
    566 }
    567 
    568 extern __inline __m512i
    569 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    570 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
    571 {
    572   return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
    573 						       (__v32hi)
    574 						       _mm512_setzero_si512 (),
    575 						       __M);
    576 }
    577 
    578 extern __inline __m512i
    579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    580 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
    581 {
    582   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
    583 							   (__v32hi) __O,
    584 							   __M);
    585 }
    586 
    587 extern __inline __m512i
    588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    589 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
    590 {
    591   return (__m512i)
    592 	 __builtin_ia32_pbroadcastw512_gpr_mask (__A,
    593 						 (__v32hi)
    594 						 _mm512_setzero_si512 (),
    595 						 __M);
    596 }
    597 
    598 extern __inline __m512i
    599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    600 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
    601 {
    602   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
    603 						    (__v32hi) __B,
    604 						    (__v32hi)
    605 						    _mm512_setzero_si512 (),
    606 						    (__mmask32) -1);
    607 }
    608 
    609 extern __inline __m512i
    610 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    611 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
    612 			  __m512i __B)
    613 {
    614   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
    615 						    (__v32hi) __B,
    616 						    (__v32hi) __W,
    617 						    (__mmask32) __U);
    618 }
    619 
    620 extern __inline __m512i
    621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    622 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
    623 {
    624   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
    625 						    (__v32hi) __B,
    626 						    (__v32hi)
    627 						    _mm512_setzero_si512 (),
    628 						    (__mmask32) __U);
    629 }
    630 
    631 extern __inline __m512i
    632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    633 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
    634 {
    635   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
    636 						  (__v32hi) __B,
    637 						  (__v32hi)
    638 						  _mm512_setzero_si512 (),
    639 						  (__mmask32) -1);
    640 }
    641 
    642 extern __inline __m512i
    643 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    644 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
    645 			 __m512i __B)
    646 {
    647   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
    648 						  (__v32hi) __B,
    649 						  (__v32hi) __W,
    650 						  (__mmask32) __U);
    651 }
    652 
    653 extern __inline __m512i
    654 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    655 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
    656 {
    657   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
    658 						  (__v32hi) __B,
    659 						  (__v32hi)
    660 						  _mm512_setzero_si512 (),
    661 						  (__mmask32) __U);
    662 }
    663 
    664 extern __inline __m512i
    665 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    666 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
    667 {
    668   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
    669 						   (__v32hi) __B,
    670 						   (__v32hi)
    671 						   _mm512_setzero_si512 (),
    672 						   (__mmask32) -1);
    673 }
    674 
    675 extern __inline __m512i
    676 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    677 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    678 			 __m512i __B)
    679 {
    680   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
    681 						   (__v32hi) __B,
    682 						   (__v32hi) __W,
    683 						   (__mmask32) __U);
    684 }
    685 
    686 extern __inline __m512i
    687 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    688 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    689 {
    690   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
    691 						   (__v32hi) __B,
    692 						   (__v32hi)
    693 						   _mm512_setzero_si512 (),
    694 						   (__mmask32) __U);
    695 }
    696 
    697 extern __inline __m512i
    698 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    699 _mm512_mullo_epi16 (__m512i __A, __m512i __B)
    700 {
    701   return (__m512i) ((__v32hu) __A * (__v32hu) __B);
    702 }
    703 
    704 extern __inline __m512i
    705 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    706 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
    707 			 __m512i __B)
    708 {
    709   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
    710 						  (__v32hi) __B,
    711 						  (__v32hi) __W,
    712 						  (__mmask32) __U);
    713 }
    714 
    715 extern __inline __m512i
    716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    717 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
    718 {
    719   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
    720 						  (__v32hi) __B,
    721 						  (__v32hi)
    722 						  _mm512_setzero_si512 (),
    723 						  (__mmask32) __U);
    724 }
    725 
    726 extern __inline __m512i
    727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    728 _mm512_cvtepi8_epi16 (__m256i __A)
    729 {
    730   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
    731 						    (__v32hi)
    732 						    _mm512_setzero_si512 (),
    733 						    (__mmask32) -1);
    734 }
    735 
    736 extern __inline __m512i
    737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    738 _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
    739 {
    740   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
    741 						    (__v32hi) __W,
    742 						    (__mmask32) __U);
    743 }
    744 
    745 extern __inline __m512i
    746 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    747 _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
    748 {
    749   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
    750 						    (__v32hi)
    751 						    _mm512_setzero_si512 (),
    752 						    (__mmask32) __U);
    753 }
    754 
    755 extern __inline __m512i
    756 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    757 _mm512_cvtepu8_epi16 (__m256i __A)
    758 {
    759   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
    760 						    (__v32hi)
    761 						    _mm512_setzero_si512 (),
    762 						    (__mmask32) -1);
    763 }
    764 
    765 extern __inline __m512i
    766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    767 _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
    768 {
    769   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
    770 						    (__v32hi) __W,
    771 						    (__mmask32) __U);
    772 }
    773 
    774 extern __inline __m512i
    775 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    776 _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
    777 {
    778   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
    779 						    (__v32hi)
    780 						    _mm512_setzero_si512 (),
    781 						    (__mmask32) __U);
    782 }
    783 
    784 extern __inline __m512i
    785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    786 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
    787 {
    788   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
    789 						     (__v32hi) __A,
    790 						     (__v32hi)
    791 						     _mm512_setzero_si512 (),
    792 						     (__mmask32) -1);
    793 }
    794 
    795 extern __inline __m512i
    796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    797 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
    798 				__m512i __B)
    799 {
    800   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
    801 						     (__v32hi) __A,
    802 						     (__v32hi)
    803 						     _mm512_setzero_si512 (),
    804 						     (__mmask32) __M);
    805 }
    806 
    807 extern __inline __m512i
    808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    809 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    810 			       __m512i __B)
    811 {
    812   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
    813 						     (__v32hi) __A,
    814 						     (__v32hi) __W,
    815 						     (__mmask32) __M);
    816 }
    817 
    818 extern __inline __m512i
    819 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    820 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
    821 {
    822   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
    823 							/* idx */ ,
    824 							(__v32hi) __A,
    825 							(__v32hi) __B,
    826 							(__mmask32) -1);
    827 }
    828 
    829 extern __inline __m512i
    830 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    831 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
    832 				__m512i __I, __m512i __B)
    833 {
    834   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
    835 							/* idx */ ,
    836 							(__v32hi) __A,
    837 							(__v32hi) __B,
    838 							(__mmask32)
    839 							__U);
    840 }
    841 
    842 extern __inline __m512i
    843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    844 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
    845 				 __mmask32 __U, __m512i __B)
    846 {
    847   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
    848 							(__v32hi) __I
    849 							/* idx */ ,
    850 							(__v32hi) __B,
    851 							(__mmask32)
    852 							__U);
    853 }
    854 
    855 extern __inline __m512i
    856 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    857 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
    858 				 __m512i __I, __m512i __B)
    859 {
    860   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
    861 							 /* idx */ ,
    862 							 (__v32hi) __A,
    863 							 (__v32hi) __B,
    864 							 (__mmask32)
    865 							 __U);
    866 }
    867 
    868 extern __inline __m512i
    869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    870 _mm512_avg_epu8 (__m512i __A, __m512i __B)
    871 {
    872   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    873 						 (__v64qi) __B,
    874 						 (__v64qi)
    875 						 _mm512_setzero_si512 (),
    876 						 (__mmask64) -1);
    877 }
    878 
    879 extern __inline __m512i
    880 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    881 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    882 		      __m512i __B)
    883 {
    884   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    885 						 (__v64qi) __B,
    886 						 (__v64qi) __W,
    887 						 (__mmask64) __U);
    888 }
    889 
    890 extern __inline __m512i
    891 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    892 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    893 {
    894   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    895 						 (__v64qi) __B,
    896 						 (__v64qi)
    897 						 _mm512_setzero_si512 (),
    898 						 (__mmask64) __U);
    899 }
    900 
    901 extern __inline __m512i
    902 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    903 _mm512_add_epi8 (__m512i __A, __m512i __B)
    904 {
    905   return (__m512i) ((__v64qu) __A + (__v64qu) __B);
    906 }
    907 
    908 extern __inline __m512i
    909 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    910 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
    911 		      __m512i __B)
    912 {
    913   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
    914 						 (__v64qi) __B,
    915 						 (__v64qi) __W,
    916 						 (__mmask64) __U);
    917 }
    918 
    919 extern __inline __m512i
    920 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    921 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
    922 {
    923   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
    924 						 (__v64qi) __B,
    925 						 (__v64qi)
    926 						 _mm512_setzero_si512 (),
    927 						 (__mmask64) __U);
    928 }
    929 
    930 extern __inline __m512i
    931 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    932 _mm512_sub_epi8 (__m512i __A, __m512i __B)
    933 {
    934   return (__m512i) ((__v64qu) __A - (__v64qu) __B);
    935 }
    936 
    937 extern __inline __m512i
    938 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    939 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
    940 		      __m512i __B)
    941 {
    942   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
    943 						 (__v64qi) __B,
    944 						 (__v64qi) __W,
    945 						 (__mmask64) __U);
    946 }
    947 
    948 extern __inline __m512i
    949 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    950 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
    951 {
    952   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
    953 						 (__v64qi) __B,
    954 						 (__v64qi)
    955 						 _mm512_setzero_si512 (),
    956 						 (__mmask64) __U);
    957 }
    958 
    959 extern __inline __m512i
    960 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    961 _mm512_avg_epu16 (__m512i __A, __m512i __B)
    962 {
    963   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    964 						 (__v32hi) __B,
    965 						 (__v32hi)
    966 						 _mm512_setzero_si512 (),
    967 						 (__mmask32) -1);
    968 }
    969 
    970 extern __inline __m512i
    971 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    972 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    973 		       __m512i __B)
    974 {
    975   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    976 						 (__v32hi) __B,
    977 						 (__v32hi) __W,
    978 						 (__mmask32) __U);
    979 }
    980 
    981 extern __inline __m512i
    982 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    983 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    984 {
    985   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    986 						 (__v32hi) __B,
    987 						 (__v32hi)
    988 						 _mm512_setzero_si512 (),
    989 						 (__mmask32) __U);
    990 }
    991 
    992 extern __inline __m512i
    993 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    994 _mm512_subs_epi8 (__m512i __A, __m512i __B)
    995 {
    996   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
    997 						  (__v64qi) __B,
    998 						  (__v64qi)
    999 						  _mm512_setzero_si512 (),
   1000 						  (__mmask64) -1);
   1001 }
   1002 
   1003 extern __inline __m512i
   1004 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1005 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1006 		       __m512i __B)
   1007 {
   1008   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1009 						  (__v64qi) __B,
   1010 						  (__v64qi) __W,
   1011 						  (__mmask64) __U);
   1012 }
   1013 
   1014 extern __inline __m512i
   1015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1016 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1017 {
   1018   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1019 						  (__v64qi) __B,
   1020 						  (__v64qi)
   1021 						  _mm512_setzero_si512 (),
   1022 						  (__mmask64) __U);
   1023 }
   1024 
   1025 extern __inline __m512i
   1026 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1027 _mm512_subs_epu8 (__m512i __A, __m512i __B)
   1028 {
   1029   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1030 						   (__v64qi) __B,
   1031 						   (__v64qi)
   1032 						   _mm512_setzero_si512 (),
   1033 						   (__mmask64) -1);
   1034 }
   1035 
   1036 extern __inline __m512i
   1037 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1038 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
   1039 		       __m512i __B)
   1040 {
   1041   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1042 						   (__v64qi) __B,
   1043 						   (__v64qi) __W,
   1044 						   (__mmask64) __U);
   1045 }
   1046 
   1047 extern __inline __m512i
   1048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1049 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
   1050 {
   1051   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1052 						   (__v64qi) __B,
   1053 						   (__v64qi)
   1054 						   _mm512_setzero_si512 (),
   1055 						   (__mmask64) __U);
   1056 }
   1057 
   1058 extern __inline __m512i
   1059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1060 _mm512_adds_epi8 (__m512i __A, __m512i __B)
   1061 {
   1062   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
   1063 						  (__v64qi) __B,
   1064 						  (__v64qi)
   1065 						  _mm512_setzero_si512 (),
   1066 						  (__mmask64) -1);
   1067 }
   1068 
   1069 extern __inline __m512i
   1070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1071 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1072 		       __m512i __B)
   1073 {
   1074   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
   1075 						  (__v64qi) __B,
   1076 						  (__v64qi) __W,
   1077 						  (__mmask64) __U);
   1078 }
   1079 
   1080 extern __inline __m512i
   1081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1082 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1083 {
   1084   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
   1085 						  (__v64qi) __B,
   1086 						  (__v64qi)
   1087 						  _mm512_setzero_si512 (),
   1088 						  (__mmask64) __U);
   1089 }
   1090 
   1091 extern __inline __m512i
   1092 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1093 _mm512_adds_epu8 (__m512i __A, __m512i __B)
   1094 {
   1095   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
   1096 						   (__v64qi) __B,
   1097 						   (__v64qi)
   1098 						   _mm512_setzero_si512 (),
   1099 						   (__mmask64) -1);
   1100 }
   1101 
   1102 extern __inline __m512i
   1103 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1104 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
   1105 		       __m512i __B)
   1106 {
   1107   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
   1108 						   (__v64qi) __B,
   1109 						   (__v64qi) __W,
   1110 						   (__mmask64) __U);
   1111 }
   1112 
   1113 extern __inline __m512i
   1114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1115 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
   1116 {
   1117   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
   1118 						   (__v64qi) __B,
   1119 						   (__v64qi)
   1120 						   _mm512_setzero_si512 (),
   1121 						   (__mmask64) __U);
   1122 }
   1123 
   1124 extern __inline __m512i
   1125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1126 _mm512_sub_epi16 (__m512i __A, __m512i __B)
   1127 {
   1128   return (__m512i) ((__v32hu) __A - (__v32hu) __B);
   1129 }
   1130 
   1131 extern __inline __m512i
   1132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1133 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1134 		       __m512i __B)
   1135 {
   1136   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
   1137 						 (__v32hi) __B,
   1138 						 (__v32hi) __W,
   1139 						 (__mmask32) __U);
   1140 }
   1141 
   1142 extern __inline __m512i
   1143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1144 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1145 {
   1146   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
   1147 						 (__v32hi) __B,
   1148 						 (__v32hi)
   1149 						 _mm512_setzero_si512 (),
   1150 						 (__mmask32) __U);
   1151 }
   1152 
   1153 extern __inline __m512i
   1154 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1155 _mm512_subs_epi16 (__m512i __A, __m512i __B)
   1156 {
   1157   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1158 						  (__v32hi) __B,
   1159 						  (__v32hi)
   1160 						  _mm512_setzero_si512 (),
   1161 						  (__mmask32) -1);
   1162 }
   1163 
   1164 extern __inline __m512i
   1165 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1166 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1167 			__m512i __B)
   1168 {
   1169   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1170 						  (__v32hi) __B,
   1171 						  (__v32hi) __W,
   1172 						  (__mmask32) __U);
   1173 }
   1174 
   1175 extern __inline __m512i
   1176 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1177 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1178 {
   1179   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1180 						  (__v32hi) __B,
   1181 						  (__v32hi)
   1182 						  _mm512_setzero_si512 (),
   1183 						  (__mmask32) __U);
   1184 }
   1185 
   1186 extern __inline __m512i
   1187 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1188 _mm512_subs_epu16 (__m512i __A, __m512i __B)
   1189 {
   1190   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1191 						   (__v32hi) __B,
   1192 						   (__v32hi)
   1193 						   _mm512_setzero_si512 (),
   1194 						   (__mmask32) -1);
   1195 }
   1196 
   1197 extern __inline __m512i
   1198 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1199 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1200 			__m512i __B)
   1201 {
   1202   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1203 						   (__v32hi) __B,
   1204 						   (__v32hi) __W,
   1205 						   (__mmask32) __U);
   1206 }
   1207 
   1208 extern __inline __m512i
   1209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1210 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1211 {
   1212   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1213 						   (__v32hi) __B,
   1214 						   (__v32hi)
   1215 						   _mm512_setzero_si512 (),
   1216 						   (__mmask32) __U);
   1217 }
   1218 
   1219 extern __inline __m512i
   1220 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1221 _mm512_add_epi16 (__m512i __A, __m512i __B)
   1222 {
   1223   return (__m512i) ((__v32hu) __A + (__v32hu) __B);
   1224 }
   1225 
   1226 extern __inline __m512i
   1227 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1228 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1229 		       __m512i __B)
   1230 {
   1231   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
   1232 						 (__v32hi) __B,
   1233 						 (__v32hi) __W,
   1234 						 (__mmask32) __U);
   1235 }
   1236 
   1237 extern __inline __m512i
   1238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1239 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1240 {
   1241   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
   1242 						 (__v32hi) __B,
   1243 						 (__v32hi)
   1244 						 _mm512_setzero_si512 (),
   1245 						 (__mmask32) __U);
   1246 }
   1247 
   1248 extern __inline __m512i
   1249 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1250 _mm512_adds_epi16 (__m512i __A, __m512i __B)
   1251 {
   1252   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
   1253 						  (__v32hi) __B,
   1254 						  (__v32hi)
   1255 						  _mm512_setzero_si512 (),
   1256 						  (__mmask32) -1);
   1257 }
   1258 
   1259 extern __inline __m512i
   1260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1261 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1262 			__m512i __B)
   1263 {
   1264   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
   1265 						  (__v32hi) __B,
   1266 						  (__v32hi) __W,
   1267 						  (__mmask32) __U);
   1268 }
   1269 
   1270 extern __inline __m512i
   1271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1272 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1273 {
   1274   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
   1275 						  (__v32hi) __B,
   1276 						  (__v32hi)
   1277 						  _mm512_setzero_si512 (),
   1278 						  (__mmask32) __U);
   1279 }
   1280 
   1281 extern __inline __m512i
   1282 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1283 _mm512_adds_epu16 (__m512i __A, __m512i __B)
   1284 {
   1285   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
   1286 						   (__v32hi) __B,
   1287 						   (__v32hi)
   1288 						   _mm512_setzero_si512 (),
   1289 						   (__mmask32) -1);
   1290 }
   1291 
   1292 extern __inline __m512i
   1293 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1294 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1295 			__m512i __B)
   1296 {
   1297   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
   1298 						   (__v32hi) __B,
   1299 						   (__v32hi) __W,
   1300 						   (__mmask32) __U);
   1301 }
   1302 
   1303 extern __inline __m512i
   1304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1305 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1306 {
   1307   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
   1308 						   (__v32hi) __B,
   1309 						   (__v32hi)
   1310 						   _mm512_setzero_si512 (),
   1311 						   (__mmask32) __U);
   1312 }
   1313 
   1314 extern __inline __m512i
   1315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1316 _mm512_srl_epi16 (__m512i __A, __m128i __B)
   1317 {
   1318   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
   1319 						 (__v8hi) __B,
   1320 						 (__v32hi)
   1321 						 _mm512_setzero_si512 (),
   1322 						 (__mmask32) -1);
   1323 }
   1324 
   1325 extern __inline __m512i
   1326 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1327 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1328 		       __m128i __B)
   1329 {
   1330   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
   1331 						 (__v8hi) __B,
   1332 						 (__v32hi) __W,
   1333 						 (__mmask32) __U);
   1334 }
   1335 
   1336 extern __inline __m512i
   1337 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1338 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
   1339 {
   1340   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
   1341 						 (__v8hi) __B,
   1342 						 (__v32hi)
   1343 						 _mm512_setzero_si512 (),
   1344 						 (__mmask32) __U);
   1345 }
   1346 
   1347 extern __inline __m512i
   1348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1349 _mm512_packs_epi16 (__m512i __A, __m512i __B)
   1350 {
   1351   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
   1352 						    (__v32hi) __B,
   1353 						    (__v64qi)
   1354 						    _mm512_setzero_si512 (),
   1355 						    (__mmask64) -1);
   1356 }
   1357 
   1358 extern __inline __m512i
   1359 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1360 _mm512_sll_epi16 (__m512i __A, __m128i __B)
   1361 {
   1362   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
   1363 						 (__v8hi) __B,
   1364 						 (__v32hi)
   1365 						 _mm512_setzero_si512 (),
   1366 						 (__mmask32) -1);
   1367 }
   1368 
   1369 extern __inline __m512i
   1370 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1371 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1372 		       __m128i __B)
   1373 {
   1374   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
   1375 						 (__v8hi) __B,
   1376 						 (__v32hi) __W,
   1377 						 (__mmask32) __U);
   1378 }
   1379 
   1380 extern __inline __m512i
   1381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1382 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
   1383 {
   1384   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
   1385 						 (__v8hi) __B,
   1386 						 (__v32hi)
   1387 						 _mm512_setzero_si512 (),
   1388 						 (__mmask32) __U);
   1389 }
   1390 
   1391 extern __inline __m512i
   1392 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1393 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
   1394 {
   1395   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1396 						     (__v64qi) __Y,
   1397 						     (__v32hi)
   1398 						     _mm512_setzero_si512 (),
   1399 						     (__mmask32) -1);
   1400 }
   1401 
   1402 extern __inline __m512i
   1403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1404 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
   1405 			   __m512i __Y)
   1406 {
   1407   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1408 						     (__v64qi) __Y,
   1409 						     (__v32hi) __W,
   1410 						     (__mmask32) __U);
   1411 }
   1412 
   1413 extern __inline __m512i
   1414 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1415 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
   1416 {
   1417   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1418 						     (__v64qi) __Y,
   1419 						     (__v32hi)
   1420 						     _mm512_setzero_si512 (),
   1421 						     (__mmask32) __U);
   1422 }
   1423 
   1424 extern __inline __m512i
   1425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1426 _mm512_madd_epi16 (__m512i __A, __m512i __B)
   1427 {
   1428   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1429 						   (__v32hi) __B,
   1430 						   (__v16si)
   1431 						   _mm512_setzero_si512 (),
   1432 						   (__mmask16) -1);
   1433 }
   1434 
   1435 extern __inline __m512i
   1436 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1437 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
   1438 			__m512i __B)
   1439 {
   1440   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1441 						   (__v32hi) __B,
   1442 						   (__v16si) __W,
   1443 						   (__mmask16) __U);
   1444 }
   1445 
   1446 extern __inline __m512i
   1447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1448 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
   1449 {
   1450   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1451 						   (__v32hi) __B,
   1452 						   (__v16si)
   1453 						   _mm512_setzero_si512 (),
   1454 						   (__mmask16) __U);
   1455 }
   1456 
   1457 extern __inline __m512i
   1458 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1459 _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
   1460 {
   1461   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
   1462 						     (__v64qi) __B,
   1463 						     (__v64qi)
   1464 						     _mm512_setzero_si512 (),
   1465 						     (__mmask64) -1);
   1466 }
   1467 
   1468 extern __inline __m512i
   1469 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1470 _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1471 			   __m512i __B)
   1472 {
   1473   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
   1474 						     (__v64qi) __B,
   1475 						     (__v64qi) __W,
   1476 						     (__mmask64) __U);
   1477 }
   1478 
   1479 extern __inline __m512i
   1480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1481 _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1482 {
   1483   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
   1484 						     (__v64qi) __B,
   1485 						     (__v64qi)
   1486 						     _mm512_setzero_si512 (),
   1487 						     (__mmask64) __U);
   1488 }
   1489 
   1490 extern __inline __m512i
   1491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1492 _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
   1493 {
   1494   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
   1495 						     (__v32hi) __B,
   1496 						     (__v32hi)
   1497 						     _mm512_setzero_si512 (),
   1498 						     (__mmask32) -1);
   1499 }
   1500 
   1501 extern __inline __m512i
   1502 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1503 _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1504 			    __m512i __B)
   1505 {
   1506   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
   1507 						     (__v32hi) __B,
   1508 						     (__v32hi) __W,
   1509 						     (__mmask32) __U);
   1510 }
   1511 
   1512 extern __inline __m512i
   1513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1514 _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1515 {
   1516   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
   1517 						     (__v32hi) __B,
   1518 						     (__v32hi)
   1519 						     _mm512_setzero_si512 (),
   1520 						     (__mmask32) __U);
   1521 }
   1522 
   1523 extern __inline __m512i
   1524 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1525 _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
   1526 {
   1527   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
   1528 						     (__v64qi) __B,
   1529 						     (__v64qi)
   1530 						     _mm512_setzero_si512 (),
   1531 						     (__mmask64) -1);
   1532 }
   1533 
   1534 extern __inline __m512i
   1535 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1536 _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1537 			   __m512i __B)
   1538 {
   1539   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
   1540 						     (__v64qi) __B,
   1541 						     (__v64qi) __W,
   1542 						     (__mmask64) __U);
   1543 }
   1544 
   1545 extern __inline __m512i
   1546 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1547 _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1548 {
   1549   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
   1550 						     (__v64qi) __B,
   1551 						     (__v64qi)
   1552 						     _mm512_setzero_si512 (),
   1553 						     (__mmask64) __U);
   1554 }
   1555 
   1556 extern __inline __m512i
   1557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1558 _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
   1559 {
   1560   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
   1561 						     (__v32hi) __B,
   1562 						     (__v32hi)
   1563 						     _mm512_setzero_si512 (),
   1564 						     (__mmask32) -1);
   1565 }
   1566 
   1567 extern __inline __m512i
   1568 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1569 _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1570 			    __m512i __B)
   1571 {
   1572   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
   1573 						     (__v32hi) __B,
   1574 						     (__v32hi) __W,
   1575 						     (__mmask32) __U);
   1576 }
   1577 
   1578 extern __inline __m512i
   1579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1580 _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1581 {
   1582   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
   1583 						     (__v32hi) __B,
   1584 						     (__v32hi)
   1585 						     _mm512_setzero_si512 (),
   1586 						     (__mmask32) __U);
   1587 }
   1588 
   1589 extern __inline __mmask64
   1590 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1591 _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
   1592 {
   1593   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
   1594 						    (__v64qi) __B, 0,
   1595 						    (__mmask64) -1);
   1596 }
   1597 
   1598 extern __inline __mmask64
   1599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1600 _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
   1601 {
   1602   return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
   1603 						     (__v64qi) __B,
   1604 						     (__mmask64) -1);
   1605 }
   1606 
   1607 extern __inline __mmask64
   1608 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1609 _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   1610 {
   1611   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
   1612 						    (__v64qi) __B, 0,
   1613 						    __U);
   1614 }
   1615 
   1616 extern __inline __mmask64
   1617 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1618 _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   1619 {
   1620   return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
   1621 						     (__v64qi) __B,
   1622 						     __U);
   1623 }
   1624 
   1625 extern __inline __mmask32
   1626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1627 _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
   1628 {
   1629   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
   1630 						    (__v32hi) __B, 0,
   1631 						    (__mmask32) -1);
   1632 }
   1633 
   1634 extern __inline __mmask32
   1635 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1636 _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
   1637 {
   1638   return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
   1639 						     (__v32hi) __B,
   1640 						     (__mmask32) -1);
   1641 }
   1642 
   1643 extern __inline __mmask32
   1644 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1645 _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   1646 {
   1647   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
   1648 						    (__v32hi) __B, 0,
   1649 						    __U);
   1650 }
   1651 
   1652 extern __inline __mmask32
   1653 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1654 _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   1655 {
   1656   return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
   1657 						     (__v32hi) __B,
   1658 						     __U);
   1659 }
   1660 
   1661 extern __inline __mmask64
   1662 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1663 _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
   1664 {
   1665   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
   1666 						    (__v64qi) __B, 6,
   1667 						    (__mmask64) -1);
   1668 }
   1669 
   1670 extern __inline __mmask64
   1671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1672 _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
   1673 {
   1674   return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
   1675 						     (__v64qi) __B,
   1676 						     (__mmask64) -1);
   1677 }
   1678 
   1679 extern __inline __mmask64
   1680 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1681 _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   1682 {
   1683   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
   1684 						    (__v64qi) __B, 6,
   1685 						    __U);
   1686 }
   1687 
   1688 extern __inline __mmask64
   1689 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1690 _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   1691 {
   1692   return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
   1693 						     (__v64qi) __B,
   1694 						     __U);
   1695 }
   1696 
   1697 extern __inline __mmask32
   1698 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1699 _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
   1700 {
   1701   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
   1702 						    (__v32hi) __B, 6,
   1703 						    (__mmask32) -1);
   1704 }
   1705 
   1706 extern __inline __mmask32
   1707 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1708 _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
   1709 {
   1710   return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
   1711 						     (__v32hi) __B,
   1712 						     (__mmask32) -1);
   1713 }
   1714 
   1715 extern __inline __mmask32
   1716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1717 _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   1718 {
   1719   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
   1720 						    (__v32hi) __B, 6,
   1721 						    __U);
   1722 }
   1723 
   1724 extern __inline __mmask32
   1725 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1726 _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   1727 {
   1728   return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
   1729 						     (__v32hi) __B,
   1730 						     __U);
   1731 }
   1732 
   1733 extern __inline __mmask64
   1734 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1735 _mm512_movepi8_mask (__m512i __A)
   1736 {
   1737   return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
   1738 }
   1739 
   1740 extern __inline __mmask32
   1741 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1742 _mm512_movepi16_mask (__m512i __A)
   1743 {
   1744   return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
   1745 }
   1746 
   1747 extern __inline __m512i
   1748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1749 _mm512_movm_epi8 (__mmask64 __A)
   1750 {
   1751   return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
   1752 }
   1753 
   1754 extern __inline __m512i
   1755 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1756 _mm512_movm_epi16 (__mmask32 __A)
   1757 {
   1758   return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
   1759 }
   1760 
   1761 extern __inline __mmask64
   1762 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1763 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
   1764 {
   1765   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
   1766 						(__v64qi) __B,
   1767 						(__mmask64) -1);
   1768 }
   1769 
   1770 extern __inline __mmask64
   1771 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1772 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   1773 {
   1774   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
   1775 						(__v64qi) __B, __U);
   1776 }
   1777 
   1778 extern __inline __mmask32
   1779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1780 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
   1781 {
   1782   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
   1783 						(__v32hi) __B,
   1784 						(__mmask32) -1);
   1785 }
   1786 
   1787 extern __inline __mmask32
   1788 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1789 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   1790 {
   1791   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
   1792 						(__v32hi) __B, __U);
   1793 }
   1794 
   1795 extern __inline __mmask64
   1796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1797 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
   1798 {
   1799   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
   1800 						 (__v64qi) __B,
   1801 						 (__mmask64) -1);
   1802 }
   1803 
   1804 extern __inline __mmask64
   1805 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1806 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   1807 {
   1808   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
   1809 						 (__v64qi) __B, __U);
   1810 }
   1811 
   1812 extern __inline __mmask32
   1813 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1814 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
   1815 {
   1816   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
   1817 						 (__v32hi) __B,
   1818 						 (__mmask32) -1);
   1819 }
   1820 
   1821 extern __inline __mmask32
   1822 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1823 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   1824 {
   1825   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
   1826 						 (__v32hi) __B, __U);
   1827 }
   1828 
   1829 extern __inline __m512i
   1830 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1831 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
   1832 {
   1833   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1834 						  (__v64qi) __B,
   1835 						  (__v64qi)
   1836 						  _mm512_setzero_si512 (),
   1837 						  (__mmask64) -1);
   1838 }
   1839 
   1840 extern __inline __m512i
   1841 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1842 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1843 			  __m512i __B)
   1844 {
   1845   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1846 						  (__v64qi) __B,
   1847 						  (__v64qi) __W,
   1848 						  (__mmask64) __U);
   1849 }
   1850 
   1851 extern __inline __m512i
   1852 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1853 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1854 {
   1855   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1856 						  (__v64qi) __B,
   1857 						  (__v64qi)
   1858 						  _mm512_setzero_si512 (),
   1859 						  (__mmask64) __U);
   1860 }
   1861 
   1862 extern __inline __m512i
   1863 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1864 _mm512_min_epu16 (__m512i __A, __m512i __B)
   1865 {
   1866   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
   1867 						  (__v32hi) __B,
   1868 						  (__v32hi)
   1869 						  _mm512_setzero_si512 (),
   1870 						  (__mmask32) -1);
   1871 }
   1872 
   1873 extern __inline __m512i
   1874 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1875 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
   1876 {
   1877   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
   1878 						  (__v32hi) __B,
   1879 						  (__v32hi)
   1880 						  _mm512_setzero_si512 (),
   1881 						  (__mmask32) __M);
   1882 }
   1883 
   1884 extern __inline __m512i
   1885 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1886 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
   1887 		       __m512i __B)
   1888 {
   1889   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
   1890 						  (__v32hi) __B,
   1891 						  (__v32hi) __W,
   1892 						  (__mmask32) __M);
   1893 }
   1894 
   1895 extern __inline __m512i
   1896 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1897 _mm512_min_epi16 (__m512i __A, __m512i __B)
   1898 {
   1899   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
   1900 						  (__v32hi) __B,
   1901 						  (__v32hi)
   1902 						  _mm512_setzero_si512 (),
   1903 						  (__mmask32) -1);
   1904 }
   1905 
   1906 extern __inline __m512i
   1907 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1908 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
   1909 {
   1910   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
   1911 						  (__v32hi) __B,
   1912 						  (__v32hi)
   1913 						  _mm512_setzero_si512 (),
   1914 						  (__mmask32) __M);
   1915 }
   1916 
   1917 extern __inline __m512i
   1918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1919 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
   1920 		       __m512i __B)
   1921 {
   1922   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
   1923 						  (__v32hi) __B,
   1924 						  (__v32hi) __W,
   1925 						  (__mmask32) __M);
   1926 }
   1927 
   1928 extern __inline __m512i
   1929 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1930 _mm512_max_epu8 (__m512i __A, __m512i __B)
   1931 {
   1932   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
   1933 						  (__v64qi) __B,
   1934 						  (__v64qi)
   1935 						  _mm512_setzero_si512 (),
   1936 						  (__mmask64) -1);
   1937 }
   1938 
   1939 extern __inline __m512i
   1940 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1941 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
   1942 {
   1943   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
   1944 						  (__v64qi) __B,
   1945 						  (__v64qi)
   1946 						  _mm512_setzero_si512 (),
   1947 						  (__mmask64) __M);
   1948 }
   1949 
   1950 extern __inline __m512i
   1951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1952 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
   1953 		      __m512i __B)
   1954 {
   1955   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
   1956 						  (__v64qi) __B,
   1957 						  (__v64qi) __W,
   1958 						  (__mmask64) __M);
   1959 }
   1960 
   1961 extern __inline __m512i
   1962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1963 _mm512_max_epi8 (__m512i __A, __m512i __B)
   1964 {
   1965   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
   1966 						  (__v64qi) __B,
   1967 						  (__v64qi)
   1968 						  _mm512_setzero_si512 (),
   1969 						  (__mmask64) -1);
   1970 }
   1971 
   1972 extern __inline __m512i
   1973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1974 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
   1975 {
   1976   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
   1977 						  (__v64qi) __B,
   1978 						  (__v64qi)
   1979 						  _mm512_setzero_si512 (),
   1980 						  (__mmask64) __M);
   1981 }
   1982 
   1983 extern __inline __m512i
   1984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1985 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
   1986 		      __m512i __B)
   1987 {
   1988   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
   1989 						  (__v64qi) __B,
   1990 						  (__v64qi) __W,
   1991 						  (__mmask64) __M);
   1992 }
   1993 
   1994 extern __inline __m512i
   1995 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   1996 _mm512_min_epu8 (__m512i __A, __m512i __B)
   1997 {
   1998   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
   1999 						  (__v64qi) __B,
   2000 						  (__v64qi)
   2001 						  _mm512_setzero_si512 (),
   2002 						  (__mmask64) -1);
   2003 }
   2004 
   2005 extern __inline __m512i
   2006 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2007 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
   2008 {
   2009   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
   2010 						  (__v64qi) __B,
   2011 						  (__v64qi)
   2012 						  _mm512_setzero_si512 (),
   2013 						  (__mmask64) __M);
   2014 }
   2015 
   2016 extern __inline __m512i
   2017 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2018 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
   2019 		      __m512i __B)
   2020 {
   2021   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
   2022 						  (__v64qi) __B,
   2023 						  (__v64qi) __W,
   2024 						  (__mmask64) __M);
   2025 }
   2026 
   2027 extern __inline __m512i
   2028 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2029 _mm512_min_epi8 (__m512i __A, __m512i __B)
   2030 {
   2031   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
   2032 						  (__v64qi) __B,
   2033 						  (__v64qi)
   2034 						  _mm512_setzero_si512 (),
   2035 						  (__mmask64) -1);
   2036 }
   2037 
   2038 extern __inline __m512i
   2039 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2040 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
   2041 {
   2042   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
   2043 						  (__v64qi) __B,
   2044 						  (__v64qi)
   2045 						  _mm512_setzero_si512 (),
   2046 						  (__mmask64) __M);
   2047 }
   2048 
   2049 extern __inline __m512i
   2050 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2051 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
   2052 		      __m512i __B)
   2053 {
   2054   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
   2055 						  (__v64qi) __B,
   2056 						  (__v64qi) __W,
   2057 						  (__mmask64) __M);
   2058 }
   2059 
   2060 extern __inline __m512i
   2061 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2062 _mm512_max_epi16 (__m512i __A, __m512i __B)
   2063 {
   2064   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
   2065 						  (__v32hi) __B,
   2066 						  (__v32hi)
   2067 						  _mm512_setzero_si512 (),
   2068 						  (__mmask32) -1);
   2069 }
   2070 
   2071 extern __inline __m512i
   2072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2073 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
   2074 {
   2075   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
   2076 						  (__v32hi) __B,
   2077 						  (__v32hi)
   2078 						  _mm512_setzero_si512 (),
   2079 						  (__mmask32) __M);
   2080 }
   2081 
   2082 extern __inline __m512i
   2083 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2084 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
   2085 		       __m512i __B)
   2086 {
   2087   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
   2088 						  (__v32hi) __B,
   2089 						  (__v32hi) __W,
   2090 						  (__mmask32) __M);
   2091 }
   2092 
   2093 extern __inline __m512i
   2094 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2095 _mm512_max_epu16 (__m512i __A, __m512i __B)
   2096 {
   2097   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
   2098 						  (__v32hi) __B,
   2099 						  (__v32hi)
   2100 						  _mm512_setzero_si512 (),
   2101 						  (__mmask32) -1);
   2102 }
   2103 
   2104 extern __inline __m512i
   2105 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2106 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
   2107 {
   2108   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
   2109 						  (__v32hi) __B,
   2110 						  (__v32hi)
   2111 						  _mm512_setzero_si512 (),
   2112 						  (__mmask32) __M);
   2113 }
   2114 
   2115 extern __inline __m512i
   2116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2117 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
   2118 		       __m512i __B)
   2119 {
   2120   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
   2121 						  (__v32hi) __B,
   2122 						  (__v32hi) __W,
   2123 						  (__mmask32) __M);
   2124 }
   2125 
   2126 extern __inline __m512i
   2127 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2128 _mm512_sra_epi16 (__m512i __A, __m128i __B)
   2129 {
   2130   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
   2131 						 (__v8hi) __B,
   2132 						 (__v32hi)
   2133 						 _mm512_setzero_si512 (),
   2134 						 (__mmask32) -1);
   2135 }
   2136 
   2137 extern __inline __m512i
   2138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2139 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2140 		       __m128i __B)
   2141 {
   2142   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
   2143 						 (__v8hi) __B,
   2144 						 (__v32hi) __W,
   2145 						 (__mmask32) __U);
   2146 }
   2147 
   2148 extern __inline __m512i
   2149 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2150 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
   2151 {
   2152   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
   2153 						 (__v8hi) __B,
   2154 						 (__v32hi)
   2155 						 _mm512_setzero_si512 (),
   2156 						 (__mmask32) __U);
   2157 }
   2158 
   2159 extern __inline __m512i
   2160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2161 _mm512_srav_epi16 (__m512i __A, __m512i __B)
   2162 {
   2163   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
   2164 						  (__v32hi) __B,
   2165 						  (__v32hi)
   2166 						  _mm512_setzero_si512 (),
   2167 						  (__mmask32) -1);
   2168 }
   2169 
   2170 extern __inline __m512i
   2171 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2172 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2173 			__m512i __B)
   2174 {
   2175   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
   2176 						  (__v32hi) __B,
   2177 						  (__v32hi) __W,
   2178 						  (__mmask32) __U);
   2179 }
   2180 
   2181 extern __inline __m512i
   2182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2183 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   2184 {
   2185   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
   2186 						  (__v32hi) __B,
   2187 						  (__v32hi)
   2188 						  _mm512_setzero_si512 (),
   2189 						  (__mmask32) __U);
   2190 }
   2191 
   2192 extern __inline __m512i
   2193 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2194 _mm512_srlv_epi16 (__m512i __A, __m512i __B)
   2195 {
   2196   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
   2197 						  (__v32hi) __B,
   2198 						  (__v32hi)
   2199 						  _mm512_setzero_si512 (),
   2200 						  (__mmask32) -1);
   2201 }
   2202 
   2203 extern __inline __m512i
   2204 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2205 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2206 			__m512i __B)
   2207 {
   2208   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
   2209 						  (__v32hi) __B,
   2210 						  (__v32hi) __W,
   2211 						  (__mmask32) __U);
   2212 }
   2213 
   2214 extern __inline __m512i
   2215 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2216 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   2217 {
   2218   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
   2219 						  (__v32hi) __B,
   2220 						  (__v32hi)
   2221 						  _mm512_setzero_si512 (),
   2222 						  (__mmask32) __U);
   2223 }
   2224 
   2225 extern __inline __m512i
   2226 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2227 _mm512_sllv_epi16 (__m512i __A, __m512i __B)
   2228 {
   2229   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
   2230 						  (__v32hi) __B,
   2231 						  (__v32hi)
   2232 						  _mm512_setzero_si512 (),
   2233 						  (__mmask32) -1);
   2234 }
   2235 
   2236 extern __inline __m512i
   2237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2238 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2239 			__m512i __B)
   2240 {
   2241   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
   2242 						  (__v32hi) __B,
   2243 						  (__v32hi) __W,
   2244 						  (__mmask32) __U);
   2245 }
   2246 
   2247 extern __inline __m512i
   2248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2249 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   2250 {
   2251   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
   2252 						  (__v32hi) __B,
   2253 						  (__v32hi)
   2254 						  _mm512_setzero_si512 (),
   2255 						  (__mmask32) __U);
   2256 }
   2257 
   2258 extern __inline __m512i
   2259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2260 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
   2261 			 __m512i __B)
   2262 {
   2263   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
   2264 						    (__v32hi) __B,
   2265 						    (__v64qi) __W,
   2266 						    (__mmask64) __M);
   2267 }
   2268 
   2269 extern __inline __m512i
   2270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2271 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
   2272 {
   2273   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
   2274 						    (__v32hi) __B,
   2275 						    (__v64qi)
   2276 						    _mm512_setzero_si512 (),
   2277 						    __M);
   2278 }
   2279 
   2280 extern __inline __m512i
   2281 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2282 _mm512_packus_epi16 (__m512i __A, __m512i __B)
   2283 {
   2284   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
   2285 						    (__v32hi) __B,
   2286 						    (__v64qi)
   2287 						    _mm512_setzero_si512 (),
   2288 						    (__mmask64) -1);
   2289 }
   2290 
   2291 extern __inline __m512i
   2292 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2293 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
   2294 			  __m512i __B)
   2295 {
   2296   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
   2297 						    (__v32hi) __B,
   2298 						    (__v64qi) __W,
   2299 						    (__mmask64) __M);
   2300 }
   2301 
   2302 extern __inline __m512i
   2303 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2304 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
   2305 {
   2306   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
   2307 						    (__v32hi) __B,
   2308 						    (__v64qi)
   2309 						    _mm512_setzero_si512 (),
   2310 						    (__mmask64) __M);
   2311 }
   2312 
   2313 extern __inline __m512i
   2314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2315 _mm512_abs_epi8 (__m512i __A)
   2316 {
   2317   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
   2318 						 (__v64qi)
   2319 						 _mm512_setzero_si512 (),
   2320 						 (__mmask64) -1);
   2321 }
   2322 
   2323 extern __inline __m512i
   2324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2325 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
   2326 {
   2327   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
   2328 						 (__v64qi) __W,
   2329 						 (__mmask64) __U);
   2330 }
   2331 
   2332 extern __inline __m512i
   2333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2334 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
   2335 {
   2336   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
   2337 						 (__v64qi)
   2338 						 _mm512_setzero_si512 (),
   2339 						 (__mmask64) __U);
   2340 }
   2341 
   2342 extern __inline __m512i
   2343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2344 _mm512_abs_epi16 (__m512i __A)
   2345 {
   2346   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
   2347 						 (__v32hi)
   2348 						 _mm512_setzero_si512 (),
   2349 						 (__mmask32) -1);
   2350 }
   2351 
   2352 extern __inline __m512i
   2353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2354 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
   2355 {
   2356   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
   2357 						 (__v32hi) __W,
   2358 						 (__mmask32) __U);
   2359 }
   2360 
   2361 extern __inline __m512i
   2362 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2363 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
   2364 {
   2365   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
   2366 						 (__v32hi)
   2367 						 _mm512_setzero_si512 (),
   2368 						 (__mmask32) __U);
   2369 }
   2370 
   2371 extern __inline __mmask64
   2372 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2373 _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2374 {
   2375   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2376 						   (__v64qi) __Y, 4,
   2377 						   (__mmask64) __M);
   2378 }
   2379 
   2380 extern __inline __mmask64
   2381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2382 _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2383 {
   2384   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2385 						   (__v64qi) __Y, 1,
   2386 						   (__mmask64) __M);
   2387 }
   2388 
   2389 extern __inline __mmask64
   2390 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2391 _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2392 {
   2393   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2394 						   (__v64qi) __Y, 5,
   2395 						   (__mmask64) __M);
   2396 }
   2397 
   2398 extern __inline __mmask64
   2399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2400 _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2401 {
   2402   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2403 						   (__v64qi) __Y, 2,
   2404 						   (__mmask64) __M);
   2405 }
   2406 
   2407 extern __inline __mmask32
   2408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2409 _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2410 {
   2411   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2412 						   (__v32hi) __Y, 4,
   2413 						   (__mmask32) __M);
   2414 }
   2415 
   2416 extern __inline __mmask32
   2417 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2418 _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2419 {
   2420   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2421 						   (__v32hi) __Y, 1,
   2422 						   (__mmask32) __M);
   2423 }
   2424 
   2425 extern __inline __mmask32
   2426 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2427 _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2428 {
   2429   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2430 						   (__v32hi) __Y, 5,
   2431 						   (__mmask32) __M);
   2432 }
   2433 
   2434 extern __inline __mmask32
   2435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2436 _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2437 {
   2438   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2439 						   (__v32hi) __Y, 2,
   2440 						   (__mmask32) __M);
   2441 }
   2442 
   2443 extern __inline __mmask64
   2444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2445 _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2446 {
   2447   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2448 						  (__v64qi) __Y, 4,
   2449 						  (__mmask64) __M);
   2450 }
   2451 
   2452 extern __inline __mmask64
   2453 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2454 _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2455 {
   2456   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2457 						  (__v64qi) __Y, 1,
   2458 						  (__mmask64) __M);
   2459 }
   2460 
   2461 extern __inline __mmask64
   2462 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2463 _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2464 {
   2465   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2466 						  (__v64qi) __Y, 5,
   2467 						  (__mmask64) __M);
   2468 }
   2469 
   2470 extern __inline __mmask64
   2471 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2472 _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
   2473 {
   2474   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2475 						  (__v64qi) __Y, 2,
   2476 						  (__mmask64) __M);
   2477 }
   2478 
   2479 extern __inline __mmask32
   2480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2481 _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2482 {
   2483   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2484 						  (__v32hi) __Y, 4,
   2485 						  (__mmask32) __M);
   2486 }
   2487 
   2488 extern __inline __mmask32
   2489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2490 _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2491 {
   2492   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2493 						  (__v32hi) __Y, 1,
   2494 						  (__mmask32) __M);
   2495 }
   2496 
   2497 extern __inline __mmask32
   2498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2499 _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2500 {
   2501   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2502 						  (__v32hi) __Y, 5,
   2503 						  (__mmask32) __M);
   2504 }
   2505 
   2506 extern __inline __mmask32
   2507 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2508 _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
   2509 {
   2510   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2511 						  (__v32hi) __Y, 2,
   2512 						  (__mmask32) __M);
   2513 }
   2514 
   2515 extern __inline __mmask64
   2516 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2517 _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
   2518 {
   2519   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2520 						   (__v64qi) __Y, 4,
   2521 						   (__mmask64) -1);
   2522 }
   2523 
   2524 extern __inline __mmask64
   2525 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2526 _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
   2527 {
   2528   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2529 						   (__v64qi) __Y, 1,
   2530 						   (__mmask64) -1);
   2531 }
   2532 
   2533 extern __inline __mmask64
   2534 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2535 _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
   2536 {
   2537   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2538 						   (__v64qi) __Y, 5,
   2539 						   (__mmask64) -1);
   2540 }
   2541 
   2542 extern __inline __mmask64
   2543 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2544 _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
   2545 {
   2546   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   2547 						   (__v64qi) __Y, 2,
   2548 						   (__mmask64) -1);
   2549 }
   2550 
   2551 extern __inline __mmask32
   2552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2553 _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
   2554 {
   2555   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2556 						   (__v32hi) __Y, 4,
   2557 						   (__mmask32) -1);
   2558 }
   2559 
   2560 extern __inline __mmask32
   2561 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2562 _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
   2563 {
   2564   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2565 						   (__v32hi) __Y, 1,
   2566 						   (__mmask32) -1);
   2567 }
   2568 
   2569 extern __inline __mmask32
   2570 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2571 _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
   2572 {
   2573   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2574 						   (__v32hi) __Y, 5,
   2575 						   (__mmask32) -1);
   2576 }
   2577 
   2578 extern __inline __mmask32
   2579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2580 _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
   2581 {
   2582   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   2583 						   (__v32hi) __Y, 2,
   2584 						   (__mmask32) -1);
   2585 }
   2586 
   2587 extern __inline __mmask64
   2588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2589 _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
   2590 {
   2591   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2592 						  (__v64qi) __Y, 4,
   2593 						  (__mmask64) -1);
   2594 }
   2595 
   2596 extern __inline __mmask64
   2597 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2598 _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
   2599 {
   2600   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2601 						  (__v64qi) __Y, 1,
   2602 						  (__mmask64) -1);
   2603 }
   2604 
   2605 extern __inline __mmask64
   2606 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2607 _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
   2608 {
   2609   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2610 						  (__v64qi) __Y, 5,
   2611 						  (__mmask64) -1);
   2612 }
   2613 
   2614 extern __inline __mmask64
   2615 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2616 _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
   2617 {
   2618   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   2619 						  (__v64qi) __Y, 2,
   2620 						  (__mmask64) -1);
   2621 }
   2622 
   2623 extern __inline __mmask32
   2624 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2625 _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
   2626 {
   2627   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2628 						  (__v32hi) __Y, 4,
   2629 						  (__mmask32) -1);
   2630 }
   2631 
   2632 extern __inline __mmask32
   2633 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2634 _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
   2635 {
   2636   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2637 						  (__v32hi) __Y, 1,
   2638 						  (__mmask32) -1);
   2639 }
   2640 
   2641 extern __inline __mmask32
   2642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2643 _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
   2644 {
   2645   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2646 						  (__v32hi) __Y, 5,
   2647 						  (__mmask32) -1);
   2648 }
   2649 
   2650 extern __inline __mmask32
   2651 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2652 _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
   2653 {
   2654   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   2655 						  (__v32hi) __Y, 2,
   2656 						  (__mmask32) -1);
   2657 }
   2658 
   2659 extern __inline __m512i
   2660 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2661 _mm512_packs_epi32 (__m512i __A, __m512i __B)
   2662 {
   2663   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
   2664 						    (__v16si) __B,
   2665 						    (__v32hi)
   2666 						    _mm512_setzero_si512 (),
   2667 						    (__mmask32) -1);
   2668 }
   2669 
   2670 extern __inline __m512i
   2671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2672 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
   2673 {
   2674   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
   2675 						    (__v16si) __B,
   2676 						    (__v32hi)
   2677 						    _mm512_setzero_si512 (),
   2678 						    __M);
   2679 }
   2680 
   2681 extern __inline __m512i
   2682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2683 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
   2684 			 __m512i __B)
   2685 {
   2686   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
   2687 						    (__v16si) __B,
   2688 						    (__v32hi) __W,
   2689 						    __M);
   2690 }
   2691 
   2692 extern __inline __m512i
   2693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2694 _mm512_packus_epi32 (__m512i __A, __m512i __B)
   2695 {
   2696   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
   2697 						    (__v16si) __B,
   2698 						    (__v32hi)
   2699 						    _mm512_setzero_si512 (),
   2700 						    (__mmask32) -1);
   2701 }
   2702 
   2703 extern __inline __m512i
   2704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2705 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
   2706 {
   2707   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
   2708 						    (__v16si) __B,
   2709 						    (__v32hi)
   2710 						    _mm512_setzero_si512 (),
   2711 						    __M);
   2712 }
   2713 
   2714 extern __inline __m512i
   2715 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2716 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
   2717 			  __m512i __B)
   2718 {
   2719   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
   2720 						    (__v16si) __B,
   2721 						    (__v32hi) __W,
   2722 						    __M);
   2723 }
   2724 
   2725 #ifdef __OPTIMIZE__
   2726 extern __inline __mmask32
   2727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2728 _kshiftli_mask32 (__mmask32 __A, unsigned int __B)
   2729 {
   2730   return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A,
   2731 						(__mmask8) __B);
   2732 }
   2733 
   2734 extern __inline __mmask64
   2735 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2736 _kshiftli_mask64 (__mmask64 __A, unsigned int __B)
   2737 {
   2738   return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A,
   2739 						(__mmask8) __B);
   2740 }
   2741 
   2742 extern __inline __mmask32
   2743 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2744 _kshiftri_mask32 (__mmask32 __A, unsigned int __B)
   2745 {
   2746   return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A,
   2747 						(__mmask8) __B);
   2748 }
   2749 
   2750 extern __inline __mmask64
   2751 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2752 _kshiftri_mask64 (__mmask64 __A, unsigned int __B)
   2753 {
   2754   return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A,
   2755 						(__mmask8) __B);
   2756 }
   2757 
   2758 extern __inline __m512i
   2759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2760 _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
   2761 {
   2762   return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
   2763 					      (__v8di) __B, __N * 8);
   2764 }
   2765 
   2766 extern __inline __m512i
   2767 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2768 _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   2769 			 __m512i __B, const int __N)
   2770 {
   2771   return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
   2772 						   (__v8di) __B,
   2773 						   __N * 8,
   2774 						   (__v8di) __W,
   2775 						   (__mmask64) __U);
   2776 }
   2777 
   2778 extern __inline __m512i
   2779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2780 _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
   2781 			  const int __N)
   2782 {
   2783   return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
   2784 						   (__v8di) __B,
   2785 						   __N * 8,
   2786 						   (__v8di)
   2787 						   _mm512_setzero_si512 (),
   2788 						   (__mmask64) __U);
   2789 }
   2790 
   2791 extern __inline __m512i
   2792 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2793 _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
   2794 {
   2795   return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
   2796 						    (__v64qi) __B,
   2797 						    __imm,
   2798 						    (__v32hi)
   2799 						    _mm512_setzero_si512 (),
   2800 						    (__mmask32) -1);
   2801 }
   2802 
   2803 extern __inline __m512i
   2804 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2805 _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
   2806 			__m512i __B, const int __imm)
   2807 {
   2808   return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
   2809 						    (__v64qi) __B,
   2810 						    __imm,
   2811 						    (__v32hi) __W,
   2812 						    (__mmask32) __U);
   2813 }
   2814 
   2815 extern __inline __m512i
   2816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2817 _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
   2818 			 const int __imm)
   2819 {
   2820   return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
   2821 						    (__v64qi) __B,
   2822 						    __imm,
   2823 						    (__v32hi)
   2824 						    _mm512_setzero_si512 (),
   2825 						    (__mmask32) __U);
   2826 }
   2827 
   2828 extern __inline __m512i
   2829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2830 _mm512_srli_epi16 (__m512i __A, const int __imm)
   2831 {
   2832   return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
   2833 						  (__v32hi)
   2834 						  _mm512_setzero_si512 (),
   2835 						  (__mmask32) -1);
   2836 }
   2837 
   2838 extern __inline __m512i
   2839 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2840 _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2841 			const int __imm)
   2842 {
   2843   return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
   2844 						  (__v32hi) __W,
   2845 						  (__mmask32) __U);
   2846 }
   2847 
   2848 extern __inline __m512i
   2849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2850 _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
   2851 {
   2852   return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
   2853 						  (__v32hi)
   2854 						  _mm512_setzero_si512 (),
   2855 						  (__mmask32) __U);
   2856 }
   2857 
   2858 extern __inline __m512i
   2859 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2860 _mm512_slli_epi16 (__m512i __A, const int __B)
   2861 {
   2862   return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
   2863 						  (__v32hi)
   2864 						  _mm512_setzero_si512 (),
   2865 						  (__mmask32) -1);
   2866 }
   2867 
   2868 extern __inline __m512i
   2869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2870 _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2871 			const int __B)
   2872 {
   2873   return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
   2874 						  (__v32hi) __W,
   2875 						  (__mmask32) __U);
   2876 }
   2877 
   2878 extern __inline __m512i
   2879 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2880 _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
   2881 {
   2882   return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
   2883 						  (__v32hi)
   2884 						  _mm512_setzero_si512 (),
   2885 						  (__mmask32) __U);
   2886 }
   2887 
   2888 extern __inline __m512i
   2889 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2890 _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
   2891 {
   2892   return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
   2893 						   __imm,
   2894 						   (__v32hi)
   2895 						   _mm512_setzero_si512 (),
   2896 						   (__mmask32) -1);
   2897 }
   2898 
   2899 extern __inline __m512i
   2900 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2901 _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2902 			     const int __imm)
   2903 {
   2904   return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
   2905 						   __imm,
   2906 						   (__v32hi) __W,
   2907 						   (__mmask32) __U);
   2908 }
   2909 
   2910 extern __inline __m512i
   2911 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2912 _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
   2913 			      const int __imm)
   2914 {
   2915   return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
   2916 						   __imm,
   2917 						   (__v32hi)
   2918 						   _mm512_setzero_si512 (),
   2919 						   (__mmask32) __U);
   2920 }
   2921 
   2922 extern __inline __m512i
   2923 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2924 _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
   2925 {
   2926   return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
   2927 						   __imm,
   2928 						   (__v32hi)
   2929 						   _mm512_setzero_si512 (),
   2930 						   (__mmask32) -1);
   2931 }
   2932 
   2933 extern __inline __m512i
   2934 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2935 _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2936 			     const int __imm)
   2937 {
   2938   return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
   2939 						   __imm,
   2940 						   (__v32hi) __W,
   2941 						   (__mmask32) __U);
   2942 }
   2943 
   2944 extern __inline __m512i
   2945 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2946 _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
   2947 			      const int __imm)
   2948 {
   2949   return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
   2950 						   __imm,
   2951 						   (__v32hi)
   2952 						   _mm512_setzero_si512 (),
   2953 						   (__mmask32) __U);
   2954 }
   2955 
   2956 extern __inline __m512i
   2957 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2958 _mm512_srai_epi16 (__m512i __A, const int __imm)
   2959 {
   2960   return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
   2961 						  (__v32hi)
   2962 						  _mm512_setzero_si512 (),
   2963 						  (__mmask32) -1);
   2964 }
   2965 
   2966 extern __inline __m512i
   2967 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2968 _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   2969 			const int __imm)
   2970 {
   2971   return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
   2972 						  (__v32hi) __W,
   2973 						  (__mmask32) __U);
   2974 }
   2975 
   2976 extern __inline __m512i
   2977 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2978 _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
   2979 {
   2980   return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
   2981 						  (__v32hi)
   2982 						  _mm512_setzero_si512 (),
   2983 						  (__mmask32) __U);
   2984 }
   2985 
   2986 extern __inline __m512i
   2987 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2988 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
   2989 {
   2990   return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
   2991 						    (__v32hi) __W,
   2992 						    (__mmask32) __U);
   2993 }
   2994 
   2995 extern __inline __m512i
   2996 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   2997 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
   2998 {
   2999   return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
   3000 						    (__v64qi) __W,
   3001 						    (__mmask64) __U);
   3002 }
   3003 
   3004 extern __inline __mmask32
   3005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3006 _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
   3007 			    const int __P)
   3008 {
   3009   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   3010 						  (__v32hi) __Y, __P,
   3011 						  (__mmask32) __U);
   3012 }
   3013 
   3014 extern __inline __mmask32
   3015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3016 _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
   3017 {
   3018   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
   3019 						  (__v32hi) __Y, __P,
   3020 						  (__mmask32) -1);
   3021 }
   3022 
   3023 extern __inline __mmask64
   3024 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3025 _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
   3026 			   const int __P)
   3027 {
   3028   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   3029 						  (__v64qi) __Y, __P,
   3030 						  (__mmask64) __U);
   3031 }
   3032 
   3033 extern __inline __mmask64
   3034 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3035 _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
   3036 {
   3037   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
   3038 						  (__v64qi) __Y, __P,
   3039 						  (__mmask64) -1);
   3040 }
   3041 
   3042 extern __inline __mmask32
   3043 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3044 _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
   3045 			    const int __P)
   3046 {
   3047   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   3048 						   (__v32hi) __Y, __P,
   3049 						   (__mmask32) __U);
   3050 }
   3051 
   3052 extern __inline __mmask32
   3053 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3054 _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
   3055 {
   3056   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
   3057 						   (__v32hi) __Y, __P,
   3058 						   (__mmask32) -1);
   3059 }
   3060 
   3061 extern __inline __mmask64
   3062 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3063 _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
   3064 			   const int __P)
   3065 {
   3066   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   3067 						   (__v64qi) __Y, __P,
   3068 						   (__mmask64) __U);
   3069 }
   3070 
   3071 extern __inline __mmask64
   3072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3073 _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
   3074 {
   3075   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
   3076 						   (__v64qi) __Y, __P,
   3077 						   (__mmask64) -1);
   3078 }
   3079 
   3080 extern __inline __m512i
   3081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3082 _mm512_bslli_epi128 (__m512i __A, const int __N)
   3083 {
   3084   return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
   3085 }
   3086 
   3087 extern __inline __m512i
   3088 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
   3089 _mm512_bsrli_epi128 (__m512i __A, const int __N)
   3090 {
   3091   return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
   3092 }
   3093 
   3094 #else
   3095 #define _kshiftli_mask32(X, Y)							\
   3096   ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y)))
   3097 
   3098 #define _kshiftli_mask64(X, Y)							\
   3099   ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y)))
   3100 
   3101 #define _kshiftri_mask32(X, Y)							\
   3102   ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y)))
   3103 
   3104 #define _kshiftri_mask64(X, Y)							\
   3105   ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y)))
   3106 
   3107 #define _mm512_alignr_epi8(X, Y, N)						    \
   3108   ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X),			    \
   3109 					(__v8di)(__m512i)(Y),			    \
   3110 					(int)(N * 8)))
   3111 
   3112 #define _mm512_mask_alignr_epi8(W, U, X, Y, N)					    \
   3113   ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X),		    \
   3114 					    (__v8di)(__m512i)(Y), (int)(N * 8),	    \
   3115 					    (__v8di)(__m512i)(W), (__mmask64)(U)))
   3116 
   3117 #define _mm512_maskz_alignr_epi8(U, X, Y, N)					    \
   3118   ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X),		    \
   3119 					     (__v8di)(__m512i)(Y), (int)(N * 8),    \
   3120 					     (__v8di)(__m512i)			    \
   3121 					     _mm512_setzero_si512 (),		    \
   3122 					     (__mmask64)(U)))
   3123 
   3124 #define _mm512_dbsad_epu8(X, Y, C)                                                  \
   3125   ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
   3126                                               (__v64qi)(__m512i) (Y), (int) (C),    \
   3127                                               (__v32hi)(__m512i)		    \
   3128 					      _mm512_setzero_si512 (),		    \
   3129                                               (__mmask32)-1))
   3130 
   3131 #define _mm512_mask_dbsad_epu8(W, U, X, Y, C)                                       \
   3132   ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
   3133                                               (__v64qi)(__m512i) (Y), (int) (C),    \
   3134                                               (__v32hi)(__m512i)(W),                \
   3135                                               (__mmask32)(U)))
   3136 
   3137 #define _mm512_maskz_dbsad_epu8(U, X, Y, C)                                         \
   3138   ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
   3139                                               (__v64qi)(__m512i) (Y), (int) (C),    \
   3140                                               (__v32hi)(__m512i)		    \
   3141 					      _mm512_setzero_si512 (),		    \
   3142                                               (__mmask32)(U)))
   3143 
   3144 #define _mm512_srli_epi16(A, B)                                         \
   3145   ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
   3146     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
   3147 
   3148 #define _mm512_mask_srli_epi16(W, U, A, B)                              \
   3149   ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
   3150     (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
   3151 
   3152 #define _mm512_maskz_srli_epi16(U, A, B)                                \
   3153   ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
   3154     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
   3155 
   3156 #define _mm512_slli_epi16(X, C)						   \
   3157   ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
   3158     (__v32hi)(__m512i)_mm512_setzero_si512 (),				   \
   3159     (__mmask32)-1))
   3160 
   3161 #define _mm512_mask_slli_epi16(W, U, X, C)                                 \
   3162   ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
   3163     (__v32hi)(__m512i)(W),\
   3164     (__mmask32)(U)))
   3165 
   3166 #define _mm512_maskz_slli_epi16(U, X, C)                                   \
   3167   ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
   3168     (__v32hi)(__m512i)_mm512_setzero_si512 (),				   \
   3169     (__mmask32)(U)))
   3170 
   3171 #define _mm512_shufflehi_epi16(A, B)                                                \
   3172   ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
   3173                                              (__v32hi)(__m512i)			    \
   3174 					     _mm512_setzero_si512 (),		    \
   3175                                              (__mmask32)-1))
   3176 
   3177 #define _mm512_mask_shufflehi_epi16(W, U, A, B)                                     \
   3178   ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
   3179                                              (__v32hi)(__m512i)(W),                 \
   3180                                              (__mmask32)(U)))
   3181 
   3182 #define _mm512_maskz_shufflehi_epi16(U, A, B)                                       \
   3183   ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
   3184                                              (__v32hi)(__m512i)			    \
   3185 					     _mm512_setzero_si512 (),		    \
   3186                                              (__mmask32)(U)))
   3187 
   3188 #define _mm512_shufflelo_epi16(A, B)                                                \
   3189   ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
   3190                                              (__v32hi)(__m512i)			    \
   3191 					     _mm512_setzero_si512 (),		    \
   3192                                              (__mmask32)-1))
   3193 
   3194 #define _mm512_mask_shufflelo_epi16(W, U, A, B)                                     \
   3195   ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
   3196                                              (__v32hi)(__m512i)(W),                 \
   3197                                              (__mmask32)(U)))
   3198 
   3199 #define _mm512_maskz_shufflelo_epi16(U, A, B)                                       \
   3200   ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
   3201                                              (__v32hi)(__m512i)			    \
   3202 					     _mm512_setzero_si512 (),		    \
   3203                                              (__mmask32)(U)))
   3204 
   3205 #define _mm512_srai_epi16(A, B)                                         \
   3206   ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
   3207     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
   3208 
   3209 #define _mm512_mask_srai_epi16(W, U, A, B)                              \
   3210   ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
   3211     (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
   3212 
   3213 #define _mm512_maskz_srai_epi16(U, A, B)                                \
   3214   ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
   3215     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
   3216 
   3217 #define _mm512_mask_blend_epi16(__U, __A, __W)			      \
   3218   ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A),	      \
   3219 						    (__v32hi) (__W),  \
   3220 						    (__mmask32) (__U)))
   3221 
   3222 #define _mm512_mask_blend_epi8(__U, __A, __W)			      \
   3223   ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A),	      \
   3224 						    (__v64qi) (__W),  \
   3225 						    (__mmask64) (__U)))
   3226 
   3227 #define _mm512_cmp_epi16_mask(X, Y, P)				\
   3228   ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X),	\
   3229 					    (__v32hi)(__m512i)(Y), (int)(P),\
   3230 					    (__mmask32)(-1)))
   3231 
   3232 #define _mm512_cmp_epi8_mask(X, Y, P)				\
   3233   ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X),	\
   3234 					    (__v64qi)(__m512i)(Y), (int)(P),\
   3235 					    (__mmask64)(-1)))
   3236 
   3237 #define _mm512_cmp_epu16_mask(X, Y, P)				\
   3238   ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X),	\
   3239 					    (__v32hi)(__m512i)(Y), (int)(P),\
   3240 					    (__mmask32)(-1)))
   3241 
   3242 #define _mm512_cmp_epu8_mask(X, Y, P)				\
   3243   ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X),	\
   3244 					    (__v64qi)(__m512i)(Y), (int)(P),\
   3245 					    (__mmask64)(-1)))
   3246 
   3247 #define _mm512_mask_cmp_epi16_mask(M, X, Y, P)				\
   3248   ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X),	\
   3249 					    (__v32hi)(__m512i)(Y), (int)(P),\
   3250 					    (__mmask32)(M)))
   3251 
   3252 #define _mm512_mask_cmp_epi8_mask(M, X, Y, P)				\
   3253   ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X),	\
   3254 					    (__v64qi)(__m512i)(Y), (int)(P),\
   3255 					    (__mmask64)(M)))
   3256 
   3257 #define _mm512_mask_cmp_epu16_mask(M, X, Y, P)				\
   3258   ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X),	\
   3259 					    (__v32hi)(__m512i)(Y), (int)(P),\
   3260 					    (__mmask32)(M)))
   3261 
   3262 #define _mm512_mask_cmp_epu8_mask(M, X, Y, P)				\
   3263   ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X),	\
   3264 					    (__v64qi)(__m512i)(Y), (int)(P),\
   3265 					    (__mmask64)(M)))
   3266 
   3267 #define _mm512_bslli_epi128(A, N)                                         \
   3268   ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
   3269 
   3270 #define _mm512_bsrli_epi128(A, N)                                         \
   3271   ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
   3272 
   3273 #endif
   3274 
   3275 #ifdef __DISABLE_AVX512BW__
   3276 #undef __DISABLE_AVX512BW__
   3277 #pragma GCC pop_options
   3278 #endif /* __DISABLE_AVX512BW__ */
   3279 
   3280 #endif /* _AVX512BWINTRIN_H_INCLUDED */
   3281