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