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