Home | History | Annotate | Download | only in include
      1 /*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
      2  *
      3  *
      4  * Permission is hereby granted, free of charge, to any person obtaining a copy
      5  * of this software and associated documentation files (the "Software"), to deal
      6  * in the Software without restriction, including without limitation the rights
      7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      8  * copies of the Software, and to permit persons to whom the Software is
      9  * furnished to do so, subject to the following conditions:
     10  *
     11  * The above copyright notice and this permission notice shall be included in
     12  * all copies or substantial portions of the Software.
     13  *
     14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
     15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
     16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
     17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
     18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
     19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
     20  * THE SOFTWARE.
     21  *
     22  *===-----------------------------------------------------------------------===
     23  */
     24 #ifndef __IMMINTRIN_H
     25 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
     26 #endif
     27 
     28 #ifndef __AVX512BWINTRIN_H
     29 #define __AVX512BWINTRIN_H
     30 
     31 typedef unsigned int __mmask32;
     32 typedef unsigned long long __mmask64;
     33 
     34 /* Define the default attributes for the functions in this file. */
     35 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
     36 
     37 static  __inline __m512i __DEFAULT_FN_ATTRS
     38 _mm512_setzero_qi(void) {
     39   return (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
     40                              0, 0, 0, 0, 0, 0, 0, 0,
     41                              0, 0, 0, 0, 0, 0, 0, 0,
     42                              0, 0, 0, 0, 0, 0, 0, 0,
     43                              0, 0, 0, 0, 0, 0, 0, 0,
     44                              0, 0, 0, 0, 0, 0, 0, 0,
     45                              0, 0, 0, 0, 0, 0, 0, 0,
     46                              0, 0, 0, 0, 0, 0, 0, 0 };
     47 }
     48 
     49 static  __inline __m512i __DEFAULT_FN_ATTRS
     50 _mm512_setzero_hi(void) {
     51   return (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
     52                              0, 0, 0, 0, 0, 0, 0, 0,
     53                              0, 0, 0, 0, 0, 0, 0, 0,
     54                              0, 0, 0, 0, 0, 0, 0, 0 };
     55 }
     56 
     57 /* Integer compare */
     58 
     59 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     60 _mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
     61   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
     62                                                    (__mmask64)-1);
     63 }
     64 
     65 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     66 _mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     67   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
     68                                                    __u);
     69 }
     70 
     71 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     72 _mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
     73   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
     74                                                  (__mmask64)-1);
     75 }
     76 
     77 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     78 _mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     79   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
     80                                                  __u);
     81 }
     82 
     83 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
     84 _mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
     85   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
     86                                                    (__mmask32)-1);
     87 }
     88 
     89 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
     90 _mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     91   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
     92                                                    __u);
     93 }
     94 
     95 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
     96 _mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
     97   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
     98                                                  (__mmask32)-1);
     99 }
    100 
    101 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    102 _mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    103   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
    104                                                  __u);
    105 }
    106 
    107 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    108 _mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
    109   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    110                                                 (__mmask64)-1);
    111 }
    112 
    113 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    114 _mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    115   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    116                                                 __u);
    117 }
    118 
    119 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    120 _mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
    121   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    122                                                  (__mmask64)-1);
    123 }
    124 
    125 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    126 _mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    127   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    128                                                  __u);
    129 }
    130 
    131 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    132 _mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
    133   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    134                                                 (__mmask32)-1);
    135 }
    136 
    137 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    138 _mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    139   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    140                                                 __u);
    141 }
    142 
    143 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    144 _mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
    145   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    146                                                  (__mmask32)-1);
    147 }
    148 
    149 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    150 _mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    151   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    152                                                  __u);
    153 }
    154 
    155 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    156 _mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
    157   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
    158                                                    (__mmask64)-1);
    159 }
    160 
    161 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    162 _mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    163   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
    164                                                    __u);
    165 }
    166 
    167 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    168 _mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
    169   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
    170                                                  (__mmask64)-1);
    171 }
    172 
    173 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    174 _mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    175   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
    176                                                  __u);
    177 }
    178 
    179 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    180 _mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
    181   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
    182                                                    (__mmask32)-1);
    183 }
    184 
    185 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    186 _mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    187   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
    188                                                    __u);
    189 }
    190 
    191 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    192 _mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
    193   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
    194                                                  (__mmask32)-1);
    195 }
    196 
    197 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    198 _mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    199   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
    200                                                  __u);
    201 }
    202 
    203 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    204 _mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
    205   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    206                                                 (__mmask64)-1);
    207 }
    208 
    209 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    210 _mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    211   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    212                                                 __u);
    213 }
    214 
    215 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    216 _mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
    217   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    218                                                  (__mmask64)-1);
    219 }
    220 
    221 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    222 _mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    223   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    224                                                  __u);
    225 }
    226 
    227 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    228 _mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
    229   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    230                                                 (__mmask32)-1);
    231 }
    232 
    233 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    234 _mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    235   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    236                                                 __u);
    237 }
    238 
    239 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    240 _mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
    241   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    242                                                  (__mmask32)-1);
    243 }
    244 
    245 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    246 _mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    247   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    248                                                  __u);
    249 }
    250 
    251 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    252 _mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
    253   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    254                                                 (__mmask64)-1);
    255 }
    256 
    257 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    258 _mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    259   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    260                                                 __u);
    261 }
    262 
    263 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    264 _mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
    265   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    266                                                  (__mmask64)-1);
    267 }
    268 
    269 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    270 _mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    271   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    272                                                  __u);
    273 }
    274 
    275 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    276 _mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
    277   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    278                                                 (__mmask32)-1);
    279 }
    280 
    281 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    282 _mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    283   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    284                                                 __u);
    285 }
    286 
    287 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    288 _mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
    289   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    290                                                  (__mmask32)-1);
    291 }
    292 
    293 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    294 _mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    295   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    296                                                  __u);
    297 }
    298 
    299 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    300 _mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
    301   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    302                                                 (__mmask64)-1);
    303 }
    304 
    305 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    306 _mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    307   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    308                                                 __u);
    309 }
    310 
    311 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    312 _mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
    313   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    314                                                  (__mmask64)-1);
    315 }
    316 
    317 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    318 _mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    319   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    320                                                  __u);
    321 }
    322 
    323 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    324 _mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
    325   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    326                                                 (__mmask32)-1);
    327 }
    328 
    329 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    330 _mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    331   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    332                                                 __u);
    333 }
    334 
    335 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    336 _mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
    337   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    338                                                  (__mmask32)-1);
    339 }
    340 
    341 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    342 _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    343   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    344                                                  __u);
    345 }
    346 
    347 static __inline__ __m512i __DEFAULT_FN_ATTRS
    348 _mm512_add_epi8 (__m512i __A, __m512i __B) {
    349   return (__m512i) ((__v64qu) __A + (__v64qu) __B);
    350 }
    351 
    352 static __inline__ __m512i __DEFAULT_FN_ATTRS
    353 _mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    354   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
    355                                              (__v64qi)_mm512_add_epi8(__A, __B),
    356                                              (__v64qi)__W);
    357 }
    358 
    359 static __inline__ __m512i __DEFAULT_FN_ATTRS
    360 _mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    361   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
    362                                              (__v64qi)_mm512_add_epi8(__A, __B),
    363                                              (__v64qi)_mm512_setzero_qi());
    364 }
    365 
    366 static __inline__ __m512i __DEFAULT_FN_ATTRS
    367 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
    368   return (__m512i) ((__v64qu) __A - (__v64qu) __B);
    369 }
    370 
    371 static __inline__ __m512i __DEFAULT_FN_ATTRS
    372 _mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    373   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
    374                                              (__v64qi)_mm512_sub_epi8(__A, __B),
    375                                              (__v64qi)__W);
    376 }
    377 
    378 static __inline__ __m512i __DEFAULT_FN_ATTRS
    379 _mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    380   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
    381                                              (__v64qi)_mm512_sub_epi8(__A, __B),
    382                                              (__v64qi)_mm512_setzero_qi());
    383 }
    384 
    385 static __inline__ __m512i __DEFAULT_FN_ATTRS
    386 _mm512_add_epi16 (__m512i __A, __m512i __B) {
    387   return (__m512i) ((__v32hu) __A + (__v32hu) __B);
    388 }
    389 
    390 static __inline__ __m512i __DEFAULT_FN_ATTRS
    391 _mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    392   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
    393                                              (__v32hi)_mm512_add_epi16(__A, __B),
    394                                              (__v32hi)__W);
    395 }
    396 
    397 static __inline__ __m512i __DEFAULT_FN_ATTRS
    398 _mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    399   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
    400                                              (__v32hi)_mm512_add_epi16(__A, __B),
    401                                              (__v32hi)_mm512_setzero_hi());
    402 }
    403 
    404 static __inline__ __m512i __DEFAULT_FN_ATTRS
    405 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
    406   return (__m512i) ((__v32hu) __A - (__v32hu) __B);
    407 }
    408 
    409 static __inline__ __m512i __DEFAULT_FN_ATTRS
    410 _mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    411   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
    412                                              (__v32hi)_mm512_sub_epi16(__A, __B),
    413                                              (__v32hi)__W);
    414 }
    415 
    416 static __inline__ __m512i __DEFAULT_FN_ATTRS
    417 _mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    418   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
    419                                              (__v32hi)_mm512_sub_epi16(__A, __B),
    420                                              (__v32hi)_mm512_setzero_hi());
    421 }
    422 
    423 static __inline__ __m512i __DEFAULT_FN_ATTRS
    424 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
    425   return (__m512i) ((__v32hu) __A * (__v32hu) __B);
    426 }
    427 
    428 static __inline__ __m512i __DEFAULT_FN_ATTRS
    429 _mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    430   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
    431                                              (__v32hi)_mm512_mullo_epi16(__A, __B),
    432                                              (__v32hi)__W);
    433 }
    434 
    435 static __inline__ __m512i __DEFAULT_FN_ATTRS
    436 _mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    437   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
    438                                              (__v32hi)_mm512_mullo_epi16(__A, __B),
    439                                              (__v32hi)_mm512_setzero_hi());
    440 }
    441 
    442 static __inline__ __m512i __DEFAULT_FN_ATTRS
    443 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
    444 {
    445   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
    446               (__v64qi) __W,
    447               (__v64qi) __A);
    448 }
    449 
    450 static __inline__ __m512i __DEFAULT_FN_ATTRS
    451 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
    452 {
    453   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
    454               (__v32hi) __W,
    455               (__v32hi) __A);
    456 }
    457 
    458 static __inline__ __m512i __DEFAULT_FN_ATTRS
    459 _mm512_abs_epi8 (__m512i __A)
    460 {
    461   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
    462               (__v64qi) _mm512_setzero_qi(),
    463               (__mmask64) -1);
    464 }
    465 
    466 static __inline__ __m512i __DEFAULT_FN_ATTRS
    467 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
    468 {
    469   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
    470               (__v64qi) __W,
    471               (__mmask64) __U);
    472 }
    473 
    474 static __inline__ __m512i __DEFAULT_FN_ATTRS
    475 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
    476 {
    477   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
    478               (__v64qi) _mm512_setzero_qi(),
    479               (__mmask64) __U);
    480 }
    481 
    482 static __inline__ __m512i __DEFAULT_FN_ATTRS
    483 _mm512_abs_epi16 (__m512i __A)
    484 {
    485   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
    486               (__v32hi) _mm512_setzero_hi(),
    487               (__mmask32) -1);
    488 }
    489 
    490 static __inline__ __m512i __DEFAULT_FN_ATTRS
    491 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
    492 {
    493   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
    494               (__v32hi) __W,
    495               (__mmask32) __U);
    496 }
    497 
    498 static __inline__ __m512i __DEFAULT_FN_ATTRS
    499 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
    500 {
    501   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
    502               (__v32hi) _mm512_setzero_hi(),
    503               (__mmask32) __U);
    504 }
    505 
    506 static __inline__ __m512i __DEFAULT_FN_ATTRS
    507 _mm512_packs_epi32 (__m512i __A, __m512i __B)
    508 {
    509   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
    510               (__v16si) __B,
    511               (__v32hi) _mm512_setzero_hi(),
    512               (__mmask32) -1);
    513 }
    514 
    515 static __inline__ __m512i __DEFAULT_FN_ATTRS
    516 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
    517 {
    518   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
    519               (__v16si) __B,
    520               (__v32hi) _mm512_setzero_hi(),
    521               __M);
    522 }
    523 
    524 static __inline__ __m512i __DEFAULT_FN_ATTRS
    525 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
    526        __m512i __B)
    527 {
    528   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
    529               (__v16si) __B,
    530               (__v32hi) __W,
    531               __M);
    532 }
    533 
    534 static __inline__ __m512i __DEFAULT_FN_ATTRS
    535 _mm512_packs_epi16 (__m512i __A, __m512i __B)
    536 {
    537   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
    538               (__v32hi) __B,
    539               (__v64qi) _mm512_setzero_qi(),
    540               (__mmask64) -1);
    541 }
    542 
    543 static __inline__ __m512i __DEFAULT_FN_ATTRS
    544 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
    545        __m512i __B)
    546 {
    547   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
    548               (__v32hi) __B,
    549               (__v64qi) __W,
    550               (__mmask64) __M);
    551 }
    552 
    553 static __inline__ __m512i __DEFAULT_FN_ATTRS
    554 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
    555 {
    556   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
    557               (__v32hi) __B,
    558               (__v64qi) _mm512_setzero_qi(),
    559               __M);
    560 }
    561 
    562 static __inline__ __m512i __DEFAULT_FN_ATTRS
    563 _mm512_packus_epi32 (__m512i __A, __m512i __B)
    564 {
    565   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
    566               (__v16si) __B,
    567               (__v32hi) _mm512_setzero_hi(),
    568               (__mmask32) -1);
    569 }
    570 
    571 static __inline__ __m512i __DEFAULT_FN_ATTRS
    572 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
    573 {
    574   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
    575               (__v16si) __B,
    576               (__v32hi) _mm512_setzero_hi(),
    577               __M);
    578 }
    579 
    580 static __inline__ __m512i __DEFAULT_FN_ATTRS
    581 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
    582         __m512i __B)
    583 {
    584   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
    585               (__v16si) __B,
    586               (__v32hi) __W,
    587               __M);
    588 }
    589 
    590 static __inline__ __m512i __DEFAULT_FN_ATTRS
    591 _mm512_packus_epi16 (__m512i __A, __m512i __B)
    592 {
    593   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
    594               (__v32hi) __B,
    595               (__v64qi) _mm512_setzero_qi(),
    596               (__mmask64) -1);
    597 }
    598 
    599 static __inline__ __m512i __DEFAULT_FN_ATTRS
    600 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
    601         __m512i __B)
    602 {
    603   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
    604               (__v32hi) __B,
    605               (__v64qi) __W,
    606               (__mmask64) __M);
    607 }
    608 
    609 static __inline__ __m512i __DEFAULT_FN_ATTRS
    610 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
    611 {
    612   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
    613               (__v32hi) __B,
    614               (__v64qi) _mm512_setzero_qi(),
    615               (__mmask64) __M);
    616 }
    617 
    618 static __inline__ __m512i __DEFAULT_FN_ATTRS
    619 _mm512_adds_epi8 (__m512i __A, __m512i __B)
    620 {
    621   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    622               (__v64qi) __B,
    623               (__v64qi) _mm512_setzero_qi(),
    624               (__mmask64) -1);
    625 }
    626 
    627 static __inline__ __m512i __DEFAULT_FN_ATTRS
    628 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
    629            __m512i __B)
    630 {
    631   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    632               (__v64qi) __B,
    633               (__v64qi) __W,
    634               (__mmask64) __U);
    635 }
    636 
    637 static __inline__ __m512i __DEFAULT_FN_ATTRS
    638 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
    639 {
    640   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    641               (__v64qi) __B,
    642               (__v64qi) _mm512_setzero_qi(),
    643               (__mmask64) __U);
    644 }
    645 
    646 static __inline__ __m512i __DEFAULT_FN_ATTRS
    647 _mm512_adds_epi16 (__m512i __A, __m512i __B)
    648 {
    649   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    650               (__v32hi) __B,
    651               (__v32hi) _mm512_setzero_hi(),
    652               (__mmask32) -1);
    653 }
    654 
    655 static __inline__ __m512i __DEFAULT_FN_ATTRS
    656 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
    657       __m512i __B)
    658 {
    659   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    660               (__v32hi) __B,
    661               (__v32hi) __W,
    662               (__mmask32) __U);
    663 }
    664 
    665 static __inline__ __m512i __DEFAULT_FN_ATTRS
    666 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
    667 {
    668   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    669               (__v32hi) __B,
    670               (__v32hi) _mm512_setzero_hi(),
    671               (__mmask32) __U);
    672 }
    673 
    674 static __inline__ __m512i __DEFAULT_FN_ATTRS
    675 _mm512_adds_epu8 (__m512i __A, __m512i __B)
    676 {
    677   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    678               (__v64qi) __B,
    679               (__v64qi) _mm512_setzero_qi(),
    680               (__mmask64) -1);
    681 }
    682 
    683 static __inline__ __m512i __DEFAULT_FN_ATTRS
    684 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    685            __m512i __B)
    686 {
    687   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    688               (__v64qi) __B,
    689               (__v64qi) __W,
    690               (__mmask64) __U);
    691 }
    692 
    693 static __inline__ __m512i __DEFAULT_FN_ATTRS
    694 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    695 {
    696   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    697               (__v64qi) __B,
    698               (__v64qi) _mm512_setzero_qi(),
    699               (__mmask64) __U);
    700 }
    701 
    702 static __inline__ __m512i __DEFAULT_FN_ATTRS
    703 _mm512_adds_epu16 (__m512i __A, __m512i __B)
    704 {
    705   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    706               (__v32hi) __B,
    707               (__v32hi) _mm512_setzero_hi(),
    708               (__mmask32) -1);
    709 }
    710 
    711 static __inline__ __m512i __DEFAULT_FN_ATTRS
    712 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    713       __m512i __B)
    714 {
    715   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    716               (__v32hi) __B,
    717               (__v32hi) __W,
    718               (__mmask32) __U);
    719 }
    720 
    721 static __inline__ __m512i __DEFAULT_FN_ATTRS
    722 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    723 {
    724   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    725               (__v32hi) __B,
    726               (__v32hi) _mm512_setzero_hi(),
    727               (__mmask32) __U);
    728 }
    729 
    730 static __inline__ __m512i __DEFAULT_FN_ATTRS
    731 _mm512_avg_epu8 (__m512i __A, __m512i __B)
    732 {
    733   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    734               (__v64qi) __B,
    735               (__v64qi) _mm512_setzero_qi(),
    736               (__mmask64) -1);
    737 }
    738 
    739 static __inline__ __m512i __DEFAULT_FN_ATTRS
    740 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    741           __m512i __B)
    742 {
    743   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    744               (__v64qi) __B,
    745               (__v64qi) __W,
    746               (__mmask64) __U);
    747 }
    748 
    749 static __inline__ __m512i __DEFAULT_FN_ATTRS
    750 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    751 {
    752   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    753               (__v64qi) __B,
    754               (__v64qi) _mm512_setzero_qi(),
    755               (__mmask64) __U);
    756 }
    757 
    758 static __inline__ __m512i __DEFAULT_FN_ATTRS
    759 _mm512_avg_epu16 (__m512i __A, __m512i __B)
    760 {
    761   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    762               (__v32hi) __B,
    763               (__v32hi) _mm512_setzero_hi(),
    764               (__mmask32) -1);
    765 }
    766 
    767 static __inline__ __m512i __DEFAULT_FN_ATTRS
    768 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    769            __m512i __B)
    770 {
    771   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    772               (__v32hi) __B,
    773               (__v32hi) __W,
    774               (__mmask32) __U);
    775 }
    776 
    777 static __inline__ __m512i __DEFAULT_FN_ATTRS
    778 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    779 {
    780   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    781               (__v32hi) __B,
    782               (__v32hi) _mm512_setzero_hi(),
    783               (__mmask32) __U);
    784 }
    785 
    786 static __inline__ __m512i __DEFAULT_FN_ATTRS
    787 _mm512_max_epi8 (__m512i __A, __m512i __B)
    788 {
    789   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    790               (__v64qi) __B,
    791               (__v64qi) _mm512_setzero_qi(),
    792               (__mmask64) -1);
    793 }
    794 
    795 static __inline__ __m512i __DEFAULT_FN_ATTRS
    796 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
    797 {
    798   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    799               (__v64qi) __B,
    800               (__v64qi) _mm512_setzero_qi(),
    801               (__mmask64) __M);
    802 }
    803 
    804 static __inline__ __m512i __DEFAULT_FN_ATTRS
    805 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
    806           __m512i __B)
    807 {
    808   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    809               (__v64qi) __B,
    810               (__v64qi) __W,
    811               (__mmask64) __M);
    812 }
    813 
    814 static __inline__ __m512i __DEFAULT_FN_ATTRS
    815 _mm512_max_epi16 (__m512i __A, __m512i __B)
    816 {
    817   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    818               (__v32hi) __B,
    819               (__v32hi) _mm512_setzero_hi(),
    820               (__mmask32) -1);
    821 }
    822 
    823 static __inline__ __m512i __DEFAULT_FN_ATTRS
    824 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
    825 {
    826   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    827               (__v32hi) __B,
    828               (__v32hi) _mm512_setzero_hi(),
    829               (__mmask32) __M);
    830 }
    831 
    832 static __inline__ __m512i __DEFAULT_FN_ATTRS
    833 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    834            __m512i __B)
    835 {
    836   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    837               (__v32hi) __B,
    838               (__v32hi) __W,
    839               (__mmask32) __M);
    840 }
    841 
    842 static __inline__ __m512i __DEFAULT_FN_ATTRS
    843 _mm512_max_epu8 (__m512i __A, __m512i __B)
    844 {
    845   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    846               (__v64qi) __B,
    847               (__v64qi) _mm512_setzero_qi(),
    848               (__mmask64) -1);
    849 }
    850 
    851 static __inline__ __m512i __DEFAULT_FN_ATTRS
    852 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
    853 {
    854   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    855               (__v64qi) __B,
    856               (__v64qi) _mm512_setzero_qi(),
    857               (__mmask64) __M);
    858 }
    859 
    860 static __inline__ __m512i __DEFAULT_FN_ATTRS
    861 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
    862           __m512i __B)
    863 {
    864   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    865               (__v64qi) __B,
    866               (__v64qi) __W,
    867               (__mmask64) __M);
    868 }
    869 
    870 static __inline__ __m512i __DEFAULT_FN_ATTRS
    871 _mm512_max_epu16 (__m512i __A, __m512i __B)
    872 {
    873   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    874               (__v32hi) __B,
    875               (__v32hi) _mm512_setzero_hi(),
    876               (__mmask32) -1);
    877 }
    878 
    879 static __inline__ __m512i __DEFAULT_FN_ATTRS
    880 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
    881 {
    882   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    883               (__v32hi) __B,
    884               (__v32hi) _mm512_setzero_hi(),
    885               (__mmask32) __M);
    886 }
    887 
    888 static __inline__ __m512i __DEFAULT_FN_ATTRS
    889 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
    890            __m512i __B)
    891 {
    892   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    893               (__v32hi) __B,
    894               (__v32hi) __W,
    895               (__mmask32) __M);
    896 }
    897 
    898 static __inline__ __m512i __DEFAULT_FN_ATTRS
    899 _mm512_min_epi8 (__m512i __A, __m512i __B)
    900 {
    901   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    902               (__v64qi) __B,
    903               (__v64qi) _mm512_setzero_qi(),
    904               (__mmask64) -1);
    905 }
    906 
    907 static __inline__ __m512i __DEFAULT_FN_ATTRS
    908 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
    909 {
    910   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    911               (__v64qi) __B,
    912               (__v64qi) _mm512_setzero_qi(),
    913               (__mmask64) __M);
    914 }
    915 
    916 static __inline__ __m512i __DEFAULT_FN_ATTRS
    917 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
    918           __m512i __B)
    919 {
    920   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    921               (__v64qi) __B,
    922               (__v64qi) __W,
    923               (__mmask64) __M);
    924 }
    925 
    926 static __inline__ __m512i __DEFAULT_FN_ATTRS
    927 _mm512_min_epi16 (__m512i __A, __m512i __B)
    928 {
    929   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    930               (__v32hi) __B,
    931               (__v32hi) _mm512_setzero_hi(),
    932               (__mmask32) -1);
    933 }
    934 
    935 static __inline__ __m512i __DEFAULT_FN_ATTRS
    936 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
    937 {
    938   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    939               (__v32hi) __B,
    940               (__v32hi) _mm512_setzero_hi(),
    941               (__mmask32) __M);
    942 }
    943 
    944 static __inline__ __m512i __DEFAULT_FN_ATTRS
    945 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    946            __m512i __B)
    947 {
    948   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    949               (__v32hi) __B,
    950               (__v32hi) __W,
    951               (__mmask32) __M);
    952 }
    953 
    954 static __inline__ __m512i __DEFAULT_FN_ATTRS
    955 _mm512_min_epu8 (__m512i __A, __m512i __B)
    956 {
    957   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    958               (__v64qi) __B,
    959               (__v64qi) _mm512_setzero_qi(),
    960               (__mmask64) -1);
    961 }
    962 
    963 static __inline__ __m512i __DEFAULT_FN_ATTRS
    964 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
    965 {
    966   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    967               (__v64qi) __B,
    968               (__v64qi) _mm512_setzero_qi(),
    969               (__mmask64) __M);
    970 }
    971 
    972 static __inline__ __m512i __DEFAULT_FN_ATTRS
    973 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
    974           __m512i __B)
    975 {
    976   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    977               (__v64qi) __B,
    978               (__v64qi) __W,
    979               (__mmask64) __M);
    980 }
    981 
    982 static __inline__ __m512i __DEFAULT_FN_ATTRS
    983 _mm512_min_epu16 (__m512i __A, __m512i __B)
    984 {
    985   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
    986               (__v32hi) __B,
    987               (__v32hi) _mm512_setzero_hi(),
    988               (__mmask32) -1);
    989 }
    990 
    991 static __inline__ __m512i __DEFAULT_FN_ATTRS
    992 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
    993 {
    994   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
    995               (__v32hi) __B,
    996               (__v32hi) _mm512_setzero_hi(),
    997               (__mmask32) __M);
    998 }
    999 
   1000 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1001 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
   1002            __m512i __B)
   1003 {
   1004   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
   1005               (__v32hi) __B,
   1006               (__v32hi) __W,
   1007               (__mmask32) __M);
   1008 }
   1009 
   1010 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1011 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
   1012 {
   1013   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1014               (__v64qi) __B,
   1015               (__v64qi) _mm512_setzero_qi(),
   1016               (__mmask64) -1);
   1017 }
   1018 
   1019 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1020 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1021         __m512i __B)
   1022 {
   1023   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1024               (__v64qi) __B,
   1025               (__v64qi) __W,
   1026               (__mmask64) __U);
   1027 }
   1028 
   1029 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1030 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1031 {
   1032   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1033               (__v64qi) __B,
   1034               (__v64qi) _mm512_setzero_qi(),
   1035               (__mmask64) __U);
   1036 }
   1037 
   1038 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1039 _mm512_subs_epi8 (__m512i __A, __m512i __B)
   1040 {
   1041   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1042               (__v64qi) __B,
   1043               (__v64qi) _mm512_setzero_qi(),
   1044               (__mmask64) -1);
   1045 }
   1046 
   1047 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1048 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1049            __m512i __B)
   1050 {
   1051   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1052               (__v64qi) __B,
   1053               (__v64qi) __W,
   1054               (__mmask64) __U);
   1055 }
   1056 
   1057 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1058 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1059 {
   1060   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1061               (__v64qi) __B,
   1062               (__v64qi) _mm512_setzero_qi(),
   1063               (__mmask64) __U);
   1064 }
   1065 
   1066 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1067 _mm512_subs_epi16 (__m512i __A, __m512i __B)
   1068 {
   1069   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1070               (__v32hi) __B,
   1071               (__v32hi) _mm512_setzero_hi(),
   1072               (__mmask32) -1);
   1073 }
   1074 
   1075 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1076 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1077       __m512i __B)
   1078 {
   1079   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1080               (__v32hi) __B,
   1081               (__v32hi) __W,
   1082               (__mmask32) __U);
   1083 }
   1084 
   1085 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1086 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1087 {
   1088   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1089               (__v32hi) __B,
   1090               (__v32hi) _mm512_setzero_hi(),
   1091               (__mmask32) __U);
   1092 }
   1093 
   1094 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1095 _mm512_subs_epu8 (__m512i __A, __m512i __B)
   1096 {
   1097   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1098               (__v64qi) __B,
   1099               (__v64qi) _mm512_setzero_qi(),
   1100               (__mmask64) -1);
   1101 }
   1102 
   1103 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1104 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
   1105            __m512i __B)
   1106 {
   1107   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1108               (__v64qi) __B,
   1109               (__v64qi) __W,
   1110               (__mmask64) __U);
   1111 }
   1112 
   1113 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1114 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
   1115 {
   1116   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1117               (__v64qi) __B,
   1118               (__v64qi) _mm512_setzero_qi(),
   1119               (__mmask64) __U);
   1120 }
   1121 
   1122 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1123 _mm512_subs_epu16 (__m512i __A, __m512i __B)
   1124 {
   1125   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1126               (__v32hi) __B,
   1127               (__v32hi) _mm512_setzero_hi(),
   1128               (__mmask32) -1);
   1129 }
   1130 
   1131 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1132 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1133       __m512i __B)
   1134 {
   1135   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1136               (__v32hi) __B,
   1137               (__v32hi) __W,
   1138               (__mmask32) __U);
   1139 }
   1140 
   1141 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1142 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1143 {
   1144   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1145               (__v32hi) __B,
   1146               (__v32hi) _mm512_setzero_hi(),
   1147               (__mmask32) __U);
   1148 }
   1149 
   1150 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1151 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
   1152          __mmask32 __U, __m512i __B)
   1153 {
   1154   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
   1155               (__v32hi) __I /* idx */ ,
   1156               (__v32hi) __B,
   1157               (__mmask32) __U);
   1158 }
   1159 
   1160 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1161 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
   1162 {
   1163   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
   1164               (__v32hi) __A,
   1165               (__v32hi) __B,
   1166               (__mmask32) -1);
   1167 }
   1168 
   1169 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1170 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
   1171         __m512i __I, __m512i __B)
   1172 {
   1173   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
   1174               (__v32hi) __A,
   1175               (__v32hi) __B,
   1176               (__mmask32) __U);
   1177 }
   1178 
   1179 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1180 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
   1181          __m512i __I, __m512i __B)
   1182 {
   1183   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
   1184               /* idx */ ,
   1185               (__v32hi) __A,
   1186               (__v32hi) __B,
   1187               (__mmask32) __U);
   1188 }
   1189 
   1190 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1191 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
   1192 {
   1193   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1194                 (__v32hi) __B,
   1195                 (__v32hi) _mm512_setzero_hi(),
   1196                 (__mmask32) -1);
   1197 }
   1198 
   1199 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1200 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1201         __m512i __B)
   1202 {
   1203   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1204                 (__v32hi) __B,
   1205                 (__v32hi) __W,
   1206                 (__mmask32) __U);
   1207 }
   1208 
   1209 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1210 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1211 {
   1212   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1213                 (__v32hi) __B,
   1214                 (__v32hi) _mm512_setzero_hi(),
   1215                 (__mmask32) __U);
   1216 }
   1217 
   1218 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1219 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
   1220 {
   1221   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1222               (__v32hi) __B,
   1223               (__v32hi) _mm512_setzero_hi(),
   1224               (__mmask32) -1);
   1225 }
   1226 
   1227 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1228 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1229        __m512i __B)
   1230 {
   1231   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1232               (__v32hi) __B,
   1233               (__v32hi) __W,
   1234               (__mmask32) __U);
   1235 }
   1236 
   1237 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1238 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1239 {
   1240   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1241               (__v32hi) __B,
   1242               (__v32hi) _mm512_setzero_hi(),
   1243               (__mmask32) __U);
   1244 }
   1245 
   1246 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1247 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
   1248 {
   1249   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1250                (__v32hi) __B,
   1251                (__v32hi) _mm512_setzero_hi(),
   1252                (__mmask32) -1);
   1253 }
   1254 
   1255 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1256 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1257        __m512i __B)
   1258 {
   1259   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1260                (__v32hi) __B,
   1261                (__v32hi) __W,
   1262                (__mmask32) __U);
   1263 }
   1264 
   1265 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1266 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1267 {
   1268   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1269                (__v32hi) __B,
   1270                (__v32hi) _mm512_setzero_hi(),
   1271                (__mmask32) __U);
   1272 }
   1273 
   1274 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1275 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
   1276   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1277                  (__v64qi) __Y,
   1278                  (__v32hi) _mm512_setzero_hi(),
   1279                  (__mmask32) -1);
   1280 }
   1281 
   1282 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1283 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
   1284          __m512i __Y) {
   1285   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1286                  (__v64qi) __Y,
   1287                  (__v32hi) __W,
   1288                  (__mmask32) __U);
   1289 }
   1290 
   1291 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1292 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
   1293   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1294                  (__v64qi) __Y,
   1295                  (__v32hi) _mm512_setzero_hi(),
   1296                  (__mmask32) __U);
   1297 }
   1298 
   1299 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1300 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
   1301   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1302                (__v32hi) __B,
   1303                (__v16si) _mm512_setzero_si512(),
   1304                (__mmask16) -1);
   1305 }
   1306 
   1307 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1308 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
   1309       __m512i __B) {
   1310   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1311                (__v32hi) __B,
   1312                (__v16si) __W,
   1313                (__mmask16) __U);
   1314 }
   1315 
   1316 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1317 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
   1318   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1319                (__v32hi) __B,
   1320                (__v16si) _mm512_setzero_si512(),
   1321                (__mmask16) __U);
   1322 }
   1323 
   1324 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1325 _mm512_cvtsepi16_epi8 (__m512i __A) {
   1326   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1327                (__v32qi)_mm256_setzero_si256(),
   1328                (__mmask32) -1);
   1329 }
   1330 
   1331 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1332 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1333   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1334                (__v32qi)__O,
   1335                __M);
   1336 }
   1337 
   1338 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1339 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
   1340   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1341                (__v32qi) _mm256_setzero_si256(),
   1342                __M);
   1343 }
   1344 
   1345 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1346 _mm512_cvtusepi16_epi8 (__m512i __A) {
   1347   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1348                 (__v32qi) _mm256_setzero_si256(),
   1349                 (__mmask32) -1);
   1350 }
   1351 
   1352 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1353 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1354   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1355                 (__v32qi) __O,
   1356                 __M);
   1357 }
   1358 
   1359 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1360 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
   1361   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1362                 (__v32qi) _mm256_setzero_si256(),
   1363                 __M);
   1364 }
   1365 
   1366 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1367 _mm512_cvtepi16_epi8 (__m512i __A) {
   1368   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1369               (__v32qi) _mm256_setzero_si256(),
   1370               (__mmask32) -1);
   1371 }
   1372 
   1373 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1374 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1375   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1376               (__v32qi) __O,
   1377               __M);
   1378 }
   1379 
   1380 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1381 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
   1382   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1383               (__v32qi) _mm256_setzero_si256(),
   1384               __M);
   1385 }
   1386 
   1387 static __inline__ void __DEFAULT_FN_ATTRS
   1388 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1389 {
   1390   __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
   1391 }
   1392 
   1393 static __inline__ void __DEFAULT_FN_ATTRS
   1394 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1395 {
   1396   __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
   1397 }
   1398 
   1399 static __inline__ void __DEFAULT_FN_ATTRS
   1400 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1401 {
   1402   __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
   1403 }
   1404 
   1405 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1406 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
   1407   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
   1408                                           8,  64+8,   9, 64+9,
   1409                                           10, 64+10, 11, 64+11,
   1410                                           12, 64+12, 13, 64+13,
   1411                                           14, 64+14, 15, 64+15,
   1412                                           24, 64+24, 25, 64+25,
   1413                                           26, 64+26, 27, 64+27,
   1414                                           28, 64+28, 29, 64+29,
   1415                                           30, 64+30, 31, 64+31,
   1416                                           40, 64+40, 41, 64+41,
   1417                                           42, 64+42, 43, 64+43,
   1418                                           44, 64+44, 45, 64+45,
   1419                                           46, 64+46, 47, 64+47,
   1420                                           56, 64+56, 57, 64+57,
   1421                                           58, 64+58, 59, 64+59,
   1422                                           60, 64+60, 61, 64+61,
   1423                                           62, 64+62, 63, 64+63);
   1424 }
   1425 
   1426 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1427 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1428   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1429                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
   1430                                         (__v64qi)__W);
   1431 }
   1432 
   1433 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1434 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1435   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1436                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
   1437                                         (__v64qi)_mm512_setzero_qi());
   1438 }
   1439 
   1440 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1441 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
   1442   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
   1443                                           4,  32+4,   5, 32+5,
   1444                                           6,  32+6,   7, 32+7,
   1445                                           12, 32+12, 13, 32+13,
   1446                                           14, 32+14, 15, 32+15,
   1447                                           20, 32+20, 21, 32+21,
   1448                                           22, 32+22, 23, 32+23,
   1449                                           28, 32+28, 29, 32+29,
   1450                                           30, 32+30, 31, 32+31);
   1451 }
   1452 
   1453 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1454 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1455   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1456                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
   1457                                        (__v32hi)__W);
   1458 }
   1459 
   1460 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1461 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1462   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1463                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
   1464                                        (__v32hi)_mm512_setzero_hi());
   1465 }
   1466 
   1467 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1468 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
   1469   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
   1470                                           0,  64+0,   1, 64+1,
   1471                                           2,  64+2,   3, 64+3,
   1472                                           4,  64+4,   5, 64+5,
   1473                                           6,  64+6,   7, 64+7,
   1474                                           16, 64+16, 17, 64+17,
   1475                                           18, 64+18, 19, 64+19,
   1476                                           20, 64+20, 21, 64+21,
   1477                                           22, 64+22, 23, 64+23,
   1478                                           32, 64+32, 33, 64+33,
   1479                                           34, 64+34, 35, 64+35,
   1480                                           36, 64+36, 37, 64+37,
   1481                                           38, 64+38, 39, 64+39,
   1482                                           48, 64+48, 49, 64+49,
   1483                                           50, 64+50, 51, 64+51,
   1484                                           52, 64+52, 53, 64+53,
   1485                                           54, 64+54, 55, 64+55);
   1486 }
   1487 
   1488 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1489 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1490   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1491                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
   1492                                         (__v64qi)__W);
   1493 }
   1494 
   1495 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1496 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1497   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1498                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
   1499                                         (__v64qi)_mm512_setzero_qi());
   1500 }
   1501 
   1502 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1503 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
   1504   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
   1505                                           0,  32+0,   1, 32+1,
   1506                                           2,  32+2,   3, 32+3,
   1507                                           8,  32+8,   9, 32+9,
   1508                                           10, 32+10, 11, 32+11,
   1509                                           16, 32+16, 17, 32+17,
   1510                                           18, 32+18, 19, 32+19,
   1511                                           24, 32+24, 25, 32+25,
   1512                                           26, 32+26, 27, 32+27);
   1513 }
   1514 
   1515 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1516 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1517   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1518                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
   1519                                        (__v32hi)__W);
   1520 }
   1521 
   1522 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1523 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1524   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1525                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
   1526                                        (__v32hi)_mm512_setzero_hi());
   1527 }
   1528 
   1529 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1530 _mm512_cvtepi8_epi16(__m256i __A)
   1531 {
   1532   /* This function always performs a signed extension, but __v32qi is a char
   1533      which may be signed or unsigned, so use __v32qs. */
   1534   return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
   1535 }
   1536 
   1537 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1538 _mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
   1539 {
   1540   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1541                                              (__v32hi)_mm512_cvtepi8_epi16(__A),
   1542                                              (__v32hi)__W);
   1543 }
   1544 
   1545 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1546 _mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
   1547 {
   1548   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1549                                              (__v32hi)_mm512_cvtepi8_epi16(__A),
   1550                                              (__v32hi)_mm512_setzero_hi());
   1551 }
   1552 
   1553 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1554 _mm512_cvtepu8_epi16(__m256i __A)
   1555 {
   1556   return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
   1557 }
   1558 
   1559 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1560 _mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
   1561 {
   1562   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1563                                              (__v32hi)_mm512_cvtepu8_epi16(__A),
   1564                                              (__v32hi)__W);
   1565 }
   1566 
   1567 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1568 _mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
   1569 {
   1570   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1571                                              (__v32hi)_mm512_cvtepu8_epi16(__A),
   1572                                              (__v32hi)_mm512_setzero_hi());
   1573 }
   1574 
   1575 
   1576 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
   1577   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
   1578                                          (__v64qi)(__m512i)(b), (int)(p), \
   1579                                          (__mmask64)-1); })
   1580 
   1581 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
   1582   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
   1583                                          (__v64qi)(__m512i)(b), (int)(p), \
   1584                                          (__mmask64)(m)); })
   1585 
   1586 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
   1587   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
   1588                                           (__v64qi)(__m512i)(b), (int)(p), \
   1589                                           (__mmask64)-1); })
   1590 
   1591 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
   1592   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
   1593                                           (__v64qi)(__m512i)(b), (int)(p), \
   1594                                           (__mmask64)(m)); })
   1595 
   1596 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
   1597   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
   1598                                          (__v32hi)(__m512i)(b), (int)(p), \
   1599                                          (__mmask32)-1); })
   1600 
   1601 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
   1602   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
   1603                                          (__v32hi)(__m512i)(b), (int)(p), \
   1604                                          (__mmask32)(m)); })
   1605 
   1606 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
   1607   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
   1608                                           (__v32hi)(__m512i)(b), (int)(p), \
   1609                                           (__mmask32)-1); })
   1610 
   1611 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
   1612   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
   1613                                           (__v32hi)(__m512i)(b), (int)(p), \
   1614                                           (__mmask32)(m)); })
   1615 
   1616 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
   1617   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
   1618                                    (__v32hi)_mm512_undefined_epi32(), \
   1619                                    0, 1, 2, 3, \
   1620                                    4  + (((imm) >> 0) & 0x3), \
   1621                                    4  + (((imm) >> 2) & 0x3), \
   1622                                    4  + (((imm) >> 4) & 0x3), \
   1623                                    4  + (((imm) >> 6) & 0x3), \
   1624                                    8, 9, 10, 11, \
   1625                                    12 + (((imm) >> 0) & 0x3), \
   1626                                    12 + (((imm) >> 2) & 0x3), \
   1627                                    12 + (((imm) >> 4) & 0x3), \
   1628                                    12 + (((imm) >> 6) & 0x3), \
   1629                                    16, 17, 18, 19, \
   1630                                    20 + (((imm) >> 0) & 0x3), \
   1631                                    20 + (((imm) >> 2) & 0x3), \
   1632                                    20 + (((imm) >> 4) & 0x3), \
   1633                                    20 + (((imm) >> 6) & 0x3), \
   1634                                    24, 25, 26, 27, \
   1635                                    28 + (((imm) >> 0) & 0x3), \
   1636                                    28 + (((imm) >> 2) & 0x3), \
   1637                                    28 + (((imm) >> 4) & 0x3), \
   1638                                    28 + (((imm) >> 6) & 0x3)); })
   1639 
   1640 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
   1641   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1642                                       (__v32hi)_mm512_shufflehi_epi16((A), \
   1643                                                                       (imm)), \
   1644                                       (__v32hi)(__m512i)(W)); })
   1645 
   1646 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
   1647   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1648                                       (__v32hi)_mm512_shufflehi_epi16((A), \
   1649                                                                       (imm)), \
   1650                                       (__v32hi)_mm512_setzero_hi()); })
   1651 
   1652 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
   1653   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
   1654                                    (__v32hi)_mm512_undefined_epi32(), \
   1655                                    0 + (((imm) >> 0) & 0x3), \
   1656                                    0 + (((imm) >> 2) & 0x3), \
   1657                                    0 + (((imm) >> 4) & 0x3), \
   1658                                    0 + (((imm) >> 6) & 0x3), \
   1659                                    4, 5, 6, 7, \
   1660                                    8 + (((imm) >> 0) & 0x3), \
   1661                                    8 + (((imm) >> 2) & 0x3), \
   1662                                    8 + (((imm) >> 4) & 0x3), \
   1663                                    8 + (((imm) >> 6) & 0x3), \
   1664                                    12, 13, 14, 15, \
   1665                                    16 + (((imm) >> 0) & 0x3), \
   1666                                    16 + (((imm) >> 2) & 0x3), \
   1667                                    16 + (((imm) >> 4) & 0x3), \
   1668                                    16 + (((imm) >> 6) & 0x3), \
   1669                                    20, 21, 22, 23, \
   1670                                    24 + (((imm) >> 0) & 0x3), \
   1671                                    24 + (((imm) >> 2) & 0x3), \
   1672                                    24 + (((imm) >> 4) & 0x3), \
   1673                                    24 + (((imm) >> 6) & 0x3), \
   1674                                    28, 29, 30, 31); })
   1675 
   1676 
   1677 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
   1678   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1679                                       (__v32hi)_mm512_shufflelo_epi16((A), \
   1680                                                                       (imm)), \
   1681                                       (__v32hi)(__m512i)(W)); })
   1682 
   1683 
   1684 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
   1685   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1686                                       (__v32hi)_mm512_shufflelo_epi16((A), \
   1687                                                                       (imm)), \
   1688                                       (__v32hi)_mm512_setzero_hi()); })
   1689 
   1690 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1691 _mm512_sllv_epi16 (__m512i __A, __m512i __B)
   1692 {
   1693   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
   1694               (__v32hi) __B,
   1695               (__v32hi)
   1696               _mm512_setzero_hi (),
   1697               (__mmask32) -1);
   1698 }
   1699 
   1700 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1701 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1702       __m512i __B)
   1703 {
   1704   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
   1705               (__v32hi) __B,
   1706               (__v32hi) __W,
   1707               (__mmask32) __U);
   1708 }
   1709 
   1710 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1711 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1712 {
   1713   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
   1714               (__v32hi) __B,
   1715               (__v32hi)
   1716               _mm512_setzero_hi (),
   1717               (__mmask32) __U);
   1718 }
   1719 
   1720 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1721 _mm512_sll_epi16 (__m512i __A, __m128i __B)
   1722 {
   1723   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
   1724              (__v8hi) __B,
   1725              (__v32hi)
   1726              _mm512_setzero_hi (),
   1727              (__mmask32) -1);
   1728 }
   1729 
   1730 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1731 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1732            __m128i __B)
   1733 {
   1734   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
   1735              (__v8hi) __B,
   1736              (__v32hi) __W,
   1737              (__mmask32) __U);
   1738 }
   1739 
   1740 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1741 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
   1742 {
   1743   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
   1744              (__v8hi) __B,
   1745              (__v32hi)
   1746              _mm512_setzero_hi (),
   1747              (__mmask32) __U);
   1748 }
   1749 
   1750 #define _mm512_slli_epi16(A, B) __extension__ ({ \
   1751   (__m512i)__builtin_ia32_psllwi512_mask((__v32hi)(__m512i)(A), (int)(B), \
   1752                                          (__v32hi)_mm512_setzero_hi(), \
   1753                                          (__mmask32)-1); })
   1754 
   1755 #define _mm512_mask_slli_epi16(W, U, A, B) __extension__ ({ \
   1756   (__m512i)__builtin_ia32_psllwi512_mask((__v32hi)(__m512i)(A), (int)(B), \
   1757                                          (__v32hi)(__m512i)(W), \
   1758                                          (__mmask32)(U)); })
   1759 
   1760 #define _mm512_maskz_slli_epi16(U, A, B) __extension__ ({ \
   1761   (__m512i)__builtin_ia32_psllwi512_mask((__v32hi)(__m512i)(A), (int)(B), \
   1762                                          (__v32hi)_mm512_setzero_hi(), \
   1763                                          (__mmask32)(U)); })
   1764 
   1765 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
   1766   (__m512i)__builtin_shufflevector(                                          \
   1767        (__v64qi)_mm512_setzero_si512(),                                      \
   1768        (__v64qi)(__m512i)(a),                                                \
   1769        ((char)(imm)&0xF0) ?  0 : ((char)(imm)>0x0 ? 16 :  64) - (char)(imm), \
   1770        ((char)(imm)&0xF0) ?  1 : ((char)(imm)>0x1 ? 17 :  65) - (char)(imm), \
   1771        ((char)(imm)&0xF0) ?  2 : ((char)(imm)>0x2 ? 18 :  66) - (char)(imm), \
   1772        ((char)(imm)&0xF0) ?  3 : ((char)(imm)>0x3 ? 19 :  67) - (char)(imm), \
   1773        ((char)(imm)&0xF0) ?  4 : ((char)(imm)>0x4 ? 20 :  68) - (char)(imm), \
   1774        ((char)(imm)&0xF0) ?  5 : ((char)(imm)>0x5 ? 21 :  69) - (char)(imm), \
   1775        ((char)(imm)&0xF0) ?  6 : ((char)(imm)>0x6 ? 22 :  70) - (char)(imm), \
   1776        ((char)(imm)&0xF0) ?  7 : ((char)(imm)>0x7 ? 23 :  71) - (char)(imm), \
   1777        ((char)(imm)&0xF0) ?  8 : ((char)(imm)>0x8 ? 24 :  72) - (char)(imm), \
   1778        ((char)(imm)&0xF0) ?  9 : ((char)(imm)>0x9 ? 25 :  73) - (char)(imm), \
   1779        ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 :  74) - (char)(imm), \
   1780        ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 :  75) - (char)(imm), \
   1781        ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 :  76) - (char)(imm), \
   1782        ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 :  77) - (char)(imm), \
   1783        ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 :  78) - (char)(imm), \
   1784        ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 :  79) - (char)(imm), \
   1785        ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 :  80) - (char)(imm), \
   1786        ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 :  81) - (char)(imm), \
   1787        ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 :  82) - (char)(imm), \
   1788        ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 :  83) - (char)(imm), \
   1789        ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 :  84) - (char)(imm), \
   1790        ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 :  85) - (char)(imm), \
   1791        ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 :  86) - (char)(imm), \
   1792        ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 :  87) - (char)(imm), \
   1793        ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 :  88) - (char)(imm), \
   1794        ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 :  89) - (char)(imm), \
   1795        ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 :  90) - (char)(imm), \
   1796        ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 :  91) - (char)(imm), \
   1797        ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 :  92) - (char)(imm), \
   1798        ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 :  93) - (char)(imm), \
   1799        ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 :  94) - (char)(imm), \
   1800        ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 :  95) - (char)(imm), \
   1801        ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 :  96) - (char)(imm), \
   1802        ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 :  97) - (char)(imm), \
   1803        ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 :  98) - (char)(imm), \
   1804        ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 :  99) - (char)(imm), \
   1805        ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
   1806        ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
   1807        ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
   1808        ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
   1809        ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
   1810        ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
   1811        ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
   1812        ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
   1813        ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
   1814        ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
   1815        ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
   1816        ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
   1817        ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
   1818        ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
   1819        ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
   1820        ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
   1821        ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
   1822        ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
   1823        ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
   1824        ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
   1825        ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
   1826        ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
   1827        ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
   1828        ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
   1829        ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
   1830        ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
   1831        ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
   1832        ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
   1833 
   1834 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1835 _mm512_srlv_epi16 (__m512i __A, __m512i __B)
   1836 {
   1837   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
   1838               (__v32hi) __B,
   1839               (__v32hi)
   1840               _mm512_setzero_hi (),
   1841               (__mmask32) -1);
   1842 }
   1843 
   1844 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1845 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1846       __m512i __B)
   1847 {
   1848   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
   1849               (__v32hi) __B,
   1850               (__v32hi) __W,
   1851               (__mmask32) __U);
   1852 }
   1853 
   1854 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1855 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1856 {
   1857   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
   1858               (__v32hi) __B,
   1859               (__v32hi)
   1860               _mm512_setzero_hi (),
   1861               (__mmask32) __U);
   1862 }
   1863 
   1864 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1865 _mm512_srav_epi16 (__m512i __A, __m512i __B)
   1866 {
   1867   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
   1868               (__v32hi) __B,
   1869               (__v32hi)
   1870               _mm512_setzero_hi (),
   1871               (__mmask32) -1);
   1872 }
   1873 
   1874 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1875 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1876       __m512i __B)
   1877 {
   1878   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
   1879               (__v32hi) __B,
   1880               (__v32hi) __W,
   1881               (__mmask32) __U);
   1882 }
   1883 
   1884 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1885 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1886 {
   1887   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
   1888               (__v32hi) __B,
   1889               (__v32hi)
   1890               _mm512_setzero_hi (),
   1891               (__mmask32) __U);
   1892 }
   1893 
   1894 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1895 _mm512_sra_epi16 (__m512i __A, __m128i __B)
   1896 {
   1897  return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
   1898              (__v8hi) __B,
   1899              (__v32hi)
   1900              _mm512_setzero_hi (),
   1901              (__mmask32) -1);
   1902 }
   1903 
   1904 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1905 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1906            __m128i __B)
   1907 {
   1908   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
   1909              (__v8hi) __B,
   1910              (__v32hi) __W,
   1911             (__mmask32) __U);
   1912 }
   1913 
   1914 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1915 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
   1916 {
   1917   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
   1918              (__v8hi) __B,
   1919              (__v32hi)
   1920              _mm512_setzero_hi (),
   1921             (__mmask32) __U);
   1922 }
   1923 
   1924 #define _mm512_srai_epi16(A, B) __extension__ ({ \
   1925   (__m512i)__builtin_ia32_psrawi512_mask((__v32hi)(__m512i)(A), (int)(B), \
   1926                                          (__v32hi)_mm512_setzero_hi(), \
   1927                                          (__mmask32)-1); })
   1928 
   1929 #define _mm512_mask_srai_epi16(W, U, A, B) __extension__ ({ \
   1930   (__m512i)__builtin_ia32_psrawi512_mask((__v32hi)(__m512i)(A), (int)(B), \
   1931                                          (__v32hi)(__m512i)(W), \
   1932                                          (__mmask32)(U)); })
   1933 
   1934 #define _mm512_maskz_srai_epi16(U, A, B) __extension__ ({ \
   1935   (__m512i)__builtin_ia32_psrawi512_mask((__v32hi)(__m512i)(A), (int)(B), \
   1936                                          (__v32hi)_mm512_setzero_hi(), \
   1937                                          (__mmask32)(U)); })
   1938 
   1939 
   1940 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1941 _mm512_srl_epi16 (__m512i __A, __m128i __B)
   1942 {
   1943   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
   1944              (__v8hi) __B,
   1945              (__v32hi)
   1946              _mm512_setzero_hi (),
   1947              (__mmask32) -1);
   1948 }
   1949 
   1950 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1951 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1952            __m128i __B)
   1953 {
   1954   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
   1955              (__v8hi) __B,
   1956              (__v32hi) __W,
   1957              (__mmask32) __U);
   1958 }
   1959 
   1960 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1961 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
   1962 {
   1963   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
   1964              (__v8hi) __B,
   1965              (__v32hi)
   1966              _mm512_setzero_hi (),
   1967              (__mmask32) __U);
   1968 }
   1969 
   1970 #define _mm512_srli_epi16(A, imm) __extension__ ({ \
   1971   (__m512i)__builtin_ia32_psrlwi512_mask((__v32hi)(__m512i)(A), (int)(imm), \
   1972                                          (__v32hi)_mm512_setzero_hi(), \
   1973                                          (__mmask32)-1); })
   1974 
   1975 #define _mm512_mask_srli_epi16(W, U, A, imm) __extension__ ({ \
   1976   (__m512i)__builtin_ia32_psrlwi512_mask((__v32hi)(__m512i)(A), (int)(imm), \
   1977                                          (__v32hi)(__m512i)(W), \
   1978                                          (__mmask32)(U)); })
   1979 
   1980 #define _mm512_maskz_srli_epi16(U, A, imm) __extension__ ({ \
   1981   (__m512i)__builtin_ia32_psrlwi512_mask((__v32hi)(__m512i)(A), (int)(imm), \
   1982                                          (__v32hi)_mm512_setzero_hi(), \
   1983                                          (__mmask32)(U)); })
   1984 
   1985 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
   1986   (__m512i)__builtin_shufflevector(                     \
   1987       (__v64qi)(__m512i)(a),                      \
   1988       (__v64qi)_mm512_setzero_si512(),            \
   1989       ((char)(imm)&0xF0) ?  64 : (char)(imm) + ((char)(imm)>0xF ?  48 : 0),  \
   1990       ((char)(imm)&0xF0) ?  65 : (char)(imm) + ((char)(imm)>0xE ?  49 : 1),  \
   1991       ((char)(imm)&0xF0) ?  66 : (char)(imm) + ((char)(imm)>0xD ?  50 : 2),  \
   1992       ((char)(imm)&0xF0) ?  67 : (char)(imm) + ((char)(imm)>0xC ?  51 : 3),  \
   1993       ((char)(imm)&0xF0) ?  68 : (char)(imm) + ((char)(imm)>0xB ?  52 : 4),  \
   1994       ((char)(imm)&0xF0) ?  69 : (char)(imm) + ((char)(imm)>0xA ?  53 : 5),  \
   1995       ((char)(imm)&0xF0) ?  70 : (char)(imm) + ((char)(imm)>0x9 ?  54 : 6),  \
   1996       ((char)(imm)&0xF0) ?  71 : (char)(imm) + ((char)(imm)>0x8 ?  55 : 7),  \
   1997       ((char)(imm)&0xF0) ?  72 : (char)(imm) + ((char)(imm)>0x7 ?  56 : 8),  \
   1998       ((char)(imm)&0xF0) ?  73 : (char)(imm) + ((char)(imm)>0x6 ?  57 : 9),  \
   1999       ((char)(imm)&0xF0) ?  74 : (char)(imm) + ((char)(imm)>0x5 ?  58 : 10), \
   2000       ((char)(imm)&0xF0) ?  75 : (char)(imm) + ((char)(imm)>0x4 ?  59 : 11), \
   2001       ((char)(imm)&0xF0) ?  76 : (char)(imm) + ((char)(imm)>0x3 ?  60 : 12), \
   2002       ((char)(imm)&0xF0) ?  77 : (char)(imm) + ((char)(imm)>0x2 ?  61 : 13), \
   2003       ((char)(imm)&0xF0) ?  78 : (char)(imm) + ((char)(imm)>0x1 ?  62 : 14), \
   2004       ((char)(imm)&0xF0) ?  79 : (char)(imm) + ((char)(imm)>0x0 ?  63 : 15), \
   2005       ((char)(imm)&0xF0) ?  80 : (char)(imm) + ((char)(imm)>0xF ?  64 : 16), \
   2006       ((char)(imm)&0xF0) ?  81 : (char)(imm) + ((char)(imm)>0xE ?  65 : 17), \
   2007       ((char)(imm)&0xF0) ?  82 : (char)(imm) + ((char)(imm)>0xD ?  66 : 18), \
   2008       ((char)(imm)&0xF0) ?  83 : (char)(imm) + ((char)(imm)>0xC ?  67 : 19), \
   2009       ((char)(imm)&0xF0) ?  84 : (char)(imm) + ((char)(imm)>0xB ?  68 : 20), \
   2010       ((char)(imm)&0xF0) ?  85 : (char)(imm) + ((char)(imm)>0xA ?  69 : 21), \
   2011       ((char)(imm)&0xF0) ?  86 : (char)(imm) + ((char)(imm)>0x9 ?  70 : 22), \
   2012       ((char)(imm)&0xF0) ?  87 : (char)(imm) + ((char)(imm)>0x8 ?  71 : 23), \
   2013       ((char)(imm)&0xF0) ?  88 : (char)(imm) + ((char)(imm)>0x7 ?  72 : 24), \
   2014       ((char)(imm)&0xF0) ?  89 : (char)(imm) + ((char)(imm)>0x6 ?  73 : 25), \
   2015       ((char)(imm)&0xF0) ?  90 : (char)(imm) + ((char)(imm)>0x5 ?  74 : 26), \
   2016       ((char)(imm)&0xF0) ?  91 : (char)(imm) + ((char)(imm)>0x4 ?  75 : 27), \
   2017       ((char)(imm)&0xF0) ?  92 : (char)(imm) + ((char)(imm)>0x3 ?  76 : 28), \
   2018       ((char)(imm)&0xF0) ?  93 : (char)(imm) + ((char)(imm)>0x2 ?  77 : 29), \
   2019       ((char)(imm)&0xF0) ?  94 : (char)(imm) + ((char)(imm)>0x1 ?  78 : 30), \
   2020       ((char)(imm)&0xF0) ?  95 : (char)(imm) + ((char)(imm)>0x0 ?  79 : 31), \
   2021       ((char)(imm)&0xF0) ?  96 : (char)(imm) + ((char)(imm)>0xF ?  80 : 32), \
   2022       ((char)(imm)&0xF0) ?  97 : (char)(imm) + ((char)(imm)>0xE ?  81 : 33), \
   2023       ((char)(imm)&0xF0) ?  98 : (char)(imm) + ((char)(imm)>0xD ?  82 : 34), \
   2024       ((char)(imm)&0xF0) ?  99 : (char)(imm) + ((char)(imm)>0xC ?  83 : 35), \
   2025       ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ?  84 : 36), \
   2026       ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ?  85 : 37), \
   2027       ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ?  86 : 38), \
   2028       ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ?  87 : 39), \
   2029       ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ?  88 : 40), \
   2030       ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ?  89 : 41), \
   2031       ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ?  90 : 42), \
   2032       ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ?  91 : 43), \
   2033       ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ?  92 : 44), \
   2034       ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ?  93 : 45), \
   2035       ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ?  94 : 46), \
   2036       ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ?  95 : 47), \
   2037       ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ?  96 : 48), \
   2038       ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ?  97 : 49), \
   2039       ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ?  98 : 50), \
   2040       ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ?  99 : 51), \
   2041       ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
   2042       ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
   2043       ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
   2044       ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
   2045       ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
   2046       ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
   2047       ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
   2048       ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
   2049       ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
   2050       ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
   2051       ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
   2052       ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
   2053 
   2054 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2055 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
   2056 {
   2057   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
   2058                 (__v32hi) __A,
   2059                 (__v32hi) __W);
   2060 }
   2061 
   2062 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2063 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
   2064 {
   2065   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
   2066                 (__v32hi) __A,
   2067                 (__v32hi) _mm512_setzero_hi ());
   2068 }
   2069 
   2070 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2071 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
   2072 {
   2073   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
   2074                 (__v64qi) __A,
   2075                 (__v64qi) __W);
   2076 }
   2077 
   2078 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2079 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
   2080 {
   2081   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
   2082                 (__v64qi) __A,
   2083                 (__v64qi) _mm512_setzero_hi ());
   2084 }
   2085 
   2086 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2087 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
   2088 {
   2089   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
   2090                  (__v64qi) __O,
   2091                  __M);
   2092 }
   2093 
   2094 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2095 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
   2096 {
   2097   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
   2098                  (__v64qi)
   2099                  _mm512_setzero_qi(),
   2100                  __M);
   2101 }
   2102 
   2103 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2104 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
   2105 {
   2106   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
   2107                 (__mmask64) __B);
   2108 }
   2109 
   2110 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2111 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
   2112 {
   2113   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
   2114                 (__mmask32) __B);
   2115 }
   2116 
   2117 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2118 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
   2119 {
   2120   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
   2121                  (__v32hi) __W,
   2122                  (__mmask32) __U);
   2123 }
   2124 
   2125 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2126 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
   2127 {
   2128   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
   2129                  (__v32hi)
   2130                  _mm512_setzero_hi (),
   2131                  (__mmask32) __U);
   2132 }
   2133 
   2134 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2135 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
   2136 {
   2137   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
   2138                  (__v64qi) __W,
   2139                  (__mmask64) __U);
   2140 }
   2141 
   2142 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2143 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
   2144 {
   2145   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
   2146                  (__v64qi)
   2147                  _mm512_setzero_hi (),
   2148                  (__mmask64) __U);
   2149 }
   2150 static __inline__ void __DEFAULT_FN_ATTRS
   2151 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
   2152 {
   2153   __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
   2154              (__v32hi) __A,
   2155              (__mmask32) __U);
   2156 }
   2157 
   2158 static __inline__ void __DEFAULT_FN_ATTRS
   2159 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
   2160 {
   2161   __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
   2162              (__v64qi) __A,
   2163              (__mmask64) __U);
   2164 }
   2165 
   2166 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2167 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
   2168 {
   2169   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
   2170             (__v64qi) __B,
   2171             (__mmask64) -1);
   2172 }
   2173 
   2174 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2175 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   2176 {
   2177   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
   2178             (__v64qi) __B, __U);
   2179 }
   2180 
   2181 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2182 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
   2183 {
   2184   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
   2185             (__v32hi) __B,
   2186             (__mmask32) -1);
   2187 }
   2188 
   2189 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2190 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   2191 {
   2192   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
   2193             (__v32hi) __B, __U);
   2194 }
   2195 
   2196 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2197 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
   2198 {
   2199   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
   2200              (__v64qi) __B,
   2201              (__mmask64) -1);
   2202 }
   2203 
   2204 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2205 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   2206 {
   2207   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
   2208              (__v64qi) __B, __U);
   2209 }
   2210 
   2211 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2212 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
   2213 {
   2214   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
   2215              (__v32hi) __B,
   2216              (__mmask32) -1);
   2217 }
   2218 
   2219 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2220 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   2221 {
   2222   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
   2223              (__v32hi) __B, __U);
   2224 }
   2225 
   2226 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2227 _mm512_movepi8_mask (__m512i __A)
   2228 {
   2229   return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
   2230 }
   2231 
   2232 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2233 _mm512_movepi16_mask (__m512i __A)
   2234 {
   2235   return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
   2236 }
   2237 
   2238 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2239 _mm512_movm_epi8 (__mmask64 __A)
   2240 {
   2241   return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
   2242 }
   2243 
   2244 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2245 _mm512_movm_epi16 (__mmask32 __A)
   2246 {
   2247   return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
   2248 }
   2249 
   2250 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2251 _mm512_broadcastb_epi8 (__m128i __A)
   2252 {
   2253   return (__m512i)__builtin_shufflevector((__v16qi) __A,
   2254                                           (__v16qi)_mm_undefined_si128(),
   2255                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2256                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2257                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2258                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   2259 }
   2260 
   2261 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2262 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
   2263 {
   2264   return (__m512i)__builtin_ia32_selectb_512(__M,
   2265                                              (__v64qi) _mm512_broadcastb_epi8(__A),
   2266                                              (__v64qi) __O);
   2267 }
   2268 
   2269 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2270 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
   2271 {
   2272   return (__m512i)__builtin_ia32_selectb_512(__M,
   2273                                              (__v64qi) _mm512_broadcastb_epi8(__A),
   2274                                              (__v64qi) _mm512_setzero_si512());
   2275 }
   2276 
   2277 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2278 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
   2279 {
   2280   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
   2281                  (__v32hi) __O,
   2282                  __M);
   2283 }
   2284 
   2285 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2286 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
   2287 {
   2288   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
   2289                  (__v32hi) _mm512_setzero_hi(),
   2290                  __M);
   2291 }
   2292 
   2293 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2294 _mm512_broadcastw_epi16 (__m128i __A)
   2295 {
   2296   return (__m512i)__builtin_shufflevector((__v8hi) __A,
   2297                                           (__v8hi)_mm_undefined_si128(),
   2298                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2299                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   2300 }
   2301 
   2302 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2303 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
   2304 {
   2305   return (__m512i)__builtin_ia32_selectw_512(__M,
   2306                                              (__v32hi) _mm512_broadcastw_epi16(__A),
   2307                                              (__v32hi) __O);
   2308 }
   2309 
   2310 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2311 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
   2312 {
   2313   return (__m512i)__builtin_ia32_selectw_512(__M,
   2314                                              (__v32hi) _mm512_broadcastw_epi16(__A),
   2315                                              (__v32hi) _mm512_setzero_si512());
   2316 }
   2317 
   2318 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2319 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
   2320 {
   2321   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
   2322                  (__v32hi) __A,
   2323                  (__v32hi) _mm512_undefined_epi32 (),
   2324                  (__mmask32) -1);
   2325 }
   2326 
   2327 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2328 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
   2329         __m512i __B)
   2330 {
   2331   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
   2332                  (__v32hi) __A,
   2333                  (__v32hi) _mm512_setzero_hi(),
   2334                  (__mmask32) __M);
   2335 }
   2336 
   2337 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2338 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
   2339              __m512i __B)
   2340 {
   2341   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
   2342                  (__v32hi) __A,
   2343                  (__v32hi) __W,
   2344                  (__mmask32) __M);
   2345 }
   2346 
   2347 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
   2348   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
   2349                                           (__v64qi)(__m512i)(B), (int)(N), \
   2350                                           (__v64qi)_mm512_undefined_pd(), \
   2351                                           (__mmask64)-1); })
   2352 
   2353 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
   2354   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
   2355                                           (__v64qi)(__m512i)(B), (int)(N), \
   2356                                           (__v64qi)(__m512i)(W), \
   2357                                           (__mmask64)(U)); })
   2358 
   2359 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
   2360   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
   2361                                           (__v64qi)(__m512i)(B), (int)(N), \
   2362                                           (__v64qi)_mm512_setzero_si512(), \
   2363                                           (__mmask64)(U)); })
   2364 
   2365 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
   2366   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
   2367                                            (__v64qi)(__m512i)(B), (int)(imm), \
   2368                                            (__v32hi)_mm512_undefined_epi32(), \
   2369                                            (__mmask32)-1); })
   2370 
   2371 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
   2372   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
   2373                                            (__v64qi)(__m512i)(B), (int)(imm), \
   2374                                            (__v32hi)(__m512i)(W), \
   2375                                            (__mmask32)(U)); })
   2376 
   2377 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
   2378   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
   2379                                            (__v64qi)(__m512i)(B), (int)(imm), \
   2380                                            (__v32hi)_mm512_setzero_hi(), \
   2381                                            (__mmask32)(U)); })
   2382 
   2383 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2384 _mm512_sad_epu8 (__m512i __A, __m512i __B)
   2385 {
   2386  return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
   2387                (__v64qi) __B);
   2388 }
   2389 
   2390 
   2391 
   2392 #undef __DEFAULT_FN_ATTRS
   2393 
   2394 #endif
   2395