brintos

brintos / llvm-project-archived public Read only

0
0
Text · 229.3 KiB · f6f27d9 Raw
3816 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s2// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s3// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx10.1 -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s4// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s5// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s6// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx10.1 -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s7 8// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s10// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx10.1 -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s11// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s12// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512bw -target-feature +avx512vl -fno-signed-char -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s13// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx10.1 -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s14 15#include <immintrin.h>16#include "builtin_test_helpers.h"17 18__mmask32 test_mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {19  // CHECK-LABEL: test_mm256_cmpeq_epi8_mask20  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}21  return (__mmask32)_mm256_cmpeq_epi8_mask(__a, __b);22}23 24__mmask32 test_mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {25  // CHECK-LABEL: test_mm256_mask_cmpeq_epi8_mask26  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}27  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}28  return (__mmask32)_mm256_mask_cmpeq_epi8_mask(__u, __a, __b);29}30 31__mmask16 test_mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {32  // CHECK-LABEL: test_mm_cmpeq_epi8_mask33  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}34  return (__mmask16)_mm_cmpeq_epi8_mask(__a, __b);35}36 37__mmask16 test_mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {38  // CHECK-LABEL: test_mm_mask_cmpeq_epi8_mask39  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}40  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}41  return (__mmask16)_mm_mask_cmpeq_epi8_mask(__u, __a, __b);42}43 44__mmask16 test_mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {45  // CHECK-LABEL: test_mm256_cmpeq_epi16_mask46  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}47  return (__mmask16)_mm256_cmpeq_epi16_mask(__a, __b);48}49 50__mmask16 test_mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {51  // CHECK-LABEL: test_mm256_mask_cmpeq_epi16_mask52  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}53  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}54  return (__mmask16)_mm256_mask_cmpeq_epi16_mask(__u, __a, __b);55}56 57__mmask8 test_mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {58  // CHECK-LABEL: test_mm_cmpeq_epi16_mask59  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}60  return (__mmask8)_mm_cmpeq_epi16_mask(__a, __b);61}62 63__mmask8 test_mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {64  // CHECK-LABEL: test_mm_mask_cmpeq_epi16_mask65  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}66  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}67  return (__mmask8)_mm_mask_cmpeq_epi16_mask(__u, __a, __b);68}69 70__mmask32 test_mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {71  // CHECK-LABEL: test_mm256_cmpgt_epi8_mask72  // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}73  return (__mmask32)_mm256_cmpgt_epi8_mask(__a, __b);74}75 76__mmask32 test_mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {77  // CHECK-LABEL: test_mm256_mask_cmpgt_epi8_mask78  // CHECK: icmp sgt <32 x i8> %{{.*}}, %{{.*}}79  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}80  return (__mmask32)_mm256_mask_cmpgt_epi8_mask(__u, __a, __b);81}82 83__mmask16 test_mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {84  // CHECK-LABEL: test_mm_cmpgt_epi8_mask85  // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}86  return (__mmask16)_mm_cmpgt_epi8_mask(__a, __b);87}88 89__mmask16 test_mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {90  // CHECK-LABEL: test_mm_mask_cmpgt_epi8_mask91  // CHECK: icmp sgt <16 x i8> %{{.*}}, %{{.*}}92  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}93  return (__mmask16)_mm_mask_cmpgt_epi8_mask(__u, __a, __b);94}95 96__mmask16 test_mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {97  // CHECK-LABEL: test_mm256_cmpgt_epi16_mask98  // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}99  return (__mmask16)_mm256_cmpgt_epi16_mask(__a, __b);100}101 102__mmask16 test_mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {103  // CHECK-LABEL: test_mm256_mask_cmpgt_epi16_mask104  // CHECK: icmp sgt <16 x i16> %{{.*}}, %{{.*}}105  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}106  return (__mmask16)_mm256_mask_cmpgt_epi16_mask(__u, __a, __b);107}108 109__mmask8 test_mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {110  // CHECK-LABEL: test_mm_cmpgt_epi16_mask111  // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}112  return (__mmask8)_mm_cmpgt_epi16_mask(__a, __b);113}114 115__mmask8 test_mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {116  // CHECK-LABEL: test_mm_mask_cmpgt_epi16_mask117  // CHECK: icmp sgt <8 x i16> %{{.*}}, %{{.*}}118  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}119  return (__mmask8)_mm_mask_cmpgt_epi16_mask(__u, __a, __b);120}121 122__mmask16 test_mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {123  // CHECK-LABEL: test_mm_cmpeq_epu8_mask124  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}125  return (__mmask16)_mm_cmpeq_epu8_mask(__a, __b);126}127 128__mmask16 test_mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {129  // CHECK-LABEL: test_mm_mask_cmpeq_epu8_mask130  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}131  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}132  return (__mmask16)_mm_mask_cmpeq_epu8_mask(__u, __a, __b);133}134 135__mmask8 test_mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {136  // CHECK-LABEL: test_mm_cmpeq_epu16_mask137  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}138  return (__mmask8)_mm_cmpeq_epu16_mask(__a, __b);139}140 141__mmask8 test_mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {142  // CHECK-LABEL: test_mm_mask_cmpeq_epu16_mask143  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}144  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}145  return (__mmask8)_mm_mask_cmpeq_epu16_mask(__u, __a, __b);146}147 148__mmask32 test_mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {149  // CHECK-LABEL: test_mm256_cmpeq_epu8_mask150  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}151  return (__mmask32)_mm256_cmpeq_epu8_mask(__a, __b);152}153 154__mmask32 test_mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {155  // CHECK-LABEL: test_mm256_mask_cmpeq_epu8_mask156  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}157  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}158  return (__mmask32)_mm256_mask_cmpeq_epu8_mask(__u, __a, __b);159}160 161__mmask16 test_mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {162  // CHECK-LABEL: test_mm256_cmpeq_epu16_mask163  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}164  return (__mmask16)_mm256_cmpeq_epu16_mask(__a, __b);165}166 167__mmask16 test_mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {168  // CHECK-LABEL: test_mm256_mask_cmpeq_epu16_mask169  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}170  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}171  return (__mmask16)_mm256_mask_cmpeq_epu16_mask(__u, __a, __b);172}173 174__mmask16 test_mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {175  // CHECK-LABEL: test_mm_cmpgt_epu8_mask176  // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}177  return (__mmask16)_mm_cmpgt_epu8_mask(__a, __b);178}179 180__mmask16 test_mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {181  // CHECK-LABEL: test_mm_mask_cmpgt_epu8_mask182  // CHECK: icmp ugt <16 x i8> %{{.*}}, %{{.*}}183  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}184  return (__mmask16)_mm_mask_cmpgt_epu8_mask(__u, __a, __b);185}186 187__mmask8 test_mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {188  // CHECK-LABEL: test_mm_cmpgt_epu16_mask189  // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}190  return (__mmask8)_mm_cmpgt_epu16_mask(__a, __b);191}192 193__mmask8 test_mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {194  // CHECK-LABEL: test_mm_mask_cmpgt_epu16_mask195  // CHECK: icmp ugt <8 x i16> %{{.*}}, %{{.*}}196  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}197  return (__mmask8)_mm_mask_cmpgt_epu16_mask(__u, __a, __b);198}199 200__mmask32 test_mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {201  // CHECK-LABEL: test_mm256_cmpgt_epu8_mask202  // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}203  return (__mmask32)_mm256_cmpgt_epu8_mask(__a, __b);204}205 206__mmask32 test_mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {207  // CHECK-LABEL: test_mm256_mask_cmpgt_epu8_mask208  // CHECK: icmp ugt <32 x i8> %{{.*}}, %{{.*}}209  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}210  return (__mmask32)_mm256_mask_cmpgt_epu8_mask(__u, __a, __b);211}212 213__mmask16 test_mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {214  // CHECK-LABEL: test_mm256_cmpgt_epu16_mask215  // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}216  return (__mmask16)_mm256_cmpgt_epu16_mask(__a, __b);217}218 219__mmask16 test_mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {220  // CHECK-LABEL: test_mm256_mask_cmpgt_epu16_mask221  // CHECK: icmp ugt <16 x i16> %{{.*}}, %{{.*}}222  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}223  return (__mmask16)_mm256_mask_cmpgt_epu16_mask(__u, __a, __b);224}225 226__mmask16 test_mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {227  // CHECK-LABEL: test_mm_cmpge_epi8_mask228  // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}229  return (__mmask16)_mm_cmpge_epi8_mask(__a, __b);230}231 232__mmask16 test_mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {233  // CHECK-LABEL: test_mm_mask_cmpge_epi8_mask234  // CHECK: icmp sge <16 x i8> %{{.*}}, %{{.*}}235  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}236  return (__mmask16)_mm_mask_cmpge_epi8_mask(__u, __a, __b);237}238 239__mmask16 test_mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {240  // CHECK-LABEL: test_mm_cmpge_epu8_mask241  // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}242  return (__mmask16)_mm_cmpge_epu8_mask(__a, __b);243}244 245__mmask16 test_mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {246  // CHECK-LABEL: test_mm_mask_cmpge_epu8_mask247  // CHECK: icmp uge <16 x i8> %{{.*}}, %{{.*}}248  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}249  return (__mmask16)_mm_mask_cmpge_epu8_mask(__u, __a, __b);250}251 252__mmask8 test_mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {253  // CHECK-LABEL: test_mm_cmpge_epi16_mask254  // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}255  return (__mmask8)_mm_cmpge_epi16_mask(__a, __b);256}257 258__mmask8 test_mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {259  // CHECK-LABEL: test_mm_mask_cmpge_epi16_mask260  // CHECK: icmp sge <8 x i16> %{{.*}}, %{{.*}}261  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}262  return (__mmask8)_mm_mask_cmpge_epi16_mask(__u, __a, __b);263}264 265__mmask8 test_mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {266  // CHECK-LABEL: test_mm_cmpge_epu16_mask267  // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}268  return (__mmask8)_mm_cmpge_epu16_mask(__a, __b);269}270 271__mmask8 test_mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {272  // CHECK-LABEL: test_mm_mask_cmpge_epu16_mask273  // CHECK: icmp uge <8 x i16> %{{.*}}, %{{.*}}274  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}275  return (__mmask8)_mm_mask_cmpge_epu16_mask(__u, __a, __b);276}277 278__mmask32 test_mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {279  // CHECK-LABEL: test_mm256_cmpge_epi8_mask280  // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}281  return (__mmask32)_mm256_cmpge_epi8_mask(__a, __b);282}283 284__mmask32 test_mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {285  // CHECK-LABEL: test_mm256_mask_cmpge_epi8_mask286  // CHECK: icmp sge <32 x i8> %{{.*}}, %{{.*}}287  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}288  return (__mmask32)_mm256_mask_cmpge_epi8_mask(__u, __a, __b);289}290 291__mmask32 test_mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {292  // CHECK-LABEL: test_mm256_cmpge_epu8_mask293  // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}294  return (__mmask32)_mm256_cmpge_epu8_mask(__a, __b);295}296 297__mmask32 test_mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {298  // CHECK-LABEL: test_mm256_mask_cmpge_epu8_mask299  // CHECK: icmp uge <32 x i8> %{{.*}}, %{{.*}}300  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}301  return (__mmask32)_mm256_mask_cmpge_epu8_mask(__u, __a, __b);302}303 304__mmask16 test_mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {305  // CHECK-LABEL: test_mm256_cmpge_epi16_mask306  // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}307  return (__mmask16)_mm256_cmpge_epi16_mask(__a, __b);308}309 310__mmask16 test_mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {311  // CHECK-LABEL: test_mm256_mask_cmpge_epi16_mask312  // CHECK: icmp sge <16 x i16> %{{.*}}, %{{.*}}313  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}314  return (__mmask16)_mm256_mask_cmpge_epi16_mask(__u, __a, __b);315}316 317__mmask16 test_mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {318  // CHECK-LABEL: test_mm256_cmpge_epu16_mask319  // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}320  return (__mmask16)_mm256_cmpge_epu16_mask(__a, __b);321}322 323__mmask16 test_mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {324  // CHECK-LABEL: test_mm256_mask_cmpge_epu16_mask325  // CHECK: icmp uge <16 x i16> %{{.*}}, %{{.*}}326  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}327  return (__mmask16)_mm256_mask_cmpge_epu16_mask(__u, __a, __b);328}329 330__mmask16 test_mm_cmple_epi8_mask(__m128i __a, __m128i __b) {331  // CHECK-LABEL: test_mm_cmple_epi8_mask332  // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}333  return (__mmask16)_mm_cmple_epi8_mask(__a, __b);334}335 336__mmask16 test_mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {337  // CHECK-LABEL: test_mm_mask_cmple_epi8_mask338  // CHECK: icmp sle <16 x i8> %{{.*}}, %{{.*}}339  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}340  return (__mmask16)_mm_mask_cmple_epi8_mask(__u, __a, __b);341}342 343__mmask16 test_mm_cmple_epu8_mask(__m128i __a, __m128i __b) {344  // CHECK-LABEL: test_mm_cmple_epu8_mask345  // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}346  return (__mmask16)_mm_cmple_epu8_mask(__a, __b);347}348 349__mmask16 test_mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {350  // CHECK-LABEL: test_mm_mask_cmple_epu8_mask351  // CHECK: icmp ule <16 x i8> %{{.*}}, %{{.*}}352  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}353  return (__mmask16)_mm_mask_cmple_epu8_mask(__u, __a, __b);354}355 356__mmask8 test_mm_cmple_epi16_mask(__m128i __a, __m128i __b) {357  // CHECK-LABEL: test_mm_cmple_epi16_mask358  // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}359  return (__mmask8)_mm_cmple_epi16_mask(__a, __b);360}361 362__mmask8 test_mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {363  // CHECK-LABEL: test_mm_mask_cmple_epi16_mask364  // CHECK: icmp sle <8 x i16> %{{.*}}, %{{.*}}365  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}366  return (__mmask8)_mm_mask_cmple_epi16_mask(__u, __a, __b);367}368 369__mmask8 test_mm_cmple_epu16_mask(__m128i __a, __m128i __b) {370  // CHECK-LABEL: test_mm_cmple_epu16_mask371  // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}372  return (__mmask8)_mm_cmple_epu16_mask(__a, __b);373}374 375__mmask8 test_mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {376  // CHECK-LABEL: test_mm_mask_cmple_epu16_mask377  // CHECK: icmp ule <8 x i16> %{{.*}}, %{{.*}}378  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}379  return (__mmask8)_mm_mask_cmple_epu16_mask(__u, __a, __b);380}381 382__mmask32 test_mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {383  // CHECK-LABEL: test_mm256_cmple_epi8_mask384  // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}385  return (__mmask32)_mm256_cmple_epi8_mask(__a, __b);386}387 388__mmask32 test_mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {389  // CHECK-LABEL: test_mm256_mask_cmple_epi8_mask390  // CHECK: icmp sle <32 x i8> %{{.*}}, %{{.*}}391  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}392  return (__mmask32)_mm256_mask_cmple_epi8_mask(__u, __a, __b);393}394 395__mmask32 test_mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {396  // CHECK-LABEL: test_mm256_cmple_epu8_mask397  // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}398  return (__mmask32)_mm256_cmple_epu8_mask(__a, __b);399}400 401__mmask32 test_mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {402  // CHECK-LABEL: test_mm256_mask_cmple_epu8_mask403  // CHECK: icmp ule <32 x i8> %{{.*}}, %{{.*}}404  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}405  return (__mmask32)_mm256_mask_cmple_epu8_mask(__u, __a, __b);406}407 408__mmask16 test_mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {409  // CHECK-LABEL: test_mm256_cmple_epi16_mask410  // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}411  return (__mmask16)_mm256_cmple_epi16_mask(__a, __b);412}413 414__mmask16 test_mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {415  // CHECK-LABEL: test_mm256_mask_cmple_epi16_mask416  // CHECK: icmp sle <16 x i16> %{{.*}}, %{{.*}}417  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}418  return (__mmask16)_mm256_mask_cmple_epi16_mask(__u, __a, __b);419}420 421__mmask16 test_mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {422  // CHECK-LABEL: test_mm256_cmple_epu16_mask423  // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}424  return (__mmask16)_mm256_cmple_epu16_mask(__a, __b);425}426 427__mmask16 test_mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {428  // CHECK-LABEL: test_mm256_mask_cmple_epu16_mask429  // CHECK: icmp ule <16 x i16> %{{.*}}, %{{.*}}430  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}431  return (__mmask16)_mm256_mask_cmple_epu16_mask(__u, __a, __b);432}433 434__mmask16 test_mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {435  // CHECK-LABEL: test_mm_cmplt_epi8_mask436  // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}437  return (__mmask16)_mm_cmplt_epi8_mask(__a, __b);438}439 440__mmask16 test_mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {441  // CHECK-LABEL: test_mm_mask_cmplt_epi8_mask442  // CHECK: icmp slt <16 x i8> %{{.*}}, %{{.*}}443  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}444  return (__mmask16)_mm_mask_cmplt_epi8_mask(__u, __a, __b);445}446 447__mmask16 test_mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {448  // CHECK-LABEL: test_mm_cmplt_epu8_mask449  // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}450  return (__mmask16)_mm_cmplt_epu8_mask(__a, __b);451}452 453__mmask16 test_mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {454  // CHECK-LABEL: test_mm_mask_cmplt_epu8_mask455  // CHECK: icmp ult <16 x i8> %{{.*}}, %{{.*}}456  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}457  return (__mmask16)_mm_mask_cmplt_epu8_mask(__u, __a, __b);458}459 460__mmask8 test_mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {461  // CHECK-LABEL: test_mm_cmplt_epi16_mask462  // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}463  return (__mmask8)_mm_cmplt_epi16_mask(__a, __b);464}465 466__mmask8 test_mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {467  // CHECK-LABEL: test_mm_mask_cmplt_epi16_mask468  // CHECK: icmp slt <8 x i16> %{{.*}}, %{{.*}}469  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}470  return (__mmask8)_mm_mask_cmplt_epi16_mask(__u, __a, __b);471}472 473__mmask8 test_mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {474  // CHECK-LABEL: test_mm_cmplt_epu16_mask475  // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}476  return (__mmask8)_mm_cmplt_epu16_mask(__a, __b);477}478TEST_CONSTEXPR(_mm_cmplt_epu16_mask(((__m128i)(__v8hu){12351, 47995, 11802, 16970, 16956, 13965, 33529, 18928}), ((__m128i)(__v8hu){48792, 59915, 50576, 62643, 3758, 16415, 7966, 39475})) == (__mmask8)0xAF);479 480__mmask8 test_mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {481  // CHECK-LABEL: test_mm_mask_cmplt_epu16_mask482  // CHECK: icmp ult <8 x i16> %{{.*}}, %{{.*}}483  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}484  return (__mmask8)_mm_mask_cmplt_epu16_mask(__u, __a, __b);485}486 487__mmask32 test_mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {488  // CHECK-LABEL: test_mm256_cmplt_epi8_mask489  // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}490  return (__mmask32)_mm256_cmplt_epi8_mask(__a, __b);491}492 493__mmask32 test_mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {494  // CHECK-LABEL: test_mm256_mask_cmplt_epi8_mask495  // CHECK: icmp slt <32 x i8> %{{.*}}, %{{.*}}496  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}497  return (__mmask32)_mm256_mask_cmplt_epi8_mask(__u, __a, __b);498}499 500__mmask32 test_mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {501  // CHECK-LABEL: test_mm256_cmplt_epu8_mask502  // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}503  return (__mmask32)_mm256_cmplt_epu8_mask(__a, __b);504}505 506__mmask32 test_mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {507  // CHECK-LABEL: test_mm256_mask_cmplt_epu8_mask508  // CHECK: icmp ult <32 x i8> %{{.*}}, %{{.*}}509  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}510  return (__mmask32)_mm256_mask_cmplt_epu8_mask(__u, __a, __b);511}512 513__mmask16 test_mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {514  // CHECK-LABEL: test_mm256_cmplt_epi16_mask515  // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}516  return (__mmask16)_mm256_cmplt_epi16_mask(__a, __b);517}518 519__mmask16 test_mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {520  // CHECK-LABEL: test_mm256_mask_cmplt_epi16_mask521  // CHECK: icmp slt <16 x i16> %{{.*}}, %{{.*}}522  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}523  return (__mmask16)_mm256_mask_cmplt_epi16_mask(__u, __a, __b);524}525 526__mmask16 test_mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {527  // CHECK-LABEL: test_mm256_cmplt_epu16_mask528  // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}529  return (__mmask16)_mm256_cmplt_epu16_mask(__a, __b);530}531 532__mmask16 test_mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {533  // CHECK-LABEL: test_mm256_mask_cmplt_epu16_mask534  // CHECK: icmp ult <16 x i16> %{{.*}}, %{{.*}}535  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}536  return (__mmask16)_mm256_mask_cmplt_epu16_mask(__u, __a, __b);537}538 539__mmask16 test_mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {540  // CHECK-LABEL: test_mm_cmpneq_epi8_mask541  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}542  return (__mmask16)_mm_cmpneq_epi8_mask(__a, __b);543}544 545__mmask16 test_mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {546  // CHECK-LABEL: test_mm_mask_cmpneq_epi8_mask547  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}548  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}549  return (__mmask16)_mm_mask_cmpneq_epi8_mask(__u, __a, __b);550}551 552__mmask16 test_mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {553  // CHECK-LABEL: test_mm_cmpneq_epu8_mask554  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}555  return (__mmask16)_mm_cmpneq_epu8_mask(__a, __b);556}557 558__mmask16 test_mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {559  // CHECK-LABEL: test_mm_mask_cmpneq_epu8_mask560  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}561  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}562  return (__mmask16)_mm_mask_cmpneq_epu8_mask(__u, __a, __b);563}564 565__mmask8 test_mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {566  // CHECK-LABEL: test_mm_cmpneq_epi16_mask567  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}568  return (__mmask8)_mm_cmpneq_epi16_mask(__a, __b);569}570 571__mmask8 test_mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {572  // CHECK-LABEL: test_mm_mask_cmpneq_epi16_mask573  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}574  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}575  return (__mmask8)_mm_mask_cmpneq_epi16_mask(__u, __a, __b);576}577 578__mmask8 test_mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {579  // CHECK-LABEL: test_mm_cmpneq_epu16_mask580  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}581  return (__mmask8)_mm_cmpneq_epu16_mask(__a, __b);582}583 584__mmask8 test_mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {585  // CHECK-LABEL: test_mm_mask_cmpneq_epu16_mask586  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}587  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}588  return (__mmask8)_mm_mask_cmpneq_epu16_mask(__u, __a, __b);589}590 591__mmask32 test_mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {592  // CHECK-LABEL: test_mm256_cmpneq_epi8_mask593  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}594  return (__mmask32)_mm256_cmpneq_epi8_mask(__a, __b);595}596 597__mmask32 test_mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {598  // CHECK-LABEL: test_mm256_mask_cmpneq_epi8_mask599  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}600  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}601  return (__mmask32)_mm256_mask_cmpneq_epi8_mask(__u, __a, __b);602}603 604__mmask32 test_mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {605  // CHECK-LABEL: test_mm256_cmpneq_epu8_mask606  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}607  return (__mmask32)_mm256_cmpneq_epu8_mask(__a, __b);608}609 610__mmask32 test_mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {611  // CHECK-LABEL: test_mm256_mask_cmpneq_epu8_mask612  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}613  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}614  return (__mmask32)_mm256_mask_cmpneq_epu8_mask(__u, __a, __b);615}616 617__mmask16 test_mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {618  // CHECK-LABEL: test_mm256_cmpneq_epi16_mask619  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}620  return (__mmask16)_mm256_cmpneq_epi16_mask(__a, __b);621}622 623__mmask16 test_mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {624  // CHECK-LABEL: test_mm256_mask_cmpneq_epi16_mask625  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}626  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}627  return (__mmask16)_mm256_mask_cmpneq_epi16_mask(__u, __a, __b);628}629 630__mmask16 test_mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {631  // CHECK-LABEL: test_mm256_cmpneq_epu16_mask632  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}633  return (__mmask16)_mm256_cmpneq_epu16_mask(__a, __b);634}635 636__mmask16 test_mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {637  // CHECK-LABEL: test_mm256_mask_cmpneq_epu16_mask638  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}639  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}640  return (__mmask16)_mm256_mask_cmpneq_epu16_mask(__u, __a, __b);641}642 643__mmask16 test_mm_cmp_epi8_mask(__m128i __a, __m128i __b) {644  // CHECK-LABEL: test_mm_cmp_epi8_mask645  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}646  return (__mmask16)_mm_cmp_epi8_mask(__a, __b, 0);647}648 649TEST_CONSTEXPR(_mm_cmpeq_epi8_mask(650    ((__m128i)(__v16qi){5, 3, 7, 2, 9, 3, 7, 1, 5, 4, 8, 2, 9, 6, 7, 5}),651    ((__m128i)(__v16qi){5, 2, 7, 3, 9, 4, 6, 1, 5, 3, 8, 1, 9, 5, 7, 5})652) == (__mmask16)0xd595);653 654TEST_CONSTEXPR(_mm_cmplt_epi8_mask(655    ((__m128i)(__v16qi){1, 5, 3, 7, 2, 8, 4, 6, 9, 5, 3, 11, 2, 6, 15, 8}),656    ((__m128i)(__v16qi){2, 4, 6, 8, 3, 5, 7, 9, 4, 6, 8, 10, 5, 7, 9, 11})657) == (__mmask16)0xb6dd);658 659TEST_CONSTEXPR(_mm_cmple_epi8_mask(660    ((__m128i)(__v16qi){1, 3, 5, 7, 2, 6, 6, 8, 1, 3, 9, 7, 2, 4, 6, 10}),661    ((__m128i)(__v16qi){2, 3, 4, 7, 3, 4, 5, 8, 2, 3, 4, 7, 3, 4, 5, 8})662) == (__mmask16)0x3b9b);663 664__mmask16 test_mm_mask_cmp_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {665  // CHECK-LABEL: test_mm_mask_cmp_epi8_mask666  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}667  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}668  return (__mmask16)_mm_mask_cmp_epi8_mask(__u, __a, __b, 0);669}670 671__mmask16 test_mm_cmp_epu8_mask(__m128i __a, __m128i __b) {672  // CHECK-LABEL: test_mm_cmp_epu8_mask673  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}674  return (__mmask16)_mm_cmp_epu8_mask(__a, __b, 0);675}676 677__mmask16 test_mm_mask_cmp_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {678  // CHECK-LABEL: test_mm_mask_cmp_epu8_mask679  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}680  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}681  return (__mmask16)_mm_mask_cmp_epu8_mask(__u, __a, __b, 0);682}683 684__mmask8 test_mm_cmp_epi16_mask(__m128i __a, __m128i __b) {685  // CHECK-LABEL: test_mm_cmp_epi16_mask686  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}687  return (__mmask8)_mm_cmp_epi16_mask(__a, __b, 0);688}689 690__mmask8 test_mm_mask_cmp_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {691  // CHECK-LABEL: test_mm_mask_cmp_epi16_mask692  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}693  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}694  return (__mmask8)_mm_mask_cmp_epi16_mask(__u, __a, __b, 0);695}696 697__mmask8 test_mm_cmp_epu16_mask(__m128i __a, __m128i __b) {698  // CHECK-LABEL: test_mm_cmp_epu16_mask699  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}700  return (__mmask8)_mm_cmp_epu16_mask(__a, __b, 0);701}702 703__mmask8 test_mm_mask_cmp_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {704  // CHECK-LABEL: test_mm_mask_cmp_epu16_mask705  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}706  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}707  return (__mmask8)_mm_mask_cmp_epu16_mask(__u, __a, __b, 0);708}709 710__mmask32 test_mm256_cmp_epi8_mask(__m256i __a, __m256i __b) {711  // CHECK-LABEL: test_mm256_cmp_epi8_mask712  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}713  return (__mmask32)_mm256_cmp_epi8_mask(__a, __b, 0);714}715 716__mmask32 test_mm256_mask_cmp_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {717  // CHECK-LABEL: test_mm256_mask_cmp_epi8_mask718  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}719  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}720  return (__mmask32)_mm256_mask_cmp_epi8_mask(__u, __a, __b, 0);721}722 723__mmask32 test_mm256_cmp_epu8_mask(__m256i __a, __m256i __b) {724  // CHECK-LABEL: test_mm256_cmp_epu8_mask725  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}726  return (__mmask32)_mm256_cmp_epu8_mask(__a, __b, 0);727}728 729__mmask32 test_mm256_mask_cmp_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {730  // CHECK-LABEL: test_mm256_mask_cmp_epu8_mask731  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}732  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}733  return (__mmask32)_mm256_mask_cmp_epu8_mask(__u, __a, __b, 0);734}735 736__mmask16 test_mm256_cmp_epi16_mask(__m256i __a, __m256i __b) {737  // CHECK-LABEL: test_mm256_cmp_epi16_mask738  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}739  return (__mmask16)_mm256_cmp_epi16_mask(__a, __b, 0);740}741 742__mmask16 test_mm256_mask_cmp_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {743  // CHECK-LABEL: test_mm256_mask_cmp_epi16_mask744  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}745  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}746  return (__mmask16)_mm256_mask_cmp_epi16_mask(__u, __a, __b, 0);747}748 749__mmask16 test_mm256_cmp_epu16_mask(__m256i __a, __m256i __b) {750  // CHECK-LABEL: test_mm256_cmp_epu16_mask751  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}752  return (__mmask16)_mm256_cmp_epu16_mask(__a, __b, 0);753}754 755__mmask16 test_mm256_mask_cmp_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {756  // CHECK-LABEL: test_mm256_mask_cmp_epu16_mask757  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}758  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}759  return (__mmask16)_mm256_mask_cmp_epu16_mask(__u, __a, __b, 0);760}761 762 763__m256i test_mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){764  //CHECK-LABEL: test_mm256_mask_add_epi8765  //CHECK: add <32 x i8> %{{.*}}, %{{.*}}766  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}767  return _mm256_mask_add_epi8(__W, __U , __A, __B);768}769 770TEST_CONSTEXPR(match_v32qi(_mm256_mask_add_epi8((__m256i)(__v32qs){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x20676BFF, (__m256i)(__v32qs){ -64, -65, 66, 67, 68, -69, -70, -71, -72, 73, 74, -75, 76, 77, -78, 79, -80, 81, 82, -83, 84, -85, 86, 87, -88, -89, -90, 91, -92, 93, 94, 95}, (__m256i)(__v32qs){ -1, -2, 3, -4, 5, -6, 7, 8, 9, -10, 11, -12, 13, 14, 15, 16, -17, 18, 19, 20, -21, 22, -23, -24, 25, 26, -27, -28, -29, 30, -31, 32}), -65, -67, 69, 63, 73, -75, -63, -63, -63, 63, 99, -87, 99, 91, -63, 99, -97, 99, 101, 99, 99, -63, 63, 99, 99, 99, 99, 99, 99, 123, 99, 99));771 772__m256i test_mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {773  //CHECK-LABEL: test_mm256_maskz_add_epi8774  //CHECK: add <32 x i8> %{{.*}}, %{{.*}}775  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}776  return _mm256_maskz_add_epi8(__U , __A, __B);777}778 779TEST_CONSTEXPR(match_v32qi(_mm256_maskz_add_epi8(0x20676BFF, (__m256i)(__v32qs){ -64, -65, 66, 67, 68, -69, -70, -71, -72, 73, 74, -75, 76, 77, -78, 79, -80, 81, 82, -83, 84, -85, 86, 87, -88, -89, -90, 91, -92, 93, 94, 95}, (__m256i)(__v32qs){ -1, -2, 3, -4, 5, -6, 7, 8, 9, -10, 11, -12, 13, 14, 15, 16, -17, 18, 19, 20, -21, 22, -23, -24, 25, 26, -27, -28, -29, 30, -31, 32}),  -65, -67, 69, 63, 73, -75, -63, -63, -63, 63, 0, -87, 0, 91, -63, 0, -97, 99, 101, 0, 0, -63, 63, 0, 0, 0, 0, 0, 0, 123, 0, 0));780 781__m256i test_mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {782  //CHECK-LABEL: test_mm256_mask_add_epi16783  //CHECK: add <16 x i16> %{{.*}}, %{{.*}}784  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}785  return _mm256_mask_add_epi16(__W, __U , __A, __B);786}787 788TEST_CONSTEXPR(match_v16hi(_mm256_mask_add_epi16((__m256i)(__v16hi){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5A21, (__m256i)(__v16hi){ -32, -33, 34, -35, -36, 37, -38, -39, -40, -41, -42, 43, -44, -45, 46, 47}, (__m256i)(__v16hi){ -1, 2, 3, -4, 5, -6, 7, 8, 9, 10, -11, -12, -13, 14, -15, -16}), -33, 99, 99, 99, 99, 31, 99, 99, 99, -31, 99, 31, -57, 99, 31, 99));789 790__m256i test_mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {791  //CHECK-LABEL: test_mm256_maskz_add_epi16792  //CHECK: add <16 x i16> %{{.*}}, %{{.*}}793  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}794  return _mm256_maskz_add_epi16(__U , __A, __B);795}796 797TEST_CONSTEXPR(match_v16hi(_mm256_maskz_add_epi16(0x5A21, (__m256i)(__v16hi){ -32, -33, 34, -35, -36, 37, -38, -39, -40, -41, -42, 43, -44, -45, 46, 47}, (__m256i)(__v16hi){ -1, 2, 3, -4, 5, -6, 7, 8, 9, 10, -11, -12, -13, 14, -15, -16}),  -33, 0, 0, 0, 0, 31, 0, 0, 0, -31, 0, 31, -57, 0, 31, 0));798 799__m256i test_mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {800  //CHECK-LABEL: test_mm256_mask_sub_epi8801  //CHECK: sub <32 x i8> %{{.*}}, %{{.*}}802  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}803  return _mm256_mask_sub_epi8(__W, __U , __A, __B);804}805 806TEST_CONSTEXPR(match_v32qi(_mm256_mask_sub_epi8((__m256i)(__v32qs){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x20676BFF, (__m256i)(__v32qs){ -64, -65, 66, 67, 68, -69, -70, -71, -72, 73, 74, -75, 76, 77, -78, 79, -80, 81, 82, -83, 84, -85, 86, 87, -88, -89, -90, 91, -92, 93, 94, 95}, (__m256i)(__v32qs){ -1, -2, 3, -4, 5, -6, 7, 8, 9, -10, 11, -12, 13, 14, 15, 16, -17, 18, 19, 20, -21, 22, -23, -24, 25, 26, -27, -28, -29, 30, -31, 32}), -63, -63, 63, 71, 63, -63, -77, -79, -81, 83, 99, -63, 99, 63, -93, 99, -63, 63, 63, 99, 99, -107, 109, 99, 99, 99, 99, 99, 99, 63, 99, 99));807 808__m256i test_mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {809  //CHECK-LABEL: test_mm256_maskz_sub_epi8810  //CHECK: sub <32 x i8> %{{.*}}, %{{.*}}811  //CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}812  return _mm256_maskz_sub_epi8(__U , __A, __B);813}814 815TEST_CONSTEXPR(match_v32qi(_mm256_maskz_sub_epi8(0x20676BFF, (__m256i)(__v32qs){ -64, -65, 66, 67, 68, -69, -70, -71, -72, 73, 74, -75, 76, 77, -78, 79, -80, 81, 82, -83, 84, -85, 86, 87, -88, -89, -90, 91, -92, 93, 94, 95}, (__m256i)(__v32qs){ -1, -2, 3, -4, 5, -6, 7, 8, 9, -10, 11, -12, 13, 14, 15, 16, -17, 18, 19, 20, -21, 22, -23, -24, 25, 26, -27, -28, -29, 30, -31, 32}),  -63, -63, 63, 71, 63, -63, -77, -79, -81, 83, 0, -63, 0, 63, -93, 0, -63, 63, 63, 0, 0, -107, 109, 0, 0, 0, 0, 0, 0, 63, 0, 0));816 817__m256i test_mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {818  //CHECK-LABEL: test_mm256_mask_sub_epi16819  //CHECK: sub <16 x i16> %{{.*}}, %{{.*}}820  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}821  return _mm256_mask_sub_epi16(__W, __U , __A, __B);822}823 824TEST_CONSTEXPR(match_v16hi(_mm256_mask_sub_epi16((__m256i)(__v16hi){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5A21, (__m256i)(__v16hi){ -32, -33, 34, -35, -36, 37, -38, -39, -40, -41, -42, 43, -44, -45, 46, 47}, (__m256i)(__v16hi){ -1, 2, 3, -4, 5, -6, 7, 8, 9, 10, -11, -12, -13, 14, -15, -16}), -31, 99, 99, 99, 99, 43, 99, 99, 99, -51, 99, 55, -31, 99, 61, 99));825 826__m256i test_mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {827  //CHECK-LABEL: test_mm256_maskz_sub_epi16828  //CHECK: sub <16 x i16> %{{.*}}, %{{.*}}829  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}830  return _mm256_maskz_sub_epi16(__U , __A, __B);831}832 833TEST_CONSTEXPR(match_v16hi(_mm256_maskz_sub_epi16(0x5A21, (__m256i)(__v16hi){ -32, -33, 34, -35, -36, 37, -38, -39, -40, -41, -42, 43, -44, -45, 46, 47}, (__m256i)(__v16hi){ -1, 2, 3, -4, 5, -6, 7, 8, 9, 10, -11, -12, -13, 14, -15, -16}),  -31, 0, 0, 0, 0, 43, 0, 0, 0, -51, 0, 55, -31, 0, 61, 0));834 835__m128i test_mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {836  //CHECK-LABEL: test_mm_mask_add_epi8837  //CHECK: add <16 x i8> %{{.*}}, %{{.*}}838  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}839  return _mm_mask_add_epi8(__W, __U , __A, __B);840}841 842TEST_CONSTEXPR(match_v16qi(_mm_mask_add_epi8((__m128i)(__v16qs){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5693, (__m128i)(__v16qs){ 32, 33, 34, -35, -36, -37, 38, 39, -40, 41, -42, 43, -44, -45, 46, -47}, (__m128i)(__v16qs){ 1, 2, -3, -4, 5, -6, -7, 8, 9, -10, 11, 12, 13, 14, -15, 16}), 33, 35, 99, 99, -31, 99, 99, 47, 99, 31, -31, 99, -31, 99, 31, 99));843 844__m128i test_mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {845  //CHECK-LABEL: test_mm_maskz_add_epi8846  //CHECK: add <16 x i8> %{{.*}}, %{{.*}}847  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}848  return _mm_maskz_add_epi8(__U , __A, __B);849}850 851TEST_CONSTEXPR(match_v16qi(_mm_maskz_add_epi8(0x5693, (__m128i)(__v16qs){ 32, 33, 34, -35, -36, -37, 38, 39, -40, 41, -42, 43, -44, -45, 46, -47}, (__m128i)(__v16qs){ 1, 2, -3, -4, 5, -6, -7, 8, 9, -10, 11, 12, 13, 14, -15, 16}),  33, 35, 0, 0, -31, 0, 0, 47, 0, 31, -31, 0, -31, 0, 31, 0));852 853__m128i test_mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {854  //CHECK-LABEL: test_mm_mask_add_epi16855  //CHECK: add <8 x i16> %{{.*}}, %{{.*}}856  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}857  return _mm_mask_add_epi16(__W, __U , __A, __B);858}859 860TEST_CONSTEXPR(match_v8hi(_mm_mask_add_epi16((__m128i)(__v8hi){ 99, 99, 99, 99, 99, 99, 99, 99}, 0x8D, (__m128i)(__v8hi){ -16, -17, -18, -19, -20, 21, 22, 23}, (__m128i)(__v8hi){ 1, 2, 3, -4, -5, -6, 7, -8}), -15, 99, -15, -23, 99, 99, 99, 15));861 862__m128i test_mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {863  //CHECK-LABEL: test_mm_maskz_add_epi16864  //CHECK: add <8 x i16> %{{.*}}, %{{.*}}865  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}866  return _mm_maskz_add_epi16(__U , __A, __B);867}868 869TEST_CONSTEXPR(match_v8hi(_mm_maskz_add_epi16(0x8D, (__m128i)(__v8hi){ -16, -17, -18, -19, -20, 21, 22, 23}, (__m128i)(__v8hi){ 1, 2, 3, -4, -5, -6, 7, -8}),  -15, 0, -15, -23, 0, 0, 0, 15));870 871__m128i test_mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {872  //CHECK-LABEL: test_mm_mask_sub_epi8873  //CHECK: sub <16 x i8> %{{.*}}, %{{.*}}874  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}875  return _mm_mask_sub_epi8(__W, __U , __A, __B);876}877 878TEST_CONSTEXPR(match_v16qi(_mm_mask_sub_epi8((__m128i)(__v16qs){ 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0x5693, (__m128i)(__v16qs){ 32, 33, 34, -35, -36, -37, 38, 39, -40, 41, -42, 43, -44, -45, 46, -47}, (__m128i)(__v16qs){ 1, 2, -3, -4, 5, -6, -7, 8, 9, -10, 11, 12, 13, 14, -15, 16}), 31, 31, 99, 99, -41, 99, 99, 31, 99, 51, -53, 99, -57, 99, 61, 99));879 880__m128i test_mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {881  //CHECK-LABEL: test_mm_maskz_sub_epi8882  //CHECK: sub <16 x i8> %{{.*}}, %{{.*}}883  //CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}884  return _mm_maskz_sub_epi8(__U , __A, __B);885}886 887TEST_CONSTEXPR(match_v16qi(_mm_maskz_sub_epi8(0x5693, (__m128i)(__v16qs){ 32, 33, 34, -35, -36, -37, 38, 39, -40, 41, -42, 43, -44, -45, 46, -47}, (__m128i)(__v16qs){ 1, 2, -3, -4, 5, -6, -7, 8, 9, -10, 11, 12, 13, 14, -15, 16}),  31, 31, 0, 0, -41, 0, 0, 31, 0, 51, -53, 0, -57, 0, 61, 0));888 889__m128i test_mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {890  //CHECK-LABEL: test_mm_mask_sub_epi16891  //CHECK: sub <8 x i16> %{{.*}}, %{{.*}}892  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}893  return _mm_mask_sub_epi16(__W, __U , __A, __B);894}895 896TEST_CONSTEXPR(match_v8hi(_mm_mask_sub_epi16((__m128i)(__v8hi){ 99, 99, 99, 99, 99, 99, 99, 99}, 0x8D, (__m128i)(__v8hi){ -16, -17, -18, -19, -20, 21, 22, 23}, (__m128i)(__v8hi){ 1, 2, 3, -4, -5, -6, 7, -8}), -17, 99, -21, -15, 99, 99, 99, 31));897 898__m128i test_mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {899  //CHECK-LABEL: test_mm_maskz_sub_epi16900  //CHECK: sub <8 x i16> %{{.*}}, %{{.*}}901  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}902  return _mm_maskz_sub_epi16(__U , __A, __B);903}904 905TEST_CONSTEXPR(match_v8hi(_mm_maskz_sub_epi16(0x8D, (__m128i)(__v8hi){ -16, -17, -18, -19, -20, 21, 22, 23}, (__m128i)(__v8hi){ 1, 2, 3, -4, -5, -6, 7, -8}),  -17, 0, -21, -15, 0, 0, 0, 31));906 907__m256i test_mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {908  //CHECK-LABEL: test_mm256_mask_mullo_epi16909  //CHECK: mul <16 x i16> %{{.*}}, %{{.*}}910  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}911  return _mm256_mask_mullo_epi16(__W, __U , __A, __B);912}913TEST_CONSTEXPR(match_v16hi(_mm256_mask_mullo_epi16((__m256i)(__v16hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}, 0x00FF, (__m256i)(__v16hi){+2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17}, (__m256i)(__v16hi){-3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18}), -6, -12, -20, -30, -42, -56, -72, -90, -9, +10, -11, +12, -13, +14, -15, +16));914 915__m256i test_mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {916  //CHECK-LABEL: test_mm256_maskz_mullo_epi16917  //CHECK: mul <16 x i16> %{{.*}}, %{{.*}}918  //CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}919  return _mm256_maskz_mullo_epi16(__U , __A, __B);920}921TEST_CONSTEXPR(match_v16hi(_mm256_maskz_mullo_epi16(0x00FF, (__m256i)(__v16hi){+2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17}, (__m256i)(__v16hi){-3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18}), -6, -12, -20, -30, -42, -56, -72, -90, 0, 0, 0, 0, 0, 0, 0, 0));922 923__m128i test_mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {924  //CHECK-LABEL: test_mm_mask_mullo_epi16925  //CHECK: mul <8 x i16> %{{.*}}, %{{.*}}926  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}927  return _mm_mask_mullo_epi16(__W, __U , __A, __B);928}929TEST_CONSTEXPR(match_v8hi(_mm_mask_mullo_epi16((__m128i)(__v8hi){-1, +2, -3, +4, -5, +6, -7, +8}, 0x0F, (__m128i)(__v8hi){+2, -3, +4, -5, +6, -7, +8, -9}, (__m128i)(__v8hi){-3, +4, -5, +6, -7, +8, -9, +10}), -6, -12, -20, -30, -5, +6, -7, +8));930 931__m128i test_mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {932  //CHECK-LABEL: test_mm_maskz_mullo_epi16933  //CHECK: mul <8 x i16> %{{.*}}, %{{.*}}934  //CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}935  return _mm_maskz_mullo_epi16(__U , __A, __B);936}937TEST_CONSTEXPR(match_v8hi(_mm_maskz_mullo_epi16(0x0F, (__m128i)(__v8hi){+2, -3, +4, -5, +6, -7, +8, -9}, (__m128i)(__v8hi){-3, +4, -5, +6, -7, +8, -9, +10}), -6, -12, -20, -30, 0, 0, 0, 0));938 939 940__m128i test_mm_mask_blend_epi8(__mmask16 __U, __m128i __A, __m128i __W) {941  // CHECK-LABEL: test_mm_mask_blend_epi8942  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}943  return _mm_mask_blend_epi8(__U,__A,__W); 944}945TEST_CONSTEXPR(match_v16qi(_mm_mask_blend_epi8((__mmask16)0x0001,(__m128i)(__v16qi){2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},(__m128i)(__v16qi){10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}),10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2));946 947__m256i test_mm256_mask_blend_epi8(__mmask32 __U, __m256i __A, __m256i __W) {948  // CHECK-LABEL: test_mm256_mask_blend_epi8949  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}950  return _mm256_mask_blend_epi8(__U,__A,__W); 951}952TEST_CONSTEXPR(match_v32qi(_mm256_mask_blend_epi8((__mmask32)0x00000001,(__m256i)(__v32qi){2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},(__m256i)(__v32qi){10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}),10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2));953 954__m128i test_mm_mask_blend_epi16(__mmask8 __U, __m128i __A, __m128i __W) {955  // CHECK-LABEL: test_mm_mask_blend_epi16956  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}957  return _mm_mask_blend_epi16(__U,__A,__W); 958}959TEST_CONSTEXPR(match_v8hi(_mm_mask_blend_epi16((__mmask8)0x01,(__m128i)(__v8hi){2,2,2,2,2,2,2,2},(__m128i)(__v8hi){10,11,12,13,14,15,16,17}),10,2,2,2,2,2,2,2));960 961__m256i test_mm256_mask_blend_epi16(__mmask16 __U, __m256i __A, __m256i __W) {962  // CHECK-LABEL: test_mm256_mask_blend_epi16963  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}964  return _mm256_mask_blend_epi16(__U,__A,__W); 965}966TEST_CONSTEXPR(match_v16hi(_mm256_mask_blend_epi16((__mmask16)0x0001,(__m256i)(__v16hi){2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2},(__m256i)(__v16hi){10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}),10,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2));967 968__m128i test_mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A) {969  // CHECK-LABEL: test_mm_mask_abs_epi8970  // CHECK: [[ABS:%.*]] = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %{{.*}}, i1 false)971  // CHECK: [[TMP:%.*]] = bitcast <16 x i8> [[ABS]] to <2 x i64>972  // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <16 x i8>973  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[ABS]], <16 x i8> %{{.*}}974  return _mm_mask_abs_epi8(__W,__U,__A); 975}976TEST_CONSTEXPR(match_v16qi(_mm_mask_abs_epi8((__m128i)(__v16qi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, (__mmask16)0x0001, (__m128i)(__v16qi){(char)-1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), 1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99));977 978__m128i test_mm_maskz_abs_epi8(__mmask16 __U, __m128i __A) {979  // CHECK-LABEL: test_mm_maskz_abs_epi8980  // CHECK: [[ABS:%.*]] = call <16 x i8> @llvm.abs.v16i8(<16 x i8> %{{.*}}, i1 false)981  // CHECK: [[TMP:%.*]] = bitcast <16 x i8> [[ABS]] to <2 x i64>982  // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <16 x i8>983  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> [[ABS]], <16 x i8> %{{.*}}984  return _mm_maskz_abs_epi8(__U,__A); 985}986TEST_CONSTEXPR(match_v16qi(_mm_maskz_abs_epi8((__mmask16)0x5555, (__m128i)(__v16qi){(char)-1, 2, (char)-3, 4, (char)-5, 6, (char)-7, 8, (char)-9, 10, (char)-11, 12, (char)-13, 14, (char)-15, 16}), 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0));987 988__m256i test_mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A) {989  // CHECK-LABEL: test_mm256_mask_abs_epi8990  // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false)991  // CHECK: [[TMP:%.*]] = bitcast <32 x i8> [[ABS]] to <4 x i64>992  // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <32 x i8>993  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[ABS]], <32 x i8> %{{.*}}994  return _mm256_mask_abs_epi8(__W,__U,__A); 995}996TEST_CONSTEXPR(match_v32qi(_mm256_mask_abs_epi8((__m256i)(__v32qi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, (__mmask32)0x00000001, (__m256i)(__v32qi){(char)-1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), 1, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99));997 998__m256i test_mm256_maskz_abs_epi8(__mmask32 __U, __m256i __A) {999  // CHECK-LABEL: test_mm256_maskz_abs_epi81000  // CHECK: [[ABS:%.*]] = call <32 x i8> @llvm.abs.v32i8(<32 x i8> %{{.*}}, i1 false)1001  // CHECK: [[TMP:%.*]] = bitcast <32 x i8> [[ABS]] to <4 x i64>1002  // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <32 x i8>1003  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> [[ABS]], <32 x i8> %{{.*}}1004  return _mm256_maskz_abs_epi8(__U,__A); 1005}1006TEST_CONSTEXPR(match_v32qi(_mm256_maskz_abs_epi8((__mmask32)0x55555555, (__m256i)(__v32qi){(char)-1, 2, (char)-3, 4, (char)-5, 6, (char)-7, 8, (char)-9, 10, (char)-11, 12, (char)-13, 14, (char)-15, 16, (char)-17, 18, (char)-19, 20, (char)-21, 22, (char)-23, 24, (char)-25, 26, (char)-27, 28, (char)-29, 30, (char)-31, 32}), 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 0, 27, 0, 29, 0, 31, 0));1007 1008__m128i test_mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A) {1009  // CHECK-LABEL: test_mm_mask_abs_epi161010  // CHECK: [[ABS:%.*]] = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %{{.*}}, i1 false)1011  // CHECK: [[TMP:%.*]] = bitcast <8 x i16> [[ABS]] to <2 x i64>1012  // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <8 x i16>1013  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[ABS]], <8 x i16> %{{.*}}1014  return _mm_mask_abs_epi16(__W,__U,__A); 1015}1016TEST_CONSTEXPR(match_v8hi(_mm_mask_abs_epi16((__m128i)(__v8hi){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask16)0x01, (__m128i)(__v8hi){-1, 2, 2, 2, 2, 2, 2, 2}), 1, 99, 99, 99, 99, 99, 99, 99));1017 1018__m128i test_mm_maskz_abs_epi16(__mmask8 __U, __m128i __A) {1019  // CHECK-LABEL: test_mm_maskz_abs_epi161020  // CHECK: [[ABS:%.*]] = call <8 x i16> @llvm.abs.v8i16(<8 x i16> %{{.*}}, i1 false)1021  // CHECK: [[TMP:%.*]] = bitcast <8 x i16> [[ABS]] to <2 x i64>1022  // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <8 x i16>1023  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> [[ABS]], <8 x i16> %{{.*}}1024  return _mm_maskz_abs_epi16(__U,__A); 1025}1026TEST_CONSTEXPR(match_v8hi(_mm_maskz_abs_epi16((__mmask8)0x55, (__m128i)(__v8hi){-1, 2, -3, 4, -5, 6, -7, 8}), 1, 0, 3, 0, 5, 0, 7, 0));1027 1028__m256i test_mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A) {1029  // CHECK-LABEL: test_mm256_mask_abs_epi161030  // CHECK: [[ABS:%.*]] = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %{{.*}}, i1 false)1031  // CHECK: [[TMP:%.*]] = bitcast <16 x i16> [[ABS]] to <4 x i64>1032  // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <16 x i16>1033  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[ABS]], <16 x i16> %{{.*}}1034  return _mm256_mask_abs_epi16(__W,__U,__A); 1035}1036TEST_CONSTEXPR(match_v16hi(_mm256_mask_abs_epi16((__m256i)(__v16hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, (__mmask16)0x0001, (__m256i)(__v16hi){-128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), 128, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99));1037 1038__m256i test_mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A) {1039  // CHECK-LABEL: test_mm256_maskz_abs_epi161040  // CHECK: [[ABS:%.*]] = call <16 x i16> @llvm.abs.v16i16(<16 x i16> %{{.*}}, i1 false)1041  // CHECK: [[TMP:%.*]] = bitcast <16 x i16> [[ABS]] to <4 x i64>1042  // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <16 x i16>1043  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> [[ABS]], <16 x i16> %{{.*}}1044  return _mm256_maskz_abs_epi16(__U,__A); 1045}1046TEST_CONSTEXPR(match_v16hi(_mm256_maskz_abs_epi16((__mmask16)0x0001, (__m256i)(__v16hi){-128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2}), 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1047 1048__m128i test_mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {1049  // CHECK-LABEL: test_mm_maskz_packs_epi321050  // CHECK: @llvm.x86.sse2.packssdw1051  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1052  return _mm_maskz_packs_epi32(__M,__A,__B); 1053}1054TEST_CONSTEXPR(match_v8hi(_mm_maskz_packs_epi32((__mmask8)0xAA,(__m128i)(__v4si){40000,-50000,65535,-65536},(__m128i)(__v4si){0,50000,40000,-40000}),0,-32768,0,-32768,0,32767,0,-32768));1055 1056__m128i test_mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {1057  // CHECK-LABEL: test_mm_mask_packs_epi321058  // CHECK: @llvm.x86.sse2.packssdw1059  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1060  return _mm_mask_packs_epi32(__W,__M,__A,__B); 1061}1062TEST_CONSTEXPR(match_v8hi(_mm_mask_packs_epi32((__m128i)(__v8hi){1,2,3,4,29,30,31,32},(__mmask8)0xAA,(__m128i)(__v4si){40000,-50000,65535,-65536},(__m128i)(__v4si){0,50000,40000,-40000}),1,-32768,3,-32768,29,32767,31,-32768));1063 1064__m256i test_mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B) {1065  // CHECK-LABEL: test_mm256_maskz_packs_epi321066  // CHECK: @llvm.x86.avx2.packssdw1067  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1068  return _mm256_maskz_packs_epi32(__M,__A,__B); 1069}1070TEST_CONSTEXPR(match_v16hi(_mm256_maskz_packs_epi32((__mmask32)0xAAAA,(__m256i)(__v8si){40000,-50000,32767,-32768,32768,-32769,65535,-65536},(__m256i)(__v8si){0,1,-1,65536,22222,-22222,40000,-40000}),0,-32768,0,-32768,0,1,0,32767,0,-32768,0,-32768,0,-22222,0,-32768));1071 1072__m256i test_mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {1073  // CHECK-LABEL: test_mm256_mask_packs_epi321074  // CHECK: @llvm.x86.avx2.packssdw1075  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1076  return _mm256_mask_packs_epi32(__W,__M,__A,__B); 1077}1078TEST_CONSTEXPR(match_v16hi(_mm256_mask_packs_epi32((__m256i)(__v16hi){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xAAAA,(__m256i)(__v8si){40000,-50000,32767,-32768,32768,-32769,65535,-65536},(__m256i)(__v8si){0,1,-1,65536,22222,-22222,40000,-40000}),1,-32768,3,-32768,5,1,7,32767,25,-32768,27,-32768,29,-22222,31,-32768));1079 1080__m128i test_mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B) {1081  // CHECK-LABEL: test_mm_maskz_packs_epi161082  // CHECK: @llvm.x86.sse2.packsswb1083  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1084  return _mm_maskz_packs_epi16(__M,__A,__B); 1085}1086TEST_CONSTEXPR(match_v16qi(_mm_maskz_packs_epi16((__mmask16)0xAAAA,(__m128i)(__v8hi){130,-200,127,-128,255,-255,127,-128},(__m128i)(__v8hi){0,1,-1,255,-128,90,-90,-32768}),0,-128,0,-128,0,-128,0,-128,0,1,0,127,0,90,0,-128));1087 1088__m128i test_mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {1089  // CHECK-LABEL: test_mm_mask_packs_epi161090  // CHECK: @llvm.x86.sse2.packsswb1091  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1092  return _mm_mask_packs_epi16(__W,__M,__A,__B); 1093}1094TEST_CONSTEXPR(match_v16qi(_mm_mask_packs_epi16((__m128i)(__v16qi){1,2,3,4,5,6,7,8,57,58,59,60,61,62,63,64},(__mmask16)0xAAAA,(__m128i)(__v8hi){130,-200,127,-128,255,-255,127,-128},(__m128i)(__v8hi){0,1,-1,255,-128,90,-90,-32768}),1,-128,3,-128,5,-128,7,-128,57,1,59,127,61,90,63,-128));1095 1096__m256i test_mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B) {1097  // CHECK-LABEL: test_mm256_maskz_packs_epi161098  // CHECK: @llvm.x86.avx2.packsswb1099  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1100  return _mm256_maskz_packs_epi16(__M,__A,__B); 1101}1102TEST_CONSTEXPR(match_v32qi(_mm256_maskz_packs_epi16((__mmask32)0xAAAAAAAA,(__m256i)(__v16hi){130,-200,127,-128,300,-1000,42,-42,500,-500,7,-7,255,-255,127,-128},(__m256i)(__v16hi){0,1,-1,255,-129,128,20000,-32768,0,1,-1,127,-128,90,-90,-32768}),0,-128,0,-128,0,-128,0,-42,0,1,0,127,0,127,0,-128,0,-128,0,-7,0,-128,0,-128,0,1,0,127,0,90,0,-128));1103 1104__m256i test_mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {1105  // CHECK-LABEL: test_mm256_mask_packs_epi161106  // CHECK: @llvm.x86.avx2.packsswb1107  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1108  return _mm256_mask_packs_epi16(__W,__M,__A,__B); 1109}1110TEST_CONSTEXPR(match_v32qi(_mm256_mask_packs_epi16((__m256i)(__v32qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(__m256i)(__v16hi){130,-200,127,-128,300,-1000,42,-42,500,-500,7,-7,255,-255,127,-128},(__m256i)(__v16hi){0,1,-1,255,-129,128,20000,-32768,0,1,-1,127,-128,90,-90,-32768}),1,-128,3,-128,5,-128,7,-42,9,1,11,127,13,127,15,-128,49,-128,51,-7,53,-128,55,-128,57,1,59,127,61,90,63,-128));1111 1112__m128i test_mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {1113  // CHECK-LABEL: test_mm_mask_packus_epi321114  // CHECK: @llvm.x86.sse41.packusdw1115  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1116  return _mm_mask_packus_epi32(__W,__M,__A,__B); 1117}1118TEST_CONSTEXPR(match_v8hu(_mm_mask_packus_epi32((__m128i)(__v8hu){1,2,3,4,5,6,7,8},(__mmask8)0xAA,(__m128i)(__v4si){40000,-50000,32767,-32768},(__m128i)(__v4si){0,1,-1,65536}),1,0,3,0,5,1,7,65535));1119 1120__m128i test_mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B) {1121  // CHECK-LABEL: test_mm_maskz_packus_epi321122  // CHECK: @llvm.x86.sse41.packusdw1123  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1124  return _mm_maskz_packus_epi32(__M,__A,__B); 1125}1126TEST_CONSTEXPR(match_v8hu(_mm_maskz_packus_epi32((__mmask8)0xAA,(__m128i)(__v4si){40000,-50000,32767,-32768},(__m128i)(__v4si){0,1,-1,65536}),0,0,0,0,0,1,0,65535));1127 1128__m256i test_mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B) {1129  // CHECK-LABEL: test_mm256_maskz_packus_epi321130  // CHECK: @llvm.x86.avx2.packusdw1131  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1132  return _mm256_maskz_packus_epi32(__M,__A,__B); 1133}1134TEST_CONSTEXPR(match_v16hi(_mm256_maskz_packus_epi32((__mmask16)0xAAAA,(__m256i)(__v8si){40000,-50000,32767,-32768,32768,-32769,22222,-22222},(__m256i)(__v8si){0,1,-1,65536,40000,-40000,65535,0}),0,0,0,0,0,1,0,-1,0,0,0,0,0,0,0,0));1135 1136__m256i test_mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {1137  // CHECK-LABEL: test_mm256_mask_packus_epi321138  // CHECK: @llvm.x86.avx2.packusdw1139  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1140  return _mm256_mask_packus_epi32(__W,__M,__A,__B); 1141}1142TEST_CONSTEXPR(match_v16hi(_mm256_mask_packus_epi32((__m256i)(__v16hi){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xAAAA,(__m256i)(__v8si){40000,-50000,32767,-32768,32768,-32769,22222,-22222},(__m256i)(__v8si){0,1,-1,65536,40000,-40000,65535,0}),1,0,3,0,5,1,7,-1,25,0,27,0,29,0,31,0));1143 1144__m128i test_mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B) {1145  // CHECK-LABEL: test_mm_maskz_packus_epi161146  // CHECK: @llvm.x86.sse2.packuswb1147  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1148  return _mm_maskz_packus_epi16(__M,__A,__B); 1149}1150TEST_CONSTEXPR(match_v16qu(_mm_maskz_packus_epi16((__mmask16)0xAAAA,(__m128i)(__v8hi){-1,0,1,127,128,255,256,-200},(__m128i)(__v8hi){0,1,-1,255,-129,128,20000,-32768}),0,0,0,127,0,255,0,0,0,1,0,255,0,128,0,0));1151 1152__m128i test_mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {1153  // CHECK-LABEL: test_mm_mask_packus_epi161154  // CHECK: @llvm.x86.sse2.packuswb1155  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1156  return _mm_mask_packus_epi16(__W,__M,__A,__B); 1157}1158TEST_CONSTEXPR(match_v16qu(_mm_mask_packus_epi16((__m128i)(__v16qu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},(__mmask16)0xAAAA,(__m128i)(__v8hi){-1,0,1,127,128,255,256,-200},(__m128i)(__v8hi){0,1,-1,255,-129,128,20000,-32768}),1,0,3,127,5,255,7,0,9,1,11,255,13,128,15,0));1159 1160__m256i test_mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B) {1161  // CHECK-LABEL: test_mm256_maskz_packus_epi161162  // CHECK: @llvm.x86.avx2.packuswb1163  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1164  return _mm256_maskz_packus_epi16(__M,__A,__B); 1165}1166TEST_CONSTEXPR(match_v32qi(_mm256_maskz_packus_epi16((__mmask32)0xAAAAAAAA,(__m256i)(__v16hi){-1,0,1,127,128,255,256,-200,300,42,-42,500,20000,-32768,129,-129},(__m256i)(__v16hi){0,1,-1,255,-129,128,20000,-32768,32767,-32767,127,-128,30000,-30000,90,-90}),0,0,0,127,0,-1,0,0,0,1,0,-1,0,-128,0,0,0,42,0,-1,0,0,0,0,0,0,0,0,0,0,0,0));1167 1168__m256i test_mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {1169  // CHECK-LABEL: test_mm256_mask_packus_epi161170  // CHECK: @llvm.x86.avx2.packuswb1171  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1172  return _mm256_mask_packus_epi16(__W,__M,__A,__B); 1173}1174TEST_CONSTEXPR(match_v32qi(_mm256_mask_packus_epi16((__m256i)(__v32qi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(__m256i)(__v16hi){-1,0,1,127,128,255,256,-200,300,42,-42,500,20000,-32768,129,-129},(__m256i)(__v16hi){0,1,-1,255,-129,128,20000,-32768,32767,-32767,127,-128,30000,-30000,90,-90}),1,0,3,127,5,-1,7,0,9,1,11,-1,13,-128,15,0,49,42,51,-1,53,0,55,0,57,0,59,0,61,0,63,0));1175 1176__m128i test_mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {1177  // CHECK-LABEL: test_mm_mask_adds_epi81178  // CHECK: @llvm.sadd.sat.v16i81179  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1180  return _mm_mask_adds_epi8(__W,__U,__A,__B); 1181}1182TEST_CONSTEXPR(match_v16qi(_mm_mask_adds_epi8((__m128i)(__v16qs){1,2,3,4,5,6,7,8,57,58,59,60,61,62,63,64},(__mmask16)0xAAAA,(__m128i)(__v16qs){0,+1,-2,+3,-4,+5,-6,+7,-100,-50,+100,-20,-80,+120,-120,-20},(__m128i)(__v16qs){0,+1,-2,+3,-4,+5,-6,+7,+50,+80,-50,+110,+60,120,+20,-120}),1,+2,3,+6,5,+10,7,+14,57,+30,59,+90,61,+127,63,-128));1183 1184__m128i test_mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B) {1185  // CHECK-LABEL: test_mm_maskz_adds_epi81186  // CHECK: @llvm.sadd.sat.v16i81187  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1188  return _mm_maskz_adds_epi8(__U,__A,__B); 1189}1190TEST_CONSTEXPR(match_v16qi(_mm_maskz_adds_epi8((__mmask16)0xAAAA,(__m128i)(__v16qs){0,+1,-2,+3,-4,+5,-6,+7,-100,-50,+100,-20,-80,+120,-120,-20},(__m128i)(__v16qs){0,+1,-2,+3,-4,+5,-6,+7,+50,+80,-50,+110,+60,120,+20,-120}),0,+2,0,+6,0,+10,0,+14,0,+30,0,+90,0,+127,0,-128));1191 1192__m256i test_mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {1193  // CHECK-LABEL: test_mm256_mask_adds_epi81194  // CHECK: @llvm.sadd.sat.v32i81195  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1196  return _mm256_mask_adds_epi8(__W,__U,__A,__B); 1197}1198TEST_CONSTEXPR(match_v32qi(_mm256_mask_adds_epi8((__m256i)(__v32qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(__m256i)(__v32qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,+100,+50,-100,+20,+80,-50,+120,-20,-100,-50,+100,-20,-80,+50,-120,+20},(__m256i)(__v32qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,+50,+80,-50,+110,+60,-30,+20,-10,+50,+80,-50,+110,+60,-30,+20,-10}),1,+2,3,+6,5,+10,7,+14,9,+18,11,+22,13,+26,15,+30,49,+127,51,+127,53,-80,+55,-30,57,+30,59,+90,61,+20,63,+10));1199 1200__m256i test_mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B) {1201  // CHECK-LABEL: test_mm256_maskz_adds_epi81202  // CHECK: @llvm.sadd.sat.v32i81203  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1204  return _mm256_maskz_adds_epi8(__U,__A,__B); 1205}1206TEST_CONSTEXPR(match_v32qi(_mm256_maskz_adds_epi8((__mmask32)0xAAAAAAAA,(__m256i)(__v32qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,+100,+50,-100,+20,+80,-50,+120,-20,-100,-50,+100,-20,-80,+50,-120,+20},(__m256i)(__v32qs){0,+1,-2,+3,-4,+5,-6,+7,-8,+9,-10,+11,-12,+13,-14,+15,+50,+80,-50,+110,+60,-30,+20,-10,+50,+80,-50,+110,+60,-30,+20,-10}),0,+2,0,+6,0,+10,0,+14,0,+18,0,+22,0,+26,0,+30,0,+127,0,+127,0,-80,0,-30,0,+30,0,+90,0,+20,0,+10));1207 1208__m128i test_mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1209  // CHECK-LABEL: test_mm_mask_adds_epi161210  // CHECK: @llvm.sadd.sat.v8i161211  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1212  return _mm_mask_adds_epi16(__W,__U,__A,__B); 1213}1214TEST_CONSTEXPR(match_v8hi(_mm_mask_adds_epi16((__m128i)(__v8hi){9,10,11,12,13,14,15,16,},(__mmask8)0xAA,(__m128i)(__v8hi){-24,+25,-26,+27,+32000,-32000,+32000,+32000},(__m128i)(__v8hi){-24,+25,-26,+27,+800,-800,-800,+800}),9,+50,11,+54,13,-32768,15,+32767));1215 1216__m128i test_mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B) {1217  // CHECK-LABEL: test_mm_maskz_adds_epi161218  // CHECK: @llvm.sadd.sat.v8i161219  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1220  return _mm_maskz_adds_epi16(__U,__A,__B); 1221}1222TEST_CONSTEXPR(match_v8hi(_mm_maskz_adds_epi16((__mmask8)0xAA,(__m128i)(__v8hi){-24,+25,-26,+27,+32000,-32000,+32000,+32000},(__m128i)(__v8hi){-24,+25,-26,+27,+800,-800,-800,+800}),0,+50,0,+54,0,-32768,0,+32767));1223 1224__m256i test_mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {1225  // CHECK-LABEL: test_mm256_mask_adds_epi161226  // CHECK: @llvm.sadd.sat.v16i161227  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1228  return _mm256_mask_adds_epi16(__W,__U,__A,__B); 1229}1230TEST_CONSTEXPR(match_v16hi(_mm256_mask_adds_epi16((__m256i)(__v16hi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,},(__mmask16)0xAAAA,(__m256i)(__v16hi){0,+1,-2,+3,-4,+5,-6,+7,-24,+25,-26,+27,+32000,-32000,+32000,+32000},(__m256i)(__v16hi){0,+1,-2,+3,-4,+5,-6,+7,-24,+25,-26,+27,+800,-800,-800,+800}),1,+2,3,+6,5,+10,7,+14,9,+50,11,+54,13,-32768,15,+32767));1231 1232__m256i test_mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B) {1233  // CHECK-LABEL: test_mm256_maskz_adds_epi161234  // CHECK: @llvm.sadd.sat.v16i161235  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1236  return _mm256_maskz_adds_epi16(__U,__A,__B); 1237}1238TEST_CONSTEXPR(match_v16hi(_mm256_maskz_adds_epi16((__mmask16)0xAAAA,(__m256i)(__v16hi){0,+1,-2,+3,-4,+5,-6,+7,-24,+25,-26,+27,+32000,-32000,+32000,+32000},(__m256i)(__v16hi){0,+1,-2,+3,-4,+5,-6,+7,-24,+25,-26,+27,+800,-800,-800,+800}),0,+2,0,+6,0,+10,0,+14,0,+50,0,+54,0,-32768,0,+32767));1239 1240__m128i test_mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {1241  // CHECK-LABEL: test_mm_mask_adds_epu81242  // CHECK-NOT: @llvm.x86.sse2.paddus.b1243  // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1244  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1245  return _mm_mask_adds_epu8(__W,__U,__A,__B); 1246}1247TEST_CONSTEXPR(match_v16qu(_mm_mask_adds_epu8((__m128i)(__v16qu){1,2,3,4,5,6,7,8,57,58,59,60,61,62,63,64},(__mmask16)0xAAAA,(__m128i)(__v16qu){0,0,0,0,0,0,0,0,+255,+255,+255,+255,+255,+255,+255,+255},(__m128i)(__v16qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),1,+63,3,+127,5,+191,7,+255,57,+255,59,+255,61,+255,63,+255));1248 1249__m128i test_mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B) {1250  // CHECK-LABEL: test_mm_maskz_adds_epu81251  // CHECK-NOT: @llvm.x86.sse2.paddus.b1252  // CHECK: call <16 x i8> @llvm.uadd.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1253  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1254  return _mm_maskz_adds_epu8(__U,__A,__B); 1255}1256TEST_CONSTEXPR(match_v16qu(_mm_maskz_adds_epu8((__mmask16)0xAAAA,(__m128i)(__v16qu){0,0,0,0,0,0,0,0,+255,+255,+255,+255,+255,+255,+255,+255},(__m128i)(__v16qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),0,+63,0,+127,0,+191,0,+255,0,+255,0,+255,0,+255,0,+255));1257 1258__m256i test_mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {1259  // CHECK-LABEL: test_mm256_mask_adds_epu81260  // CHECK-NOT: @llvm.x86.avx2.paddus.b1261  // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1262  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1263  return _mm256_mask_adds_epu8(__W,__U,__A,__B); 1264}1265TEST_CONSTEXPR(match_v32qu(_mm256_mask_adds_epu8((__m256i)(__v32qu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(__m256i)(__v32qu){0,0,0,0,0,0,0,0,+63,+63,+63,+63,+63,+63,+63,+63,+192,+192,+192,+192,+192,+192,+192,+192,+255,+255,+255,+255,+255,+255,+255,+255},(__m256i)(__v32qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),1,+63,3,+127,5,+191,7,+255,9,+126,11,+190,13,+254,15,+255,49,+255,51,+255,53,+255,55,+255,57,+255,59,+255,61,+255,63,+255));1266 1267__m256i test_mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B) {1268  // CHECK-LABEL: test_mm256_maskz_adds_epu81269  // CHECK-NOT: @llvm.x86.avx2.paddus.b1270  // CHECK: call <32 x i8> @llvm.uadd.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1271  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1272  return _mm256_maskz_adds_epu8(__U,__A,__B); 1273}1274TEST_CONSTEXPR(match_v32qu(_mm256_maskz_adds_epu8((__mmask32)0xAAAAAAAA,(__m256i)(__v32qu){0,0,0,0,0,0,0,0,+63,+63,+63,+63,+63,+63,+63,+63,+192,+192,+192,+192,+192,+192,+192,+192,+255,+255,+255,+255,+255,+255,+255,+255},(__m256i)(__v32qu){0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255,0,+63,+64,+127,+128,+191,+192,+255}),0,+63,0,+127,0,+191,0,+255,0,+126,0,+190,0,+254,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255,0,+255));1275 1276__m128i test_mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1277  // CHECK-LABEL: test_mm_mask_adds_epu161278  // CHECK-NOT: @llvm.x86.sse2.paddus.w1279  // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1280  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1281  return _mm_mask_adds_epu16(__W,__U,__A,__B); 1282}1283TEST_CONSTEXPR(match_v8hu(_mm_mask_adds_epu16((__m128i)(__v8hu){25,26,27,28,29,30,31,32},(__mmask8)0xAA,(__m128i)(__v8hu){+16384,+16384,+16384,+16384,+49152,+49152,+49152,+49152},(__m128i)(__v8hu){0,+16384,+32767,+32768,+32767,+32768,+49152,+65535}),25,+32768,27,+49152,29,+65535,31,+65535));1284 1285__m128i test_mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B) {1286  // CHECK-LABEL: test_mm_maskz_adds_epu161287  // CHECK-NOT: @llvm.x86.sse2.paddus.w1288  // CHECK: call <8 x i16> @llvm.uadd.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1289  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1290  return _mm_maskz_adds_epu16(__U,__A,__B); 1291}1292TEST_CONSTEXPR(match_v8hu(_mm_maskz_adds_epu16((__mmask8)0xAA,(__m128i)(__v8hu){+16384,+16384,+16384,+16384,+49152,+49152,+49152,+49152},(__m128i)(__v8hu){0,+16384,+32767,+32768,+32767,+32768,+49152,+65535}),0,+32768,0,+49152,0,+65535,0,+65535));1293 1294__m256i test_mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {1295  // CHECK-LABEL: test_mm256_mask_adds_epu161296  // CHECK-NOT: @llvm.x86.avx2.paddus.w1297  // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1298  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1299  return _mm256_mask_adds_epu16(__W,__U,__A,__B); 1300}1301TEST_CONSTEXPR(match_v16hu(_mm256_mask_adds_epu16((__m256i)(__v16hu){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xAAAA,(__m256i)(__v16hu){0,0,0,0,+16384,+16384,+16384,+16384,+49152,+49152,+49152,+49152,+65535,+65535,+65535,+65535},(__m256i)(__v16hu){0,+32767,+32768,+65535,0,+16384,+32767,+32768,+32767,+32768,+49152,+65535,0,+32767,+32768,+65535}),1,+32767,3,+65535,5,+32768,7,+49152,25,+65535,27,+65535,29,+65535,31,+65535));1302 1303__m256i test_mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B) {1304  // CHECK-LABEL: test_mm256_maskz_adds_epu161305  // CHECK-NOT: @llvm.x86.avx2.paddus.w1306  // CHECK: call <16 x i16> @llvm.uadd.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1307  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1308  return _mm256_maskz_adds_epu16(__U,__A,__B); 1309}1310TEST_CONSTEXPR(match_v16hu(_mm256_maskz_adds_epu16((__mmask16)0xAAAA,(__m256i)(__v16hu){0,0,0,0,+16384,+16384,+16384,+16384,+49152,+49152,+49152,+49152,+65535,+65535,+65535,+65535},(__m256i)(__v16hu){0,+32767,+32768,+65535,0,+16384,+32767,+32768,+32767,+32768,+49152,+65535,0,+32767,+32768,+65535}),0,+32767,0,+65535,0,+32768,0,+49152,0,+65535,0,+65535,0,+65535,0,+65535));1311 1312__m128i test_mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {1313  // CHECK-LABEL: test_mm_mask_avg_epu81314  // CHECK: @llvm.x86.sse2.pavg.b1315  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1316  return _mm_mask_avg_epu8(__W,__U,__A,__B); 1317}1318TEST_CONSTEXPR(match_v16qi(_mm_mask_avg_epu8((__m128i)(__v16qi){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m128i)(__v16qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m128i)(__v16qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1319 1320__m128i test_mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B) {1321  // CHECK-LABEL: test_mm_maskz_avg_epu81322  // CHECK: @llvm.x86.sse2.pavg.b1323  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1324  return _mm_maskz_avg_epu8(__U,__A,__B); 1325}1326TEST_CONSTEXPR(match_v16qi(_mm_maskz_avg_epu8(0x00FF, (__m128i)(__v16qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m128i)(__v16qi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1327 1328__m256i test_mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {1329  // CHECK-LABEL: test_mm256_mask_avg_epu81330  // CHECK: @llvm.x86.avx2.pavg.b1331  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1332  return _mm256_mask_avg_epu8(__W,__U,__A,__B); 1333}1334TEST_CONSTEXPR(match_v32qi(_mm256_mask_avg_epu8((__m256i)(__v32qi){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0x0000FFFF, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1335 1336__m256i test_mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B) {1337  // CHECK-LABEL: test_mm256_maskz_avg_epu81338  // CHECK: @llvm.x86.avx2.pavg.b1339  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1340  return _mm256_maskz_avg_epu8(__U,__A,__B); 1341}1342TEST_CONSTEXPR(match_v32qi(_mm256_maskz_avg_epu8(0x0000FFFF, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1343 1344__m128i test_mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1345  // CHECK-LABEL: test_mm_mask_avg_epu161346  // CHECK: @llvm.x86.sse2.pavg.w1347  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1348  return _mm_mask_avg_epu16(__W,__U,__A,__B); 1349}1350TEST_CONSTEXPR(match_v8hi(_mm_mask_avg_epu16((__m128i)(__v8hi){0, 1, 2, 3, 0, 0, 0, 0}, 0x0F, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 0, 0, 0, 0));1351 1352__m128i test_mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B) {1353  // CHECK-LABEL: test_mm_maskz_avg_epu161354  // CHECK: @llvm.x86.sse2.pavg.w1355  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1356  return _mm_maskz_avg_epu16(__U,__A,__B); 1357}1358TEST_CONSTEXPR(match_v8hi(_mm_maskz_avg_epu16(0x0F, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 0, 0, 0, 0));1359 1360__m256i test_mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {1361  // CHECK-LABEL: test_mm256_mask_avg_epu161362  // CHECK: @llvm.x86.avx2.pavg.w1363  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1364  return _mm256_mask_avg_epu16(__W,__U,__A,__B); 1365}1366TEST_CONSTEXPR(match_v16hi(_mm256_mask_avg_epu16((__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1367 1368__m256i test_mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B) {1369  // CHECK-LABEL: test_mm256_maskz_avg_epu161370  // CHECK: @llvm.x86.avx2.pavg.w1371  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1372  return _mm256_maskz_avg_epu16(__U,__A,__B); 1373}1374TEST_CONSTEXPR(match_v16hi(_mm256_maskz_avg_epu16(0x00FF, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1375 1376__m128i test_mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B) {1377  // CHECK-LABEL: test_mm_maskz_max_epi81378  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1379  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1380  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1381  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1382  return _mm_maskz_max_epi8(__M,__A,__B); 1383}1384 1385TEST_CONSTEXPR(match_v16qi(_mm_maskz_max_epi8(0x00FF, (__m128i)(__v16qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}, (__m128i)(__v16qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}), +1, +2, +3, +4, +5, +6, +7, +8, 0, 0, 0, 0, 0, 0, 0, 0));1386 1387__m128i test_mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {1388  // CHECK-LABEL: test_mm_mask_max_epi81389  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1390  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1391  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1392  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1393  return _mm_mask_max_epi8(__W,__M,__A,__B); 1394}1395 1396TEST_CONSTEXPR(match_v16qi(_mm_mask_max_epi8((__m128i)(__v16qs){+1, +2, +3, +4, +5, +6, +7, +8, -9, -10, -11, -12, -13, -14, -15, -16}, 0x00FF, (__m128i)(__v16qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}, (__m128i)(__v16qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}), +1, +2, +3, +4, +5, +6, +7, +8, -9, -10, -11, -12, -13, -14, -15, -16));1397 1398__m256i test_mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B) {1399  // CHECK-LABEL: test_mm256_maskz_max_epi81400  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1401  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1402  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1403  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1404  return _mm256_maskz_max_epi8(__M,__A,__B); 1405}1406 1407TEST_CONSTEXPR(match_v32qi(_mm256_maskz_max_epi8(0x0000FFFF, (__m256i)(__v32qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m256i)(__v32qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1408 1409__m256i test_mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {1410  // CHECK-LABEL: test_mm256_mask_max_epi81411  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1412  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1413  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1414  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1415  return _mm256_mask_max_epi8(__W,__M,__A,__B); 1416}1417 1418TEST_CONSTEXPR(match_v32qi(_mm256_mask_max_epi8((__m256i)(__v32qs){+1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32}, 0x0000FFFF, (__m256i)(__v32qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m256i)(__v32qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), +1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32));1419 1420__m128i test_mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B) {1421  // CHECK-LABEL: test_mm_maskz_max_epi161422  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1423  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1424  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1425  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1426  return _mm_maskz_max_epi16(__M,__A,__B); 1427}1428 1429TEST_CONSTEXPR(match_v8hi(_mm_maskz_max_epi16(0x0F, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){1, 2, 3, 5, 8, 12, 20, 32}), 1, 2, 3, 5, 0, 0, 0, 0));1430 1431__m128i test_mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {1432  // CHECK-LABEL: test_mm_mask_max_epi161433  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1434  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1435  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1436  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1437  return _mm_mask_max_epi16(__W,__M,__A,__B); 1438}1439 1440TEST_CONSTEXPR(match_v8hi(_mm_mask_max_epi16((__m128i)(__v8hi){1, 1, 1, 1, 0, 0, 0, 0}, 0x0F, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){1, 2, 3, 5, 8, 12, 20, 32}), 1, 2, 3, 5, 0, 0, 0, 0));1441 1442__m256i test_mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B) {1443  // CHECK-LABEL: test_mm256_maskz_max_epi161444  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1445  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1446  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1447  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1448  return _mm256_maskz_max_epi16(__M,__A,__B); 1449}1450 1451TEST_CONSTEXPR(match_v16hi(_mm256_maskz_max_epi16(0x00FF, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}), +1, +2, +3, +4, +5, +6, +7, +8, 0, 0, 0, 0, 0, 0, 0, 0));1452 1453__m256i test_mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {1454  // CHECK-LABEL: test_mm256_mask_max_epi161455  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1456  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1457  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1458  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1459  return _mm256_mask_max_epi16(__W,__M,__A,__B); 1460}1461 1462TEST_CONSTEXPR(match_v16hi(_mm256_mask_max_epi16((__m256i)(__v16hi){1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}), +1, +2, +3, +4, +5, +6, +7, +8, 0, 0, 0, 0, 0, 0, 0, 0));1463 1464__m128i test_mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B) {1465  // CHECK-LABEL: test_mm_maskz_max_epu81466  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1467  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1468  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1469  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1470  return _mm_maskz_max_epu8(__M,__A,__B); 1471}1472 1473TEST_CONSTEXPR(match_v16qu(_mm_maskz_max_epu8(0x00FF, (__m128i)(__v16qu){9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v16qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0));1474 1475__m128i test_mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {1476  // CHECK-LABEL: test_mm_mask_max_epu81477  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umax.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1478  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1479  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1480  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1481  return _mm_mask_max_epu8(__W,__M,__A,__B); 1482}1483 1484TEST_CONSTEXPR(match_v16qu(_mm_mask_max_epu8((__m128i)(__v16qu){1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m128i)(__v16qu){9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v16qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0));1485 1486__m256i test_mm256_maskz_max_epu8(__mmask32 __M, __m256i __A, __m256i __B) {1487  // CHECK-LABEL: test_mm256_maskz_max_epu81488  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1489  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1490  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1491  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1492  return _mm256_maskz_max_epu8(__M,__A,__B); 1493}1494 1495TEST_CONSTEXPR(match_v32qu(_mm256_maskz_max_epu8(0x0000FFFF, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m256i)(__v32qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1496 1497__m256i test_mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {1498  // CHECK-LABEL: test_mm256_mask_max_epu81499  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umax.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1500  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1501  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1502  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1503  return _mm256_mask_max_epu8(__W,__M,__A,__B); 1504}1505 1506TEST_CONSTEXPR(match_v32qu(_mm256_mask_max_epu8((__m256i)(__v32qu){1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0x0000FFFF, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m256i)(__v32qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1507 1508__m128i test_mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B) {1509  // CHECK-LABEL: test_mm_maskz_max_epu161510  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1511  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1512  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1513  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1514  return _mm_maskz_max_epu16(__M,__A,__B); 1515}1516 1517TEST_CONSTEXPR(match_v8hu(_mm_maskz_max_epu16(0x0F, (__m128i)(__v8hu){1, 3, 5, 7, 9, 11, 13, 15}, (__m128i)(__v8hu){3, 4, 5, 6, 7, 8, 9, 10}), 3, 4, 5, 7, 0, 0, 0, 0));1518 1519__m128i test_mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {1520  // CHECK-LABEL: test_mm_mask_max_epu161521  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umax.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1522  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1523  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1524  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1525  return _mm_mask_max_epu16(__W,__M,__A,__B); 1526}1527 1528TEST_CONSTEXPR(match_v8hu(_mm_mask_max_epu16((__m128i)(__v8hu){1, 1, 1, 1, 0, 0, 0, 0}, 0x0F, (__m128i)(__v8hu){1, 3, 5, 7, 9, 11, 13, 15}, (__m128i)(__v8hu){3, 4, 5, 6, 7, 8, 9, 10}), 3, 4, 5, 7, 0, 0, 0, 0));1529 1530__m256i test_mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B) {1531  // CHECK-LABEL: test_mm256_maskz_max_epu161532  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1533  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1534  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1535  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1536  return _mm256_maskz_max_epu16(__M,__A,__B); 1537}1538 1539TEST_CONSTEXPR(match_v16hu(_mm256_maskz_max_epu16(0x00FF, (__m256i)(__v16hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1540 1541__m256i test_mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {1542  // CHECK-LABEL: test_mm256_mask_max_epu161543  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umax.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1544  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1545  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1546  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1547  return _mm256_mask_max_epu16(__W,__M,__A,__B); 1548}1549 1550TEST_CONSTEXPR(match_v16hu(_mm256_mask_max_epu16((__m256i)(__v16hu){1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m256i)(__v16hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1551 1552__m128i test_mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B) {1553  // CHECK-LABEL: test_mm_maskz_min_epi81554  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1555  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1556  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1557  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1558  return _mm_maskz_min_epi8(__M,__A,__B); 1559}1560 1561TEST_CONSTEXPR(match_v16qi(_mm_maskz_min_epi8(0x00FF, (__m128i)(__v16qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}, (__m128i)(__v16qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}), -1, -2, -3, -4, -5, -6, -7, -8, 0, 0, 0, 0, 0, 0, 0, 0));1562 1563__m128i test_mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {1564  // CHECK-LABEL: test_mm_mask_min_epi81565  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.smin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1566  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1567  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1568  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1569  return _mm_mask_min_epi8(__W,__M,__A,__B); 1570}1571 1572TEST_CONSTEXPR(match_v16qi(_mm_mask_min_epi8((__m128i)(__v16qs){+1, +2, +3, +4, +5, +6, +7, +8, -9, -10, -11, -12, -13, -14, -15, -16}, 0x00FF, (__m128i)(__v16qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}, (__m128i)(__v16qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}), -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16));1573 1574__m256i test_mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B) {1575  // CHECK-LABEL: test_mm256_maskz_min_epi81576  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1577  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1578  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1579  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1580  return _mm256_maskz_min_epi8(__M,__A,__B); 1581}1582 1583TEST_CONSTEXPR(match_v32qi(_mm256_maskz_min_epi8(0x0000FFFF, (__m256i)(__v32qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m256i)(__v32qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1584 1585__m256i test_mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {1586  // CHECK-LABEL: test_mm256_mask_min_epi81587  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.smin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1588  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1589  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1590  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1591  return _mm256_mask_min_epi8(__W,__M,__A,__B); 1592}1593 1594TEST_CONSTEXPR(match_v32qi(_mm256_mask_min_epi8((__m256i)(__v32qs){+1, +2, +3, +4, +5, +6, +7, +8, +9, +10, +11, +12, +13, +14, +15, +16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32}, 0x0000FFFF, (__m256i)(__v32qs){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16, +17, -18, +19, -20, +21, -22, +23, -24, +25, -26, +27, -28, +29, -30, +31, -32}, (__m256i)(__v32qs){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16, -17, +18, -19, +20, -21, +22, -23, +24, -25, +26, -27, +28, -29, +30, -31, +32}), -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32));1595 1596__m128i test_mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B) {1597  // CHECK-LABEL: test_mm_maskz_min_epi161598  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1599  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1600  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1601  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1602  return _mm_maskz_min_epi16(__M,__A,__B); 1603}1604 1605TEST_CONSTEXPR(match_v8hi(_mm_maskz_min_epi16(0x0F, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){1, 2, 3, 5, 8, 12, 20, 32}), 1, 2, 3, 4, 0, 0, 0, 0));1606 1607__m128i test_mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {1608  // CHECK-LABEL: test_mm_mask_min_epi161609  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.smin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1610  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1611  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1612  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1613  return _mm_mask_min_epi16(__W,__M,__A,__B); 1614}1615 1616TEST_CONSTEXPR(match_v8hi(_mm_mask_min_epi16((__m128i)(__v8hi){1, 1, 1, 1, 0, 0, 0, 0}, 0x0F, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){1, 2, 3, 5, 8, 12, 20, 32}), 1, 2, 3, 4, 0, 0, 0, 0));1617 1618__m256i test_mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B) {1619  // CHECK-LABEL: test_mm256_maskz_min_epi161620  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1621  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1622  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1623  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1624  return _mm256_maskz_min_epi16(__M,__A,__B); 1625}1626 1627TEST_CONSTEXPR(match_v16hi(_mm256_maskz_min_epi16(0x00FF, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}), -1, -2, -3, -4, -5, -6, -7, -8, 0, 0, 0, 0, 0, 0, 0, 0));1628 1629__m256i test_mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {1630  // CHECK-LABEL: test_mm256_mask_min_epi161631  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.smin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1632  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1633  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1634  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1635  return _mm256_mask_min_epi16(__W,__M,__A,__B); 1636}1637 1638TEST_CONSTEXPR(match_v16hi(_mm256_mask_min_epi16((__m256i)(__v16hi){1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-1, +2, -3, +4, -5, +6, -7, +8, -9, +10, -11, +12, -13, +14, -15, +16}), -1, -2, -3, -4, -5, -6, -7, -8, 0, 0, 0, 0, 0, 0, 0, 0));1639 1640__m128i test_mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B) {1641  // CHECK-LABEL: test_mm_maskz_min_epu81642  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1643  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1644  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1645  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1646  return _mm_maskz_min_epu8(__M,__A,__B); 1647}1648 1649TEST_CONSTEXPR(match_v16qu(_mm_maskz_min_epu8(0x00FF, (__m128i)(__v16qu){9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v16qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1650 1651__m128i test_mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B) {1652  // CHECK-LABEL: test_mm_mask_min_epu81653  // CHECK: [[RES:%.*]] = call <16 x i8> @llvm.umin.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1654  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i8>]] [[RES]] to [[DSTTY:<2 x i64>]]1655  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1656  // CHECK:       select <16 x i1> {{.*}}, <16 x i8> [[RES]], <16 x i8> {{.*}}1657  return _mm_mask_min_epu8(__W,__M,__A,__B); 1658}1659 1660TEST_CONSTEXPR(match_v16qu(_mm_mask_min_epu8((__m128i)(__v16qu){1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m128i)(__v16qu){9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v16qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));1661 1662__m256i test_mm256_maskz_min_epu8(__mmask32 __M, __m256i __A, __m256i __B) {1663  // CHECK-LABEL: test_mm256_maskz_min_epu81664  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1665  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1666  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1667  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1668  return _mm256_maskz_min_epu8(__M,__A,__B); 1669}1670 1671TEST_CONSTEXPR(match_v32qu(_mm256_maskz_min_epu8(0x0000FFFF, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m256i)(__v32qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1672 1673__m256i test_mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B) {1674  // CHECK-LABEL: test_mm256_mask_min_epu81675  // CHECK: [[RES:%.*]] = call <32 x i8> @llvm.umin.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1676  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<32 x i8>]] [[RES]] to [[DSTTY:<4 x i64>]]1677  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1678  // CHECK:       select <32 x i1> {{.*}}, <32 x i8> [[RES]], <32 x i8> {{.*}}1679  return _mm256_mask_min_epu8(__W,__M,__A,__B); 1680}1681 1682TEST_CONSTEXPR(match_v32qu(_mm256_mask_min_epu8((__m256i)(__v32qu){1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 0x0000FFFF, (__m256i)(__v32qu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}, (__m256i)(__v32qu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));1683 1684__m128i test_mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B) {1685  // CHECK-LABEL: test_mm_maskz_min_epu161686  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1687  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1688  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1689  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1690  return _mm_maskz_min_epu16(__M,__A,__B); 1691}1692 1693TEST_CONSTEXPR(match_v8hu(_mm_maskz_min_epu16(0x0F, (__m128i)(__v8hu){1, 3, 5, 7, 9, 11, 13, 15}, (__m128i)(__v8hu){3, 4, 5, 6, 7, 8, 9, 10}), 1, 3, 5, 6, 0, 0, 0, 0));1694 1695__m128i test_mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {1696  // CHECK-LABEL: test_mm_mask_min_epu161697  // CHECK: [[RES:%.*]] = call <8 x i16> @llvm.umin.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1698  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<8 x i16>]] [[RES]] to [[DSTTY:<2 x i64>]]1699  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1700  // CHECK:       select <8 x i1> {{.*}}, <8 x i16> [[RES]], <8 x i16> {{.*}}1701  return _mm_mask_min_epu16(__W,__M,__A,__B); 1702}1703 1704TEST_CONSTEXPR(match_v8hu(_mm_mask_min_epu16((__m128i)(__v8hu){1, 1, 1, 1, 0, 0, 0, 0}, 0x0F, (__m128i)(__v8hu){1, 3, 5, 7, 9, 11, 13, 15}, (__m128i)(__v8hu){3, 4, 5, 6, 7, 8, 9, 10}), 1, 3, 5, 6, 0, 0, 0, 0));1705 1706__m256i test_mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B) {1707  // CHECK-LABEL: test_mm256_maskz_min_epu161708  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1709  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1710  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1711  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1712  return _mm256_maskz_min_epu16(__M,__A,__B); 1713}1714 1715TEST_CONSTEXPR(match_v16hu(_mm256_maskz_min_epu16(0x00FF, (__m256i)(__v16hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0));1716 1717__m256i test_mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {1718  // CHECK-LABEL: test_mm256_mask_min_epu161719  // CHECK: [[RES:%.*]] = call <16 x i16> @llvm.umin.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1720  // CHECK: [[TMP:%.*]] = bitcast [[SRCTY:<16 x i16>]] [[RES]] to [[DSTTY:<4 x i64>]]1721  // CHECK: [[RES:%.*]] = bitcast [[DSTTY]] [[TMP]] to [[SRCTY]]1722  // CHECK:       select <16 x i1> {{.*}}, <16 x i16> [[RES]], <16 x i16> {{.*}}1723  return _mm256_mask_min_epu16(__W,__M,__A,__B); 1724}1725 1726TEST_CONSTEXPR(match_v16hu(_mm256_mask_min_epu16((__m256i)(__v16hu){1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, 0x00FF, (__m256i)(__v16hu){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hu){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}), 0, 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0));1727 1728__m128i test_mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {1729  // CHECK-LABEL: test_mm_mask_shuffle_epi81730  // CHECK: @llvm.x86.ssse3.pshuf.b1731  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1732  return _mm_mask_shuffle_epi8(__W,__U,__A,__B); 1733}1734 1735TEST_CONSTEXPR(match_v16qi(_mm_mask_shuffle_epi8((__m128i)(__v16qi){1,1,1,1,1,1,1,1,2,2,4,4,6,6,8,8}, 0x00FF, (__m128i)(__v16qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}, (__m128i)(__v16qi){15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}), 15,14,13,12,11,10,9,8,2,2,4,4,6,6,8,8));1736 1737__m128i test_mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B) {1738  // CHECK-LABEL: test_mm_maskz_shuffle_epi81739  // CHECK: @llvm.x86.ssse3.pshuf.b1740  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1741  return _mm_maskz_shuffle_epi8(__U,__A,__B); 1742}1743 1744TEST_CONSTEXPR(match_v16qi(_mm_maskz_shuffle_epi8(0xAAAA, (__m128i)(__v16qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}, (__m128i)(__v16qi){15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}), 0,14,0,12,0,10,0,8,0,6,0,4,0,2,0,0));1745 1746__m256i test_mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {1747  // CHECK-LABEL: test_mm256_mask_shuffle_epi81748  // CHECK: @llvm.x86.avx2.pshuf.b1749  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1750  return _mm256_mask_shuffle_epi8(__W,__U,__A,__B); 1751}1752 1753TEST_CONSTEXPR(match_v32qi(_mm256_mask_shuffle_epi8((__m256i)(__v32qi){1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4}, 0x80808080, (__m256i)(__v32qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}, (__m256i)(__v32qi){31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}), 1,1,1,1,1,1,1,8,2,2,2,2,2,2,2,0,3,3,3,3,3,3,3,24,4,4,4,4,4,4,4,16));1754                1755 1756__m256i test_mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B) {1757  // CHECK-LABEL: test_mm256_maskz_shuffle_epi81758  // CHECK: @llvm.x86.avx2.pshuf.b1759  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1760  return _mm256_maskz_shuffle_epi8(__U,__A,__B); 1761}1762 1763TEST_CONSTEXPR(match_v32qi(_mm256_maskz_shuffle_epi8(0x0000FFFF, (__m256i)(__v32qi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}, (__m256i)(__v32qi){31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0}), 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));1764 1765__m128i test_mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {1766  // CHECK-LABEL: test_mm_mask_subs_epi81767  // CHECK: @llvm.ssub.sat.v16i81768  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1769  return _mm_mask_subs_epi8(__W,__U,__A,__B); 1770}1771TEST_CONSTEXPR(match_v16qi(_mm_mask_subs_epi8((__m128i)(__v16qs){1,2,3,4,5,6,7,8,57,58,59,60,61,62,63,64},(__mmask16)0xAAAA,(__m128i)(__v16qs){1,-100,3,4,5,-6,7,100,57,-100,59,60,61,-62,63,100},(__m128i)(__v16qs){1,100,3,4,5,6,7,-100,57,100,59,60,61,62,63,-100}),1,-128,3,0,5,-12,7,127,57,-128,59,0,61,-124,63,127));1772 1773__m128i test_mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B) {1774  // CHECK-LABEL: test_mm_maskz_subs_epi81775  // CHECK: @llvm.ssub.sat.v16i81776  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1777  return _mm_maskz_subs_epi8(__U,__A,__B); 1778}1779TEST_CONSTEXPR(match_v16qi(_mm_maskz_subs_epi8((__mmask16)0xAAAA,(__m128i)(__v16qs){1,-100,3,4,5,-6,7,100,57,-100,59,60,61,-62,63,100},(__m128i)(__v16qs){1,100,3,4,5,6,7,-100,57,100,59,60,61,62,63,-100}),0,-128,0,0,0,-12,0,127,0,-128,0,0,0,-124,0,127));1780 1781__m256i test_mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {1782  // CHECK-LABEL: test_mm256_mask_subs_epi81783  // CHECK: @llvm.ssub.sat.v32i81784  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1785  return _mm256_mask_subs_epi8(__W,__U,__A,__B); 1786}1787TEST_CONSTEXPR(match_v32qi(_mm256_mask_subs_epi8((__m256i)(__v32qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(__m256i)(__v32qs){1,-100,3,4,5,-6,7,100,9,-100,11,12,13,-14,15,100,49,-100,51,52,53,-54,55,100,57,-100,59,60,61,-62,63,100},(__m256i)(__v32qs){1,100,3,4,5,6,7,-100,9,100,11,12,13,14,15,-100,49,100,51,52,53,54,55,-100,57,100,59,60,61,62,63,-100}),1,-128,3,0,5,-12,7,127,9,-128,11,0,13,-28,15,127,49,-128,51,0,53,-108,55,127,57,-128,59,0,61,-124,63,127));1788 1789__m256i test_mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B) {1790  // CHECK-LABEL: test_mm256_maskz_subs_epi81791  // CHECK: @llvm.ssub.sat.v32i81792  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1793  return _mm256_maskz_subs_epi8(__U,__A,__B); 1794}1795TEST_CONSTEXPR(match_v32qi(_mm256_maskz_subs_epi8((__mmask32)0xAAAAAAAA,(__m256i)(__v32qs){1,-100,3,4,5,-6,7,100,9,-100,11,12,13,-14,15,100,49,-100,51,52,53,-54,55,100,57,-100,59,60,61,-62,63,100},(__m256i)(__v32qs){1,100,3,4,5,6,7,-100,9,100,11,12,13,14,15,-100,49,100,51,52,53,54,55,-100,57,100,59,60,61,62,63,-100}),0,-128,0,0,0,-12,0,127,0,-128,0,0,0,-28,0,127,0,-128,0,0,0,-108,0,127,0,-128,0,0,0,-124,0,127));1796 1797__m128i test_mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1798  // CHECK-LABEL: test_mm_mask_subs_epi161799  // CHECK: @llvm.ssub.sat.v8i161800  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1801  return _mm_mask_subs_epi16(__W,__U,__A,__B); 1802}1803TEST_CONSTEXPR(match_v8hi(_mm_mask_subs_epi16((__m128i)(__v8hi){1,2,3,4,29,30,31,32},(__mmask8)0xAA,(__m128i)(__v8hi){1,-30000,3,30000,29,-30,31,32},(__m128i)(__v8hi){1,30000,3,-30000,29,30,31,-32}),1,-32768,3,32767,29,-60,31,64));1804 1805__m128i test_mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B) {1806  // CHECK-LABEL: test_mm_maskz_subs_epi161807  // CHECK: @llvm.ssub.sat.v8i161808  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1809  return _mm_maskz_subs_epi16(__U,__A,__B); 1810}1811TEST_CONSTEXPR(match_v8hi(_mm_maskz_subs_epi16((__mmask8)0xAA,(__m128i)(__v8hi){1,-30000,3,30000,29,-30,31,32},(__m128i)(__v8hi){1,30000,3,-30000,29,30,31,-32}),0,-32768,0,32767,0,-60,0,64));1812 1813__m256i test_mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {1814  // CHECK-LABEL: test_mm256_mask_subs_epi161815  // CHECK: @llvm.ssub.sat.v16i161816  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1817  return _mm256_mask_subs_epi16(__W,__U,__A,__B); 1818}1819TEST_CONSTEXPR(match_v16hi(_mm256_mask_subs_epi16((__m256i)(__v16hi){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xAAAA,(__m256i)(__v16hi){1,-30000,3,30000,5,-6,7,8,25,-30000,27,30000,29,-30,31,32},(__m256i)(__v16hi){1,30000,3,-30000,5,6,7,-8,25,30000,27,-30000,29,30,31,-32}),1,-32768,3,32767,5,-12,7,16,25,-32768,27,32767,29,-60,31,64));1820 1821__m256i test_mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B) {1822  // CHECK-LABEL: test_mm256_maskz_subs_epi161823  // CHECK: @llvm.ssub.sat.v16i161824  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1825  return _mm256_maskz_subs_epi16(__U,__A,__B); 1826}1827TEST_CONSTEXPR(match_v16hi(_mm256_maskz_subs_epi16((__mmask16)0xAAAA,(__m256i)(__v16hi){1,-30000,3,30000,5,-6,7,8,25,-30000,27,30000,29,-30,31,32},(__m256i)(__v16hi){1,30000,3,-30000,5,6,7,-8,25,30000,27,-30000,29,30,31,-32}),0,-32768,0,32767,0,-12,0,16,0,-32768,0,32767,0,-60,0,64));1828 1829__m128i test_mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {1830  // CHECK-LABEL: test_mm_mask_subs_epu81831  // CHECK-NOT: @llvm.x86.sse2.psubus.b1832  // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1833  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1834  return _mm_mask_subs_epu8(__W,__U,__A,__B); 1835}1836TEST_CONSTEXPR(match_v16qu(_mm_mask_subs_epu8((__m128i)(__v16qu){1,2,3,4,5,6,7,8,57,58,59,60,61,62,63,64},(__mmask16)0xAAAA,(__m128i)(__v16qu){0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255},(__m128i)(__v16qu){0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255}),1,200,3,0,5,0,7,254,57,0,59,1,61,1,63,0));1837 1838__m128i test_mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B) {1839  // CHECK-LABEL: test_mm_maskz_subs_epu81840  // CHECK-NOT: @llvm.x86.sse2.psubus.b1841  // CHECK: call <16 x i8> @llvm.usub.sat.v16i8(<16 x i8> %{{.*}}, <16 x i8> %{{.*}})1842  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}1843  return _mm_maskz_subs_epu8(__U,__A,__B); 1844}1845TEST_CONSTEXPR(match_v16qu(_mm_maskz_subs_epu8((__mmask16)0xAAAA,(__m128i)(__v16qu){0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255},(__m128i)(__v16qu){0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255}),0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0));1846 1847__m256i test_mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {1848  // CHECK-LABEL: test_mm256_mask_subs_epu81849  // CHECK-NOT: @llvm.x86.avx2.psubus.b1850  // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1851  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1852  return _mm256_mask_subs_epu8(__W,__U,__A,__B); 1853}1854TEST_CONSTEXPR(match_v32qu(_mm256_mask_subs_epu8((__m256i)(__v32qu){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(__m256i)(__v32qu){0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255},(__m256i)(__v32qu){0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255}),1,200,3,0,5,0,7,254,9,0,11,1,13,1,15,0,49,200,51,0,53,0,55,254,57,0,59,1,61,1,63,0));1855 1856__m256i test_mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B) {1857  // CHECK-LABEL: test_mm256_maskz_subs_epu81858  // CHECK-NOT: @llvm.x86.avx2.psubus.b1859  // CHECK: call <32 x i8> @llvm.usub.sat.v32i8(<32 x i8> %{{.*}}, <32 x i8> %{{.*}})1860  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}1861  return _mm256_maskz_subs_epu8(__U,__A,__B); 1862}1863TEST_CONSTEXPR(match_v32qu(_mm256_maskz_subs_epu8((__mmask32)0xAAAAAAAA,(__m256i)(__v32qu){0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255,0,250,0,128,0,20,0,255,0,0,0,1,0,100,0,255},(__m256i)(__v32qu){0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255,0,50,0,128,0,30,0,1,0,1,0,0,0,99,0,255}),0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0,0,200,0,0,0,0,0,254,0,0,0,1,0,1,0,0));1864 1865__m128i test_mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1866  // CHECK-LABEL: test_mm_mask_subs_epu161867  // CHECK-NOT: @llvm.x86.sse2.psubus.w1868  // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1869  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1870  return _mm_mask_subs_epu16(__W,__U,__A,__B); 1871}1872TEST_CONSTEXPR(match_v8hu(_mm_mask_subs_epu16((__m128i)(__v8hu){101,102,103,104,129,130,131,132},(__mmask8)0xAAu,(__m128i)(__v8hu){0,65000,0,40000,0,1,0,50000},(__m128i)(__v8hu){0,5000,0,60000,0,0,0,25000}),101,60000,103,0,129,1,131,25000));1873 1874__m128i test_mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B) {1875  // CHECK-LABEL: test_mm_maskz_subs_epu161876  // CHECK-NOT: @llvm.x86.sse2.psubus.w1877  // CHECK: call <8 x i16> @llvm.usub.sat.v8i16(<8 x i16> %{{.*}}, <8 x i16> %{{.*}})1878  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1879  return _mm_maskz_subs_epu16(__U,__A,__B); 1880}1881TEST_CONSTEXPR(match_v8hu(_mm_maskz_subs_epu16((__mmask8)0xAAu,(__m128i)(__v8hu){0,65000,0,40000,0,1,0,50000},(__m128i)(__v8hu){0,5000,0,60000,0,0,0,25000}),0,60000,0,0,0,1,0,25000));1882 1883__m256i test_mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {1884  // CHECK-LABEL: test_mm256_mask_subs_epu161885  // CHECK-NOT: @llvm.x86.avx2.psubus.w1886  // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1887  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1888  return _mm256_mask_subs_epu16(__W,__U,__A,__B); 1889}1890TEST_CONSTEXPR(match_v16hu(_mm256_mask_subs_epu16((__m256i)(__v16hu){101,102,103,104,105,106,107,108,125,126,127,128,129,130,131,132},(__mmask16)0xAAAAu,(__m256i)(__v16hu){0,65000,0,40000,0,100,0,65535,0,0,0,1000,0,1,0,50000},(__m256i)(__v16hu){0,5000,0,40000,0,200,0,1,0,1,0,65535,0,0,0,25000}),101,60000,103,0,105,0,107,65534,125,0,127,0,129,1,131,25000));1891 1892__m256i test_mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B) {1893  // CHECK-LABEL: test_mm256_maskz_subs_epu161894  // CHECK-NOT: @llvm.x86.avx2.psubus.w1895  // CHECK: call <16 x i16> @llvm.usub.sat.v16i16(<16 x i16> %{{.*}}, <16 x i16> %{{.*}})1896  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1897  return _mm256_maskz_subs_epu16(__U,__A,__B); 1898}1899TEST_CONSTEXPR(match_v16hu(_mm256_maskz_subs_epu16((__mmask16)0xAAAAu,(__m256i)(__v16hu){0,65000,0,40000,0,100,10,65535,0,0,0,1000,0,1,10000,50000},(__m256i)(__v16hu){0,5000,0,40000,0,200,0,1,0,1,0,65535,0,0,0,25000}),0,60000,0,0,0,0,0,65534,0,0,0,0,0,1,0,25000));1900 1901__m128i test_mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U, __m128i __B) {1902  // CHECK-LABEL: test_mm_mask2_permutex2var_epi161903  // CHECK: @llvm.x86.avx512.vpermi2var.hi.1281904  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1905  return _mm_mask2_permutex2var_epi16(__A,__I,__U,__B); 1906}1907__m256i test_mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U, __m256i __B) {1908  // CHECK-LABEL: test_mm256_mask2_permutex2var_epi161909  // CHECK: @llvm.x86.avx512.vpermi2var.hi.2561910  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1911  return _mm256_mask2_permutex2var_epi16(__A,__I,__U,__B); 1912}1913__m128i test_mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B) {1914  // CHECK-LABEL: test_mm_permutex2var_epi161915  // CHECK: @llvm.x86.avx512.vpermi2var.hi.1281916  return _mm_permutex2var_epi16(__A,__I,__B); 1917}1918__m128i test_mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {1919  // CHECK-LABEL: test_mm_mask_permutex2var_epi161920  // CHECK: @llvm.x86.avx512.vpermi2var.hi.1281921  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1922  return _mm_mask_permutex2var_epi16(__A,__U,__I,__B); 1923}1924__m128i test_mm_maskz_permutex2var_epi16(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {1925  // CHECK-LABEL: test_mm_maskz_permutex2var_epi161926  // CHECK: @llvm.x86.avx512.vpermi2var.hi.1281927  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}1928  return _mm_maskz_permutex2var_epi16(__U,__A,__I,__B); 1929}1930 1931__m256i test_mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B) {1932  // CHECK-LABEL: test_mm256_permutex2var_epi161933  // CHECK: @llvm.x86.avx512.vpermi2var.hi.2561934  return _mm256_permutex2var_epi16(__A,__I,__B); 1935}1936__m256i test_mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I, __m256i __B) {1937  // CHECK-LABEL: test_mm256_mask_permutex2var_epi161938  // CHECK: @llvm.x86.avx512.vpermi2var.hi.2561939  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1940  return _mm256_mask_permutex2var_epi16(__A,__U,__I,__B); 1941}1942__m256i test_mm256_maskz_permutex2var_epi16(__mmask16 __U, __m256i __A, __m256i __I, __m256i __B) {1943  // CHECK-LABEL: test_mm256_maskz_permutex2var_epi161944  // CHECK: @llvm.x86.avx512.vpermi2var.hi.2561945  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}1946  return _mm256_maskz_permutex2var_epi16(__U,__A,__I,__B); 1947}1948 1949TEST_CONSTEXPR(match_v8hi(1950    _mm_permutex2var_epi16((__m128i)(__v8hi){0, 10, 20, 30, 40, 50, 60, 70},1951                           (__m128i)(__v8hi){0, 7, 8, 15, 1, 9, 2, 10},1952                           (__m128i)(__v8hi){100, 110, 120, 130, 140, 150, 160,1953                                             170}),1954    0, 70, 100, 170, 10, 110, 20, 120));1955TEST_CONSTEXPR(match_v8hi(1956    _mm_mask_permutex2var_epi16((__m128i)(__v8hi){-1, -2, -3, -4, -5, -6, -7, -8},1957                                0xAA,1958                                (__m128i)(__v8hi){0, 7, 8, 15, 1, 9, 2, 10},1959                                (__m128i)(__v8hi){100, 110, 120, 130, 140, 150,1960                                                  160, 170}),1961    -1, -8, -3, 170, -5, 110, -7, 120));1962TEST_CONSTEXPR(match_v8hi(1963    _mm_maskz_permutex2var_epi16(0xAA,1964                                 (__m128i)(__v8hi){0, 10, 20, 30, 40, 50, 60, 70},1965                                 (__m128i)(__v8hi){0, 7, 8, 15, 1, 9, 2, 10},1966                                 (__m128i)(__v8hi){100, 110, 120, 130, 140, 150,1967                                                   160, 170}),1968    0, 70, 0, 170, 0, 110, 0, 120));1969TEST_CONSTEXPR(match_v8hi(1970    _mm_mask2_permutex2var_epi16((__m128i)(__v8hi){0, 10, 20, 30, 40, 50, 60, 70},1971                                 (__m128i)(__v8hi){0, 7, 8, 15, 1, 9, 2, 10},1972                                 0x55,1973                                 (__m128i)(__v8hi){100, 110, 120, 130, 140, 150,1974                                                   160, 170}),1975    0, 7, 100, 15, 10, 9, 20, 10));1976TEST_CONSTEXPR(match_v16hi(1977    _mm256_permutex2var_epi16(1978        (__m256i)(__v16hi){0, 10, 20, 30, 40, 50, 60, 70,1979                           80, 90, 100, 110, 120, 130, 140, 150},1980        (__m256i)(__v16hi){0, 15, 16, 31, 1, 17, 2, 18,1981                           3, 19, 4, 20, 5, 21, 6, 22},1982        (__m256i)(__v16hi){200, 210, 220, 230, 240, 250, 260, 270,1983                           280, 290, 300, 310, 320, 330, 340, 350}),1984    0, 150, 200, 350, 10, 210, 20, 220,1985    30, 230, 40, 240, 50, 250, 60, 260));1986TEST_CONSTEXPR(match_v16hi(1987    _mm256_mask_permutex2var_epi16(1988        (__m256i)(__v16hi){-1, -2, -3, -4, -5, -6, -7, -8,1989                           -9, -10, -11, -12, -13, -14, -15, -16},1990        0xAAAA,1991        (__m256i)(__v16hi){0, 15, 16, 31, 1, 17, 2, 18,1992                           3, 19, 4, 20, 5, 21, 6, 22},1993        (__m256i)(__v16hi){200, 210, 220, 230, 240, 250, 260, 270,1994                           280, 290, 300, 310, 320, 330, 340, 350}),1995    -1, -16, -3, 350, -5, 210, -7, 220,1996    -9, 230, -11, 240, -13, 250, -15, 260));1997TEST_CONSTEXPR(match_v16hi(1998    _mm256_maskz_permutex2var_epi16(1999        0x5555,2000        (__m256i)(__v16hi){0, 10, 20, 30, 40, 50, 60, 70,2001                           80, 90, 100, 110, 120, 130, 140, 150},2002        (__m256i)(__v16hi){0, 15, 16, 31, 1, 17, 2, 18,2003                           3, 19, 4, 20, 5, 21, 6, 22},2004        (__m256i)(__v16hi){200, 210, 220, 230, 240, 250, 260, 270,2005                           280, 290, 300, 310, 320, 330, 340, 350}),2006    0, 0, 200, 0, 10, 0, 20, 0,2007    30, 0, 40, 0, 50, 0, 60, 0));2008 2009__m128i test_mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {2010  // CHECK-LABEL: test_mm_mask_maddubs_epi162011  // CHECK: @llvm.x86.ssse3.pmadd.ub.sw2012  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2013  return _mm_mask_maddubs_epi16(__W, __U, __X, __Y); 2014}2015TEST_CONSTEXPR(match_v8hi(_mm_mask_maddubs_epi16((__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, 0x0F, (__m128i)(__v16qi){1, 1, 2, 2, 3, 3, 4, 4, 1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v16qs){2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -2, -2, -3, -3, -4, -4}), 5, 18, 39, 68, 5, 6, 7, 8));2016 2017__m128i test_mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {2018  // CHECK-LABEL: test_mm_maskz_maddubs_epi162019  // CHECK: @llvm.x86.ssse3.pmadd.ub.sw2020  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2021  return _mm_maskz_maddubs_epi16(__U, __X, __Y); 2022}2023TEST_CONSTEXPR(match_v8hi(_mm_maskz_maddubs_epi16(0x0F, (__m128i)(__v16qi){1, 1, 2, 2, 3, 3, 4, 4, 1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v16qs){2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -2, -2, -3, -3, -4, -4}), 5, 18, 39, 68, 0, 0, 0, 0));2024 2025__m256i test_mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {2026  // CHECK-LABEL: test_mm256_mask_maddubs_epi162027  // CHECK: @llvm.x86.avx2.pmadd.ub.sw2028  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2029  return _mm256_mask_maddubs_epi16(__W, __U, __X, __Y); 2030}2031TEST_CONSTEXPR(match_v16hi(_mm256_mask_maddubs_epi16((__m256i)(__v16hi){-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16}, 0x00FF, (__m256i)(__v32qi){1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7,8}, (__m256i)(__v32qs){2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1, -2, -2, -3, -3, -4, -4, -5, -5, -6, -6, -7, -7, -8, -8}), 5, 18, 39, 68, 15, 42, 77, 120, -9, -10, -11, -12, -13, -14, -15, -16));2032 2033__m256i test_mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {2034  // CHECK-LABEL: test_mm256_maskz_maddubs_epi162035  // CHECK: @llvm.x86.avx2.pmadd.ub.sw2036  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2037  return _mm256_maskz_maddubs_epi16(__U, __X, __Y); 2038}2039TEST_CONSTEXPR(match_v16hi(_mm256_maskz_maddubs_epi16(0x00FF, (__m256i)(__v32qi){1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7,8}, (__m256i)(__v32qs){2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, -1, -1, -2, -2, -3, -3, -4, -4, -5, -5, -6, -6, -7, -7, -8, -8}), 5, 18, 39, 68, 15, 42, 77, 120, 0, 0, 0, 0, 0, 0, 0, 0));2040 2041__m128i test_mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2042  // CHECK-LABEL: test_mm_mask_madd_epi162043  // CHECK: @llvm.x86.sse2.pmadd.wd2044  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}2045  return _mm_mask_madd_epi16(__W, __U, __A, __B); 2046}2047TEST_CONSTEXPR(match_v4si(_mm_mask_madd_epi16((__m128i)(__v4si){1, 2, 3, 4}, 0x3, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){9, 10, 11, 12, 13, 14, 15, 16}), 29, 81, 3, 4));2048 2049__m128i test_mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2050  // CHECK-LABEL: test_mm_maskz_madd_epi162051  // CHECK: @llvm.x86.sse2.pmadd.wd2052  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}2053  return _mm_maskz_madd_epi16(__U, __A, __B); 2054}2055TEST_CONSTEXPR(match_v4si(_mm_maskz_madd_epi16(0x3, (__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}, (__m128i)(__v8hi){9, 10, 11, 12, 13, 14, 15, 16}), 29, 81, 0, 0));2056 2057__m256i test_mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {2058  // CHECK-LABEL: test_mm256_mask_madd_epi162059  // CHECK: @llvm.x86.avx2.pmadd.wd2060  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}2061  return _mm256_mask_madd_epi16(__W, __U, __A, __B); 2062}2063TEST_CONSTEXPR(match_v8si(_mm256_mask_madd_epi16((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}, 0x0F, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hi){10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160}), 50, 250, 610, 1130, 5, 6, 7, 8));2064 2065__m256i test_mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {2066  // CHECK-LABEL: test_mm256_maskz_madd_epi162067  // CHECK: @llvm.x86.avx2.pmadd.wd2068  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}2069  return _mm256_maskz_madd_epi16(__U, __A, __B); 2070}2071TEST_CONSTEXPR(match_v8si(_mm256_maskz_madd_epi16(0x0F, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, (__m256i)(__v16hi){10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160}), 50, 250, 610, 1130, 0, 0, 0, 0));2072 2073__m128i test_mm_cvtsepi16_epi8(__m128i __A) {2074  // CHECK-LABEL: test_mm_cvtsepi16_epi82075  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.1282076  return _mm_cvtsepi16_epi8(__A); 2077}2078 2079__m128i test_mm_mask_cvtsepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {2080  // CHECK-LABEL: test_mm_mask_cvtsepi16_epi82081  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.1282082  return _mm_mask_cvtsepi16_epi8(__O, __M, __A); 2083}2084 2085__m128i test_mm_maskz_cvtsepi16_epi8(__mmask8 __M, __m128i __A) {2086  // CHECK-LABEL: test_mm_maskz_cvtsepi16_epi82087  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.1282088  return _mm_maskz_cvtsepi16_epi8(__M, __A); 2089}2090 2091__m128i test_mm256_cvtsepi16_epi8(__m256i __A) {2092  // CHECK-LABEL: test_mm256_cvtsepi16_epi82093  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.2562094  return _mm256_cvtsepi16_epi8(__A); 2095}2096 2097__m128i test_mm256_mask_cvtsepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {2098  // CHECK-LABEL: test_mm256_mask_cvtsepi16_epi82099  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.2562100  return _mm256_mask_cvtsepi16_epi8(__O, __M, __A); 2101}2102 2103__m128i test_mm256_maskz_cvtsepi16_epi8(__mmask16 __M, __m256i __A) {2104  // CHECK-LABEL: test_mm256_maskz_cvtsepi16_epi82105  // CHECK: @llvm.x86.avx512.mask.pmovs.wb.2562106  return _mm256_maskz_cvtsepi16_epi8(__M, __A); 2107}2108 2109__m128i test_mm_cvtusepi16_epi8(__m128i __A) {2110  // CHECK-LABEL: test_mm_cvtusepi16_epi82111  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.1282112  return _mm_cvtusepi16_epi8(__A); 2113}2114 2115__m128i test_mm_mask_cvtusepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {2116  // CHECK-LABEL: test_mm_mask_cvtusepi16_epi82117  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.1282118  return _mm_mask_cvtusepi16_epi8(__O, __M, __A); 2119}2120 2121__m128i test_mm_maskz_cvtusepi16_epi8(__mmask8 __M, __m128i __A) {2122  // CHECK-LABEL: test_mm_maskz_cvtusepi16_epi82123  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.1282124  return _mm_maskz_cvtusepi16_epi8(__M, __A); 2125}2126 2127__m128i test_mm256_cvtusepi16_epi8(__m256i __A) {2128  // CHECK-LABEL: test_mm256_cvtusepi16_epi82129  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.2562130  return _mm256_cvtusepi16_epi8(__A); 2131}2132 2133__m128i test_mm256_mask_cvtusepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {2134  // CHECK-LABEL: test_mm256_mask_cvtusepi16_epi82135  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.2562136  return _mm256_mask_cvtusepi16_epi8(__O, __M, __A); 2137}2138 2139__m128i test_mm256_maskz_cvtusepi16_epi8(__mmask16 __M, __m256i __A) {2140  // CHECK-LABEL: test_mm256_maskz_cvtusepi16_epi82141  // CHECK: @llvm.x86.avx512.mask.pmovus.wb.2562142  return _mm256_maskz_cvtusepi16_epi8(__M, __A); 2143}2144 2145__m128i test_mm_cvtepi16_epi8(__m128i __A) {2146  // CHECK-LABEL: test_mm_cvtepi16_epi82147  // CHECK: trunc <8 x i16> %{{.*}} to <8 x i8>2148  // CHECK: shufflevector <8 x i8> %{{.*}}, <8 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, 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>2149  return _mm_cvtepi16_epi8(__A); 2150}2151 2152TEST_CONSTEXPR(match_v16qi(_mm_cvtepi16_epi8((__m128i)(__v8hi){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0, 0));2153 2154__m128i test_mm_mask_cvtepi16_epi8(__m128i __O, __mmask8 __M, __m128i __A) {2155  // CHECK-LABEL: test_mm_mask_cvtepi16_epi82156  // CHECK: @llvm.x86.avx512.mask.pmov.wb.1282157  return _mm_mask_cvtepi16_epi8(__O, __M, __A); 2158}2159 2160__m128i test_mm_maskz_cvtepi16_epi8(__mmask8 __M, __m128i __A) {2161  // CHECK-LABEL: test_mm_maskz_cvtepi16_epi82162  // CHECK: @llvm.x86.avx512.mask.pmov.wb.1282163  return _mm_maskz_cvtepi16_epi8(__M, __A); 2164}2165 2166__m128i test_mm256_cvtepi16_epi8(__m256i __A) {2167  // CHECK-LABEL: test_mm256_cvtepi16_epi82168  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>2169  return _mm256_cvtepi16_epi8(__A); 2170}2171 2172TEST_CONSTEXPR(match_v16qi(_mm256_cvtepi16_epi8((__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16));2173 2174__m128i test_mm256_mask_cvtepi16_epi8(__m128i __O, __mmask16 __M, __m256i __A) {2175  // CHECK-LABEL: test_mm256_mask_cvtepi16_epi82176  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>2177  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2178  return _mm256_mask_cvtepi16_epi8(__O, __M, __A); 2179}2180 2181TEST_CONSTEXPR(match_v16qi(_mm256_mask_cvtepi16_epi8(_mm_set1_epi8(-177), /*1010 0011 0011 0101=*/0xa335, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, -177, 3, -177, 5, 6, -177, -177, 9, 10, -177, -177, -177, 14, -177, 16));2182 2183__m128i test_mm256_maskz_cvtepi16_epi8(__mmask16 __M, __m256i __A) {2184  // CHECK-LABEL: test_mm256_maskz_cvtepi16_epi82185  // CHECK: trunc <16 x i16> %{{.*}} to <16 x i8>2186  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2187  return _mm256_maskz_cvtepi16_epi8(__M, __A); 2188}2189 2190TEST_CONSTEXPR(match_v16qi(_mm256_maskz_cvtepi16_epi8(/*1010 0011 0011 0101=*/0xa335, (__m256i)(__v16hi){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), 1, 0, 3, 0, 5, 6, 0, 0, 9, 10, 0, 0, 0, 14, 0, 16));2191 2192__m128i test_mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {2193  // CHECK-LABEL: test_mm_mask_mulhrs_epi162194  // CHECK: @llvm.x86.ssse3.pmul.hr.sw2195  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2196  return _mm_mask_mulhrs_epi16(__W, __U, __X, __Y); 2197}2198TEST_CONSTEXPR(match_v8hi(_mm_mask_mulhrs_epi16(_mm_set1_epi16(1), 0x0F, (__m128i)(__v8hi){+100, +200, -300, -400, +500, +600, -700, +800}, (__m128i)(__v8hi){+8000, -7000, +6000, -5000, +4000, -3000, +2000, -1000}), +24, -43, -55, +61, +1, +1, +1, +1));2199 2200__m128i test_mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {2201  // CHECK-LABEL: test_mm_maskz_mulhrs_epi162202  // CHECK: @llvm.x86.ssse3.pmul.hr.sw2203  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2204  return _mm_maskz_mulhrs_epi16(__U, __X, __Y); 2205}2206TEST_CONSTEXPR(match_v8hi(_mm_maskz_mulhrs_epi16(0x0F, (__m128i)(__v8hi){+100, +200, -300, -400, +500, +600, -700, +800}, (__m128i)(__v8hi){+8000, -7000, +6000, -5000, +4000, -3000, +2000, -1000}), +24, -43, -55, +61, 0, 0, 0, 0));2207 2208__m256i test_mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {2209  // CHECK-LABEL: test_mm256_mask_mulhrs_epi162210  // CHECK: @llvm.x86.avx2.pmul.hr.sw2211  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2212  return _mm256_mask_mulhrs_epi16(__W, __U, __X, __Y); 2213}2214TEST_CONSTEXPR(match_v16hi(_mm256_mask_mulhrs_epi16(_mm256_set1_epi16(1), 0xF00F, (__m256i)(__v16hi){+100, +200, -300, -400, +500, +600, -700, +800, -900, -1000, +1100, +1200, -1300, -1400, +1500, +1600}, (__m256i)(__v16hi){+1600, -1500, +1400, -1300, +1200, -1100, +1000, -900, +800, -700, +600, -500, +400, -300, +200, -100}), +5, -9, -13, +16, +1, +1, +1, +1, +1, +1, +1, +1, -16, +13, +9, -5));2215 2216__m256i test_mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {2217  // CHECK-LABEL: test_mm256_maskz_mulhrs_epi162218  // CHECK: @llvm.x86.avx2.pmul.hr.sw2219  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2220  return _mm256_maskz_mulhrs_epi16(__U, __X, __Y); 2221}2222TEST_CONSTEXPR(match_v16hi(_mm256_maskz_mulhrs_epi16(0xF00F, (__m256i)(__v16hi){+100, +200, -300, -400, +500, +600, -700, +800, -900, -1000, +1100, +1200, -1300, -1400, +1500, +1600}, (__m256i)(__v16hi){+1600, -1500, +1400, -1300, +1200, -1100, +1000, -900, +800, -700, +600, -500, +400, -300, +200, -100}), +5, -9, -13, +16, 0, 0, 0, 0, 0, 0, 0, 0, -16, +13, +9, -5));2223 2224__m128i test_mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2225  // CHECK-LABEL: test_mm_mask_mulhi_epu162226  // CHECK: @llvm.x86.sse2.pmulhu.w2227  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2228  return _mm_mask_mulhi_epu16(__W, __U, __A, __B); 2229}2230TEST_CONSTEXPR(match_v8hi(_mm_mask_mulhi_epu16(_mm_set1_epi16(1), 0x3C, (__m128i)(__v8hi){+1, -2, +3, -4, +5, -6, +7, -8}, (__m128i)(__v8hi){-16, -14, +12, +10, -8, +6, -4, +2}), 1, 1, 0, 9, 4, 5, 1, 1));2231 2232__m128i test_mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {2233  // CHECK-LABEL: test_mm_maskz_mulhi_epu162234  // CHECK: @llvm.x86.sse2.pmulhu.w2235  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2236  return _mm_maskz_mulhi_epu16(__U, __A, __B); 2237}2238TEST_CONSTEXPR(match_v8hi(_mm_maskz_mulhi_epu16(0x87, (__m128i)(__v8hi){+1, -2, +3, -4, +5, -6, +7, -8}, (__m128i)(__v8hi){-16, -14, +12, +10, -8, +6, -4, +2}), 0, -16, 0, 0, 0, 0, 0, 1));2239 2240__m256i test_mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2241  // CHECK-LABEL: test_mm256_mask_mulhi_epu162242  // CHECK: @llvm.x86.avx2.pmulhu.w2243  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2244  return _mm256_mask_mulhi_epu16(__W, __U, __A, __B); 2245}2246TEST_CONSTEXPR(match_v16hi(_mm256_mask_mulhi_epu16(_mm256_set1_epi16(1), 0xF00F, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 0, -32, 0, 25, 1, 1, 1, 1, 1, 1, 1, 1, 12, 5, 14, 1));2247 2248__m256i test_mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {2249  // CHECK-LABEL: test_mm256_maskz_mulhi_epu162250  // CHECK: @llvm.x86.avx2.pmulhu.w2251  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2252  return _mm256_maskz_mulhi_epu16(__U, __A, __B); 2253}2254TEST_CONSTEXPR(match_v16hi(_mm256_maskz_mulhi_epu16(0x0FF0, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 0, 0, 0, 0, 4, -28, 0, 17, 8, -24, 0, 9, 0, 0, 0, 0));2255 2256__m128i test_mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2257  // CHECK-LABEL: test_mm_mask_mulhi_epi162258  // CHECK: @llvm.x86.sse2.pmulh.w2259  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2260  return _mm_mask_mulhi_epi16(__W, __U, __A, __B); 2261}2262TEST_CONSTEXPR(match_v8hi(_mm_mask_mulhi_epu16(_mm_set1_epi16(1), 0x78, (__m128i)(__v8hi){+1, -2, +3, -4, +5, -6, +7, -8}, (__m128i)(__v8hi){-16, -14, +12, +10, -8, +6, -4, +2}), 1, 1, 1, 9, 4, 5, 6, 1));2263 2264__m128i test_mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2265  // CHECK-LABEL: test_mm_maskz_mulhi_epi162266  // CHECK: @llvm.x86.sse2.pmulh.w2267  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2268  return _mm_maskz_mulhi_epi16(__U, __A, __B); 2269}2270TEST_CONSTEXPR(match_v8hi(_mm_maskz_mulhi_epi16(0xC3, (__m128i)(__v8hi){+1, -2, +3, -4, +5, -6, +7, -8}, (__m128i)(__v8hi){-16, -14, +12, +10, -8, +6, -4, +2}), -1, 0, 0, 0, 0, 0, -1, -1));2271 2272__m256i test_mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2273  // CHECK-LABEL: test_mm256_mask_mulhi_epi162274  // CHECK: @llvm.x86.avx2.pmulh.w2275  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2276  return _mm256_mask_mulhi_epi16(__W, __U, __A, __B); 2277}2278TEST_CONSTEXPR(match_v16hi(_mm256_mask_mulhi_epi16(_mm256_set1_epi16(1), 0x0FF0, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), 1, 1, 1, 1, -1, 0, 0, -1, -1, 0, 0, -1, 1, 1, 1, 1));2279 2280__m256i test_mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {2281  // CHECK-LABEL: test_mm256_maskz_mulhi_epi162282  // CHECK: @llvm.x86.avx2.pmulh.w2283  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2284  return _mm256_maskz_mulhi_epi16(__U, __A, __B); 2285}2286TEST_CONSTEXPR(match_v16hi(_mm256_maskz_mulhi_epi16(0xF00F, (__m256i)(__v16hi){+1, -2, +3, -4, +5, -6, +7, -8, +9, -10, +11, -12, +13, -14, +15, -16}, (__m256i)(__v16hi){-32, -30, +28, +26, -24, -22, +20, +18, -16, -14, +12, +10, -8, +6, -4, +2}), -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1));2287 2288__m128i test_mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {2289  // CHECK-LABEL: test_mm_mask_unpackhi_epi82290  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>2291  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2292  return _mm_mask_unpackhi_epi8(__W, __U, __A, __B); 2293}2294TEST_CONSTEXPR(match_v16qi(_mm_mask_unpackhi_epi8((__m128i)(__v16qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},(__mmask16)0xFAAA,(__m128i)(__v16qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115},(__m128i)(__v16qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16}),1,-9,3,-10,5,-11,7,-12,9,-13,11,-14,114,-15,115,-16));2295 2296__m128i test_mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {2297  // CHECK-LABEL: test_mm_maskz_unpackhi_epi82298  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>2299  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2300  return _mm_maskz_unpackhi_epi8(__U, __A, __B); 2301}2302TEST_CONSTEXPR(match_v16qi(_mm_maskz_unpackhi_epi8((__mmask16)0xFAAA,(__m128i)(__v16qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115},(__m128i)(__v16qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16}),0,-9,0,-10,0,-11,0,-12,0,-13,0,-14,114,-15,115,-16));2303 2304__m256i test_mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {2305  // CHECK-LABEL: test_mm256_mask_unpackhi_epi82306  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2307  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2308  return _mm256_mask_unpackhi_epi8(__W, __U, __A, __B); 2309}2310TEST_CONSTEXPR(match_v32qi(_mm256_mask_unpackhi_epi8((__m256i)(__v32qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xFAAAAAAA,(__m256i)(__v32qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89},(__m256i)(__v32qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64}),1,-9,3,-10,5,-11,7,-12,9,-13,11,-14,13,-15,15,-16,49,-57,51,-58,53,-59,55,-60,57,-61,59,-62,-90,-63,-89,-64));2311 2312__m256i test_mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {2313  // CHECK-LABEL: test_mm256_maskz_unpackhi_epi82314  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 8, i32 40, i32 9, i32 41, i32 10, i32 42, i32 11, i32 43, i32 12, i32 44, i32 13, i32 45, i32 14, i32 46, i32 15, i32 47, i32 24, i32 56, i32 25, i32 57, i32 26, i32 58, i32 27, i32 59, i32 28, i32 60, i32 29, i32 61, i32 30, i32 62, i32 31, i32 63>2315  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2316  return _mm256_maskz_unpackhi_epi8(__U, __A, __B); 2317}2318TEST_CONSTEXPR(match_v32qi(_mm256_maskz_unpackhi_epi8((__mmask32)0xFAAAAAAA,(__m256i)(__v32qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,-104,-103,-102,-101,-100,-99,-98,-97,-96,-95,-94,-93,-92,-91,-90,-89},(__m256i)(__v32qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-49,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64}),0,-9,0,-10,0,-11,0,-12,0,-13,0,-14,0,-15,0,-16,0,-57,0,-58,0,-59,0,-60,0,-61,0,-62,-90,-63,-89,-64));2319 2320__m128i test_mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2321  // CHECK-LABEL: test_mm_mask_unpackhi_epi162322  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>2323  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2324  return _mm_mask_unpackhi_epi16(__W, __U, __A, __B); 2325}2326TEST_CONSTEXPR(match_v8hi(_mm_mask_unpackhi_epi16((__m128i)(__v8hi){1,2,3,4,5,6,7,8},(__mmask8)0xFA,(__m128i)(__v8hi){100,101,102,103,104,105,106,107},(__m128i)(__v8hi){200,201,202,203,204,205,206,207}),1,204,3,205,106,206,107,207));2327 2328__m128i test_mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2329  // CHECK-LABEL: test_mm_maskz_unpackhi_epi162330  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>2331  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2332  return _mm_maskz_unpackhi_epi16(__U, __A, __B); 2333}2334TEST_CONSTEXPR(match_v8hi(_mm_maskz_unpackhi_epi16((__mmask8)0xFA,(__m128i)(__v8hi){100,101,102,103,104,105,106,107},(__m128i)(__v8hi){200,201,202,203,204,205,206,207}),0,204,0,205,106,206,107,207));2335 2336__m256i test_mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2337  // CHECK-LABEL: test_mm256_mask_unpackhi_epi162338  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>2339  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2340  return _mm256_mask_unpackhi_epi16(__W, __U, __A, __B); 2341}2342TEST_CONSTEXPR(match_v16hi(_mm256_mask_unpackhi_epi16((__m256i)(__v16hi){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xFAAAu,(__m256i)(__v16hi){100,101,102,103,104,105,106,107,130,131,132,133,134,135,136,137},(__m256i)(__v16hi){200,201,202,203,204,205,206,207,230,231,232,233,234,235,236,237}),1,204,3,205,5,206,7,207,25,234,27,235,136,236,137,237));2343 2344__m256i test_mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {2345  // CHECK-LABEL: test_mm256_maskz_unpackhi_epi162346  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23, i32 12, i32 28, i32 13, i32 29, i32 14, i32 30, i32 15, i32 31>2347  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2348  return _mm256_maskz_unpackhi_epi16(__U, __A, __B); 2349}2350TEST_CONSTEXPR(match_v16hi(_mm256_maskz_unpackhi_epi16((__mmask16)0xFAAAu,(__m256i)(__v16hi){100,101,102,103,104,105,106,107,130,131,132,133,134,135,136,137},(__m256i)(__v16hi){200,201,202,203,204,205,206,207,230,231,232,233,234,235,236,237}),0,204,0,205,0,206,0,207,0,234,0,235,136,236,137,237));2351 2352__m128i test_mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {2353  // CHECK-LABEL: test_mm_mask_unpacklo_epi82354  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>2355  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2356  return _mm_mask_unpacklo_epi8(__W, __U, __A, __B); 2357}2358TEST_CONSTEXPR(match_v16qi(_mm_mask_unpacklo_epi8((__m128i)(__v16qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},(__mmask16)0xFAAA,(__m128i)(__v16qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115},(__m128i)(__v16qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16}),1,-1,3,-2,5,-3,7,-4,9,-5,11,-6,106,-7,107,-8));2359 2360__m128i test_mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {2361  // CHECK-LABEL: test_mm_maskz_unpacklo_epi82362  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 4, i32 20, i32 5, i32 21, i32 6, i32 22, i32 7, i32 23>2363  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2364  return _mm_maskz_unpacklo_epi8(__U, __A, __B); 2365}2366TEST_CONSTEXPR(match_v16qi(_mm_maskz_unpacklo_epi8((__mmask16)0xFAAA,(__m128i)(__v16qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115},(__m128i)(__v16qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16}),0,-1,0,-2,0,-3,0,-4,0,-5,0,-6,106,-7,107,-8));2367 2368__m256i test_mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {2369  // CHECK-LABEL: test_mm256_mask_unpacklo_epi82370  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>2371  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2372  return _mm256_mask_unpacklo_epi8(__W, __U, __A, __B); 2373}2374TEST_CONSTEXPR(match_v32qi(_mm256_mask_unpacklo_epi8((__m256i)(__v32qs){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xFAAAAAAA,(__m256i)(__v32qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64,-65},(__m256i)(__v32qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75}),1,-1,3,-2,5,-3,7,-4,9,-5,11,-6,13,-7,15,-8,49,60,51,61,53,62,55,63,57,64,59,65,-56,66,-57,67));2375 2376__m256i test_mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {2377  // CHECK-LABEL: test_mm256_maskz_unpacklo_epi82378  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 x i32> <i32 0, i32 32, i32 1, i32 33, i32 2, i32 34, i32 3, i32 35, i32 4, i32 36, i32 5, i32 37, i32 6, i32 38, i32 7, i32 39, i32 16, i32 48, i32 17, i32 49, i32 18, i32 50, i32 19, i32 51, i32 20, i32 52, i32 21, i32 53, i32 22, i32 54, i32 23, i32 55>2379  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2380  return _mm256_maskz_unpacklo_epi8(__U, __A, __B); 2381}2382TEST_CONSTEXPR(match_v32qi(_mm256_maskz_unpacklo_epi8((__mmask32)0xFAAAAAAA,(__m256i)(__v32qs){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,-50,-51,-52,-53,-54,-55,-56,-57,-58,-59,-60,-61,-62,-63,-64,-65},(__m256i)(__v32qs){-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75}),0,-1,0,-2,0,-3,0,-4,0,-5,0,-6,0,-7,0,-8,0,60,0,61,0,62,0,63,0,64,0,65,-56,66,-57,67));2383 2384__m128i test_mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2385  // CHECK-LABEL: test_mm_mask_unpacklo_epi162386  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>2387  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2388  return _mm_mask_unpacklo_epi16(__W, __U, __A, __B); 2389}2390TEST_CONSTEXPR(match_v8hi(_mm_mask_unpacklo_epi16((__m128i)(__v8hi){1,2,3,4,5,6,7,8},(__mmask8)0xFAu,(__m128i)(__v8hi){100,101,102,103,104,105,106,107},(__m128i)(__v8hi){200,201,202,203,204,205,206,207}),1,200,3,201,102,202,103,203));2391 2392__m128i test_mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2393  // CHECK-LABEL: test_mm_maskz_unpacklo_epi162394  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11>2395  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2396  return _mm_maskz_unpacklo_epi16(__U, __A, __B); 2397}2398TEST_CONSTEXPR(match_v8hi(_mm_maskz_unpacklo_epi16((__mmask8)0xFAu,(__m128i)(__v8hi){100,101,102,103,104,105,106,107},(__m128i)(__v8hi){200,201,202,203,204,205,206,207}),0,200,0,201,102,202,103,203));2399 2400__m256i test_mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2401  // CHECK-LABEL: test_mm256_mask_unpacklo_epi162402  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>2403  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2404  return _mm256_mask_unpacklo_epi16(__W, __U, __A, __B); 2405}2406TEST_CONSTEXPR(match_v16hi(_mm256_mask_unpacklo_epi16((__m256i)(__v16hi){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xFAAAu,(__m256i)(__v16hi){100,101,102,103,104,105,106,107,130,131,132,133,134,135,136,137},(__m256i)(__v16hi){200,201,202,203,204,205,206,207,230,231,232,233,234,235,236,237}),1,200,3,201,5,202,7,203,25,230,27,231,132,232,133,233));2407 2408__m256i test_mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {2409  // CHECK-LABEL: test_mm256_maskz_unpacklo_epi162410  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 2, i32 18, i32 3, i32 19, i32 8, i32 24, i32 9, i32 25, i32 10, i32 26, i32 11, i32 27>2411  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2412  return _mm256_maskz_unpacklo_epi16(__U, __A, __B); 2413}2414TEST_CONSTEXPR(match_v16hi(_mm256_maskz_unpacklo_epi16((__mmask16)0xFAAAu,(__m256i)(__v16hi){100,101,102,103,104,105,106,107,130,131,132,133,134,135,136,137},(__m256i)(__v16hi){200,201,202,203,204,205,206,207,230,231,232,233,234,235,236,237}),0,200,0,201,0,202,0,203,0,230,0,231,132,232,133,233));2415 2416__m128i test_mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {2417  // CHECK-LABEL: test_mm_mask_cvtepi8_epi162418  // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>2419  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2420  return _mm_mask_cvtepi8_epi16(__W, __U, __A); 2421}2422TEST_CONSTEXPR(match_v8hi(_mm_mask_cvtepi8_epi16(_mm_set1_epi16(-777),(__mmask8)0xA5,(__m128i)(__v16qs){1,-2,3,-4,5,-6,7,-8,9,10,11,12,13,14,15,16}),1,-777,3,-777,-777,-6,-777,-8));2423 2424__m128i test_mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A) {2425  // CHECK-LABEL: test_mm_maskz_cvtepi8_epi162426  // CHECK: sext <8 x i8> %{{.*}} to <8 x i16>2427  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2428  return _mm_maskz_cvtepi8_epi16(__U, __A); 2429}2430TEST_CONSTEXPR(match_v8hi(_mm_maskz_cvtepi8_epi16((__mmask8)0xA5,(__m128i)(__v16qs){1,-2,3,-4,5,-6,7,-8,9,10,11,12,13,14,15,16}),1,0,3,0,0,-6,0,-8));2431 2432__m256i test_mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {2433  // CHECK-LABEL: test_mm256_mask_cvtepi8_epi162434  // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>2435  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2436  return _mm256_mask_cvtepi8_epi16(__W, __U, __A); 2437}2438TEST_CONSTEXPR(match_v16hi(_mm256_mask_cvtepi8_epi16(_mm256_set1_epi16(-777),/*1001110010100101=*/0x9ca5,(__m128i)(__v16qs){1,-2,3,-4,5,-6,7,-8,25,-26,27,-28,29,-30,31,-32}),1,-777,3,-777,-777,-6,-777,-8,-777,-777,27,-28,29,-777,-777,-32));2439 2440__m256i test_mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A) {2441  // CHECK-LABEL: test_mm256_maskz_cvtepi8_epi162442  // CHECK: sext <16 x i8> %{{.*}} to <16 x i16>2443  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2444  return _mm256_maskz_cvtepi8_epi16(__U, __A); 2445}2446TEST_CONSTEXPR(match_v16hi(_mm256_maskz_cvtepi8_epi16(/*1001110010100101=*/0x9ca5,(__m128i)(__v16qs){1,-2,3,-4,5,-6,7,-8,25,-26,27,-28,29,-30,31,-32}),1,0,3,0,0,-6,0,-8,0,0,27,-28,29,0,0,-32));2447 2448__m128i test_mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A) {2449  // CHECK-LABEL: test_mm_mask_cvtepu8_epi162450  // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>2451  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2452  return _mm_mask_cvtepu8_epi16(__W, __U, __A); 2453}2454TEST_CONSTEXPR(match_v8hi(_mm_mask_cvtepu8_epi16(_mm_set1_epi16(-777),(__mmask8)0xA5,(__m128i)(__v16qu){25,26,27,28,29,30,31,32,0,0,0,0,0,0,0,0}),25,-777,27,-777,-777,30,-777,32));2455 2456__m128i test_mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A) {2457  // CHECK-LABEL: test_mm_maskz_cvtepu8_epi162458  // CHECK: zext <8 x i8> %{{.*}} to <8 x i16>2459  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2460  return _mm_maskz_cvtepu8_epi16(__U, __A); 2461}2462TEST_CONSTEXPR(match_v8hi(_mm_maskz_cvtepu8_epi16((__mmask8)0xA5,(__m128i)(__v16qu){25,26,27,28,29,30,31,32,0,0,0,0,0,0,0,0}),25,0,27,0,0,30,0,32));2463 2464__m256i test_mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A) {2465  // CHECK-LABEL: test_mm256_mask_cvtepu8_epi162466  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>2467  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2468  return _mm256_mask_cvtepu8_epi16(__W, __U, __A); 2469}2470TEST_CONSTEXPR(match_v16hi(_mm256_mask_cvtepu8_epi16(_mm256_set1_epi16(-777),/*1001110010100101=*/0x9ca5,(__m128i)(__v16qu){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32}),1,-777,3,-777,-777,6,-777,8,-777,-777,27,28,29,-777,-777,32));2471 2472__m256i test_mm256_maskz_cvtepu8_epi16(__mmask16 __U, __m128i __A) {2473  // CHECK-LABEL: test_mm256_maskz_cvtepu8_epi162474  // CHECK: zext <16 x i8> %{{.*}} to <16 x i16>2475  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2476  return _mm256_maskz_cvtepu8_epi16(__U, __A); 2477}2478TEST_CONSTEXPR(match_v16hi(_mm256_maskz_cvtepu8_epi16(/*1001110010100101=*/0x9ca5,(__m128i)(__v16qu){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32}),1,0,3,0,0,6,0,8,0,0,27,28,29,0,0,32));2479 2480__m256i test_mm256_sllv_epi16(__m256i __A, __m256i __B) {2481  // CHECK-LABEL: test_mm256_sllv_epi162482  // CHECK: @llvm.x86.avx512.psllv.w.256(2483  return _mm256_sllv_epi16(__A, __B); 2484}2485TEST_CONSTEXPR(match_v16hi(_mm256_sllv_epi16((__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}),  -64, 0, -272, 560, -1152, -2368, 0, -9984, 0, 0, 20480, 0, -32768, 0, 0, 0));2486 2487__m256i test_mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2488  // CHECK-LABEL: test_mm256_mask_sllv_epi162489  // CHECK: @llvm.x86.avx512.psllv.w.256(2490  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2491  return _mm256_mask_sllv_epi16(__W, __U, __A, __B); 2492}2493TEST_CONSTEXPR(match_v16hi(_mm256_mask_sllv_epi16((__m256i)(__v16hi){ 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999}, 0xFF56, (__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}), 999, 0, -272, 999, -1152, 999, 0, 999, 0, 0, 20480, 0, -32768, 0, 0, 0));2494 2495__m256i test_mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {2496  // CHECK-LABEL: test_mm256_maskz_sllv_epi162497  // CHECK: @llvm.x86.avx512.psllv.w.256(2498  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2499  return _mm256_maskz_sllv_epi16(__U, __A, __B); 2500}2501TEST_CONSTEXPR(match_v16hi(_mm256_maskz_sllv_epi16(0xFF56, (__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}),  0, 0, -272, 0, -1152, 0, 0, 0, 0, 0, 20480, 0, -32768, 0, 0, 0));2502 2503__m128i test_mm_sllv_epi16(__m128i __A, __m128i __B) {2504  // CHECK-LABEL: test_mm_sllv_epi162505  // CHECK: @llvm.x86.avx512.psllv.w.128(2506  return _mm_sllv_epi16(__A, __B); 2507}2508TEST_CONSTEXPR(match_v8hi(_mm_sllv_epi16((__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}),  32, 68, 0, 0, -640, 0, 0, 5888));2509 2510__m128i test_mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2511  // CHECK-LABEL: test_mm_mask_sllv_epi162512  // CHECK: @llvm.x86.avx512.psllv.w.128(2513  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2514  return _mm_mask_sllv_epi16(__W, __U, __A, __B); 2515}2516TEST_CONSTEXPR(match_v8hi(_mm_mask_sllv_epi16((__m128i)(__v8hi){ 999, 999, 999, 999, 999, 999, 999, 999}, 0x93, (__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}), 32, 68, 999, 999, -640, 999, 999, 5888));2517 2518__m128i test_mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2519  // CHECK-LABEL: test_mm_maskz_sllv_epi162520  // CHECK: @llvm.x86.avx512.psllv.w.128(2521  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2522  return _mm_maskz_sllv_epi16(__U, __A, __B); 2523}2524TEST_CONSTEXPR(match_v8hi(_mm_maskz_sllv_epi16(0x93, (__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}),  32, 68, 0, 0, -640, 0, 0, 5888));2525 2526__m128i test_mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2527  // CHECK-LABEL: test_mm_mask_sll_epi162528  // CHECK: @llvm.x86.sse2.psll.w2529  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2530  return _mm_mask_sll_epi16(__W, __U, __A, __B); 2531}2532 2533__m128i test_mm_maskz_sll_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2534  // CHECK-LABEL: test_mm_maskz_sll_epi162535  // CHECK: @llvm.x86.sse2.psll.w2536  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2537  return _mm_maskz_sll_epi16(__U, __A, __B); 2538}2539 2540__m256i test_mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {2541  // CHECK-LABEL: test_mm256_mask_sll_epi162542  // CHECK: @llvm.x86.avx2.psll.w2543  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2544  return _mm256_mask_sll_epi16(__W, __U, __A, __B); 2545}2546 2547__m256i test_mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B) {2548  // CHECK-LABEL: test_mm256_maskz_sll_epi162549  // CHECK: @llvm.x86.avx2.psll.w2550  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2551  return _mm256_maskz_sll_epi16(__U, __A, __B); 2552}2553TEST_CONSTEXPR(match_v8hi(_mm_maskz_slli_epi16((__mmask8)0xAA, (__m128i)(__v8hi){0, 1, 2, 3, 4, 5, 6, 7}, 20), 0, 0, 0, 0, 0, 0, 0, 0));2554 2555__m128i test_mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {2556  // CHECK-LABEL: test_mm_mask_slli_epi162557  // CHECK: @llvm.x86.sse2.pslli.w2558  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2559  return _mm_mask_slli_epi16(__W, __U, __A, 5); 2560}2561TEST_CONSTEXPR(match_v8hi(_mm_mask_slli_epi16((__m128i)(__v8hi){100, 101, 102, 103, 104, 105, 106, 107}, (__mmask8)0xAA, (__m128i)(__v8hi){0, 1, 2, 3, 4, 5, 6, 7}, 20), 100, 0, 102, 0, 104, 0, 106, 0));2562 2563__m128i test_mm_mask_slli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {2564  // CHECK-LABEL: test_mm_mask_slli_epi16_22565  // CHECK: @llvm.x86.sse2.pslli.w2566  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2567  return _mm_mask_slli_epi16(__W, __U, __A, __B); 2568}2569 2570__m128i test_mm_maskz_slli_epi16(__mmask8 __U, __m128i __A) {2571  // CHECK-LABEL: test_mm_maskz_slli_epi162572  // CHECK: @llvm.x86.sse2.pslli.w2573  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2574  return _mm_maskz_slli_epi16(__U, __A, 5); 2575}2576 2577__m128i test_mm_maskz_slli_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {2578  // CHECK-LABEL: test_mm_maskz_slli_epi16_22579  // CHECK: @llvm.x86.sse2.pslli.w2580  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2581  return _mm_maskz_slli_epi16(__U, __A, __B); 2582}2583 2584__m256i test_mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {2585  // CHECK-LABEL: test_mm256_mask_slli_epi162586  // CHECK: @llvm.x86.avx2.pslli.w2587  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2588  return _mm256_mask_slli_epi16(__W, __U, __A, 5); 2589}2590TEST_CONSTEXPR(match_v16hi(_mm256_mask_slli_epi16((__m256i)(__v16hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115}, (__mmask16)0xAAAA, (__m256i)(__v16hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 20), 100, 0, 102, 0, 104, 0, 106, 0, 108, 0, 110, 0, 112, 0, 114, 0));2591 2592__m256i test_mm256_mask_slli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {2593  // CHECK-LABEL: test_mm256_mask_slli_epi16_22594  // CHECK: @llvm.x86.avx2.pslli.w2595  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2596  return _mm256_mask_slli_epi16(__W, __U, __A, __B); 2597}2598 2599__m256i test_mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A) {2600  // CHECK-LABEL: test_mm256_maskz_slli_epi162601  // CHECK: @llvm.x86.avx2.pslli.w2602  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2603  return _mm256_maskz_slli_epi16(__U, __A, 5); 2604}2605TEST_CONSTEXPR(match_v16hi(_mm256_maskz_slli_epi16((__mmask16)0x00ffcc71, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2606TEST_CONSTEXPR(match_v16hi(_mm256_maskz_slli_epi16((__mmask16)0, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 16), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2607TEST_CONSTEXPR(match_v16hi(_mm256_maskz_slli_epi16((__mmask16)0xffff, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x1fe, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e));2608TEST_CONSTEXPR(match_v16hi(_mm256_maskz_slli_epi16((__mmask16)0x7, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x1fe, 0x2, 0x4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));2609TEST_CONSTEXPR(match_v16hi(_mm256_maskz_slli_epi16((__mmask16)0x71, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x1fe, 0, 0, 0, 0x8, 0xa, 0xc, 0, 0, 0, 0, 0, 0, 0, 0, 0));2610 2611__m256i test_mm256_maskz_slli_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {2612  // CHECK-LABEL: test_mm256_maskz_slli_epi16_22613  // CHECK: @llvm.x86.avx2.pslli.w2614  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2615  return _mm256_maskz_slli_epi16(__U, __A, __B); 2616}2617 2618__m256i test_mm256_srlv_epi16(__m256i __A, __m256i __B) {2619  // CHECK-LABEL: test_mm256_srlv_epi162620  // CHECK: @llvm.x86.avx512.psrlv.w.256(2621  return _mm256_srlv_epi16(__A, __B); 2622}2623TEST_CONSTEXPR(match_v16hi(_mm256_srlv_epi16((__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}),  32752, 0, 8187, 2, 2046, 1023, 0, 255, 0, 0, 0, 0, 0, 0, 1, 0));2624 2625__m256i test_mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2626  // CHECK-LABEL: test_mm256_mask_srlv_epi162627  // CHECK: @llvm.x86.avx512.psrlv.w.256(2628  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2629  return _mm256_mask_srlv_epi16(__W, __U, __A, __B); 2630}2631TEST_CONSTEXPR(match_v16hi(_mm256_mask_srlv_epi16((__m256i)(__v16hi){ 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999}, 0xFF56, (__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}), 999, 0, 8187, 999, 2046, 999, 0, 999, 0, 0, 0, 0, 0, 0, 1, 0));2632 2633__m256i test_mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B) {2634  // CHECK-LABEL: test_mm256_maskz_srlv_epi162635  // CHECK: @llvm.x86.avx512.psrlv.w.256(2636  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2637  return _mm256_maskz_srlv_epi16(__U, __A, __B); 2638}2639TEST_CONSTEXPR(match_v16hi(_mm256_maskz_srlv_epi16(0xFF56, (__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}),  0, 0, 8187, 0, 2046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0));2640 2641__m128i test_mm_srlv_epi16(__m128i __A, __m128i __B) {2642  // CHECK-LABEL: test_mm_srlv_epi162643  // CHECK: @llvm.x86.avx512.psrlv.w.128(2644  return _mm_srlv_epi16(__A, __B); 2645}2646TEST_CONSTEXPR(match_v8hi(_mm_srlv_epi16((__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}),  8, 4, 0, 0, 2047, 0, 0, 0));2647 2648__m128i test_mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2649  // CHECK-LABEL: test_mm_mask_srlv_epi162650  // CHECK: @llvm.x86.avx512.psrlv.w.128(2651  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2652  return _mm_mask_srlv_epi16(__W, __U, __A, __B); 2653}2654TEST_CONSTEXPR(match_v8hi(_mm_mask_srlv_epi16((__m128i)(__v8hi){ 999, 999, 999, 999, 999, 999, 999, 999}, 0x93, (__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}), 8, 4, 999, 999, 2047, 999, 999, 0));2655 2656__m128i test_mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2657  // CHECK-LABEL: test_mm_maskz_srlv_epi162658  // CHECK: @llvm.x86.avx512.psrlv.w.128(2659  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2660  return _mm_maskz_srlv_epi16(__U, __A, __B); 2661}2662TEST_CONSTEXPR(match_v8hi(_mm_maskz_srlv_epi16(0x93, (__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}),  8, 4, 0, 0, 2047, 0, 0, 0));2663 2664__m128i test_mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2665  // CHECK-LABEL: test_mm_mask_srl_epi162666  // CHECK: @llvm.x86.sse2.psrl.w2667  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2668  return _mm_mask_srl_epi16(__W, __U, __A, __B); 2669}2670 2671__m128i test_mm_maskz_srl_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2672  // CHECK-LABEL: test_mm_maskz_srl_epi162673  // CHECK: @llvm.x86.sse2.psrl.w2674  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2675  return _mm_maskz_srl_epi16(__U, __A, __B); 2676}2677 2678__m256i test_mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {2679  // CHECK-LABEL: test_mm256_mask_srl_epi162680  // CHECK: @llvm.x86.avx2.psrl.w2681  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2682  return _mm256_mask_srl_epi16(__W, __U, __A, __B); 2683}2684 2685__m256i test_mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B) {2686  // CHECK-LABEL: test_mm256_maskz_srl_epi162687  // CHECK: @llvm.x86.avx2.psrl.w2688  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2689  return _mm256_maskz_srl_epi16(__U, __A, __B); 2690}2691 2692__m128i test_mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A) {2693  // CHECK-LABEL: test_mm_mask_srli_epi162694  // CHECK: @llvm.x86.sse2.psrli.w2695  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2696  return _mm_mask_srli_epi16(__W, __U, __A, 5); 2697}2698 2699__m128i test_mm_mask_srli_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, int __B) {2700  // CHECK-LABEL: test_mm_mask_srli_epi16_22701  // CHECK: @llvm.x86.sse2.psrli.w2702  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2703  return _mm_mask_srli_epi16(__W, __U, __A, __B); 2704}2705 2706__m128i test_mm_maskz_srli_epi16(__mmask8 __U, __m128i __A) {2707  // CHECK-LABEL: test_mm_maskz_srli_epi162708  // CHECK: @llvm.x86.sse2.psrli.w2709  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2710  return _mm_maskz_srli_epi16(__U, __A, 5); 2711}2712 2713__m128i test_mm_maskz_srli_epi16_2(__mmask8 __U, __m128i __A, int __B) {2714  // CHECK-LABEL: test_mm_maskz_srli_epi16_22715  // CHECK: @llvm.x86.sse2.psrli.w2716  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2717  return _mm_maskz_srli_epi16(__U, __A, __B); 2718}2719 2720__m256i test_mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A) {2721  // CHECK-LABEL: test_mm256_mask_srli_epi162722  // CHECK: @llvm.x86.avx2.psrli.w2723  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2724  return _mm256_mask_srli_epi16(__W, __U, __A, 5); 2725}2726TEST_CONSTEXPR(match_v16hi(_mm256_mask_srli_epi16((__m256i)(__v16hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115}, (__mmask16)0xAAAA, (__m256i)(__v16hi){0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 20), 100, 0, 102, 0, 104, 0, 106, 0, 108, 0, 110, 0, 112, 0, 114, 0));2727TEST_CONSTEXPR(match_v16hi(_mm256_mask_srli_epi16((__m256i)(__v16hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115}, (__mmask16)0xAAAA, (__m256i)(__v16hi){0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480}, 5), 100, 1, 102, 3, 104, 5, 106, 7, 108, 9, 110, 11, 112, 13, 114, 15));2728 2729__m256i test_mm256_mask_srli_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, int __B) {2730  // CHECK-LABEL: test_mm256_mask_srli_epi16_22731  // CHECK: @llvm.x86.avx2.psrli.w2732  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2733  return _mm256_mask_srli_epi16(__W, __U, __A, __B); 2734}2735 2736__m256i test_mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A) {2737  // CHECK-LABEL: test_mm256_maskz_srli_epi162738  // CHECK: @llvm.x86.avx2.psrli.w2739  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2740  return _mm256_maskz_srli_epi16(__U, __A, 5); 2741}2742TEST_CONSTEXPR(match_v16hi(_mm256_maskz_srli_epi16((__mmask16)0x71, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x7f, 0, 0, 0, 0x2, 0x2, 0x3, 0, 0, 0, 0, 0, 0, 0, 0, 0));2743 2744__m256i test_mm256_maskz_srli_epi16_2(__mmask16 __U, __m256i __A, int __B) {2745  // CHECK-LABEL: test_mm256_maskz_srli_epi16_22746  // CHECK: @llvm.x86.avx2.psrli.w2747  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2748  return _mm256_maskz_srli_epi16(__U, __A, __B); 2749}2750 2751__m256i test_mm256_srav_epi16(__m256i __A, __m256i __B) {2752  // CHECK-LABEL: test_mm256_srav_epi162753  // CHECK: @llvm.x86.avx512.psrav.w.256(2754  return _mm256_srav_epi16(__A, __B); 2755}2756TEST_CONSTEXPR(match_v16hi(_mm256_srav_epi16((__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}),  -16, 0, -5, 2, -2, -1, 0, -1, -1, -1, 0, 0, 0, -1, -1, -1));2757 2758__m256i test_mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {2759  // CHECK-LABEL: test_mm256_mask_srav_epi162760  // CHECK: @llvm.x86.avx512.psrav.w.256(2761  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2762  return _mm256_mask_srav_epi16(__W, __U, __A, __B); 2763}2764TEST_CONSTEXPR(match_v16hi(_mm256_mask_srav_epi16((__m256i)(__v16hi){ 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, 999}, 0xFF56, (__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}), 999, 0, -5, 999, -2, 999, 0, 999, -1, -1, 0, 0, 0, -1, -1, -1));2765 2766__m256i test_mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B) {2767  // CHECK-LABEL: test_mm256_maskz_srav_epi162768  // CHECK: @llvm.x86.avx512.psrav.w.256(2769  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2770  return _mm256_maskz_srav_epi16(__U, __A, __B); 2771}2772TEST_CONSTEXPR(match_v16hi(_mm256_maskz_srav_epi16(0xFF56, (__m256i)(__v16hi){ -32, 33, -34, 35, -36, -37, 38, -39, -40, -41, 42, 43, 44, -45, -46, -47}, (__m256i)(__v16hi){ 1, -2, 3, 4, 5, 6, -7, 8, -9, -10, 11, -12, 13, -14, 15, 16}),  0, 0, -5, 0, -2, 0, 0, 0, -1, -1, 0, 0, 0, -1, -1, -1));2773 2774__m128i test_mm_srav_epi16(__m128i __A, __m128i __B) {2775  // CHECK-LABEL: test_mm_srav_epi162776  // CHECK: @llvm.x86.avx512.psrav.w.128(2777  return _mm_srav_epi16(__A, __B); 2778}2779TEST_CONSTEXPR(match_v8hi(_mm_srav_epi16((__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}),  8, 4, 0, -1, -1, -1, 0, 0));2780 2781__m128i test_mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2782  // CHECK-LABEL: test_mm_mask_srav_epi162783  // CHECK: @llvm.x86.avx512.psrav.w.128(2784  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2785  return _mm_mask_srav_epi16(__W, __U, __A, __B); 2786}2787TEST_CONSTEXPR(match_v8hi(_mm_mask_srav_epi16((__m128i)(__v8hi){ 999, 999, 999, 999, 999, 999, 999, 999}, 0x93, (__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}), 8, 4, 999, 999, -1, 999, 999, 0));2788 2789__m128i test_mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2790  // CHECK-LABEL: test_mm_maskz_srav_epi162791  // CHECK: @llvm.x86.avx512.psrav.w.128(2792  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2793  return _mm_maskz_srav_epi16(__U, __A, __B); 2794}2795TEST_CONSTEXPR(match_v8hi(_mm_maskz_srav_epi16(0x93, (__m128i)(__v8hi){ 16, 17, 18, -19, -20, -21, 22, 23}, (__m128i)(__v8hi){ 1, 2, -3, -4, 5, -6, -7, 8}),  8, 4, 0, 0, -1, 0, 0, 0));2796 2797__m128i test_mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {2798  // CHECK-LABEL: test_mm_mask_sra_epi162799  // CHECK: @llvm.x86.sse2.psra.w2800  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2801  return _mm_mask_sra_epi16(__W, __U, __A, __B); 2802}2803 2804__m128i test_mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B) {2805  // CHECK-LABEL: test_mm_maskz_sra_epi162806  // CHECK: @llvm.x86.sse2.psra.w2807  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2808  return _mm_maskz_sra_epi16(__U, __A, __B); 2809}2810 2811__m256i test_mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B) {2812  // CHECK-LABEL: test_mm256_mask_sra_epi162813  // CHECK: @llvm.x86.avx2.psra.w2814  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2815  return _mm256_mask_sra_epi16(__W, __U, __A, __B); 2816}2817 2818__m256i test_mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B) {2819  // CHECK-LABEL: test_mm256_maskz_sra_epi162820  // CHECK: @llvm.x86.avx2.psra.w2821  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2822  return _mm256_maskz_sra_epi16(__U, __A, __B); 2823}2824 2825__m128i test_mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A) {2826  // CHECK-LABEL: test_mm_mask_srai_epi162827  // CHECK: @llvm.x86.sse2.psrai.w2828  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2829  return _mm_mask_srai_epi16(__W, __U, __A, 5); 2830}2831 2832__m128i test_mm_mask_srai_epi16_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {2833  // CHECK-LABEL: test_mm_mask_srai_epi16_22834  // CHECK: @llvm.x86.sse2.psrai.w2835  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2836  return _mm_mask_srai_epi16(__W, __U, __A, __B); 2837}2838 2839__m128i test_mm_maskz_srai_epi16(__mmask8 __U, __m128i __A) {2840  // CHECK-LABEL: test_mm_maskz_srai_epi162841  // CHECK: @llvm.x86.sse2.psrai.w2842  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2843  return _mm_maskz_srai_epi16(__U, __A, 5); 2844}2845 2846__m128i test_mm_maskz_srai_epi16_2(__mmask8 __U, __m128i __A, unsigned int __B) {2847  // CHECK-LABEL: test_mm_maskz_srai_epi16_22848  // CHECK: @llvm.x86.sse2.psrai.w2849  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2850  return _mm_maskz_srai_epi16(__U, __A, __B); 2851}2852 2853__m256i test_mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A) {2854  // CHECK-LABEL: test_mm256_mask_srai_epi162855  // CHECK: @llvm.x86.avx2.psrai.w2856  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2857  return _mm256_mask_srai_epi16(__W, __U, __A, 5); 2858}2859TEST_CONSTEXPR(match_v16hi(_mm256_mask_srai_epi16((__m256i)(__v16hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115}, (__mmask16)0xAAAA, (__m256i)(__v16hi){0, -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 20), 100, 0Xffff, 102, 0, 104, 0, 106, 0, 108, 0, 110, 0, 112, 0, 114, 0));2860 2861__m256i test_mm256_mask_srai_epi16_2(__m256i __W, __mmask16 __U, __m256i __A, unsigned int __B) {2862  // CHECK-LABEL: test_mm256_mask_srai_epi16_22863  // CHECK: @llvm.x86.avx2.psrai.w2864  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2865  return _mm256_mask_srai_epi16(__W, __U, __A, __B); 2866}2867 2868__m256i test_mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A) {2869  // CHECK-LABEL: test_mm256_maskz_srai_epi162870  // CHECK: @llvm.x86.avx2.psrai.w2871  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2872  return _mm256_maskz_srai_epi16(__U, __A, 5); 2873}2874TEST_CONSTEXPR(match_v16hi(_mm256_maskz_srai_epi16((__mmask16)0x71, (__m256i)(__v16hi){0xff, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, 1), 0x7f, 0, 0, 0, 0x2, 0x2, 0x3, 0, 0, 0, 0, 0, 0, 0, 0, 0));2875 2876__m256i test_mm256_maskz_srai_epi16_2(__mmask16 __U, __m256i __A, unsigned int __B) {2877  // CHECK-LABEL: test_mm256_maskz_srai_epi16_22878  // CHECK: @llvm.x86.avx2.psrai.w2879  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2880  return _mm256_maskz_srai_epi16(__U, __A, __B); 2881}2882 2883__m128i test_mm_mask_mov_epi16(__m128i __W, __mmask8 __U, __m128i __A) {2884  // CHECK-LABEL: test_mm_mask_mov_epi162885  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2886  return _mm_mask_mov_epi16(__W, __U, __A); 2887}2888 2889__m128i test_mm_maskz_mov_epi16(__mmask8 __U, __m128i __A) {2890  // CHECK-LABEL: test_mm_maskz_mov_epi162891  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}2892  return _mm_maskz_mov_epi16(__U, __A); 2893}2894 2895__m256i test_mm256_mask_mov_epi16(__m256i __W, __mmask16 __U, __m256i __A) {2896  // CHECK-LABEL: test_mm256_mask_mov_epi162897  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2898  return _mm256_mask_mov_epi16(__W, __U, __A); 2899}2900 2901__m256i test_mm256_maskz_mov_epi16(__mmask16 __U, __m256i __A) {2902  // CHECK-LABEL: test_mm256_maskz_mov_epi162903  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}2904  return _mm256_maskz_mov_epi16(__U, __A); 2905}2906 2907__m128i test_mm_mask_mov_epi8(__m128i __W, __mmask16 __U, __m128i __A) {2908  // CHECK-LABEL: test_mm_mask_mov_epi82909  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2910  return _mm_mask_mov_epi8(__W, __U, __A); 2911}2912 2913__m128i test_mm_maskz_mov_epi8(__mmask16 __U, __m128i __A) {2914  // CHECK-LABEL: test_mm_maskz_mov_epi82915  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}2916  return _mm_maskz_mov_epi8(__U, __A); 2917}2918 2919__m256i test_mm256_mask_mov_epi8(__m256i __W, __mmask32 __U, __m256i __A) {2920  // CHECK-LABEL: test_mm256_mask_mov_epi82921  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2922  return _mm256_mask_mov_epi8(__W, __U, __A); 2923}2924 2925__m256i test_mm256_maskz_mov_epi8(__mmask32 __U, __m256i __A) {2926  // CHECK-LABEL: test_mm256_maskz_mov_epi82927  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}2928  return _mm256_maskz_mov_epi8(__U, __A); 2929}2930 2931__m128i test_mm_loadu_epi16(void const *__P) {2932  // CHECK-LABEL: test_mm_loadu_epi162933  // CHECK: load <2 x i64>, ptr %{{.*}}, align 1{{$}}2934  return _mm_loadu_epi16(__P);2935}2936 2937__m128i test_mm_mask_loadu_epi16(__m128i __W, __mmask8 __U, void const *__P) {2938  // CHECK-LABEL: test_mm_mask_loadu_epi162939  // CHECK: @llvm.masked.load.v8i16.p0(ptr align 1 %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})2940  return _mm_mask_loadu_epi16(__W, __U, __P); 2941}2942 2943__m128i test_mm_maskz_loadu_epi16(__mmask8 __U, void const *__P) {2944  // CHECK-LABEL: test_mm_maskz_loadu_epi162945  // CHECK: @llvm.masked.load.v8i16.p0(ptr align 1 %{{.*}}, <8 x i1> %{{.*}}, <8 x i16> %{{.*}})2946  return _mm_maskz_loadu_epi16(__U, __P); 2947}2948 2949__m256i test_mm256_loadu_epi16(void const *__P) {2950  // CHECK-LABEL: test_mm256_loadu_epi162951  // CHECK: load <4 x i64>, ptr %{{.*}}, align 1{{$}}2952  return _mm256_loadu_epi16(__P);2953}2954 2955__m256i test_mm256_mask_loadu_epi16(__m256i __W, __mmask16 __U, void const *__P) {2956  // CHECK-LABEL: test_mm256_mask_loadu_epi162957  // CHECK: @llvm.masked.load.v16i16.p0(ptr align 1 %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})2958  return _mm256_mask_loadu_epi16(__W, __U, __P); 2959}2960 2961__m256i test_mm256_maskz_loadu_epi16(__mmask16 __U, void const *__P) {2962  // CHECK-LABEL: test_mm256_maskz_loadu_epi162963  // CHECK: @llvm.masked.load.v16i16.p0(ptr align 1 %{{.*}}, <16 x i1> %{{.*}}, <16 x i16> %{{.*}})2964  return _mm256_maskz_loadu_epi16(__U, __P); 2965}2966 2967__m128i test_mm_loadu_epi8(void const *__P) {2968  // CHECK-LABEL: test_mm_loadu_epi82969  // CHECK: load <2 x i64>, ptr %{{.*}}, align 1{{$}}2970  return _mm_loadu_epi8(__P);2971}2972 2973__m128i test_mm_mask_loadu_epi8(__m128i __W, __mmask16 __U, void const *__P) {2974  // CHECK-LABEL: test_mm_mask_loadu_epi82975  // CHECK: @llvm.masked.load.v16i8.p0(ptr align 1 %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})2976  return _mm_mask_loadu_epi8(__W, __U, __P); 2977}2978 2979__m128i test_mm_maskz_loadu_epi8(__mmask16 __U, void const *__P) {2980  // CHECK-LABEL: test_mm_maskz_loadu_epi82981  // CHECK: @llvm.masked.load.v16i8.p0(ptr align 1 %{{.*}}, <16 x i1> %{{.*}}, <16 x i8> %{{.*}})2982  return _mm_maskz_loadu_epi8(__U, __P); 2983}2984 2985__m256i test_mm256_loadu_epi8(void const *__P) {2986  // CHECK-LABEL: test_mm256_loadu_epi82987  // CHECK: load <4 x i64>, ptr %{{.*}}, align 1{{$}}2988  return _mm256_loadu_epi8(__P);2989}2990 2991__m256i test_mm256_mask_loadu_epi8(__m256i __W, __mmask32 __U, void const *__P) {2992  // CHECK-LABEL: test_mm256_mask_loadu_epi82993  // CHECK: @llvm.masked.load.v32i8.p0(ptr align 1 %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})2994  return _mm256_mask_loadu_epi8(__W, __U, __P); 2995}2996 2997__m256i test_mm256_maskz_loadu_epi8(__mmask32 __U, void const *__P) {2998  // CHECK-LABEL: test_mm256_maskz_loadu_epi82999  // CHECK: @llvm.masked.load.v32i8.p0(ptr align 1 %{{.*}}, <32 x i1> %{{.*}}, <32 x i8> %{{.*}})3000  return _mm256_maskz_loadu_epi8(__U, __P); 3001}3002 3003void test_mm_storeu_epi16(void *__p, __m128i __a) {3004  // CHECK-LABEL: test_mm_storeu_epi163005  // check: store <2 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}3006  return _mm_storeu_epi16(__p, __a);3007}3008 3009void test_mm_mask_storeu_epi16(void *__P, __mmask8 __U, __m128i __A) {3010  // CHECK-LABEL: test_mm_mask_storeu_epi163011  // CHECK: @llvm.masked.store.v8i16.p0(<8 x i16> %{{.*}}, ptr align 1 %{{.*}}, <8 x i1> %{{.*}})3012  return _mm_mask_storeu_epi16(__P, __U, __A); 3013}3014 3015void test_mm256_storeu_epi16(void *__P, __m256i __A) {3016  // CHECK-LABEL: test_mm256_storeu_epi163017  // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}3018  return _mm256_storeu_epi16(__P, __A);3019}3020 3021void test_mm256_mask_storeu_epi16(void *__P, __mmask16 __U, __m256i __A) {3022  // CHECK-LABEL: test_mm256_mask_storeu_epi163023  // CHECK: @llvm.masked.store.v16i16.p0(<16 x i16> %{{.*}}, ptr align 1 %{{.*}}, <16 x i1> %{{.*}})3024  return _mm256_mask_storeu_epi16(__P, __U, __A); 3025}3026 3027void test_mm_storeu_epi8(void *__p, __m128i __a) {3028  // CHECK-LABEL: test_mm_storeu_epi83029  // check: store <2 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}3030  return _mm_storeu_epi8(__p, __a);3031}3032 3033void test_mm_mask_storeu_epi8(void *__P, __mmask16 __U, __m128i __A) {3034  // CHECK-LABEL: test_mm_mask_storeu_epi83035  // CHECK: @llvm.masked.store.v16i8.p0(<16 x i8> %{{.*}}, ptr align 1 %{{.*}}, <16 x i1> %{{.*}})3036  return _mm_mask_storeu_epi8(__P, __U, __A); 3037}3038 3039void test_mm256_storeu_epi8(void *__P, __m256i __A) {3040  // CHECK-LABEL: test_mm256_storeu_epi83041  // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}3042  return _mm256_storeu_epi8(__P, __A);3043}3044 3045void test_mm256_mask_storeu_epi8(void *__P, __mmask32 __U, __m256i __A) {3046  // CHECK-LABEL: test_mm256_mask_storeu_epi83047  // CHECK: @llvm.masked.store.v32i8.p0(<32 x i8> %{{.*}}, ptr align 1 %{{.*}}, <32 x i1> %{{.*}})3048  return _mm256_mask_storeu_epi8(__P, __U, __A); 3049}3050__mmask16 test_mm_test_epi8_mask(__m128i __A, __m128i __B) {3051  // CHECK-LABEL: test_mm_test_epi8_mask3052  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3053  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}3054  return _mm_test_epi8_mask(__A, __B); 3055}3056 3057TEST_CONSTEXPR(_mm_test_epi8_mask(3058    (__m128i)(__v16qi){1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},3059    (__m128i)(__v16qi){1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}3060)3061== (__mmask16)0xfffb);3062 3063__mmask16 test_mm_mask_test_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {3064  // CHECK-LABEL: test_mm_mask_test_epi8_mask3065  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3066  // CHECK: icmp ne <16 x i8> %{{.*}}, %{{.*}}3067  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}3068  return _mm_mask_test_epi8_mask(__U, __A, __B); 3069}3070TEST_CONSTEXPR(_mm_mask_test_epi8_mask(3071    0xFFFF,3072    (__m128i)(__v16qi){1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},3073    (__m128i)(__v16qi){1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}3074)3075== (__mmask16)0xfffb);3076 3077__mmask32 test_mm256_test_epi8_mask(__m256i __A, __m256i __B) {3078  // CHECK-LABEL: test_mm256_test_epi8_mask3079  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3080  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}3081  return _mm256_test_epi8_mask(__A, __B); 3082}3083TEST_CONSTEXPR(_mm256_test_epi8_mask(3084    (__m256i)(__v32qi){1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},3085    (__m256i)(__v32qi){1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}3086)3087== (__mmask32)0xfffbfffb);3088 3089__mmask32 test_mm256_mask_test_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {3090  // CHECK-LABEL: test_mm256_mask_test_epi8_mask3091  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3092  // CHECK: icmp ne <32 x i8> %{{.*}}, %{{.*}}3093  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}3094  return _mm256_mask_test_epi8_mask(__U, __A, __B); 3095}3096 3097__mmask8 test_mm_test_epi16_mask(__m128i __A, __m128i __B) {3098  // CHECK-LABEL: test_mm_test_epi16_mask3099  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3100  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}3101  return _mm_test_epi16_mask(__A, __B); 3102}3103 3104__mmask8 test_mm_mask_test_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {3105  // CHECK-LABEL: test_mm_mask_test_epi16_mask3106  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3107  // CHECK: icmp ne <8 x i16> %{{.*}}, %{{.*}}3108  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}3109  return _mm_mask_test_epi16_mask(__U, __A, __B); 3110}3111 3112__mmask16 test_mm256_test_epi16_mask(__m256i __A, __m256i __B) {3113  // CHECK-LABEL: test_mm256_test_epi16_mask3114  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3115  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}3116  return _mm256_test_epi16_mask(__A, __B); 3117}3118 3119__mmask16 test_mm256_mask_test_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {3120  // CHECK-LABEL: test_mm256_mask_test_epi16_mask3121  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3122  // CHECK: icmp ne <16 x i16> %{{.*}}, %{{.*}}3123  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}3124  return _mm256_mask_test_epi16_mask(__U, __A, __B); 3125}3126 3127__mmask16 test_mm_testn_epi8_mask(__m128i __A, __m128i __B) {3128  // CHECK-LABEL: test_mm_testn_epi8_mask3129  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3130  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}3131  return _mm_testn_epi8_mask(__A, __B); 3132}3133 3134TEST_CONSTEXPR(_mm_testn_epi8_mask(3135    (__m128i)(__v16qi){1, 2, 77, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 16, 16},3136    (__m128i)(__v16qi){2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15}3137)3138== (__mmask16)0xe001);3139 3140__mmask16 test_mm_mask_testn_epi8_mask(__mmask16 __U, __m128i __A, __m128i __B) {3141  // CHECK-LABEL: test_mm_mask_testn_epi8_mask3142  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3143  // CHECK: icmp eq <16 x i8> %{{.*}}, %{{.*}}3144  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}3145  return _mm_mask_testn_epi8_mask(__U, __A, __B); 3146}3147 3148__mmask32 test_mm256_testn_epi8_mask(__m256i __A, __m256i __B) {3149  // CHECK-LABEL: test_mm256_testn_epi8_mask3150  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3151  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}3152  return _mm256_testn_epi8_mask(__A, __B); 3153}3154 3155__mmask32 test_mm256_mask_testn_epi8_mask(__mmask32 __U, __m256i __A, __m256i __B) {3156  // CHECK-LABEL: test_mm256_mask_testn_epi8_mask3157  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3158  // CHECK: icmp eq <32 x i8> %{{.*}}, %{{.*}}3159  // CHECK: and <32 x i1> %{{.*}}, %{{.*}}3160  return _mm256_mask_testn_epi8_mask(__U, __A, __B); 3161}3162 3163__mmask8 test_mm_testn_epi16_mask(__m128i __A, __m128i __B) {3164  // CHECK-LABEL: test_mm_testn_epi16_mask3165  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3166  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}3167  return _mm_testn_epi16_mask(__A, __B); 3168}3169 3170__mmask8 test_mm_mask_testn_epi16_mask(__mmask8 __U, __m128i __A, __m128i __B) {3171  // CHECK-LABEL: test_mm_mask_testn_epi16_mask3172  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}3173  // CHECK: icmp eq <8 x i16> %{{.*}}, %{{.*}}3174  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}3175  return _mm_mask_testn_epi16_mask(__U, __A, __B); 3176}3177 3178__mmask16 test_mm256_testn_epi16_mask(__m256i __A, __m256i __B) {3179  // CHECK-LABEL: test_mm256_testn_epi16_mask3180  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3181  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}3182  return _mm256_testn_epi16_mask(__A, __B); 3183}3184 3185__mmask16 test_mm256_mask_testn_epi16_mask(__mmask16 __U, __m256i __A, __m256i __B) {3186  // CHECK-LABEL: test_mm256_mask_testn_epi16_mask3187  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}3188  // CHECK: icmp eq <16 x i16> %{{.*}}, %{{.*}}3189  // CHECK: and <16 x i1> %{{.*}}, %{{.*}}3190  return _mm256_mask_testn_epi16_mask(__U, __A, __B); 3191}3192 3193__mmask16 test_mm_movepi8_mask(__m128i __A) {3194  // CHECK-LABEL: test_mm_movepi8_mask3195  // CHECK: [[CMP:%.*]] = icmp slt <16 x i8> %{{.*}}, zeroinitializer3196  return _mm_movepi8_mask(__A); 3197}3198 3199TEST_CONSTEXPR(_mm_movepi8_mask(3200    ((__m128i)(__v16qi){0, 1, char(129), 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15})) == (__mmask16)0x0004); 3201 3202__mmask32 test_mm256_movepi8_mask(__m256i __A) {3203  // CHECK-LABEL: test_mm256_movepi8_mask3204  // CHECK: [[CMP:%.*]] = icmp slt <32 x i8> %{{.*}}, zeroinitializer3205  return _mm256_movepi8_mask(__A); 3206}3207 3208TEST_CONSTEXPR(_mm256_movepi8_mask(3209    ((__m256i)(__v32qi){0, 1, char(255), 3, 4, 5, 6, 7,3210                        8, 9, 10, 11, 12, 13, 14, 15,3211                        16, 17, 18, 19, 20, 21, 22, 23,3212                        24, 25, 26, 27, 28, 29, 30, char(128)})3213) == (__mmask32)0x80000004);3214 3215__m128i test_mm_movm_epi8(__mmask16 __A) {3216  // CHECK-LABEL: test_mm_movm_epi83217  // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>3218  // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i8>3219  return _mm_movm_epi8(__A); 3220}3221 3222__m256i test_mm256_movm_epi8(__mmask32 __A) {3223  // CHECK-LABEL: test_mm256_movm_epi83224  // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>3225  // CHECK: %vpmovm2.i = sext <32 x i1> %{{.*}} to <32 x i8>3226  return _mm256_movm_epi8(__A); 3227}3228 3229__m128i test_mm_movm_epi16(__mmask8 __A) {3230  // CHECK-LABEL: test_mm_movm_epi163231  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>3232  // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i16>3233  return _mm_movm_epi16(__A); 3234}3235 3236__m256i test_mm256_movm_epi16(__mmask16 __A) {3237  // CHECK-LABEL: test_mm256_movm_epi163238  // CHECK: %{{.*}} = bitcast i16 %{{.*}} to <16 x i1>3239  // CHECK: %vpmovm2.i = sext <16 x i1> %{{.*}} to <16 x i16>3240  return _mm256_movm_epi16(__A); 3241}3242 3243__m128i test_mm_mask_broadcastb_epi8(__m128i __O, __mmask16 __M, __m128i __A) {3244  // CHECK-LABEL: test_mm_mask_broadcastb_epi83245  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer3246  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}3247  return _mm_mask_broadcastb_epi8(__O, __M, __A);3248}3249TEST_CONSTEXPR(match_v16qi(_mm_mask_broadcastb_epi8((__m128i)(__v16qs){0,1,2,3,4,5,6,7,56,57,58,59,60,61,62,63},(__mmask16)0xAAAA,(__m128i)(__v16qs){-120,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),0,-120,2,-120,4,-120,6,-120,56,-120,58,-120,60,-120,62,-120));3250 3251__m128i test_mm_maskz_broadcastb_epi8(__mmask16 __M, __m128i __A) {3252  // CHECK-LABEL: test_mm_maskz_broadcastb_epi83253  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 x i32> zeroinitializer3254  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}3255  return _mm_maskz_broadcastb_epi8(__M, __A);3256}3257TEST_CONSTEXPR(match_v16qi(_mm_maskz_broadcastb_epi8((__mmask16)0xAAAA,(__m128i)(__v16qs){-120,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120));3258 3259__m256i test_mm256_mask_broadcastb_epi8(__m256i __O, __mmask32 __M, __m128i __A) {3260  // CHECK-LABEL: test_mm256_mask_broadcastb_epi83261  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer3262  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}3263  return _mm256_mask_broadcastb_epi8(__O, __M, __A);3264}3265TEST_CONSTEXPR(match_v32qi(_mm256_mask_broadcastb_epi8((__m256i)(__v32qs){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63},(__mmask32)0xAAAAAAAA,(__m128i)(__v16qs){-120,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),0,-120,2,-120,4,-120,6,-120,8,-120,10,-120,12,-120,14,-120,48,-120,50,-120,52,-120,54,-120,56,-120,58,-120,60,-120,62,-120));3266 3267__m256i test_mm256_maskz_broadcastb_epi8(__mmask32 __M, __m128i __A) {3268  // CHECK-LABEL: test_mm256_maskz_broadcastb_epi83269  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <32 x i32> zeroinitializer3270  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}3271  return _mm256_maskz_broadcastb_epi8(__M, __A);3272}3273TEST_CONSTEXPR(match_v32qi(_mm256_maskz_broadcastb_epi8((__mmask32)0xAAAAAAAA,(__m128i)(__v16qs){-120,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120));3274 3275__m128i test_mm_mask_broadcastw_epi16(__m128i __O, __mmask8 __M, __m128i __A) {3276  // CHECK-LABEL: test_mm_mask_broadcastw_epi163277  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer3278  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3279  return _mm_mask_broadcastw_epi16(__O, __M, __A);3280}3281TEST_CONSTEXPR(match_v8hi(_mm_mask_broadcastw_epi16((__m128i)(__v8hi){0,1,2,3,4,5,6,7},(__mmask8)0xAA,(__m128i)(__v8hi){-120,1,2,3,4,5,6,7}),0,-120,2,-120,4,-120,6,-120));3282 3283__m128i test_mm_maskz_broadcastw_epi16(__mmask8 __M, __m128i __A) {3284  // CHECK-LABEL: test_mm_maskz_broadcastw_epi163285  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <8 x i32> zeroinitializer3286  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3287  return _mm_maskz_broadcastw_epi16(__M, __A);3288}3289TEST_CONSTEXPR(match_v8hi(_mm_maskz_broadcastw_epi16((__mmask8)0xAA,(__m128i)(__v8hi){-120,1,2,3,4,5,6,7}),0,-120,0,-120,0,-120,0,-120));3290 3291__m256i test_mm256_mask_broadcastw_epi16(__m256i __O, __mmask16 __M, __m128i __A) {3292  // CHECK-LABEL: test_mm256_mask_broadcastw_epi163293  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer3294  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3295  return _mm256_mask_broadcastw_epi16(__O, __M, __A);3296}3297TEST_CONSTEXPR(match_v16hi(_mm256_mask_broadcastw_epi16((__m256i)(__v16hi){0,1,2,3,4,5,6,7,24,25,26,27,28,29,30,31},(__mmask16)0xAAAA,(__m128i)(__v8hi){-120,1,2,3,4,5,6,7}),0,-120,2,-120,4,-120,6,-120,24,-120,26,-120,28,-120,30,-120));3298 3299__m256i test_mm256_maskz_broadcastw_epi16(__mmask16 __M, __m128i __A) {3300  // CHECK-LABEL: test_mm256_maskz_broadcastw_epi163301  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> %{{.*}}, <16 x i32> zeroinitializer3302  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3303  return _mm256_maskz_broadcastw_epi16(__M, __A);3304}3305TEST_CONSTEXPR(match_v16hi(_mm256_maskz_broadcastw_epi16((__mmask16)0xAAAA,(__m128i)(__v8hi){-120,1,2,3,4,5,6,7}),0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120,0,-120));3306 3307__m128i test_mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A){3308  // CHECK-LABEL: test_mm_mask_set1_epi83309  // CHECK: insertelement <16 x i8> poison, i8 %{{.*}}, i32 03310  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13311  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 23312  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 33313  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 43314  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 53315  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 63316  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 73317  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 83318  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 93319  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 103320  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 113321  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 123322  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 133323  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 143324  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 153325  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}3326  return _mm_mask_set1_epi8(__O, __M, __A);3327}3328TEST_CONSTEXPR(match_v16qi(_mm_mask_set1_epi8((__m128i)(__v16qi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},(__mmask16)0xAAAA,(char)42),1,42,3,42,5,42,7,42,9,42,11,42,13,42,15,42));3329 3330__m128i test_mm_maskz_set1_epi8 ( __mmask16 __M, char __A){3331  // CHECK-LABEL: test_mm_maskz_set1_epi83332  // CHECK: insertelement <16 x i8> poison, i8 %{{.*}}, i32 03333  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 13334  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 23335  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 33336  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 43337  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 53338  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 63339  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 73340  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 83341  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 93342  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 103343  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 113344  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 123345  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 133346  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 143347  // CHECK: insertelement <16 x i8> %{{.*}}, i8 %{{.*}}, i32 153348  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}3349  return _mm_maskz_set1_epi8( __M, __A);3350}3351TEST_CONSTEXPR(match_v16qi(_mm_maskz_set1_epi8((__mmask16)0xAAAA,(char)42),0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42));3352 3353__m256i test_mm256_mask_set1_epi8(__m256i __O, __mmask32 __M, char __A) {3354  // CHECK-LABEL: test_mm256_mask_set1_epi83355  // CHECK: insertelement <32 x i8> poison, i8 %{{.*}}, i32 03356  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13357  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23358  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 33359  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 43360  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 53361  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 63362  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 73363  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 83364  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 93365  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 103366  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 113367  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 123368  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 133369  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 143370  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 153371  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 163372  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 173373  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 183374  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 193375  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 203376  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 213377  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 223378  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 233379  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 243380  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 253381  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 263382  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 273383  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 283384  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 293385  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 303386  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 313387  // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}3388  return _mm256_mask_set1_epi8(__O, __M, __A);3389}3390TEST_CONSTEXPR(match_v32qi(_mm256_mask_set1_epi8((__m256i)(__v32qi){1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64},(__mmask32)0xAAAAAAAA,(char)42),1,42,3,42,5,42,7,42,9,42,11,42,13,42,15,42,49,42,51,42,53,42,55,42,57,42,59,42,61,42,63,42));3391 3392__m256i test_mm256_maskz_set1_epi8( __mmask32 __M, char __A) {3393  // CHECK-LABEL: test_mm256_maskz_set1_epi83394  // CHECK: insertelement <32 x i8> poison, i8 %{{.*}}, i32 03395  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 13396  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 23397  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 33398  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 43399  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 53400  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 63401  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 73402  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 83403  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 93404  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 103405  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 113406  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 123407  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 133408  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 143409  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 153410  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 163411  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 173412  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 183413  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 193414  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 203415  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 213416  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 223417  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 233418  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 243419  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 253420  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 263421  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 273422  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 283423  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 293424  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 303425  // CHECK: insertelement <32 x i8> %{{.*}}, i8 %{{.*}}, i32 313426  // CHECK:  select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}3427  return _mm256_maskz_set1_epi8( __M, __A);3428}3429TEST_CONSTEXPR( match_v32qi( _mm256_maskz_set1_epi8( (__mmask32)0xAAAAAAAA, (char)42 ), 0,   42,  0, 42, 0,  42,  0,  42, 0,   42,  0, 42, 0,  42,  0,  42, 0,   42,  0, 42, 0,  42,  0,  42, 0,   42,  0, 42, 0,  42,  0,  42 ) );3430 3431__m256i test_mm256_mask_set1_epi16(__m256i __O, __mmask16 __M, short __A) {3432  // CHECK-LABEL: test_mm256_mask_set1_epi163433  // CHECK: insertelement <16 x i16> poison, i16 %{{.*}}, i32 03434  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13435  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 23436  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 33437  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 43438  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 53439  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 63440  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 73441  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 83442  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 93443  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 103444  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 113445  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 123446  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 133447  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 143448  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 153449  // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3450  return _mm256_mask_set1_epi16(__O, __M, __A); 3451}3452TEST_CONSTEXPR(match_v16hi(_mm256_mask_set1_epi16((__m256i)(__v16hi){1,2,3,4,5,6,7,8,25,26,27,28,29,30,31,32},(__mmask16)0xAAAA,42),1,42,3,42,5,42,7,42,25,42,27,42,29,42,31,42));3453 3454__m256i test_mm256_maskz_set1_epi16(__mmask16 __M, short __A) {3455  // CHECK-LABEL: test_mm256_maskz_set1_epi163456  // CHECK: insertelement <16 x i16> poison, i16 %{{.*}}, i32 03457  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 13458  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 23459  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 33460  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 43461  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 53462  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 63463  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 73464  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 83465  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 93466  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 103467  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 113468  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 123469  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 133470  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 143471  // CHECK: insertelement <16 x i16> %{{.*}}, i16 %{{.*}}, i32 153472  // CHECK:  select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3473  return _mm256_maskz_set1_epi16(__M, __A); 3474}3475TEST_CONSTEXPR(match_v16hi(_mm256_maskz_set1_epi16((__mmask16)0xAAAA,42),0,42,0,42,0,42,0,42,0,42,0,42,0,42,0,42));3476 3477__m128i test_mm_mask_set1_epi16(__m128i __O, __mmask8 __M, short __A) {3478  // CHECK-LABEL: test_mm_mask_set1_epi163479  // CHECK: insertelement <8 x i16> poison, i16 %{{.*}}, i32 03480  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 13481  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 23482  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 33483  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 43484  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 53485  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 63486  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 73487  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3488  return _mm_mask_set1_epi16(__O, __M, __A); 3489}3490TEST_CONSTEXPR(match_v8hi(_mm_mask_set1_epi16((__m128i)(__v8hi){1,2,3,4,5,6,7,8},(__mmask8)0xAA,42),1,42,3,42,5,42,7,42));3491 3492__m128i test_mm_maskz_set1_epi16(__mmask8 __M, short __A) {3493  // CHECK-LABEL: test_mm_maskz_set1_epi163494  // CHECK: insertelement <8 x i16> poison, i16 %{{.*}}, i32 03495  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 13496  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 23497  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 33498  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 43499  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 53500  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 63501  // CHECK: insertelement <8 x i16> %{{.*}}, i16 %{{.*}}, i32 73502  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3503  return _mm_maskz_set1_epi16(__M, __A); 3504}3505TEST_CONSTEXPR(match_v8hi(_mm_maskz_set1_epi16((__mmask8)0xAA,42),0,42,0,42,0,42,0,42));3506 3507__m128i test_mm_permutexvar_epi16(__m128i __A, __m128i __B) {3508  // CHECK-LABEL: test_mm_permutexvar_epi163509  // CHECK: @llvm.x86.avx512.permvar.hi.1283510  return _mm_permutexvar_epi16(__A, __B);3511}3512 3513TEST_CONSTEXPR(match_v8hi(_mm_permutexvar_epi16((__m128i)(__v8hi){7, 6, 5, 4, 3, 2, 1, 0}, (__m128i)(__v8hi){10, 11, 12, 13, 14, 15, 16, 17}), 17, 16, 15, 14, 13, 12, 11, 10));3514TEST_CONSTEXPR(match_v8hi(_mm_permutexvar_epi16((__m128i)(__v8hi){0, 0, 0, 0, 0, 0, 0, 0}, (__m128i)(__v8hi){100, 101, 102, 103, 104, 105, 106, 107}), 100, 100, 100, 100, 100, 100, 100, 100));3515 3516__m128i test_mm_maskz_permutexvar_epi16(__mmask8 __M, __m128i __A, __m128i __B) {3517  // CHECK-LABEL: test_mm_maskz_permutexvar_epi163518  // CHECK: @llvm.x86.avx512.permvar.hi.1283519  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3520  return _mm_maskz_permutexvar_epi16(__M, __A, __B); 3521}3522 3523__m128i test_mm_mask_permutexvar_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {3524  // CHECK-LABEL: test_mm_mask_permutexvar_epi163525  // CHECK: @llvm.x86.avx512.permvar.hi.1283526  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3527  return _mm_mask_permutexvar_epi16(__W, __M, __A, __B);3528}3529 3530TEST_CONSTEXPR(match_v8hi(_mm_mask_permutexvar_epi16((__m128i)(__v8hi){99, 99, 99, 99, 99, 99, 99, 99}, 0xFF, (__m128i)(__v8hi){7, 6, 5, 4, 3, 2, 1, 0}, (__m128i)(__v8hi){10, 11, 12, 13, 14, 15, 16, 17}), 17, 16, 15, 14, 13, 12, 11, 10));3531TEST_CONSTEXPR(match_v8hi(_mm_mask_permutexvar_epi16((__m128i)(__v8hi){99, 99, 99, 99, 99, 99, 99, 99}, 0xAA, (__m128i)(__v8hi){7, 6, 5, 4, 3, 2, 1, 0}, (__m128i)(__v8hi){10, 11, 12, 13, 14, 15, 16, 17}), 99, 16, 99, 14, 99, 12, 99, 10));3532TEST_CONSTEXPR(match_v8hi(_mm_maskz_permutexvar_epi16(0xFF, (__m128i)(__v8hi){7, 6, 5, 4, 3, 2, 1, 0}, (__m128i)(__v8hi){10, 11, 12, 13, 14, 15, 16, 17}), 17, 16, 15, 14, 13, 12, 11, 10));3533TEST_CONSTEXPR(match_v8hi(_mm_maskz_permutexvar_epi16(0xAA, (__m128i)(__v8hi){7, 6, 5, 4, 3, 2, 1, 0}, (__m128i)(__v8hi){10, 11, 12, 13, 14, 15, 16, 17}), 0, 16, 0, 14, 0, 12, 0, 10));3534 3535__m256i test_mm256_permutexvar_epi16(__m256i __A, __m256i __B) {3536  // CHECK-LABEL: test_mm256_permutexvar_epi163537  // CHECK: @llvm.x86.avx512.permvar.hi.2563538  return _mm256_permutexvar_epi16(__A, __B);3539}3540 3541TEST_CONSTEXPR(match_v16hi(_mm256_permutexvar_epi16((__m256i)(__v16hi){15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v16hi){10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}), 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10));3542TEST_CONSTEXPR(match_v16hi(_mm256_permutexvar_epi16((__m256i)(__v16hi){0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, (__m256i)(__v16hi){100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115}), 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100));3543 3544__m256i test_mm256_maskz_permutexvar_epi16(__mmask16 __M, __m256i __A, __m256i __B) {3545  // CHECK-LABEL: test_mm256_maskz_permutexvar_epi163546  // CHECK: @llvm.x86.avx512.permvar.hi.2563547  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3548  return _mm256_maskz_permutexvar_epi16(__M, __A, __B); 3549}3550 3551__m256i test_mm256_mask_permutexvar_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B) {3552  // CHECK-LABEL: test_mm256_mask_permutexvar_epi163553  // CHECK: @llvm.x86.avx512.permvar.hi.2563554  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3555  return _mm256_mask_permutexvar_epi16(__W, __M, __A, __B);3556}3557 3558TEST_CONSTEXPR(match_v16hi(_mm256_mask_permutexvar_epi16((__m256i)(__v16hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0xFFFF, (__m256i)(__v16hi){15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v16hi){10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}), 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10));3559TEST_CONSTEXPR(match_v16hi(_mm256_mask_permutexvar_epi16((__m256i)(__v16hi){99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99}, 0xAAAA, (__m256i)(__v16hi){15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v16hi){10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}), 99, 24, 99, 22, 99, 20, 99, 18, 99, 16, 99, 14, 99, 12, 99, 10));3560TEST_CONSTEXPR(match_v16hi(_mm256_maskz_permutexvar_epi16(0xFFFF, (__m256i)(__v16hi){15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v16hi){10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}), 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10));3561TEST_CONSTEXPR(match_v16hi(_mm256_maskz_permutexvar_epi16(0xAAAA, (__m256i)(__v16hi){15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v16hi){10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25}), 0, 24, 0, 22, 0, 20, 0, 18, 0, 16, 0, 14, 0, 12, 0, 10));3562 3563__m128i test_mm_mask_alignr_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {3564  // CHECK-LABEL: test_mm_mask_alignr_epi83565  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 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 16, i32 17>3566  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}3567  return _mm_mask_alignr_epi8(__W, __U, __A, __B, 2); 3568}3569TEST_CONSTEXPR(match_v16qi(_mm_mask_alignr_epi8(((__m128i)(__v16qs){127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}), (__mmask16)0x000f, ((__m128i)(__v16qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), ((__m128i)(__v16qs){17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), 2), 19, 20, 21, 22, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127));3570 3571__m128i test_mm_maskz_alignr_epi8(__mmask16 __U, __m128i __A, __m128i __B) {3572  // CHECK-LABEL: test_mm_maskz_alignr_epi83573  // CHECK: shufflevector <16 x i8> %{{.*}}, <16 x i8> %{{.*}}, <16 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 16, i32 17>3574  // CHECK: select <16 x i1> %{{.*}}, <16 x i8> %{{.*}}, <16 x i8> %{{.*}}3575  return _mm_maskz_alignr_epi8(__U, __A, __B, 2); 3576}3577TEST_CONSTEXPR(match_v16qi( _mm_maskz_alignr_epi8((__mmask16)0x000f, ((__m128i)(__v16qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}), ((__m128i)(__v16qs){17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}),2), 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));3578 3579__m256i test_mm256_mask_alignr_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {3580  // CHECK-LABEL: test_mm256_mask_alignr_epi83581  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 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 32, i32 33, 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 48, i32 49>3582  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}3583  return _mm256_mask_alignr_epi8(__W, __U, __A, __B, 2); 3584}3585TEST_CONSTEXPR(match_v32qi(_mm256_mask_alignr_epi8(((__m256i)(__v32qs){127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127}), (__mmask32)0xf000000f, ((__m256i)(__v32qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), ((__m256i)(__v32qs){33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}), 2), 35, 36, 37, 38, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 63, 64, 17, 18));3586 3587__m256i test_mm256_maskz_alignr_epi8(__mmask32 __U, __m256i __A, __m256i __B) {3588  // CHECK-LABEL: test_mm256_maskz_alignr_epi83589  // CHECK: shufflevector <32 x i8> %{{.*}}, <32 x i8> %{{.*}}, <32 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 32, i32 33, 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 48, i32 49>3590  // CHECK: select <32 x i1> %{{.*}}, <32 x i8> %{{.*}}, <32 x i8> %{{.*}}3591  return _mm256_maskz_alignr_epi8(__U, __A, __B, 2); 3592}3593TEST_CONSTEXPR(match_v32qi(_mm256_maskz_alignr_epi8((__mmask32)0xf000000f, ((__m256i)(__v32qs){1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32}), ((__m256i)(__v32qs){33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64}), 2), 35, 36, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 64, 17, 18));3594 3595__m128i test_mm_dbsad_epu8(__m128i __A, __m128i __B) {3596  // CHECK-LABEL: test_mm_dbsad_epu83597  // CHECK: @llvm.x86.avx512.dbpsadbw.1283598  return _mm_dbsad_epu8(__A, __B, 170); 3599}3600 3601__m128i test_mm_mask_dbsad_epu8(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {3602  // CHECK-LABEL: test_mm_mask_dbsad_epu83603  // CHECK: @llvm.x86.avx512.dbpsadbw.1283604  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3605  return _mm_mask_dbsad_epu8(__W, __U, __A, __B, 170); 3606}3607 3608__m128i test_mm_maskz_dbsad_epu8(__mmask8 __U, __m128i __A, __m128i __B) {3609  // CHECK-LABEL: test_mm_maskz_dbsad_epu83610  // CHECK: @llvm.x86.avx512.dbpsadbw.1283611  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3612  return _mm_maskz_dbsad_epu8(__U, __A, __B, 170); 3613}3614 3615__m256i test_mm256_dbsad_epu8(__m256i __A, __m256i __B) {3616  // CHECK-LABEL: test_mm256_dbsad_epu83617  // CHECK: @llvm.x86.avx512.dbpsadbw.2563618  return _mm256_dbsad_epu8(__A, __B, 170); 3619}3620 3621__m256i test_mm256_mask_dbsad_epu8(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {3622  // CHECK-LABEL: test_mm256_mask_dbsad_epu83623  // CHECK: @llvm.x86.avx512.dbpsadbw.2563624  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3625  return _mm256_mask_dbsad_epu8(__W, __U, __A, __B, 170); 3626}3627 3628__m256i test_mm256_maskz_dbsad_epu8(__mmask16 __U, __m256i __A, __m256i __B) {3629  // CHECK-LABEL: test_mm256_maskz_dbsad_epu83630  // CHECK: @llvm.x86.avx512.dbpsadbw.2563631  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3632  return _mm256_maskz_dbsad_epu8(__U, __A, __B, 170); 3633}3634__mmask8 test_mm_movepi16_mask(__m128i __A) {3635  // CHECK-LABEL: test_mm_movepi16_mask3636  // CHECK: [[CMP:%.*]] = icmp slt <8 x i16> %{{.*}}, zeroinitializer3637  return _mm_movepi16_mask(__A); 3638}3639TEST_CONSTEXPR(_mm_movepi16_mask(((__m128i)(__v8hi){0, 1, -1, 3, 4, 5, 6, 7})) == (__mmask8)0x04);3640 3641__mmask16 test_mm256_movepi16_mask(__m256i __A) {3642  // CHECK-LABEL: test_mm256_movepi16_mask3643  // CHECK: [[CMP:%.*]] = icmp slt <16 x i16> %{{.*}}, zeroinitializer3644  return _mm256_movepi16_mask(__A); 3645}3646 3647TEST_CONSTEXPR(_mm256_movepi16_mask(3648    ((__m256i)(__v16hi){0, 1, short(32769), 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, short(65535)})) == (__mmask16)0x8004);3649 3650__m128i test_mm_mask_shufflehi_epi16(__m128i __W, __mmask8 __U, __m128i __A) {3651  // CHECK-LABEL: test_mm_mask_shufflehi_epi163652  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>3653  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3654  return _mm_mask_shufflehi_epi16(__W, __U, __A, 5); 3655}3656 3657TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflehi_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0xF0u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),100,101,102,103,5,5,4,4));3658TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflehi_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0x00u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),100,101,102,103,104,105,106,107));3659TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflehi_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0xFFu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,1,2,3,5,5,4,4));3660TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflehi_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0x0Fu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,1,2,3,104,105,106,107));3661TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflehi_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0x55u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,101,2,103,5,105,4,107));3662TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflehi_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0xAAu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),100,1,102,3,104,5,106,4));3663 3664__m128i test_mm_maskz_shufflehi_epi16(__mmask8 __U, __m128i __A) {3665  // CHECK-LABEL: test_mm_maskz_shufflehi_epi163666  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 5, i32 5, i32 4, i32 4>3667  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3668  return _mm_maskz_shufflehi_epi16(__U, __A, 5); 3669}3670 3671TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflehi_epi16(0xF0u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,0,0,0,5,5,4,4));3672TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflehi_epi16(0x00u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,0,0,0,0,0,0,0));3673TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflehi_epi16(0xFFu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,1,2,3,5,5,4,4));3674TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflehi_epi16(0x0Fu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,1,2,3,0,0,0,0));3675TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflehi_epi16(0x55u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,0,2,0,5,0,4,0));3676TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflehi_epi16(0xAAu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,1,0,3,0,5,0,4));3677 3678__m128i test_mm_mask_shufflelo_epi16(__m128i __W, __mmask8 __U, __m128i __A) {3679  // CHECK-LABEL: test_mm_mask_shufflelo_epi163680  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>3681  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3682  return _mm_mask_shufflelo_epi16(__W, __U, __A, 5); 3683}3684 3685TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflelo_epi16(((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),0xFF,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),1,1,0,0,4,5,6,7));3686TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflelo_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0x00u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),100,101,102,103,104,105,106,107));3687TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflelo_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0x0Fu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),1,1,0,0,104,105,106,107));3688TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflelo_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0xF0u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),100,101,102,103,4,5,6,7));3689TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflelo_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0xAAu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),100,1,102,0,104,5,106,7));3690TEST_CONSTEXPR(match_v8hi(_mm_mask_shufflelo_epi16(((__m128i)(__v8hi){100,101,102,103,104,105,106,107}),0x55u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),1,101,0,103,4,105,6,107));3691 3692__m128i test_mm_maskz_shufflelo_epi16(__mmask8 __U, __m128i __A) {3693  // CHECK-LABEL: test_mm_maskz_shufflelo_epi163694  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <8 x i32> <i32 1, i32 1, i32 0, i32 0, i32 4, i32 5, i32 6, i32 7>3695  // CHECK: select <8 x i1> %{{.*}}, <8 x i16> %{{.*}}, <8 x i16> %{{.*}}3696  return _mm_maskz_shufflelo_epi16(__U, __A, 5); 3697}3698 3699TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflelo_epi16(0xFF,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),1,1,0,0,4,5,6,7));3700TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflelo_epi16(0x0Fu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),1,1,0,0,0,0,0,0));3701TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflelo_epi16(0xF0u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,0,0,0,4,5,6,7));3702TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflelo_epi16(0xAAu,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),0,1,0,0,0,5,0,7));3703TEST_CONSTEXPR(match_v8hi(_mm_maskz_shufflelo_epi16(0x55u,((__m128i)(__v8hi){0,1,2,3,4,5,6,7}),5),1,0,0,0,4,0,6,0));3704 3705__m256i test_mm256_mask_shufflehi_epi16(__m256i __W, __mmask16 __U, __m256i __A) {3706  // CHECK-LABEL: test_mm256_mask_shufflehi_epi163707  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>3708  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3709  return _mm256_mask_shufflehi_epi16(__W, __U, __A, 5); 3710}3711 3712TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflehi_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115}),0xFF00u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),100,101,102,103,104,105,106,107,8,9,10,11,13,13,12,12));3713TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflehi_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115}),0x0000u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115));3714TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflehi_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115}),0xFFFFu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12));3715TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflehi_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115}),0x00FFu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,1,2,3,5,5,4,4,108,109,110,111,112,113,114,115));3716TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflehi_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115}),0x5555u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,101,2,103,5,105,4,107,8,109,10,111,13,113,12,115));3717 3718__m256i test_mm256_maskz_shufflehi_epi16(__mmask16 __U, __m256i __A) {3719  // CHECK-LABEL: test_mm256_maskz_shufflehi_epi163720  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>3721  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3722  return _mm256_maskz_shufflehi_epi16(__U, __A, 5); 3723}3724 3725TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflehi_epi16(0x0000u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));3726TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflehi_epi16(0xFFFFu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,1,2,3,5,5,4,4,8,9,10,11,13,13,12,12));3727TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflehi_epi16(0x00FFu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,1,2,3,5,5,4,4,0,0,0,0,0,0,0,0));3728TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflehi_epi16(0xFF00u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,0,0,0,0,0,0,0,8,9,10,11,13,13,12,12));3729TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflehi_epi16(0x5555u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,0,2,0,5,0,4,0,8,0,10,0,13,0,12,0));3730TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflehi_epi16(0xAAAAu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,1,0,3,0,5,0,4,0,9,0,11,0,13,0,12));3731 3732__m256i test_mm256_mask_shufflelo_epi16(__m256i __W, __mmask16 __U, __m256i __A) {3733  // CHECK-LABEL: test_mm256_mask_shufflelo_epi163734  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>3735  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3736  return _mm256_mask_shufflelo_epi16(__W, __U, __A, 5); 3737}3738 3739TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflelo_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,200,201,202,203,204,205,206,207}),0xFFFF,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15));3740TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflelo_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,200,201,202,203,204,205,206,207}),0x000Fu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,104,105,106,107,200,201,202,203,204,205,206,207));3741TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflelo_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,200,201,202,203,204,205,206,207}),0x00FFu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,4,5,6,7,200,201,202,203,204,205,206,207));3742TEST_CONSTEXPR(match_v16hi(_mm256_mask_shufflelo_epi16(((__m256i)(__v16hi){100,101,102,103,104,105,106,107,200,201,202,203,204,205,206,207}),0xF00Fu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,104,105,106,107,200,201,202,203,12,13,14,15));3743 3744__m256i test_mm256_maskz_shufflelo_epi16(__mmask16 __U, __m256i __A) {3745  // CHECK-LABEL: test_mm256_maskz_shufflelo_epi163746  // CHECK: shufflevector <16 x i16> %{{.*}}, <16 x i16> poison, <16 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>3747  // CHECK: select <16 x i1> %{{.*}}, <16 x i16> %{{.*}}, <16 x i16> %{{.*}}3748  return _mm256_maskz_shufflelo_epi16(__U, __A, 5); 3749}3750 3751TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflelo_epi16(0xFFFF,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,4,5,6,7,9,9,8,8,12,13,14,15));3752TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflelo_epi16(0x000Fu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0));3753TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflelo_epi16(0x00FFu,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),1,1,0,0,4,5,6,7,0,0,0,0,0,0,0,0));3754TEST_CONSTEXPR(match_v16hi(_mm256_maskz_shufflelo_epi16(0xF0F0u,((__m256i)(__v16hi){0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}),5),0,0,0,0,4,5,6,7,0,0,0,0,12,13,14,15));3755 3756void test_mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)3757{3758 // CHECK-LABEL: test_mm_mask_cvtepi16_storeu_epi83759 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.1283760 _mm_mask_cvtepi16_storeu_epi8 (__P, __M, __A);3761}3762 3763void test_mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)3764{3765 // CHECK-LABEL: test_mm_mask_cvtsepi16_storeu_epi83766 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.1283767  _mm_mask_cvtsepi16_storeu_epi8 ( __P,  __M, __A);3768}3769 3770void test_mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)3771{3772 // CHECK-LABEL: test_mm_mask_cvtusepi16_storeu_epi83773 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.1283774  _mm_mask_cvtusepi16_storeu_epi8 (__P, __M, __A);3775}3776 3777void test_mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)3778{3779 // CHECK-LABEL: test_mm256_mask_cvtusepi16_storeu_epi83780 // CHECK: @llvm.x86.avx512.mask.pmovus.wb.mem.2563781  _mm256_mask_cvtusepi16_storeu_epi8 ( __P, __M, __A);3782}3783 3784void test_mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)3785{3786 // CHECK-LABEL: test_mm256_mask_cvtepi16_storeu_epi83787 // CHECK: @llvm.x86.avx512.mask.pmov.wb.mem.2563788  _mm256_mask_cvtepi16_storeu_epi8 ( __P,  __M, __A);3789}3790 3791void test_mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)3792{3793 // CHECK-LABEL: test_mm256_mask_cvtsepi16_storeu_epi83794 // CHECK: @llvm.x86.avx512.mask.pmovs.wb.mem.2563795 _mm256_mask_cvtsepi16_storeu_epi8 ( __P, __M, __A);3796}3797 3798 3799TEST_CONSTEXPR(match_v16qu(3800    _mm_permutex2var_epi8((__m128i)(__v16qu){0, 10, 20, 30, 40, 50, 60, 70,3801                                             80, 90, 100, 110, 120, 127, 126, 125},3802                         (__m128i)(__v16qu){0, 16, 1, 17, 2, 18, 3, 19,3803                                             4, 20, 5, 21, 6, 22, 7, 23},3804                         (__m128i)(__v16qu){100, 110, 120, 130, 140, 150, 160, 170,3805                                            180, 190, 200, 210, 220, 230, 240, 250}),3806    0, 100, 10, 110, 20, 120, 30, 130,3807    40, 140, 50, 150, 60, 160, 70, 170));3808TEST_CONSTEXPR(match_v32qu(3809    _mm256_permutex2var_epi8((__m256i)(__v32qu){0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 112, 111, 110, 109},3810                             (__m256i)(__v32qu){0, 32, 1, 33, 2, 34, 3, 35, 4, 36, 5, 37, 6, 38, 7, 39, 8, 40, 9, 41, 10, 42, 11, 43, 12, 44, 13, 45, 14, 46, 15, 47},3811                             (__m256i)(__v32qu){200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231}),3812    0, 200, 10, 201, 20, 202, 30, 203,3813    40, 204, 50, 205, 60, 206, 70, 207,3814    80, 208, 90, 209, 100, 210, 110, 211,3815    120, 212, 127, 213, 126, 214, 125, 215));3816