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 typedef char __v64qi __attribute__ ((__vector_size__ (64)));
     34 typedef short __v32hi __attribute__ ((__vector_size__ (64)));
     35 
     36 /* Define the default attributes for the functions in this file. */
     37 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
     38 
     39 static  __inline __v64qi __DEFAULT_FN_ATTRS
     40 _mm512_setzero_qi(void) {
     41   return (__v64qi){ 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                        0, 0, 0, 0, 0, 0, 0, 0,
     48                        0, 0, 0, 0, 0, 0, 0, 0 };
     49 }
     50 
     51 static  __inline __v32hi __DEFAULT_FN_ATTRS
     52 _mm512_setzero_hi(void) {
     53   return (__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
     54                        0, 0, 0, 0, 0, 0, 0, 0,
     55                        0, 0, 0, 0, 0, 0, 0, 0,
     56                        0, 0, 0, 0, 0, 0, 0, 0 };
     57 }
     58 
     59 /* Integer compare */
     60 
     61 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     62 _mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
     63   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
     64                                                    (__mmask64)-1);
     65 }
     66 
     67 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     68 _mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     69   return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
     70                                                    __u);
     71 }
     72 
     73 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     74 _mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
     75   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
     76                                                  (__mmask64)-1);
     77 }
     78 
     79 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
     80 _mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     81   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
     82                                                  __u);
     83 }
     84 
     85 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
     86 _mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
     87   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
     88                                                    (__mmask32)-1);
     89 }
     90 
     91 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
     92 _mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     93   return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
     94                                                    __u);
     95 }
     96 
     97 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
     98 _mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
     99   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
    100                                                  (__mmask32)-1);
    101 }
    102 
    103 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    104 _mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    105   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
    106                                                  __u);
    107 }
    108 
    109 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    110 _mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
    111   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    112                                                 (__mmask64)-1);
    113 }
    114 
    115 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    116 _mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    117   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    118                                                 __u);
    119 }
    120 
    121 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    122 _mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
    123   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    124                                                  (__mmask64)-1);
    125 }
    126 
    127 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    128 _mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    129   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
    130                                                  __u);
    131 }
    132 
    133 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    134 _mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
    135   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    136                                                 (__mmask32)-1);
    137 }
    138 
    139 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    140 _mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    141   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    142                                                 __u);
    143 }
    144 
    145 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    146 _mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
    147   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    148                                                  (__mmask32)-1);
    149 }
    150 
    151 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    152 _mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    153   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
    154                                                  __u);
    155 }
    156 
    157 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    158 _mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
    159   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
    160                                                    (__mmask64)-1);
    161 }
    162 
    163 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    164 _mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    165   return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
    166                                                    __u);
    167 }
    168 
    169 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    170 _mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
    171   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
    172                                                  (__mmask64)-1);
    173 }
    174 
    175 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    176 _mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    177   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
    178                                                  __u);
    179 }
    180 
    181 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    182 _mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
    183   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
    184                                                    (__mmask32)-1);
    185 }
    186 
    187 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    188 _mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    189   return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
    190                                                    __u);
    191 }
    192 
    193 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    194 _mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
    195   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
    196                                                  (__mmask32)-1);
    197 }
    198 
    199 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    200 _mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    201   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
    202                                                  __u);
    203 }
    204 
    205 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    206 _mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
    207   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    208                                                 (__mmask64)-1);
    209 }
    210 
    211 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    212 _mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    213   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    214                                                 __u);
    215 }
    216 
    217 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    218 _mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
    219   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    220                                                  (__mmask64)-1);
    221 }
    222 
    223 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    224 _mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    225   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
    226                                                  __u);
    227 }
    228 
    229 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    230 _mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
    231   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    232                                                 (__mmask32)-1);
    233 }
    234 
    235 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    236 _mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    237   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    238                                                 __u);
    239 }
    240 
    241 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    242 _mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
    243   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    244                                                  (__mmask32)-1);
    245 }
    246 
    247 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    248 _mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    249   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
    250                                                  __u);
    251 }
    252 
    253 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    254 _mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
    255   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    256                                                 (__mmask64)-1);
    257 }
    258 
    259 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    260 _mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    261   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    262                                                 __u);
    263 }
    264 
    265 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    266 _mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
    267   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    268                                                  (__mmask64)-1);
    269 }
    270 
    271 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    272 _mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    273   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
    274                                                  __u);
    275 }
    276 
    277 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    278 _mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
    279   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    280                                                 (__mmask32)-1);
    281 }
    282 
    283 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    284 _mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    285   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    286                                                 __u);
    287 }
    288 
    289 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    290 _mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
    291   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    292                                                  (__mmask32)-1);
    293 }
    294 
    295 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    296 _mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    297   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
    298                                                  __u);
    299 }
    300 
    301 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    302 _mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
    303   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    304                                                 (__mmask64)-1);
    305 }
    306 
    307 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    308 _mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    309   return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    310                                                 __u);
    311 }
    312 
    313 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    314 _mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
    315   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    316                                                  (__mmask64)-1);
    317 }
    318 
    319 static __inline__ __mmask64 __DEFAULT_FN_ATTRS
    320 _mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    321   return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
    322                                                  __u);
    323 }
    324 
    325 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    326 _mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
    327   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    328                                                 (__mmask32)-1);
    329 }
    330 
    331 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    332 _mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    333   return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    334                                                 __u);
    335 }
    336 
    337 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    338 _mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
    339   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    340                                                  (__mmask32)-1);
    341 }
    342 
    343 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
    344 _mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    345   return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
    346                                                  __u);
    347 }
    348 
    349 static __inline__ __m512i __DEFAULT_FN_ATTRS
    350 _mm512_add_epi8 (__m512i __A, __m512i __B) {
    351   return (__m512i) ((__v64qi) __A + (__v64qi) __B);
    352 }
    353 
    354 static __inline__ __m512i __DEFAULT_FN_ATTRS
    355 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    356   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
    357              (__v64qi) __B,
    358              (__v64qi) __W,
    359              (__mmask64) __U);
    360 }
    361 
    362 static __inline__ __m512i __DEFAULT_FN_ATTRS
    363 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
    364   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
    365              (__v64qi) __B,
    366              (__v64qi) _mm512_setzero_qi(),
    367              (__mmask64) __U);
    368 }
    369 
    370 static __inline__ __m512i __DEFAULT_FN_ATTRS
    371 _mm512_sub_epi8 (__m512i __A, __m512i __B) {
    372   return (__m512i) ((__v64qi) __A - (__v64qi) __B);
    373 }
    374 
    375 static __inline__ __m512i __DEFAULT_FN_ATTRS
    376 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    377   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
    378              (__v64qi) __B,
    379              (__v64qi) __W,
    380              (__mmask64) __U);
    381 }
    382 
    383 static __inline__ __m512i __DEFAULT_FN_ATTRS
    384 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
    385   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
    386              (__v64qi) __B,
    387              (__v64qi) _mm512_setzero_qi(),
    388              (__mmask64) __U);
    389 }
    390 
    391 static __inline__ __m512i __DEFAULT_FN_ATTRS
    392 _mm512_add_epi16 (__m512i __A, __m512i __B) {
    393   return (__m512i) ((__v32hi) __A + (__v32hi) __B);
    394 }
    395 
    396 static __inline__ __m512i __DEFAULT_FN_ATTRS
    397 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    398   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
    399              (__v32hi) __B,
    400              (__v32hi) __W,
    401              (__mmask32) __U);
    402 }
    403 
    404 static __inline__ __m512i __DEFAULT_FN_ATTRS
    405 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    406   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
    407              (__v32hi) __B,
    408              (__v32hi) _mm512_setzero_hi(),
    409              (__mmask32) __U);
    410 }
    411 
    412 static __inline__ __m512i __DEFAULT_FN_ATTRS
    413 _mm512_sub_epi16 (__m512i __A, __m512i __B) {
    414   return (__m512i) ((__v32hi) __A - (__v32hi) __B);
    415 }
    416 
    417 static __inline__ __m512i __DEFAULT_FN_ATTRS
    418 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    419   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
    420              (__v32hi) __B,
    421              (__v32hi) __W,
    422              (__mmask32) __U);
    423 }
    424 
    425 static __inline__ __m512i __DEFAULT_FN_ATTRS
    426 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    427   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
    428              (__v32hi) __B,
    429              (__v32hi) _mm512_setzero_hi(),
    430              (__mmask32) __U);
    431 }
    432 
    433 static __inline__ __m512i __DEFAULT_FN_ATTRS
    434 _mm512_mullo_epi16 (__m512i __A, __m512i __B) {
    435   return (__m512i) ((__v32hi) __A * (__v32hi) __B);
    436 }
    437 
    438 static __inline__ __m512i __DEFAULT_FN_ATTRS
    439 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    440   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
    441               (__v32hi) __B,
    442               (__v32hi) __W,
    443               (__mmask32) __U);
    444 }
    445 
    446 static __inline__ __m512i __DEFAULT_FN_ATTRS
    447 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    448   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
    449               (__v32hi) __B,
    450               (__v32hi) _mm512_setzero_hi(),
    451               (__mmask32) __U);
    452 }
    453 
    454 static __inline__ __m512i __DEFAULT_FN_ATTRS
    455 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
    456 {
    457   return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
    458               (__v64qi) __W,
    459               (__mmask64) __U);
    460 }
    461 
    462 static __inline__ __m512i __DEFAULT_FN_ATTRS
    463 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
    464 {
    465   return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
    466               (__v32hi) __W,
    467               (__mmask32) __U);
    468 }
    469 
    470 static __inline__ __m512i __DEFAULT_FN_ATTRS
    471 _mm512_abs_epi8 (__m512i __A)
    472 {
    473   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
    474               (__v64qi) _mm512_setzero_qi(),
    475               (__mmask64) -1);
    476 }
    477 
    478 static __inline__ __m512i __DEFAULT_FN_ATTRS
    479 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
    480 {
    481   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
    482               (__v64qi) __W,
    483               (__mmask64) __U);
    484 }
    485 
    486 static __inline__ __m512i __DEFAULT_FN_ATTRS
    487 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
    488 {
    489   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
    490               (__v64qi) _mm512_setzero_qi(),
    491               (__mmask64) __U);
    492 }
    493 
    494 static __inline__ __m512i __DEFAULT_FN_ATTRS
    495 _mm512_abs_epi16 (__m512i __A)
    496 {
    497   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
    498               (__v32hi) _mm512_setzero_hi(),
    499               (__mmask32) -1);
    500 }
    501 
    502 static __inline__ __m512i __DEFAULT_FN_ATTRS
    503 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
    504 {
    505   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
    506               (__v32hi) __W,
    507               (__mmask32) __U);
    508 }
    509 
    510 static __inline__ __m512i __DEFAULT_FN_ATTRS
    511 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
    512 {
    513   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
    514               (__v32hi) _mm512_setzero_hi(),
    515               (__mmask32) __U);
    516 }
    517 
    518 static __inline__ __m512i __DEFAULT_FN_ATTRS
    519 _mm512_packs_epi32 (__m512i __A, __m512i __B)
    520 {
    521   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
    522               (__v16si) __B,
    523               (__v32hi) _mm512_setzero_hi(),
    524               (__mmask32) -1);
    525 }
    526 
    527 static __inline__ __m512i __DEFAULT_FN_ATTRS
    528 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
    529 {
    530   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
    531               (__v16si) __B,
    532               (__v32hi) _mm512_setzero_hi(),
    533               __M);
    534 }
    535 
    536 static __inline__ __m512i __DEFAULT_FN_ATTRS
    537 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
    538        __m512i __B)
    539 {
    540   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
    541               (__v16si) __B,
    542               (__v32hi) __W,
    543               __M);
    544 }
    545 
    546 static __inline__ __m512i __DEFAULT_FN_ATTRS
    547 _mm512_packs_epi16 (__m512i __A, __m512i __B)
    548 {
    549   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
    550               (__v32hi) __B,
    551               (__v64qi) _mm512_setzero_qi(),
    552               (__mmask64) -1);
    553 }
    554 
    555 static __inline__ __m512i __DEFAULT_FN_ATTRS
    556 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
    557        __m512i __B)
    558 {
    559   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
    560               (__v32hi) __B,
    561               (__v64qi) __W,
    562               (__mmask64) __M);
    563 }
    564 
    565 static __inline__ __m512i __DEFAULT_FN_ATTRS
    566 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
    567 {
    568   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
    569               (__v32hi) __B,
    570               (__v64qi) _mm512_setzero_qi(),
    571               __M);
    572 }
    573 
    574 static __inline__ __m512i __DEFAULT_FN_ATTRS
    575 _mm512_packus_epi32 (__m512i __A, __m512i __B)
    576 {
    577   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
    578               (__v16si) __B,
    579               (__v32hi) _mm512_setzero_hi(),
    580               (__mmask32) -1);
    581 }
    582 
    583 static __inline__ __m512i __DEFAULT_FN_ATTRS
    584 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
    585 {
    586   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
    587               (__v16si) __B,
    588               (__v32hi) _mm512_setzero_hi(),
    589               __M);
    590 }
    591 
    592 static __inline__ __m512i __DEFAULT_FN_ATTRS
    593 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
    594         __m512i __B)
    595 {
    596   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
    597               (__v16si) __B,
    598               (__v32hi) __W,
    599               __M);
    600 }
    601 
    602 static __inline__ __m512i __DEFAULT_FN_ATTRS
    603 _mm512_packus_epi16 (__m512i __A, __m512i __B)
    604 {
    605   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
    606               (__v32hi) __B,
    607               (__v64qi) _mm512_setzero_qi(),
    608               (__mmask64) -1);
    609 }
    610 
    611 static __inline__ __m512i __DEFAULT_FN_ATTRS
    612 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
    613         __m512i __B)
    614 {
    615   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
    616               (__v32hi) __B,
    617               (__v64qi) __W,
    618               (__mmask64) __M);
    619 }
    620 
    621 static __inline__ __m512i __DEFAULT_FN_ATTRS
    622 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
    623 {
    624   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
    625               (__v32hi) __B,
    626               (__v64qi) _mm512_setzero_qi(),
    627               (__mmask64) __M);
    628 }
    629 
    630 static __inline__ __m512i __DEFAULT_FN_ATTRS
    631 _mm512_adds_epi8 (__m512i __A, __m512i __B)
    632 {
    633   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    634               (__v64qi) __B,
    635               (__v64qi) _mm512_setzero_qi(),
    636               (__mmask64) -1);
    637 }
    638 
    639 static __inline__ __m512i __DEFAULT_FN_ATTRS
    640 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
    641            __m512i __B)
    642 {
    643   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    644               (__v64qi) __B,
    645               (__v64qi) __W,
    646               (__mmask64) __U);
    647 }
    648 
    649 static __inline__ __m512i __DEFAULT_FN_ATTRS
    650 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
    651 {
    652   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
    653               (__v64qi) __B,
    654               (__v64qi) _mm512_setzero_qi(),
    655               (__mmask64) __U);
    656 }
    657 
    658 static __inline__ __m512i __DEFAULT_FN_ATTRS
    659 _mm512_adds_epi16 (__m512i __A, __m512i __B)
    660 {
    661   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    662               (__v32hi) __B,
    663               (__v32hi) _mm512_setzero_hi(),
    664               (__mmask32) -1);
    665 }
    666 
    667 static __inline__ __m512i __DEFAULT_FN_ATTRS
    668 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
    669       __m512i __B)
    670 {
    671   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    672               (__v32hi) __B,
    673               (__v32hi) __W,
    674               (__mmask32) __U);
    675 }
    676 
    677 static __inline__ __m512i __DEFAULT_FN_ATTRS
    678 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
    679 {
    680   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
    681               (__v32hi) __B,
    682               (__v32hi) _mm512_setzero_hi(),
    683               (__mmask32) __U);
    684 }
    685 
    686 static __inline__ __m512i __DEFAULT_FN_ATTRS
    687 _mm512_adds_epu8 (__m512i __A, __m512i __B)
    688 {
    689   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    690               (__v64qi) __B,
    691               (__v64qi) _mm512_setzero_qi(),
    692               (__mmask64) -1);
    693 }
    694 
    695 static __inline__ __m512i __DEFAULT_FN_ATTRS
    696 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    697            __m512i __B)
    698 {
    699   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    700               (__v64qi) __B,
    701               (__v64qi) __W,
    702               (__mmask64) __U);
    703 }
    704 
    705 static __inline__ __m512i __DEFAULT_FN_ATTRS
    706 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    707 {
    708   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
    709               (__v64qi) __B,
    710               (__v64qi) _mm512_setzero_qi(),
    711               (__mmask64) __U);
    712 }
    713 
    714 static __inline__ __m512i __DEFAULT_FN_ATTRS
    715 _mm512_adds_epu16 (__m512i __A, __m512i __B)
    716 {
    717   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    718               (__v32hi) __B,
    719               (__v32hi) _mm512_setzero_hi(),
    720               (__mmask32) -1);
    721 }
    722 
    723 static __inline__ __m512i __DEFAULT_FN_ATTRS
    724 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    725       __m512i __B)
    726 {
    727   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    728               (__v32hi) __B,
    729               (__v32hi) __W,
    730               (__mmask32) __U);
    731 }
    732 
    733 static __inline__ __m512i __DEFAULT_FN_ATTRS
    734 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    735 {
    736   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
    737               (__v32hi) __B,
    738               (__v32hi) _mm512_setzero_hi(),
    739               (__mmask32) __U);
    740 }
    741 
    742 static __inline__ __m512i __DEFAULT_FN_ATTRS
    743 _mm512_avg_epu8 (__m512i __A, __m512i __B)
    744 {
    745   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    746               (__v64qi) __B,
    747               (__v64qi) _mm512_setzero_qi(),
    748               (__mmask64) -1);
    749 }
    750 
    751 static __inline__ __m512i __DEFAULT_FN_ATTRS
    752 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
    753           __m512i __B)
    754 {
    755   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    756               (__v64qi) __B,
    757               (__v64qi) __W,
    758               (__mmask64) __U);
    759 }
    760 
    761 static __inline__ __m512i __DEFAULT_FN_ATTRS
    762 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
    763 {
    764   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
    765               (__v64qi) __B,
    766               (__v64qi) _mm512_setzero_qi(),
    767               (__mmask64) __U);
    768 }
    769 
    770 static __inline__ __m512i __DEFAULT_FN_ATTRS
    771 _mm512_avg_epu16 (__m512i __A, __m512i __B)
    772 {
    773   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    774               (__v32hi) __B,
    775               (__v32hi) _mm512_setzero_hi(),
    776               (__mmask32) -1);
    777 }
    778 
    779 static __inline__ __m512i __DEFAULT_FN_ATTRS
    780 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
    781            __m512i __B)
    782 {
    783   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    784               (__v32hi) __B,
    785               (__v32hi) __W,
    786               (__mmask32) __U);
    787 }
    788 
    789 static __inline__ __m512i __DEFAULT_FN_ATTRS
    790 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
    791 {
    792   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
    793               (__v32hi) __B,
    794               (__v32hi) _mm512_setzero_hi(),
    795               (__mmask32) __U);
    796 }
    797 
    798 static __inline__ __m512i __DEFAULT_FN_ATTRS
    799 _mm512_max_epi8 (__m512i __A, __m512i __B)
    800 {
    801   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    802               (__v64qi) __B,
    803               (__v64qi) _mm512_setzero_qi(),
    804               (__mmask64) -1);
    805 }
    806 
    807 static __inline__ __m512i __DEFAULT_FN_ATTRS
    808 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
    809 {
    810   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    811               (__v64qi) __B,
    812               (__v64qi) _mm512_setzero_qi(),
    813               (__mmask64) __M);
    814 }
    815 
    816 static __inline__ __m512i __DEFAULT_FN_ATTRS
    817 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
    818           __m512i __B)
    819 {
    820   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
    821               (__v64qi) __B,
    822               (__v64qi) __W,
    823               (__mmask64) __M);
    824 }
    825 
    826 static __inline__ __m512i __DEFAULT_FN_ATTRS
    827 _mm512_max_epi16 (__m512i __A, __m512i __B)
    828 {
    829   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    830               (__v32hi) __B,
    831               (__v32hi) _mm512_setzero_hi(),
    832               (__mmask32) -1);
    833 }
    834 
    835 static __inline__ __m512i __DEFAULT_FN_ATTRS
    836 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
    837 {
    838   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    839               (__v32hi) __B,
    840               (__v32hi) _mm512_setzero_hi(),
    841               (__mmask32) __M);
    842 }
    843 
    844 static __inline__ __m512i __DEFAULT_FN_ATTRS
    845 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    846            __m512i __B)
    847 {
    848   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
    849               (__v32hi) __B,
    850               (__v32hi) __W,
    851               (__mmask32) __M);
    852 }
    853 
    854 static __inline__ __m512i __DEFAULT_FN_ATTRS
    855 _mm512_max_epu8 (__m512i __A, __m512i __B)
    856 {
    857   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    858               (__v64qi) __B,
    859               (__v64qi) _mm512_setzero_qi(),
    860               (__mmask64) -1);
    861 }
    862 
    863 static __inline__ __m512i __DEFAULT_FN_ATTRS
    864 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
    865 {
    866   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    867               (__v64qi) __B,
    868               (__v64qi) _mm512_setzero_qi(),
    869               (__mmask64) __M);
    870 }
    871 
    872 static __inline__ __m512i __DEFAULT_FN_ATTRS
    873 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
    874           __m512i __B)
    875 {
    876   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
    877               (__v64qi) __B,
    878               (__v64qi) __W,
    879               (__mmask64) __M);
    880 }
    881 
    882 static __inline__ __m512i __DEFAULT_FN_ATTRS
    883 _mm512_max_epu16 (__m512i __A, __m512i __B)
    884 {
    885   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    886               (__v32hi) __B,
    887               (__v32hi) _mm512_setzero_hi(),
    888               (__mmask32) -1);
    889 }
    890 
    891 static __inline__ __m512i __DEFAULT_FN_ATTRS
    892 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
    893 {
    894   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    895               (__v32hi) __B,
    896               (__v32hi) _mm512_setzero_hi(),
    897               (__mmask32) __M);
    898 }
    899 
    900 static __inline__ __m512i __DEFAULT_FN_ATTRS
    901 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
    902            __m512i __B)
    903 {
    904   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
    905               (__v32hi) __B,
    906               (__v32hi) __W,
    907               (__mmask32) __M);
    908 }
    909 
    910 static __inline__ __m512i __DEFAULT_FN_ATTRS
    911 _mm512_min_epi8 (__m512i __A, __m512i __B)
    912 {
    913   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    914               (__v64qi) __B,
    915               (__v64qi) _mm512_setzero_qi(),
    916               (__mmask64) -1);
    917 }
    918 
    919 static __inline__ __m512i __DEFAULT_FN_ATTRS
    920 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
    921 {
    922   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    923               (__v64qi) __B,
    924               (__v64qi) _mm512_setzero_qi(),
    925               (__mmask64) __M);
    926 }
    927 
    928 static __inline__ __m512i __DEFAULT_FN_ATTRS
    929 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
    930           __m512i __B)
    931 {
    932   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
    933               (__v64qi) __B,
    934               (__v64qi) __W,
    935               (__mmask64) __M);
    936 }
    937 
    938 static __inline__ __m512i __DEFAULT_FN_ATTRS
    939 _mm512_min_epi16 (__m512i __A, __m512i __B)
    940 {
    941   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    942               (__v32hi) __B,
    943               (__v32hi) _mm512_setzero_hi(),
    944               (__mmask32) -1);
    945 }
    946 
    947 static __inline__ __m512i __DEFAULT_FN_ATTRS
    948 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
    949 {
    950   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    951               (__v32hi) __B,
    952               (__v32hi) _mm512_setzero_hi(),
    953               (__mmask32) __M);
    954 }
    955 
    956 static __inline__ __m512i __DEFAULT_FN_ATTRS
    957 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
    958            __m512i __B)
    959 {
    960   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
    961               (__v32hi) __B,
    962               (__v32hi) __W,
    963               (__mmask32) __M);
    964 }
    965 
    966 static __inline__ __m512i __DEFAULT_FN_ATTRS
    967 _mm512_min_epu8 (__m512i __A, __m512i __B)
    968 {
    969   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    970               (__v64qi) __B,
    971               (__v64qi) _mm512_setzero_qi(),
    972               (__mmask64) -1);
    973 }
    974 
    975 static __inline__ __m512i __DEFAULT_FN_ATTRS
    976 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
    977 {
    978   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    979               (__v64qi) __B,
    980               (__v64qi) _mm512_setzero_qi(),
    981               (__mmask64) __M);
    982 }
    983 
    984 static __inline__ __m512i __DEFAULT_FN_ATTRS
    985 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
    986           __m512i __B)
    987 {
    988   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
    989               (__v64qi) __B,
    990               (__v64qi) __W,
    991               (__mmask64) __M);
    992 }
    993 
    994 static __inline__ __m512i __DEFAULT_FN_ATTRS
    995 _mm512_min_epu16 (__m512i __A, __m512i __B)
    996 {
    997   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
    998               (__v32hi) __B,
    999               (__v32hi) _mm512_setzero_hi(),
   1000               (__mmask32) -1);
   1001 }
   1002 
   1003 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1004 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
   1005 {
   1006   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
   1007               (__v32hi) __B,
   1008               (__v32hi) _mm512_setzero_hi(),
   1009               (__mmask32) __M);
   1010 }
   1011 
   1012 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1013 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
   1014            __m512i __B)
   1015 {
   1016   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
   1017               (__v32hi) __B,
   1018               (__v32hi) __W,
   1019               (__mmask32) __M);
   1020 }
   1021 
   1022 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1023 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
   1024 {
   1025   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1026               (__v64qi) __B,
   1027               (__v64qi) _mm512_setzero_qi(),
   1028               (__mmask64) -1);
   1029 }
   1030 
   1031 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1032 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1033         __m512i __B)
   1034 {
   1035   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1036               (__v64qi) __B,
   1037               (__v64qi) __W,
   1038               (__mmask64) __U);
   1039 }
   1040 
   1041 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1042 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1043 {
   1044   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
   1045               (__v64qi) __B,
   1046               (__v64qi) _mm512_setzero_qi(),
   1047               (__mmask64) __U);
   1048 }
   1049 
   1050 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1051 _mm512_subs_epi8 (__m512i __A, __m512i __B)
   1052 {
   1053   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1054               (__v64qi) __B,
   1055               (__v64qi) _mm512_setzero_qi(),
   1056               (__mmask64) -1);
   1057 }
   1058 
   1059 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1060 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1061            __m512i __B)
   1062 {
   1063   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1064               (__v64qi) __B,
   1065               (__v64qi) __W,
   1066               (__mmask64) __U);
   1067 }
   1068 
   1069 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1070 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
   1071 {
   1072   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
   1073               (__v64qi) __B,
   1074               (__v64qi) _mm512_setzero_qi(),
   1075               (__mmask64) __U);
   1076 }
   1077 
   1078 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1079 _mm512_subs_epi16 (__m512i __A, __m512i __B)
   1080 {
   1081   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1082               (__v32hi) __B,
   1083               (__v32hi) _mm512_setzero_hi(),
   1084               (__mmask32) -1);
   1085 }
   1086 
   1087 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1088 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1089       __m512i __B)
   1090 {
   1091   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1092               (__v32hi) __B,
   1093               (__v32hi) __W,
   1094               (__mmask32) __U);
   1095 }
   1096 
   1097 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1098 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1099 {
   1100   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
   1101               (__v32hi) __B,
   1102               (__v32hi) _mm512_setzero_hi(),
   1103               (__mmask32) __U);
   1104 }
   1105 
   1106 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1107 _mm512_subs_epu8 (__m512i __A, __m512i __B)
   1108 {
   1109   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1110               (__v64qi) __B,
   1111               (__v64qi) _mm512_setzero_qi(),
   1112               (__mmask64) -1);
   1113 }
   1114 
   1115 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1116 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
   1117            __m512i __B)
   1118 {
   1119   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1120               (__v64qi) __B,
   1121               (__v64qi) __W,
   1122               (__mmask64) __U);
   1123 }
   1124 
   1125 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1126 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
   1127 {
   1128   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
   1129               (__v64qi) __B,
   1130               (__v64qi) _mm512_setzero_qi(),
   1131               (__mmask64) __U);
   1132 }
   1133 
   1134 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1135 _mm512_subs_epu16 (__m512i __A, __m512i __B)
   1136 {
   1137   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1138               (__v32hi) __B,
   1139               (__v32hi) _mm512_setzero_hi(),
   1140               (__mmask32) -1);
   1141 }
   1142 
   1143 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1144 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1145       __m512i __B)
   1146 {
   1147   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1148               (__v32hi) __B,
   1149               (__v32hi) __W,
   1150               (__mmask32) __U);
   1151 }
   1152 
   1153 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1154 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1155 {
   1156   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
   1157               (__v32hi) __B,
   1158               (__v32hi) _mm512_setzero_hi(),
   1159               (__mmask32) __U);
   1160 }
   1161 
   1162 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1163 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
   1164          __mmask32 __U, __m512i __B)
   1165 {
   1166   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
   1167               (__v32hi) __I /* idx */ ,
   1168               (__v32hi) __B,
   1169               (__mmask32) __U);
   1170 }
   1171 
   1172 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1173 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
   1174 {
   1175   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
   1176               (__v32hi) __A,
   1177               (__v32hi) __B,
   1178               (__mmask32) -1);
   1179 }
   1180 
   1181 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1182 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
   1183         __m512i __I, __m512i __B)
   1184 {
   1185   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
   1186               (__v32hi) __A,
   1187               (__v32hi) __B,
   1188               (__mmask32) __U);
   1189 }
   1190 
   1191 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1192 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
   1193          __m512i __I, __m512i __B)
   1194 {
   1195   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
   1196               /* idx */ ,
   1197               (__v32hi) __A,
   1198               (__v32hi) __B,
   1199               (__mmask32) __U);
   1200 }
   1201 
   1202 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1203 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
   1204 {
   1205   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1206                 (__v32hi) __B,
   1207                 (__v32hi) _mm512_setzero_hi(),
   1208                 (__mmask32) -1);
   1209 }
   1210 
   1211 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1212 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1213         __m512i __B)
   1214 {
   1215   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1216                 (__v32hi) __B,
   1217                 (__v32hi) __W,
   1218                 (__mmask32) __U);
   1219 }
   1220 
   1221 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1222 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1223 {
   1224   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
   1225                 (__v32hi) __B,
   1226                 (__v32hi) _mm512_setzero_hi(),
   1227                 (__mmask32) __U);
   1228 }
   1229 
   1230 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1231 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
   1232 {
   1233   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1234               (__v32hi) __B,
   1235               (__v32hi) _mm512_setzero_hi(),
   1236               (__mmask32) -1);
   1237 }
   1238 
   1239 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1240 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1241        __m512i __B)
   1242 {
   1243   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1244               (__v32hi) __B,
   1245               (__v32hi) __W,
   1246               (__mmask32) __U);
   1247 }
   1248 
   1249 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1250 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
   1251 {
   1252   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
   1253               (__v32hi) __B,
   1254               (__v32hi) _mm512_setzero_hi(),
   1255               (__mmask32) __U);
   1256 }
   1257 
   1258 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1259 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
   1260 {
   1261   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1262                (__v32hi) __B,
   1263                (__v32hi) _mm512_setzero_hi(),
   1264                (__mmask32) -1);
   1265 }
   1266 
   1267 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1268 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
   1269        __m512i __B)
   1270 {
   1271   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1272                (__v32hi) __B,
   1273                (__v32hi) __W,
   1274                (__mmask32) __U);
   1275 }
   1276 
   1277 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1278 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
   1279 {
   1280   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
   1281                (__v32hi) __B,
   1282                (__v32hi) _mm512_setzero_hi(),
   1283                (__mmask32) __U);
   1284 }
   1285 
   1286 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1287 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
   1288   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1289                  (__v64qi) __Y,
   1290                  (__v32hi) _mm512_setzero_hi(),
   1291                  (__mmask32) -1);
   1292 }
   1293 
   1294 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1295 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
   1296          __m512i __Y) {
   1297   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1298                  (__v64qi) __Y,
   1299                  (__v32hi) __W,
   1300                  (__mmask32) __U);
   1301 }
   1302 
   1303 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1304 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
   1305   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
   1306                  (__v64qi) __Y,
   1307                  (__v32hi) _mm512_setzero_hi(),
   1308                  (__mmask32) __U);
   1309 }
   1310 
   1311 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1312 _mm512_madd_epi16 (__m512i __A, __m512i __B) {
   1313   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1314                (__v32hi) __B,
   1315                (__v16si) _mm512_setzero_si512(),
   1316                (__mmask16) -1);
   1317 }
   1318 
   1319 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1320 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
   1321       __m512i __B) {
   1322   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1323                (__v32hi) __B,
   1324                (__v16si) __W,
   1325                (__mmask16) __U);
   1326 }
   1327 
   1328 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1329 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
   1330   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
   1331                (__v32hi) __B,
   1332                (__v16si) _mm512_setzero_si512(),
   1333                (__mmask16) __U);
   1334 }
   1335 
   1336 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1337 _mm512_cvtsepi16_epi8 (__m512i __A) {
   1338   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1339                (__v32qi)_mm256_setzero_si256(),
   1340                (__mmask32) -1);
   1341 }
   1342 
   1343 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1344 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1345   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1346                (__v32qi)__O,
   1347                __M);
   1348 }
   1349 
   1350 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1351 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
   1352   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
   1353                (__v32qi) _mm256_setzero_si256(),
   1354                __M);
   1355 }
   1356 
   1357 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1358 _mm512_cvtusepi16_epi8 (__m512i __A) {
   1359   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1360                 (__v32qi) _mm256_setzero_si256(),
   1361                 (__mmask32) -1);
   1362 }
   1363 
   1364 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1365 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1366   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1367                 (__v32qi) __O,
   1368                 __M);
   1369 }
   1370 
   1371 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1372 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
   1373   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
   1374                 (__v32qi) _mm256_setzero_si256(),
   1375                 __M);
   1376 }
   1377 
   1378 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1379 _mm512_cvtepi16_epi8 (__m512i __A) {
   1380   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1381               (__v32qi) _mm256_setzero_si256(),
   1382               (__mmask32) -1);
   1383 }
   1384 
   1385 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1386 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
   1387   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1388               (__v32qi) __O,
   1389               __M);
   1390 }
   1391 
   1392 static __inline__ __m256i __DEFAULT_FN_ATTRS
   1393 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
   1394   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
   1395               (__v32qi) _mm256_setzero_si256(),
   1396               __M);
   1397 }
   1398 
   1399 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1400 _mm512_unpackhi_epi8 (__m512i __A, __m512i __B) {
   1401   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
   1402                  (__v64qi) __B,
   1403                  (__v64qi) _mm512_setzero_qi(),
   1404                  (__mmask64) -1);
   1405 }
   1406 
   1407 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1408 _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1409          __m512i __B) {
   1410   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
   1411                  (__v64qi) __B,
   1412                  (__v64qi) __W,
   1413                  (__mmask64) __U);
   1414 }
   1415 
   1416 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1417 _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
   1418   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
   1419                  (__v64qi) __B,
   1420                  (__v64qi) _mm512_setzero_qi(),
   1421                  (__mmask64) __U);
   1422 }
   1423 
   1424 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1425 _mm512_unpackhi_epi16 (__m512i __A, __m512i __B) {
   1426   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
   1427                  (__v32hi) __B,
   1428                  (__v32hi) _mm512_setzero_hi(),
   1429                  (__mmask32) -1);
   1430 }
   1431 
   1432 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1433 _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1434           __m512i __B) {
   1435   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
   1436                  (__v32hi) __B,
   1437                  (__v32hi) __W,
   1438                  (__mmask32) __U);
   1439 }
   1440 
   1441 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1442 _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
   1443   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
   1444                  (__v32hi) __B,
   1445                  (__v32hi) _mm512_setzero_hi(),
   1446                  (__mmask32) __U);
   1447 }
   1448 
   1449 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1450 _mm512_unpacklo_epi8 (__m512i __A, __m512i __B) {
   1451   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
   1452                  (__v64qi) __B,
   1453                  (__v64qi) _mm512_setzero_qi(),
   1454                  (__mmask64) -1);
   1455 }
   1456 
   1457 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1458 _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
   1459          __m512i __B) {
   1460   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
   1461                  (__v64qi) __B,
   1462                  (__v64qi) __W,
   1463                  (__mmask64) __U);
   1464 }
   1465 
   1466 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1467 _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
   1468   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
   1469                  (__v64qi) __B,
   1470                  (__v64qi) _mm512_setzero_qi(),
   1471                  (__mmask64) __U);
   1472 }
   1473 
   1474 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1475 _mm512_unpacklo_epi16 (__m512i __A, __m512i __B) {
   1476   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
   1477                  (__v32hi) __B,
   1478                  (__v32hi) _mm512_setzero_hi(),
   1479                  (__mmask32) -1);
   1480 }
   1481 
   1482 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1483 _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
   1484           __m512i __B) {
   1485   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
   1486                  (__v32hi) __B,
   1487                  (__v32hi) __W,
   1488                  (__mmask32) __U);
   1489 }
   1490 
   1491 static __inline__ __m512i __DEFAULT_FN_ATTRS
   1492 _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
   1493   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
   1494                  (__v32hi) __B,
   1495                  (__v32hi) _mm512_setzero_hi(),
   1496                  (__mmask32) __U);
   1497 }
   1498 
   1499 #define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
   1500   (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
   1501                                          (__v64qi)(__m512i)(b), \
   1502                                          (p), (__mmask64)-1); })
   1503 
   1504 #define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
   1505   (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
   1506                                          (__v64qi)(__m512i)(b), \
   1507                                          (p), (__mmask64)(m)); })
   1508 
   1509 #define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
   1510   (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
   1511                                           (__v64qi)(__m512i)(b), \
   1512                                           (p), (__mmask64)-1); })
   1513 
   1514 #define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
   1515   (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
   1516                                           (__v64qi)(__m512i)(b), \
   1517                                           (p), (__mmask64)(m)); })
   1518 
   1519 #define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
   1520   (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
   1521                                          (__v32hi)(__m512i)(b), \
   1522                                          (p), (__mmask32)-1); })
   1523 
   1524 #define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
   1525   (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
   1526                                          (__v32hi)(__m512i)(b), \
   1527                                          (p), (__mmask32)(m)); })
   1528 
   1529 #define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
   1530   (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
   1531                                           (__v32hi)(__m512i)(b), \
   1532                                           (p), (__mmask32)-1); })
   1533 
   1534 #define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
   1535   (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
   1536                                           (__v32hi)(__m512i)(b), \
   1537                                           (p), (__mmask32)(m)); })
   1538 
   1539 
   1540 #undef __DEFAULT_FN_ATTRS
   1541 
   1542 #endif
   1543