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: @llvm.x86.avx512.mask.pcmpeq.b.512
     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: @llvm.x86.avx512.mask.pcmpeq.b.512
     18   return (__mmask64)_mm512_mask_cmpeq_epi8_mask(__u, __a, __b);
     19 }
     20 
     21 __mmask32 test_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
     22   // CHECK-LABEL: @test_mm512_cmpeq_epi16_mask
     23   // CHECK: @llvm.x86.avx512.mask.pcmpeq.w.512
     24   return (__mmask32)_mm512_cmpeq_epi16_mask(__a, __b);
     25 }
     26 
     27 __mmask32 test_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     28   // CHECK-LABEL: @test_mm512_mask_cmpeq_epi16_mask
     29   // CHECK: @llvm.x86.avx512.mask.pcmpeq.w.512
     30   return (__mmask32)_mm512_mask_cmpeq_epi16_mask(__u, __a, __b);
     31 }
     32 
     33 __mmask64 test_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
     34   // CHECK-LABEL: @test_mm512_cmpgt_epi8_mask
     35   // CHECK: @llvm.x86.avx512.mask.pcmpgt.b.512
     36   return (__mmask64)_mm512_cmpgt_epi8_mask(__a, __b);
     37 }
     38 
     39 __mmask64 test_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     40   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi8_mask
     41   // CHECK: @llvm.x86.avx512.mask.pcmpgt.b.512
     42   return (__mmask64)_mm512_mask_cmpgt_epi8_mask(__u, __a, __b);
     43 }
     44 
     45 __mmask32 test_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
     46   // CHECK-LABEL: @test_mm512_cmpgt_epi16_mask
     47   // CHECK: @llvm.x86.avx512.mask.pcmpgt.w.512
     48   return (__mmask32)_mm512_cmpgt_epi16_mask(__a, __b);
     49 }
     50 
     51 __mmask32 test_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     52   // CHECK-LABEL: @test_mm512_mask_cmpgt_epi16_mask
     53   // CHECK: @llvm.x86.avx512.mask.pcmpgt.w.512
     54   return (__mmask32)_mm512_mask_cmpgt_epi16_mask(__u, __a, __b);
     55 }
     56 
     57 __mmask64 test_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
     58   // CHECK-LABEL: @test_mm512_cmpeq_epu8_mask
     59   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 0, i64 -1)
     60   return (__mmask64)_mm512_cmpeq_epu8_mask(__a, __b);
     61 }
     62 
     63 __mmask64 test_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     64   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu8_mask
     65   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 0, i64 {{.*}})
     66   return (__mmask64)_mm512_mask_cmpeq_epu8_mask(__u, __a, __b);
     67 }
     68 
     69 __mmask32 test_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
     70   // CHECK-LABEL: @test_mm512_cmpeq_epu16_mask
     71   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 0, i32 -1)
     72   return (__mmask32)_mm512_cmpeq_epu16_mask(__a, __b);
     73 }
     74 
     75 __mmask32 test_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
     76   // CHECK-LABEL: @test_mm512_mask_cmpeq_epu16_mask
     77   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 0, i32 {{.*}})
     78   return (__mmask32)_mm512_mask_cmpeq_epu16_mask(__u, __a, __b);
     79 }
     80 
     81 __mmask64 test_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
     82   // CHECK-LABEL: @test_mm512_cmpgt_epu8_mask
     83   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 6, i64 -1)
     84   return (__mmask64)_mm512_cmpgt_epu8_mask(__a, __b);
     85 }
     86 
     87 __mmask64 test_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
     88   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu8_mask
     89   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 6, i64 {{.*}})
     90   return (__mmask64)_mm512_mask_cmpgt_epu8_mask(__u, __a, __b);
     91 }
     92 
     93 __mmask32 test_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
     94   // CHECK-LABEL: @test_mm512_cmpgt_epu16_mask
     95   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 6, i32 -1)
     96   return (__mmask32)_mm512_cmpgt_epu16_mask(__a, __b);
     97 }
     98 
     99 __mmask32 test_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    100   // CHECK-LABEL: @test_mm512_mask_cmpgt_epu16_mask
    101   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 6, i32 {{.*}})
    102   return (__mmask32)_mm512_mask_cmpgt_epu16_mask(__u, __a, __b);
    103 }
    104 
    105 __mmask64 test_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
    106   // CHECK-LABEL: @test_mm512_cmpge_epi8_mask
    107   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 -1)
    108   return (__mmask64)_mm512_cmpge_epi8_mask(__a, __b);
    109 }
    110 
    111 __mmask64 test_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    112   // CHECK-LABEL: @test_mm512_mask_cmpge_epi8_mask
    113   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 {{.*}})
    114   return (__mmask64)_mm512_mask_cmpge_epi8_mask(__u, __a, __b);
    115 }
    116 
    117 __mmask64 test_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
    118   // CHECK-LABEL: @test_mm512_cmpge_epu8_mask
    119   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 -1)
    120   return (__mmask64)_mm512_cmpge_epu8_mask(__a, __b);
    121 }
    122 
    123 __mmask64 test_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    124   // CHECK-LABEL: @test_mm512_mask_cmpge_epu8_mask
    125   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 5, i64 {{.*}})
    126   return (__mmask64)_mm512_mask_cmpge_epu8_mask(__u, __a, __b);
    127 }
    128 
    129 __mmask32 test_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
    130   // CHECK-LABEL: @test_mm512_cmpge_epi16_mask
    131   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 -1)
    132   return (__mmask32)_mm512_cmpge_epi16_mask(__a, __b);
    133 }
    134 
    135 __mmask32 test_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    136   // CHECK-LABEL: @test_mm512_mask_cmpge_epi16_mask
    137   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 {{.*}})
    138   return (__mmask32)_mm512_mask_cmpge_epi16_mask(__u, __a, __b);
    139 }
    140 
    141 __mmask32 test_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
    142   // CHECK-LABEL: @test_mm512_cmpge_epu16_mask
    143   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 -1)
    144   return (__mmask32)_mm512_cmpge_epu16_mask(__a, __b);
    145 }
    146 
    147 __mmask32 test_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    148   // CHECK-LABEL: @test_mm512_mask_cmpge_epu16_mask
    149   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 5, i32 {{.*}})
    150   return (__mmask32)_mm512_mask_cmpge_epu16_mask(__u, __a, __b);
    151 }
    152 
    153 __mmask64 test_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
    154   // CHECK-LABEL: @test_mm512_cmple_epi8_mask
    155   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 -1)
    156   return (__mmask64)_mm512_cmple_epi8_mask(__a, __b);
    157 }
    158 
    159 __mmask64 test_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    160   // CHECK-LABEL: @test_mm512_mask_cmple_epi8_mask
    161   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 {{.*}})
    162   return (__mmask64)_mm512_mask_cmple_epi8_mask(__u, __a, __b);
    163 }
    164 
    165 __mmask64 test_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
    166   // CHECK-LABEL: @test_mm512_cmple_epu8_mask
    167   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 -1)
    168   return (__mmask64)_mm512_cmple_epu8_mask(__a, __b);
    169 }
    170 
    171 __mmask64 test_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    172   // CHECK-LABEL: @test_mm512_mask_cmple_epu8_mask
    173   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 2, i64 {{.*}})
    174   return (__mmask64)_mm512_mask_cmple_epu8_mask(__u, __a, __b);
    175 }
    176 
    177 __mmask32 test_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
    178   // CHECK-LABEL: @test_mm512_cmple_epi16_mask
    179   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 -1)
    180   return (__mmask32)_mm512_cmple_epi16_mask(__a, __b);
    181 }
    182 
    183 __mmask32 test_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    184   // CHECK-LABEL: @test_mm512_mask_cmple_epi16_mask
    185   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 {{.*}})
    186   return (__mmask32)_mm512_mask_cmple_epi16_mask(__u, __a, __b);
    187 }
    188 
    189 __mmask32 test_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
    190   // CHECK-LABEL: @test_mm512_cmple_epu16_mask
    191   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 -1)
    192   return (__mmask32)_mm512_cmple_epu16_mask(__a, __b);
    193 }
    194 
    195 __mmask32 test_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    196   // CHECK-LABEL: @test_mm512_mask_cmple_epu16_mask
    197   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 2, i32 {{.*}})
    198   return (__mmask32)_mm512_mask_cmple_epu16_mask(__u, __a, __b);
    199 }
    200 
    201 __mmask64 test_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
    202   // CHECK-LABEL: @test_mm512_cmplt_epi8_mask
    203   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 -1)
    204   return (__mmask64)_mm512_cmplt_epi8_mask(__a, __b);
    205 }
    206 
    207 __mmask64 test_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    208   // CHECK-LABEL: @test_mm512_mask_cmplt_epi8_mask
    209   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 {{.*}})
    210   return (__mmask64)_mm512_mask_cmplt_epi8_mask(__u, __a, __b);
    211 }
    212 
    213 __mmask64 test_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
    214   // CHECK-LABEL: @test_mm512_cmplt_epu8_mask
    215   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 -1)
    216   return (__mmask64)_mm512_cmplt_epu8_mask(__a, __b);
    217 }
    218 
    219 __mmask64 test_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    220   // CHECK-LABEL: @test_mm512_mask_cmplt_epu8_mask
    221   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 1, i64 {{.*}})
    222   return (__mmask64)_mm512_mask_cmplt_epu8_mask(__u, __a, __b);
    223 }
    224 
    225 __mmask32 test_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
    226   // CHECK-LABEL: @test_mm512_cmplt_epi16_mask
    227   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 -1)
    228   return (__mmask32)_mm512_cmplt_epi16_mask(__a, __b);
    229 }
    230 
    231 __mmask32 test_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    232   // CHECK-LABEL: @test_mm512_mask_cmplt_epi16_mask
    233   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 {{.*}})
    234   return (__mmask32)_mm512_mask_cmplt_epi16_mask(__u, __a, __b);
    235 }
    236 
    237 __mmask32 test_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
    238   // CHECK-LABEL: @test_mm512_cmplt_epu16_mask
    239   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 -1)
    240   return (__mmask32)_mm512_cmplt_epu16_mask(__a, __b);
    241 }
    242 
    243 __mmask32 test_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    244   // CHECK-LABEL: @test_mm512_mask_cmplt_epu16_mask
    245   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 1, i32 {{.*}})
    246   return (__mmask32)_mm512_mask_cmplt_epu16_mask(__u, __a, __b);
    247 }
    248 
    249 __mmask64 test_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
    250   // CHECK-LABEL: @test_mm512_cmpneq_epi8_mask
    251   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 -1)
    252   return (__mmask64)_mm512_cmpneq_epi8_mask(__a, __b);
    253 }
    254 
    255 __mmask64 test_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    256   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi8_mask
    257   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 {{.*}})
    258   return (__mmask64)_mm512_mask_cmpneq_epi8_mask(__u, __a, __b);
    259 }
    260 
    261 __mmask64 test_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
    262   // CHECK-LABEL: @test_mm512_cmpneq_epu8_mask
    263   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 -1)
    264   return (__mmask64)_mm512_cmpneq_epu8_mask(__a, __b);
    265 }
    266 
    267 __mmask64 test_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    268   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu8_mask
    269   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 4, i64 {{.*}})
    270   return (__mmask64)_mm512_mask_cmpneq_epu8_mask(__u, __a, __b);
    271 }
    272 
    273 __mmask32 test_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
    274   // CHECK-LABEL: @test_mm512_cmpneq_epi16_mask
    275   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 -1)
    276   return (__mmask32)_mm512_cmpneq_epi16_mask(__a, __b);
    277 }
    278 
    279 __mmask32 test_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    280   // CHECK-LABEL: @test_mm512_mask_cmpneq_epi16_mask
    281   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 {{.*}})
    282   return (__mmask32)_mm512_mask_cmpneq_epi16_mask(__u, __a, __b);
    283 }
    284 
    285 __mmask32 test_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
    286   // CHECK-LABEL: @test_mm512_cmpneq_epu16_mask
    287   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 -1)
    288   return (__mmask32)_mm512_cmpneq_epu16_mask(__a, __b);
    289 }
    290 
    291 __mmask32 test_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    292   // CHECK-LABEL: @test_mm512_mask_cmpneq_epu16_mask
    293   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 4, i32 {{.*}})
    294   return (__mmask32)_mm512_mask_cmpneq_epu16_mask(__u, __a, __b);
    295 }
    296 
    297 __mmask64 test_mm512_cmp_epi8_mask(__m512i __a, __m512i __b) {
    298   // CHECK-LABEL: @test_mm512_cmp_epi8_mask
    299   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 -1)
    300   return (__mmask64)_mm512_cmp_epi8_mask(__a, __b, 7);
    301 }
    302 
    303 __mmask64 test_mm512_mask_cmp_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    304   // CHECK-LABEL: @test_mm512_mask_cmp_epi8_mask
    305   // CHECK: @llvm.x86.avx512.mask.cmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 {{.*}})
    306   return (__mmask64)_mm512_mask_cmp_epi8_mask(__u, __a, __b, 7);
    307 }
    308 
    309 __mmask64 test_mm512_cmp_epu8_mask(__m512i __a, __m512i __b) {
    310   // CHECK-LABEL: @test_mm512_cmp_epu8_mask
    311   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 -1)
    312   return (__mmask64)_mm512_cmp_epu8_mask(__a, __b, 7);
    313 }
    314 
    315 __mmask64 test_mm512_mask_cmp_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
    316   // CHECK-LABEL: @test_mm512_mask_cmp_epu8_mask
    317   // CHECK: @llvm.x86.avx512.mask.ucmp.b.512(<64 x i8> {{.*}}, <64 x i8> {{.*}}, i32 7, i64 {{.*}})
    318   return (__mmask64)_mm512_mask_cmp_epu8_mask(__u, __a, __b, 7);
    319 }
    320 
    321 __mmask32 test_mm512_cmp_epi16_mask(__m512i __a, __m512i __b) {
    322   // CHECK-LABEL: @test_mm512_cmp_epi16_mask
    323   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 -1)
    324   return (__mmask32)_mm512_cmp_epi16_mask(__a, __b, 7);
    325 }
    326 
    327 __mmask32 test_mm512_mask_cmp_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    328   // CHECK-LABEL: @test_mm512_mask_cmp_epi16_mask
    329   // CHECK: @llvm.x86.avx512.mask.cmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 {{.*}})
    330   return (__mmask32)_mm512_mask_cmp_epi16_mask(__u, __a, __b, 7);
    331 }
    332 
    333 __mmask32 test_mm512_cmp_epu16_mask(__m512i __a, __m512i __b) {
    334   // CHECK-LABEL: @test_mm512_cmp_epu16_mask
    335   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 -1)
    336   return (__mmask32)_mm512_cmp_epu16_mask(__a, __b, 7);
    337 }
    338 
    339 __mmask32 test_mm512_mask_cmp_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
    340   // CHECK-LABEL: @test_mm512_mask_cmp_epu16_mask
    341   // CHECK: @llvm.x86.avx512.mask.ucmp.w.512(<32 x i16> {{.*}}, <32 x i16> {{.*}}, i32 7, i32 {{.*}})
    342   return (__mmask32)_mm512_mask_cmp_epu16_mask(__u, __a, __b, 7);
    343 }
    344 
    345 __m512i test_mm512_add_epi8 (__m512i __A, __m512i __B) {
    346   //CHECK-LABEL: @test_mm512_add_epi8
    347   //CHECK: add <64 x i8>
    348   return _mm512_add_epi8(__A,__B);
    349 }
    350 
    351 __m512i test_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    352   //CHECK-LABEL: @test_mm512_mask_add_epi8
    353   //CHECK: @llvm.x86.avx512.mask.padd.b.512
    354   return _mm512_mask_add_epi8(__W, __U, __A, __B);
    355 }
    356 
    357 __m512i test_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
    358   //CHECK-LABEL: @test_mm512_maskz_add_epi8
    359   //CHECK: @llvm.x86.avx512.mask.padd.b.512
    360   return _mm512_maskz_add_epi8(__U, __A, __B);
    361 }
    362 
    363 __m512i test_mm512_sub_epi8 (__m512i __A, __m512i __B) {
    364   //CHECK-LABEL: @test_mm512_sub_epi8
    365   //CHECK: sub <64 x i8>
    366   return _mm512_sub_epi8(__A, __B);
    367 }
    368 
    369 __m512i test_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    370   //CHECK-LABEL: @test_mm512_mask_sub_epi8
    371   //CHECK: @llvm.x86.avx512.mask.psub.b.512
    372   return _mm512_mask_sub_epi8(__W, __U, __A, __B);
    373 }
    374 
    375 __m512i test_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
    376   //CHECK-LABEL: @test_mm512_maskz_sub_epi8
    377   //CHECK: @llvm.x86.avx512.mask.psub.b.512
    378   return _mm512_maskz_sub_epi8(__U, __A, __B);
    379 }
    380 
    381 __m512i test_mm512_add_epi16 (__m512i __A, __m512i __B) {
    382   //CHECK-LABEL: @test_mm512_add_epi16
    383   //CHECK: add <32 x i16>
    384   return _mm512_add_epi16(__A, __B);
    385 }
    386 
    387 __m512i test_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    388   //CHECK-LABEL: @test_mm512_mask_add_epi16
    389   //CHECK: @llvm.x86.avx512.mask.padd.w.512
    390   return _mm512_mask_add_epi16(__W, __U, __A, __B);
    391 }
    392 
    393 __m512i test_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    394   //CHECK-LABEL: @test_mm512_maskz_add_epi16
    395   //CHECK: @llvm.x86.avx512.mask.padd.w.512
    396   return _mm512_maskz_add_epi16(__U, __A, __B);
    397 }
    398 
    399 __m512i test_mm512_sub_epi16 (__m512i __A, __m512i __B) {
    400   //CHECK-LABEL: @test_mm512_sub_epi16
    401   //CHECK: sub <32 x i16>
    402   return _mm512_sub_epi16(__A, __B);
    403 }
    404 
    405 __m512i test_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    406   //CHECK-LABEL: @test_mm512_mask_sub_epi16
    407   //CHECK: @llvm.x86.avx512.mask.psub.w.512
    408   return _mm512_mask_sub_epi16(__W, __U, __A, __B);
    409 }
    410 
    411 __m512i test_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    412   //CHECK-LABEL: @test_mm512_maskz_sub_epi16
    413   //CHECK: @llvm.x86.avx512.mask.psub.w.512
    414   return _mm512_maskz_sub_epi16(__U, __A, __B);
    415 }
    416 
    417 __m512i test_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
    418   //CHECK-LABEL: @test_mm512_mullo_epi16
    419   //CHECK: mul <32 x i16>
    420   return _mm512_mullo_epi16(__A, __B);
    421 }
    422 
    423 __m512i test_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    424   //CHECK-LABEL: @test_mm512_mask_mullo_epi16
    425   //CHECK: @llvm.x86.avx512.mask.pmull.w.512
    426   return _mm512_mask_mullo_epi16(__W, __U, __A, __B);
    427 }
    428 
    429 __m512i test_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
    430   //CHECK-LABEL: @test_mm512_maskz_mullo_epi16
    431   //CHECK: @llvm.x86.avx512.mask.pmull.w.512
    432   return _mm512_maskz_mullo_epi16(__U, __A, __B);
    433 }
    434 
    435 __m512i test_mm512_mask_blend_epi8(__mmask64 __U, __m512i __A, __m512i __W) {
    436   // CHECK-LABEL: @test_mm512_mask_blend_epi8
    437   // CHECK: @llvm.x86.avx512.mask.blend.b.512
    438   return _mm512_mask_blend_epi8(__U,__A,__W);
    439 }
    440 __m512i test_mm512_mask_blend_epi16(__mmask32 __U, __m512i __A, __m512i __W) {
    441   // CHECK-LABEL: @test_mm512_mask_blend_epi16
    442   // CHECK: @llvm.x86.avx512.mask.blend.w.512
    443   return _mm512_mask_blend_epi16(__U,__A,__W);
    444 }
    445 __m512i test_mm512_abs_epi8(__m512i __A) {
    446   // CHECK-LABEL: @test_mm512_abs_epi8
    447   // CHECK: @llvm.x86.avx512.mask.pabs.b.512
    448   return _mm512_abs_epi8(__A);
    449 }
    450 __m512i test_mm512_mask_abs_epi8(__m512i __W, __mmask64 __U, __m512i __A) {
    451   // CHECK-LABEL: @test_mm512_mask_abs_epi8
    452   // CHECK: @llvm.x86.avx512.mask.pabs.b.512
    453   return _mm512_mask_abs_epi8(__W,__U,__A);
    454 }
    455 __m512i test_mm512_maskz_abs_epi8(__mmask64 __U, __m512i __A) {
    456   // CHECK-LABEL: @test_mm512_maskz_abs_epi8
    457   // CHECK: @llvm.x86.avx512.mask.pabs.b.512
    458   return _mm512_maskz_abs_epi8(__U,__A);
    459 }
    460 __m512i test_mm512_abs_epi16(__m512i __A) {
    461   // CHECK-LABEL: @test_mm512_abs_epi16
    462   // CHECK: @llvm.x86.avx512.mask.pabs.w.512
    463   return _mm512_abs_epi16(__A);
    464 }
    465 __m512i test_mm512_mask_abs_epi16(__m512i __W, __mmask32 __U, __m512i __A) {
    466   // CHECK-LABEL: @test_mm512_mask_abs_epi16
    467   // CHECK: @llvm.x86.avx512.mask.pabs.w.512
    468   return _mm512_mask_abs_epi16(__W,__U,__A);
    469 }
    470 __m512i test_mm512_maskz_abs_epi16(__mmask32 __U, __m512i __A) {
    471   // CHECK-LABEL: @test_mm512_maskz_abs_epi16
    472   // CHECK: @llvm.x86.avx512.mask.pabs.w.512
    473   return _mm512_maskz_abs_epi16(__U,__A);
    474 }
    475 __m512i test_mm512_packs_epi32(__m512i __A, __m512i __B) {
    476   // CHECK-LABEL: @test_mm512_packs_epi32
    477   // CHECK: @llvm.x86.avx512.mask.packssdw.512
    478   return _mm512_packs_epi32(__A,__B);
    479 }
    480 __m512i test_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
    481   // CHECK-LABEL: @test_mm512_maskz_packs_epi32
    482   // CHECK: @llvm.x86.avx512.mask.packssdw.512
    483   return _mm512_maskz_packs_epi32(__M,__A,__B);
    484 }
    485 __m512i test_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    486   // CHECK-LABEL: @test_mm512_mask_packs_epi32
    487   // CHECK: @llvm.x86.avx512.mask.packssdw.512
    488   return _mm512_mask_packs_epi32(__W,__M,__A,__B);
    489 }
    490 __m512i test_mm512_packs_epi16(__m512i __A, __m512i __B) {
    491   // CHECK-LABEL: @test_mm512_packs_epi16
    492   // CHECK: @llvm.x86.avx512.mask.packsswb.512
    493   return _mm512_packs_epi16(__A,__B);
    494 }
    495 __m512i test_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    496   // CHECK-LABEL: @test_mm512_mask_packs_epi16
    497   // CHECK: @llvm.x86.avx512.mask.packsswb.512
    498   return _mm512_mask_packs_epi16(__W,__M,__A,__B);
    499 }
    500 __m512i test_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
    501   // CHECK-LABEL: @test_mm512_maskz_packs_epi16
    502   // CHECK: @llvm.x86.avx512.mask.packsswb.512
    503   return _mm512_maskz_packs_epi16(__M,__A,__B);
    504 }
    505 __m512i test_mm512_packus_epi32(__m512i __A, __m512i __B) {
    506   // CHECK-LABEL: @test_mm512_packus_epi32
    507   // CHECK: @llvm.x86.avx512.mask.packusdw.512
    508   return _mm512_packus_epi32(__A,__B);
    509 }
    510 __m512i test_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B) {
    511   // CHECK-LABEL: @test_mm512_maskz_packus_epi32
    512   // CHECK: @llvm.x86.avx512.mask.packusdw.512
    513   return _mm512_maskz_packus_epi32(__M,__A,__B);
    514 }
    515 __m512i test_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    516   // CHECK-LABEL: @test_mm512_mask_packus_epi32
    517   // CHECK: @llvm.x86.avx512.mask.packusdw.512
    518   return _mm512_mask_packus_epi32(__W,__M,__A,__B);
    519 }
    520 __m512i test_mm512_packus_epi16(__m512i __A, __m512i __B) {
    521   // CHECK-LABEL: @test_mm512_packus_epi16
    522   // CHECK: @llvm.x86.avx512.mask.packuswb.512
    523   return _mm512_packus_epi16(__A,__B);
    524 }
    525 __m512i test_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    526   // CHECK-LABEL: @test_mm512_mask_packus_epi16
    527   // CHECK: @llvm.x86.avx512.mask.packuswb.512
    528   return _mm512_mask_packus_epi16(__W,__M,__A,__B);
    529 }
    530 __m512i test_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B) {
    531   // CHECK-LABEL: @test_mm512_maskz_packus_epi16
    532   // CHECK: @llvm.x86.avx512.mask.packuswb.512
    533   return _mm512_maskz_packus_epi16(__M,__A,__B);
    534 }
    535 __m512i test_mm512_adds_epi8(__m512i __A, __m512i __B) {
    536   // CHECK-LABEL: @test_mm512_adds_epi8
    537   // CHECK: @llvm.x86.avx512.mask.padds.b.512
    538   return _mm512_adds_epi8(__A,__B);
    539 }
    540 __m512i test_mm512_mask_adds_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    541   // CHECK-LABEL: @test_mm512_mask_adds_epi8
    542   // CHECK: @llvm.x86.avx512.mask.padds.b.512
    543   return _mm512_mask_adds_epi8(__W,__U,__A,__B);
    544 }
    545 __m512i test_mm512_maskz_adds_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    546   // CHECK-LABEL: @test_mm512_maskz_adds_epi8
    547   // CHECK: @llvm.x86.avx512.mask.padds.b.512
    548   return _mm512_maskz_adds_epi8(__U,__A,__B);
    549 }
    550 __m512i test_mm512_adds_epi16(__m512i __A, __m512i __B) {
    551   // CHECK-LABEL: @test_mm512_adds_epi16
    552   // CHECK: @llvm.x86.avx512.mask.padds.w.512
    553   return _mm512_adds_epi16(__A,__B);
    554 }
    555 __m512i test_mm512_mask_adds_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    556   // CHECK-LABEL: @test_mm512_mask_adds_epi16
    557   // CHECK: @llvm.x86.avx512.mask.padds.w.512
    558   return _mm512_mask_adds_epi16(__W,__U,__A,__B);
    559 }
    560 __m512i test_mm512_maskz_adds_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    561   // CHECK-LABEL: @test_mm512_maskz_adds_epi16
    562   // CHECK: @llvm.x86.avx512.mask.padds.w.512
    563   return _mm512_maskz_adds_epi16(__U,__A,__B);
    564 }
    565 __m512i test_mm512_adds_epu8(__m512i __A, __m512i __B) {
    566   // CHECK-LABEL: @test_mm512_adds_epu8
    567   // CHECK: @llvm.x86.avx512.mask.paddus.b.512
    568   return _mm512_adds_epu8(__A,__B);
    569 }
    570 __m512i test_mm512_mask_adds_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    571   // CHECK-LABEL: @test_mm512_mask_adds_epu8
    572   // CHECK: @llvm.x86.avx512.mask.paddus.b.512
    573   return _mm512_mask_adds_epu8(__W,__U,__A,__B);
    574 }
    575 __m512i test_mm512_maskz_adds_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
    576   // CHECK-LABEL: @test_mm512_maskz_adds_epu8
    577   // CHECK: @llvm.x86.avx512.mask.paddus.b.512
    578   return _mm512_maskz_adds_epu8(__U,__A,__B);
    579 }
    580 __m512i test_mm512_adds_epu16(__m512i __A, __m512i __B) {
    581   // CHECK-LABEL: @test_mm512_adds_epu16
    582   // CHECK: @llvm.x86.avx512.mask.paddus.w.512
    583   return _mm512_adds_epu16(__A,__B);
    584 }
    585 __m512i test_mm512_mask_adds_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    586   // CHECK-LABEL: @test_mm512_mask_adds_epu16
    587   // CHECK: @llvm.x86.avx512.mask.paddus.w.512
    588   return _mm512_mask_adds_epu16(__W,__U,__A,__B);
    589 }
    590 __m512i test_mm512_maskz_adds_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    591   // CHECK-LABEL: @test_mm512_maskz_adds_epu16
    592   // CHECK: @llvm.x86.avx512.mask.paddus.w.512
    593   return _mm512_maskz_adds_epu16(__U,__A,__B);
    594 }
    595 __m512i test_mm512_avg_epu8(__m512i __A, __m512i __B) {
    596   // CHECK-LABEL: @test_mm512_avg_epu8
    597   // CHECK: @llvm.x86.avx512.mask.pavg.b.512
    598   return _mm512_avg_epu8(__A,__B);
    599 }
    600 __m512i test_mm512_mask_avg_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    601   // CHECK-LABEL: @test_mm512_mask_avg_epu8
    602   // CHECK: @llvm.x86.avx512.mask.pavg.b.512
    603   return _mm512_mask_avg_epu8(__W,__U,__A,__B);
    604 }
    605 __m512i test_mm512_maskz_avg_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
    606   // CHECK-LABEL: @test_mm512_maskz_avg_epu8
    607   // CHECK: @llvm.x86.avx512.mask.pavg.b.512
    608   return _mm512_maskz_avg_epu8(__U,__A,__B);
    609 }
    610 __m512i test_mm512_avg_epu16(__m512i __A, __m512i __B) {
    611   // CHECK-LABEL: @test_mm512_avg_epu16
    612   // CHECK: @llvm.x86.avx512.mask.pavg.w.512
    613   return _mm512_avg_epu16(__A,__B);
    614 }
    615 __m512i test_mm512_mask_avg_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    616   // CHECK-LABEL: @test_mm512_mask_avg_epu16
    617   // CHECK: @llvm.x86.avx512.mask.pavg.w.512
    618   return _mm512_mask_avg_epu16(__W,__U,__A,__B);
    619 }
    620 __m512i test_mm512_maskz_avg_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    621   // CHECK-LABEL: @test_mm512_maskz_avg_epu16
    622   // CHECK: @llvm.x86.avx512.mask.pavg.w.512
    623   return _mm512_maskz_avg_epu16(__U,__A,__B);
    624 }
    625 __m512i test_mm512_max_epi8(__m512i __A, __m512i __B) {
    626   // CHECK-LABEL: @test_mm512_max_epi8
    627   // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512
    628   return _mm512_max_epi8(__A,__B);
    629 }
    630 __m512i test_mm512_maskz_max_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
    631   // CHECK-LABEL: @test_mm512_maskz_max_epi8
    632   // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512
    633   return _mm512_maskz_max_epi8(__M,__A,__B);
    634 }
    635 __m512i test_mm512_mask_max_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    636   // CHECK-LABEL: @test_mm512_mask_max_epi8
    637   // CHECK: @llvm.x86.avx512.mask.pmaxs.b.512
    638   return _mm512_mask_max_epi8(__W,__M,__A,__B);
    639 }
    640 __m512i test_mm512_max_epi16(__m512i __A, __m512i __B) {
    641   // CHECK-LABEL: @test_mm512_max_epi16
    642   // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512
    643   return _mm512_max_epi16(__A,__B);
    644 }
    645 __m512i test_mm512_maskz_max_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
    646   // CHECK-LABEL: @test_mm512_maskz_max_epi16
    647   // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512
    648   return _mm512_maskz_max_epi16(__M,__A,__B);
    649 }
    650 __m512i test_mm512_mask_max_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    651   // CHECK-LABEL: @test_mm512_mask_max_epi16
    652   // CHECK: @llvm.x86.avx512.mask.pmaxs.w.512
    653   return _mm512_mask_max_epi16(__W,__M,__A,__B);
    654 }
    655 __m512i test_mm512_max_epu8(__m512i __A, __m512i __B) {
    656   // CHECK-LABEL: @test_mm512_max_epu8
    657   // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512
    658   return _mm512_max_epu8(__A,__B);
    659 }
    660 __m512i test_mm512_maskz_max_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
    661   // CHECK-LABEL: @test_mm512_maskz_max_epu8
    662   // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512
    663   return _mm512_maskz_max_epu8(__M,__A,__B);
    664 }
    665 __m512i test_mm512_mask_max_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    666   // CHECK-LABEL: @test_mm512_mask_max_epu8
    667   // CHECK: @llvm.x86.avx512.mask.pmaxu.b.512
    668   return _mm512_mask_max_epu8(__W,__M,__A,__B);
    669 }
    670 __m512i test_mm512_max_epu16(__m512i __A, __m512i __B) {
    671   // CHECK-LABEL: @test_mm512_max_epu16
    672   // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512
    673   return _mm512_max_epu16(__A,__B);
    674 }
    675 __m512i test_mm512_maskz_max_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
    676   // CHECK-LABEL: @test_mm512_maskz_max_epu16
    677   // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512
    678   return _mm512_maskz_max_epu16(__M,__A,__B);
    679 }
    680 __m512i test_mm512_mask_max_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    681   // CHECK-LABEL: @test_mm512_mask_max_epu16
    682   // CHECK: @llvm.x86.avx512.mask.pmaxu.w.512
    683   return _mm512_mask_max_epu16(__W,__M,__A,__B);
    684 }
    685 __m512i test_mm512_min_epi8(__m512i __A, __m512i __B) {
    686   // CHECK-LABEL: @test_mm512_min_epi8
    687   // CHECK: @llvm.x86.avx512.mask.pmins.b.512
    688   return _mm512_min_epi8(__A,__B);
    689 }
    690 __m512i test_mm512_maskz_min_epi8(__mmask64 __M, __m512i __A, __m512i __B) {
    691   // CHECK-LABEL: @test_mm512_maskz_min_epi8
    692   // CHECK: @llvm.x86.avx512.mask.pmins.b.512
    693   return _mm512_maskz_min_epi8(__M,__A,__B);
    694 }
    695 __m512i test_mm512_mask_min_epi8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    696   // CHECK-LABEL: @test_mm512_mask_min_epi8
    697   // CHECK: @llvm.x86.avx512.mask.pmins.b.512
    698   return _mm512_mask_min_epi8(__W,__M,__A,__B);
    699 }
    700 __m512i test_mm512_min_epi16(__m512i __A, __m512i __B) {
    701   // CHECK-LABEL: @test_mm512_min_epi16
    702   // CHECK: @llvm.x86.avx512.mask.pmins.w.512
    703   return _mm512_min_epi16(__A,__B);
    704 }
    705 __m512i test_mm512_maskz_min_epi16(__mmask32 __M, __m512i __A, __m512i __B) {
    706   // CHECK-LABEL: @test_mm512_maskz_min_epi16
    707   // CHECK: @llvm.x86.avx512.mask.pmins.w.512
    708   return _mm512_maskz_min_epi16(__M,__A,__B);
    709 }
    710 __m512i test_mm512_mask_min_epi16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    711   // CHECK-LABEL: @test_mm512_mask_min_epi16
    712   // CHECK: @llvm.x86.avx512.mask.pmins.w.512
    713   return _mm512_mask_min_epi16(__W,__M,__A,__B);
    714 }
    715 __m512i test_mm512_min_epu8(__m512i __A, __m512i __B) {
    716   // CHECK-LABEL: @test_mm512_min_epu8
    717   // CHECK: @llvm.x86.avx512.mask.pminu.b.512
    718   return _mm512_min_epu8(__A,__B);
    719 }
    720 __m512i test_mm512_maskz_min_epu8(__mmask64 __M, __m512i __A, __m512i __B) {
    721   // CHECK-LABEL: @test_mm512_maskz_min_epu8
    722   // CHECK: @llvm.x86.avx512.mask.pminu.b.512
    723   return _mm512_maskz_min_epu8(__M,__A,__B);
    724 }
    725 __m512i test_mm512_mask_min_epu8(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B) {
    726   // CHECK-LABEL: @test_mm512_mask_min_epu8
    727   // CHECK: @llvm.x86.avx512.mask.pminu.b.512
    728   return _mm512_mask_min_epu8(__W,__M,__A,__B);
    729 }
    730 __m512i test_mm512_min_epu16(__m512i __A, __m512i __B) {
    731   // CHECK-LABEL: @test_mm512_min_epu16
    732   // CHECK: @llvm.x86.avx512.mask.pminu.w.512
    733   return _mm512_min_epu16(__A,__B);
    734 }
    735 __m512i test_mm512_maskz_min_epu16(__mmask32 __M, __m512i __A, __m512i __B) {
    736   // CHECK-LABEL: @test_mm512_maskz_min_epu16
    737   // CHECK: @llvm.x86.avx512.mask.pminu.w.512
    738   return _mm512_maskz_min_epu16(__M,__A,__B);
    739 }
    740 __m512i test_mm512_mask_min_epu16(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B) {
    741   // CHECK-LABEL: @test_mm512_mask_min_epu16
    742   // CHECK: @llvm.x86.avx512.mask.pminu.w.512
    743   return _mm512_mask_min_epu16(__W,__M,__A,__B);
    744 }
    745 __m512i test_mm512_shuffle_epi8(__m512i __A, __m512i __B) {
    746   // CHECK-LABEL: @test_mm512_shuffle_epi8
    747   // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
    748   return _mm512_shuffle_epi8(__A,__B);
    749 }
    750 __m512i test_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    751   // CHECK-LABEL: @test_mm512_mask_shuffle_epi8
    752   // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
    753   return _mm512_mask_shuffle_epi8(__W,__U,__A,__B);
    754 }
    755 __m512i test_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    756   // CHECK-LABEL: @test_mm512_maskz_shuffle_epi8
    757   // CHECK: @llvm.x86.avx512.mask.pshuf.b.512
    758   return _mm512_maskz_shuffle_epi8(__U,__A,__B);
    759 }
    760 __m512i test_mm512_subs_epi8(__m512i __A, __m512i __B) {
    761   // CHECK-LABEL: @test_mm512_subs_epi8
    762   // CHECK: @llvm.x86.avx512.mask.psubs.b.512
    763   return _mm512_subs_epi8(__A,__B);
    764 }
    765 __m512i test_mm512_mask_subs_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    766   // CHECK-LABEL: @test_mm512_mask_subs_epi8
    767   // CHECK: @llvm.x86.avx512.mask.psubs.b.512
    768   return _mm512_mask_subs_epi8(__W,__U,__A,__B);
    769 }
    770 __m512i test_mm512_maskz_subs_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    771   // CHECK-LABEL: @test_mm512_maskz_subs_epi8
    772   // CHECK: @llvm.x86.avx512.mask.psubs.b.512
    773   return _mm512_maskz_subs_epi8(__U,__A,__B);
    774 }
    775 __m512i test_mm512_subs_epi16(__m512i __A, __m512i __B) {
    776   // CHECK-LABEL: @test_mm512_subs_epi16
    777   // CHECK: @llvm.x86.avx512.mask.psubs.w.512
    778   return _mm512_subs_epi16(__A,__B);
    779 }
    780 __m512i test_mm512_mask_subs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    781   // CHECK-LABEL: @test_mm512_mask_subs_epi16
    782   // CHECK: @llvm.x86.avx512.mask.psubs.w.512
    783   return _mm512_mask_subs_epi16(__W,__U,__A,__B);
    784 }
    785 __m512i test_mm512_maskz_subs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    786   // CHECK-LABEL: @test_mm512_maskz_subs_epi16
    787   // CHECK: @llvm.x86.avx512.mask.psubs.w.512
    788   return _mm512_maskz_subs_epi16(__U,__A,__B);
    789 }
    790 __m512i test_mm512_subs_epu8(__m512i __A, __m512i __B) {
    791   // CHECK-LABEL: @test_mm512_subs_epu8
    792   // CHECK: @llvm.x86.avx512.mask.psubus.b.512
    793   return _mm512_subs_epu8(__A,__B);
    794 }
    795 __m512i test_mm512_mask_subs_epu8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    796   // CHECK-LABEL: @test_mm512_mask_subs_epu8
    797   // CHECK: @llvm.x86.avx512.mask.psubus.b.512
    798   return _mm512_mask_subs_epu8(__W,__U,__A,__B);
    799 }
    800 __m512i test_mm512_maskz_subs_epu8(__mmask64 __U, __m512i __A, __m512i __B) {
    801   // CHECK-LABEL: @test_mm512_maskz_subs_epu8
    802   // CHECK: @llvm.x86.avx512.mask.psubus.b.512
    803   return _mm512_maskz_subs_epu8(__U,__A,__B);
    804 }
    805 __m512i test_mm512_subs_epu16(__m512i __A, __m512i __B) {
    806   // CHECK-LABEL: @test_mm512_subs_epu16
    807   // CHECK: @llvm.x86.avx512.mask.psubus.w.512
    808   return _mm512_subs_epu16(__A,__B);
    809 }
    810 __m512i test_mm512_mask_subs_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    811   // CHECK-LABEL: @test_mm512_mask_subs_epu16
    812   // CHECK: @llvm.x86.avx512.mask.psubus.w.512
    813   return _mm512_mask_subs_epu16(__W,__U,__A,__B);
    814 }
    815 __m512i test_mm512_maskz_subs_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    816   // CHECK-LABEL: @test_mm512_maskz_subs_epu16
    817   // CHECK: @llvm.x86.avx512.mask.psubus.w.512
    818   return _mm512_maskz_subs_epu16(__U,__A,__B);
    819 }
    820 __m512i test_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U, __m512i __B) {
    821   // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi16
    822   // CHECK: @llvm.x86.avx512.mask.vpermi2var.hi.512
    823   return _mm512_mask2_permutex2var_epi16(__A,__I,__U,__B);
    824 }
    825 __m512i test_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B) {
    826   // CHECK-LABEL: @test_mm512_permutex2var_epi16
    827   // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512
    828   return _mm512_permutex2var_epi16(__A,__I,__B);
    829 }
    830 __m512i test_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I, __m512i __B) {
    831   // CHECK-LABEL: @test_mm512_mask_permutex2var_epi16
    832   // CHECK: @llvm.x86.avx512.mask.vpermt2var.hi.512
    833   return _mm512_mask_permutex2var_epi16(__A,__U,__I,__B);
    834 }
    835 __m512i test_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I, __m512i __B) {
    836   // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi16
    837   // CHECK: @llvm.x86.avx512.maskz.vpermt2var.hi.512
    838   return _mm512_maskz_permutex2var_epi16(__U,__A,__I,__B);
    839 }
    840 
    841 __m512i test_mm512_mulhrs_epi16(__m512i __A, __m512i __B) {
    842   // CHECK-LABEL: @test_mm512_mulhrs_epi16
    843   // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512
    844   return _mm512_mulhrs_epi16(__A,__B);
    845 }
    846 __m512i test_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A,        __m512i __B) {
    847   // CHECK-LABEL: @test_mm512_mask_mulhrs_epi16
    848   // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512
    849   return _mm512_mask_mulhrs_epi16(__W,__U,__A,__B);
    850 }
    851 __m512i test_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    852   // CHECK-LABEL: @test_mm512_maskz_mulhrs_epi16
    853   // CHECK: @llvm.x86.avx512.mask.pmul.hr.sw.512
    854   return _mm512_maskz_mulhrs_epi16(__U,__A,__B);
    855 }
    856 __m512i test_mm512_mulhi_epi16(__m512i __A, __m512i __B) {
    857   // CHECK-LABEL: @test_mm512_mulhi_epi16
    858   // CHECK: @llvm.x86.avx512.mask.pmulh.w.512
    859   return _mm512_mulhi_epi16(__A,__B);
    860 }
    861 __m512i test_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A,       __m512i __B) {
    862   // CHECK-LABEL: @test_mm512_mask_mulhi_epi16
    863   // CHECK: @llvm.x86.avx512.mask.pmulh.w.512
    864   return _mm512_mask_mulhi_epi16(__W,__U,__A,__B);
    865 }
    866 __m512i test_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
    867   // CHECK-LABEL: @test_mm512_maskz_mulhi_epi16
    868   // CHECK: @llvm.x86.avx512.mask.pmulh.w.512
    869   return _mm512_maskz_mulhi_epi16(__U,__A,__B);
    870 }
    871 __m512i test_mm512_mulhi_epu16(__m512i __A, __m512i __B) {
    872   // CHECK-LABEL: @test_mm512_mulhi_epu16
    873   // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512
    874   return _mm512_mulhi_epu16(__A,__B);
    875 }
    876 __m512i test_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A,       __m512i __B) {
    877   // CHECK-LABEL: @test_mm512_mask_mulhi_epu16
    878   // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512
    879   return _mm512_mask_mulhi_epu16(__W,__U,__A,__B);
    880 }
    881 __m512i test_mm512_maskz_mulhi_epu16(__mmask32 __U, __m512i __A, __m512i __B) {
    882   // CHECK-LABEL: @test_mm512_maskz_mulhi_epu16
    883   // CHECK: @llvm.x86.avx512.mask.pmulhu.w.512
    884   return _mm512_maskz_mulhi_epu16(__U,__A,__B);
    885 }
    886 
    887 __m512i test_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
    888   // CHECK-LABEL: @test_mm512_maddubs_epi16
    889   // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512
    890   return _mm512_maddubs_epi16(__X,__Y);
    891 }
    892 __m512i test_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X,         __m512i __Y) {
    893   // CHECK-LABEL: @test_mm512_mask_maddubs_epi16
    894   // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512
    895   return _mm512_mask_maddubs_epi16(__W,__U,__X,__Y);
    896 }
    897 __m512i test_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
    898   // CHECK-LABEL: @test_mm512_maskz_maddubs_epi16
    899   // CHECK: @llvm.x86.avx512.mask.pmaddubs.w.512
    900   return _mm512_maskz_maddubs_epi16(__U,__X,__Y);
    901 }
    902 __m512i test_mm512_madd_epi16(__m512i __A, __m512i __B) {
    903   // CHECK-LABEL: @test_mm512_madd_epi16
    904   // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512
    905   return _mm512_madd_epi16(__A,__B);
    906 }
    907 __m512i test_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A,      __m512i __B) {
    908   // CHECK-LABEL: @test_mm512_mask_madd_epi16
    909   // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512
    910   return _mm512_mask_madd_epi16(__W,__U,__A,__B);
    911 }
    912 __m512i test_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
    913   // CHECK-LABEL: @test_mm512_maskz_madd_epi16
    914   // CHECK: @llvm.x86.avx512.mask.pmaddw.d.512
    915   return _mm512_maskz_madd_epi16(__U,__A,__B);
    916 }
    917 
    918 __m256i test_mm512_cvtsepi16_epi8(__m512i __A) {
    919   // CHECK-LABEL: @test_mm512_cvtsepi16_epi8
    920   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
    921   return _mm512_cvtsepi16_epi8(__A);
    922 }
    923 
    924 __m256i test_mm512_mask_cvtsepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
    925   // CHECK-LABEL: @test_mm512_mask_cvtsepi16_epi8
    926   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
    927   return _mm512_mask_cvtsepi16_epi8(__O, __M, __A);
    928 }
    929 
    930 __m256i test_mm512_maskz_cvtsepi16_epi8(__mmask32 __M, __m512i __A) {
    931   // CHECK-LABEL: @test_mm512_maskz_cvtsepi16_epi8
    932   // CHECK: @llvm.x86.avx512.mask.pmovs.wb.512
    933   return _mm512_maskz_cvtsepi16_epi8(__M, __A);
    934 }
    935 
    936 __m256i test_mm512_cvtusepi16_epi8(__m512i __A) {
    937   // CHECK-LABEL: @test_mm512_cvtusepi16_epi8
    938   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
    939   return _mm512_cvtusepi16_epi8(__A);
    940 }
    941 
    942 __m256i test_mm512_mask_cvtusepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
    943   // CHECK-LABEL: @test_mm512_mask_cvtusepi16_epi8
    944   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
    945   return _mm512_mask_cvtusepi16_epi8(__O, __M, __A);
    946 }
    947 
    948 __m256i test_mm512_maskz_cvtusepi16_epi8(__mmask32 __M, __m512i __A) {
    949   // CHECK-LABEL: @test_mm512_maskz_cvtusepi16_epi8
    950   // CHECK: @llvm.x86.avx512.mask.pmovus.wb.512
    951   return _mm512_maskz_cvtusepi16_epi8(__M, __A);
    952 }
    953 
    954 __m256i test_mm512_cvtepi16_epi8(__m512i __A) {
    955   // CHECK-LABEL: @test_mm512_cvtepi16_epi8
    956   // CHECK: @llvm.x86.avx512.mask.pmov.wb.512
    957   return _mm512_cvtepi16_epi8(__A);
    958 }
    959 
    960 __m256i test_mm512_mask_cvtepi16_epi8(__m256i __O, __mmask32 __M, __m512i __A) {
    961   // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi8
    962   // CHECK: @llvm.x86.avx512.mask.pmov.wb.512
    963   return _mm512_mask_cvtepi16_epi8(__O, __M, __A);
    964 }
    965 
    966 __m256i test_mm512_maskz_cvtepi16_epi8(__mmask32 __M, __m512i __A) {
    967   // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi8
    968   // CHECK: @llvm.x86.avx512.mask.pmov.wb.512
    969   return _mm512_maskz_cvtepi16_epi8(__M, __A);
    970 }
    971 
    972 __m512i test_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
    973   // CHECK-LABEL: @test_mm512_unpackhi_epi8
    974   // CHECK: @llvm.x86.avx512.mask.punpckhb.w.512
    975   return _mm512_unpackhi_epi8(__A, __B);
    976 }
    977 
    978 __m512i test_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
    979   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi8
    980   // CHECK: @llvm.x86.avx512.mask.punpckhb.w.512
    981   return _mm512_mask_unpackhi_epi8(__W, __U, __A, __B);
    982 }
    983 
    984 __m512i test_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
    985   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi8
    986   // CHECK: @llvm.x86.avx512.mask.punpckhb.w.512
    987   return _mm512_maskz_unpackhi_epi8(__U, __A, __B);
    988 }
    989 
    990 __m512i test_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
    991   // CHECK-LABEL: @test_mm512_unpackhi_epi16
    992   // CHECK: @llvm.x86.avx512.mask.punpckhw.d.512
    993   return _mm512_unpackhi_epi16(__A, __B);
    994 }
    995 
    996 __m512i test_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
    997   // CHECK-LABEL: @test_mm512_mask_unpackhi_epi16
    998   // CHECK: @llvm.x86.avx512.mask.punpckhw.d.512
    999   return _mm512_mask_unpackhi_epi16(__W, __U, __A, __B);
   1000 }
   1001 
   1002 __m512i test_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1003   // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi16
   1004   // CHECK: @llvm.x86.avx512.mask.punpckhw.d.512
   1005   return _mm512_maskz_unpackhi_epi16(__U, __A, __B);
   1006 }
   1007 
   1008 __m512i test_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
   1009   // CHECK-LABEL: @test_mm512_unpacklo_epi8
   1010   // CHECK: @llvm.x86.avx512.mask.punpcklb.w.512
   1011   return _mm512_unpacklo_epi8(__A, __B);
   1012 }
   1013 
   1014 __m512i test_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
   1015   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi8
   1016   // CHECK: @llvm.x86.avx512.mask.punpcklb.w.512
   1017   return _mm512_mask_unpacklo_epi8(__W, __U, __A, __B);
   1018 }
   1019 
   1020 __m512i test_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
   1021   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi8
   1022   // CHECK: @llvm.x86.avx512.mask.punpcklb.w.512
   1023   return _mm512_maskz_unpacklo_epi8(__U, __A, __B);
   1024 }
   1025 
   1026 __m512i test_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
   1027   // CHECK-LABEL: @test_mm512_unpacklo_epi16
   1028   // CHECK: @llvm.x86.avx512.mask.punpcklw.d.512
   1029   return _mm512_unpacklo_epi16(__A, __B);
   1030 }
   1031 
   1032 __m512i test_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
   1033   // CHECK-LABEL: @test_mm512_mask_unpacklo_epi16
   1034   // CHECK: @llvm.x86.avx512.mask.punpcklw.d.512
   1035   return _mm512_mask_unpacklo_epi16(__W, __U, __A, __B);
   1036 }
   1037 
   1038 __m512i test_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
   1039   // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi16
   1040   // CHECK: @llvm.x86.avx512.mask.punpcklw.d.512
   1041   return _mm512_maskz_unpacklo_epi16(__U, __A, __B);
   1042 }
   1043 
   1044