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((__v16si)__A, (__v16si)__B);
    510 }
    511 
    512 static __inline__ __m512i __DEFAULT_FN_ATTRS
    513 _mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B)
    514 {
    515   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
    516                                        (__v32hi)_mm512_packs_epi32(__A, __B),
    517                                        (__v32hi)_mm512_setzero_hi());
    518 }
    519 
    520 static __inline__ __m512i __DEFAULT_FN_ATTRS
    521 _mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
    522 {
    523   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
    524                                        (__v32hi)_mm512_packs_epi32(__A, __B),
    525                                        (__v32hi)__W);
    526 }
    527 
    528 static __inline__ __m512i __DEFAULT_FN_ATTRS
    529 _mm512_packs_epi16(__m512i __A, __m512i __B)
    530 {
    531   return (__m512i)__builtin_ia32_packsswb512((__v32hi)__A, (__v32hi) __B);
    532 }
    533 
    534 static __inline__ __m512i __DEFAULT_FN_ATTRS
    535 _mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
    536 {
    537   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
    538                                         (__v64qi)_mm512_packs_epi16(__A, __B),
    539                                         (__v64qi)__W);
    540 }
    541 
    542 static __inline__ __m512i __DEFAULT_FN_ATTRS
    543 _mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B)
    544 {
    545   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
    546                                         (__v64qi)_mm512_packs_epi16(__A, __B),
    547                                         (__v64qi)_mm512_setzero_qi());
    548 }
    549 
    550 static __inline__ __m512i __DEFAULT_FN_ATTRS
    551 _mm512_packus_epi32(__m512i __A, __m512i __B)
    552 {
    553   return (__m512i)__builtin_ia32_packusdw512((__v16si) __A, (__v16si) __B);
    554 }
    555 
    556 static __inline__ __m512i __DEFAULT_FN_ATTRS
    557 _mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B)
    558 {
    559   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
    560                                        (__v32hi)_mm512_packus_epi32(__A, __B),
    561                                        (__v32hi)_mm512_setzero_hi());
    562 }
    563 
    564 static __inline__ __m512i __DEFAULT_FN_ATTRS
    565 _mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
    566 {
    567   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
    568                                        (__v32hi)_mm512_packus_epi32(__A, __B),
    569                                        (__v32hi)__W);
    570 }
    571 
    572 static __inline__ __m512i __DEFAULT_FN_ATTRS
    573 _mm512_packus_epi16(__m512i __A, __m512i __B)
    574 {
    575   return (__m512i)__builtin_ia32_packuswb512((__v32hi) __A, (__v32hi) __B);
    576 }
    577 
    578 static __inline__ __m512i __DEFAULT_FN_ATTRS
    579 _mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
    580 {
    581   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
    582                                         (__v64qi)_mm512_packus_epi16(__A, __B),
    583                                         (__v64qi)__W);
    584 }
    585 
    586 static __inline__ __m512i __DEFAULT_FN_ATTRS
    587 _mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B)
    588 {
    589   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
    590                                         (__v64qi)_mm512_packus_epi16(__A, __B),
    591                                         (__v64qi)_mm512_setzero_qi());
    592 }
    593 
    594 static __inline__ __m512i __DEFAULT_FN_ATTRS
    595 _mm512_adds_epi8 (__m512i __A, __m512i __B)
    596 {
    597   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    598               (__v64qi) __B,
    599               (__v64qi) _mm512_setzero_qi(),
    600               (__mmask64) -1);
    601 }
    602 
    603 static __inline__ __m512i __DEFAULT_FN_ATTRS
    604 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
    605            __m512i __B)
    606 {
    607   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    608               (__v64qi) __B,
    609               (__v64qi) __W,
    610               (__mmask64) __U);
    611 }
    612 
    613 static __inline__ __m512i __DEFAULT_FN_ATTRS
    614 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
    615 {
    616   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    617               (__v64qi) __B,
    618               (__v64qi) _mm512_setzero_qi(),
    619               (__mmask64) __U);
    620 }
    621 
    622 static __inline__ __m512i __DEFAULT_FN_ATTRS
    623 _mm512_adds_epi16 (__m512i __A, __m512i __B)
    624 {
    625   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    626               (__v32hi) __B,
    627               (__v32hi) _mm512_setzero_hi(),
    628               (__mmask32) -1);
    629 }
    630 
    631 static __inline__ __m512i __DEFAULT_FN_ATTRS
    632 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
    633       __m512i __B)
    634 {
    635   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    636               (__v32hi) __B,
    637               (__v32hi) __W,
    638               (__mmask32) __U);
    639 }
    640 
    641 static __inline__ __m512i __DEFAULT_FN_ATTRS
    642 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
    643 {
    644   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    645               (__v32hi) __B,
    646               (__v32hi) _mm512_setzero_hi(),
    647               (__mmask32) __U);
    648 }
    649 
    650 static __inline__ __m512i __DEFAULT_FN_ATTRS
    651 _mm512_adds_epu8 (__m512i __A, __m512i __B)
    652 {
    653   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    654               (__v64qi) __B,
    655               (__v64qi) _mm512_setzero_qi(),
    656               (__mmask64) -1);
    657 }
    658 
    659 static __inline__ __m512i __DEFAULT_FN_ATTRS
    660 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    661            __m512i __B)
    662 {
    663   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    664               (__v64qi) __B,
    665               (__v64qi) __W,
    666               (__mmask64) __U);
    667 }
    668 
    669 static __inline__ __m512i __DEFAULT_FN_ATTRS
    670 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    671 {
    672   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    673               (__v64qi) __B,
    674               (__v64qi) _mm512_setzero_qi(),
    675               (__mmask64) __U);
    676 }
    677 
    678 static __inline__ __m512i __DEFAULT_FN_ATTRS
    679 _mm512_adds_epu16 (__m512i __A, __m512i __B)
    680 {
    681   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    682               (__v32hi) __B,
    683               (__v32hi) _mm512_setzero_hi(),
    684               (__mmask32) -1);
    685 }
    686 
    687 static __inline__ __m512i __DEFAULT_FN_ATTRS
    688 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    689       __m512i __B)
    690 {
    691   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    692               (__v32hi) __B,
    693               (__v32hi) __W,
    694               (__mmask32) __U);
    695 }
    696 
    697 static __inline__ __m512i __DEFAULT_FN_ATTRS
    698 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    699 {
    700   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    701               (__v32hi) __B,
    702               (__v32hi) _mm512_setzero_hi(),
    703               (__mmask32) __U);
    704 }
    705 
    706 static __inline__ __m512i __DEFAULT_FN_ATTRS
    707 _mm512_avg_epu8 (__m512i __A, __m512i __B)
    708 {
    709   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    710               (__v64qi) __B,
    711               (__v64qi) _mm512_setzero_qi(),
    712               (__mmask64) -1);
    713 }
    714 
    715 static __inline__ __m512i __DEFAULT_FN_ATTRS
    716 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    717           __m512i __B)
    718 {
    719   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    720               (__v64qi) __B,
    721               (__v64qi) __W,
    722               (__mmask64) __U);
    723 }
    724 
    725 static __inline__ __m512i __DEFAULT_FN_ATTRS
    726 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    727 {
    728   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    729               (__v64qi) __B,
    730               (__v64qi) _mm512_setzero_qi(),
    731               (__mmask64) __U);
    732 }
    733 
    734 static __inline__ __m512i __DEFAULT_FN_ATTRS
    735 _mm512_avg_epu16 (__m512i __A, __m512i __B)
    736 {
    737   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    738               (__v32hi) __B,
    739               (__v32hi) _mm512_setzero_hi(),
    740               (__mmask32) -1);
    741 }
    742 
    743 static __inline__ __m512i __DEFAULT_FN_ATTRS
    744 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    745            __m512i __B)
    746 {
    747   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    748               (__v32hi) __B,
    749               (__v32hi) __W,
    750               (__mmask32) __U);
    751 }
    752 
    753 static __inline__ __m512i __DEFAULT_FN_ATTRS
    754 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    755 {
    756   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    757               (__v32hi) __B,
    758               (__v32hi) _mm512_setzero_hi(),
    759               (__mmask32) __U);
    760 }
    761 
    762 static __inline__ __m512i __DEFAULT_FN_ATTRS
    763 _mm512_max_epi8 (__m512i __A, __m512i __B)
    764 {
    765   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    766               (__v64qi) __B,
    767               (__v64qi) _mm512_setzero_qi(),
    768               (__mmask64) -1);
    769 }
    770 
    771 static __inline__ __m512i __DEFAULT_FN_ATTRS
    772 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
    773 {
    774   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    775               (__v64qi) __B,
    776               (__v64qi) _mm512_setzero_qi(),
    777               (__mmask64) __M);
    778 }
    779 
    780 static __inline__ __m512i __DEFAULT_FN_ATTRS
    781 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
    782           __m512i __B)
    783 {
    784   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    785               (__v64qi) __B,
    786               (__v64qi) __W,
    787               (__mmask64) __M);
    788 }
    789 
    790 static __inline__ __m512i __DEFAULT_FN_ATTRS
    791 _mm512_max_epi16 (__m512i __A, __m512i __B)
    792 {
    793   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    794               (__v32hi) __B,
    795               (__v32hi) _mm512_setzero_hi(),
    796               (__mmask32) -1);
    797 }
    798 
    799 static __inline__ __m512i __DEFAULT_FN_ATTRS
    800 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
    801 {
    802   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    803               (__v32hi) __B,
    804               (__v32hi) _mm512_setzero_hi(),
    805               (__mmask32) __M);
    806 }
    807 
    808 static __inline__ __m512i __DEFAULT_FN_ATTRS
    809 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    810            __m512i __B)
    811 {
    812   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    813               (__v32hi) __B,
    814               (__v32hi) __W,
    815               (__mmask32) __M);
    816 }
    817 
    818 static __inline__ __m512i __DEFAULT_FN_ATTRS
    819 _mm512_max_epu8 (__m512i __A, __m512i __B)
    820 {
    821   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    822               (__v64qi) __B,
    823               (__v64qi) _mm512_setzero_qi(),
    824               (__mmask64) -1);
    825 }
    826 
    827 static __inline__ __m512i __DEFAULT_FN_ATTRS
    828 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
    829 {
    830   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    831               (__v64qi) __B,
    832               (__v64qi) _mm512_setzero_qi(),
    833               (__mmask64) __M);
    834 }
    835 
    836 static __inline__ __m512i __DEFAULT_FN_ATTRS
    837 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
    838           __m512i __B)
    839 {
    840   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    841               (__v64qi) __B,
    842               (__v64qi) __W,
    843               (__mmask64) __M);
    844 }
    845 
    846 static __inline__ __m512i __DEFAULT_FN_ATTRS
    847 _mm512_max_epu16 (__m512i __A, __m512i __B)
    848 {
    849   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    850               (__v32hi) __B,
    851               (__v32hi) _mm512_setzero_hi(),
    852               (__mmask32) -1);
    853 }
    854 
    855 static __inline__ __m512i __DEFAULT_FN_ATTRS
    856 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
    857 {
    858   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    859               (__v32hi) __B,
    860               (__v32hi) _mm512_setzero_hi(),
    861               (__mmask32) __M);
    862 }
    863 
    864 static __inline__ __m512i __DEFAULT_FN_ATTRS
    865 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
    866            __m512i __B)
    867 {
    868   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    869               (__v32hi) __B,
    870               (__v32hi) __W,
    871               (__mmask32) __M);
    872 }
    873 
    874 static __inline__ __m512i __DEFAULT_FN_ATTRS
    875 _mm512_min_epi8 (__m512i __A, __m512i __B)
    876 {
    877   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    878               (__v64qi) __B,
    879               (__v64qi) _mm512_setzero_qi(),
    880               (__mmask64) -1);
    881 }
    882 
    883 static __inline__ __m512i __DEFAULT_FN_ATTRS
    884 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
    885 {
    886   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    887               (__v64qi) __B,
    888               (__v64qi) _mm512_setzero_qi(),
    889               (__mmask64) __M);
    890 }
    891 
    892 static __inline__ __m512i __DEFAULT_FN_ATTRS
    893 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
    894           __m512i __B)
    895 {
    896   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    897               (__v64qi) __B,
    898               (__v64qi) __W,
    899               (__mmask64) __M);
    900 }
    901 
    902 static __inline__ __m512i __DEFAULT_FN_ATTRS
    903 _mm512_min_epi16 (__m512i __A, __m512i __B)
    904 {
    905   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    906               (__v32hi) __B,
    907               (__v32hi) _mm512_setzero_hi(),
    908               (__mmask32) -1);
    909 }
    910 
    911 static __inline__ __m512i __DEFAULT_FN_ATTRS
    912 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
    913 {
    914   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    915               (__v32hi) __B,
    916               (__v32hi) _mm512_setzero_hi(),
    917               (__mmask32) __M);
    918 }
    919 
    920 static __inline__ __m512i __DEFAULT_FN_ATTRS
    921 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    922            __m512i __B)
    923 {
    924   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    925               (__v32hi) __B,
    926               (__v32hi) __W,
    927               (__mmask32) __M);
    928 }
    929 
    930 static __inline__ __m512i __DEFAULT_FN_ATTRS
    931 _mm512_min_epu8 (__m512i __A, __m512i __B)
    932 {
    933   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    934               (__v64qi) __B,
    935               (__v64qi) _mm512_setzero_qi(),
    936               (__mmask64) -1);
    937 }
    938 
    939 static __inline__ __m512i __DEFAULT_FN_ATTRS
    940 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
    941 {
    942   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    943               (__v64qi) __B,
    944               (__v64qi) _mm512_setzero_qi(),
    945               (__mmask64) __M);
    946 }
    947 
    948 static __inline__ __m512i __DEFAULT_FN_ATTRS
    949 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
    950           __m512i __B)
    951 {
    952   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    953               (__v64qi) __B,
    954               (__v64qi) __W,
    955               (__mmask64) __M);
    956 }
    957 
    958 static __inline__ __m512i __DEFAULT_FN_ATTRS
    959 _mm512_min_epu16 (__m512i __A, __m512i __B)
    960 {
    961   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
    962               (__v32hi) __B,
    963               (__v32hi) _mm512_setzero_hi(),
    964               (__mmask32) -1);
    965 }
    966 
    967 static __inline__ __m512i __DEFAULT_FN_ATTRS
    968 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
    969 {
    970   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
    971               (__v32hi) __B,
    972               (__v32hi) _mm512_setzero_hi(),
    973               (__mmask32) __M);
    974 }
    975 
    976 static __inline__ __m512i __DEFAULT_FN_ATTRS
    977 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
    978            __m512i __B)
    979 {
    980   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
    981               (__v32hi) __B,
    982               (__v32hi) __W,
    983               (__mmask32) __M);
    984 }
    985 
    986 static __inline__ __m512i __DEFAULT_FN_ATTRS
    987 _mm512_shuffle_epi8(__m512i __A, __m512i __B)
    988 {
    989   return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
    990 }
    991 
    992 static __inline__ __m512i __DEFAULT_FN_ATTRS
    993 _mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
    994 {
    995   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
    996                                          (__v64qi)_mm512_shuffle_epi8(__A, __B),
    997                                          (__v64qi)__W);
    998 }
    999 
   1000 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1001 _mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
   1002 {
   1003   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1004                                          (__v64qi)_mm512_shuffle_epi8(__A, __B),
   1005                                          (__v64qi)_mm512_setzero_qi());
   1006 }
   1007 
   1008 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1009 _mm512_subs_epi8 (__m512i __A, __m512i __B)
   1010 {
   1011   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1012               (__v64qi) __B,
   1013               (__v64qi) _mm512_setzero_qi(),
   1014               (__mmask64) -1);
   1015 }
   1016 
   1017 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1018 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1019            __m512i __B)
   1020 {
   1021   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1022               (__v64qi) __B,
   1023               (__v64qi) __W,
   1024               (__mmask64) __U);
   1025 }
   1026 
   1027 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1028 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1029 {
   1030   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1031               (__v64qi) __B,
   1032               (__v64qi) _mm512_setzero_qi(),
   1033               (__mmask64) __U);
   1034 }
   1035 
   1036 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1037 _mm512_subs_epi16 (__m512i __A, __m512i __B)
   1038 {
   1039   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1040               (__v32hi) __B,
   1041               (__v32hi) _mm512_setzero_hi(),
   1042               (__mmask32) -1);
   1043 }
   1044 
   1045 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1046 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1047       __m512i __B)
   1048 {
   1049   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1050               (__v32hi) __B,
   1051               (__v32hi) __W,
   1052               (__mmask32) __U);
   1053 }
   1054 
   1055 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1056 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1057 {
   1058   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1059               (__v32hi) __B,
   1060               (__v32hi) _mm512_setzero_hi(),
   1061               (__mmask32) __U);
   1062 }
   1063 
   1064 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1065 _mm512_subs_epu8 (__m512i __A, __m512i __B)
   1066 {
   1067   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1068               (__v64qi) __B,
   1069               (__v64qi) _mm512_setzero_qi(),
   1070               (__mmask64) -1);
   1071 }
   1072 
   1073 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1074 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
   1075            __m512i __B)
   1076 {
   1077   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1078               (__v64qi) __B,
   1079               (__v64qi) __W,
   1080               (__mmask64) __U);
   1081 }
   1082 
   1083 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1084 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
   1085 {
   1086   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1087               (__v64qi) __B,
   1088               (__v64qi) _mm512_setzero_qi(),
   1089               (__mmask64) __U);
   1090 }
   1091 
   1092 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1093 _mm512_subs_epu16 (__m512i __A, __m512i __B)
   1094 {
   1095   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1096               (__v32hi) __B,
   1097               (__v32hi) _mm512_setzero_hi(),
   1098               (__mmask32) -1);
   1099 }
   1100 
   1101 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1102 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1103       __m512i __B)
   1104 {
   1105   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1106               (__v32hi) __B,
   1107               (__v32hi) __W,
   1108               (__mmask32) __U);
   1109 }
   1110 
   1111 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1112 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1113 {
   1114   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1115               (__v32hi) __B,
   1116               (__v32hi) _mm512_setzero_hi(),
   1117               (__mmask32) __U);
   1118 }
   1119 
   1120 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1121 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
   1122          __mmask32 __U, __m512i __B)
   1123 {
   1124   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
   1125               (__v32hi) __I /* idx */ ,
   1126               (__v32hi) __B,
   1127               (__mmask32) __U);
   1128 }
   1129 
   1130 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1131 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
   1132 {
   1133   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
   1134               (__v32hi) __A,
   1135               (__v32hi) __B,
   1136               (__mmask32) -1);
   1137 }
   1138 
   1139 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1140 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
   1141         __m512i __I, __m512i __B)
   1142 {
   1143   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
   1144               (__v32hi) __A,
   1145               (__v32hi) __B,
   1146               (__mmask32) __U);
   1147 }
   1148 
   1149 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1150 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
   1151          __m512i __I, __m512i __B)
   1152 {
   1153   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
   1154               /* idx */ ,
   1155               (__v32hi) __A,
   1156               (__v32hi) __B,
   1157               (__mmask32) __U);
   1158 }
   1159 
   1160 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1161 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
   1162 {
   1163   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1164                 (__v32hi) __B,
   1165                 (__v32hi) _mm512_setzero_hi(),
   1166                 (__mmask32) -1);
   1167 }
   1168 
   1169 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1170 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1171         __m512i __B)
   1172 {
   1173   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1174                 (__v32hi) __B,
   1175                 (__v32hi) __W,
   1176                 (__mmask32) __U);
   1177 }
   1178 
   1179 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1180 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1181 {
   1182   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1183                 (__v32hi) __B,
   1184                 (__v32hi) _mm512_setzero_hi(),
   1185                 (__mmask32) __U);
   1186 }
   1187 
   1188 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1189 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
   1190 {
   1191   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1192               (__v32hi) __B,
   1193               (__v32hi) _mm512_setzero_hi(),
   1194               (__mmask32) -1);
   1195 }
   1196 
   1197 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1198 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1199        __m512i __B)
   1200 {
   1201   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1202               (__v32hi) __B,
   1203               (__v32hi) __W,
   1204               (__mmask32) __U);
   1205 }
   1206 
   1207 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1208 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1209 {
   1210   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1211               (__v32hi) __B,
   1212               (__v32hi) _mm512_setzero_hi(),
   1213               (__mmask32) __U);
   1214 }
   1215 
   1216 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1217 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
   1218 {
   1219   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1220                (__v32hi) __B,
   1221                (__v32hi) _mm512_setzero_hi(),
   1222                (__mmask32) -1);
   1223 }
   1224 
   1225 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1226 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1227        __m512i __B)
   1228 {
   1229   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1230                (__v32hi) __B,
   1231                (__v32hi) __W,
   1232                (__mmask32) __U);
   1233 }
   1234 
   1235 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1236 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1237 {
   1238   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1239                (__v32hi) __B,
   1240                (__v32hi) _mm512_setzero_hi(),
   1241                (__mmask32) __U);
   1242 }
   1243 
   1244 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1245 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
   1246   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1247                  (__v64qi) __Y,
   1248                  (__v32hi) _mm512_setzero_hi(),
   1249                  (__mmask32) -1);
   1250 }
   1251 
   1252 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1253 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
   1254          __m512i __Y) {
   1255   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1256                  (__v64qi) __Y,
   1257                  (__v32hi) __W,
   1258                  (__mmask32) __U);
   1259 }
   1260 
   1261 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1262 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
   1263   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1264                  (__v64qi) __Y,
   1265                  (__v32hi) _mm512_setzero_hi(),
   1266                  (__mmask32) __U);
   1267 }
   1268 
   1269 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1270 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
   1271   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1272                (__v32hi) __B,
   1273                (__v16si) _mm512_setzero_si512(),
   1274                (__mmask16) -1);
   1275 }
   1276 
   1277 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1278 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
   1279       __m512i __B) {
   1280   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1281                (__v32hi) __B,
   1282                (__v16si) __W,
   1283                (__mmask16) __U);
   1284 }
   1285 
   1286 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1287 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
   1288   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1289                (__v32hi) __B,
   1290                (__v16si) _mm512_setzero_si512(),
   1291                (__mmask16) __U);
   1292 }
   1293 
   1294 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1295 _mm512_cvtsepi16_epi8 (__m512i __A) {
   1296   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1297                (__v32qi)_mm256_setzero_si256(),
   1298                (__mmask32) -1);
   1299 }
   1300 
   1301 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1302 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1303   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1304                (__v32qi)__O,
   1305                __M);
   1306 }
   1307 
   1308 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1309 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
   1310   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1311                (__v32qi) _mm256_setzero_si256(),
   1312                __M);
   1313 }
   1314 
   1315 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1316 _mm512_cvtusepi16_epi8 (__m512i __A) {
   1317   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1318                 (__v32qi) _mm256_setzero_si256(),
   1319                 (__mmask32) -1);
   1320 }
   1321 
   1322 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1323 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1324   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1325                 (__v32qi) __O,
   1326                 __M);
   1327 }
   1328 
   1329 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1330 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
   1331   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1332                 (__v32qi) _mm256_setzero_si256(),
   1333                 __M);
   1334 }
   1335 
   1336 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1337 _mm512_cvtepi16_epi8 (__m512i __A) {
   1338   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1339               (__v32qi) _mm256_setzero_si256(),
   1340               (__mmask32) -1);
   1341 }
   1342 
   1343 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1344 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1345   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1346               (__v32qi) __O,
   1347               __M);
   1348 }
   1349 
   1350 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1351 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
   1352   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1353               (__v32qi) _mm256_setzero_si256(),
   1354               __M);
   1355 }
   1356 
   1357 static __inline__ void __DEFAULT_FN_ATTRS
   1358 _mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1359 {
   1360   __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
   1361 }
   1362 
   1363 static __inline__ void __DEFAULT_FN_ATTRS
   1364 _mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1365 {
   1366   __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
   1367 }
   1368 
   1369 static __inline__ void __DEFAULT_FN_ATTRS
   1370 _mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1371 {
   1372   __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
   1373 }
   1374 
   1375 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1376 _mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
   1377   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
   1378                                           8,  64+8,   9, 64+9,
   1379                                           10, 64+10, 11, 64+11,
   1380                                           12, 64+12, 13, 64+13,
   1381                                           14, 64+14, 15, 64+15,
   1382                                           24, 64+24, 25, 64+25,
   1383                                           26, 64+26, 27, 64+27,
   1384                                           28, 64+28, 29, 64+29,
   1385                                           30, 64+30, 31, 64+31,
   1386                                           40, 64+40, 41, 64+41,
   1387                                           42, 64+42, 43, 64+43,
   1388                                           44, 64+44, 45, 64+45,
   1389                                           46, 64+46, 47, 64+47,
   1390                                           56, 64+56, 57, 64+57,
   1391                                           58, 64+58, 59, 64+59,
   1392                                           60, 64+60, 61, 64+61,
   1393                                           62, 64+62, 63, 64+63);
   1394 }
   1395 
   1396 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1397 _mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1398   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1399                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
   1400                                         (__v64qi)__W);
   1401 }
   1402 
   1403 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1404 _mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1405   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1406                                         (__v64qi)_mm512_unpackhi_epi8(__A, __B),
   1407                                         (__v64qi)_mm512_setzero_qi());
   1408 }
   1409 
   1410 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1411 _mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
   1412   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
   1413                                           4,  32+4,   5, 32+5,
   1414                                           6,  32+6,   7, 32+7,
   1415                                           12, 32+12, 13, 32+13,
   1416                                           14, 32+14, 15, 32+15,
   1417                                           20, 32+20, 21, 32+21,
   1418                                           22, 32+22, 23, 32+23,
   1419                                           28, 32+28, 29, 32+29,
   1420                                           30, 32+30, 31, 32+31);
   1421 }
   1422 
   1423 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1424 _mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1425   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1426                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
   1427                                        (__v32hi)__W);
   1428 }
   1429 
   1430 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1431 _mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1432   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1433                                        (__v32hi)_mm512_unpackhi_epi16(__A, __B),
   1434                                        (__v32hi)_mm512_setzero_hi());
   1435 }
   1436 
   1437 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1438 _mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
   1439   return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
   1440                                           0,  64+0,   1, 64+1,
   1441                                           2,  64+2,   3, 64+3,
   1442                                           4,  64+4,   5, 64+5,
   1443                                           6,  64+6,   7, 64+7,
   1444                                           16, 64+16, 17, 64+17,
   1445                                           18, 64+18, 19, 64+19,
   1446                                           20, 64+20, 21, 64+21,
   1447                                           22, 64+22, 23, 64+23,
   1448                                           32, 64+32, 33, 64+33,
   1449                                           34, 64+34, 35, 64+35,
   1450                                           36, 64+36, 37, 64+37,
   1451                                           38, 64+38, 39, 64+39,
   1452                                           48, 64+48, 49, 64+49,
   1453                                           50, 64+50, 51, 64+51,
   1454                                           52, 64+52, 53, 64+53,
   1455                                           54, 64+54, 55, 64+55);
   1456 }
   1457 
   1458 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1459 _mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1460   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1461                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
   1462                                         (__v64qi)__W);
   1463 }
   1464 
   1465 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1466 _mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1467   return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
   1468                                         (__v64qi)_mm512_unpacklo_epi8(__A, __B),
   1469                                         (__v64qi)_mm512_setzero_qi());
   1470 }
   1471 
   1472 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1473 _mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
   1474   return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
   1475                                           0,  32+0,   1, 32+1,
   1476                                           2,  32+2,   3, 32+3,
   1477                                           8,  32+8,   9, 32+9,
   1478                                           10, 32+10, 11, 32+11,
   1479                                           16, 32+16, 17, 32+17,
   1480                                           18, 32+18, 19, 32+19,
   1481                                           24, 32+24, 25, 32+25,
   1482                                           26, 32+26, 27, 32+27);
   1483 }
   1484 
   1485 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1486 _mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1487   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1488                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
   1489                                        (__v32hi)__W);
   1490 }
   1491 
   1492 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1493 _mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1494   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1495                                        (__v32hi)_mm512_unpacklo_epi16(__A, __B),
   1496                                        (__v32hi)_mm512_setzero_hi());
   1497 }
   1498 
   1499 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1500 _mm512_cvtepi8_epi16(__m256i __A)
   1501 {
   1502   /* This function always performs a signed extension, but __v32qi is a char
   1503      which may be signed or unsigned, so use __v32qs. */
   1504   return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
   1505 }
   1506 
   1507 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1508 _mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
   1509 {
   1510   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1511                                              (__v32hi)_mm512_cvtepi8_epi16(__A),
   1512                                              (__v32hi)__W);
   1513 }
   1514 
   1515 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1516 _mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
   1517 {
   1518   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1519                                              (__v32hi)_mm512_cvtepi8_epi16(__A),
   1520                                              (__v32hi)_mm512_setzero_hi());
   1521 }
   1522 
   1523 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1524 _mm512_cvtepu8_epi16(__m256i __A)
   1525 {
   1526   return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
   1527 }
   1528 
   1529 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1530 _mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
   1531 {
   1532   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1533                                              (__v32hi)_mm512_cvtepu8_epi16(__A),
   1534                                              (__v32hi)__W);
   1535 }
   1536 
   1537 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1538 _mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
   1539 {
   1540   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1541                                              (__v32hi)_mm512_cvtepu8_epi16(__A),
   1542                                              (__v32hi)_mm512_setzero_hi());
   1543 }
   1544 
   1545 
   1546 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
   1547   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
   1548                                          (__v64qi)(__m512i)(b), (int)(p), \
   1549                                          (__mmask64)-1); })
   1550 
   1551 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
   1552   (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
   1553                                          (__v64qi)(__m512i)(b), (int)(p), \
   1554                                          (__mmask64)(m)); })
   1555 
   1556 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
   1557   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
   1558                                           (__v64qi)(__m512i)(b), (int)(p), \
   1559                                           (__mmask64)-1); })
   1560 
   1561 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
   1562   (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
   1563                                           (__v64qi)(__m512i)(b), (int)(p), \
   1564                                           (__mmask64)(m)); })
   1565 
   1566 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
   1567   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
   1568                                          (__v32hi)(__m512i)(b), (int)(p), \
   1569                                          (__mmask32)-1); })
   1570 
   1571 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
   1572   (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
   1573                                          (__v32hi)(__m512i)(b), (int)(p), \
   1574                                          (__mmask32)(m)); })
   1575 
   1576 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
   1577   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
   1578                                           (__v32hi)(__m512i)(b), (int)(p), \
   1579                                           (__mmask32)-1); })
   1580 
   1581 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
   1582   (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
   1583                                           (__v32hi)(__m512i)(b), (int)(p), \
   1584                                           (__mmask32)(m)); })
   1585 
   1586 #define _mm512_shufflehi_epi16(A, imm) __extension__ ({ \
   1587   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
   1588                                    (__v32hi)_mm512_undefined_epi32(), \
   1589                                    0, 1, 2, 3, \
   1590                                    4  + (((imm) >> 0) & 0x3), \
   1591                                    4  + (((imm) >> 2) & 0x3), \
   1592                                    4  + (((imm) >> 4) & 0x3), \
   1593                                    4  + (((imm) >> 6) & 0x3), \
   1594                                    8, 9, 10, 11, \
   1595                                    12 + (((imm) >> 0) & 0x3), \
   1596                                    12 + (((imm) >> 2) & 0x3), \
   1597                                    12 + (((imm) >> 4) & 0x3), \
   1598                                    12 + (((imm) >> 6) & 0x3), \
   1599                                    16, 17, 18, 19, \
   1600                                    20 + (((imm) >> 0) & 0x3), \
   1601                                    20 + (((imm) >> 2) & 0x3), \
   1602                                    20 + (((imm) >> 4) & 0x3), \
   1603                                    20 + (((imm) >> 6) & 0x3), \
   1604                                    24, 25, 26, 27, \
   1605                                    28 + (((imm) >> 0) & 0x3), \
   1606                                    28 + (((imm) >> 2) & 0x3), \
   1607                                    28 + (((imm) >> 4) & 0x3), \
   1608                                    28 + (((imm) >> 6) & 0x3)); })
   1609 
   1610 #define _mm512_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
   1611   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1612                                       (__v32hi)_mm512_shufflehi_epi16((A), \
   1613                                                                       (imm)), \
   1614                                       (__v32hi)(__m512i)(W)); })
   1615 
   1616 #define _mm512_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
   1617   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1618                                       (__v32hi)_mm512_shufflehi_epi16((A), \
   1619                                                                       (imm)), \
   1620                                       (__v32hi)_mm512_setzero_hi()); })
   1621 
   1622 #define _mm512_shufflelo_epi16(A, imm) __extension__ ({ \
   1623   (__m512i)__builtin_shufflevector((__v32hi)(__m512i)(A), \
   1624                                    (__v32hi)_mm512_undefined_epi32(), \
   1625                                    0 + (((imm) >> 0) & 0x3), \
   1626                                    0 + (((imm) >> 2) & 0x3), \
   1627                                    0 + (((imm) >> 4) & 0x3), \
   1628                                    0 + (((imm) >> 6) & 0x3), \
   1629                                    4, 5, 6, 7, \
   1630                                    8 + (((imm) >> 0) & 0x3), \
   1631                                    8 + (((imm) >> 2) & 0x3), \
   1632                                    8 + (((imm) >> 4) & 0x3), \
   1633                                    8 + (((imm) >> 6) & 0x3), \
   1634                                    12, 13, 14, 15, \
   1635                                    16 + (((imm) >> 0) & 0x3), \
   1636                                    16 + (((imm) >> 2) & 0x3), \
   1637                                    16 + (((imm) >> 4) & 0x3), \
   1638                                    16 + (((imm) >> 6) & 0x3), \
   1639                                    20, 21, 22, 23, \
   1640                                    24 + (((imm) >> 0) & 0x3), \
   1641                                    24 + (((imm) >> 2) & 0x3), \
   1642                                    24 + (((imm) >> 4) & 0x3), \
   1643                                    24 + (((imm) >> 6) & 0x3), \
   1644                                    28, 29, 30, 31); })
   1645 
   1646 
   1647 #define _mm512_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
   1648   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1649                                       (__v32hi)_mm512_shufflelo_epi16((A), \
   1650                                                                       (imm)), \
   1651                                       (__v32hi)(__m512i)(W)); })
   1652 
   1653 
   1654 #define _mm512_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
   1655   (__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
   1656                                       (__v32hi)_mm512_shufflelo_epi16((A), \
   1657                                                                       (imm)), \
   1658                                       (__v32hi)_mm512_setzero_hi()); })
   1659 
   1660 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1661 _mm512_sllv_epi16(__m512i __A, __m512i __B)
   1662 {
   1663   return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
   1664 }
   1665 
   1666 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1667 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
   1668 {
   1669   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1670                                            (__v32hi)_mm512_sllv_epi16(__A, __B),
   1671                                            (__v32hi)__W);
   1672 }
   1673 
   1674 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1675 _mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
   1676 {
   1677   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1678                                            (__v32hi)_mm512_sllv_epi16(__A, __B),
   1679                                            (__v32hi)_mm512_setzero_hi());
   1680 }
   1681 
   1682 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1683 _mm512_sll_epi16(__m512i __A, __m128i __B)
   1684 {
   1685   return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
   1686 }
   1687 
   1688 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1689 _mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
   1690 {
   1691   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1692                                           (__v32hi)_mm512_sll_epi16(__A, __B),
   1693                                           (__v32hi)__W);
   1694 }
   1695 
   1696 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1697 _mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
   1698 {
   1699   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1700                                           (__v32hi)_mm512_sll_epi16(__A, __B),
   1701                                           (__v32hi)_mm512_setzero_hi());
   1702 }
   1703 
   1704 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1705 _mm512_slli_epi16(__m512i __A, int __B)
   1706 {
   1707   return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, __B);
   1708 }
   1709 
   1710 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1711 _mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
   1712 {
   1713   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1714                                          (__v32hi)_mm512_slli_epi16(__A, __B),
   1715                                          (__v32hi)__W);
   1716 }
   1717 
   1718 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1719 _mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, int __B)
   1720 {
   1721   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1722                                          (__v32hi)_mm512_slli_epi16(__A, __B),
   1723                                          (__v32hi)_mm512_setzero_hi());
   1724 }
   1725 
   1726 #define _mm512_bslli_epi128(a, imm) __extension__ ({ \
   1727   (__m512i)__builtin_shufflevector(                                          \
   1728        (__v64qi)_mm512_setzero_si512(),                                      \
   1729        (__v64qi)(__m512i)(a),                                                \
   1730        ((char)(imm)&0xF0) ?  0 : ((char)(imm)>0x0 ? 16 :  64) - (char)(imm), \
   1731        ((char)(imm)&0xF0) ?  1 : ((char)(imm)>0x1 ? 17 :  65) - (char)(imm), \
   1732        ((char)(imm)&0xF0) ?  2 : ((char)(imm)>0x2 ? 18 :  66) - (char)(imm), \
   1733        ((char)(imm)&0xF0) ?  3 : ((char)(imm)>0x3 ? 19 :  67) - (char)(imm), \
   1734        ((char)(imm)&0xF0) ?  4 : ((char)(imm)>0x4 ? 20 :  68) - (char)(imm), \
   1735        ((char)(imm)&0xF0) ?  5 : ((char)(imm)>0x5 ? 21 :  69) - (char)(imm), \
   1736        ((char)(imm)&0xF0) ?  6 : ((char)(imm)>0x6 ? 22 :  70) - (char)(imm), \
   1737        ((char)(imm)&0xF0) ?  7 : ((char)(imm)>0x7 ? 23 :  71) - (char)(imm), \
   1738        ((char)(imm)&0xF0) ?  8 : ((char)(imm)>0x8 ? 24 :  72) - (char)(imm), \
   1739        ((char)(imm)&0xF0) ?  9 : ((char)(imm)>0x9 ? 25 :  73) - (char)(imm), \
   1740        ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 :  74) - (char)(imm), \
   1741        ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 :  75) - (char)(imm), \
   1742        ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 :  76) - (char)(imm), \
   1743        ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 :  77) - (char)(imm), \
   1744        ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 :  78) - (char)(imm), \
   1745        ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 :  79) - (char)(imm), \
   1746        ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 :  80) - (char)(imm), \
   1747        ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 :  81) - (char)(imm), \
   1748        ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 :  82) - (char)(imm), \
   1749        ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 :  83) - (char)(imm), \
   1750        ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 :  84) - (char)(imm), \
   1751        ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 :  85) - (char)(imm), \
   1752        ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 :  86) - (char)(imm), \
   1753        ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 :  87) - (char)(imm), \
   1754        ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 :  88) - (char)(imm), \
   1755        ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 :  89) - (char)(imm), \
   1756        ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 :  90) - (char)(imm), \
   1757        ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 :  91) - (char)(imm), \
   1758        ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 :  92) - (char)(imm), \
   1759        ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 :  93) - (char)(imm), \
   1760        ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 :  94) - (char)(imm), \
   1761        ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 :  95) - (char)(imm), \
   1762        ((char)(imm)&0xF0) ? 32 : ((char)(imm)>0x0 ? 48 :  96) - (char)(imm), \
   1763        ((char)(imm)&0xF0) ? 33 : ((char)(imm)>0x1 ? 49 :  97) - (char)(imm), \
   1764        ((char)(imm)&0xF0) ? 34 : ((char)(imm)>0x2 ? 50 :  98) - (char)(imm), \
   1765        ((char)(imm)&0xF0) ? 35 : ((char)(imm)>0x3 ? 51 :  99) - (char)(imm), \
   1766        ((char)(imm)&0xF0) ? 36 : ((char)(imm)>0x4 ? 52 : 100) - (char)(imm), \
   1767        ((char)(imm)&0xF0) ? 37 : ((char)(imm)>0x5 ? 53 : 101) - (char)(imm), \
   1768        ((char)(imm)&0xF0) ? 38 : ((char)(imm)>0x6 ? 54 : 102) - (char)(imm), \
   1769        ((char)(imm)&0xF0) ? 39 : ((char)(imm)>0x7 ? 55 : 103) - (char)(imm), \
   1770        ((char)(imm)&0xF0) ? 40 : ((char)(imm)>0x8 ? 56 : 104) - (char)(imm), \
   1771        ((char)(imm)&0xF0) ? 41 : ((char)(imm)>0x9 ? 57 : 105) - (char)(imm), \
   1772        ((char)(imm)&0xF0) ? 42 : ((char)(imm)>0xA ? 58 : 106) - (char)(imm), \
   1773        ((char)(imm)&0xF0) ? 43 : ((char)(imm)>0xB ? 59 : 107) - (char)(imm), \
   1774        ((char)(imm)&0xF0) ? 44 : ((char)(imm)>0xC ? 60 : 108) - (char)(imm), \
   1775        ((char)(imm)&0xF0) ? 45 : ((char)(imm)>0xD ? 61 : 109) - (char)(imm), \
   1776        ((char)(imm)&0xF0) ? 46 : ((char)(imm)>0xE ? 62 : 110) - (char)(imm), \
   1777        ((char)(imm)&0xF0) ? 47 : ((char)(imm)>0xF ? 63 : 111) - (char)(imm), \
   1778        ((char)(imm)&0xF0) ? 48 : ((char)(imm)>0x0 ? 64 : 112) - (char)(imm), \
   1779        ((char)(imm)&0xF0) ? 49 : ((char)(imm)>0x1 ? 65 : 113) - (char)(imm), \
   1780        ((char)(imm)&0xF0) ? 50 : ((char)(imm)>0x2 ? 66 : 114) - (char)(imm), \
   1781        ((char)(imm)&0xF0) ? 51 : ((char)(imm)>0x3 ? 67 : 115) - (char)(imm), \
   1782        ((char)(imm)&0xF0) ? 52 : ((char)(imm)>0x4 ? 68 : 116) - (char)(imm), \
   1783        ((char)(imm)&0xF0) ? 53 : ((char)(imm)>0x5 ? 69 : 117) - (char)(imm), \
   1784        ((char)(imm)&0xF0) ? 54 : ((char)(imm)>0x6 ? 70 : 118) - (char)(imm), \
   1785        ((char)(imm)&0xF0) ? 55 : ((char)(imm)>0x7 ? 71 : 119) - (char)(imm), \
   1786        ((char)(imm)&0xF0) ? 56 : ((char)(imm)>0x8 ? 72 : 120) - (char)(imm), \
   1787        ((char)(imm)&0xF0) ? 57 : ((char)(imm)>0x9 ? 73 : 121) - (char)(imm), \
   1788        ((char)(imm)&0xF0) ? 58 : ((char)(imm)>0xA ? 74 : 122) - (char)(imm), \
   1789        ((char)(imm)&0xF0) ? 59 : ((char)(imm)>0xB ? 75 : 123) - (char)(imm), \
   1790        ((char)(imm)&0xF0) ? 60 : ((char)(imm)>0xC ? 76 : 124) - (char)(imm), \
   1791        ((char)(imm)&0xF0) ? 61 : ((char)(imm)>0xD ? 77 : 125) - (char)(imm), \
   1792        ((char)(imm)&0xF0) ? 62 : ((char)(imm)>0xE ? 78 : 126) - (char)(imm), \
   1793        ((char)(imm)&0xF0) ? 63 : ((char)(imm)>0xF ? 79 : 127) - (char)(imm)); })
   1794 
   1795 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1796 _mm512_srlv_epi16(__m512i __A, __m512i __B)
   1797 {
   1798   return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
   1799 }
   1800 
   1801 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1802 _mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
   1803 {
   1804   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1805                                            (__v32hi)_mm512_srlv_epi16(__A, __B),
   1806                                            (__v32hi)__W);
   1807 }
   1808 
   1809 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1810 _mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
   1811 {
   1812   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1813                                            (__v32hi)_mm512_srlv_epi16(__A, __B),
   1814                                            (__v32hi)_mm512_setzero_hi());
   1815 }
   1816 
   1817 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1818 _mm512_srav_epi16(__m512i __A, __m512i __B)
   1819 {
   1820   return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
   1821 }
   1822 
   1823 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1824 _mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
   1825 {
   1826   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1827                                            (__v32hi)_mm512_srav_epi16(__A, __B),
   1828                                            (__v32hi)__W);
   1829 }
   1830 
   1831 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1832 _mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
   1833 {
   1834   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1835                                            (__v32hi)_mm512_srav_epi16(__A, __B),
   1836                                            (__v32hi)_mm512_setzero_hi());
   1837 }
   1838 
   1839 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1840 _mm512_sra_epi16(__m512i __A, __m128i __B)
   1841 {
   1842   return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
   1843 }
   1844 
   1845 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1846 _mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
   1847 {
   1848   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1849                                           (__v32hi)_mm512_sra_epi16(__A, __B),
   1850                                           (__v32hi)__W);
   1851 }
   1852 
   1853 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1854 _mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
   1855 {
   1856   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1857                                           (__v32hi)_mm512_sra_epi16(__A, __B),
   1858                                           (__v32hi)_mm512_setzero_hi());
   1859 }
   1860 
   1861 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1862 _mm512_srai_epi16(__m512i __A, int __B)
   1863 {
   1864   return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, __B);
   1865 }
   1866 
   1867 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1868 _mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
   1869 {
   1870   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1871                                          (__v32hi)_mm512_srai_epi16(__A, __B),
   1872                                          (__v32hi)__W);
   1873 }
   1874 
   1875 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1876 _mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, int __B)
   1877 {
   1878   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1879                                          (__v32hi)_mm512_srai_epi16(__A, __B),
   1880                                          (__v32hi)_mm512_setzero_hi());
   1881 }
   1882 
   1883 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1884 _mm512_srl_epi16(__m512i __A, __m128i __B)
   1885 {
   1886   return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
   1887 }
   1888 
   1889 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1890 _mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
   1891 {
   1892   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1893                                           (__v32hi)_mm512_srl_epi16(__A, __B),
   1894                                           (__v32hi)__W);
   1895 }
   1896 
   1897 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1898 _mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
   1899 {
   1900   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1901                                           (__v32hi)_mm512_srl_epi16(__A, __B),
   1902                                           (__v32hi)_mm512_setzero_hi());
   1903 }
   1904 
   1905 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1906 _mm512_srli_epi16(__m512i __A, int __B)
   1907 {
   1908   return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, __B);
   1909 }
   1910 
   1911 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1912 _mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A, int __B)
   1913 {
   1914   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1915                                          (__v32hi)_mm512_srli_epi16(__A, __B),
   1916                                          (__v32hi)__W);
   1917 }
   1918 
   1919 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1920 _mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
   1921 {
   1922   return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
   1923                                          (__v32hi)_mm512_srli_epi16(__A, __B),
   1924                                          (__v32hi)_mm512_setzero_hi());
   1925 }
   1926 
   1927 #define _mm512_bsrli_epi128(a, imm) __extension__ ({ \
   1928   (__m512i)__builtin_shufflevector(                     \
   1929       (__v64qi)(__m512i)(a),                      \
   1930       (__v64qi)_mm512_setzero_si512(),            \
   1931       ((char)(imm)&0xF0) ?  64 : (char)(imm) + ((char)(imm)>0xF ?  48 : 0),  \
   1932       ((char)(imm)&0xF0) ?  65 : (char)(imm) + ((char)(imm)>0xE ?  49 : 1),  \
   1933       ((char)(imm)&0xF0) ?  66 : (char)(imm) + ((char)(imm)>0xD ?  50 : 2),  \
   1934       ((char)(imm)&0xF0) ?  67 : (char)(imm) + ((char)(imm)>0xC ?  51 : 3),  \
   1935       ((char)(imm)&0xF0) ?  68 : (char)(imm) + ((char)(imm)>0xB ?  52 : 4),  \
   1936       ((char)(imm)&0xF0) ?  69 : (char)(imm) + ((char)(imm)>0xA ?  53 : 5),  \
   1937       ((char)(imm)&0xF0) ?  70 : (char)(imm) + ((char)(imm)>0x9 ?  54 : 6),  \
   1938       ((char)(imm)&0xF0) ?  71 : (char)(imm) + ((char)(imm)>0x8 ?  55 : 7),  \
   1939       ((char)(imm)&0xF0) ?  72 : (char)(imm) + ((char)(imm)>0x7 ?  56 : 8),  \
   1940       ((char)(imm)&0xF0) ?  73 : (char)(imm) + ((char)(imm)>0x6 ?  57 : 9),  \
   1941       ((char)(imm)&0xF0) ?  74 : (char)(imm) + ((char)(imm)>0x5 ?  58 : 10), \
   1942       ((char)(imm)&0xF0) ?  75 : (char)(imm) + ((char)(imm)>0x4 ?  59 : 11), \
   1943       ((char)(imm)&0xF0) ?  76 : (char)(imm) + ((char)(imm)>0x3 ?  60 : 12), \
   1944       ((char)(imm)&0xF0) ?  77 : (char)(imm) + ((char)(imm)>0x2 ?  61 : 13), \
   1945       ((char)(imm)&0xF0) ?  78 : (char)(imm) + ((char)(imm)>0x1 ?  62 : 14), \
   1946       ((char)(imm)&0xF0) ?  79 : (char)(imm) + ((char)(imm)>0x0 ?  63 : 15), \
   1947       ((char)(imm)&0xF0) ?  80 : (char)(imm) + ((char)(imm)>0xF ?  64 : 16), \
   1948       ((char)(imm)&0xF0) ?  81 : (char)(imm) + ((char)(imm)>0xE ?  65 : 17), \
   1949       ((char)(imm)&0xF0) ?  82 : (char)(imm) + ((char)(imm)>0xD ?  66 : 18), \
   1950       ((char)(imm)&0xF0) ?  83 : (char)(imm) + ((char)(imm)>0xC ?  67 : 19), \
   1951       ((char)(imm)&0xF0) ?  84 : (char)(imm) + ((char)(imm)>0xB ?  68 : 20), \
   1952       ((char)(imm)&0xF0) ?  85 : (char)(imm) + ((char)(imm)>0xA ?  69 : 21), \
   1953       ((char)(imm)&0xF0) ?  86 : (char)(imm) + ((char)(imm)>0x9 ?  70 : 22), \
   1954       ((char)(imm)&0xF0) ?  87 : (char)(imm) + ((char)(imm)>0x8 ?  71 : 23), \
   1955       ((char)(imm)&0xF0) ?  88 : (char)(imm) + ((char)(imm)>0x7 ?  72 : 24), \
   1956       ((char)(imm)&0xF0) ?  89 : (char)(imm) + ((char)(imm)>0x6 ?  73 : 25), \
   1957       ((char)(imm)&0xF0) ?  90 : (char)(imm) + ((char)(imm)>0x5 ?  74 : 26), \
   1958       ((char)(imm)&0xF0) ?  91 : (char)(imm) + ((char)(imm)>0x4 ?  75 : 27), \
   1959       ((char)(imm)&0xF0) ?  92 : (char)(imm) + ((char)(imm)>0x3 ?  76 : 28), \
   1960       ((char)(imm)&0xF0) ?  93 : (char)(imm) + ((char)(imm)>0x2 ?  77 : 29), \
   1961       ((char)(imm)&0xF0) ?  94 : (char)(imm) + ((char)(imm)>0x1 ?  78 : 30), \
   1962       ((char)(imm)&0xF0) ?  95 : (char)(imm) + ((char)(imm)>0x0 ?  79 : 31), \
   1963       ((char)(imm)&0xF0) ?  96 : (char)(imm) + ((char)(imm)>0xF ?  80 : 32), \
   1964       ((char)(imm)&0xF0) ?  97 : (char)(imm) + ((char)(imm)>0xE ?  81 : 33), \
   1965       ((char)(imm)&0xF0) ?  98 : (char)(imm) + ((char)(imm)>0xD ?  82 : 34), \
   1966       ((char)(imm)&0xF0) ?  99 : (char)(imm) + ((char)(imm)>0xC ?  83 : 35), \
   1967       ((char)(imm)&0xF0) ? 100 : (char)(imm) + ((char)(imm)>0xB ?  84 : 36), \
   1968       ((char)(imm)&0xF0) ? 101 : (char)(imm) + ((char)(imm)>0xA ?  85 : 37), \
   1969       ((char)(imm)&0xF0) ? 102 : (char)(imm) + ((char)(imm)>0x9 ?  86 : 38), \
   1970       ((char)(imm)&0xF0) ? 103 : (char)(imm) + ((char)(imm)>0x8 ?  87 : 39), \
   1971       ((char)(imm)&0xF0) ? 104 : (char)(imm) + ((char)(imm)>0x7 ?  88 : 40), \
   1972       ((char)(imm)&0xF0) ? 105 : (char)(imm) + ((char)(imm)>0x6 ?  89 : 41), \
   1973       ((char)(imm)&0xF0) ? 106 : (char)(imm) + ((char)(imm)>0x5 ?  90 : 42), \
   1974       ((char)(imm)&0xF0) ? 107 : (char)(imm) + ((char)(imm)>0x4 ?  91 : 43), \
   1975       ((char)(imm)&0xF0) ? 108 : (char)(imm) + ((char)(imm)>0x3 ?  92 : 44), \
   1976       ((char)(imm)&0xF0) ? 109 : (char)(imm) + ((char)(imm)>0x2 ?  93 : 45), \
   1977       ((char)(imm)&0xF0) ? 110 : (char)(imm) + ((char)(imm)>0x1 ?  94 : 46), \
   1978       ((char)(imm)&0xF0) ? 111 : (char)(imm) + ((char)(imm)>0x0 ?  95 : 47), \
   1979       ((char)(imm)&0xF0) ? 112 : (char)(imm) + ((char)(imm)>0xF ?  96 : 48), \
   1980       ((char)(imm)&0xF0) ? 113 : (char)(imm) + ((char)(imm)>0xE ?  97 : 49), \
   1981       ((char)(imm)&0xF0) ? 114 : (char)(imm) + ((char)(imm)>0xD ?  98 : 50), \
   1982       ((char)(imm)&0xF0) ? 115 : (char)(imm) + ((char)(imm)>0xC ?  99 : 51), \
   1983       ((char)(imm)&0xF0) ? 116 : (char)(imm) + ((char)(imm)>0xB ? 100 : 52), \
   1984       ((char)(imm)&0xF0) ? 117 : (char)(imm) + ((char)(imm)>0xA ? 101 : 53), \
   1985       ((char)(imm)&0xF0) ? 118 : (char)(imm) + ((char)(imm)>0x9 ? 102 : 54), \
   1986       ((char)(imm)&0xF0) ? 119 : (char)(imm) + ((char)(imm)>0x8 ? 103 : 55), \
   1987       ((char)(imm)&0xF0) ? 120 : (char)(imm) + ((char)(imm)>0x7 ? 104 : 56), \
   1988       ((char)(imm)&0xF0) ? 121 : (char)(imm) + ((char)(imm)>0x6 ? 105 : 57), \
   1989       ((char)(imm)&0xF0) ? 122 : (char)(imm) + ((char)(imm)>0x5 ? 106 : 58), \
   1990       ((char)(imm)&0xF0) ? 123 : (char)(imm) + ((char)(imm)>0x4 ? 107 : 59), \
   1991       ((char)(imm)&0xF0) ? 124 : (char)(imm) + ((char)(imm)>0x3 ? 108 : 60), \
   1992       ((char)(imm)&0xF0) ? 125 : (char)(imm) + ((char)(imm)>0x2 ? 109 : 61), \
   1993       ((char)(imm)&0xF0) ? 126 : (char)(imm) + ((char)(imm)>0x1 ? 110 : 62), \
   1994       ((char)(imm)&0xF0) ? 127 : (char)(imm) + ((char)(imm)>0x0 ? 111 : 63)); })
   1995 
   1996 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1997 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
   1998 {
   1999   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
   2000                 (__v32hi) __A,
   2001                 (__v32hi) __W);
   2002 }
   2003 
   2004 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2005 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
   2006 {
   2007   return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
   2008                 (__v32hi) __A,
   2009                 (__v32hi) _mm512_setzero_hi ());
   2010 }
   2011 
   2012 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2013 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
   2014 {
   2015   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
   2016                 (__v64qi) __A,
   2017                 (__v64qi) __W);
   2018 }
   2019 
   2020 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2021 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
   2022 {
   2023   return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
   2024                 (__v64qi) __A,
   2025                 (__v64qi) _mm512_setzero_hi ());
   2026 }
   2027 
   2028 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2029 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
   2030 {
   2031   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
   2032                  (__v64qi) __O,
   2033                  __M);
   2034 }
   2035 
   2036 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2037 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
   2038 {
   2039   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
   2040                  (__v64qi)
   2041                  _mm512_setzero_qi(),
   2042                  __M);
   2043 }
   2044 
   2045 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2046 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
   2047 {
   2048   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
   2049                 (__mmask64) __B);
   2050 }
   2051 
   2052 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2053 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
   2054 {
   2055   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
   2056                 (__mmask32) __B);
   2057 }
   2058 
   2059 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2060 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
   2061 {
   2062   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
   2063                  (__v32hi) __W,
   2064                  (__mmask32) __U);
   2065 }
   2066 
   2067 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2068 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
   2069 {
   2070   return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
   2071                  (__v32hi)
   2072                  _mm512_setzero_hi (),
   2073                  (__mmask32) __U);
   2074 }
   2075 
   2076 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2077 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
   2078 {
   2079   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
   2080                  (__v64qi) __W,
   2081                  (__mmask64) __U);
   2082 }
   2083 
   2084 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2085 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
   2086 {
   2087   return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
   2088                  (__v64qi)
   2089                  _mm512_setzero_hi (),
   2090                  (__mmask64) __U);
   2091 }
   2092 static __inline__ void __DEFAULT_FN_ATTRS
   2093 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
   2094 {
   2095   __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
   2096              (__v32hi) __A,
   2097              (__mmask32) __U);
   2098 }
   2099 
   2100 static __inline__ void __DEFAULT_FN_ATTRS
   2101 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
   2102 {
   2103   __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
   2104              (__v64qi) __A,
   2105              (__mmask64) __U);
   2106 }
   2107 
   2108 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2109 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
   2110 {
   2111   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
   2112             (__v64qi) __B,
   2113             (__mmask64) -1);
   2114 }
   2115 
   2116 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2117 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   2118 {
   2119   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
   2120             (__v64qi) __B, __U);
   2121 }
   2122 
   2123 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2124 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
   2125 {
   2126   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
   2127             (__v32hi) __B,
   2128             (__mmask32) -1);
   2129 }
   2130 
   2131 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2132 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   2133 {
   2134   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
   2135             (__v32hi) __B, __U);
   2136 }
   2137 
   2138 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2139 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
   2140 {
   2141   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
   2142              (__v64qi) __B,
   2143              (__mmask64) -1);
   2144 }
   2145 
   2146 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2147 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
   2148 {
   2149   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
   2150              (__v64qi) __B, __U);
   2151 }
   2152 
   2153 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2154 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
   2155 {
   2156   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
   2157              (__v32hi) __B,
   2158              (__mmask32) -1);
   2159 }
   2160 
   2161 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2162 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
   2163 {
   2164   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
   2165              (__v32hi) __B, __U);
   2166 }
   2167 
   2168 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
   2169 _mm512_movepi8_mask (__m512i __A)
   2170 {
   2171   return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
   2172 }
   2173 
   2174 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
   2175 _mm512_movepi16_mask (__m512i __A)
   2176 {
   2177   return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
   2178 }
   2179 
   2180 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2181 _mm512_movm_epi8 (__mmask64 __A)
   2182 {
   2183   return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
   2184 }
   2185 
   2186 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2187 _mm512_movm_epi16 (__mmask32 __A)
   2188 {
   2189   return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
   2190 }
   2191 
   2192 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2193 _mm512_broadcastb_epi8 (__m128i __A)
   2194 {
   2195   return (__m512i)__builtin_shufflevector((__v16qi) __A,
   2196                                           (__v16qi)_mm_undefined_si128(),
   2197                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2198                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2199                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2200                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   2201 }
   2202 
   2203 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2204 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
   2205 {
   2206   return (__m512i)__builtin_ia32_selectb_512(__M,
   2207                                              (__v64qi) _mm512_broadcastb_epi8(__A),
   2208                                              (__v64qi) __O);
   2209 }
   2210 
   2211 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2212 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
   2213 {
   2214   return (__m512i)__builtin_ia32_selectb_512(__M,
   2215                                              (__v64qi) _mm512_broadcastb_epi8(__A),
   2216                                              (__v64qi) _mm512_setzero_si512());
   2217 }
   2218 
   2219 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2220 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
   2221 {
   2222   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
   2223                  (__v32hi) __O,
   2224                  __M);
   2225 }
   2226 
   2227 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2228 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
   2229 {
   2230   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
   2231                  (__v32hi) _mm512_setzero_hi(),
   2232                  __M);
   2233 }
   2234 
   2235 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2236 _mm512_broadcastw_epi16 (__m128i __A)
   2237 {
   2238   return (__m512i)__builtin_shufflevector((__v8hi) __A,
   2239                                           (__v8hi)_mm_undefined_si128(),
   2240                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   2241                                           0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
   2242 }
   2243 
   2244 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2245 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
   2246 {
   2247   return (__m512i)__builtin_ia32_selectw_512(__M,
   2248                                              (__v32hi) _mm512_broadcastw_epi16(__A),
   2249                                              (__v32hi) __O);
   2250 }
   2251 
   2252 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2253 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
   2254 {
   2255   return (__m512i)__builtin_ia32_selectw_512(__M,
   2256                                              (__v32hi) _mm512_broadcastw_epi16(__A),
   2257                                              (__v32hi) _mm512_setzero_si512());
   2258 }
   2259 
   2260 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2261 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
   2262 {
   2263   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
   2264                  (__v32hi) __A,
   2265                  (__v32hi) _mm512_undefined_epi32 (),
   2266                  (__mmask32) -1);
   2267 }
   2268 
   2269 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2270 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
   2271         __m512i __B)
   2272 {
   2273   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
   2274                  (__v32hi) __A,
   2275                  (__v32hi) _mm512_setzero_hi(),
   2276                  (__mmask32) __M);
   2277 }
   2278 
   2279 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2280 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
   2281              __m512i __B)
   2282 {
   2283   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
   2284                  (__v32hi) __A,
   2285                  (__v32hi) __W,
   2286                  (__mmask32) __M);
   2287 }
   2288 
   2289 #define _mm512_alignr_epi8(A, B, N) __extension__ ({\
   2290   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
   2291                                           (__v64qi)(__m512i)(B), (int)(N), \
   2292                                           (__v64qi)_mm512_undefined_pd(), \
   2293                                           (__mmask64)-1); })
   2294 
   2295 #define _mm512_mask_alignr_epi8(W, U, A, B, N) __extension__({\
   2296   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
   2297                                           (__v64qi)(__m512i)(B), (int)(N), \
   2298                                           (__v64qi)(__m512i)(W), \
   2299                                           (__mmask64)(U)); })
   2300 
   2301 #define _mm512_maskz_alignr_epi8(U, A, B, N) __extension__({\
   2302   (__m512i)__builtin_ia32_palignr512_mask((__v64qi)(__m512i)(A), \
   2303                                           (__v64qi)(__m512i)(B), (int)(N), \
   2304                                           (__v64qi)_mm512_setzero_si512(), \
   2305                                           (__mmask64)(U)); })
   2306 
   2307 #define _mm512_dbsad_epu8(A, B, imm) __extension__ ({\
   2308   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
   2309                                            (__v64qi)(__m512i)(B), (int)(imm), \
   2310                                            (__v32hi)_mm512_undefined_epi32(), \
   2311                                            (__mmask32)-1); })
   2312 
   2313 #define _mm512_mask_dbsad_epu8(W, U, A, B, imm) ({\
   2314   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
   2315                                            (__v64qi)(__m512i)(B), (int)(imm), \
   2316                                            (__v32hi)(__m512i)(W), \
   2317                                            (__mmask32)(U)); })
   2318 
   2319 #define _mm512_maskz_dbsad_epu8(U, A, B, imm) ({\
   2320   (__m512i)__builtin_ia32_dbpsadbw512_mask((__v64qi)(__m512i)(A), \
   2321                                            (__v64qi)(__m512i)(B), (int)(imm), \
   2322                                            (__v32hi)_mm512_setzero_hi(), \
   2323                                            (__mmask32)(U)); })
   2324 
   2325 static __inline__ __m512i __DEFAULT_FN_ATTRS
   2326 _mm512_sad_epu8 (__m512i __A, __m512i __B)
   2327 {
   2328  return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
   2329                (__v64qi) __B);
   2330 }
   2331 
   2332 
   2333 
   2334 #undef __DEFAULT_FN_ATTRS
   2335 
   2336 #endif
   2337