Home | History | Annotate | Download | only in CodeGen
      1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512bw -emit-llvm -o - -Werror | FileCheck %s
      2 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512bw -fno-signed-char -emit-llvm -o - -Werror | FileCheck %s
      3 
      4 // Don't include mm_malloc.h, it's system specific.
      5 #define __MM_MALLOC_H
      6 
      7 #include <immintrin.h>
      8 
      9 __mmask64 test_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
     10   // CHECK-LABEL: @test_mm512_cmpeq_epi8_mask
     11   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
     12   return (__mmask64)_mm512_cmpeq_epi8_mask(__a, __b);
     13 }
     14 
     15 __mmask64 test_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     16   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi8_mask
     17   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
     18   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
     19   return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);
     20 }
     21 
     22 __mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
     23   // CHECK-LABEL: @test_mm512_cmpeq_epi16_mask
     24   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
     25   return (__mmask32)_mm512_cmpeq_epi16_mask(__a, __b);
     26 }
     27 
     28 __mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     29   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi16_mask
     30   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
     31   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
     32   return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);
     33 }
     34 
     35 __mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
     36   // CHECK-LABEL: @test_mm512_cmpgt_epi8_mask
     37   // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
     38   return (__mmask64)_mm512_cmpgt_epi8_mask(__a, __b);
     39 }
     40 
     41 __mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     42   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi8_mask
     43   // CHECK: icmp sgt <64 x i8> %{{.*}}, %{{.*}}
     44   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
     45   return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);
     46 }
     47 
     48 __mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
     49   // CHECK-LABEL: @test_mm512_cmpgt_epi16_mask
     50   // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
     51   return (__mmask32)_mm512_cmpgt_epi16_mask(__a, __b);
     52 }
     53 
     54 __mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     55   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi16_mask
     56   // CHECK: icmp sgt <32 x i16> %{{.*}}, %{{.*}}
     57   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
     58   return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);
     59 }
     60 
     61 __mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
     62   // CHECK-LABEL: @test_mm512_cmpeq_epu8_mask
     63   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
     64   return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b);
     65 }
     66 
     67 __mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     68   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu8_mask
     69   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
     70   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
     71   return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);
     72 }
     73 
     74 __mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
     75   // CHECK-LABEL: @test_mm512_cmpeq_epu16_mask
     76   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
     77   return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b);
     78 }
     79 
     80 __mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     81   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu16_mask
     82   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
     83   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
     84   return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);
     85 }
     86 
     87 __mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
     88   // CHECK-LABEL: @test_mm512_cmpgt_epu8_mask
     89   // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
     90   return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b);
     91 }
     92 
     93 __mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     94   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu8_mask
     95   // CHECK: icmp ugt <64 x i8> %{{.*}}, %{{.*}}
     96   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
     97   return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);
     98 }
     99 
    100 __mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
    101   // CHECK-LABEL: @test_mm512_cmpgt_epu16_mask
    102   // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
    103   return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b);
    104 }
    105 
    106 __mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    107   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu16_mask
    108   // CHECK: icmp ugt <32 x i16> %{{.*}}, %{{.*}}
    109   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    110   return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);
    111 }
    112 
    113 __mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
    114   // CHECK-LABEL: @test_mm512_cmpge_epi8_mask
    115   // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
    116   return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b);
    117 }
    118 
    119 __mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    120   // CHECK-LABEL: @test_mm512_mask_cmpge_epi8_mask
    121   // CHECK: icmp sge <64 x i8> %{{.*}}, %{{.*}}
    122   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    123   return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);
    124 }
    125 
    126 __mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
    127   // CHECK-LABEL: @test_mm512_cmpge_epu8_mask
    128   // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
    129   return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b);
    130 }
    131 
    132 __mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    133   // CHECK-LABEL: @test_mm512_mask_cmpge_epu8_mask
    134   // CHECK: icmp uge <64 x i8> %{{.*}}, %{{.*}}
    135   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    136   return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);
    137 }
    138 
    139 __mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
    140   // CHECK-LABEL: @test_mm512_cmpge_epi16_mask
    141   // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
    142   return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b);
    143 }
    144 
    145 __mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    146   // CHECK-LABEL: @test_mm512_mask_cmpge_epi16_mask
    147   // CHECK: icmp sge <32 x i16> %{{.*}}, %{{.*}}
    148   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    149   return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);
    150 }
    151 
    152 __mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
    153   // CHECK-LABEL: @test_mm512_cmpge_epu16_mask
    154   // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
    155   return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b);
    156 }
    157 
    158 __mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    159   // CHECK-LABEL: @test_mm512_mask_cmpge_epu16_mask
    160   // CHECK: icmp uge <32 x i16> %{{.*}}, %{{.*}}
    161   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    162   return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);
    163 }
    164 
    165 __mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
    166   // CHECK-LABEL: @test_mm512_cmple_epi8_mask
    167   // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
    168   return (__mmask64)_mm512_cmple_epi8_mask(__a, __b);
    169 }
    170 
    171 __mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    172   // CHECK-LABEL: @test_mm512_mask_cmple_epi8_mask
    173   // CHECK: icmp sle <64 x i8> %{{.*}}, %{{.*}}
    174   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    175   return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);
    176 }
    177 
    178 __mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
    179   // CHECK-LABEL: @test_mm512_cmple_epu8_mask
    180   // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
    181   return (__mmask64)_mm512_cmple_epu8_mask(__a, __b);
    182 }
    183 
    184 __mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    185   // CHECK-LABEL: @test_mm512_mask_cmple_epu8_mask
    186   // CHECK: icmp ule <64 x i8> %{{.*}}, %{{.*}}
    187   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    188   return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);
    189 }
    190 
    191 __mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
    192   // CHECK-LABEL: @test_mm512_cmple_epi16_mask
    193   // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
    194   return (__mmask32)_mm512_cmple_epi16_mask(__a, __b);
    195 }
    196 
    197 __mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    198   // CHECK-LABEL: @test_mm512_mask_cmple_epi16_mask
    199   // CHECK: icmp sle <32 x i16> %{{.*}}, %{{.*}}
    200   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    201   return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);
    202 }
    203 
    204 __mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
    205   // CHECK-LABEL: @test_mm512_cmple_epu16_mask
    206   // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
    207   return (__mmask32)_mm512_cmple_epu16_mask(__a, __b);
    208 }
    209 
    210 __mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    211   // CHECK-LABEL: @test_mm512_mask_cmple_epu16_mask
    212   // CHECK: icmp ule <32 x i16> %{{.*}}, %{{.*}}
    213   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    214   return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);
    215 }
    216 
    217 __mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
    218   // CHECK-LABEL: @test_mm512_cmplt_epi8_mask
    219   // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
    220   return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b);
    221 }
    222 
    223 __mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    224   // CHECK-LABEL: @test_mm512_mask_cmplt_epi8_mask
    225   // CHECK: icmp slt <64 x i8> %{{.*}}, %{{.*}}
    226   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    227   return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);
    228 }
    229 
    230 __mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
    231   // CHECK-LABEL: @test_mm512_cmplt_epu8_mask
    232   // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
    233   return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b);
    234 }
    235 
    236 __mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    237   // CHECK-LABEL: @test_mm512_mask_cmplt_epu8_mask
    238   // CHECK: icmp ult <64 x i8> %{{.*}}, %{{.*}}
    239   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    240   return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);
    241 }
    242 
    243 __mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
    244   // CHECK-LABEL: @test_mm512_cmplt_epi16_mask
    245   // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
    246   return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b);
    247 }
    248 
    249 __mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    250   // CHECK-LABEL: @test_mm512_mask_cmplt_epi16_mask
    251   // CHECK: icmp slt <32 x i16> %{{.*}}, %{{.*}}
    252   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    253   return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);
    254 }
    255 
    256 __mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
    257   // CHECK-LABEL: @test_mm512_cmplt_epu16_mask
    258   // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
    259   return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b);
    260 }
    261 
    262 __mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    263   // CHECK-LABEL: @test_mm512_mask_cmplt_epu16_mask
    264   // CHECK: icmp ult <32 x i16> %{{.*}}, %{{.*}}
    265   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    266   return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);
    267 }
    268 
    269 __mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
    270   // CHECK-LABEL: @test_mm512_cmpneq_epi8_mask
    271   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
    272   return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b);
    273 }
    274 
    275 __mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    276   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi8_mask
    277   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
    278   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    279   return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);
    280 }
    281 
    282 __mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
    283   // CHECK-LABEL: @test_mm512_cmpneq_epu8_mask
    284   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
    285   return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b);
    286 }
    287 
    288 __mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    289   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu8_mask
    290   // CHECK: icmp ne <64 x i8> %{{.*}}, %{{.*}}
    291   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    292   return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);
    293 }
    294 
    295 __mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
    296   // CHECK-LABEL: @test_mm512_cmpneq_epi16_mask
    297   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
    298   return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b);
    299 }
    300 
    301 __mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    302   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi16_mask
    303   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
    304   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    305   return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);
    306 }
    307 
    308 __mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
    309   // CHECK-LABEL: @test_mm512_cmpneq_epu16_mask
    310   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
    311   return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b);
    312 }
    313 
    314 __mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    315   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu16_mask
    316   // CHECK: icmp ne <32 x i16> %{{.*}}, %{{.*}}
    317   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    318   return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);
    319 }
    320 
    321 __mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) {
    322   // CHECK-LABEL: @test_mm512_cmp_epi8_mask
    323   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
    324   return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 0);
    325 }
    326 
    327 __mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    328   // CHECK-LABEL: @test_mm512_mask_cmp_epi8_mask
    329   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
    330   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    331   return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 0);
    332 }
    333 
    334 __mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) {
    335   // CHECK-LABEL: @test_mm512_cmp_epu8_mask
    336   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
    337   return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 0);
    338 }
    339 
    340 __mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    341   // CHECK-LABEL: @test_mm512_mask_cmp_epu8_mask
    342   // CHECK: icmp eq <64 x i8> %{{.*}}, %{{.*}}
    343   // CHECK: and <64 x i1> %{{.*}}, %{{.*}}
    344   return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 0);
    345 }
    346 
    347 __mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) {
    348   // CHECK-LABEL: @test_mm512_cmp_epi16_mask
    349   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
    350   return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 0);
    351 }
    352 
    353 __mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    354   // CHECK-LABEL: @test_mm512_mask_cmp_epi16_mask
    355   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
    356   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    357   return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 0);
    358 }
    359 
    360 __mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) {
    361   // CHECK-LABEL: @test_mm512_cmp_epu16_mask
    362   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
    363   return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 0);
    364 }
    365 
    366 __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    367   // CHECK-LABEL: @test_mm512_mask_cmp_epu16_mask
    368   // CHECK: icmp eq <32 x i16> %{{.*}}, %{{.*}}
    369   // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
    370   return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 0);
    371 }
    372 
    373 __m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) {
    374   //CHECK-LABEL: @test_mm512_add_epi8
    375   //CHECK: add <64 x i8>
    376   return _mm512_add_epi8(__A,__B);
    377 }
    378 
    379 __m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    380   //CHECK-LABEL: @test_mm512_mask_add_epi8
    381   //CHECK: @llvm.x86.avx512.mask.padd.b.512
    382   return _mm512_mask_add_epi8(__W, __U, __A, __B);
    383 }
    384 
    385 __m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
    386   //CHECK-LABEL: @test_mm512_maskz_add_epi8
    387   //CHECK: @llvm.x86.avx512.mask.padd.b.512
    388   return _mm512_maskz_add_epi8(__U, __A, __B);
    389 }
    390 
    391 __m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) {
    392   //CHECK-LABEL: @test_mm512_sub_epi8
    393   //CHECK: sub <64 x i8>
    394   return _mm512_sub_epi8(__A, __B);
    395 }
    396 
    397 __m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    398   //CHECK-LABEL: @test_mm512_mask_sub_epi8
    399   //CHECK: @llvm.x86.avx512.mask.psub.b.512
    400   return _mm512_mask_sub_epi8(__W, __U, __A, __B);
    401 }
    402 
    403 __m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
    404   //CHECK-LABEL: @test_mm512_maskz_sub_epi8
    405   //CHECK: @llvm.x86.avx512.mask.psub.b.512
    406   return _mm512_maskz_sub_epi8(__U, __A, __B);
    407 }
    408 
    409 __m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) {
    410   //CHECK-LABEL: @test_mm512_add_epi16
    411   //CHECK: add <32 x i16>
    412   return _mm512_add_epi16(__A, __B);
    413 }
    414 
    415 __m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    416   //CHECK-LABEL: @test_mm512_mask_add_epi16
    417   //CHECK: @llvm.x86.avx512.mask.padd.w.512
    418   return _mm512_mask_add_epi16(__W, __U, __A, __B);
    419 }
    420 
    421 __m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    422   //CHECK-LABEL: @test_mm512_maskz_add_epi16
    423   //CHECK: @llvm.x86.avx512.mask.padd.w.512
    424   return _mm512_maskz_add_epi16(__U, __A, __B);
    425 }
    426 
    427 __m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) {
    428   //CHECK-LABEL: @test_mm512_sub_epi16
    429   //CHECK: sub <32 x i16>
    430   return _mm512_sub_epi16(__A, __B);
    431 }
    432 
    433 __m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    434   //CHECK-LABEL: @test_mm512_mask_sub_epi16
    435   //CHECK: @llvm.x86.avx512.mask.psub.w.512
    436   return _mm512_mask_sub_epi16(__W, __U, __A, __B);
    437 }
    438 
    439 __m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    440   //CHECK-LABEL: @test_mm512_maskz_sub_epi16
    441   //CHECK: @llvm.x86.avx512.mask.psub.w.512
    442   return _mm512_maskz_sub_epi16(__U, __A, __B);
    443 }
    444 
    445 __m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
    446   //CHECK-LABEL: @test_mm512_mullo_epi16
    447   //CHECK: mul <32 x i16>
    448   return _mm512_mullo_epi16(__A, __B);
    449 }
    450 
    451 __m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    452   //CHECK-LABEL: @test_mm512_mask_mullo_epi16
    453   //CHECK: @llvm.x86.avx512.mask.pmull.w.512
    454   return _mm512_mask_mullo_epi16(__W, __U, __A, __B);
    455 }
    456 
    457 __m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    458   //CHECK-LABEL: @test_mm512_maskz_mullo_epi16
    459   //CHECK: @llvm.x86.avx512.mask.pmull.w.512
    460   return _mm512_maskz_mullo_epi16(__U, __A, __B);
    461 }
    462 
    463 __m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) {
    464   // CHECK-LABEL: @test_mm512_mask_blend_epi8
    465   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
    466   return _mm512_mask_blend_epi8(__U,__A,__W);
    467 }
    468 __m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) {
    469   // CHECK-LABEL: @test_mm512_mask_blend_epi16
    470   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
    471   return _mm512_mask_blend_epi16(__U,__A,__W);
    472 }
    473 __m512i test_mm512_abs_epi8(__m512i __A) {
    474   // CHECK-LABEL: @test_mm512_abs_epi8
    475   // CHECK: @llvm.x86.avx512.mask.pabs.b.512
    476   return _mm512_abs_epi8(__A);
    477 }
    478 __m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
    479   // CHECK-LABEL: @test_mm512_mask_abs_epi8
    480   // CHECK: @llvm.x86.avx512.mask.pabs.b.512
    481   return _mm512_mask_abs_epi8(__W,__U,__A);
    482 }
    483 __m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) {
    484   // CHECK-LABEL: @test_mm512_maskz_abs_epi8
    485   // CHECK: @llvm.x86.avx512.mask.pabs.b.512
    486   return _mm512_maskz_abs_epi8(__U,__A);
    487 }
    488 __m512i test_mm512_abs_epi16(__m512i __A) {
    489   // CHECK-LABEL: @test_mm512_abs_epi16
    490   // CHECK: @llvm.x86.avx512.mask.pabs.w.512
    491   return _mm512_abs_epi16(__A);
    492 }
    493 __m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
    494   // CHECK-LABEL: @test_mm512_mask_abs_epi16
    495   // CHECK: @llvm.x86.avx512.mask.pabs.w.512
    496   return _mm512_mask_abs_epi16(__W,__U,__A);
    497 }
    498 __m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) {
    499   // CHECK-LABEL: @test_mm512_maskz_abs_epi16
    500   // CHECK: @llvm.x86.avx512.mask.pabs.w.512
    501   return _mm512_maskz_abs_epi16(__U,__A);
    502 }
    503 __m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) {
    504   // CHECK-LABEL: @test_mm512_packs_epi32
    505   // CHECK: @llvm.x86.avx512.mask.packssdw.512
    506   return _mm512_packs_epi32(__A,__B);
    507 }
    508 __m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
    509   // CHECK-LABEL: @test_mm512_maskz_packs_epi32
    510   // CHECK: @llvm.x86.avx512.mask.packssdw.512
    511   return _mm512_maskz_packs_epi32(__M,__A,__B);
    512 }
    513 __m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    514   // CHECK-LABEL: @test_mm512_mask_packs_epi32
    515   // CHECK: @llvm.x86.avx512.mask.packssdw.512
    516   return _mm512_mask_packs_epi32(__W,__M,__A,__B);
    517 }
    518 __m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) {
    519   // CHECK-LABEL: @test_mm512_packs_epi16
    520   // CHECK: @llvm.x86.avx512.mask.packsswb.512
    521   return _mm512_packs_epi16(__A,__B);
    522 }
    523 __m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    524   // CHECK-LABEL: @test_mm512_mask_packs_epi16
    525   // CHECK: @llvm.x86.avx512.mask.packsswb.512
    526   return _mm512_mask_packs_epi16(__W,__M,__A,__B);
    527 }
    528 __m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
    529   // CHECK-LABEL: @test_mm512_maskz_packs_epi16
    530   // CHECK: @llvm.x86.avx512.mask.packsswb.512
    531   return _mm512_maskz_packs_epi16(__M,__A,__B);
    532 }
    533 __m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) {
    534   // CHECK-LABEL: @test_mm512_packus_epi32
    535   // CHECK: @llvm.x86.avx512.mask.packusdw.512
    536   return _mm512_packus_epi32(__A,__B);
    537 }
    538 __m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
    539   // CHECK-LABEL: @test_mm512_maskz_packus_epi32
    540   // CHECK: @llvm.x86.avx512.mask.packusdw.512
    541   return _mm512_maskz_packus_epi32(__M,__A,__B);
    542 }
    543 __m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    544   // CHECK-LABEL: @test_mm512_mask_packus_epi32
    545   // CHECK: @llvm.x86.avx512.mask.packusdw.512
    546   return _mm512_mask_packus_epi32(__W,__M,__A,__B);
    547 }
    548 __m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) {
    549   // CHECK-LABEL: @test_mm512_packus_epi16
    550   // CHECK: @llvm.x86.avx512.mask.packuswb.512
    551   return _mm512_packus_epi16(__A,__B);
    552 }
    553 __m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    554   // CHECK-LABEL: @test_mm512_mask_packus_epi16
    555   // CHECK: @llvm.x86.avx512.mask.packuswb.512
    556   return _mm512_mask_packus_epi16(__W,__M,__A,__B);
    557 }
    558 __m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
    559   // CHECK-LABEL: @test_mm512_maskz_packus_epi16
    560   // CHECK: @llvm.x86.avx512.mask.packuswb.512
    561   return _mm512_maskz_packus_epi16(__M,__A,__B);
    562 }
    563 __m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) {
    564   // CHECK-LABEL: @test_mm512_adds_epi8
    565   // CHECK: @llvm.x86.avx512.mask.padds.b.512
    566   return _mm512_adds_epi8(__A,__B);
    567 }
    568 __m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    569   // CHECK-LABEL: @test_mm512_mask_adds_epi8
    570   // CHECK: @llvm.x86.avx512.mask.padds.b.512
    571   return _mm512_mask_adds_epi8(__W,__U,__A,__B);
    572 }
    573 __m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    574   // CHECK-LABEL: @test_mm512_maskz_adds_epi8
    575   // CHECK: @llvm.x86.avx512.mask.padds.b.512
    576   return _mm512_maskz_adds_epi8(__U,__A,__B);
    577 }
    578 __m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) {
    579   // CHECK-LABEL: @test_mm512_adds_epi16
    580   // CHECK: @llvm.x86.avx512.mask.padds.w.512
    581   return _mm512_adds_epi16(__A,__B);
    582 }
    583 __m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    584   // CHECK-LABEL: @test_mm512_mask_adds_epi16
    585   // CHECK: @llvm.x86.avx512.mask.padds.w.512
    586   return _mm512_mask_adds_epi16(__W,__U,__A,__B);
    587 }
    588 __m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    589   // CHECK-LABEL: @test_mm512_maskz_adds_epi16
    590   // CHECK: @llvm.x86.avx512.mask.padds.w.512
    591   return _mm512_maskz_adds_epi16(__U,__A,__B);
    592 }
    593 __m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) {
    594   // CHECK-LABEL: @test_mm512_adds_epu8
    595   // CHECK: @llvm.x86.avx512.mask.paddus.b.512
    596   return _mm512_adds_epu8(__A,__B);
    597 }
    598 __m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    599   // CHECK-LABEL: @test_mm512_mask_adds_epu8
    600   // CHECK: @llvm.x86.avx512.mask.paddus.b.512
    601   return _mm512_mask_adds_epu8(__W,__U,__A,__B);
    602 }
    603 __m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
    604   // CHECK-LABEL: @test_mm512_maskz_adds_epu8
    605   // CHECK: @llvm.x86.avx512.mask.paddus.b.512
    606   return _mm512_maskz_adds_epu8(__U,__A,__B);
    607 }
    608 __m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) {
    609   // CHECK-LABEL: @test_mm512_adds_epu16
    610   // CHECK: @llvm.x86.avx512.mask.paddus.w.512
    611   return _mm512_adds_epu16(__A,__B);
    612 }
    613 __m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    614   // CHECK-LABEL: @test_mm512_mask_adds_epu16
    615   // CHECK: @llvm.x86.avx512.mask.paddus.w.512
    616   return _mm512_mask_adds_epu16(__W,__U,__A,__B);
    617 }
    618 __m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    619   // CHECK-LABEL: @test_mm512_maskz_adds_epu16
    620   // CHECK: @llvm.x86.avx512.mask.paddus.w.512
    621   return _mm512_maskz_adds_epu16(__U,__A,__B);
    622 }
    623 __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {
    624   // CHECK-LABEL: @test_mm512_avg_epu8
    625   // CHECK: @llvm.x86.avx512.mask.pavg.b.512
    626   return _mm512_avg_epu8(__A,__B);
    627 }
    628 __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    629   // CHECK-LABEL: @test_mm512_mask_avg_epu8
    630   // CHECK: @llvm.x86.avx512.mask.pavg.b.512
    631   return _mm512_mask_avg_epu8(__W,__U,__A,__B);
    632 }
    633 __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
    634   // CHECK-LABEL: @test_mm512_maskz_avg_epu8
    635   // CHECK: @llvm.x86.avx512.mask.pavg.b.512
    636   return _mm512_maskz_avg_epu8(__U,__A,__B);
    637 }
    638 __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {
    639   // CHECK-LABEL: @test_mm512_avg_epu16
    640   // CHECK: @llvm.x86.avx512.mask.pavg.w.512
    641   return _mm512_avg_epu16(__A,__B);
    642 }
    643 __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    644   // CHECK-LABEL: @test_mm512_mask_avg_epu16
    645   // CHECK: @llvm.x86.avx512.mask.pavg.w.512
    646   return _mm512_mask_avg_epu16(__W,__U,__A,__B);
    647 }
    648 __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    649   // CHECK-LABEL: @test_mm512_maskz_avg_epu16
    650   // CHECK: @llvm.x86.avx512.mask.pavg.w.512
    651   return _mm512_maskz_avg_epu16(__U,__A,__B);
    652 }
    653 __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {
    654   // CHECK-LABEL: @test_mm512_max_epi8
    655   // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512
    656   return _mm512_max_epi8(__A,__B);
    657 }
    658 __m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
    659   // CHECK-LABEL: @test_mm512_maskz_max_epi8
    660   // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512
    661   return _mm512_maskz_max_epi8(__M,__A,__B);
    662 }
    663 __m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    664   // CHECK-LABEL: @test_mm512_mask_max_epi8
    665   // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512
    666   return _mm512_mask_max_epi8(__W,__M,__A,__B);
    667 }
    668 __m512i test_mm512_max_epi16(__m512i __A, __m512i __B) {
    669   // CHECK-LABEL: @test_mm512_max_epi16
    670   // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512
    671   return _mm512_max_epi16(__A,__B);
    672 }
    673 __m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
    674   // CHECK-LABEL: @test_mm512_maskz_max_epi16
    675   // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512
    676   return _mm512_maskz_max_epi16(__M,__A,__B);
    677 }
    678 __m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    679   // CHECK-LABEL: @test_mm512_mask_max_epi16
    680   // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512
    681   return _mm512_mask_max_epi16(__W,__M,__A,__B);
    682 }
    683 __m512i test_mm512_max_epu8(__m512i __A, __m512i __B) {
    684   // CHECK-LABEL: @test_mm512_max_epu8
    685   // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512
    686   return _mm512_max_epu8(__A,__B);
    687 }
    688 __m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
    689   // CHECK-LABEL: @test_mm512_maskz_max_epu8
    690   // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512
    691   return _mm512_maskz_max_epu8(__M,__A,__B);
    692 }
    693 __m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    694   // CHECK-LABEL: @test_mm512_mask_max_epu8
    695   // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512
    696   return _mm512_mask_max_epu8(__W,__M,__A,__B);
    697 }
    698 __m512i test_mm512_max_epu16(__m512i __A, __m512i __B) {
    699   // CHECK-LABEL: @test_mm512_max_epu16
    700   // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512
    701   return _mm512_max_epu16(__A,__B);
    702 }
    703 __m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
    704   // CHECK-LABEL: @test_mm512_maskz_max_epu16
    705   // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512
    706   return _mm512_maskz_max_epu16(__M,__A,__B);
    707 }
    708 __m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    709   // CHECK-LABEL: @test_mm512_mask_max_epu16
    710   // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512
    711   return _mm512_mask_max_epu16(__W,__M,__A,__B);
    712 }
    713 __m512i test_mm512_min_epi8(__m512i __A, __m512i __B) {
    714   // CHECK-LABEL: @test_mm512_min_epi8
    715   // CHECK: @llvm.x86.avx512.mask.pmins.b.512
    716   return _mm512_min_epi8(__A,__B);
    717 }
    718 __m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
    719   // CHECK-LABEL: @test_mm512_maskz_min_epi8
    720   // CHECK: @llvm.x86.avx512.mask.pmins.b.512
    721   return _mm512_maskz_min_epi8(__M,__A,__B);
    722 }
    723 __m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    724   // CHECK-LABEL: @test_mm512_mask_min_epi8
    725   // CHECK: @llvm.x86.avx512.mask.pmins.b.512
    726   return _mm512_mask_min_epi8(__W,__M,__A,__B);
    727 }
    728 __m512i test_mm512_min_epi16(__m512i __A, __m512i __B) {
    729   // CHECK-LABEL: @test_mm512_min_epi16
    730   // CHECK: @llvm.x86.avx512.mask.pmins.w.512
    731   return _mm512_min_epi16(__A,__B);
    732 }
    733 __m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
    734   // CHECK-LABEL: @test_mm512_maskz_min_epi16
    735   // CHECK: @llvm.x86.avx512.mask.pmins.w.512
    736   return _mm512_maskz_min_epi16(__M,__A,__B);
    737 }
    738 __m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    739   // CHECK-LABEL: @test_mm512_mask_min_epi16
    740   // CHECK: @llvm.x86.avx512.mask.pmins.w.512
    741   return _mm512_mask_min_epi16(__W,__M,__A,__B);
    742 }
    743 __m512i test_mm512_min_epu8(__m512i __A, __m512i __B) {
    744   // CHECK-LABEL: @test_mm512_min_epu8
    745   // CHECK: @llvm.x86.avx512.mask.pminu.b.512
    746   return _mm512_min_epu8(__A,__B);
    747 }
    748 __m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
    749   // CHECK-LABEL: @test_mm512_maskz_min_epu8
    750   // CHECK: @llvm.x86.avx512.mask.pminu.b.512
    751   return _mm512_maskz_min_epu8(__M,__A,__B);
    752 }
    753 __m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    754   // CHECK-LABEL: @test_mm512_mask_min_epu8
    755   // CHECK: @llvm.x86.avx512.mask.pminu.b.512
    756   return _mm512_mask_min_epu8(__W,__M,__A,__B);
    757 }
    758 __m512i test_mm512_min_epu16(__m512i __A, __m512i __B) {
    759   // CHECK-LABEL: @test_mm512_min_epu16
    760   // CHECK: @llvm.x86.avx512.mask.pminu.w.512
    761   return _mm512_min_epu16(__A,__B);
    762 }
    763 __m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
    764   // CHECK-LABEL: @test_mm512_maskz_min_epu16
    765   // CHECK: @llvm.x86.avx512.mask.pminu.w.512
    766   return _mm512_maskz_min_epu16(__M,__A,__B);
    767 }
    768 __m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    769   // CHECK-LABEL: @test_mm512_mask_min_epu16
    770   // CHECK: @llvm.x86.avx512.mask.pminu.w.512
    771   return _mm512_mask_min_epu16(__W,__M,__A,__B);
    772 }
    773 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {
    774   // CHECK-LABEL: @test_mm512_shuffle_epi8
    775   // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
    776   return _mm512_shuffle_epi8(__A,__B);
    777 }
    778 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    779   // CHECK-LABEL: @test_mm512_mask_shuffle_epi8
    780   // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
    781   return _mm512_mask_shuffle_epi8(__W,__U,__A,__B);
    782 }
    783 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    784   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8
    785   // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
    786   return _mm512_maskz_shuffle_epi8(__U,__A,__B);
    787 }
    788 __m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) {
    789   // CHECK-LABEL: @test_mm512_subs_epi8
    790   // CHECK: @llvm.x86.avx512.mask.psubs.b.512
    791   return _mm512_subs_epi8(__A,__B);
    792 }
    793 __m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    794   // CHECK-LABEL: @test_mm512_mask_subs_epi8
    795   // CHECK: @llvm.x86.avx512.mask.psubs.b.512
    796   return _mm512_mask_subs_epi8(__W,__U,__A,__B);
    797 }
    798 __m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    799   // CHECK-LABEL: @test_mm512_maskz_subs_epi8
    800   // CHECK: @llvm.x86.avx512.mask.psubs.b.512
    801   return _mm512_maskz_subs_epi8(__U,__A,__B);
    802 }
    803 __m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) {
    804   // CHECK-LABEL: @test_mm512_subs_epi16
    805   // CHECK: @llvm.x86.avx512.mask.psubs.w.512
    806   return _mm512_subs_epi16(__A,__B);
    807 }
    808 __m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    809   // CHECK-LABEL: @test_mm512_mask_subs_epi16
    810   // CHECK: @llvm.x86.avx512.mask.psubs.w.512
    811   return _mm512_mask_subs_epi16(__W,__U,__A,__B);
    812 }
    813 __m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    814   // CHECK-LABEL: @test_mm512_maskz_subs_epi16
    815   // CHECK: @llvm.x86.avx512.mask.psubs.w.512
    816   return _mm512_maskz_subs_epi16(__U,__A,__B);
    817 }
    818 __m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) {
    819   // CHECK-LABEL: @test_mm512_subs_epu8
    820   // CHECK: @llvm.x86.avx512.mask.psubus.b.512
    821   return _mm512_subs_epu8(__A,__B);
    822 }
    823 __m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    824   // CHECK-LABEL: @test_mm512_mask_subs_epu8
    825   // CHECK: @llvm.x86.avx512.mask.psubus.b.512
    826   return _mm512_mask_subs_epu8(__W,__U,__A,__B);
    827 }
    828 __m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
    829   // CHECK-LABEL: @test_mm512_maskz_subs_epu8
    830   // CHECK: @llvm.x86.avx512.mask.psubus.b.512
    831   return _mm512_maskz_subs_epu8(__U,__A,__B);
    832 }
    833 __m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) {
    834   // CHECK-LABEL: @test_mm512_subs_epu16
    835   // CHECK: @llvm.x86.avx512.mask.psubus.w.512
    836   return _mm512_subs_epu16(__A,__B);
    837 }
    838 __m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    839   // CHECK-LABEL: @test_mm512_mask_subs_epu16
    840   // CHECK: @llvm.x86.avx512.mask.psubus.w.512
    841   return _mm512_mask_subs_epu16(__W,__U,__A,__B);
    842 }
    843 __m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    844   // CHECK-LABEL: @test_mm512_maskz_subs_epu16
    845   // CHECK: @llvm.x86.avx512.mask.psubus.w.512
    846   return _mm512_maskz_subs_epu16(__U,__A,__B);
    847 }
    848 __m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) {
    849   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16
    850   // CHECK: @llvm.x86.avx512.mask.vpermi2var.hi.512
    851   return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B);
    852 }
    853 __m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) {
    854   // CHECK-LABEL: @test_mm512_permutex2var_epi16
    855   // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512
    856   return _mm512_permutex2var_epi16(__A,__I,__B);
    857 }
    858 __m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) {
    859   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16
    860   // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512
    861   return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B);
    862 }
    863 __m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) {
    864   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16
    865   // CHECK: @llvm.x86.avx512.maskz.vpermt2var.hi.512
    866   return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B);
    867 }
    868 
    869 __m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) {
    870   // CHECK-LABEL: @test_mm512_mulhrs_epi16
    871   // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512
    872   return _mm512_mulhrs_epi16(__A,__B);
    873 }
    874 __m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A,        __m512i __B) {
    875   // CHECK-LABEL: @test_mm512_mask_mulhrs_epi16
    876   // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512
    877   return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B);
    878 }
    879 __m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    880   // CHECK-LABEL: @test_mm512_maskz_mulhrs_epi16
    881   // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512
    882   return _mm512_maskz_mulhrs_epi16(__U,__A,__B);
    883 }
    884 __m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) {
    885   // CHECK-LABEL: @test_mm512_mulhi_epi16
    886   // CHECK: @llvm.x86.avx512.mask.pmulh.w.512
    887   return _mm512_mulhi_epi16(__A,__B);
    888 }
    889 __m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A,       __m512i __B) {
    890   // CHECK-LABEL: @test_mm512_mask_mulhi_epi16
    891   // CHECK: @llvm.x86.avx512.mask.pmulh.w.512
    892   return _mm512_mask_mulhi_epi16(__W,__U,__A,__B);
    893 }
    894 __m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    895   // CHECK-LABEL: @test_mm512_maskz_mulhi_epi16
    896   // CHECK: @llvm.x86.avx512.mask.pmulh.w.512
    897   return _mm512_maskz_mulhi_epi16(__U,__A,__B);
    898 }
    899 __m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) {
    900   // CHECK-LABEL: @test_mm512_mulhi_epu16
    901   // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512
    902   return _mm512_mulhi_epu16(__A,__B);
    903 }
    904 __m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A,       __m512i __B) {
    905   // CHECK-LABEL: @test_mm512_mask_mulhi_epu16
    906   // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512
    907   return _mm512_mask_mulhi_epu16(__W,__U,__A,__B);
    908 }
    909 __m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    910   // CHECK-LABEL: @test_mm512_maskz_mulhi_epu16
    911   // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512
    912   return _mm512_maskz_mulhi_epu16(__U,__A,__B);
    913 }
    914 
    915 __m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
    916   // CHECK-LABEL: @test_mm512_maddubs_epi16
    917   // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512
    918   return _mm512_maddubs_epi16(__X,__Y);
    919 }
    920 __m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X,         __m512i __Y) {
    921   // CHECK-LABEL: @test_mm512_mask_maddubs_epi16
    922   // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512
    923   return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y);
    924 }
    925 __m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
    926   // CHECK-LABEL: @test_mm512_maskz_maddubs_epi16
    927   // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512
    928   return _mm512_maskz_maddubs_epi16(__U,__X,__Y);
    929 }
    930 __m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) {
    931   // CHECK-LABEL: @test_mm512_madd_epi16
    932   // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512
    933   return _mm512_madd_epi16(__A,__B);
    934 }
    935 __m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A,      __m512i __B) {
    936   // CHECK-LABEL: @test_mm512_mask_madd_epi16
    937   // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512
    938   return _mm512_mask_madd_epi16(__W,__U,__A,__B);
    939 }
    940 __m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
    941   // CHECK-LABEL: @test_mm512_maskz_madd_epi16
    942   // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512
    943   return _mm512_maskz_madd_epi16(__U,__A,__B);
    944 }
    945 
    946 __m256i test_mm512_cvtsepi16_epi8(__m512i __A) {
    947   // CHECK-LABEL: @test_mm512_cvtsepi16_epi8
    948   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
    949   return _mm512_cvtsepi16_epi8(__A);
    950 }
    951 
    952 __m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
    953   // CHECK-LABEL: @test_mm512_mask_cvtsepi16_epi8
    954   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
    955   return _mm512_mask_cvtsepi16_epi8(__O, __M, __A);
    956 }
    957 
    958 __m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) {
    959   // CHECK-LABEL: @test_mm512_maskz_cvtsepi16_epi8
    960   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
    961   return _mm512_maskz_cvtsepi16_epi8(__M, __A);
    962 }
    963 
    964 __m256i test_mm512_cvtusepi16_epi8(__m512i __A) {
    965   // CHECK-LABEL: @test_mm512_cvtusepi16_epi8
    966   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
    967   return _mm512_cvtusepi16_epi8(__A);
    968 }
    969 
    970 __m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
    971   // CHECK-LABEL: @test_mm512_mask_cvtusepi16_epi8
    972   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
    973   return _mm512_mask_cvtusepi16_epi8(__O, __M, __A);
    974 }
    975 
    976 __m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) {
    977   // CHECK-LABEL: @test_mm512_maskz_cvtusepi16_epi8
    978   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
    979   return _mm512_maskz_cvtusepi16_epi8(__M, __A);
    980 }
    981 
    982 __m256i test_mm512_cvtepi16_epi8(__m512i __A) {
    983   // CHECK-LABEL: @test_mm512_cvtepi16_epi8
    984   // CHECK: @llvm.x86.avx512.mask.pmov.wb.512
    985   return _mm512_cvtepi16_epi8(__A);
    986 }
    987 
    988 __m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
    989   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi8
    990   // CHECK: @llvm.x86.avx512.mask.pmov.wb.512
    991   return _mm512_mask_cvtepi16_epi8(__O, __M, __A);
    992 }
    993 
    994 __m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) {
    995   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi8
    996   // CHECK: @llvm.x86.avx512.mask.pmov.wb.512
    997   return _mm512_maskz_cvtepi16_epi8(__M, __A);
    998 }
    999 
   1000 __m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
   1001   // CHECK-LABEL: @test_mm512_unpackhi_epi8
   1002   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
   1003   return _mm512_unpackhi_epi8(__A, __B);
   1004 }
   1005 
   1006 __m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1007   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi8
   1008   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
   1009   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1010   return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B);
   1011 }
   1012 
   1013 __m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1014   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi8
   1015   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 8, i32 72, i32 9, i32 73, i32 10, i32 74, i32 11, i32 75, i32 12, i32 76, i32 13, i32 77, i32 14, i32 78, i32 15, i32 79, i32 24, i32 88, i32 25, i32 89, i32 26, i32 90, i32 27, i32 91, i32 28, i32 92, i32 29, i32 93, i32 30, i32 94, i32 31, i32 95, i32 40, i32 104, i32 41, i32 105, i32 42, i32 106, i32 43, i32 107, i32 44, i32 108, i32 45, i32 109, i32 46, i32 110, i32 47, i32 111, i32 56, i32 120, i32 57, i32 121, i32 58, i32 122, i32 59, i32 123, i32 60, i32 124, i32 61, i32 125, i32 62, i32 126, i32 63, i32 127>
   1016   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1017   return _mm512_maskz_unpackhi_epi8(__U, __A, __B);
   1018 }
   1019 
   1020 __m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
   1021   // CHECK-LABEL: @test_mm512_unpackhi_epi16
   1022   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
   1023   return _mm512_unpackhi_epi16(__A, __B);
   1024 }
   1025 
   1026 __m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1027   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi16
   1028   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
   1029   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1030   return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B);
   1031 }
   1032 
   1033 __m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1034   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi16
   1035   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>
   1036   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1037   return _mm512_maskz_unpackhi_epi16(__U, __A, __B);
   1038 }
   1039 
   1040 __m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
   1041   // CHECK-LABEL: @test_mm512_unpacklo_epi8
   1042   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
   1043   return _mm512_unpacklo_epi8(__A, __B);
   1044 }
   1045 
   1046 __m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1047   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi8
   1048   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
   1049   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1050   return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B);
   1051 }
   1052 
   1053 __m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1054   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi8
   1055   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 0, i32 64, i32 1, i32 65, i32 2, i32 66, i32 3, i32 67, i32 4, i32 68, i32 5, i32 69, i32 6, i32 70, i32 7, i32 71, i32 16, i32 80, i32 17, i32 81, i32 18, i32 82, i32 19, i32 83, i32 20, i32 84, i32 21, i32 85, i32 22, i32 86, i32 23, i32 87, i32 32, i32 96, i32 33, i32 97, i32 34, i32 98, i32 35, i32 99, i32 36, i32 100, i32 37, i32 101, i32 38, i32 102, i32 39, i32 103, i32 48, i32 112, i32 49, i32 113, i32 50, i32 114, i32 51, i32 115, i32 52, i32 116, i32 53, i32 117, i32 54, i32 118, i32 55, i32 119>
   1056   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1057   return _mm512_maskz_unpacklo_epi8(__U, __A, __B);
   1058 }
   1059 
   1060 __m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
   1061   // CHECK-LABEL: @test_mm512_unpacklo_epi16
   1062   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
   1063   return _mm512_unpacklo_epi16(__A, __B);
   1064 }
   1065 
   1066 __m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1067   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi16
   1068   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
   1069   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1070   return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B);
   1071 }
   1072 
   1073 __m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1074   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi16
   1075   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59>
   1076   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1077   return _mm512_maskz_unpacklo_epi16(__U, __A, __B);
   1078 }
   1079 
   1080 __m512i test_mm512_cvtepi8_epi16(__m256i __A) {
   1081   // CHECK-LABEL: @test_mm512_cvtepi8_epi16
   1082   // CHECK: @llvm.x86.avx512.mask.pmovsxb.w.512
   1083   return _mm512_cvtepi8_epi16(__A);
   1084 }
   1085 
   1086 __m512i test_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
   1087   // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi16
   1088   // CHECK: @llvm.x86.avx512.mask.pmovsxb.w.512
   1089   return _mm512_mask_cvtepi8_epi16(__W, __U, __A);
   1090 }
   1091 
   1092 __m512i test_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A) {
   1093   // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi16
   1094   // CHECK: @llvm.x86.avx512.mask.pmovsxb.w.512
   1095   return _mm512_maskz_cvtepi8_epi16(__U, __A);
   1096 }
   1097 
   1098 __m512i test_mm512_cvtepu8_epi16(__m256i __A) {
   1099   // CHECK-LABEL: @test_mm512_cvtepu8_epi16
   1100   // CHECK: @llvm.x86.avx512.mask.pmovzxb.w.512
   1101   return _mm512_cvtepu8_epi16(__A);
   1102 }
   1103 
   1104 __m512i test_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A) {
   1105   // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi16
   1106   // CHECK: @llvm.x86.avx512.mask.pmovzxb.w.512
   1107   return _mm512_mask_cvtepu8_epi16(__W, __U, __A);
   1108 }
   1109 
   1110 __m512i test_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A) {
   1111   // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi16
   1112   // CHECK: @llvm.x86.avx512.mask.pmovzxb.w.512
   1113   return _mm512_maskz_cvtepu8_epi16(__U, __A);
   1114 }
   1115 
   1116 __m512i test_mm512_shufflehi_epi16(__m512i __A) {
   1117   // CHECK-LABEL: @test_mm512_shufflehi_epi16
   1118   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>
   1119   return _mm512_shufflehi_epi16(__A, 5);
   1120 }
   1121 
   1122 __m512i test_mm512_mask_shufflehi_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
   1123   // CHECK-LABEL: @test_mm512_mask_shufflehi_epi16
   1124   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>
   1125   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1126   return _mm512_mask_shufflehi_epi16(__W, __U, __A, 5);
   1127 }
   1128 
   1129 __m512i test_mm512_maskz_shufflehi_epi16(__mmask32 __U, __m512i __A) {
   1130   // CHECK-LABEL: @test_mm512_maskz_shufflehi_epi16
   1131   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4, i32 8, i32 9, i32 10, i32 11, i32 13, i32 13, i32 12, i32 12, i32 16, i32 17, i32 18, i32 19, i32 21, i32 21, i32 20, i32 20, i32 24, i32 25, i32 26, i32 27, i32 29, i32 29, i32 28, i32 28>
   1132   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1133   return _mm512_maskz_shufflehi_epi16(__U, __A, 5);
   1134 }
   1135 
   1136 __m512i test_mm512_shufflelo_epi16(__m512i __A) {
   1137   // CHECK-LABEL: @test_mm512_shufflelo_epi16
   1138   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>
   1139   return _mm512_shufflelo_epi16(__A, 5);
   1140 }
   1141 
   1142 __m512i test_mm512_mask_shufflelo_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
   1143   // CHECK-LABEL: @test_mm512_mask_shufflelo_epi16
   1144   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>
   1145   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1146   return _mm512_mask_shufflelo_epi16(__W, __U, __A, 5);
   1147 }
   1148 
   1149 __m512i test_mm512_maskz_shufflelo_epi16(__mmask32 __U, __m512i __A) {
   1150   // CHECK-LABEL: @test_mm512_maskz_shufflelo_epi16
   1151   // CHECK: shufflevector <32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7, i32 9, i32 9, i32 8, i32 8, i32 12, i32 13, i32 14, i32 15, i32 17, i32 17, i32 16, i32 16, i32 20, i32 21, i32 22, i32 23, i32 25, i32 25, i32 24, i32 24, i32 28, i32 29, i32 30, i32 31>
   1152   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1153   return _mm512_maskz_shufflelo_epi16(__U, __A, 5);
   1154 }
   1155 
   1156 __m512i test_mm512_sllv_epi16(__m512i __A, __m512i __B) {
   1157   // CHECK-LABEL: @test_mm512_sllv_epi16
   1158   // CHECK: @llvm.x86.avx512.mask.psllv
   1159   return _mm512_sllv_epi16(__A, __B);
   1160 }
   1161 
   1162 __m512i test_mm512_mask_sllv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1163   // CHECK-LABEL: @test_mm512_mask_sllv_epi16
   1164   // CHECK: @llvm.x86.avx512.mask.psllv
   1165   return _mm512_mask_sllv_epi16(__W, __U, __A, __B);
   1166 }
   1167 
   1168 __m512i test_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1169   // CHECK-LABEL: @test_mm512_maskz_sllv_epi16
   1170   // CHECK: @llvm.x86.avx512.mask.psllv
   1171   return _mm512_maskz_sllv_epi16(__U, __A, __B);
   1172 }
   1173 
   1174 __m512i test_mm512_sll_epi16(__m512i __A, __m128i __B) {
   1175   // CHECK-LABEL: @test_mm512_sll_epi16
   1176   // CHECK: @llvm.x86.avx512.mask.psll.w.512
   1177   return _mm512_sll_epi16(__A, __B);
   1178 }
   1179 
   1180 __m512i test_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
   1181   // CHECK-LABEL: @test_mm512_mask_sll_epi16
   1182   // CHECK: @llvm.x86.avx512.mask.psll.w.512
   1183   return _mm512_mask_sll_epi16(__W, __U, __A, __B);
   1184 }
   1185 
   1186 __m512i test_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
   1187   // CHECK-LABEL: @test_mm512_maskz_sll_epi16
   1188   // CHECK: @llvm.x86.avx512.mask.psll.w.512
   1189   return _mm512_maskz_sll_epi16(__U, __A, __B);
   1190 }
   1191 
   1192 __m512i test_mm512_slli_epi16(__m512i __A) {
   1193   // CHECK-LABEL: @test_mm512_slli_epi16
   1194   // CHECK: @llvm.x86.avx512.mask.psll.wi.512
   1195   return _mm512_slli_epi16(__A, 5);
   1196 }
   1197 
   1198 __m512i test_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
   1199   // CHECK-LABEL: @test_mm512_mask_slli_epi16
   1200   // CHECK: @llvm.x86.avx512.mask.psll.wi.512
   1201   return _mm512_mask_slli_epi16(__W, __U, __A, 5);
   1202 }
   1203 
   1204 __m512i test_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A) {
   1205   // CHECK-LABEL: @test_mm512_maskz_slli_epi16
   1206   // CHECK: @llvm.x86.avx512.mask.psll.wi.512
   1207   return _mm512_maskz_slli_epi16(__U, __A, 5);
   1208 }
   1209 
   1210 __m512i test_mm512_bslli_epi128(__m512i __A) {
   1211   // CHECK-LABEL: @test_mm512_bslli_epi128
   1212   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 69, i32 70, i32 71, i32 72, i32 73, i32 74, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 85, i32 86, i32 87, i32 88, i32 89, i32 90, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 101, i32 102, i32 103, i32 104, i32 105, i32 106, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116, i32 117, i32 118, i32 119, i32 120, i32 121, i32 122>
   1213   return _mm512_bslli_epi128(__A, 5);
   1214 }
   1215 
   1216 __m512i test_mm512_srlv_epi16(__m512i __A, __m512i __B) {
   1217   // CHECK-LABEL: @test_mm512_srlv_epi16
   1218   // CHECK: @llvm.x86.avx512.mask.psrlv
   1219   return _mm512_srlv_epi16(__A, __B);
   1220 }
   1221 
   1222 __m512i test_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1223   // CHECK-LABEL: @test_mm512_mask_srlv_epi16
   1224   // CHECK: @llvm.x86.avx512.mask.psrlv
   1225   return _mm512_mask_srlv_epi16(__W, __U, __A, __B);
   1226 }
   1227 
   1228 __m512i test_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1229   // CHECK-LABEL: @test_mm512_maskz_srlv_epi16
   1230   // CHECK: @llvm.x86.avx512.mask.psrlv
   1231   return _mm512_maskz_srlv_epi16(__U, __A, __B);
   1232 }
   1233 
   1234 __m512i test_mm512_srav_epi16(__m512i __A, __m512i __B) {
   1235   // CHECK-LABEL: @test_mm512_srav_epi16
   1236   // CHECK: @llvm.x86.avx512.mask.psrav
   1237   return _mm512_srav_epi16(__A, __B);
   1238 }
   1239 
   1240 __m512i test_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1241   // CHECK-LABEL: @test_mm512_mask_srav_epi16
   1242   // CHECK: @llvm.x86.avx512.mask.psrav
   1243   return _mm512_mask_srav_epi16(__W, __U, __A, __B);
   1244 }
   1245 
   1246 __m512i test_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1247   // CHECK-LABEL: @test_mm512_maskz_srav_epi16
   1248   // CHECK: @llvm.x86.avx512.mask.psrav
   1249   return _mm512_maskz_srav_epi16(__U, __A, __B);
   1250 }
   1251 
   1252 __m512i test_mm512_sra_epi16(__m512i __A, __m128i __B) {
   1253   // CHECK-LABEL: @test_mm512_sra_epi16
   1254   // CHECK: @llvm.x86.avx512.mask.psra.w.512
   1255   return _mm512_sra_epi16(__A, __B);
   1256 }
   1257 
   1258 __m512i test_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
   1259   // CHECK-LABEL: @test_mm512_mask_sra_epi16
   1260   // CHECK: @llvm.x86.avx512.mask.psra.w.512
   1261   return _mm512_mask_sra_epi16(__W, __U, __A, __B);
   1262 }
   1263 
   1264 __m512i test_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
   1265   // CHECK-LABEL: @test_mm512_maskz_sra_epi16
   1266   // CHECK: @llvm.x86.avx512.mask.psra.w.512
   1267   return _mm512_maskz_sra_epi16(__U, __A, __B);
   1268 }
   1269 
   1270 __m512i test_mm512_srai_epi16(__m512i __A) {
   1271   // CHECK-LABEL: @test_mm512_srai_epi16
   1272   // CHECK: @llvm.x86.avx512.mask.psra.wi.512
   1273   return _mm512_srai_epi16(__A, 5);
   1274 }
   1275 
   1276 __m512i test_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
   1277   // CHECK-LABEL: @test_mm512_mask_srai_epi16
   1278   // CHECK: @llvm.x86.avx512.mask.psra.wi.512
   1279   return _mm512_mask_srai_epi16(__W, __U, __A, 5);
   1280 }
   1281 
   1282 __m512i test_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A) {
   1283   // CHECK-LABEL: @test_mm512_maskz_srai_epi16
   1284   // CHECK: @llvm.x86.avx512.mask.psra.wi.512
   1285   return _mm512_maskz_srai_epi16(__U, __A, 5);
   1286 }
   1287 
   1288 __m512i test_mm512_srl_epi16(__m512i __A, __m128i __B) {
   1289   // CHECK-LABEL: @test_mm512_srl_epi16
   1290   // CHECK: @llvm.x86.avx512.mask.psrl.w.512
   1291   return _mm512_srl_epi16(__A, __B);
   1292 }
   1293 
   1294 __m512i test_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B) {
   1295   // CHECK-LABEL: @test_mm512_mask_srl_epi16
   1296   // CHECK: @llvm.x86.avx512.mask.psrl.w.512
   1297   return _mm512_mask_srl_epi16(__W, __U, __A, __B);
   1298 }
   1299 
   1300 __m512i test_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B) {
   1301   // CHECK-LABEL: @test_mm512_maskz_srl_epi16
   1302   // CHECK: @llvm.x86.avx512.mask.psrl.w.512
   1303   return _mm512_maskz_srl_epi16(__U, __A, __B);
   1304 }
   1305 
   1306 __m512i test_mm512_srli_epi16(__m512i __A) {
   1307   // CHECK-LABEL: @test_mm512_srli_epi16
   1308   // CHECK: @llvm.x86.avx512.mask.psrl.wi.512
   1309   return _mm512_srli_epi16(__A, 5);
   1310 }
   1311 
   1312 __m512i test_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
   1313   // CHECK-LABEL: @test_mm512_mask_srli_epi16
   1314   // CHECK: @llvm.x86.avx512.mask.psrl.wi.512
   1315   return _mm512_mask_srli_epi16(__W, __U, __A, 5);
   1316 }
   1317 
   1318 __m512i test_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A) {
   1319   // CHECK-LABEL: @test_mm512_maskz_srli_epi16
   1320   // CHECK: @llvm.x86.avx512.mask.psrl.wi.512
   1321   return _mm512_maskz_srli_epi16(__U, __A, 5);
   1322 }
   1323 
   1324 __m512i test_mm512_bsrli_epi128(__m512i __A) {
   1325   // CHECK-LABEL: @test_mm512_bsrli_epi128
   1326   // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 66, i32 67, i32 68, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 82, i32 83, i32 84, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 98, i32 99, i32 100, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113, i32 114, i32 115, i32 116>
   1327   return _mm512_bsrli_epi128(__A, 5);
   1328 }
   1329 __m512i test_mm512_mask_mov_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
   1330   // CHECK-LABEL: @test_mm512_mask_mov_epi16
   1331   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1332   return _mm512_mask_mov_epi16(__W, __U, __A);
   1333 }
   1334 
   1335 __m512i test_mm512_maskz_mov_epi16(__mmask32 __U, __m512i __A) {
   1336   // CHECK-LABEL: @test_mm512_maskz_mov_epi16
   1337   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1338   return _mm512_maskz_mov_epi16(__U, __A);
   1339 }
   1340 
   1341 __m512i test_mm512_mask_mov_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
   1342   // CHECK-LABEL: @test_mm512_mask_mov_epi8
   1343   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1344   return _mm512_mask_mov_epi8(__W, __U, __A);
   1345 }
   1346 
   1347 __m512i test_mm512_maskz_mov_epi8(__mmask64 __U, __m512i __A) {
   1348   // CHECK-LABEL: @test_mm512_maskz_mov_epi8
   1349   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1350   return _mm512_maskz_mov_epi8(__U, __A);
   1351 }
   1352 
   1353 __m512i test_mm512_mask_set1_epi8(__m512i __O, __mmask64 __M, char __A) {
   1354   // CHECK-LABEL: @test_mm512_mask_set1_epi8
   1355   // CHECK: @llvm.x86.avx512.mask.pbroadcast.b.gpr.512
   1356   return _mm512_mask_set1_epi8(__O, __M, __A);
   1357 }
   1358 
   1359 __m512i test_mm512_maskz_set1_epi8(__mmask64 __M, char __A) {
   1360   // CHECK-LABEL: @test_mm512_maskz_set1_epi8
   1361   // CHECK: @llvm.x86.avx512.mask.pbroadcast.b.gpr.512
   1362   return _mm512_maskz_set1_epi8(__M, __A);
   1363 }
   1364 
   1365 __mmask64 test_mm512_kunpackd(__mmask64 __A, __mmask64 __B) {
   1366   // CHECK-LABEL: @test_mm512_kunpackd
   1367   // CHECK: @llvm.x86.avx512.kunpck.dq
   1368   return _mm512_kunpackd(__A, __B);
   1369 }
   1370 
   1371 __mmask32 test_mm512_kunpackw(__mmask32 __A, __mmask32 __B) {
   1372   // CHECK-LABEL: @test_mm512_kunpackw
   1373   // CHECK: @llvm.x86.avx512.kunpck.wd
   1374   return _mm512_kunpackw(__A, __B);
   1375 }
   1376 
   1377 __m512i test_mm512_mask_loadu_epi16(__m512i __W, __mmask32 __U, void const *__P) {
   1378   // CHECK-LABEL: @test_mm512_mask_loadu_epi16
   1379   // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
   1380   return _mm512_mask_loadu_epi16(__W, __U, __P);
   1381 }
   1382 
   1383 __m512i test_mm512_maskz_loadu_epi16(__mmask32 __U, void const *__P) {
   1384   // CHECK-LABEL: @test_mm512_maskz_loadu_epi16
   1385   // CHECK: @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}}, <32 x i16> %{{.*}})
   1386   return _mm512_maskz_loadu_epi16(__U, __P);
   1387 }
   1388 
   1389 __m512i test_mm512_mask_loadu_epi8(__m512i __W, __mmask64 __U, void const *__P) {
   1390   // CHECK-LABEL: @test_mm512_mask_loadu_epi8
   1391   // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
   1392   return _mm512_mask_loadu_epi8(__W, __U, __P);
   1393 }
   1394 
   1395 __m512i test_mm512_maskz_loadu_epi8(__mmask64 __U, void const *__P) {
   1396   // CHECK-LABEL: @test_mm512_maskz_loadu_epi8
   1397   // CHECK: @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}}, <64 x i8> %{{.*}})
   1398   return _mm512_maskz_loadu_epi8(__U, __P);
   1399 }
   1400 void test_mm512_mask_storeu_epi16(void *__P, __mmask32 __U, __m512i __A) {
   1401   // CHECK-LABEL: @test_mm512_mask_storeu_epi16
   1402   // CHECK: @llvm.masked.store.v32i16.p0v32i16(<32 x i16> %{{.*}}, <32 x i16>* %{{.*}}, i32 1, <32 x i1> %{{.*}})
   1403   return _mm512_mask_storeu_epi16(__P, __U, __A);
   1404 }
   1405 __mmask64 test_mm512_test_epi8_mask(__m512i __A, __m512i __B) {
   1406   // CHECK-LABEL: @test_mm512_test_epi8_mask
   1407   // CHECK: @llvm.x86.avx512.ptestm.b.512
   1408   return _mm512_test_epi8_mask(__A, __B);
   1409 }
   1410 
   1411 void test_mm512_mask_storeu_epi8(void *__P, __mmask64 __U, __m512i __A) {
   1412   // CHECK-LABEL: @test_mm512_mask_storeu_epi8
   1413   // CHECK: @llvm.masked.store.v64i8.p0v64i8(<64 x i8> %{{.*}}, <64 x i8>* %{{.*}}, i32 1, <64 x i1> %{{.*}})
   1414   return _mm512_mask_storeu_epi8(__P, __U, __A);
   1415 }
   1416 __mmask64 test_mm512_mask_test_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
   1417   // CHECK-LABEL: @test_mm512_mask_test_epi8_mask
   1418   // CHECK: @llvm.x86.avx512.ptestm.b.512
   1419   return _mm512_mask_test_epi8_mask(__U, __A, __B);
   1420 }
   1421 
   1422 __mmask32 test_mm512_test_epi16_mask(__m512i __A, __m512i __B) {
   1423   // CHECK-LABEL: @test_mm512_test_epi16_mask
   1424   // CHECK: @llvm.x86.avx512.ptestm.w.
   1425   return _mm512_test_epi16_mask(__A, __B);
   1426 }
   1427 
   1428 __mmask32 test_mm512_mask_test_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
   1429   // CHECK-LABEL: @test_mm512_mask_test_epi16_mask
   1430   // CHECK: @llvm.x86.avx512.ptestm.w.
   1431   return _mm512_mask_test_epi16_mask(__U, __A, __B);
   1432 }
   1433 
   1434 __mmask64 test_mm512_testn_epi8_mask(__m512i __A, __m512i __B) {
   1435   // CHECK-LABEL: @test_mm512_testn_epi8_mask
   1436   // CHECK: @llvm.x86.avx512.ptestnm.b.
   1437   return _mm512_testn_epi8_mask(__A, __B);
   1438 }
   1439 
   1440 __mmask64 test_mm512_mask_testn_epi8_mask(__mmask64 __U, __m512i __A, __m512i __B) {
   1441   // CHECK-LABEL: @test_mm512_mask_testn_epi8_mask
   1442   // CHECK: @llvm.x86.avx512.ptestnm.b.
   1443   return _mm512_mask_testn_epi8_mask(__U, __A, __B);
   1444 }
   1445 
   1446 __mmask32 test_mm512_testn_epi16_mask(__m512i __A, __m512i __B) {
   1447   // CHECK-LABEL: @test_mm512_testn_epi16_mask
   1448   // CHECK: @llvm.x86.avx512.ptestnm.w.
   1449   return _mm512_testn_epi16_mask(__A, __B);
   1450 }
   1451 
   1452 __mmask32 test_mm512_mask_testn_epi16_mask(__mmask32 __U, __m512i __A, __m512i __B) {
   1453   // CHECK-LABEL: @test_mm512_mask_testn_epi16_mask
   1454   // CHECK: @llvm.x86.avx512.ptestnm.w.
   1455   return _mm512_mask_testn_epi16_mask(__U, __A, __B);
   1456 }
   1457 
   1458 __mmask64 test_mm512_movepi8_mask(__m512i __A) {
   1459   // CHECK-LABEL: @test_mm512_movepi8_mask
   1460   // CHECK: @llvm.x86.avx512.cvtb2mask.512
   1461   return _mm512_movepi8_mask(__A);
   1462 }
   1463 
   1464 __m512i test_mm512_movm_epi8(__mmask64 __A) {
   1465   // CHECK-LABEL: @test_mm512_movm_epi8
   1466   // CHECK: @llvm.x86.avx512.cvtmask2b.512
   1467   return _mm512_movm_epi8(__A);
   1468 }
   1469 
   1470 __m512i test_mm512_movm_epi16(__mmask32 __A) {
   1471   // CHECK-LABEL: @test_mm512_movm_epi16
   1472   // CHECK: @llvm.x86.avx512.cvtmask2w.512
   1473   return _mm512_movm_epi16(__A);
   1474 }
   1475 
   1476 __m512i test_mm512_broadcastb_epi8(__m128i __A) {
   1477   // CHECK-LABEL: @test_mm512_broadcastb_epi8
   1478   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <64 x i32> zeroinitializer
   1479   return _mm512_broadcastb_epi8(__A);
   1480 }
   1481 
   1482 __m512i test_mm512_mask_broadcastb_epi8(__m512i __O, __mmask64 __M, __m128i __A) {
   1483   // CHECK-LABEL: @test_mm512_mask_broadcastb_epi8
   1484   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <64 x i32> zeroinitializer
   1485   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1486   return _mm512_mask_broadcastb_epi8(__O, __M, __A);
   1487 }
   1488 
   1489 __m512i test_mm512_maskz_broadcastb_epi8(__mmask64 __M, __m128i __A) {
   1490   // CHECK-LABEL: @test_mm512_maskz_broadcastb_epi8
   1491   // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> undef, <64 x i32> zeroinitializer
   1492   // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1493   return _mm512_maskz_broadcastb_epi8(__M, __A);
   1494 }
   1495 
   1496 __m512i test_mm512_broadcastw_epi16(__m128i __A) {
   1497   // CHECK-LABEL: @test_mm512_broadcastw_epi16
   1498   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <32 x i32> zeroinitializer
   1499   return _mm512_broadcastw_epi16(__A);
   1500 }
   1501 
   1502 __m512i test_mm512_mask_broadcastw_epi16(__m512i __O, __mmask32 __M, __m128i __A) {
   1503   // CHECK-LABEL: @test_mm512_mask_broadcastw_epi16
   1504   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <32 x i32> zeroinitializer
   1505   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1506   return _mm512_mask_broadcastw_epi16(__O, __M, __A);
   1507 }
   1508 
   1509 __m512i test_mm512_maskz_broadcastw_epi16(__mmask32 __M, __m128i __A) {
   1510   // CHECK-LABEL: @test_mm512_maskz_broadcastw_epi16
   1511   // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> undef, <32 x i32> zeroinitializer
   1512   // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
   1513   return _mm512_maskz_broadcastw_epi16(__M, __A);
   1514 }
   1515 
   1516 __m512i test_mm512_mask_set1_epi16(__m512i __O, __mmask32 __M, short __A) {
   1517   // CHECK-LABEL: @test_mm512_mask_set1_epi16
   1518   // CHECK: @llvm.x86.avx512.mask.pbroadcast.w.gpr.512
   1519   return _mm512_mask_set1_epi16(__O, __M, __A);
   1520 }
   1521 
   1522 __m512i test_mm512_maskz_set1_epi16(__mmask32 __M, short __A) {
   1523   // CHECK-LABEL: @test_mm512_maskz_set1_epi16
   1524   // CHECK: @llvm.x86.avx512.mask.pbroadcast.w.gpr.512
   1525   return _mm512_maskz_set1_epi16(__M, __A);
   1526 }
   1527 __m512i test_mm512_permutexvar_epi16(__m512i __A, __m512i __B) {
   1528   // CHECK-LABEL: @test_mm512_permutexvar_epi16
   1529   // CHECK: @llvm.x86.avx512.mask.permvar.hi.512
   1530  return _mm512_permutexvar_epi16(__A, __B);
   1531 }
   1532 
   1533 __m512i test_mm512_maskz_permutexvar_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
   1534  // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi16
   1535   // CHECK: @llvm.x86.avx512.mask.permvar.hi.512
   1536   return _mm512_maskz_permutexvar_epi16(__M, __A, __B);
   1537 }
   1538 
   1539 __m512i test_mm512_mask_permutexvar_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
   1540   // CHECK-LABEL: @test_mm512_mask_permutexvar_epi16
   1541   // CHECK: @llvm.x86.avx512.mask.permvar.hi.512
   1542   return _mm512_mask_permutexvar_epi16(__W, __M, __A, __B);
   1543 }
   1544 __m512i test_mm512_alignr_epi8(__m512i __A,__m512i __B){
   1545     // CHECK-LABEL: @test_mm512_alignr_epi8
   1546     // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>
   1547     return _mm512_alignr_epi8(__A, __B, 2);
   1548 }
   1549 
   1550 __m512i test_mm512_mask_alignr_epi8(__m512i __W, __mmask64 __U, __m512i __A,__m512i __B){
   1551     // CHECK-LABEL: @test_mm512_mask_alignr_epi8
   1552     // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>
   1553     // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1554     return _mm512_mask_alignr_epi8(__W, __U, __A, __B, 2);
   1555 }
   1556 
   1557 __m512i test_mm512_maskz_alignr_epi8(__mmask64 __U, __m512i __A,__m512i __B){
   1558     // CHECK-LABEL: @test_mm512_maskz_alignr_epi8
   1559     // CHECK: shufflevector <64 x i8> %{{.*}}, <64 x i8> %{{.*}}, <64 x i32> <i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 64, i32 65, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 80, i32 81, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 96, i32 97, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63, i32 112, i32 113>
   1560     // CHECK: select <64 x i1> %{{.*}}, <64 x i8> %{{.*}}, <64 x i8> %{{.*}}
   1561    return _mm512_maskz_alignr_epi8(__U, __A, __B, 2);
   1562 }
   1563 
   1564 
   1565 
   1566 __m512i test_mm512_mm_dbsad_epu8(__m512i __A, __m512i __B) {
   1567   // CHECK-LABEL: @test_mm512_mm_dbsad_epu8
   1568   // CHECK: @llvm.x86.avx512.mask.dbpsadbw.512
   1569   return _mm512_dbsad_epu8(__A, __B, 170);
   1570 }
   1571 
   1572 __m512i test_mm512_mm_mask_dbsad_epu8(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1573   // CHECK-LABEL: @test_mm512_mm_mask_dbsad_epu8
   1574   // CHECK: @llvm.x86.avx512.mask.dbpsadbw.512
   1575   return _mm512_mask_dbsad_epu8(__W, __U, __A, __B, 170);
   1576 }
   1577 
   1578 __m512i test_mm512_mm_maskz_dbsad_epu8(__mmask32 __U, __m512i __A, __m512i __B) {
   1579   // CHECK-LABEL: @test_mm512_mm_maskz_dbsad_epu8
   1580   // CHECK: @llvm.x86.avx512.mask.dbpsadbw.512
   1581   return _mm512_maskz_dbsad_epu8(__U, __A, __B, 170);
   1582 }
   1583 
   1584 __m512i test_mm512_sad_epu8(__m512i __A, __m512i __B) {
   1585   // CHECK-LABEL: @test_mm512_sad_epu8
   1586   // CHECK: @llvm.x86.avx512.psad.bw.512
   1587   return _mm512_sad_epu8(__A, __B);
   1588 }
   1589 
   1590 __mmask32 test_mm512_movepi16_mask(__m512i __A) {
   1591   // CHECK-LABEL: @test_mm512_movepi16_mask
   1592   // CHECK: @llvm.x86.avx512.cvtw2mask.512
   1593   return _mm512_movepi16_mask(__A);
   1594 }
   1595 
   1596 void test_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1597 {
   1598  // CHECK-LABEL: @test_mm512_mask_cvtepi16_storeu_epi8
   1599  // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.512
   1600  __builtin_ia32_pmovwb512mem_mask ( __P,  __A, __M);
   1601 }
   1602 
   1603 void test_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1604 {
   1605  // CHECK-LABEL: @test_mm512_mask_cvtsepi16_storeu_epi8
   1606  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.512
   1607  __builtin_ia32_pmovswb512mem_mask ( __P,  __A, __M);
   1608 }
   1609 
   1610 void test_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
   1611 {
   1612  // CHECK-LABEL: @test_mm512_mask_cvtusepi16_storeu_epi8
   1613  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.512
   1614  __builtin_ia32_pmovuswb512mem_mask ( __P, __A, __M);
   1615 }
   1616