brintos

brintos / llvm-project-archived public Read only

0
0
Text · 516.0 KiB · 5f6d836 Raw
11124 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -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 +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s3 4// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s5// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -Wsign-conversion -fexperimental-new-constant-interpreter | FileCheck %s6 7#include <immintrin.h>8#include "builtin_test_helpers.h"9 10__mmask8 test_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {11  // CHECK-LABEL: test_mm_cmpeq_epu32_mask12  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}13  // CHECK: shufflevector <4 x i1> %{{.*}}, <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>14  return (__mmask8)_mm_cmpeq_epu32_mask(__a, __b);15}16 17__mmask8 test_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {18  // CHECK-LABEL: test_mm_mask_cmpeq_epu32_mask19  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}20  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}21  return (__mmask8)_mm_mask_cmpeq_epu32_mask(__u, __a, __b);22}23 24__mmask8 test_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) {25  // CHECK-LABEL: test_mm_cmpeq_epu64_mask26  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}27  // CHECK: shufflevector <2 x i1> %{{.*}}, <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>28  return (__mmask8)_mm_cmpeq_epu64_mask(__a, __b);29}30 31__mmask8 test_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {32  // CHECK-LABEL: test_mm_mask_cmpeq_epu64_mask33  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}34  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}35  return (__mmask8)_mm_mask_cmpeq_epu64_mask(__u, __a, __b);36}37 38__mmask8 test_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) {39  // CHECK-LABEL: test_mm_cmpge_epi32_mask40  // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}41  return (__mmask8)_mm_cmpge_epi32_mask(__a, __b);42}43 44__mmask8 test_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {45  // CHECK-LABEL: test_mm_mask_cmpge_epi32_mask46  // CHECK: icmp sge <4 x i32> %{{.*}}, %{{.*}}47  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}48  return (__mmask8)_mm_mask_cmpge_epi32_mask(__u, __a, __b);49}50 51__mmask8 test_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) {52  // CHECK-LABEL: test_mm_cmpge_epi64_mask53  // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}54  return (__mmask8)_mm_cmpge_epi64_mask(__a, __b);55}56 57__mmask8 test_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {58  // CHECK-LABEL: test_mm_mask_cmpge_epi64_mask59  // CHECK: icmp sge <2 x i64> %{{.*}}, %{{.*}}60  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}61  return (__mmask8)_mm_mask_cmpge_epi64_mask(__u, __a, __b);62}63 64__mmask8 test_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) {65  // CHECK-LABEL: test_mm256_cmpge_epi32_mask66  // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}}67  return (__mmask8)_mm256_cmpge_epi32_mask(__a, __b);68}69 70__mmask8 test_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {71  // CHECK-LABEL: test_mm256_mask_cmpge_epi32_mask72  // CHECK: icmp sge <8 x i32> %{{.*}}, %{{.*}}73  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}74  return (__mmask8)_mm256_mask_cmpge_epi32_mask(__u, __a, __b);75}76 77__mmask8 test_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) {78  // CHECK-LABEL: test_mm256_cmpge_epi64_mask79  // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}}80  return (__mmask8)_mm256_cmpge_epi64_mask(__a, __b);81}82 83__mmask8 test_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {84  // CHECK-LABEL: test_mm256_mask_cmpge_epi64_mask85  // CHECK: icmp sge <4 x i64> %{{.*}}, %{{.*}}86  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}87  return (__mmask8)_mm256_mask_cmpge_epi64_mask(__u, __a, __b);88}89 90__mmask8 test_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) {91  // CHECK-LABEL: test_mm_cmpge_epu32_mask92  // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}93  return (__mmask8)_mm_cmpge_epu32_mask(__a, __b);94}95 96__mmask8 test_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {97  // CHECK-LABEL: test_mm_mask_cmpge_epu32_mask98  // CHECK: icmp uge <4 x i32> %{{.*}}, %{{.*}}99  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}100  return (__mmask8)_mm_mask_cmpge_epu32_mask(__u, __a, __b);101}102 103__mmask8 test_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) {104  // CHECK-LABEL: test_mm_cmpge_epu64_mask105  // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}106  return (__mmask8)_mm_cmpge_epu64_mask(__a, __b);107}108 109__mmask8 test_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {110  // CHECK-LABEL: test_mm_mask_cmpge_epu64_mask111  // CHECK: icmp uge <2 x i64> %{{.*}}, %{{.*}}112  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}113  return (__mmask8)_mm_mask_cmpge_epu64_mask(__u, __a, __b);114}115 116__mmask8 test_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) {117  // CHECK-LABEL: test_mm256_cmpge_epu32_mask118  // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}}119  return (__mmask8)_mm256_cmpge_epu32_mask(__a, __b);120}121 122__mmask8 test_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {123  // CHECK-LABEL: test_mm256_mask_cmpge_epu32_mask124  // CHECK: icmp uge <8 x i32> %{{.*}}, %{{.*}}125  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}126  return (__mmask8)_mm256_mask_cmpge_epu32_mask(__u, __a, __b);127}128 129__mmask8 test_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) {130  // CHECK-LABEL: test_mm256_cmpge_epu64_mask131  // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}}132  return (__mmask8)_mm256_cmpge_epu64_mask(__a, __b);133}134 135__mmask8 test_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {136  // CHECK-LABEL: test_mm256_mask_cmpge_epu64_mask137  // CHECK: icmp uge <4 x i64> %{{.*}}, %{{.*}}138  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}139  return (__mmask8)_mm256_mask_cmpge_epu64_mask(__u, __a, __b);140}141 142__mmask8 test_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) {143  // CHECK-LABEL: test_mm_cmpgt_epu32_mask144  // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}145  return (__mmask8)_mm_cmpgt_epu32_mask(__a, __b);146}147 148__mmask8 test_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {149  // CHECK-LABEL: test_mm_mask_cmpgt_epu32_mask150  // CHECK: icmp ugt <4 x i32> %{{.*}}, %{{.*}}151  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}152  return (__mmask8)_mm_mask_cmpgt_epu32_mask(__u, __a, __b);153}154 155__mmask8 test_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) {156  // CHECK-LABEL: test_mm_cmpgt_epu64_mask157  // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}158  return (__mmask8)_mm_cmpgt_epu64_mask(__a, __b);159}160 161__mmask8 test_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {162  // CHECK-LABEL: test_mm_mask_cmpgt_epu64_mask163  // CHECK: icmp ugt <2 x i64> %{{.*}}, %{{.*}}164  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}165  return (__mmask8)_mm_mask_cmpgt_epu64_mask(__u, __a, __b);166}167 168__mmask8 test_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) {169  // CHECK-LABEL: test_mm256_cmpgt_epu32_mask170  // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}}171  return (__mmask8)_mm256_cmpgt_epu32_mask(__a, __b);172}173 174__mmask8 test_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {175  // CHECK-LABEL: test_mm256_mask_cmpgt_epu32_mask176  // CHECK: icmp ugt <8 x i32> %{{.*}}, %{{.*}}177  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}178  return (__mmask8)_mm256_mask_cmpgt_epu32_mask(__u, __a, __b);179}180 181__mmask8 test_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) {182  // CHECK-LABEL: test_mm256_cmpgt_epu64_mask183  // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}}184  return (__mmask8)_mm256_cmpgt_epu64_mask(__a, __b);185}186 187__mmask8 test_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {188  // CHECK-LABEL: test_mm256_mask_cmpgt_epu64_mask189  // CHECK: icmp ugt <4 x i64> %{{.*}}, %{{.*}}190  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}191  return (__mmask8)_mm256_mask_cmpgt_epu64_mask(__u, __a, __b);192}193 194__mmask8 test_mm_cmple_epi32_mask(__m128i __a, __m128i __b) {195  // CHECK-LABEL: test_mm_cmple_epi32_mask196  // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}197  return (__mmask8)_mm_cmple_epi32_mask(__a, __b);198}199 200__mmask8 test_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {201  // CHECK-LABEL: test_mm_mask_cmple_epi32_mask202  // CHECK: icmp sle <4 x i32> %{{.*}}, %{{.*}}203  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}204  return (__mmask8)_mm_mask_cmple_epi32_mask(__u, __a, __b);205}206 207__mmask8 test_mm_cmple_epi64_mask(__m128i __a, __m128i __b) {208  // CHECK-LABEL: test_mm_cmple_epi64_mask209  // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}210  return (__mmask8)_mm_cmple_epi64_mask(__a, __b);211}212 213__mmask8 test_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {214  // CHECK-LABEL: test_mm_mask_cmple_epi64_mask215  // CHECK: icmp sle <2 x i64> %{{.*}}, %{{.*}}216  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}217  return (__mmask8)_mm_mask_cmple_epi64_mask(__u, __a, __b);218}219 220__mmask8 test_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) {221  // CHECK-LABEL: test_mm256_cmple_epi32_mask222  // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}223  return (__mmask8)_mm256_cmple_epi32_mask(__a, __b);224}225 226__mmask8 test_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {227  // CHECK-LABEL: test_mm256_mask_cmple_epi32_mask228  // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}229  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}230  return (__mmask8)_mm256_mask_cmple_epi32_mask(__u, __a, __b);231}232 233__mmask8 test_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) {234  // CHECK-LABEL: test_mm256_cmple_epi64_mask235  // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}}236  return (__mmask8)_mm256_cmple_epi64_mask(__a, __b);237}238 239__mmask8 test_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {240  // CHECK-LABEL: test_mm256_mask_cmple_epi64_mask241  // CHECK: icmp sle <4 x i64> %{{.*}}, %{{.*}}242  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}243  return (__mmask8)_mm256_mask_cmple_epi64_mask(__u, __a, __b);244}245 246__mmask8 test_mm_cmple_epu32_mask(__m128i __a, __m128i __b) {247  // CHECK-LABEL: test_mm_cmple_epu32_mask248  // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}249  return (__mmask8)_mm_cmple_epu32_mask(__a, __b);250}251 252__mmask8 test_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {253  // CHECK-LABEL: test_mm_mask_cmple_epu32_mask254  // CHECK: icmp ule <4 x i32> %{{.*}}, %{{.*}}255  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}256  return (__mmask8)_mm_mask_cmple_epu32_mask(__u, __a, __b);257}258 259__mmask8 test_mm_cmple_epu64_mask(__m128i __a, __m128i __b) {260  // CHECK-LABEL: test_mm_cmple_epu64_mask261  // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}262  return (__mmask8)_mm_cmple_epu64_mask(__a, __b);263}264 265__mmask8 test_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {266  // CHECK-LABEL: test_mm_mask_cmple_epu64_mask267  // CHECK: icmp ule <2 x i64> %{{.*}}, %{{.*}}268  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}269  return (__mmask8)_mm_mask_cmple_epu64_mask(__u, __a, __b);270}271 272__mmask8 test_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) {273  // CHECK-LABEL: test_mm256_cmple_epu32_mask274  // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}}275  return (__mmask8)_mm256_cmple_epu32_mask(__a, __b);276}277 278__mmask8 test_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {279  // CHECK-LABEL: test_mm256_mask_cmple_epu32_mask280  // CHECK: icmp ule <8 x i32> %{{.*}}, %{{.*}}281  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}282  return (__mmask8)_mm256_mask_cmple_epu32_mask(__u, __a, __b);283}284 285__mmask8 test_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) {286  // CHECK-LABEL: test_mm256_cmple_epu64_mask287  // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}}288  return (__mmask8)_mm256_cmple_epu64_mask(__a, __b);289}290 291__mmask8 test_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {292  // CHECK-LABEL: test_mm256_mask_cmple_epu64_mask293  // CHECK: icmp ule <4 x i64> %{{.*}}, %{{.*}}294  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}295  return (__mmask8)_mm256_mask_cmple_epu64_mask(__u, __a, __b);296}297 298__mmask8 test_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) {299  // CHECK-LABEL: test_mm_cmplt_epi32_mask300  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}301  return (__mmask8)_mm_cmplt_epi32_mask(__a, __b);302}303 304__mmask8 test_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {305  // CHECK-LABEL: test_mm_mask_cmplt_epi32_mask306  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}307  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}308  return (__mmask8)_mm_mask_cmplt_epi32_mask(__u, __a, __b);309}310 311__mmask8 test_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) {312  // CHECK-LABEL: test_mm_cmplt_epi64_mask313  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}314  return (__mmask8)_mm_cmplt_epi64_mask(__a, __b);315}316 317__mmask8 test_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {318  // CHECK-LABEL: test_mm_mask_cmplt_epi64_mask319  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}320  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}321  return (__mmask8)_mm_mask_cmplt_epi64_mask(__u, __a, __b);322}323 324__mmask8 test_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) {325  // CHECK-LABEL: test_mm256_cmplt_epi32_mask326  // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}}327  return (__mmask8)_mm256_cmplt_epi32_mask(__a, __b);328}329 330__mmask8 test_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {331  // CHECK-LABEL: test_mm256_mask_cmplt_epi32_mask332  // CHECK: icmp slt <8 x i32> %{{.*}}, %{{.*}}333  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}334  return (__mmask8)_mm256_mask_cmplt_epi32_mask(__u, __a, __b);335}336 337__mmask8 test_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) {338  // CHECK-LABEL: test_mm256_cmplt_epi64_mask339  // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}}340  return (__mmask8)_mm256_cmplt_epi64_mask(__a, __b);341}342 343__mmask8 test_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {344  // CHECK-LABEL: test_mm256_mask_cmplt_epi64_mask345  // CHECK: icmp slt <4 x i64> %{{.*}}, %{{.*}}346  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}347  return (__mmask8)_mm256_mask_cmplt_epi64_mask(__u, __a, __b);348}349 350__mmask8 test_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) {351  // CHECK-LABEL: test_mm_cmplt_epu32_mask352  // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}353  return (__mmask8)_mm_cmplt_epu32_mask(__a, __b);354}355 356__mmask8 test_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {357  // CHECK-LABEL: test_mm_mask_cmplt_epu32_mask358  // CHECK: icmp ult <4 x i32> %{{.*}}, %{{.*}}359  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}360  return (__mmask8)_mm_mask_cmplt_epu32_mask(__u, __a, __b);361}362 363__mmask8 test_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) {364  // CHECK-LABEL: test_mm_cmplt_epu64_mask365  // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}366  return (__mmask8)_mm_cmplt_epu64_mask(__a, __b);367}368 369__mmask8 test_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {370  // CHECK-LABEL: test_mm_mask_cmplt_epu64_mask371  // CHECK: icmp ult <2 x i64> %{{.*}}, %{{.*}}372  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}373  return (__mmask8)_mm_mask_cmplt_epu64_mask(__u, __a, __b);374}375 376__mmask8 test_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) {377  // CHECK-LABEL: test_mm256_cmplt_epu32_mask378  // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}}379  return (__mmask8)_mm256_cmplt_epu32_mask(__a, __b);380}381 382__mmask8 test_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {383  // CHECK-LABEL: test_mm256_mask_cmplt_epu32_mask384  // CHECK: icmp ult <8 x i32> %{{.*}}, %{{.*}}385  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}386  return (__mmask8)_mm256_mask_cmplt_epu32_mask(__u, __a, __b);387}388 389__mmask8 test_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) {390  // CHECK-LABEL: test_mm256_cmplt_epu64_mask391  // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}}392  return (__mmask8)_mm256_cmplt_epu64_mask(__a, __b);393}394 395__mmask8 test_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {396  // CHECK-LABEL: test_mm256_mask_cmplt_epu64_mask397  // CHECK: icmp ult <4 x i64> %{{.*}}, %{{.*}}398  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}399  return (__mmask8)_mm256_mask_cmplt_epu64_mask(__u, __a, __b);400}401 402__mmask8 test_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) {403  // CHECK-LABEL: test_mm_cmpneq_epi32_mask404  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}405  return (__mmask8)_mm_cmpneq_epi32_mask(__a, __b);406}407 408__mmask8 test_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {409  // CHECK-LABEL: test_mm_mask_cmpneq_epi32_mask410  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}411  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}412  return (__mmask8)_mm_mask_cmpneq_epi32_mask(__u, __a, __b);413}414 415__mmask8 test_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) {416  // CHECK-LABEL: test_mm_cmpneq_epi64_mask417  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}418  return (__mmask8)_mm_cmpneq_epi64_mask(__a, __b);419}420 421__mmask8 test_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {422  // CHECK-LABEL: test_mm_mask_cmpneq_epi64_mask423  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}424  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}425  return (__mmask8)_mm_mask_cmpneq_epi64_mask(__u, __a, __b);426}427 428__mmask8 test_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) {429  // CHECK-LABEL: test_mm256_cmpneq_epi32_mask430  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}431  return (__mmask8)_mm256_cmpneq_epi32_mask(__a, __b);432}433 434__mmask8 test_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {435  // CHECK-LABEL: test_mm256_mask_cmpneq_epi32_mask436  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}437  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}438  return (__mmask8)_mm256_mask_cmpneq_epi32_mask(__u, __a, __b);439}440 441__mmask8 test_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) {442  // CHECK-LABEL: test_mm256_cmpneq_epi64_mask443  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}444  return (__mmask8)_mm256_cmpneq_epi64_mask(__a, __b);445}446 447__mmask8 test_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {448  // CHECK-LABEL: test_mm256_mask_cmpneq_epi64_mask449  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}450  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}451  return (__mmask8)_mm256_mask_cmpneq_epi64_mask(__u, __a, __b);452}453 454__mmask8 test_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) {455  // CHECK-LABEL: test_mm_cmpneq_epu32_mask456  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}457  return (__mmask8)_mm_cmpneq_epu32_mask(__a, __b);458}459 460__mmask8 test_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {461  // CHECK-LABEL: test_mm_mask_cmpneq_epu32_mask462  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}463  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}464  return (__mmask8)_mm_mask_cmpneq_epu32_mask(__u, __a, __b);465}466 467__mmask8 test_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) {468  // CHECK-LABEL: test_mm_cmpneq_epu64_mask469  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}470  return (__mmask8)_mm_cmpneq_epu64_mask(__a, __b);471}472 473__mmask8 test_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {474  // CHECK-LABEL: test_mm_mask_cmpneq_epu64_mask475  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}476  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}477  return (__mmask8)_mm_mask_cmpneq_epu64_mask(__u, __a, __b);478}479 480__mmask8 test_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) {481  // CHECK-LABEL: test_mm256_cmpneq_epu32_mask482  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}483  return (__mmask8)_mm256_cmpneq_epu32_mask(__a, __b);484}485 486__mmask8 test_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {487  // CHECK-LABEL: test_mm256_mask_cmpneq_epu32_mask488  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}489  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}490  return (__mmask8)_mm256_mask_cmpneq_epu32_mask(__u, __a, __b);491}492 493__mmask8 test_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) {494  // CHECK-LABEL: test_mm256_cmpneq_epu64_mask495  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}496  return (__mmask8)_mm256_cmpneq_epu64_mask(__a, __b);497}498 499__mmask8 test_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {500  // CHECK-LABEL: test_mm256_mask_cmpneq_epu64_mask501  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}502  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}503  return (__mmask8)_mm256_mask_cmpneq_epu64_mask(__u, __a, __b);504}505 506__mmask8 test_mm_cmp_eq_epi32_mask(__m128i __a, __m128i __b) {507  // CHECK-LABEL: test_mm_cmp_eq_epi32_mask508  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}509  return (__mmask8)_mm_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);510}511 512__mmask8 test_mm_mask_cmp_lt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {513  // CHECK-LABEL: test_mm_mask_cmp_lt_epi32_mask514  // CHECK: icmp slt <4 x i32> %{{.*}}, %{{.*}}515  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}516  return (__mmask8)_mm_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_LT);517}518 519__mmask8 test_mm_cmp_lt_epi64_mask(__m128i __a, __m128i __b) {520  // CHECK-LABEL: test_mm_cmp_lt_epi64_mask521  // CHECK: icmp slt <2 x i64> %{{.*}}, %{{.*}}522  return (__mmask8)_mm_cmp_epi64_mask(__a, __b, _MM_CMPINT_LT);523}524 525__mmask8 test_mm_mask_cmp_eq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {526  // CHECK-LABEL: test_mm_mask_cmp_eq_epi64_mask527  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}528  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}529  return (__mmask8)_mm_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);530}531 532__mmask8 test_mm256_cmp_eq_epi32_mask(__m256i __a, __m256i __b) {533  // CHECK-LABEL: test_mm256_cmp_eq_epi32_mask534  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}535  return (__mmask8)_mm256_cmp_epi32_mask(__a, __b, _MM_CMPINT_EQ);536}537 538__mmask8 test_mm256_mask_cmp_le_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {539  // CHECK-LABEL: test_mm256_mask_cmp_le_epi32_mask540  // CHECK: icmp sle <8 x i32> %{{.*}}, %{{.*}}541  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}542  return (__mmask8)_mm256_mask_cmp_epi32_mask(__u, __a, __b, _MM_CMPINT_LE);543}544 545__mmask8 test_mm256_cmp_eq_epi64_mask(__m256i __a, __m256i __b) {546  // CHECK-LABEL: test_mm256_cmp_eq_epi64_mask547  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}548  return (__mmask8)_mm256_cmp_epi64_mask(__a, __b, _MM_CMPINT_EQ);549}550 551__mmask8 test_mm256_mask_cmp_eq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {552  // CHECK-LABEL: test_mm256_mask_cmp_eq_epi64_mask553  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}554  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}555  return (__mmask8)_mm256_mask_cmp_epi64_mask(__u, __a, __b, _MM_CMPINT_EQ);556}557 558__mmask8 test_mm_cmp_epu32_mask(__m128i __a, __m128i __b) {559  // CHECK-LABEL: test_mm_cmp_epu32_mask560  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}561  return (__mmask8)_mm_cmp_epu32_mask(__a, __b, 0);562}563 564__mmask8 test_mm_mask_cmp_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {565  // CHECK-LABEL: test_mm_mask_cmp_epu32_mask566  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}567  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}568  return (__mmask8)_mm_mask_cmp_epu32_mask(__u, __a, __b, 0);569}570 571__mmask8 test_mm_cmp_epu64_mask(__m128i __a, __m128i __b) {572  // CHECK-LABEL: test_mm_cmp_epu64_mask573  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}574  return (__mmask8)_mm_cmp_epu64_mask(__a, __b, 0);575}576 577__mmask8 test_mm_mask_cmp_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {578  // CHECK-LABEL: test_mm_mask_cmp_epu64_mask579  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}580  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}581  return (__mmask8)_mm_mask_cmp_epu64_mask(__u, __a, __b, 0);582}583 584__mmask8 test_mm256_cmp_epu32_mask(__m256i __a, __m256i __b) {585  // CHECK-LABEL: test_mm256_cmp_epu32_mask586  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}587  return (__mmask8)_mm256_cmp_epu32_mask(__a, __b, 0);588}589 590__mmask8 test_mm256_mask_cmp_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {591  // CHECK-LABEL: test_mm256_mask_cmp_epu32_mask592  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}593  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}594  return (__mmask8)_mm256_mask_cmp_epu32_mask(__u, __a, __b, 0);595}596 597__mmask8 test_mm256_cmp_epu64_mask(__m256i __a, __m256i __b) {598  // CHECK-LABEL: test_mm256_cmp_epu64_mask599  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}600  return (__mmask8)_mm256_cmp_epu64_mask(__a, __b, 0);601}602 603__mmask8 test_mm256_mask_cmp_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {604  // CHECK-LABEL: test_mm256_mask_cmp_epu64_mask605  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}606  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}607  return (__mmask8)_mm256_mask_cmp_epu64_mask(__u, __a, __b, 0);608}609 610__m256i test_mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,611           __m256i __B) {612  //CHECK-LABEL: test_mm256_mask_add_epi32613  //CHECK: add <8 x i32> %{{.*}}, %{{.*}}614  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}615  return _mm256_mask_add_epi32(__W, __U, __A, __B);616}617 618TEST_CONSTEXPR(match_v8si(_mm256_mask_add_epi32((__m256i)(__v8si){ 99, 99, 99, 99, 99, 99, 99, 99}, 0xA1, (__m256i)(__v8si){ 16, 17, 18, -19, 20, -21, 22, 23}, (__m256i)(__v8si){ -1, 2, 3, 4, 5, 6, 7, 8}), 15, 99, 99, 99, 99, -15, 99, 31));619 620__m256i test_mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {621  //CHECK-LABEL: test_mm256_maskz_add_epi32622  //CHECK: add <8 x i32> %{{.*}}, %{{.*}}623  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}624  return _mm256_maskz_add_epi32(__U, __A, __B);625}626 627TEST_CONSTEXPR(match_v8si(_mm256_maskz_add_epi32(0xA1, (__m256i)(__v8si){ 16, 17, 18, -19, 20, -21, 22, 23}, (__m256i)(__v8si){ -1, 2, 3, 4, 5, 6, 7, 8}),  15, 0, 0, 0, 0, -15, 0, 31));628 629__m256i test_mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,630           __m256i __B) {631  //CHECK-LABEL: test_mm256_mask_add_epi64632  //CHECK: add <4 x i64> %{{.*}}, %{{.*}}633  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}634  return _mm256_mask_add_epi64(__W,__U,__A,__B);635}636 637TEST_CONSTEXPR(match_v4di(_mm256_mask_add_epi64((__m256i)(__v4di){ 99, 99, 99, 99}, 0x0, (__m256i)(__v4di){ 8, -9, 10, 11}, (__m256i)(__v4di){ -1, -2, 3, 4}), 99, 99, 99, 99));638 639__m256i test_mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {640  //CHECK-LABEL: test_mm256_maskz_add_epi64641  //CHECK: add <4 x i64> %{{.*}}, %{{.*}}642  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}643  return _mm256_maskz_add_epi64 (__U,__A,__B);644}645 646TEST_CONSTEXPR(match_v4di(_mm256_maskz_add_epi64(0x0, (__m256i)(__v4di){ 8, -9, 10, 11}, (__m256i)(__v4di){ -1, -2, 3, 4}),  0, 0, 0, 0));647 648__m256i test_mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,649           __m256i __B) {650  //CHECK-LABEL: test_mm256_mask_sub_epi32651  //CHECK: sub <8 x i32> %{{.*}}, %{{.*}}652  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}653  return _mm256_mask_sub_epi32 (__W,__U,__A,__B);654}655 656TEST_CONSTEXPR(match_v8si(_mm256_mask_sub_epi32((__m256i)(__v8si){ 99, 99, 99, 99, 99, 99, 99, 99}, 0xA1, (__m256i)(__v8si){ 16, 17, 18, -19, 20, -21, 22, 23}, (__m256i)(__v8si){ -1, 2, 3, 4, 5, 6, 7, 8}), 17, 99, 99, 99, 99, -27, 99, 15));657 658__m256i test_mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {659  //CHECK-LABEL: test_mm256_maskz_sub_epi32660  //CHECK: sub <8 x i32> %{{.*}}, %{{.*}}661  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}662  return _mm256_maskz_sub_epi32 (__U,__A,__B);663}664 665TEST_CONSTEXPR(match_v8si(_mm256_maskz_sub_epi32(0xA1, (__m256i)(__v8si){ 16, 17, 18, -19, 20, -21, 22, 23}, (__m256i)(__v8si){ -1, 2, 3, 4, 5, 6, 7, 8}),  17, 0, 0, 0, 0, -27, 0, 15));666 667__m256i test_mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,668           __m256i __B) {669  //CHECK-LABEL: test_mm256_mask_sub_epi64670  //CHECK: sub <4 x i64> %{{.*}}, %{{.*}}671  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}672  return _mm256_mask_sub_epi64 (__W,__U,__A,__B);673}674 675TEST_CONSTEXPR(match_v4di(_mm256_mask_sub_epi64((__m256i)(__v4di){ 99, 99, 99, 99}, 0x0, (__m256i)(__v4di){ 8, -9, 10, 11}, (__m256i)(__v4di){ -1, -2, 3, 4}), 99, 99, 99, 99));676 677__m256i test_mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {678  //CHECK-LABEL: test_mm256_maskz_sub_epi64679  //CHECK: sub <4 x i64> %{{.*}}, %{{.*}}680  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}681  return _mm256_maskz_sub_epi64 (__U,__A,__B);682}683 684TEST_CONSTEXPR(match_v4di(_mm256_maskz_sub_epi64(0x0, (__m256i)(__v4di){ 8, -9, 10, 11}, (__m256i)(__v4di){ -1, -2, 3, 4}),  0, 0, 0, 0));685 686__m128i test_mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,687        __m128i __B) {688  //CHECK-LABEL: test_mm_mask_add_epi32689  //CHECK: add <4 x i32> %{{.*}}, %{{.*}}690  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}691  return _mm_mask_add_epi32(__W,__U,__A,__B);692}693 694TEST_CONSTEXPR(match_v4si(_mm_mask_add_epi32((__m128i)(__v4si){ 99, 99, 99, 99}, 0xA, (__m128i)(__v4si){ 8, 9, 10, 11}, (__m128i)(__v4si){ -1, -2, 3, 4}), 99, 7, 99, 15));695 696__m128i test_mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {697  //CHECK-LABEL: test_mm_maskz_add_epi32698  //CHECK: add <4 x i32> %{{.*}}, %{{.*}}699  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}700  return _mm_maskz_add_epi32 (__U,__A,__B);701}702 703TEST_CONSTEXPR(match_v4si(_mm_maskz_add_epi32(0xA, (__m128i)(__v4si){ 8, 9, 10, 11}, (__m128i)(__v4si){ -1, -2, 3, 4}),  0, 7, 0, 15));704 705__m128i test_mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,706        __m128i __B) {707  //CHECK-LABEL: test_mm_mask_add_epi64708  //CHECK: add <2 x i64> %{{.*}}, %{{.*}}709  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}710  return _mm_mask_add_epi64 (__W,__U,__A,__B);711}712 713TEST_CONSTEXPR(match_v2di(_mm_mask_add_epi64((__m128i)(__v2di){ 99, 99}, 0x3, (__m128i)(__v2di){ 4, -5}, (__m128i)(__v2di){ 1, -2}), 5, -7));714 715__m128i test_mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {716  //CHECK-LABEL: test_mm_maskz_add_epi64717  //CHECK: add <2 x i64> %{{.*}}, %{{.*}}718  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}719  return _mm_maskz_add_epi64 (__U,__A,__B);720}721 722TEST_CONSTEXPR(match_v2di(_mm_maskz_add_epi64(0x3, (__m128i)(__v2di){ 4, -5}, (__m128i)(__v2di){ 1, -2}),  5, -7));723 724__m128i test_mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,725        __m128i __B) {726  //CHECK-LABEL: test_mm_mask_sub_epi32727  //CHECK: sub <4 x i32> %{{.*}}, %{{.*}}728  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}729  return _mm_mask_sub_epi32(__W, __U, __A, __B);730}731 732TEST_CONSTEXPR(match_v4si(_mm_mask_sub_epi32((__m128i)(__v4si){ 99, 99, 99, 99}, 0xA, (__m128i)(__v4si){ 8, 9, 10, 11}, (__m128i)(__v4si){ -1, -2, 3, 4}), 99, 11, 99, 7));733 734__m128i test_mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {735  //CHECK-LABEL: test_mm_maskz_sub_epi32736  //CHECK: sub <4 x i32> %{{.*}}, %{{.*}}737  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}738  return _mm_maskz_sub_epi32(__U, __A, __B);739}740 741TEST_CONSTEXPR(match_v4si(_mm_maskz_sub_epi32(0xA, (__m128i)(__v4si){ 8, 9, 10, 11}, (__m128i)(__v4si){ -1, -2, 3, 4}),  0, 11, 0, 7));742 743__m128i test_mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,744        __m128i __B) {745  //CHECK-LABEL: test_mm_mask_sub_epi64746  //CHECK: sub <2 x i64> %{{.*}}, %{{.*}}747  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}748  return _mm_mask_sub_epi64 (__W, __U, __A, __B);749}750 751TEST_CONSTEXPR(match_v2di(_mm_mask_sub_epi64((__m128i)(__v2di){ 99, 99}, 0x3, (__m128i)(__v2di){ 4, -5}, (__m128i)(__v2di){ 1, -2}), 3, -3));752 753__m128i test_mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {754  //CHECK-LABEL: test_mm_maskz_sub_epi64755  //CHECK: sub <2 x i64> %{{.*}}, %{{.*}}756  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}757  return _mm_maskz_sub_epi64 (__U, __A, __B);758}759 760TEST_CONSTEXPR(match_v2di(_mm_maskz_sub_epi64(0x3, (__m128i)(__v2di){ 4, -5}, (__m128i)(__v2di){ 1, -2}),  3, -3));761 762__m256i test_mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,763           __m256i __Y) {764  //CHECK-LABEL: test_mm256_mask_mul_epi32765  //CHECK: shl <4 x i64> %{{.*}}, splat (i64 32)766  //CHECK: ashr <4 x i64> %{{.*}}, splat (i64 32)767  //CHECK: shl <4 x i64> %{{.*}}, splat (i64 32)768  //CHECK: ashr <4 x i64> %{{.*}}, splat (i64 32)769  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}770  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}771  return _mm256_mask_mul_epi32(__W, __M, __X, __Y);772}773TEST_CONSTEXPR(match_m256i(_mm256_mask_mul_epi32((__m256i){100,200,300,400}, (__mmask8)0b00001100, (__m256i){1,2,3,4}, (__m256i){10,20,30,40}), 100,200,90,160));774 775__m256i test_mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y) {776  //CHECK-LABEL: test_mm256_maskz_mul_epi32777  //CHECK: shl <4 x i64> %{{.*}}, splat (i64 32)778  //CHECK: ashr <4 x i64> %{{.*}}, splat (i64 32)779  //CHECK: shl <4 x i64> %{{.*}}, splat (i64 32)780  //CHECK: ashr <4 x i64> %{{.*}}, splat (i64 32)781  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}782  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}783  return _mm256_maskz_mul_epi32(__M, __X, __Y);784}785TEST_CONSTEXPR(match_m256i(_mm256_maskz_mul_epi32((__mmask8)0b00001100, (__m256i){1,2,3,4}, (__m256i){10,20,30,40}), 0,0,90,160));786 787__m128i test_mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,788        __m128i __Y) {789  //CHECK-LABEL: test_mm_mask_mul_epi32790  //CHECK: shl <2 x i64> %{{.*}}, splat (i64 32)791  //CHECK: ashr <2 x i64> %{{.*}}, splat (i64 32)792  //CHECK: shl <2 x i64> %{{.*}}, splat (i64 32)793  //CHECK: ashr <2 x i64> %{{.*}}, splat (i64 32)794  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}795  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}796  return _mm_mask_mul_epi32(__W, __M, __X, __Y);797}798TEST_CONSTEXPR(match_m128i(_mm_mask_mul_epi32((__m128i){100,200}, (__mmask8)0b00000001, (__m128i){1,2}, (__m128i){10,20}), 10,200));799 800__m128i test_mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y) {801  //CHECK-LABEL: test_mm_maskz_mul_epi32802  //CHECK: shl <2 x i64> %{{.*}}, splat (i64 32)803  //CHECK: ashr <2 x i64> %{{.*}}, splat (i64 32)804  //CHECK: shl <2 x i64> %{{.*}}, splat (i64 32)805  //CHECK: ashr <2 x i64> %{{.*}}, splat (i64 32)806  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}807  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}808  return _mm_maskz_mul_epi32(__M, __X, __Y);809}810TEST_CONSTEXPR(match_m128i(_mm_maskz_mul_epi32((__mmask8)0b00000010, (__m128i){1,2}, (__m128i){10,20}), 0,40));811 812__m256i test_mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,813           __m256i __Y) {814  //CHECK-LABEL: test_mm256_mask_mul_epu32815  //CHECK: and <4 x i64> %{{.*}}, splat (i64 4294967295)816  //CHECK: and <4 x i64> %{{.*}}, splat (i64 4294967295)817  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}818  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}819  return _mm256_mask_mul_epu32(__W, __M, __X, __Y);820}821TEST_CONSTEXPR(match_m256i(_mm256_mask_mul_epu32((__m256i){100,200,300,400}, (__mmask8)0b00001100, (__m256i){1,2,3,4}, (__m256i){10,20,30,40}), 100,200,90,160));822 823__m256i test_mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y) {824  //CHECK-LABEL: test_mm256_maskz_mul_epu32825  //CHECK: and <4 x i64> %{{.*}}, splat (i64 4294967295)826  //CHECK: and <4 x i64> %{{.*}}, splat (i64 4294967295)827  //CHECK: mul <4 x i64> %{{.*}}, %{{.*}}828  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}829  return _mm256_maskz_mul_epu32(__M, __X, __Y);830}831TEST_CONSTEXPR(match_m256i(_mm256_maskz_mul_epu32((__mmask8)0b00001100, (__m256i){1,2,3,4}, (__m256i){10,20,30,40}), 0,0,90,160));832 833__m128i test_mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,834        __m128i __Y) {835  //CHECK-LABEL: test_mm_mask_mul_epu32836  //CHECK: and <2 x i64> %{{.*}}, splat (i64 4294967295)837  //CHECK: and <2 x i64> %{{.*}}, splat (i64 4294967295)838  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}839  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}840  return _mm_mask_mul_epu32(__W, __M, __X, __Y);841}842TEST_CONSTEXPR(match_m128i(_mm_mask_mul_epu32((__m128i){100,200}, (__mmask8)0b00000001, (__m128i){1,2}, (__m128i){10,20}), 10,200));843 844__m128i test_mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y) {845  //CHECK-LABEL: test_mm_maskz_mul_epu32846  //CHECK: and <2 x i64> %{{.*}}, splat (i64 4294967295)847  //CHECK: and <2 x i64> %{{.*}}, splat (i64 4294967295)848  //CHECK: mul <2 x i64> %{{.*}}, %{{.*}}849  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}850  return _mm_maskz_mul_epu32(__M, __X, __Y);851}852TEST_CONSTEXPR(match_m128i(_mm_maskz_mul_epu32((__mmask8)0b00000010, (__m128i){1,2}, (__m128i){10,20}), 0,40));853 854__m128i test_mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B) {855  //CHECK-LABEL: test_mm_maskz_mullo_epi32856  //CHECK: mul <4 x i32> %{{.*}}, %{{.*}}857  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}858  return _mm_maskz_mullo_epi32(__M, __A, __B);859}860 861__m128i test_mm_mask_mullo_epi32 (__m128i __W, __mmask8 __M, __m128i __A,862          __m128i __B) {863  //CHECK-LABEL: test_mm_mask_mullo_epi32864  //CHECK: mul <4 x i32> %{{.*}}, %{{.*}}865  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}866  return _mm_mask_mullo_epi32(__W, __M, __A, __B);867}868 869__m256i test_mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B) {870  //CHECK-LABEL: test_mm256_maskz_mullo_epi32871  //CHECK: mul <8 x i32> %{{.*}}, %{{.*}}872  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}873  return _mm256_maskz_mullo_epi32(__M, __A, __B);874}875TEST_CONSTEXPR(match_v8si(_mm256_maskz_mullo_epi32(0x0F, (__m256i)(__v8si){+1, -2, +3, -4, +5, -6, +7, -8}, (__m256i)(__v8si){-2, +3, +4, +5, -6, +7, +8, +9}), -2, -6, +12, -20, 0, 0, 0, 0));876 877__m256i test_mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,878       __m256i __B) {879  //CHECK-LABEL: test_mm256_mask_mullo_epi32880  //CHECK: mul <8 x i32> %{{.*}}, %{{.*}}881  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}882  return _mm256_mask_mullo_epi32(__W, __M, __A, __B);883}884TEST_CONSTEXPR(match_v8si(_mm256_mask_mullo_epi32((__m256i)(__v8si){-100, +200, -300, +400, -500, +600, -700, +800}, 0x0F, (__m256i)(__v8si){+1, -2, +3, -4, +5, -6, +7, -8}, (__m256i)(__v8si){-2, +3, +4, +5, -6, +7, +8, +9}), -2, -6, +12, -20, -500, +600, -700, +800));885 886__m256i test_mm256_and_epi32 (__m256i __A, __m256i __B) {887  //CHECK-LABEL: test_mm256_and_epi32888  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}889  return _mm256_and_epi32(__A, __B);890}891TEST_CONSTEXPR(match_v4di(_mm256_and_epi32((__m256i)(__v4di){7, 7, 7, 7}, (__m256i)(__v4di){3, 3, 3, 3}), 3, 3, 3, 3));892 893__m256i test_mm256_mask_and_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {894  //CHECK-LABEL: test_mm256_mask_and_epi32895  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}896  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}897  return _mm256_mask_and_epi32(__W, __U, __A, __B);898}899 900__m256i test_mm256_maskz_and_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {901  //CHECK-LABEL: test_mm256_maskz_and_epi32902  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}903  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}904  return _mm256_maskz_and_epi32(__U, __A, __B);905}906 907__m128i test_mm_and_epi32 (__m128i __A, __m128i __B) {908  //CHECK-LABEL: test_mm_and_epi32909  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}910  return _mm_and_epi32(__A, __B);911}912TEST_CONSTEXPR(match_v2di(_mm_and_epi32((__m128i)(__v2di){7, 7}, (__m128i)(__v2di){3, 3}), 3, 3));913 914__m128i test_mm_mask_and_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {915  //CHECK-LABEL: test_mm_mask_and_epi32916  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}917  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}918  return _mm_mask_and_epi32(__W, __U, __A, __B);919}920 921__m128i test_mm_maskz_and_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {922  //CHECK-LABEL: test_mm_maskz_and_epi32923  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}924  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}925  return _mm_maskz_and_epi32(__U, __A, __B);926}927 928__m256i test_mm256_andnot_epi32 (__m256i __A, __m256i __B) {929  //CHECK-LABEL: test_mm256_andnot_epi32930  //CHECK: xor <8 x i32> %{{.*}}, splat (i32 -1)931  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}932  return _mm256_andnot_epi32(__A, __B);933}934 935__m256i test_mm256_mask_andnot_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {936  //CHECK-LABEL: test_mm256_mask_andnot_epi32937  //CHECK: xor <8 x i32> %{{.*}}, splat (i32 -1)938  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}939  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}940  return _mm256_mask_andnot_epi32(__W, __U, __A, __B);941}942 943__m256i test_mm256_maskz_andnot_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {944  //CHECK-LABEL: test_mm256_maskz_andnot_epi32945  //CHECK: xor <8 x i32> %{{.*}}, splat (i32 -1)946  //CHECK: and <8 x i32> %{{.*}}, %{{.*}}947  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}948  return _mm256_maskz_andnot_epi32(__U, __A, __B);949}950 951__m128i test_mm_andnot_epi32 (__m128i __A, __m128i __B) {952  //CHECK-LABEL: test_mm_andnot_epi32953  //CHECK: xor <4 x i32> %{{.*}}, splat (i32 -1)954  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}955  return _mm_andnot_epi32(__A, __B);956}957 958__m128i test_mm_mask_andnot_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {959  //CHECK-LABEL: test_mm_mask_andnot_epi32960  //CHECK: xor <4 x i32> %{{.*}}, splat (i32 -1)961  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}962  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}963  return _mm_mask_andnot_epi32(__W, __U, __A, __B);964}965 966__m128i test_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {967  //CHECK-LABEL: test_mm_maskz_andnot_epi32968  //CHECK: xor <4 x i32> %{{.*}}, splat (i32 -1)969  //CHECK: and <4 x i32> %{{.*}}, %{{.*}}970  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}971  return _mm_maskz_andnot_epi32(__U, __A, __B);972}973 974__m256i test_mm256_or_epi32 (__m256i __A, __m256i __B) {975  //CHECK-LABEL: test_mm256_or_epi32976  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}977  return _mm256_or_epi32(__A, __B);978}979 980__m256i test_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {981  //CHECK-LABEL: test_mm256_mask_or_epi32982  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}983  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}984  return _mm256_mask_or_epi32(__W, __U, __A, __B);985}986 987 __m256i test_mm256_maskz_or_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {988  //CHECK-LABEL: test_mm256_maskz_or_epi32989  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}990  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}991  return _mm256_maskz_or_epi32(__U, __A, __B);992}993 994__m128i test_mm_or_epi32 (__m128i __A, __m128i __B) {995  //CHECK-LABEL: test_mm_or_epi32996  //CHECK: or <4 x i32> %{{.*}}, %{{.*}}997  return _mm_or_epi32(__A, __B);998}999 1000__m128i test_mm_mask_or_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1001  //CHECK-LABEL: test_mm_mask_or_epi321002  //CHECK: or <4 x i32> %{{.*}}, %{{.*}}1003  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}1004  return _mm_mask_or_epi32(__W, __U, __A, __B);1005}1006 1007__m128i test_mm_maskz_or_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {1008  //CHECK-LABEL: test_mm_maskz_or_epi321009  //CHECK: or <4 x i32> %{{.*}}, %{{.*}}1010  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}1011  return _mm_maskz_or_epi32(__U, __A, __B);1012}1013 1014__m256i test_mm256_xor_epi32 (__m256i __A, __m256i __B) {1015  //CHECK-LABEL: test_mm256_xor_epi321016  //CHECK: or <8 x i32> %{{.*}}, %{{.*}}1017  return _mm256_xor_epi32(__A, __B);1018}1019 1020__m256i test_mm256_mask_xor_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {1021  //CHECK-LABEL: test_mm256_mask_xor_epi321022  //CHECK: xor <8 x i32> %{{.*}}, %{{.*}}1023  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}1024  return _mm256_mask_xor_epi32(__W, __U, __A, __B);1025}1026 1027__m256i test_mm256_maskz_xor_epi32 (__mmask8 __U, __m256i __A, __m256i __B) {1028  //CHECK-LABEL: test_mm256_maskz_xor_epi321029  //CHECK: xor <8 x i32> %{{.*}}, %{{.*}}1030  //CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}1031  return _mm256_maskz_xor_epi32(__U, __A, __B);1032}1033 1034__m128i test_mm_xor_epi32 (__m128i __A, __m128i __B) {1035  //CHECK-LABEL: test_mm_xor_epi321036  //CHECK: xor <4 x i32> %{{.*}}, %{{.*}}1037  return _mm_xor_epi32(__A, __B);1038}1039 1040__m128i test_mm_mask_xor_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1041  //CHECK-LABEL: test_mm_mask_xor_epi321042  //CHECK: xor <4 x i32> %{{.*}}, %{{.*}}1043  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}1044  return _mm_mask_xor_epi32(__W, __U, __A, __B);1045}1046 1047__m128i test_mm_maskz_xor_epi32 (__mmask8 __U, __m128i __A, __m128i __B) {1048  //CHECK-LABEL: test_mm_maskz_xor_epi321049  //CHECK: xor <4 x i32> %{{.*}}, %{{.*}}1050  //CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}1051  return _mm_maskz_xor_epi32(__U, __A, __B);1052}1053 1054__m256i test_mm256_and_epi64 (__m256i __A, __m256i __B) {1055  //CHECK-LABEL: test_mm256_and_epi641056  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}1057  return _mm256_and_epi64(__A, __B);1058}1059 1060__m256i test_mm256_mask_and_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {1061  //CHECK-LABEL: test_mm256_mask_and_epi641062  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}1063  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1064  return _mm256_mask_and_epi64(__W, __U, __A, __B);1065}1066 1067__m256i test_mm256_maskz_and_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {1068  //CHECK-LABEL: test_mm256_maskz_and_epi641069  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}1070  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1071  return _mm256_maskz_and_epi64(__U, __A, __B);1072}1073 1074__m128i test_mm_and_epi64 (__m128i __A, __m128i __B) {1075  //CHECK-LABEL: test_mm_and_epi641076  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}1077  return _mm_and_epi64(__A, __B);1078}1079 1080__m128i test_mm_mask_and_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1081  //CHECK-LABEL: test_mm_mask_and_epi641082  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}1083  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1084  return _mm_mask_and_epi64(__W,__U, __A, __B);1085}1086 1087__m128i test_mm_maskz_and_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {1088  //CHECK-LABEL: test_mm_maskz_and_epi641089  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}1090  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1091  return _mm_maskz_and_epi64(__U, __A, __B);1092}1093 1094__m256i test_mm256_andnot_epi64 (__m256i __A, __m256i __B) {1095  //CHECK-LABEL: test_mm256_andnot_epi641096  //CHECK: xor <4 x i64> %{{.*}}, splat (i64 -1)1097  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}1098  return _mm256_andnot_epi64(__A, __B);1099}1100 1101__m256i test_mm256_mask_andnot_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {1102  //CHECK-LABEL: test_mm256_mask_andnot_epi641103  //CHECK: xor <4 x i64> %{{.*}}, splat (i64 -1)1104  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}1105  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1106  return _mm256_mask_andnot_epi64(__W, __U, __A, __B);1107}1108 1109__m256i test_mm256_maskz_andnot_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {1110  //CHECK-LABEL: test_mm256_maskz_andnot_epi641111  //CHECK: xor <4 x i64> %{{.*}}, splat (i64 -1)1112  //CHECK: and <4 x i64> %{{.*}}, %{{.*}}1113  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1114  return _mm256_maskz_andnot_epi64(__U, __A, __B);1115}1116 1117__m128i test_mm_andnot_epi64 (__m128i __A, __m128i __B) {1118  //CHECK-LABEL: test_mm_andnot_epi641119  //CHECK: xor <2 x i64> %{{.*}}, splat (i64 -1)1120  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}1121  return _mm_andnot_epi64(__A, __B);1122}1123 1124__m128i test_mm_mask_andnot_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1125  //CHECK-LABEL: test_mm_mask_andnot_epi641126  //CHECK: xor <2 x i64> %{{.*}}, splat (i64 -1)1127  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}1128  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1129  return _mm_mask_andnot_epi64(__W,__U, __A, __B);1130}1131 1132__m128i test_mm_maskz_andnot_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {1133  //CHECK-LABEL: test_mm_maskz_andnot_epi641134  //CHECK: xor <2 x i64> %{{.*}}, splat (i64 -1)1135  //CHECK: and <2 x i64> %{{.*}}, %{{.*}}1136  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1137  return _mm_maskz_andnot_epi64(__U, __A, __B);1138}1139 1140__m256i test_mm256_or_epi64 (__m256i __A, __m256i __B) {1141  //CHECK-LABEL: test_mm256_or_epi641142  //CHECK: or <4 x i64> %{{.*}}, %{{.*}}1143  return _mm256_or_epi64(__A, __B);1144}1145 1146__m256i test_mm256_mask_or_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {1147  //CHECK-LABEL: test_mm256_mask_or_epi641148  //CHECK: or <4 x i64> %{{.*}}, %{{.*}}1149  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1150  return _mm256_mask_or_epi64(__W,__U, __A, __B);1151}1152 1153__m256i test_mm256_maskz_or_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {1154  //CHECK-LABEL: test_mm256_maskz_or_epi641155  //CHECK: or <4 x i64> %{{.*}}, %{{.*}}1156  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1157  return _mm256_maskz_or_epi64(__U, __A, __B);1158}1159 1160__m128i test_mm_or_epi64 (__m128i __A, __m128i __B) {1161  //CHECK-LABEL: test_mm_or_epi641162  //CHECK: or <2 x i64> %{{.*}}, %{{.*}}1163  return _mm_or_epi64(__A, __B);1164}1165 1166__m128i test_mm_mask_or_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1167  //CHECK-LABEL: test_mm_mask_or_epi641168  //CHECK: or <2 x i64> %{{.*}}, %{{.*}}1169  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1170  return _mm_mask_or_epi64(__W, __U, __A, __B);1171}1172 1173__m128i test_mm_maskz_or_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {1174  //CHECK-LABEL: test_mm_maskz_or_epi641175  //CHECK: or <2 x i64> %{{.*}}, %{{.*}}1176  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1177  return _mm_maskz_or_epi64( __U, __A, __B);1178}1179 1180__m256i test_mm256_xor_epi64 (__m256i __A, __m256i __B) {1181  //CHECK-LABEL: test_mm256_xor_epi641182  //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}1183  return _mm256_xor_epi64(__A, __B);1184}1185 1186__m256i test_mm256_mask_xor_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {1187  //CHECK-LABEL: test_mm256_mask_xor_epi641188  //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}1189  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1190  return _mm256_mask_xor_epi64(__W,__U, __A, __B);1191}1192 1193__m256i test_mm256_maskz_xor_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {1194  //CHECK-LABEL: test_mm256_maskz_xor_epi641195  //CHECK: xor <4 x i64> %{{.*}}, %{{.*}}1196  //CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1197  return _mm256_maskz_xor_epi64(__U, __A, __B);1198}1199 1200__m128i test_mm_xor_epi64 (__m128i __A, __m128i __B) {1201  //CHECK-LABEL: test_mm_xor_epi641202  //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}1203  return _mm_xor_epi64(__A, __B);1204}1205 1206__m128i test_mm_mask_xor_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {1207  //CHECK-LABEL: test_mm_mask_xor_epi641208  //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}1209  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1210  return _mm_mask_xor_epi64(__W, __U, __A, __B);1211}1212 1213__m128i test_mm_maskz_xor_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {1214  //CHECK-LABEL: test_mm_maskz_xor_epi641215  //CHECK: xor <2 x i64> %{{.*}}, %{{.*}}1216  //CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1217  return _mm_maskz_xor_epi64( __U, __A, __B);1218}1219 1220__mmask8 test_mm256_cmp_ps_mask_eq_oq(__m256 a, __m256 b) {1221  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_oq1222  // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}1223  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OQ);1224}1225 1226__mmask8 test_mm256_cmp_ps_mask_lt_os(__m256 a, __m256 b) {1227  // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_os1228  // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}1229  return _mm256_cmp_ps_mask(a, b, _CMP_LT_OS);1230}1231 1232__mmask8 test_mm256_cmp_ps_mask_le_os(__m256 a, __m256 b) {1233  // CHECK-LABEL: test_mm256_cmp_ps_mask_le_os1234  // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}1235  return _mm256_cmp_ps_mask(a, b, _CMP_LE_OS);1236}1237 1238__mmask8 test_mm256_cmp_ps_mask_unord_q(__m256 a, __m256 b) {1239  // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_q1240  // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}1241  return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_Q);1242}1243 1244__mmask8 test_mm256_cmp_ps_mask_neq_uq(__m256 a, __m256 b) {1245  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_uq1246  // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}1247  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_UQ);1248}1249 1250__mmask8 test_mm256_cmp_ps_mask_nlt_us(__m256 a, __m256 b) {1251  // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_us1252  // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}1253  return _mm256_cmp_ps_mask(a, b, _CMP_NLT_US);1254}1255 1256__mmask8 test_mm256_cmp_ps_mask_nle_us(__m256 a, __m256 b) {1257  // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_us1258  // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}1259  return _mm256_cmp_ps_mask(a, b, _CMP_NLE_US);1260}1261 1262__mmask8 test_mm256_cmp_ps_mask_ord_q(__m256 a, __m256 b) {1263  // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_q1264  // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}1265  return _mm256_cmp_ps_mask(a, b, _CMP_ORD_Q);1266}1267 1268__mmask8 test_mm256_cmp_ps_mask_eq_uq(__m256 a, __m256 b) {1269  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_uq1270  // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}1271  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_UQ);1272}1273 1274__mmask8 test_mm256_cmp_ps_mask_nge_us(__m256 a, __m256 b) {1275  // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_us1276  // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}1277  return _mm256_cmp_ps_mask(a, b, _CMP_NGE_US);1278}1279 1280__mmask8 test_mm256_cmp_ps_mask_ngt_us(__m256 a, __m256 b) {1281  // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_us1282  // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}1283  return _mm256_cmp_ps_mask(a, b, _CMP_NGT_US);1284}1285 1286__mmask8 test_mm256_cmp_ps_mask_false_oq(__m256 a, __m256 b) {1287  // CHECK-LABEL: test_mm256_cmp_ps_mask_false_oq1288  // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}1289  return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OQ);1290}1291 1292__mmask8 test_mm256_cmp_ps_mask_neq_oq(__m256 a, __m256 b) {1293  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_oq1294  // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}1295  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OQ);1296}1297 1298__mmask8 test_mm256_cmp_ps_mask_ge_os(__m256 a, __m256 b) {1299  // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_os1300  // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}1301  return _mm256_cmp_ps_mask(a, b, _CMP_GE_OS);1302}1303 1304__mmask8 test_mm256_cmp_ps_mask_gt_os(__m256 a, __m256 b) {1305  // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_os1306  // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}1307  return _mm256_cmp_ps_mask(a, b, _CMP_GT_OS);1308}1309 1310__mmask8 test_mm256_cmp_ps_mask_true_uq(__m256 a, __m256 b) {1311  // CHECK-LABEL: test_mm256_cmp_ps_mask_true_uq1312  // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}1313  return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_UQ);1314}1315 1316__mmask8 test_mm256_cmp_ps_mask_eq_os(__m256 a, __m256 b) {1317  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_os1318  // CHECK: fcmp oeq <8 x float> %{{.*}}, %{{.*}}1319  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_OS);1320}1321 1322__mmask8 test_mm256_cmp_ps_mask_lt_oq(__m256 a, __m256 b) {1323  // CHECK-LABEL: test_mm256_cmp_ps_mask_lt_oq1324  // CHECK: fcmp olt <8 x float> %{{.*}}, %{{.*}}1325  return _mm256_cmp_ps_mask(a, b, _CMP_LT_OQ);1326}1327 1328__mmask8 test_mm256_cmp_ps_mask_le_oq(__m256 a, __m256 b) {1329  // CHECK-LABEL: test_mm256_cmp_ps_mask_le_oq1330  // CHECK: fcmp ole <8 x float> %{{.*}}, %{{.*}}1331  return _mm256_cmp_ps_mask(a, b, _CMP_LE_OQ);1332}1333 1334__mmask8 test_mm256_cmp_ps_mask_unord_s(__m256 a, __m256 b) {1335  // CHECK-LABEL: test_mm256_cmp_ps_mask_unord_s1336  // CHECK: fcmp uno <8 x float> %{{.*}}, %{{.*}}1337  return _mm256_cmp_ps_mask(a, b, _CMP_UNORD_S);1338}1339 1340__mmask8 test_mm256_cmp_ps_mask_neq_us(__m256 a, __m256 b) {1341  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_us1342  // CHECK: fcmp une <8 x float> %{{.*}}, %{{.*}}1343  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_US);1344}1345 1346__mmask8 test_mm256_cmp_ps_mask_nlt_uq(__m256 a, __m256 b) {1347  // CHECK-LABEL: test_mm256_cmp_ps_mask_nlt_uq1348  // CHECK: fcmp uge <8 x float> %{{.*}}, %{{.*}}1349  return _mm256_cmp_ps_mask(a, b, _CMP_NLT_UQ);1350}1351 1352__mmask8 test_mm256_cmp_ps_mask_nle_uq(__m256 a, __m256 b) {1353  // CHECK-LABEL: test_mm256_cmp_ps_mask_nle_uq1354  // CHECK: fcmp ugt <8 x float> %{{.*}}, %{{.*}}1355  return _mm256_cmp_ps_mask(a, b, _CMP_NLE_UQ);1356}1357 1358__mmask8 test_mm256_cmp_ps_mask_ord_s(__m256 a, __m256 b) {1359  // CHECK-LABEL: test_mm256_cmp_ps_mask_ord_s1360  // CHECK: fcmp ord <8 x float> %{{.*}}, %{{.*}}1361  return _mm256_cmp_ps_mask(a, b, _CMP_ORD_S);1362}1363 1364__mmask8 test_mm256_cmp_ps_mask_eq_us(__m256 a, __m256 b) {1365  // CHECK-LABEL: test_mm256_cmp_ps_mask_eq_us1366  // CHECK: fcmp ueq <8 x float> %{{.*}}, %{{.*}}1367  return _mm256_cmp_ps_mask(a, b, _CMP_EQ_US);1368}1369 1370__mmask8 test_mm256_cmp_ps_mask_nge_uq(__m256 a, __m256 b) {1371  // CHECK-LABEL: test_mm256_cmp_ps_mask_nge_uq1372  // CHECK: fcmp ult <8 x float> %{{.*}}, %{{.*}}1373  return _mm256_cmp_ps_mask(a, b, _CMP_NGE_UQ);1374}1375 1376__mmask8 test_mm256_cmp_ps_mask_ngt_uq(__m256 a, __m256 b) {1377  // CHECK-LABEL: test_mm256_cmp_ps_mask_ngt_uq1378  // CHECK: fcmp ule <8 x float> %{{.*}}, %{{.*}}1379  return _mm256_cmp_ps_mask(a, b, _CMP_NGT_UQ);1380}1381 1382__mmask8 test_mm256_cmp_ps_mask_false_os(__m256 a, __m256 b) {1383  // CHECK-LABEL: test_mm256_cmp_ps_mask_false_os1384  // CHECK: fcmp false <8 x float> %{{.*}}, %{{.*}}1385  return _mm256_cmp_ps_mask(a, b, _CMP_FALSE_OS);1386}1387 1388__mmask8 test_mm256_cmp_ps_mask_neq_os(__m256 a, __m256 b) {1389  // CHECK-LABEL: test_mm256_cmp_ps_mask_neq_os1390  // CHECK: fcmp one <8 x float> %{{.*}}, %{{.*}}1391  return _mm256_cmp_ps_mask(a, b, _CMP_NEQ_OS);1392}1393 1394__mmask8 test_mm256_cmp_ps_mask_ge_oq(__m256 a, __m256 b) {1395  // CHECK-LABEL: test_mm256_cmp_ps_mask_ge_oq1396  // CHECK: fcmp oge <8 x float> %{{.*}}, %{{.*}}1397  return _mm256_cmp_ps_mask(a, b, _CMP_GE_OQ);1398}1399 1400__mmask8 test_mm256_cmp_ps_mask_gt_oq(__m256 a, __m256 b) {1401  // CHECK-LABEL: test_mm256_cmp_ps_mask_gt_oq1402  // CHECK: fcmp ogt <8 x float> %{{.*}}, %{{.*}}1403  return _mm256_cmp_ps_mask(a, b, _CMP_GT_OQ);1404}1405 1406__mmask8 test_mm256_cmp_ps_mask_true_us(__m256 a, __m256 b) {1407  // CHECK-LABEL: test_mm256_cmp_ps_mask_true_us1408  // CHECK: fcmp true <8 x float> %{{.*}}, %{{.*}}1409  return _mm256_cmp_ps_mask(a, b, _CMP_TRUE_US);1410}1411 1412__mmask8 test_mm256_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m256 a, __m256 b) {1413  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_oq1414  // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}1415  // CHECK: and <8 x i1> [[CMP]], {{.*}}1416  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);1417}1418 1419__mmask8 test_mm256_mask_cmp_ps_mask_lt_os(__mmask8 m, __m256 a, __m256 b) {1420  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_os1421  // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}1422  // CHECK: and <8 x i1> [[CMP]], {{.*}}1423  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);1424}1425 1426__mmask8 test_mm256_mask_cmp_ps_mask_le_os(__mmask8 m, __m256 a, __m256 b) {1427  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_os1428  // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}1429  // CHECK: and <8 x i1> [[CMP]], {{.*}}1430  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);1431}1432 1433__mmask8 test_mm256_mask_cmp_ps_mask_unord_q(__mmask8 m, __m256 a, __m256 b) {1434  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_q1435  // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}1436  // CHECK: and <8 x i1> [[CMP]], {{.*}}1437  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);1438}1439 1440__mmask8 test_mm256_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m256 a, __m256 b) {1441  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_uq1442  // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}1443  // CHECK: and <8 x i1> [[CMP]], {{.*}}1444  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);1445}1446 1447__mmask8 test_mm256_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m256 a, __m256 b) {1448  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_us1449  // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}1450  // CHECK: and <8 x i1> [[CMP]], {{.*}}1451  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);1452}1453 1454__mmask8 test_mm256_mask_cmp_ps_mask_nle_us(__mmask8 m, __m256 a, __m256 b) {1455  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_us1456  // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}1457  // CHECK: and <8 x i1> [[CMP]], {{.*}}1458  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);1459}1460 1461__mmask8 test_mm256_mask_cmp_ps_mask_ord_q(__mmask8 m, __m256 a, __m256 b) {1462  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_q1463  // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}1464  // CHECK: and <8 x i1> [[CMP]], {{.*}}1465  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);1466}1467 1468__mmask8 test_mm256_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m256 a, __m256 b) {1469  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_uq1470  // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}1471  // CHECK: and <8 x i1> [[CMP]], {{.*}}1472  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);1473}1474 1475__mmask8 test_mm256_mask_cmp_ps_mask_nge_us(__mmask8 m, __m256 a, __m256 b) {1476  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_us1477  // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}1478  // CHECK: and <8 x i1> [[CMP]], {{.*}}1479  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);1480}1481 1482__mmask8 test_mm256_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m256 a, __m256 b) {1483  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_us1484  // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}1485  // CHECK: and <8 x i1> [[CMP]], {{.*}}1486  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);1487}1488 1489__mmask8 test_mm256_mask_cmp_ps_mask_false_oq(__mmask8 m, __m256 a, __m256 b) {1490  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_oq1491  // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}1492  // CHECK: and <8 x i1> [[CMP]], {{.*}}1493  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);1494}1495 1496__mmask8 test_mm256_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m256 a, __m256 b) {1497  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_oq1498  // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}1499  // CHECK: and <8 x i1> [[CMP]], {{.*}}1500  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);1501}1502 1503__mmask8 test_mm256_mask_cmp_ps_mask_ge_os(__mmask8 m, __m256 a, __m256 b) {1504  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_os1505  // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}1506  // CHECK: and <8 x i1> [[CMP]], {{.*}}1507  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);1508}1509 1510__mmask8 test_mm256_mask_cmp_ps_mask_gt_os(__mmask8 m, __m256 a, __m256 b) {1511  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_os1512  // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}1513  // CHECK: and <8 x i1> [[CMP]], {{.*}}1514  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);1515}1516 1517__mmask8 test_mm256_mask_cmp_ps_mask_true_uq(__mmask8 m, __m256 a, __m256 b) {1518  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_uq1519  // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}1520  // CHECK: and <8 x i1> [[CMP]], {{.*}}1521  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);1522}1523 1524__mmask8 test_mm256_mask_cmp_ps_mask_eq_os(__mmask8 m, __m256 a, __m256 b) {1525  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_os1526  // CHECK: [[CMP:%.*]] = fcmp oeq <8 x float> %{{.*}}, %{{.*}}1527  // CHECK: and <8 x i1> [[CMP]], {{.*}}1528  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);1529}1530 1531__mmask8 test_mm256_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m256 a, __m256 b) {1532  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_lt_oq1533  // CHECK: [[CMP:%.*]] = fcmp olt <8 x float> %{{.*}}, %{{.*}}1534  // CHECK: and <8 x i1> [[CMP]], {{.*}}1535  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);1536}1537 1538__mmask8 test_mm256_mask_cmp_ps_mask_le_oq(__mmask8 m, __m256 a, __m256 b) {1539  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_le_oq1540  // CHECK: [[CMP:%.*]] = fcmp ole <8 x float> %{{.*}}, %{{.*}}1541  // CHECK: and <8 x i1> [[CMP]], {{.*}}1542  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);1543}1544 1545__mmask8 test_mm256_mask_cmp_ps_mask_unord_s(__mmask8 m, __m256 a, __m256 b) {1546  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_unord_s1547  // CHECK: [[CMP:%.*]] = fcmp uno <8 x float> %{{.*}}, %{{.*}}1548  // CHECK: and <8 x i1> [[CMP]], {{.*}}1549  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);1550}1551 1552__mmask8 test_mm256_mask_cmp_ps_mask_neq_us(__mmask8 m, __m256 a, __m256 b) {1553  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_us1554  // CHECK: [[CMP:%.*]] = fcmp une <8 x float> %{{.*}}, %{{.*}}1555  // CHECK: and <8 x i1> [[CMP]], {{.*}}1556  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);1557}1558 1559__mmask8 test_mm256_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m256 a, __m256 b) {1560  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nlt_uq1561  // CHECK: [[CMP:%.*]] = fcmp uge <8 x float> %{{.*}}, %{{.*}}1562  // CHECK: and <8 x i1> [[CMP]], {{.*}}1563  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);1564}1565 1566__mmask8 test_mm256_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m256 a, __m256 b) {1567  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nle_uq1568  // CHECK: [[CMP:%.*]] = fcmp ugt <8 x float> %{{.*}}, %{{.*}}1569  // CHECK: and <8 x i1> [[CMP]], {{.*}}1570  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);1571}1572 1573__mmask8 test_mm256_mask_cmp_ps_mask_ord_s(__mmask8 m, __m256 a, __m256 b) {1574  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ord_s1575  // CHECK: [[CMP:%.*]] = fcmp ord <8 x float> %{{.*}}, %{{.*}}1576  // CHECK: and <8 x i1> [[CMP]], {{.*}}1577  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);1578}1579 1580__mmask8 test_mm256_mask_cmp_ps_mask_eq_us(__mmask8 m, __m256 a, __m256 b) {1581  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_eq_us1582  // CHECK: [[CMP:%.*]] = fcmp ueq <8 x float> %{{.*}}, %{{.*}}1583  // CHECK: and <8 x i1> [[CMP]], {{.*}}1584  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);1585}1586 1587__mmask8 test_mm256_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m256 a, __m256 b) {1588  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_nge_uq1589  // CHECK: [[CMP:%.*]] = fcmp ult <8 x float> %{{.*}}, %{{.*}}1590  // CHECK: and <8 x i1> [[CMP]], {{.*}}1591  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);1592}1593 1594__mmask8 test_mm256_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m256 a, __m256 b) {1595  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ngt_uq1596  // CHECK: [[CMP:%.*]] = fcmp ule <8 x float> %{{.*}}, %{{.*}}1597  // CHECK: and <8 x i1> [[CMP]], {{.*}}1598  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);1599}1600 1601__mmask8 test_mm256_mask_cmp_ps_mask_false_os(__mmask8 m, __m256 a, __m256 b) {1602  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_false_os1603  // CHECK: [[CMP:%.*]] = fcmp false <8 x float> %{{.*}}, %{{.*}}1604  // CHECK: and <8 x i1> [[CMP]], {{.*}}1605  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);1606}1607 1608__mmask8 test_mm256_mask_cmp_ps_mask_neq_os(__mmask8 m, __m256 a, __m256 b) {1609  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_neq_os1610  // CHECK: [[CMP:%.*]] = fcmp one <8 x float> %{{.*}}, %{{.*}}1611  // CHECK: and <8 x i1> [[CMP]], {{.*}}1612  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);1613}1614 1615__mmask8 test_mm256_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m256 a, __m256 b) {1616  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_ge_oq1617  // CHECK: [[CMP:%.*]] = fcmp oge <8 x float> %{{.*}}, %{{.*}}1618  // CHECK: and <8 x i1> [[CMP]], {{.*}}1619  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);1620}1621 1622__mmask8 test_mm256_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m256 a, __m256 b) {1623  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_gt_oq1624  // CHECK: [[CMP:%.*]] = fcmp ogt <8 x float> %{{.*}}, %{{.*}}1625  // CHECK: and <8 x i1> [[CMP]], {{.*}}1626  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);1627}1628 1629__mmask8 test_mm256_mask_cmp_ps_mask_true_us(__mmask8 m, __m256 a, __m256 b) {1630  // CHECK-LABEL: test_mm256_mask_cmp_ps_mask_true_us1631  // CHECK: [[CMP:%.*]] = fcmp true <8 x float> %{{.*}}, %{{.*}}1632  // CHECK: and <8 x i1> [[CMP]], {{.*}}1633  return _mm256_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);1634}1635 1636__mmask8 test_mm256_cmp_pd_mask_eq_oq(__m256d a, __m256d b) {1637  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_oq1638  // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}1639  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OQ);1640}1641 1642__mmask8 test_mm256_cmp_pd_mask_lt_os(__m256d a, __m256d b) {1643  // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_os1644  // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}1645  return _mm256_cmp_pd_mask(a, b, _CMP_LT_OS);1646}1647 1648__mmask8 test_mm256_cmp_pd_mask_le_os(__m256d a, __m256d b) {1649  // CHECK-LABEL: test_mm256_cmp_pd_mask_le_os1650  // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}1651  return _mm256_cmp_pd_mask(a, b, _CMP_LE_OS);1652}1653 1654__mmask8 test_mm256_cmp_pd_mask_unord_q(__m256d a, __m256d b) {1655  // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_q1656  // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}1657  return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_Q);1658}1659 1660__mmask8 test_mm256_cmp_pd_mask_neq_uq(__m256d a, __m256d b) {1661  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_uq1662  // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}1663  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_UQ);1664}1665 1666__mmask8 test_mm256_cmp_pd_mask_nlt_us(__m256d a, __m256d b) {1667  // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_us1668  // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}1669  return _mm256_cmp_pd_mask(a, b, _CMP_NLT_US);1670}1671 1672__mmask8 test_mm256_cmp_pd_mask_nle_us(__m256d a, __m256d b) {1673  // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_us1674  // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}1675  return _mm256_cmp_pd_mask(a, b, _CMP_NLE_US);1676}1677 1678__mmask8 test_mm256_cmp_pd_mask_ord_q(__m256d a, __m256d b) {1679  // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_q1680  // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}1681  return _mm256_cmp_pd_mask(a, b, _CMP_ORD_Q);1682}1683 1684__mmask8 test_mm256_cmp_pd_mask_eq_uq(__m256d a, __m256d b) {1685  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_uq1686  // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}1687  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_UQ);1688}1689 1690__mmask8 test_mm256_cmp_pd_mask_nge_us(__m256d a, __m256d b) {1691  // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_us1692  // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}1693  return _mm256_cmp_pd_mask(a, b, _CMP_NGE_US);1694}1695 1696__mmask8 test_mm256_cmp_pd_mask_ngt_us(__m256d a, __m256d b) {1697  // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_us1698  // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}1699  return _mm256_cmp_pd_mask(a, b, _CMP_NGT_US);1700}1701 1702__mmask8 test_mm256_cmp_pd_mask_false_oq(__m256d a, __m256d b) {1703  // CHECK-LABEL: test_mm256_cmp_pd_mask_false_oq1704  // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}1705  return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OQ);1706}1707 1708__mmask8 test_mm256_cmp_pd_mask_neq_oq(__m256d a, __m256d b) {1709  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_oq1710  // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}1711  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OQ);1712}1713 1714__mmask8 test_mm256_cmp_pd_mask_ge_os(__m256d a, __m256d b) {1715  // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_os1716  // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}1717  return _mm256_cmp_pd_mask(a, b, _CMP_GE_OS);1718}1719 1720__mmask8 test_mm256_cmp_pd_mask_gt_os(__m256d a, __m256d b) {1721  // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_os1722  // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}1723  return _mm256_cmp_pd_mask(a, b, _CMP_GT_OS);1724}1725 1726__mmask8 test_mm256_cmp_pd_mask_true_uq(__m256d a, __m256d b) {1727  // CHECK-LABEL: test_mm256_cmp_pd_mask_true_uq1728  // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}1729  return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_UQ);1730}1731 1732__mmask8 test_mm256_cmp_pd_mask_eq_os(__m256d a, __m256d b) {1733  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_os1734  // CHECK: fcmp oeq <4 x double> %{{.*}}, %{{.*}}1735  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_OS);1736}1737 1738__mmask8 test_mm256_cmp_pd_mask_lt_oq(__m256d a, __m256d b) {1739  // CHECK-LABEL: test_mm256_cmp_pd_mask_lt_oq1740  // CHECK: fcmp olt <4 x double> %{{.*}}, %{{.*}}1741  return _mm256_cmp_pd_mask(a, b, _CMP_LT_OQ);1742}1743 1744__mmask8 test_mm256_cmp_pd_mask_le_oq(__m256d a, __m256d b) {1745  // CHECK-LABEL: test_mm256_cmp_pd_mask_le_oq1746  // CHECK: fcmp ole <4 x double> %{{.*}}, %{{.*}}1747  return _mm256_cmp_pd_mask(a, b, _CMP_LE_OQ);1748}1749 1750__mmask8 test_mm256_cmp_pd_mask_unord_s(__m256d a, __m256d b) {1751  // CHECK-LABEL: test_mm256_cmp_pd_mask_unord_s1752  // CHECK: fcmp uno <4 x double> %{{.*}}, %{{.*}}1753  return _mm256_cmp_pd_mask(a, b, _CMP_UNORD_S);1754}1755 1756__mmask8 test_mm256_cmp_pd_mask_neq_us(__m256d a, __m256d b) {1757  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_us1758  // CHECK: fcmp une <4 x double> %{{.*}}, %{{.*}}1759  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_US);1760}1761 1762__mmask8 test_mm256_cmp_pd_mask_nlt_uq(__m256d a, __m256d b) {1763  // CHECK-LABEL: test_mm256_cmp_pd_mask_nlt_uq1764  // CHECK: fcmp uge <4 x double> %{{.*}}, %{{.*}}1765  return _mm256_cmp_pd_mask(a, b, _CMP_NLT_UQ);1766}1767 1768__mmask8 test_mm256_cmp_pd_mask_nle_uq(__m256d a, __m256d b) {1769  // CHECK-LABEL: test_mm256_cmp_pd_mask_nle_uq1770  // CHECK: fcmp ugt <4 x double> %{{.*}}, %{{.*}}1771  return _mm256_cmp_pd_mask(a, b, _CMP_NLE_UQ);1772}1773 1774__mmask8 test_mm256_cmp_pd_mask_ord_s(__m256d a, __m256d b) {1775  // CHECK-LABEL: test_mm256_cmp_pd_mask_ord_s1776  // CHECK: fcmp ord <4 x double> %{{.*}}, %{{.*}}1777  return _mm256_cmp_pd_mask(a, b, _CMP_ORD_S);1778}1779 1780__mmask8 test_mm256_cmp_pd_mask_eq_us(__m256d a, __m256d b) {1781  // CHECK-LABEL: test_mm256_cmp_pd_mask_eq_us1782  // CHECK: fcmp ueq <4 x double> %{{.*}}, %{{.*}}1783  return _mm256_cmp_pd_mask(a, b, _CMP_EQ_US);1784}1785 1786__mmask8 test_mm256_cmp_pd_mask_nge_uq(__m256d a, __m256d b) {1787  // CHECK-LABEL: test_mm256_cmp_pd_mask_nge_uq1788  // CHECK: fcmp ult <4 x double> %{{.*}}, %{{.*}}1789  return _mm256_cmp_pd_mask(a, b, _CMP_NGE_UQ);1790}1791 1792__mmask8 test_mm256_cmp_pd_mask_ngt_uq(__m256d a, __m256d b) {1793  // CHECK-LABEL: test_mm256_cmp_pd_mask_ngt_uq1794  // CHECK: fcmp ule <4 x double> %{{.*}}, %{{.*}}1795  return _mm256_cmp_pd_mask(a, b, _CMP_NGT_UQ);1796}1797 1798__mmask8 test_mm256_cmp_pd_mask_false_os(__m256d a, __m256d b) {1799  // CHECK-LABEL: test_mm256_cmp_pd_mask_false_os1800  // CHECK: fcmp false <4 x double> %{{.*}}, %{{.*}}1801  return _mm256_cmp_pd_mask(a, b, _CMP_FALSE_OS);1802}1803 1804__mmask8 test_mm256_cmp_pd_mask_neq_os(__m256d a, __m256d b) {1805  // CHECK-LABEL: test_mm256_cmp_pd_mask_neq_os1806  // CHECK: fcmp one <4 x double> %{{.*}}, %{{.*}}1807  return _mm256_cmp_pd_mask(a, b, _CMP_NEQ_OS);1808}1809 1810__mmask8 test_mm256_cmp_pd_mask_ge_oq(__m256d a, __m256d b) {1811  // CHECK-LABEL: test_mm256_cmp_pd_mask_ge_oq1812  // CHECK: fcmp oge <4 x double> %{{.*}}, %{{.*}}1813  return _mm256_cmp_pd_mask(a, b, _CMP_GE_OQ);1814}1815 1816__mmask8 test_mm256_cmp_pd_mask_gt_oq(__m256d a, __m256d b) {1817  // CHECK-LABEL: test_mm256_cmp_pd_mask_gt_oq1818  // CHECK: fcmp ogt <4 x double> %{{.*}}, %{{.*}}1819  return _mm256_cmp_pd_mask(a, b, _CMP_GT_OQ);1820}1821 1822__mmask8 test_mm256_cmp_pd_mask_true_us(__m256d a, __m256d b) {1823  // CHECK-LABEL: test_mm256_cmp_pd_mask_true_us1824  // CHECK: fcmp true <4 x double> %{{.*}}, %{{.*}}1825  return _mm256_cmp_pd_mask(a, b, _CMP_TRUE_US);1826}1827 1828__mmask8 test_mm256_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m256d a, __m256d b) {1829  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_oq1830  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}1831  // CHECK: and <4 x i1> [[CMP]], {{.*}}1832  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);1833}1834 1835__mmask8 test_mm256_mask_cmp_pd_mask_lt_os(__mmask8 m, __m256d a, __m256d b) {1836  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_os1837  // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}1838  // CHECK: and <4 x i1> [[CMP]], {{.*}}1839  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);1840}1841 1842__mmask8 test_mm256_mask_cmp_pd_mask_le_os(__mmask8 m, __m256d a, __m256d b) {1843  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_os1844  // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}1845  // CHECK: and <4 x i1> [[CMP]], {{.*}}1846  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);1847}1848 1849__mmask8 test_mm256_mask_cmp_pd_mask_unord_q(__mmask8 m, __m256d a, __m256d b) {1850  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_q1851  // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}1852  // CHECK: and <4 x i1> [[CMP]], {{.*}}1853  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);1854}1855 1856__mmask8 test_mm256_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m256d a, __m256d b) {1857  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_uq1858  // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}1859  // CHECK: and <4 x i1> [[CMP]], {{.*}}1860  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);1861}1862 1863__mmask8 test_mm256_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m256d a, __m256d b) {1864  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_us1865  // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}1866  // CHECK: and <4 x i1> [[CMP]], {{.*}}1867  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);1868}1869 1870__mmask8 test_mm256_mask_cmp_pd_mask_nle_us(__mmask8 m, __m256d a, __m256d b) {1871  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_us1872  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}1873  // CHECK: and <4 x i1> [[CMP]], {{.*}}1874  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);1875}1876 1877__mmask8 test_mm256_mask_cmp_pd_mask_ord_q(__mmask8 m, __m256d a, __m256d b) {1878  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_q1879  // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}1880  // CHECK: and <4 x i1> [[CMP]], {{.*}}1881  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);1882}1883 1884__mmask8 test_mm256_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m256d a, __m256d b) {1885  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_uq1886  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}1887  // CHECK: and <4 x i1> [[CMP]], {{.*}}1888  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);1889}1890 1891__mmask8 test_mm256_mask_cmp_pd_mask_nge_us(__mmask8 m, __m256d a, __m256d b) {1892  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_us1893  // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}1894  // CHECK: and <4 x i1> [[CMP]], {{.*}}1895  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);1896}1897 1898__mmask8 test_mm256_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m256d a, __m256d b) {1899  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_us1900  // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}1901  // CHECK: and <4 x i1> [[CMP]], {{.*}}1902  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);1903}1904 1905__mmask8 test_mm256_mask_cmp_pd_mask_false_oq(__mmask8 m, __m256d a, __m256d b) {1906  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_oq1907  // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}1908  // CHECK: and <4 x i1> [[CMP]], {{.*}}1909  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);1910}1911 1912__mmask8 test_mm256_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m256d a, __m256d b) {1913  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_oq1914  // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}1915  // CHECK: and <4 x i1> [[CMP]], {{.*}}1916  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);1917}1918 1919__mmask8 test_mm256_mask_cmp_pd_mask_ge_os(__mmask8 m, __m256d a, __m256d b) {1920  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_os1921  // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}1922  // CHECK: and <4 x i1> [[CMP]], {{.*}}1923  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);1924}1925 1926__mmask8 test_mm256_mask_cmp_pd_mask_gt_os(__mmask8 m, __m256d a, __m256d b) {1927  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_os1928  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}1929  // CHECK: and <4 x i1> [[CMP]], {{.*}}1930  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);1931}1932 1933__mmask8 test_mm256_mask_cmp_pd_mask_true_uq(__mmask8 m, __m256d a, __m256d b) {1934  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_uq1935  // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}1936  // CHECK: and <4 x i1> [[CMP]], {{.*}}1937  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);1938}1939 1940__mmask8 test_mm256_mask_cmp_pd_mask_eq_os(__mmask8 m, __m256d a, __m256d b) {1941  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_os1942  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x double> %{{.*}}, %{{.*}}1943  // CHECK: and <4 x i1> [[CMP]], {{.*}}1944  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);1945}1946 1947__mmask8 test_mm256_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m256d a, __m256d b) {1948  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_lt_oq1949  // CHECK: [[CMP:%.*]] = fcmp olt <4 x double> %{{.*}}, %{{.*}}1950  // CHECK: and <4 x i1> [[CMP]], {{.*}}1951  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);1952}1953 1954__mmask8 test_mm256_mask_cmp_pd_mask_le_oq(__mmask8 m, __m256d a, __m256d b) {1955  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_le_oq1956  // CHECK: [[CMP:%.*]] = fcmp ole <4 x double> %{{.*}}, %{{.*}}1957  // CHECK: and <4 x i1> [[CMP]], {{.*}}1958  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);1959}1960 1961__mmask8 test_mm256_mask_cmp_pd_mask_unord_s(__mmask8 m, __m256d a, __m256d b) {1962  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_unord_s1963  // CHECK: [[CMP:%.*]] = fcmp uno <4 x double> %{{.*}}, %{{.*}}1964  // CHECK: and <4 x i1> [[CMP]], {{.*}}1965  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);1966}1967 1968__mmask8 test_mm256_mask_cmp_pd_mask_neq_us(__mmask8 m, __m256d a, __m256d b) {1969  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_us1970  // CHECK: [[CMP:%.*]] = fcmp une <4 x double> %{{.*}}, %{{.*}}1971  // CHECK: and <4 x i1> [[CMP]], {{.*}}1972  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);1973}1974 1975__mmask8 test_mm256_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m256d a, __m256d b) {1976  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nlt_uq1977  // CHECK: [[CMP:%.*]] = fcmp uge <4 x double> %{{.*}}, %{{.*}}1978  // CHECK: and <4 x i1> [[CMP]], {{.*}}1979  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);1980}1981 1982__mmask8 test_mm256_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m256d a, __m256d b) {1983  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nle_uq1984  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x double> %{{.*}}, %{{.*}}1985  // CHECK: and <4 x i1> [[CMP]], {{.*}}1986  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);1987}1988 1989__mmask8 test_mm256_mask_cmp_pd_mask_ord_s(__mmask8 m, __m256d a, __m256d b) {1990  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ord_s1991  // CHECK: [[CMP:%.*]] = fcmp ord <4 x double> %{{.*}}, %{{.*}}1992  // CHECK: and <4 x i1> [[CMP]], {{.*}}1993  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);1994}1995 1996__mmask8 test_mm256_mask_cmp_pd_mask_eq_us(__mmask8 m, __m256d a, __m256d b) {1997  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_eq_us1998  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x double> %{{.*}}, %{{.*}}1999  // CHECK: and <4 x i1> [[CMP]], {{.*}}2000  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);2001}2002 2003__mmask8 test_mm256_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m256d a, __m256d b) {2004  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_nge_uq2005  // CHECK: [[CMP:%.*]] = fcmp ult <4 x double> %{{.*}}, %{{.*}}2006  // CHECK: and <4 x i1> [[CMP]], {{.*}}2007  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);2008}2009 2010__mmask8 test_mm256_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m256d a, __m256d b) {2011  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ngt_uq2012  // CHECK: [[CMP:%.*]] = fcmp ule <4 x double> %{{.*}}, %{{.*}}2013  // CHECK: and <4 x i1> [[CMP]], {{.*}}2014  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);2015}2016 2017__mmask8 test_mm256_mask_cmp_pd_mask_false_os(__mmask8 m, __m256d a, __m256d b) {2018  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_false_os2019  // CHECK: [[CMP:%.*]] = fcmp false <4 x double> %{{.*}}, %{{.*}}2020  // CHECK: and <4 x i1> [[CMP]], {{.*}}2021  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);2022}2023 2024__mmask8 test_mm256_mask_cmp_pd_mask_neq_os(__mmask8 m, __m256d a, __m256d b) {2025  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_neq_os2026  // CHECK: [[CMP:%.*]] = fcmp one <4 x double> %{{.*}}, %{{.*}}2027  // CHECK: and <4 x i1> [[CMP]], {{.*}}2028  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);2029}2030 2031__mmask8 test_mm256_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m256d a, __m256d b) {2032  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_ge_oq2033  // CHECK: [[CMP:%.*]] = fcmp oge <4 x double> %{{.*}}, %{{.*}}2034  // CHECK: and <4 x i1> [[CMP]], {{.*}}2035  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);2036}2037 2038__mmask8 test_mm256_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m256d a, __m256d b) {2039  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_gt_oq2040  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x double> %{{.*}}, %{{.*}}2041  // CHECK: and <4 x i1> [[CMP]], {{.*}}2042  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);2043}2044 2045__mmask8 test_mm256_mask_cmp_pd_mask_true_us(__mmask8 m, __m256d a, __m256d b) {2046  // CHECK-LABEL: test_mm256_mask_cmp_pd_mask_true_us2047  // CHECK: [[CMP:%.*]] = fcmp true <4 x double> %{{.*}}, %{{.*}}2048  // CHECK: and <4 x i1> [[CMP]], {{.*}}2049  return _mm256_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);2050}2051 2052__mmask8 test_mm_cmp_ps_mask_eq_oq(__m128 a, __m128 b) {2053  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_oq2054  // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}2055  return _mm_cmp_ps_mask(a, b, _CMP_EQ_OQ);2056}2057 2058__mmask8 test_mm_cmp_ps_mask_lt_os(__m128 a, __m128 b) {2059  // CHECK-LABEL: test_mm_cmp_ps_mask_lt_os2060  // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}2061  return _mm_cmp_ps_mask(a, b, _CMP_LT_OS);2062}2063 2064__mmask8 test_mm_cmp_ps_mask_le_os(__m128 a, __m128 b) {2065  // CHECK-LABEL: test_mm_cmp_ps_mask_le_os2066  // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}2067  return _mm_cmp_ps_mask(a, b, _CMP_LE_OS);2068}2069 2070__mmask8 test_mm_cmp_ps_mask_unord_q(__m128 a, __m128 b) {2071  // CHECK-LABEL: test_mm_cmp_ps_mask_unord_q2072  // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}2073  return _mm_cmp_ps_mask(a, b, _CMP_UNORD_Q);2074}2075 2076__mmask8 test_mm_cmp_ps_mask_neq_uq(__m128 a, __m128 b) {2077  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_uq2078  // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}2079  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_UQ);2080}2081 2082__mmask8 test_mm_cmp_ps_mask_nlt_us(__m128 a, __m128 b) {2083  // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_us2084  // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}2085  return _mm_cmp_ps_mask(a, b, _CMP_NLT_US);2086}2087 2088__mmask8 test_mm_cmp_ps_mask_nle_us(__m128 a, __m128 b) {2089  // CHECK-LABEL: test_mm_cmp_ps_mask_nle_us2090  // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}2091  return _mm_cmp_ps_mask(a, b, _CMP_NLE_US);2092}2093 2094__mmask8 test_mm_cmp_ps_mask_ord_q(__m128 a, __m128 b) {2095  // CHECK-LABEL: test_mm_cmp_ps_mask_ord_q2096  // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}2097  return _mm_cmp_ps_mask(a, b, _CMP_ORD_Q);2098}2099 2100__mmask8 test_mm_cmp_ps_mask_eq_uq(__m128 a, __m128 b) {2101  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_uq2102  // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}2103  return _mm_cmp_ps_mask(a, b, _CMP_EQ_UQ);2104}2105 2106__mmask8 test_mm_cmp_ps_mask_nge_us(__m128 a, __m128 b) {2107  // CHECK-LABEL: test_mm_cmp_ps_mask_nge_us2108  // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}2109  return _mm_cmp_ps_mask(a, b, _CMP_NGE_US);2110}2111 2112__mmask8 test_mm_cmp_ps_mask_ngt_us(__m128 a, __m128 b) {2113  // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_us2114  // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}2115  return _mm_cmp_ps_mask(a, b, _CMP_NGT_US);2116}2117 2118__mmask8 test_mm_cmp_ps_mask_false_oq(__m128 a, __m128 b) {2119  // CHECK-LABEL: test_mm_cmp_ps_mask_false_oq2120  // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}2121  return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OQ);2122}2123 2124__mmask8 test_mm_cmp_ps_mask_neq_oq(__m128 a, __m128 b) {2125  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_oq2126  // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}2127  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OQ);2128}2129 2130__mmask8 test_mm_cmp_ps_mask_ge_os(__m128 a, __m128 b) {2131  // CHECK-LABEL: test_mm_cmp_ps_mask_ge_os2132  // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}2133  return _mm_cmp_ps_mask(a, b, _CMP_GE_OS);2134}2135 2136__mmask8 test_mm_cmp_ps_mask_gt_os(__m128 a, __m128 b) {2137  // CHECK-LABEL: test_mm_cmp_ps_mask_gt_os2138  // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}2139  return _mm_cmp_ps_mask(a, b, _CMP_GT_OS);2140}2141 2142__mmask8 test_mm_cmp_ps_mask_true_uq(__m128 a, __m128 b) {2143  // CHECK-LABEL: test_mm_cmp_ps_mask_true_uq2144  // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}2145  return _mm_cmp_ps_mask(a, b, _CMP_TRUE_UQ);2146}2147 2148__mmask8 test_mm_cmp_ps_mask_eq_os(__m128 a, __m128 b) {2149  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_os2150  // CHECK: fcmp oeq <4 x float> %{{.*}}, %{{.*}}2151  return _mm_cmp_ps_mask(a, b, _CMP_EQ_OS);2152}2153 2154__mmask8 test_mm_cmp_ps_mask_lt_oq(__m128 a, __m128 b) {2155  // CHECK-LABEL: test_mm_cmp_ps_mask_lt_oq2156  // CHECK: fcmp olt <4 x float> %{{.*}}, %{{.*}}2157  return _mm_cmp_ps_mask(a, b, _CMP_LT_OQ);2158}2159 2160__mmask8 test_mm_cmp_ps_mask_le_oq(__m128 a, __m128 b) {2161  // CHECK-LABEL: test_mm_cmp_ps_mask_le_oq2162  // CHECK: fcmp ole <4 x float> %{{.*}}, %{{.*}}2163  return _mm_cmp_ps_mask(a, b, _CMP_LE_OQ);2164}2165 2166__mmask8 test_mm_cmp_ps_mask_unord_s(__m128 a, __m128 b) {2167  // CHECK-LABEL: test_mm_cmp_ps_mask_unord_s2168  // CHECK: fcmp uno <4 x float> %{{.*}}, %{{.*}}2169  return _mm_cmp_ps_mask(a, b, _CMP_UNORD_S);2170}2171 2172__mmask8 test_mm_cmp_ps_mask_neq_us(__m128 a, __m128 b) {2173  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_us2174  // CHECK: fcmp une <4 x float> %{{.*}}, %{{.*}}2175  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_US);2176}2177 2178__mmask8 test_mm_cmp_ps_mask_nlt_uq(__m128 a, __m128 b) {2179  // CHECK-LABEL: test_mm_cmp_ps_mask_nlt_uq2180  // CHECK: fcmp uge <4 x float> %{{.*}}, %{{.*}}2181  return _mm_cmp_ps_mask(a, b, _CMP_NLT_UQ);2182}2183 2184__mmask8 test_mm_cmp_ps_mask_nle_uq(__m128 a, __m128 b) {2185  // CHECK-LABEL: test_mm_cmp_ps_mask_nle_uq2186  // CHECK: fcmp ugt <4 x float> %{{.*}}, %{{.*}}2187  return _mm_cmp_ps_mask(a, b, _CMP_NLE_UQ);2188}2189 2190__mmask8 test_mm_cmp_ps_mask_ord_s(__m128 a, __m128 b) {2191  // CHECK-LABEL: test_mm_cmp_ps_mask_ord_s2192  // CHECK: fcmp ord <4 x float> %{{.*}}, %{{.*}}2193  return _mm_cmp_ps_mask(a, b, _CMP_ORD_S);2194}2195 2196__mmask8 test_mm_cmp_ps_mask_eq_us(__m128 a, __m128 b) {2197  // CHECK-LABEL: test_mm_cmp_ps_mask_eq_us2198  // CHECK: fcmp ueq <4 x float> %{{.*}}, %{{.*}}2199  return _mm_cmp_ps_mask(a, b, _CMP_EQ_US);2200}2201 2202__mmask8 test_mm_cmp_ps_mask_nge_uq(__m128 a, __m128 b) {2203  // CHECK-LABEL: test_mm_cmp_ps_mask_nge_uq2204  // CHECK: fcmp ult <4 x float> %{{.*}}, %{{.*}}2205  return _mm_cmp_ps_mask(a, b, _CMP_NGE_UQ);2206}2207 2208__mmask8 test_mm_cmp_ps_mask_ngt_uq(__m128 a, __m128 b) {2209  // CHECK-LABEL: test_mm_cmp_ps_mask_ngt_uq2210  // CHECK: fcmp ule <4 x float> %{{.*}}, %{{.*}}2211  return _mm_cmp_ps_mask(a, b, _CMP_NGT_UQ);2212}2213 2214__mmask8 test_mm_cmp_ps_mask_false_os(__m128 a, __m128 b) {2215  // CHECK-LABEL: test_mm_cmp_ps_mask_false_os2216  // CHECK: fcmp false <4 x float> %{{.*}}, %{{.*}}2217  return _mm_cmp_ps_mask(a, b, _CMP_FALSE_OS);2218}2219 2220__mmask8 test_mm_cmp_ps_mask_neq_os(__m128 a, __m128 b) {2221  // CHECK-LABEL: test_mm_cmp_ps_mask_neq_os2222  // CHECK: fcmp one <4 x float> %{{.*}}, %{{.*}}2223  return _mm_cmp_ps_mask(a, b, _CMP_NEQ_OS);2224}2225 2226__mmask8 test_mm_cmp_ps_mask_ge_oq(__m128 a, __m128 b) {2227  // CHECK-LABEL: test_mm_cmp_ps_mask_ge_oq2228  // CHECK: fcmp oge <4 x float> %{{.*}}, %{{.*}}2229  return _mm_cmp_ps_mask(a, b, _CMP_GE_OQ);2230}2231 2232__mmask8 test_mm_cmp_ps_mask_gt_oq(__m128 a, __m128 b) {2233  // CHECK-LABEL: test_mm_cmp_ps_mask_gt_oq2234  // CHECK: fcmp ogt <4 x float> %{{.*}}, %{{.*}}2235  return _mm_cmp_ps_mask(a, b, _CMP_GT_OQ);2236}2237 2238__mmask8 test_mm_cmp_ps_mask_true_us(__m128 a, __m128 b) {2239  // CHECK-LABEL: test_mm_cmp_ps_mask_true_us2240  // CHECK: fcmp true <4 x float> %{{.*}}, %{{.*}}2241  return _mm_cmp_ps_mask(a, b, _CMP_TRUE_US);2242}2243 2244__mmask8 test_mm_mask_cmp_ps_mask_eq_oq(__mmask8 m, __m128 a, __m128 b) {2245  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_oq2246  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}2247  // CHECK: and <4 x i1> [[CMP]], {{.*}}2248  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OQ);2249}2250 2251__mmask8 test_mm_mask_cmp_ps_mask_lt_os(__mmask8 m, __m128 a, __m128 b) {2252  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_os2253  // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}2254  // CHECK: and <4 x i1> [[CMP]], {{.*}}2255  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OS);2256}2257 2258__mmask8 test_mm_mask_cmp_ps_mask_le_os(__mmask8 m, __m128 a, __m128 b) {2259  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_os2260  // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}2261  // CHECK: and <4 x i1> [[CMP]], {{.*}}2262  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OS);2263}2264 2265__mmask8 test_mm_mask_cmp_ps_mask_unord_q(__mmask8 m, __m128 a, __m128 b) {2266  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_q2267  // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}2268  // CHECK: and <4 x i1> [[CMP]], {{.*}}2269  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_Q);2270}2271 2272__mmask8 test_mm_mask_cmp_ps_mask_neq_uq(__mmask8 m, __m128 a, __m128 b) {2273  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_uq2274  // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}2275  // CHECK: and <4 x i1> [[CMP]], {{.*}}2276  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_UQ);2277}2278 2279__mmask8 test_mm_mask_cmp_ps_mask_nlt_us(__mmask8 m, __m128 a, __m128 b) {2280  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_us2281  // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}2282  // CHECK: and <4 x i1> [[CMP]], {{.*}}2283  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_US);2284}2285 2286__mmask8 test_mm_mask_cmp_ps_mask_nle_us(__mmask8 m, __m128 a, __m128 b) {2287  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_us2288  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}2289  // CHECK: and <4 x i1> [[CMP]], {{.*}}2290  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_US);2291}2292 2293__mmask8 test_mm_mask_cmp_ps_mask_ord_q(__mmask8 m, __m128 a, __m128 b) {2294  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_q2295  // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}2296  // CHECK: and <4 x i1> [[CMP]], {{.*}}2297  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_Q);2298}2299 2300__mmask8 test_mm_mask_cmp_ps_mask_eq_uq(__mmask8 m, __m128 a, __m128 b) {2301  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_uq2302  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}2303  // CHECK: and <4 x i1> [[CMP]], {{.*}}2304  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_UQ);2305}2306 2307__mmask8 test_mm_mask_cmp_ps_mask_nge_us(__mmask8 m, __m128 a, __m128 b) {2308  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_us2309  // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}2310  // CHECK: and <4 x i1> [[CMP]], {{.*}}2311  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_US);2312}2313 2314__mmask8 test_mm_mask_cmp_ps_mask_ngt_us(__mmask8 m, __m128 a, __m128 b) {2315  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_us2316  // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}2317  // CHECK: and <4 x i1> [[CMP]], {{.*}}2318  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_US);2319}2320 2321__mmask8 test_mm_mask_cmp_ps_mask_false_oq(__mmask8 m, __m128 a, __m128 b) {2322  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_oq2323  // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}2324  // CHECK: and <4 x i1> [[CMP]], {{.*}}2325  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OQ);2326}2327 2328__mmask8 test_mm_mask_cmp_ps_mask_neq_oq(__mmask8 m, __m128 a, __m128 b) {2329  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_oq2330  // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}2331  // CHECK: and <4 x i1> [[CMP]], {{.*}}2332  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OQ);2333}2334 2335__mmask8 test_mm_mask_cmp_ps_mask_ge_os(__mmask8 m, __m128 a, __m128 b) {2336  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_os2337  // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}2338  // CHECK: and <4 x i1> [[CMP]], {{.*}}2339  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OS);2340}2341 2342__mmask8 test_mm_mask_cmp_ps_mask_gt_os(__mmask8 m, __m128 a, __m128 b) {2343  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_os2344  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}2345  // CHECK: and <4 x i1> [[CMP]], {{.*}}2346  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OS);2347}2348 2349__mmask8 test_mm_mask_cmp_ps_mask_true_uq(__mmask8 m, __m128 a, __m128 b) {2350  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_uq2351  // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}2352  // CHECK: and <4 x i1> [[CMP]], {{.*}}2353  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_UQ);2354}2355 2356__mmask8 test_mm_mask_cmp_ps_mask_eq_os(__mmask8 m, __m128 a, __m128 b) {2357  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_os2358  // CHECK: [[CMP:%.*]] = fcmp oeq <4 x float> %{{.*}}, %{{.*}}2359  // CHECK: and <4 x i1> [[CMP]], {{.*}}2360  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_OS);2361}2362 2363__mmask8 test_mm_mask_cmp_ps_mask_lt_oq(__mmask8 m, __m128 a, __m128 b) {2364  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_lt_oq2365  // CHECK: [[CMP:%.*]] = fcmp olt <4 x float> %{{.*}}, %{{.*}}2366  // CHECK: and <4 x i1> [[CMP]], {{.*}}2367  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LT_OQ);2368}2369 2370__mmask8 test_mm_mask_cmp_ps_mask_le_oq(__mmask8 m, __m128 a, __m128 b) {2371  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_le_oq2372  // CHECK: [[CMP:%.*]] = fcmp ole <4 x float> %{{.*}}, %{{.*}}2373  // CHECK: and <4 x i1> [[CMP]], {{.*}}2374  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_LE_OQ);2375}2376 2377__mmask8 test_mm_mask_cmp_ps_mask_unord_s(__mmask8 m, __m128 a, __m128 b) {2378  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_unord_s2379  // CHECK: [[CMP:%.*]] = fcmp uno <4 x float> %{{.*}}, %{{.*}}2380  // CHECK: and <4 x i1> [[CMP]], {{.*}}2381  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_UNORD_S);2382}2383 2384__mmask8 test_mm_mask_cmp_ps_mask_neq_us(__mmask8 m, __m128 a, __m128 b) {2385  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_us2386  // CHECK: [[CMP:%.*]] = fcmp une <4 x float> %{{.*}}, %{{.*}}2387  // CHECK: and <4 x i1> [[CMP]], {{.*}}2388  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_US);2389}2390 2391__mmask8 test_mm_mask_cmp_ps_mask_nlt_uq(__mmask8 m, __m128 a, __m128 b) {2392  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nlt_uq2393  // CHECK: [[CMP:%.*]] = fcmp uge <4 x float> %{{.*}}, %{{.*}}2394  // CHECK: and <4 x i1> [[CMP]], {{.*}}2395  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLT_UQ);2396}2397 2398__mmask8 test_mm_mask_cmp_ps_mask_nle_uq(__mmask8 m, __m128 a, __m128 b) {2399  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nle_uq2400  // CHECK: [[CMP:%.*]] = fcmp ugt <4 x float> %{{.*}}, %{{.*}}2401  // CHECK: and <4 x i1> [[CMP]], {{.*}}2402  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NLE_UQ);2403}2404 2405__mmask8 test_mm_mask_cmp_ps_mask_ord_s(__mmask8 m, __m128 a, __m128 b) {2406  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ord_s2407  // CHECK: [[CMP:%.*]] = fcmp ord <4 x float> %{{.*}}, %{{.*}}2408  // CHECK: and <4 x i1> [[CMP]], {{.*}}2409  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_ORD_S);2410}2411 2412__mmask8 test_mm_mask_cmp_ps_mask_eq_us(__mmask8 m, __m128 a, __m128 b) {2413  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_eq_us2414  // CHECK: [[CMP:%.*]] = fcmp ueq <4 x float> %{{.*}}, %{{.*}}2415  // CHECK: and <4 x i1> [[CMP]], {{.*}}2416  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_EQ_US);2417}2418 2419__mmask8 test_mm_mask_cmp_ps_mask_nge_uq(__mmask8 m, __m128 a, __m128 b) {2420  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_nge_uq2421  // CHECK: [[CMP:%.*]] = fcmp ult <4 x float> %{{.*}}, %{{.*}}2422  // CHECK: and <4 x i1> [[CMP]], {{.*}}2423  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGE_UQ);2424}2425 2426__mmask8 test_mm_mask_cmp_ps_mask_ngt_uq(__mmask8 m, __m128 a, __m128 b) {2427  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ngt_uq2428  // CHECK: [[CMP:%.*]] = fcmp ule <4 x float> %{{.*}}, %{{.*}}2429  // CHECK: and <4 x i1> [[CMP]], {{.*}}2430  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NGT_UQ);2431}2432 2433__mmask8 test_mm_mask_cmp_ps_mask_false_os(__mmask8 m, __m128 a, __m128 b) {2434  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_false_os2435  // CHECK: [[CMP:%.*]] = fcmp false <4 x float> %{{.*}}, %{{.*}}2436  // CHECK: and <4 x i1> [[CMP]], {{.*}}2437  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_FALSE_OS);2438}2439 2440__mmask8 test_mm_mask_cmp_ps_mask_neq_os(__mmask8 m, __m128 a, __m128 b) {2441  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_neq_os2442  // CHECK: [[CMP:%.*]] = fcmp one <4 x float> %{{.*}}, %{{.*}}2443  // CHECK: and <4 x i1> [[CMP]], {{.*}}2444  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_NEQ_OS);2445}2446 2447__mmask8 test_mm_mask_cmp_ps_mask_ge_oq(__mmask8 m, __m128 a, __m128 b) {2448  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_ge_oq2449  // CHECK: [[CMP:%.*]] = fcmp oge <4 x float> %{{.*}}, %{{.*}}2450  // CHECK: and <4 x i1> [[CMP]], {{.*}}2451  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GE_OQ);2452}2453 2454__mmask8 test_mm_mask_cmp_ps_mask_gt_oq(__mmask8 m, __m128 a, __m128 b) {2455  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_gt_oq2456  // CHECK: [[CMP:%.*]] = fcmp ogt <4 x float> %{{.*}}, %{{.*}}2457  // CHECK: and <4 x i1> [[CMP]], {{.*}}2458  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_GT_OQ);2459}2460 2461__mmask8 test_mm_mask_cmp_ps_mask_true_us(__mmask8 m, __m128 a, __m128 b) {2462  // CHECK-LABEL: test_mm_mask_cmp_ps_mask_true_us2463  // CHECK: [[CMP:%.*]] = fcmp true <4 x float> %{{.*}}, %{{.*}}2464  // CHECK: and <4 x i1> [[CMP]], {{.*}}2465  return _mm_mask_cmp_ps_mask(m, a, b, _CMP_TRUE_US);2466}2467 2468__mmask8 test_mm_cmp_pd_mask_eq_oq(__m128d a, __m128d b) {2469  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_oq2470  // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}2471  return _mm_cmp_pd_mask(a, b, _CMP_EQ_OQ);2472}2473 2474__mmask8 test_mm_cmp_pd_mask_lt_os(__m128d a, __m128d b) {2475  // CHECK-LABEL: test_mm_cmp_pd_mask_lt_os2476  // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}2477  return _mm_cmp_pd_mask(a, b, _CMP_LT_OS);2478}2479 2480__mmask8 test_mm_cmp_pd_mask_le_os(__m128d a, __m128d b) {2481  // CHECK-LABEL: test_mm_cmp_pd_mask_le_os2482  // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}2483  return _mm_cmp_pd_mask(a, b, _CMP_LE_OS);2484}2485 2486__mmask8 test_mm_cmp_pd_mask_unord_q(__m128d a, __m128d b) {2487  // CHECK-LABEL: test_mm_cmp_pd_mask_unord_q2488  // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}2489  return _mm_cmp_pd_mask(a, b, _CMP_UNORD_Q);2490}2491 2492__mmask8 test_mm_cmp_pd_mask_neq_uq(__m128d a, __m128d b) {2493  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_uq2494  // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}2495  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_UQ);2496}2497 2498__mmask8 test_mm_cmp_pd_mask_nlt_us(__m128d a, __m128d b) {2499  // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_us2500  // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}2501  return _mm_cmp_pd_mask(a, b, _CMP_NLT_US);2502}2503 2504__mmask8 test_mm_cmp_pd_mask_nle_us(__m128d a, __m128d b) {2505  // CHECK-LABEL: test_mm_cmp_pd_mask_nle_us2506  // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}2507  return _mm_cmp_pd_mask(a, b, _CMP_NLE_US);2508}2509 2510__mmask8 test_mm_cmp_pd_mask_ord_q(__m128d a, __m128d b) {2511  // CHECK-LABEL: test_mm_cmp_pd_mask_ord_q2512  // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}2513  return _mm_cmp_pd_mask(a, b, _CMP_ORD_Q);2514}2515 2516__mmask8 test_mm_cmp_pd_mask_eq_uq(__m128d a, __m128d b) {2517  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_uq2518  // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}2519  return _mm_cmp_pd_mask(a, b, _CMP_EQ_UQ);2520}2521 2522__mmask8 test_mm_cmp_pd_mask_nge_us(__m128d a, __m128d b) {2523  // CHECK-LABEL: test_mm_cmp_pd_mask_nge_us2524  // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}2525  return _mm_cmp_pd_mask(a, b, _CMP_NGE_US);2526}2527 2528__mmask8 test_mm_cmp_pd_mask_ngt_us(__m128d a, __m128d b) {2529  // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_us2530  // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}2531  return _mm_cmp_pd_mask(a, b, _CMP_NGT_US);2532}2533 2534__mmask8 test_mm_cmp_pd_mask_false_oq(__m128d a, __m128d b) {2535  // CHECK-LABEL: test_mm_cmp_pd_mask_false_oq2536  // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}2537  return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OQ);2538}2539 2540__mmask8 test_mm_cmp_pd_mask_neq_oq(__m128d a, __m128d b) {2541  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_oq2542  // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}2543  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OQ);2544}2545 2546__mmask8 test_mm_cmp_pd_mask_ge_os(__m128d a, __m128d b) {2547  // CHECK-LABEL: test_mm_cmp_pd_mask_ge_os2548  // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}2549  return _mm_cmp_pd_mask(a, b, _CMP_GE_OS);2550}2551 2552__mmask8 test_mm_cmp_pd_mask_gt_os(__m128d a, __m128d b) {2553  // CHECK-LABEL: test_mm_cmp_pd_mask_gt_os2554  // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}2555  return _mm_cmp_pd_mask(a, b, _CMP_GT_OS);2556}2557 2558__mmask8 test_mm_cmp_pd_mask_true_uq(__m128d a, __m128d b) {2559  // CHECK-LABEL: test_mm_cmp_pd_mask_true_uq2560  // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}2561  return _mm_cmp_pd_mask(a, b, _CMP_TRUE_UQ);2562}2563 2564__mmask8 test_mm_cmp_pd_mask_eq_os(__m128d a, __m128d b) {2565  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_os2566  // CHECK: fcmp oeq <2 x double> %{{.*}}, %{{.*}}2567  return _mm_cmp_pd_mask(a, b, _CMP_EQ_OS);2568}2569 2570__mmask8 test_mm_cmp_pd_mask_lt_oq(__m128d a, __m128d b) {2571  // CHECK-LABEL: test_mm_cmp_pd_mask_lt_oq2572  // CHECK: fcmp olt <2 x double> %{{.*}}, %{{.*}}2573  return _mm_cmp_pd_mask(a, b, _CMP_LT_OQ);2574}2575 2576__mmask8 test_mm_cmp_pd_mask_le_oq(__m128d a, __m128d b) {2577  // CHECK-LABEL: test_mm_cmp_pd_mask_le_oq2578  // CHECK: fcmp ole <2 x double> %{{.*}}, %{{.*}}2579  return _mm_cmp_pd_mask(a, b, _CMP_LE_OQ);2580}2581 2582__mmask8 test_mm_cmp_pd_mask_unord_s(__m128d a, __m128d b) {2583  // CHECK-LABEL: test_mm_cmp_pd_mask_unord_s2584  // CHECK: fcmp uno <2 x double> %{{.*}}, %{{.*}}2585  return _mm_cmp_pd_mask(a, b, _CMP_UNORD_S);2586}2587 2588__mmask8 test_mm_cmp_pd_mask_neq_us(__m128d a, __m128d b) {2589  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_us2590  // CHECK: fcmp une <2 x double> %{{.*}}, %{{.*}}2591  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_US);2592}2593 2594__mmask8 test_mm_cmp_pd_mask_nlt_uq(__m128d a, __m128d b) {2595  // CHECK-LABEL: test_mm_cmp_pd_mask_nlt_uq2596  // CHECK: fcmp uge <2 x double> %{{.*}}, %{{.*}}2597  return _mm_cmp_pd_mask(a, b, _CMP_NLT_UQ);2598}2599 2600__mmask8 test_mm_cmp_pd_mask_nle_uq(__m128d a, __m128d b) {2601  // CHECK-LABEL: test_mm_cmp_pd_mask_nle_uq2602  // CHECK: fcmp ugt <2 x double> %{{.*}}, %{{.*}}2603  return _mm_cmp_pd_mask(a, b, _CMP_NLE_UQ);2604}2605 2606__mmask8 test_mm_cmp_pd_mask_ord_s(__m128d a, __m128d b) {2607  // CHECK-LABEL: test_mm_cmp_pd_mask_ord_s2608  // CHECK: fcmp ord <2 x double> %{{.*}}, %{{.*}}2609  return _mm_cmp_pd_mask(a, b, _CMP_ORD_S);2610}2611 2612__mmask8 test_mm_cmp_pd_mask_eq_us(__m128d a, __m128d b) {2613  // CHECK-LABEL: test_mm_cmp_pd_mask_eq_us2614  // CHECK: fcmp ueq <2 x double> %{{.*}}, %{{.*}}2615  return _mm_cmp_pd_mask(a, b, _CMP_EQ_US);2616}2617 2618__mmask8 test_mm_cmp_pd_mask_nge_uq(__m128d a, __m128d b) {2619  // CHECK-LABEL: test_mm_cmp_pd_mask_nge_uq2620  // CHECK: fcmp ult <2 x double> %{{.*}}, %{{.*}}2621  return _mm_cmp_pd_mask(a, b, _CMP_NGE_UQ);2622}2623 2624__mmask8 test_mm_cmp_pd_mask_ngt_uq(__m128d a, __m128d b) {2625  // CHECK-LABEL: test_mm_cmp_pd_mask_ngt_uq2626  // CHECK: fcmp ule <2 x double> %{{.*}}, %{{.*}}2627  return _mm_cmp_pd_mask(a, b, _CMP_NGT_UQ);2628}2629 2630__mmask8 test_mm_cmp_pd_mask_false_os(__m128d a, __m128d b) {2631  // CHECK-LABEL: test_mm_cmp_pd_mask_false_os2632  // CHECK: fcmp false <2 x double> %{{.*}}, %{{.*}}2633  return _mm_cmp_pd_mask(a, b, _CMP_FALSE_OS);2634}2635 2636__mmask8 test_mm_cmp_pd_mask_neq_os(__m128d a, __m128d b) {2637  // CHECK-LABEL: test_mm_cmp_pd_mask_neq_os2638  // CHECK: fcmp one <2 x double> %{{.*}}, %{{.*}}2639  return _mm_cmp_pd_mask(a, b, _CMP_NEQ_OS);2640}2641 2642__mmask8 test_mm_cmp_pd_mask_ge_oq(__m128d a, __m128d b) {2643  // CHECK-LABEL: test_mm_cmp_pd_mask_ge_oq2644  // CHECK: fcmp oge <2 x double> %{{.*}}, %{{.*}}2645  return _mm_cmp_pd_mask(a, b, _CMP_GE_OQ);2646}2647 2648__mmask8 test_mm_cmp_pd_mask_gt_oq(__m128d a, __m128d b) {2649  // CHECK-LABEL: test_mm_cmp_pd_mask_gt_oq2650  // CHECK: fcmp ogt <2 x double> %{{.*}}, %{{.*}}2651  return _mm_cmp_pd_mask(a, b, _CMP_GT_OQ);2652}2653 2654__mmask8 test_mm_cmp_pd_mask_true_us(__m128d a, __m128d b) {2655  // CHECK-LABEL: test_mm_cmp_pd_mask_true_us2656  // CHECK: fcmp true <2 x double> %{{.*}}, %{{.*}}2657  return _mm_cmp_pd_mask(a, b, _CMP_TRUE_US);2658}2659 2660__mmask8 test_mm_mask_cmp_pd_mask_eq_oq(__mmask8 m, __m128d a, __m128d b) {2661  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_oq2662  // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}2663  // CHECK: and <2 x i1> [[CMP]], {{.*}}2664  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OQ);2665}2666 2667__mmask8 test_mm_mask_cmp_pd_mask_lt_os(__mmask8 m, __m128d a, __m128d b) {2668  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_os2669  // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}2670  // CHECK: and <2 x i1> [[CMP]], {{.*}}2671  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OS);2672}2673 2674__mmask8 test_mm_mask_cmp_pd_mask_le_os(__mmask8 m, __m128d a, __m128d b) {2675  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_os2676  // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}2677  // CHECK: and <2 x i1> [[CMP]], {{.*}}2678  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OS);2679}2680 2681__mmask8 test_mm_mask_cmp_pd_mask_unord_q(__mmask8 m, __m128d a, __m128d b) {2682  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_q2683  // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}2684  // CHECK: and <2 x i1> [[CMP]], {{.*}}2685  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_Q);2686}2687 2688__mmask8 test_mm_mask_cmp_pd_mask_neq_uq(__mmask8 m, __m128d a, __m128d b) {2689  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_uq2690  // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}2691  // CHECK: and <2 x i1> [[CMP]], {{.*}}2692  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_UQ);2693}2694 2695__mmask8 test_mm_mask_cmp_pd_mask_nlt_us(__mmask8 m, __m128d a, __m128d b) {2696  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_us2697  // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}2698  // CHECK: and <2 x i1> [[CMP]], {{.*}}2699  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_US);2700}2701 2702__mmask8 test_mm_mask_cmp_pd_mask_nle_us(__mmask8 m, __m128d a, __m128d b) {2703  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_us2704  // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}2705  // CHECK: and <2 x i1> [[CMP]], {{.*}}2706  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_US);2707}2708 2709__mmask8 test_mm_mask_cmp_pd_mask_ord_q(__mmask8 m, __m128d a, __m128d b) {2710  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_q2711  // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}2712  // CHECK: and <2 x i1> [[CMP]], {{.*}}2713  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_Q);2714}2715 2716__mmask8 test_mm_mask_cmp_pd_mask_eq_uq(__mmask8 m, __m128d a, __m128d b) {2717  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_uq2718  // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}2719  // CHECK: and <2 x i1> [[CMP]], {{.*}}2720  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_UQ);2721}2722 2723__mmask8 test_mm_mask_cmp_pd_mask_nge_us(__mmask8 m, __m128d a, __m128d b) {2724  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_us2725  // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}2726  // CHECK: and <2 x i1> [[CMP]], {{.*}}2727  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_US);2728}2729 2730__mmask8 test_mm_mask_cmp_pd_mask_ngt_us(__mmask8 m, __m128d a, __m128d b) {2731  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_us2732  // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}2733  // CHECK: and <2 x i1> [[CMP]], {{.*}}2734  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_US);2735}2736 2737__mmask8 test_mm_mask_cmp_pd_mask_false_oq(__mmask8 m, __m128d a, __m128d b) {2738  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_oq2739  // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}2740  // CHECK: and <2 x i1> [[CMP]], {{.*}}2741  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OQ);2742}2743 2744__mmask8 test_mm_mask_cmp_pd_mask_neq_oq(__mmask8 m, __m128d a, __m128d b) {2745  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_oq2746  // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}2747  // CHECK: and <2 x i1> [[CMP]], {{.*}}2748  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OQ);2749}2750 2751__mmask8 test_mm_mask_cmp_pd_mask_ge_os(__mmask8 m, __m128d a, __m128d b) {2752  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_os2753  // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}2754  // CHECK: and <2 x i1> [[CMP]], {{.*}}2755  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OS);2756}2757 2758__mmask8 test_mm_mask_cmp_pd_mask_gt_os(__mmask8 m, __m128d a, __m128d b) {2759  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_os2760  // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}2761  // CHECK: and <2 x i1> [[CMP]], {{.*}}2762  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OS);2763}2764 2765__mmask8 test_mm_mask_cmp_pd_mask_true_uq(__mmask8 m, __m128d a, __m128d b) {2766  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_uq2767  // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}2768  // CHECK: and <2 x i1> [[CMP]], {{.*}}2769  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_UQ);2770}2771 2772__mmask8 test_mm_mask_cmp_pd_mask_eq_os(__mmask8 m, __m128d a, __m128d b) {2773  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_os2774  // CHECK: [[CMP:%.*]] = fcmp oeq <2 x double> %{{.*}}, %{{.*}}2775  // CHECK: and <2 x i1> [[CMP]], {{.*}}2776  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_OS);2777}2778 2779__mmask8 test_mm_mask_cmp_pd_mask_lt_oq(__mmask8 m, __m128d a, __m128d b) {2780  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_lt_oq2781  // CHECK: [[CMP:%.*]] = fcmp olt <2 x double> %{{.*}}, %{{.*}}2782  // CHECK: and <2 x i1> [[CMP]], {{.*}}2783  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LT_OQ);2784}2785 2786__mmask8 test_mm_mask_cmp_pd_mask_le_oq(__mmask8 m, __m128d a, __m128d b) {2787  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_le_oq2788  // CHECK: [[CMP:%.*]] = fcmp ole <2 x double> %{{.*}}, %{{.*}}2789  // CHECK: and <2 x i1> [[CMP]], {{.*}}2790  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_LE_OQ);2791}2792 2793__mmask8 test_mm_mask_cmp_pd_mask_unord_s(__mmask8 m, __m128d a, __m128d b) {2794  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_unord_s2795  // CHECK: [[CMP:%.*]] = fcmp uno <2 x double> %{{.*}}, %{{.*}}2796  // CHECK: and <2 x i1> [[CMP]], {{.*}}2797  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_UNORD_S);2798}2799 2800__mmask8 test_mm_mask_cmp_pd_mask_neq_us(__mmask8 m, __m128d a, __m128d b) {2801  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_us2802  // CHECK: [[CMP:%.*]] = fcmp une <2 x double> %{{.*}}, %{{.*}}2803  // CHECK: and <2 x i1> [[CMP]], {{.*}}2804  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_US);2805}2806 2807__mmask8 test_mm_mask_cmp_pd_mask_nlt_uq(__mmask8 m, __m128d a, __m128d b) {2808  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nlt_uq2809  // CHECK: [[CMP:%.*]] = fcmp uge <2 x double> %{{.*}}, %{{.*}}2810  // CHECK: and <2 x i1> [[CMP]], {{.*}}2811  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLT_UQ);2812}2813 2814__mmask8 test_mm_mask_cmp_pd_mask_nle_uq(__mmask8 m, __m128d a, __m128d b) {2815  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nle_uq2816  // CHECK: [[CMP:%.*]] = fcmp ugt <2 x double> %{{.*}}, %{{.*}}2817  // CHECK: and <2 x i1> [[CMP]], {{.*}}2818  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NLE_UQ);2819}2820 2821__mmask8 test_mm_mask_cmp_pd_mask_ord_s(__mmask8 m, __m128d a, __m128d b) {2822  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ord_s2823  // CHECK: [[CMP:%.*]] = fcmp ord <2 x double> %{{.*}}, %{{.*}}2824  // CHECK: and <2 x i1> [[CMP]], {{.*}}2825  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_ORD_S);2826}2827 2828__mmask8 test_mm_mask_cmp_pd_mask_eq_us(__mmask8 m, __m128d a, __m128d b) {2829  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_eq_us2830  // CHECK: [[CMP:%.*]] = fcmp ueq <2 x double> %{{.*}}, %{{.*}}2831  // CHECK: and <2 x i1> [[CMP]], {{.*}}2832  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_EQ_US);2833}2834 2835__mmask8 test_mm_mask_cmp_pd_mask_nge_uq(__mmask8 m, __m128d a, __m128d b) {2836  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_nge_uq2837  // CHECK: [[CMP:%.*]] = fcmp ult <2 x double> %{{.*}}, %{{.*}}2838  // CHECK: and <2 x i1> [[CMP]], {{.*}}2839  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGE_UQ);2840}2841 2842__mmask8 test_mm_mask_cmp_pd_mask_ngt_uq(__mmask8 m, __m128d a, __m128d b) {2843  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ngt_uq2844  // CHECK: [[CMP:%.*]] = fcmp ule <2 x double> %{{.*}}, %{{.*}}2845  // CHECK: and <2 x i1> [[CMP]], {{.*}}2846  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NGT_UQ);2847}2848 2849__mmask8 test_mm_mask_cmp_pd_mask_false_os(__mmask8 m, __m128d a, __m128d b) {2850  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_false_os2851  // CHECK: [[CMP:%.*]] = fcmp false <2 x double> %{{.*}}, %{{.*}}2852  // CHECK: and <2 x i1> [[CMP]], {{.*}}2853  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_FALSE_OS);2854}2855 2856__mmask8 test_mm_mask_cmp_pd_mask_neq_os(__mmask8 m, __m128d a, __m128d b) {2857  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_neq_os2858  // CHECK: [[CMP:%.*]] = fcmp one <2 x double> %{{.*}}, %{{.*}}2859  // CHECK: and <2 x i1> [[CMP]], {{.*}}2860  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_NEQ_OS);2861}2862 2863__mmask8 test_mm_mask_cmp_pd_mask_ge_oq(__mmask8 m, __m128d a, __m128d b) {2864  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_ge_oq2865  // CHECK: [[CMP:%.*]] = fcmp oge <2 x double> %{{.*}}, %{{.*}}2866  // CHECK: and <2 x i1> [[CMP]], {{.*}}2867  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GE_OQ);2868}2869 2870__mmask8 test_mm_mask_cmp_pd_mask_gt_oq(__mmask8 m, __m128d a, __m128d b) {2871  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_gt_oq2872  // CHECK: [[CMP:%.*]] = fcmp ogt <2 x double> %{{.*}}, %{{.*}}2873  // CHECK: and <2 x i1> [[CMP]], {{.*}}2874  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_GT_OQ);2875}2876 2877__mmask8 test_mm_mask_cmp_pd_mask_true_us(__mmask8 m, __m128d a, __m128d b) {2878  // CHECK-LABEL: test_mm_mask_cmp_pd_mask_true_us2879  // CHECK: [[CMP:%.*]] = fcmp true <2 x double> %{{.*}}, %{{.*}}2880  // CHECK: and <2 x i1> [[CMP]], {{.*}}2881  return _mm_mask_cmp_pd_mask(m, a, b, _CMP_TRUE_US);2882}2883 2884__m128d test_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {2885  // CHECK-LABEL: test_mm_mask_fmadd_pd2886  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2887  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2888  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2889  return _mm_mask_fmadd_pd(__A, __U, __B, __C);2890}2891TEST_CONSTEXPR(match_m128d(_mm_mask_fmadd_pd((__m128d){1.0, 2.0}, (__mmask8)0b10, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 1.0, 14.0));2892TEST_CONSTEXPR(match_m128d(_mm_mask_fmadd_pd((__m128d){1.0, 2.0}, (__mmask8)0b01, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 8.0, 2.0));2893 2894__m128d test_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {2895  // CHECK-LABEL: test_mm_mask3_fmadd_pd2896  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2897  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2898  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2899  return _mm_mask3_fmadd_pd(__A, __B, __C, __U);2900}2901TEST_CONSTEXPR(match_m128d(_mm_mask3_fmadd_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b10), 5.0, 14.0));2902TEST_CONSTEXPR(match_m128d(_mm_mask3_fmadd_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b01), 8.0, 6.0));2903 2904__m128d test_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {2905  // CHECK-LABEL: test_mm_maskz_fmadd_pd2906  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2907  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2908  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2909  return _mm_maskz_fmadd_pd(__U, __A, __B, __C);2910}2911TEST_CONSTEXPR(match_m128d(_mm_maskz_fmadd_pd((__mmask8)0b10, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 0.0, 14.0));2912TEST_CONSTEXPR(match_m128d(_mm_maskz_fmadd_pd((__mmask8)0b01, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 8.0, 0.0));2913 2914__m128d test_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {2915  // CHECK-LABEL: test_mm_mask_fmsub_pd2916  // CHECK: fneg <2 x double> %{{.*}}2917  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2918  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2919  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2920  return _mm_mask_fmsub_pd(__A, __U, __B, __C);2921}2922TEST_CONSTEXPR(match_m128d(_mm_mask_fmsub_pd((__m128d){1.0, 2.0}, (__mmask8)0b10, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 1.0, 2.0));2923TEST_CONSTEXPR(match_m128d(_mm_mask_fmsub_pd((__m128d){1.0, 2.0}, (__mmask8)0b01, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), -2.0, 2.0));2924 2925__m128d test_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {2926  // CHECK-LABEL: test_mm_mask3_fmsub_pd2927  // CHECK: fneg <2 x double> %{{.*}}2928  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2929  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2930  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2931  return _mm_mask3_fmsub_pd(__A, __B, __C, __U);2932}2933TEST_CONSTEXPR(match_m128d(_mm_mask3_fmsub_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b10), 5.0, 2.0));2934TEST_CONSTEXPR(match_m128d(_mm_mask3_fmsub_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b01), -2.0, 6.0));2935 2936__m128d test_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {2937  // CHECK-LABEL: test_mm_maskz_fmsub_pd2938  // CHECK: fneg <2 x double> %{{.*}}2939  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2940  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2941  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2942  return _mm_maskz_fmsub_pd(__U, __A, __B, __C);2943}2944TEST_CONSTEXPR(match_m128d(_mm_maskz_fmsub_pd((__mmask8)0b10, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 0.0, 2.0));2945TEST_CONSTEXPR(match_m128d(_mm_maskz_fmsub_pd((__mmask8)0b01, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), -2.0, 0.0));2946 2947__m128d test_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {2948  // CHECK-LABEL: test_mm_mask_fnmadd_pd2949  // CHECK: fneg <2 x double> %{{.*}}2950  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2951  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2952  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2953  return _mm_mask_fnmadd_pd(__A, __U, __B, __C);2954}2955TEST_CONSTEXPR(match_m128d(_mm_mask_fnmadd_pd((__m128d){1.0, 2.0}, (__mmask8)0b10, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 1.0, -2.0));2956TEST_CONSTEXPR(match_m128d(_mm_mask_fnmadd_pd((__m128d){1.0, 2.0}, (__mmask8)0b01, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 2.0, 2.0));2957 2958__m128d test_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {2959  // CHECK-LABEL: test_mm_mask3_fnmadd_pd2960  // CHECK: fneg <2 x double> %{{.*}}2961  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2962  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2963  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2964  return _mm_mask3_fnmadd_pd(__A, __B, __C, __U);2965}2966TEST_CONSTEXPR(match_m128d(_mm_mask3_fnmadd_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b10), 5.0, -2.0));2967TEST_CONSTEXPR(match_m128d(_mm_mask3_fnmadd_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b01), 2.0, 6.0));2968 2969__m128d test_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {2970  // CHECK-LABEL: test_mm_maskz_fnmadd_pd2971  // CHECK: fneg <2 x double> %{{.*}}2972  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2973  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2974  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2975  return _mm_maskz_fnmadd_pd(__U, __A, __B, __C);2976}2977TEST_CONSTEXPR(match_m128d(_mm_maskz_fnmadd_pd((__mmask8)0b10, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 0.0, -2.0));2978TEST_CONSTEXPR(match_m128d(_mm_maskz_fnmadd_pd((__mmask8)0b01, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 2.0, 0.0));2979 2980__m128d test_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {2981  // CHECK-LABEL: test_mm_mask_fnmsub_pd2982  // CHECK: fneg <2 x double> %{{.*}}2983  // CHECK: fneg <2 x double> %{{.*}}2984  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2985  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2986  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2987  return _mm_mask_fnmsub_pd(__A, __U, __B, __C);2988}2989TEST_CONSTEXPR(match_m128d(_mm_mask_fnmsub_pd((__m128d){1.0, 2.0}, (__mmask8)0b10, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 1.0, -14.0));2990TEST_CONSTEXPR(match_m128d(_mm_mask_fnmsub_pd((__m128d){1.0, 2.0}, (__mmask8)0b01, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), -8.0, 2.0));2991 2992__m128d test_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {2993  // CHECK-LABEL: test_mm_mask3_fnmsub_pd2994  // CHECK: fneg <2 x double> %{{.*}}2995  // CHECK: fneg <2 x double> %{{.*}}2996  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})2997  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>2998  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}2999  return _mm_mask3_fnmsub_pd(__A, __B, __C, __U);3000}3001TEST_CONSTEXPR(match_m128d(_mm_mask3_fnmsub_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b10), 5.0, -14.0));3002TEST_CONSTEXPR(match_m128d(_mm_mask3_fnmsub_pd((__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}, (__mmask8)0b01), -8.0, 6.0));3003 3004__m128d test_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {3005  // CHECK-LABEL: test_mm_maskz_fnmsub_pd3006  // CHECK: fneg <2 x double> %{{.*}}3007  // CHECK: fneg <2 x double> %{{.*}}3008  // CHECK: call {{.*}}<2 x double> @llvm.fma.v2f64(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})3009  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3010  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3011  return _mm_maskz_fnmsub_pd(__U, __A, __B, __C);3012}3013TEST_CONSTEXPR(match_m128d(_mm_maskz_fnmsub_pd((__mmask8)0b10, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), 0.0, -14.0));3014TEST_CONSTEXPR(match_m128d(_mm_maskz_fnmsub_pd((__mmask8)0b01, (__m128d){1.0, 2.0}, (__m128d){3.0, 4.0}, (__m128d){5.0, 6.0}), -8.0, 0.0));3015 3016__m256d test_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {3017  // CHECK-LABEL: test_mm256_mask_fmadd_pd3018  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3019  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3020  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3021  return _mm256_mask_fmadd_pd(__A, __U, __B, __C);3022}3023TEST_CONSTEXPR(match_m256d(_mm256_mask_fmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b1100, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 1.0, 2.0, 32.0, 44.0));3024TEST_CONSTEXPR(match_m256d(_mm256_mask_fmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b0011, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 14.0, 22.0, 3.0, 4.0));3025 3026__m256d test_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {3027  // CHECK-LABEL: test_mm256_mask3_fmadd_pd3028  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3029  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3030  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3031  return _mm256_mask3_fmadd_pd(__A, __B, __C, __U);3032}3033TEST_CONSTEXPR(match_m256d(_mm256_mask3_fmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b1100), 9.0, 10.0, 32.0, 44.0));3034TEST_CONSTEXPR(match_m256d(_mm256_mask3_fmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b0011), 14.0, 22.0, 11.0, 12.0));3035 3036__m256d test_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {3037  // CHECK-LABEL: test_mm256_maskz_fmadd_pd3038  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3039  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3040  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3041  return _mm256_maskz_fmadd_pd(__U, __A, __B, __C);3042}3043TEST_CONSTEXPR(match_m256d(_mm256_maskz_fmadd_pd((__mmask8)0b1100, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 0.0, 0.0, 32.0, 44.0));3044TEST_CONSTEXPR(match_m256d(_mm256_maskz_fmadd_pd((__mmask8)0b0011, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 14.0, 22.0, 0.0, 0.0));3045 3046__m256d test_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {3047  // CHECK-LABEL: test_mm256_mask_fmsub_pd3048  // CHECK: fneg <4 x double> %{{.*}}3049  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3050  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3051  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3052  return _mm256_mask_fmsub_pd(__A, __U, __B, __C);3053}3054TEST_CONSTEXPR(match_m256d(_mm256_mask_fmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b1100, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 1.0, 2.0, 10.0, 20.0));3055TEST_CONSTEXPR(match_m256d(_mm256_mask_fmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b0011, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), -4.0, 2.0, 3.0, 4.0));3056 3057__m256d test_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {3058  // CHECK-LABEL: test_mm256_mask3_fmsub_pd3059  // CHECK: fneg <4 x double> %{{.*}}3060  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3061  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3062  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3063  return _mm256_mask3_fmsub_pd(__A, __B, __C, __U);3064}3065TEST_CONSTEXPR(match_m256d(_mm256_mask3_fmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b1100), 9.0, 10.0, 10.0, 20.0));3066TEST_CONSTEXPR(match_m256d(_mm256_mask3_fmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b0011), -4.0, 2.0, 11.0, 12.0));3067 3068__m256d test_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {3069  // CHECK-LABEL: test_mm256_maskz_fmsub_pd3070  // CHECK: fneg <4 x double> %{{.*}}3071  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3072  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3073  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3074  return _mm256_maskz_fmsub_pd(__U, __A, __B, __C);3075}3076TEST_CONSTEXPR(match_m256d(_mm256_maskz_fmsub_pd((__mmask8)0b1100, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 0.0, 0.0, 10.0, 20.0));3077TEST_CONSTEXPR(match_m256d(_mm256_maskz_fmsub_pd((__mmask8)0b0011, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), -4.0, 2.0, 0.0, 0.0));3078 3079__m256d test_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {3080  // CHECK-LABEL: test_mm256_mask_fnmadd_pd3081  // CHECK: fneg <4 x double> %{{.*}}3082  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3083  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3084  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3085  return _mm256_mask_fnmadd_pd(__A, __U, __B, __C);3086}3087TEST_CONSTEXPR(match_m256d(_mm256_mask_fnmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b1100, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 1.0, 2.0, -10.0, -20.0));3088TEST_CONSTEXPR(match_m256d(_mm256_mask_fnmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b0011, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 4.0, -2.0, 3.0, 4.0));3089 3090__m256d test_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {3091  // CHECK-LABEL: test_mm256_mask3_fnmadd_pd3092  // CHECK: fneg <4 x double> %{{.*}}3093  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3094  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3095  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3096  return _mm256_mask3_fnmadd_pd(__A, __B, __C, __U);3097}3098TEST_CONSTEXPR(match_m256d(_mm256_mask3_fnmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b1100), 9.0, 10.0, -10.0, -20.0));3099TEST_CONSTEXPR(match_m256d(_mm256_mask3_fnmadd_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b0011), 4.0, -2.0, 11.0, 12.0));3100 3101__m256d test_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {3102  // CHECK-LABEL: test_mm256_maskz_fnmadd_pd3103  // CHECK: fneg <4 x double> %{{.*}}3104  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3105  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3106  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3107  return _mm256_maskz_fnmadd_pd(__U, __A, __B, __C);3108}3109TEST_CONSTEXPR(match_m256d(_mm256_maskz_fnmadd_pd((__mmask8)0b1100, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 0.0, 0.0, -10.0, -20.0));3110TEST_CONSTEXPR(match_m256d(_mm256_maskz_fnmadd_pd((__mmask8)0b0011, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 4.0, -2.0, 0.0, 0.0));3111 3112__m256d test_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {3113  // CHECK-LABEL: test_mm256_mask_fnmsub_pd3114  // CHECK: fneg <4 x double> %{{.*}}3115  // CHECK: fneg <4 x double> %{{.*}}3116  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3117  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3118  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3119  return _mm256_mask_fnmsub_pd(__A, __U, __B, __C);3120}3121TEST_CONSTEXPR(match_m256d(_mm256_mask_fnmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b1100, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 1.0, 2.0, -32.0, -44.0));3122TEST_CONSTEXPR(match_m256d(_mm256_mask_fnmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__mmask8)0b0011, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), -14.0, -22.0, 3.0, 4.0));3123 3124__m256d test_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {3125  // CHECK-LABEL: test_mm256_mask3_fnmsub_pd3126  // CHECK: fneg <4 x double> %{{.*}}3127  // CHECK: fneg <4 x double> %{{.*}}3128  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3129  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3130  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3131  return _mm256_mask3_fnmsub_pd(__A, __B, __C, __U);3132}3133TEST_CONSTEXPR(match_m256d(_mm256_mask3_fnmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b1100), 9.0, 10.0, -32.0, -44.0));3134TEST_CONSTEXPR(match_m256d(_mm256_mask3_fnmsub_pd((__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }, (__mmask8)0b0011), -14.0, -22.0, 11.0, 12.0));3135 3136__m256d test_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {3137  // CHECK-LABEL: test_mm256_maskz_fnmsub_pd3138  // CHECK: fneg <4 x double> %{{.*}}3139  // CHECK: fneg <4 x double> %{{.*}}3140  // CHECK: call {{.*}}<4 x double> @llvm.fma.v4f64(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3141  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3142  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3143  return _mm256_maskz_fnmsub_pd(__U, __A, __B, __C);3144}3145TEST_CONSTEXPR(match_m256d(_mm256_maskz_fnmsub_pd((__mmask8)0b1100, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), 0.0, 0.0, -32.0, -44.0));3146TEST_CONSTEXPR(match_m256d(_mm256_maskz_fnmsub_pd((__mmask8)0b0011, (__m256d){ 1.0, 2.0, 3.0, 4.0 }, (__m256d){ 5.0, 6.0, 7.0, 8.0 }, (__m256d){ 9.0, 10.0, 11.0, 12.0 }), -14.0, -22.0, 0.0, 0.0));3147 3148__m128 test_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {3149  // CHECK-LABEL: test_mm_mask_fmadd_ps3150  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3151  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3152  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3153  return _mm_mask_fmadd_ps(__A, __U, __B, __C);3154}3155TEST_CONSTEXPR(match_m128(_mm_mask_fmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b1100, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 1.0, 2.0, 32.0, 44.0));3156TEST_CONSTEXPR(match_m128(_mm_mask_fmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b0011, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 14.0, 22.0, 3.0, 4.0));3157 3158__m128 test_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {3159  // CHECK-LABEL: test_mm_mask3_fmadd_ps3160  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3161  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3162  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3163  return _mm_mask3_fmadd_ps(__A, __B, __C, __U);3164}3165TEST_CONSTEXPR(match_m128(_mm_mask3_fmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b1100), 9.0, 10.0, 32.0, 44.0));3166TEST_CONSTEXPR(match_m128(_mm_mask3_fmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b0011), 14.0, 22.0, 11.0, 12.0));3167 3168__m128 test_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {3169  // CHECK-LABEL: test_mm_maskz_fmadd_ps3170  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3171  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3172  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3173  return _mm_maskz_fmadd_ps(__U, __A, __B, __C);3174}3175TEST_CONSTEXPR(match_m128(_mm_maskz_fmadd_ps((__mmask8)0b1100, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 0.0, 0.0, 32.0, 44.0));3176TEST_CONSTEXPR(match_m128(_mm_maskz_fmadd_ps((__mmask8)0b0011, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 14.0, 22.0, 0.0, 0.0));3177 3178__m128 test_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {3179  // CHECK-LABEL: test_mm_mask_fmsub_ps3180  // CHECK: fneg <4 x float> %{{.*}}3181  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3182  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3183  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3184  return _mm_mask_fmsub_ps(__A, __U, __B, __C);3185}3186TEST_CONSTEXPR(match_m128(_mm_mask_fmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b1100, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 1.0, 2.0, 10.0, 20.0));3187TEST_CONSTEXPR(match_m128(_mm_mask_fmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b0011, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), -4.0, 2.0, 3.0, 4.0));3188 3189__m128 test_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {3190  // CHECK-LABEL: test_mm_mask3_fmsub_ps3191  // CHECK: fneg <4 x float> %{{.*}}3192  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3193  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3194  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3195  return _mm_mask3_fmsub_ps(__A, __B, __C, __U);3196}3197TEST_CONSTEXPR(match_m128(_mm_mask3_fmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b1100), 9.0, 10.0, 10.0, 20.0));3198TEST_CONSTEXPR(match_m128(_mm_mask3_fmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b0011), -4.0, 2.0, 11.0, 12.0));3199 3200__m128 test_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {3201  // CHECK-LABEL: test_mm_maskz_fmsub_ps3202  // CHECK: fneg <4 x float> %{{.*}}3203  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3204  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3205  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3206  return _mm_maskz_fmsub_ps(__U, __A, __B, __C);3207}3208TEST_CONSTEXPR(match_m128(_mm_maskz_fmsub_ps((__mmask8)0b1100, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 0.0, 0.0, 10.0, 20.0));3209TEST_CONSTEXPR(match_m128(_mm_maskz_fmsub_ps((__mmask8)0b0011, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), -4.0, 2.0, 0.0, 0.0));3210 3211__m128 test_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {3212  // CHECK-LABEL: test_mm_mask_fnmadd_ps3213  // CHECK: fneg <4 x float> %{{.*}}3214  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3215  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3216  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3217  return _mm_mask_fnmadd_ps(__A, __U, __B, __C);3218}3219TEST_CONSTEXPR(match_m128(_mm_mask_fnmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b1100, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 1.0, 2.0, -10.0, -20.0));3220TEST_CONSTEXPR(match_m128(_mm_mask_fnmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b0011, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 4.0, -2.0, 3.0, 4.0));3221 3222__m128 test_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {3223  // CHECK-LABEL: test_mm_mask3_fnmadd_ps3224  // CHECK: fneg <4 x float> %{{.*}}3225  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3226  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3227  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3228  return _mm_mask3_fnmadd_ps(__A, __B, __C, __U);3229}3230TEST_CONSTEXPR(match_m128(_mm_mask3_fnmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b1100), 9.0, 10.0, -10.0, -20.0));3231TEST_CONSTEXPR(match_m128(_mm_mask3_fnmadd_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b0011), 4.0, -2.0, 11.0, 12.0));3232 3233__m128 test_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {3234  // CHECK-LABEL: test_mm_maskz_fnmadd_ps3235  // CHECK: fneg <4 x float> %{{.*}}3236  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3237  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3238  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3239  return _mm_maskz_fnmadd_ps(__U, __A, __B, __C);3240}3241TEST_CONSTEXPR(match_m128(_mm_maskz_fnmadd_ps((__mmask8)0b1100, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 0.0, 0.0, -10.0, -20.0));3242TEST_CONSTEXPR(match_m128(_mm_maskz_fnmadd_ps((__mmask8)0b0011, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 4.0, -2.0, 0.0, 0.0));3243 3244__m128 test_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {3245  // CHECK-LABEL: test_mm_mask_fnmsub_ps3246  // CHECK: fneg <4 x float> %{{.*}}3247  // CHECK: fneg <4 x float> %{{.*}}3248  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3249  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3250  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3251  return _mm_mask_fnmsub_ps(__A, __U, __B, __C);3252}3253TEST_CONSTEXPR(match_m128(_mm_mask_fnmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b1100, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 1.0, 2.0, -32.0, -44.0));3254TEST_CONSTEXPR(match_m128(_mm_mask_fnmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b0011, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), -14.0, -22.0, 3.0, 4.0));3255 3256__m128 test_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {3257  // CHECK-LABEL: test_mm_mask3_fnmsub_ps3258  // CHECK: fneg <4 x float> %{{.*}}3259  // CHECK: fneg <4 x float> %{{.*}}3260  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3261  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3262  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3263  return _mm_mask3_fnmsub_ps(__A, __B, __C, __U);3264}3265TEST_CONSTEXPR(match_m128(_mm_mask3_fnmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b1100), 9.0, 10.0, -32.0, -44.0));3266TEST_CONSTEXPR(match_m128(_mm_mask3_fnmsub_ps((__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}, (__mmask8)0b0011), -14.0, -22.0, 11.0, 12.0));3267 3268__m128 test_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {3269  // CHECK-LABEL: test_mm_maskz_fnmsub_ps3270  // CHECK: fneg <4 x float> %{{.*}}3271  // CHECK: fneg <4 x float> %{{.*}}3272  // CHECK: call {{.*}}<4 x float> @llvm.fma.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3273  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3274  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3275  return _mm_maskz_fnmsub_ps(__U, __A, __B, __C);3276}3277TEST_CONSTEXPR(match_m128(_mm_maskz_fnmsub_ps((__mmask8)0b1100, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), 0.0, 0.0, -32.0, -44.0));3278TEST_CONSTEXPR(match_m128(_mm_maskz_fnmsub_ps((__mmask8)0b0011, (__m128){1.0, 2.0, 3.0, 4.0}, (__m128){5.0, 6.0, 7.0, 8.0}, (__m128){9.0, 10.0, 11.0, 12.0}), -14.0, -22.0, 0.0, 0.0));3279 3280__m256 test_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {3281  // CHECK-LABEL: test_mm256_mask_fmadd_ps3282  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3283  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3284  return _mm256_mask_fmadd_ps(__A, __U, __B, __C);3285}3286TEST_CONSTEXPR(match_m256(_mm256_mask_fmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b11110000, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 1.0, 2.0, 3.0, 4.0, 86.0, 106.0, 128.0, 152.0));3287TEST_CONSTEXPR(match_m256(_mm256_mask_fmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b00001111, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 26.0, 38.0, 52.0, 68.0, 5.0, 6.0, 7.0, 8.0));3288 3289__m256 test_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {3290  // CHECK-LABEL: test_mm256_mask3_fmadd_ps3291  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3292  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3293  return _mm256_mask3_fmadd_ps(__A, __B, __C, __U);3294}3295TEST_CONSTEXPR(match_m256(_mm256_mask3_fmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b11110000), 17.0, 18.0, 19.0, 20.0, 86.0, 106.0, 128.0, 152.0));3296TEST_CONSTEXPR(match_m256(_mm256_mask3_fmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b00001111), 26.0, 38.0, 52.0, 68.0, 21.0, 22.0, 23.0, 24.0));3297 3298__m256 test_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {3299  // CHECK-LABEL: test_mm256_maskz_fmadd_ps3300  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3301  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3302  return _mm256_maskz_fmadd_ps(__U, __A, __B, __C);3303}3304TEST_CONSTEXPR(match_m256(_mm256_maskz_fmadd_ps((__mmask8)0b11110000, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 0.0, 0.0, 0.0, 0.0, 86.0, 106.0, 128.0, 152.0));3305TEST_CONSTEXPR(match_m256(_mm256_maskz_fmadd_ps((__mmask8)0b00001111, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 26.0, 38.0, 52.0, 68.0, 0.0, 0.0, 0.0, 0.0));3306 3307__m256 test_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {3308  // CHECK-LABEL: test_mm256_mask_fmsub_ps3309  // CHECK: fneg <8 x float> %{{.*}}3310  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3311  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3312  return _mm256_mask_fmsub_ps(__A, __U, __B, __C);3313}3314TEST_CONSTEXPR(match_m256(_mm256_mask_fmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b11110000, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 1.0, 2.0, 3.0, 4.0, 44.0, 62.0, 82.0, 104.0));3315TEST_CONSTEXPR(match_m256(_mm256_mask_fmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b00001111, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), -8.0, 2.0, 14.0, 28.0, 5.0, 6.0, 7.0, 8.0));3316 3317__m256 test_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {3318  // CHECK-LABEL: test_mm256_mask3_fmsub_ps3319  // CHECK: fneg <8 x float> %{{.*}}3320  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3321  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3322  return _mm256_mask3_fmsub_ps(__A, __B, __C, __U);3323}3324TEST_CONSTEXPR(match_m256(_mm256_mask3_fmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b11110000), 17.0, 18.0, 19.0, 20.0, 44.0, 62.0, 82.0, 104.0));3325TEST_CONSTEXPR(match_m256(_mm256_mask3_fmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b00001111), -8.0, 2.0, 14.0, 28.0, 21.0, 22.0, 23.0, 24.0));3326 3327__m256 test_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {3328  // CHECK-LABEL: test_mm256_maskz_fmsub_ps3329  // CHECK: fneg <8 x float> %{{.*}}3330  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3331  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3332  return _mm256_maskz_fmsub_ps(__U, __A, __B, __C);3333}3334TEST_CONSTEXPR(match_m256(_mm256_maskz_fmsub_ps((__mmask8)0b11110000, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 0.0, 0.0, 0.0, 0.0, 44.0, 62.0, 82.0, 104.0));3335TEST_CONSTEXPR(match_m256(_mm256_maskz_fmsub_ps((__mmask8)0b00001111, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), -8.0, 2.0, 14.0, 28.0, 0.0, 0.0, 0.0, 0.0));3336 3337__m256 test_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {3338  // CHECK-LABEL: test_mm256_mask_fnmadd_ps3339  // CHECK: fneg <8 x float> %{{.*}}3340  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3341  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3342  return _mm256_mask_fnmadd_ps(__A, __U, __B, __C);3343}3344TEST_CONSTEXPR(match_m256(_mm256_mask_fnmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b11110000, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 1.0, 2.0, 3.0, 4.0, -44.0, -62.0, -82.0, -104.0));3345TEST_CONSTEXPR(match_m256(_mm256_mask_fnmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b00001111, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 8.0, -2.0, -14.0, -28.0, 5.0, 6.0, 7.0, 8.0));3346 3347__m256 test_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {3348  // CHECK-LABEL: test_mm256_mask3_fnmadd_ps3349  // CHECK: fneg <8 x float> %{{.*}}3350  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3351  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3352  return _mm256_mask3_fnmadd_ps(__A, __B, __C, __U);3353}3354TEST_CONSTEXPR(match_m256( _mm256_mask3_fnmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b11110000), 17.0, 18.0, 19.0, 20.0, -44.0, -62.0, -82.0, -104.0));3355TEST_CONSTEXPR(match_m256( _mm256_mask3_fnmadd_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b00001111), 8.0, -2.0, -14.0, -28.0, 21.0, 22.0, 23.0, 24.0));3356 3357__m256 test_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {3358  // CHECK-LABEL: test_mm256_maskz_fnmadd_ps3359  // CHECK: fneg <8 x float> %{{.*}}3360  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3361  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3362  return _mm256_maskz_fnmadd_ps(__U, __A, __B, __C);3363}3364TEST_CONSTEXPR(match_m256(_mm256_maskz_fnmadd_ps((__mmask8)0b11110000, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 0.0, 0.0, 0.0, 0.0, -44.0, -62.0, -82.0, -104.0));3365TEST_CONSTEXPR(match_m256(_mm256_maskz_fnmadd_ps((__mmask8)0b00001111, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 8.0, -2.0, -14.0, -28.0, 0.0, 0.0, 0.0, 0.0));3366 3367__m256 test_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {3368  // CHECK-LABEL: test_mm256_mask_fnmsub_ps3369  // CHECK: fneg <8 x float> %{{.*}}3370  // CHECK: fneg <8 x float> %{{.*}}3371  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3372  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3373  return _mm256_mask_fnmsub_ps(__A, __U, __B, __C);3374}3375TEST_CONSTEXPR(match_m256(_mm256_mask_fnmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b11110000, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 1.0, 2.0, 3.0, 4.0, -86.0, -106.0, -128.0, -152.0));3376TEST_CONSTEXPR(match_m256(_mm256_mask_fnmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__mmask8)0b00001111, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), -26.0, -38.0, -52.0, -68.0, 5.0, 6.0, 7.0, 8.0));3377 3378__m256 test_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {3379  // CHECK-LABEL: test_mm256_mask3_fnmsub_ps3380  // CHECK: fneg <8 x float> %{{.*}}3381  // CHECK: fneg <8 x float> %{{.*}}3382  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3383  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3384  return _mm256_mask3_fnmsub_ps(__A, __B, __C, __U);3385}3386TEST_CONSTEXPR(match_m256(_mm256_mask3_fnmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b11110000), 17.0, 18.0, 19.0, 20.0, -86.0, -106.0, -128.0, -152.0));3387TEST_CONSTEXPR(match_m256(_mm256_mask3_fnmsub_ps((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}, (__mmask8)0b00001111), -26.0, -38.0, -52.0, -68.0, 21.0, 22.0, 23.0, 24.0));3388 3389__m256 test_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {3390  // CHECK-LABEL: test_mm256_maskz_fnmsub_ps3391  // CHECK: fneg <8 x float> %{{.*}}3392  // CHECK: fneg <8 x float> %{{.*}}3393  // CHECK: call {{.*}}<8 x float> @llvm.fma.v8f32(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3394  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3395  return _mm256_maskz_fnmsub_ps(__U, __A, __B, __C);3396}3397TEST_CONSTEXPR(match_m256(_mm256_maskz_fnmsub_ps((__mmask8)0b11110000, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), 0.0, 0.0, 0.0, 0.0, -86.0, -106.0, -128.0, -152.0));3398TEST_CONSTEXPR(match_m256(_mm256_maskz_fnmsub_ps((__mmask8)0b00001111, (__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}, (__m256){9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0}, (__m256){17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0}), -26.0, -38.0, -52.0, -68.0, 0.0, 0.0, 0.0, 0.0));3399 3400__m128d test_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {3401  // CHECK-LABEL: test_mm_mask_fmaddsub_pd3402  // CHECK-NOT: fneg3403  // CHECK: call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})3404  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3405  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3406  return _mm_mask_fmaddsub_pd(__A, __U, __B, __C);3407}3408 3409__m128d test_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C) {3410  // CHECK-LABEL: test_mm_mask_fmsubadd_pd3411  // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}3412  // CHECK: call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]])3413  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3414  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3415  return _mm_mask_fmsubadd_pd(__A, __U, __B, __C);3416}3417 3418__m128d test_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {3419  // CHECK-LABEL: test_mm_mask3_fmaddsub_pd3420  // CHECK-NOT: fneg3421  // CHECK: call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})3422  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3423  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3424  return _mm_mask3_fmaddsub_pd(__A, __B, __C, __U);3425}3426 3427__m128d test_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {3428  // CHECK-LABEL: test_mm_maskz_fmaddsub_pd3429  // CHECK-NOT: fneg3430  // CHECK: call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}})3431  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3432  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3433  return _mm_maskz_fmaddsub_pd(__U, __A, __B, __C);3434}3435 3436__m128d test_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C) {3437  // CHECK-LABEL: test_mm_maskz_fmsubadd_pd3438  // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.*}}3439  // CHECK: call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]])3440  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3441  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3442  return _mm_maskz_fmsubadd_pd(__U, __A, __B, __C);3443}3444 3445__m256d test_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {3446  // CHECK-LABEL: test_mm256_mask_fmaddsub_pd3447  // CHECK-NOT: fneg3448  // CHECK: call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3449  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3450  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3451  return _mm256_mask_fmaddsub_pd(__A, __U, __B, __C);3452}3453 3454__m256d test_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C) {3455  // CHECK-LABEL: test_mm256_mask_fmsubadd_pd3456  // CHECK: [[NEG:%.+]] = fneg <4 x double> %{{.*}}3457  // CHECK: call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]])3458  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3459  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3460  return _mm256_mask_fmsubadd_pd(__A, __U, __B, __C);3461}3462 3463__m256d test_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {3464  // CHECK-LABEL: test_mm256_mask3_fmaddsub_pd3465  // CHECK-NOT: fneg3466  // CHECK: call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3467  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3468  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3469  return _mm256_mask3_fmaddsub_pd(__A, __B, __C, __U);3470}3471 3472__m256d test_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {3473  // CHECK-LABEL: test_mm256_maskz_fmaddsub_pd3474  // CHECK-NOT: fneg3475  // CHECK: call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}})3476  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3477  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3478  return _mm256_maskz_fmaddsub_pd(__U, __A, __B, __C);3479}3480 3481__m256d test_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C) {3482  // CHECK-LABEL: test_mm256_maskz_fmsubadd_pd3483  // CHECK: [[NEG:%.+]] = fneg <4 x double> %{{.*}}3484  // CHECK: call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]])3485  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3486  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3487  return _mm256_maskz_fmsubadd_pd(__U, __A, __B, __C);3488}3489 3490__m128 test_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {3491  // CHECK-LABEL: test_mm_mask_fmaddsub_ps3492  // CHECK-NOT: fneg3493  // CHECK: call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3494  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3495  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3496  return _mm_mask_fmaddsub_ps(__A, __U, __B, __C);3497}3498 3499__m128 test_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C) {3500  // CHECK-LABEL: test_mm_mask_fmsubadd_ps3501  // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}3502  // CHECK: call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]])3503  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3504  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3505  return _mm_mask_fmsubadd_ps(__A, __U, __B, __C);3506}3507 3508__m128 test_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {3509  // CHECK-LABEL: test_mm_mask3_fmaddsub_ps3510  // CHECK-NOT: fneg3511  // CHECK: call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3512  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3513  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3514  return _mm_mask3_fmaddsub_ps(__A, __B, __C, __U);3515}3516 3517__m128 test_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {3518  // CHECK-LABEL: test_mm_maskz_fmaddsub_ps3519  // CHECK-NOT: fneg3520  // CHECK: call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}})3521  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3522  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3523  return _mm_maskz_fmaddsub_ps(__U, __A, __B, __C);3524}3525 3526__m128 test_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C) {3527  // CHECK-LABEL: test_mm_maskz_fmsubadd_ps3528  // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.*}}3529  // CHECK: call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]])3530  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3531  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3532  return _mm_maskz_fmsubadd_ps(__U, __A, __B, __C);3533}3534 3535__m256 test_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {3536  // CHECK-LABEL: test_mm256_mask_fmaddsub_ps3537  // CHECK-NOT: fneg3538  // CHECK: call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3539  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3540  return _mm256_mask_fmaddsub_ps(__A, __U, __B, __C);3541}3542 3543__m256 test_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C) {3544  // CHECK-LABEL: test_mm256_mask_fmsubadd_ps3545  // CHECK: [[NEG:%.+]] = fneg <8 x float> %{{.*}}3546  // CHECK: call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]])3547  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3548  return _mm256_mask_fmsubadd_ps(__A, __U, __B, __C);3549}3550 3551__m256 test_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {3552  // CHECK-LABEL: test_mm256_mask3_fmaddsub_ps3553  // CHECK-NOT: fneg3554  // CHECK: call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3555  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3556  return _mm256_mask3_fmaddsub_ps(__A, __B, __C, __U);3557}3558 3559__m256 test_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {3560  // CHECK-LABEL: test_mm256_maskz_fmaddsub_ps3561  // CHECK-NOT: fneg3562  // CHECK: call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}})3563  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3564  return _mm256_maskz_fmaddsub_ps(__U, __A, __B, __C);3565}3566 3567__m256 test_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C) {3568  // CHECK-LABEL: test_mm256_maskz_fmsubadd_ps3569  // CHECK: [[NEG:%.+]] = fneg <8 x float> %{{.*}}3570  // CHECK: call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]])3571  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3572  return _mm256_maskz_fmsubadd_ps(__U, __A, __B, __C);3573}3574 3575__m128d test_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U) {3576  // CHECK-LABEL: test_mm_mask3_fmsubadd_pd3577  // CHECK: [[NEG:%.+]] = fneg <2 x double> %{{.+}}3578  // CHECK: call <2 x double> @llvm.x86.fma.vfmaddsub.pd(<2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x double> [[NEG]])3579  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>3580  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3581  return _mm_mask3_fmsubadd_pd(__A, __B, __C, __U);3582}3583 3584__m256d test_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U) {3585  // CHECK-LABEL: test_mm256_mask3_fmsubadd_pd3586  // CHECK: [[NEG:%.+]] = fneg <4 x double> %{{.+}}3587  // CHECK: call <4 x double> @llvm.x86.fma.vfmaddsub.pd.256(<4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x double> [[NEG]])3588  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3589  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3590  return _mm256_mask3_fmsubadd_pd(__A, __B, __C, __U);3591}3592 3593__m128 test_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U) {3594  // CHECK-LABEL: test_mm_mask3_fmsubadd_ps3595  // CHECK: [[NEG:%.+]] = fneg <4 x float> %{{.+}}3596  // CHECK: call <4 x float> @llvm.x86.fma.vfmaddsub.ps(<4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x float> [[NEG]])3597  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>3598  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3599  return _mm_mask3_fmsubadd_ps(__A, __B, __C, __U);3600}3601 3602__m256 test_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U) {3603  // CHECK-LABEL: test_mm256_mask3_fmsubadd_ps3604  // CHECK: [[NEG:%.+]] = fneg <8 x float> %{{.*}}3605  // CHECK: call <8 x float> @llvm.x86.fma.vfmaddsub.ps.256(<8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x float> [[NEG]])3606  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3607  return _mm256_mask3_fmsubadd_ps(__A, __B, __C, __U);3608}3609 3610__m128d test_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {3611  // CHECK-LABEL: test_mm_mask_add_pd3612  // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}3613  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3614  return _mm_mask_add_pd(__W,__U,__A,__B); 3615}3616TEST_CONSTEXPR(match_m128d(_mm_mask_add_pd((__m128d){1.0, 2.0}, (__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), 110.0, 2.0));3617 3618__m128d test_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {3619  // CHECK-LABEL: test_mm_maskz_add_pd3620  // CHECK: fadd <2 x double> %{{.*}}, %{{.*}}3621  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3622  return _mm_maskz_add_pd(__U,__A,__B); 3623}3624TEST_CONSTEXPR(match_m128d(_mm_maskz_add_pd((__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), 110.0, 0.0));3625 3626__m256d test_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {3627  // CHECK-LABEL: test_mm256_mask_add_pd3628  // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}3629  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3630  return _mm256_mask_add_pd(__W,__U,__A,__B); 3631}3632TEST_CONSTEXPR(match_m256d(_mm256_mask_add_pd((__m256d){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 1.0, 2.0, 330.0, 440.0));3633 3634__m256d test_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {3635  // CHECK-LABEL: test_mm256_maskz_add_pd3636  // CHECK: fadd <4 x double> %{{.*}}, %{{.*}}3637  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3638  return _mm256_maskz_add_pd(__U,__A,__B); 3639}3640TEST_CONSTEXPR(match_m256d(_mm256_maskz_add_pd((__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 0.0, 0.0, 330.0, 440.0));3641 3642__m128 test_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {3643  // CHECK-LABEL: test_mm_mask_add_ps3644  // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}3645  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3646  return _mm_mask_add_ps(__W,__U,__A,__B); 3647}3648TEST_CONSTEXPR(match_m128(_mm_mask_add_ps((__m128){1.0f, 2.0f, 3.0f, 4.0f}, (__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 1.0f, 220.0f, 3.0f, 440.0f));3649 3650__m128 test_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {3651  // CHECK-LABEL: test_mm_maskz_add_ps3652  // CHECK: fadd <4 x float> %{{.*}}, %{{.*}}3653  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3654  return _mm_maskz_add_ps(__U,__A,__B); 3655}3656TEST_CONSTEXPR(match_m128(_mm_maskz_add_ps((__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 0.0f, 220.0f, 0.0f, 440.0f));3657 3658__m256 test_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {3659  // CHECK-LABEL: test_mm256_mask_add_ps3660  // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}3661  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3662  return _mm256_mask_add_ps(__W,__U,__A,__B); 3663}3664TEST_CONSTEXPR(match_m256(_mm256_mask_add_ps((__m256){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}, (__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 1.0f, 2.0f, 3.0f, 4.0f, 550.0f, 660.0f, 770.0f, 880.0f));3665 3666__m256 test_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {3667  // CHECK-LABEL: test_mm256_maskz_add_ps3668  // CHECK: fadd <8 x float> %{{.*}}, %{{.*}}3669  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3670  return _mm256_maskz_add_ps(__U,__A,__B); 3671}3672TEST_CONSTEXPR(match_m256(_mm256_maskz_add_ps((__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 0.0f, 0.0f, 0.0f, 0.0f, 550.0f, 660.0f, 770.0f, 880.0f));3673 3674__m128i test_mm_mask_blend_epi32(__mmask8 __U, __m128i __A, __m128i __W) {3675  // CHECK-LABEL: test_mm_mask_blend_epi323676  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}3677  return _mm_mask_blend_epi32(__U,__A,__W); 3678}3679TEST_CONSTEXPR(match_v4si(3680  _mm_mask_blend_epi32(3681    (__mmask8)0x01,3682    (__m128i)(__v4si){2, 2, 2, 2},3683    (__m128i)(__v4si){ 10,11,12,13 }3684  ),3685  10, 2, 2, 23686));3687__m256i test_mm256_mask_blend_epi32(__mmask8 __U, __m256i __A, __m256i __W) {3688  // CHECK-LABEL: test_mm256_mask_blend_epi323689  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}3690  return _mm256_mask_blend_epi32(__U,__A,__W); 3691}3692TEST_CONSTEXPR(match_v8si(3693  _mm256_mask_blend_epi32(3694    (__mmask8)0x01,3695    (__m256i)(__v8si){2, 2, 2, 2, 2, 2, 2, 2},3696    (__m256i)(__v8si){ 10,11,12,13,14,15,16,17 }3697  ),3698  10, 2, 2, 2, 2, 2, 2, 23699));3700__m128d test_mm_mask_blend_pd(__mmask8 __U, __m128d __A, __m128d __W) {3701  // CHECK-LABEL: test_mm_mask_blend_pd3702  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}3703  return _mm_mask_blend_pd(__U,__A,__W); 3704}3705TEST_CONSTEXPR(match_m128d(3706  _mm_mask_blend_pd(3707    (__mmask8)0x01, 3708    (__m128d)(__v2df){2.0, 2.0}, 3709    (__m128d)(__v2df){10.0, 20.0}3710  ),3711  10.0, 2.03712));3713__m256d test_mm256_mask_blend_pd(__mmask8 __U, __m256d __A, __m256d __W) {3714  // CHECK-LABEL: test_mm256_mask_blend_pd3715  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}3716  return _mm256_mask_blend_pd(__U,__A,__W); 3717}3718TEST_CONSTEXPR(match_m256d(3719  _mm256_mask_blend_pd(3720    (__mmask8)0x01,3721    (__m256d)(__v4df){2.0, 2.0, 2.0, 2.0},3722    (__m256d)(__v4df){10.0, 11.0, 12.0, 13.0}3723  ),3724  10.0, 2.0, 2.0, 2.03725));3726 3727__m128 test_mm_mask_blend_ps(__mmask8 __U, __m128 __A, __m128 __W) {3728  // CHECK-LABEL: test_mm_mask_blend_ps3729  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}3730  return _mm_mask_blend_ps(__U,__A,__W); 3731}3732TEST_CONSTEXPR(match_m128(3733  _mm_mask_blend_ps(3734    (__mmask8)0x01,3735    (__m128)(__v4sf){2.0f, 2.0f, 2.0f, 2.0f},3736    (__m128)(__v4sf){10.0f, 11.0f, 12.0f, 13.0f}3737  ),3738  10.0f, 2.0f, 2.0f, 2.0f3739));3740 3741__m256 test_mm256_mask_blend_ps(__mmask8 __U, __m256 __A, __m256 __W) {3742  // CHECK-LABEL: test_mm256_mask_blend_ps3743  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}3744  return _mm256_mask_blend_ps(__U,__A,__W); 3745}3746TEST_CONSTEXPR(match_m256(3747  _mm256_mask_blend_ps(3748    (__mmask8)0x01,3749    (__m256)(__v8sf){2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f},3750    (__m256)(__v8sf){10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f}3751  ),3752  10.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f, 2.0f3753));3754 3755__m128i test_mm_mask_blend_epi64(__mmask8 __U, __m128i __A, __m128i __W) {3756  // CHECK-LABEL: test_mm_mask_blend_epi643757  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}3758  return _mm_mask_blend_epi64(__U,__A,__W); 3759}3760TEST_CONSTEXPR(match_v2di(3761  _mm_mask_blend_epi64(3762    (__mmask8)0x01,3763    (__m128i)(__v2di){2, 2},3764    (__m128i)(__v2di){ 10,11 }3765  ),3766  10, 23767));3768__m256i test_mm256_mask_blend_epi64(__mmask8 __U, __m256i __A, __m256i __W) {3769  // CHECK-LABEL: test_mm256_mask_blend_epi643770  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}3771  return _mm256_mask_blend_epi64(__U,__A,__W); 3772}3773TEST_CONSTEXPR(match_v4di(3774  _mm256_mask_blend_epi64(3775    (__mmask8)0x01,3776    (__m256i)(__v4di){2, 2, 2, 2},3777    (__m256i)(__v4di){ 10,11,12,13 }3778  ),3779  10, 2, 2, 23780));3781__m128d test_mm_mask_compress_pd(__m128d __W, __mmask8 __U, __m128d __A) {3782  // CHECK-LABEL: test_mm_mask_compress_pd3783  // CHECK: @llvm.x86.avx512.mask.compress3784  return _mm_mask_compress_pd(__W,__U,__A); 3785}3786__m128d test_mm_maskz_compress_pd(__mmask8 __U, __m128d __A) {3787  // CHECK-LABEL: test_mm_maskz_compress_pd3788  // CHECK: @llvm.x86.avx512.mask.compress3789  return _mm_maskz_compress_pd(__U,__A); 3790}3791__m256d test_mm256_mask_compress_pd(__m256d __W, __mmask8 __U, __m256d __A) {3792  // CHECK-LABEL: test_mm256_mask_compress_pd3793  // CHECK: @llvm.x86.avx512.mask.compress3794  return _mm256_mask_compress_pd(__W,__U,__A); 3795}3796__m256d test_mm256_maskz_compress_pd(__mmask8 __U, __m256d __A) {3797  // CHECK-LABEL: test_mm256_maskz_compress_pd3798  // CHECK: @llvm.x86.avx512.mask.compress3799  return _mm256_maskz_compress_pd(__U,__A); 3800}3801__m128i test_mm_mask_compress_epi64(__m128i __W, __mmask8 __U, __m128i __A) {3802  // CHECK-LABEL: test_mm_mask_compress_epi643803  // CHECK: @llvm.x86.avx512.mask.compress3804  return _mm_mask_compress_epi64(__W,__U,__A); 3805}3806__m128i test_mm_maskz_compress_epi64(__mmask8 __U, __m128i __A) {3807  // CHECK-LABEL: test_mm_maskz_compress_epi643808  // CHECK: @llvm.x86.avx512.mask.compress3809  return _mm_maskz_compress_epi64(__U,__A); 3810}3811__m256i test_mm256_mask_compress_epi64(__m256i __W, __mmask8 __U, __m256i __A) {3812  // CHECK-LABEL: test_mm256_mask_compress_epi643813  // CHECK: @llvm.x86.avx512.mask.compress3814  return _mm256_mask_compress_epi64(__W,__U,__A); 3815}3816__m256i test_mm256_maskz_compress_epi64(__mmask8 __U, __m256i __A) {3817  // CHECK-LABEL: test_mm256_maskz_compress_epi643818  // CHECK: @llvm.x86.avx512.mask.compress3819  return _mm256_maskz_compress_epi64(__U,__A); 3820}3821__m128 test_mm_mask_compress_ps(__m128 __W, __mmask8 __U, __m128 __A) {3822  // CHECK-LABEL: test_mm_mask_compress_ps3823  // CHECK: @llvm.x86.avx512.mask.compress3824  return _mm_mask_compress_ps(__W,__U,__A); 3825}3826__m128 test_mm_maskz_compress_ps(__mmask8 __U, __m128 __A) {3827  // CHECK-LABEL: test_mm_maskz_compress_ps3828  // CHECK: @llvm.x86.avx512.mask.compress3829  return _mm_maskz_compress_ps(__U,__A); 3830}3831__m256 test_mm256_mask_compress_ps(__m256 __W, __mmask8 __U, __m256 __A) {3832  // CHECK-LABEL: test_mm256_mask_compress_ps3833  // CHECK: @llvm.x86.avx512.mask.compress3834  return _mm256_mask_compress_ps(__W,__U,__A); 3835}3836__m256 test_mm256_maskz_compress_ps(__mmask8 __U, __m256 __A) {3837  // CHECK-LABEL: test_mm256_maskz_compress_ps3838  // CHECK: @llvm.x86.avx512.mask.compress3839  return _mm256_maskz_compress_ps(__U,__A); 3840}3841__m128i test_mm_mask_compress_epi32(__m128i __W, __mmask8 __U, __m128i __A) {3842  // CHECK-LABEL: test_mm_mask_compress_epi323843  // CHECK: @llvm.x86.avx512.mask.compress3844  return _mm_mask_compress_epi32(__W,__U,__A); 3845}3846__m128i test_mm_maskz_compress_epi32(__mmask8 __U, __m128i __A) {3847  // CHECK-LABEL: test_mm_maskz_compress_epi323848  // CHECK: @llvm.x86.avx512.mask.compress3849  return _mm_maskz_compress_epi32(__U,__A); 3850}3851__m256i test_mm256_mask_compress_epi32(__m256i __W, __mmask8 __U, __m256i __A) {3852  // CHECK-LABEL: test_mm256_mask_compress_epi323853  // CHECK: @llvm.x86.avx512.mask.compress3854  return _mm256_mask_compress_epi32(__W,__U,__A); 3855}3856__m256i test_mm256_maskz_compress_epi32(__mmask8 __U, __m256i __A) {3857  // CHECK-LABEL: test_mm256_maskz_compress_epi323858  // CHECK: @llvm.x86.avx512.mask.compress3859  return _mm256_maskz_compress_epi32(__U,__A); 3860}3861void test_mm_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m128d __A) {3862  // CHECK-LABEL: test_mm_mask_compressstoreu_pd3863  // CHECK: @llvm.masked.compressstore.v2f64(<2 x double> %{{.*}}, ptr %{{.*}}, <2 x i1> %{{.*}})3864  return _mm_mask_compressstoreu_pd(__P,__U,__A); 3865}3866void test_mm256_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m256d __A) {3867  // CHECK-LABEL: test_mm256_mask_compressstoreu_pd3868  // CHECK: @llvm.masked.compressstore.v4f64(<4 x double> %{{.*}}, ptr %{{.*}}, <4 x i1> %{{.*}})3869  return _mm256_mask_compressstoreu_pd(__P,__U,__A); 3870}3871void test_mm_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m128i __A) {3872  // CHECK-LABEL: test_mm_mask_compressstoreu_epi643873  // CHECK: @llvm.masked.compressstore.v2i64(<2 x i64> %{{.*}}, ptr %{{.*}}, <2 x i1> %{{.*}})3874  return _mm_mask_compressstoreu_epi64(__P,__U,__A); 3875}3876void test_mm256_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m256i __A) {3877  // CHECK-LABEL: test_mm256_mask_compressstoreu_epi643878  // CHECK: @llvm.masked.compressstore.v4i64(<4 x i64> %{{.*}}, ptr %{{.*}}, <4 x i1> %{{.*}})3879  return _mm256_mask_compressstoreu_epi64(__P,__U,__A); 3880}3881void test_mm_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m128 __A) {3882  // CHECK-LABEL: test_mm_mask_compressstoreu_ps3883  // CHECK: @llvm.masked.compressstore.v4f32(<4 x float> %{{.*}}, ptr %{{.*}}, <4 x i1> %{{.*}})3884  return _mm_mask_compressstoreu_ps(__P,__U,__A); 3885}3886void test_mm256_mask_compressstoreu_ps(void *__P, __mmask8 __U, __m256 __A) {3887  // CHECK-LABEL: test_mm256_mask_compressstoreu_ps3888  // CHECK: @llvm.masked.compressstore.v8f32(<8 x float> %{{.*}}, ptr %{{.*}}, <8 x i1> %{{.*}})3889  return _mm256_mask_compressstoreu_ps(__P,__U,__A); 3890}3891void test_mm_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m128i __A) {3892  // CHECK-LABEL: test_mm_mask_compressstoreu_epi323893  // CHECK: @llvm.masked.compressstore.v4i32(<4 x i32> %{{.*}}, ptr %{{.*}}, <4 x i1> %{{.*}})3894  return _mm_mask_compressstoreu_epi32(__P,__U,__A); 3895}3896void test_mm256_mask_compressstoreu_epi32(void *__P, __mmask8 __U, __m256i __A) {3897  // CHECK-LABEL: test_mm256_mask_compressstoreu_epi323898  // CHECK: @llvm.masked.compressstore.v8i32(<8 x i32> %{{.*}}, ptr %{{.*}}, <8 x i1> %{{.*}})3899  return _mm256_mask_compressstoreu_epi32(__P,__U,__A); 3900}3901__m128d test_mm_mask_cvtepi32_pd(__m128d __W, __mmask8 __U, __m128i __A) {3902  // CHECK-LABEL: test_mm_mask_cvtepi32_pd3903  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>3904  // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>3905  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}3906  return _mm_mask_cvtepi32_pd(__W,__U,__A);3907}3908 3909TEST_CONSTEXPR(match_m128d(_mm_mask_cvtepi32_pd((__m128d){-777.0, -777.0}, /*10=*/0x2, (__m128i)(__v4si){-1, 1, -2, 2}), -777.0, 1.0));3910 3911__m128d test_mm_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {3912  // CHECK-LABEL: test_mm_maskz_cvtepi32_pd3913  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>3914  // CHECK: sitofp <2 x i32> %{{.*}} to <2 x double>3915  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}3916  return _mm_maskz_cvtepi32_pd(__U,__A);3917}3918 3919TEST_CONSTEXPR(match_m128d(_mm_maskz_cvtepi32_pd(/*10=*/0x2, (__m128i)(__v4si){-1, 1, -2, 2}), 0.0, 1.0));3920 3921__m256d test_mm256_mask_cvtepi32_pd(__m256d __W, __mmask8 __U, __m128i __A) {3922  // CHECK-LABEL: test_mm256_mask_cvtepi32_pd3923  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>3924  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}3925  return _mm256_mask_cvtepi32_pd(__W,__U,__A);3926}3927 3928TEST_CONSTEXPR(match_m256d(_mm256_mask_cvtepi32_pd(_mm256_set1_pd(-777.0), /*0101=*/0x5, (__m128i)(__v4si){-1, 1, -2, 2}), -1.0, -777.0, -2.0, -777.0));3929 3930__m256d test_mm256_maskz_cvtepi32_pd(__mmask8 __U, __m128i __A) {3931  // CHECK-LABEL: test_mm256_maskz_cvtepi32_pd3932  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x double>3933  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}3934  return _mm256_maskz_cvtepi32_pd(__U,__A);3935}3936 3937TEST_CONSTEXPR(match_m256d(_mm256_maskz_cvtepi32_pd(/*0101=*/0x5, (__m128i)(__v4si){-1, 1, -2, 2}), -1.0, 0.0, -2.0, 0.0));3938 3939__m128 test_mm_mask_cvtepi32_ps(__m128 __W, __mmask8 __U, __m128i __A) {3940  // CHECK-LABEL: test_mm_mask_cvtepi32_ps3941  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>3942  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}3943  return _mm_mask_cvtepi32_ps(__W,__U,__A); 3944}3945 3946TEST_CONSTEXPR(match_m128(_mm_mask_cvtepi32_ps((__m128){-777.0f, -777.0f, -777.0f, -777.0f}, /*0101=*/0x5, (__m128i)(__v4si){-1, 1, -2, 2}), -1.0f, -777.0f, -2.0f, -777.0f));3947 3948__m128 test_mm_maskz_cvtepi32_ps(__mmask8 __U, __m128i __A) {3949  // CHECK-LABEL: test_mm_maskz_cvtepi32_ps3950  // CHECK: sitofp <4 x i32> %{{.*}} to <4 x float>3951  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}3952  return _mm_maskz_cvtepi32_ps(__U,__A); 3953}3954 3955TEST_CONSTEXPR(match_m128(_mm_maskz_cvtepi32_ps(/*0101=*/0x5, (__m128i)(__v4si){-1, 1, -2, 2}), -1.0f, 0.0f, -2.0f, 0.0f));3956 3957__m256 test_mm256_mask_cvtepi32_ps(__m256 __W, __mmask8 __U, __m256i __A) {3958  // CHECK-LABEL: test_mm256_mask_cvtepi32_ps3959  // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>3960  // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}3961  return _mm256_mask_cvtepi32_ps(__W,__U,__A); 3962}3963 3964TEST_CONSTEXPR(match_m256(_mm256_mask_cvtepi32_ps(_mm256_set1_ps(-777.0f), /*1001 0101=*/0x95, (__m256i)(__v8si){-1, 1, -2, 2, -4, 4, -8, 8}), -1.0f, -777.0f, -2.0f, -777.0f, -4.0f, -777.0f, -777.0f, 8.0f));3965 3966__m256 test_mm256_maskz_cvtepi32_ps(__mmask8 __U, __m256i __A) {3967  // CHECK-LABEL: test_mm256_maskz_cvtepi32_ps3968  // CHECK: sitofp <8 x i32> %{{.*}} to <8 x float>3969  // CHECK: select <8 x i1> {{.*}}, <8 x float> {{.*}}, <8 x float> {{.*}}3970  return _mm256_maskz_cvtepi32_ps(__U,__A); 3971}3972 3973TEST_CONSTEXPR(match_m256(_mm256_maskz_cvtepi32_ps(/*1001 0101=*/0x95, (__m256i)(__v8si){-1, 1, -2, 2, -4, 4, -8, 8}), -1.0f, 0.0f, -2.0f, 0.0f, -4.0f, 0.0f, 0.0f, 8.0f));3974 3975__m128i test_mm_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {3976  // CHECK-LABEL: test_mm_mask_cvtpd_epi323977  // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.1283978  return _mm_mask_cvtpd_epi32(__W,__U,__A); 3979}3980__m128i test_mm_maskz_cvtpd_epi32(__mmask8 __U, __m128d __A) {3981  // CHECK-LABEL: test_mm_maskz_cvtpd_epi323982  // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.1283983  return _mm_maskz_cvtpd_epi32(__U,__A); 3984}3985__m128i test_mm256_mask_cvtpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {3986  // CHECK-LABEL: test_mm256_mask_cvtpd_epi323987  // CHECK: @llvm.x86.avx.cvt.pd2dq.2563988  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}3989  return _mm256_mask_cvtpd_epi32(__W,__U,__A); 3990}3991__m128i test_mm256_maskz_cvtpd_epi32(__mmask8 __U, __m256d __A) {3992  // CHECK-LABEL: test_mm256_maskz_cvtpd_epi323993  // CHECK: @llvm.x86.avx.cvt.pd2dq.2563994  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}3995  return _mm256_maskz_cvtpd_epi32(__U,__A); 3996}3997__m128 test_mm_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m128d __A) {3998  // CHECK-LABEL: test_mm_mask_cvtpd_ps3999  // CHECK: @llvm.x86.avx512.mask.cvtpd2ps4000  return _mm_mask_cvtpd_ps(__W,__U,__A); 4001}4002__m128 test_mm_maskz_cvtpd_ps(__mmask8 __U, __m128d __A) {4003  // CHECK-LABEL: test_mm_maskz_cvtpd_ps4004  // CHECK: @llvm.x86.avx512.mask.cvtpd2ps4005  return _mm_maskz_cvtpd_ps(__U,__A); 4006}4007__m128 test_mm256_mask_cvtpd_ps(__m128 __W, __mmask8 __U, __m256d __A) {4008  // CHECK-LABEL: test_mm256_mask_cvtpd_ps4009  // CHECK: @llvm.x86.avx.cvt.pd2.ps.2564010  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}4011  return _mm256_mask_cvtpd_ps(__W,__U,__A); 4012}4013__m128 test_mm256_maskz_cvtpd_ps(__mmask8 __U, __m256d __A) {4014  // CHECK-LABEL: test_mm256_maskz_cvtpd_ps4015  // CHECK: @llvm.x86.avx.cvt.pd2.ps.2564016  // CHECK: select <4 x i1> {{.*}}, <4 x float> {{.*}}, <4 x float> {{.*}}4017  return _mm256_maskz_cvtpd_ps(__U,__A); 4018}4019__m128i test_mm_cvtpd_epu32(__m128d __A) {4020  // CHECK-LABEL: test_mm_cvtpd_epu324021  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.1284022  return _mm_cvtpd_epu32(__A); 4023}4024__m128i test_mm_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {4025  // CHECK-LABEL: test_mm_mask_cvtpd_epu324026  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.1284027  return _mm_mask_cvtpd_epu32(__W,__U,__A); 4028}4029__m128i test_mm_maskz_cvtpd_epu32(__mmask8 __U, __m128d __A) {4030  // CHECK-LABEL: test_mm_maskz_cvtpd_epu324031  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.1284032  return _mm_maskz_cvtpd_epu32(__U,__A); 4033}4034__m128i test_mm256_cvtpd_epu32(__m256d __A) {4035  // CHECK-LABEL: test_mm256_cvtpd_epu324036  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.2564037  return _mm256_cvtpd_epu32(__A); 4038}4039__m128i test_mm256_mask_cvtpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {4040  // CHECK-LABEL: test_mm256_mask_cvtpd_epu324041  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.2564042  return _mm256_mask_cvtpd_epu32(__W,__U,__A); 4043}4044__m128i test_mm256_maskz_cvtpd_epu32(__mmask8 __U, __m256d __A) {4045  // CHECK-LABEL: test_mm256_maskz_cvtpd_epu324046  // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.2564047  return _mm256_maskz_cvtpd_epu32(__U,__A); 4048}4049__m128i test_mm_mask_cvtps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {4050  // CHECK-LABEL: test_mm_mask_cvtps_epi324051  // CHECK: @llvm.x86.sse2.cvtps2dq4052  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}4053  return _mm_mask_cvtps_epi32(__W,__U,__A); 4054}4055__m128i test_mm_maskz_cvtps_epi32(__mmask8 __U, __m128 __A) {4056  // CHECK-LABEL: test_mm_maskz_cvtps_epi324057  // CHECK: @llvm.x86.sse2.cvtps2dq4058  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}4059  return _mm_maskz_cvtps_epi32(__U,__A); 4060}4061__m256i test_mm256_mask_cvtps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {4062  // CHECK-LABEL: test_mm256_mask_cvtps_epi324063  // CHECK: @llvm.x86.avx.cvt.ps2dq.2564064  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}4065  return _mm256_mask_cvtps_epi32(__W,__U,__A); 4066}4067__m256i test_mm256_maskz_cvtps_epi32(__mmask8 __U, __m256 __A) {4068  // CHECK-LABEL: test_mm256_maskz_cvtps_epi324069  // CHECK: @llvm.x86.avx.cvt.ps2dq.2564070  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}4071  return _mm256_maskz_cvtps_epi32(__U,__A); 4072}4073__m128d test_mm_mask_cvtps_pd(__m128d __W, __mmask8 __U, __m128 __A) {4074  // CHECK-LABEL: test_mm_mask_cvtps_pd4075  // CHECK: fpext <2 x float> %{{.*}} to <2 x double>4076  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}4077  return _mm_mask_cvtps_pd(__W,__U,__A); 4078}4079__m128d test_mm_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {4080  // CHECK-LABEL: test_mm_maskz_cvtps_pd4081  // CHECK: fpext <2 x float> %{{.*}} to <2 x double>4082  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}4083  return _mm_maskz_cvtps_pd(__U,__A); 4084}4085__m256d test_mm256_mask_cvtps_pd(__m256d __W, __mmask8 __U, __m128 __A) {4086  // CHECK-LABEL: test_mm256_mask_cvtps_pd4087  // CHECK: fpext <4 x float> %{{.*}} to <4 x double>4088  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}4089  return _mm256_mask_cvtps_pd(__W,__U,__A); 4090}4091__m256d test_mm256_maskz_cvtps_pd(__mmask8 __U, __m128 __A) {4092  // CHECK-LABEL: test_mm256_maskz_cvtps_pd4093  // CHECK: fpext <4 x float> %{{.*}} to <4 x double>4094  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}4095  return _mm256_maskz_cvtps_pd(__U,__A); 4096}4097__m128i test_mm_cvtps_epu32(__m128 __A) {4098  // CHECK-LABEL: test_mm_cvtps_epu324099  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.1284100  return _mm_cvtps_epu32(__A); 4101}4102__m128i test_mm_mask_cvtps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {4103  // CHECK-LABEL: test_mm_mask_cvtps_epu324104  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.1284105  return _mm_mask_cvtps_epu32(__W,__U,__A); 4106}4107__m128i test_mm_maskz_cvtps_epu32(__mmask8 __U, __m128 __A) {4108  // CHECK-LABEL: test_mm_maskz_cvtps_epu324109  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.1284110  return _mm_maskz_cvtps_epu32(__U,__A); 4111}4112__m256i test_mm256_cvtps_epu32(__m256 __A) {4113  // CHECK-LABEL: test_mm256_cvtps_epu324114  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.2564115  return _mm256_cvtps_epu32(__A); 4116}4117__m256i test_mm256_mask_cvtps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {4118  // CHECK-LABEL: test_mm256_mask_cvtps_epu324119  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.2564120  return _mm256_mask_cvtps_epu32(__W,__U,__A); 4121}4122__m256i test_mm256_maskz_cvtps_epu32(__mmask8 __U, __m256 __A) {4123  // CHECK-LABEL: test_mm256_maskz_cvtps_epu324124  // CHECK: @llvm.x86.avx512.mask.cvtps2udq.2564125  return _mm256_maskz_cvtps_epu32(__U,__A); 4126}4127__m128i test_mm_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m128d __A) {4128  // CHECK-LABEL: test_mm_mask_cvttpd_epi324129  // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.1284130  return _mm_mask_cvttpd_epi32(__W,__U,__A); 4131}4132__m128i test_mm_maskz_cvttpd_epi32(__mmask8 __U, __m128d __A) {4133  // CHECK-LABEL: test_mm_maskz_cvttpd_epi324134  // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.1284135  return _mm_maskz_cvttpd_epi32(__U,__A); 4136}4137__m128i test_mm256_mask_cvttpd_epi32(__m128i __W, __mmask8 __U, __m256d __A) {4138  // CHECK-LABEL: test_mm256_mask_cvttpd_epi324139  // CHECK: @llvm.x86.avx.cvtt.pd2dq.2564140  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}4141  return _mm256_mask_cvttpd_epi32(__W,__U,__A); 4142}4143__m128i test_mm256_maskz_cvttpd_epi32(__mmask8 __U, __m256d __A) {4144  // CHECK-LABEL: test_mm256_maskz_cvttpd_epi324145  // CHECK: @llvm.x86.avx.cvtt.pd2dq.2564146  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}4147  return _mm256_maskz_cvttpd_epi32(__U,__A); 4148}4149__m128i test_mm_cvttpd_epu32(__m128d __A) {4150  // CHECK-LABEL: test_mm_cvttpd_epu324151  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.1284152  return _mm_cvttpd_epu32(__A); 4153}4154__m128i test_mm_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m128d __A) {4155  // CHECK-LABEL: test_mm_mask_cvttpd_epu324156  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.1284157  return _mm_mask_cvttpd_epu32(__W,__U,__A); 4158}4159__m128i test_mm_maskz_cvttpd_epu32(__mmask8 __U, __m128d __A) {4160  // CHECK-LABEL: test_mm_maskz_cvttpd_epu324161  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.1284162  return _mm_maskz_cvttpd_epu32(__U,__A); 4163}4164__m128i test_mm256_cvttpd_epu32(__m256d __A) {4165  // CHECK-LABEL: test_mm256_cvttpd_epu324166  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.2564167  return _mm256_cvttpd_epu32(__A); 4168}4169__m128i test_mm256_mask_cvttpd_epu32(__m128i __W, __mmask8 __U, __m256d __A) {4170  // CHECK-LABEL: test_mm256_mask_cvttpd_epu324171  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.2564172  return _mm256_mask_cvttpd_epu32(__W,__U,__A); 4173}4174__m128i test_mm256_maskz_cvttpd_epu32(__mmask8 __U, __m256d __A) {4175  // CHECK-LABEL: test_mm256_maskz_cvttpd_epu324176  // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.2564177  return _mm256_maskz_cvttpd_epu32(__U,__A); 4178}4179__m128i test_mm_mask_cvttps_epi32(__m128i __W, __mmask8 __U, __m128 __A) {4180  // CHECK-LABEL: test_mm_mask_cvttps_epi324181  // CHECK: @llvm.x86.sse2.cvttps2dq4182  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}4183  return _mm_mask_cvttps_epi32(__W,__U,__A); 4184}4185__m128i test_mm_maskz_cvttps_epi32(__mmask8 __U, __m128 __A) {4186  // CHECK-LABEL: test_mm_maskz_cvttps_epi324187  // CHECK: @llvm.x86.sse2.cvttps2dq4188  // CHECK: select <4 x i1> {{.*}}, <4 x i32> {{.*}}, <4 x i32> {{.*}}4189  return _mm_maskz_cvttps_epi32(__U,__A); 4190}4191__m256i test_mm256_mask_cvttps_epi32(__m256i __W, __mmask8 __U, __m256 __A) {4192  // CHECK-LABEL: test_mm256_mask_cvttps_epi324193  // CHECK: @llvm.x86.avx.cvtt.ps2dq.2564194  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}4195  return _mm256_mask_cvttps_epi32(__W,__U,__A); 4196}4197__m256i test_mm256_maskz_cvttps_epi32(__mmask8 __U, __m256 __A) {4198  // CHECK-LABEL: test_mm256_maskz_cvttps_epi324199  // CHECK: @llvm.x86.avx.cvtt.ps2dq.2564200  // CHECK: select <8 x i1> {{.*}}, <8 x i32> {{.*}}, <8 x i32> {{.*}}4201  return _mm256_maskz_cvttps_epi32(__U,__A); 4202}4203__m128i test_mm_cvttps_epu32(__m128 __A) {4204  // CHECK-LABEL: test_mm_cvttps_epu324205  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.1284206  return _mm_cvttps_epu32(__A); 4207}4208__m128i test_mm_mask_cvttps_epu32(__m128i __W, __mmask8 __U, __m128 __A) {4209  // CHECK-LABEL: test_mm_mask_cvttps_epu324210  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.1284211  return _mm_mask_cvttps_epu32(__W,__U,__A); 4212}4213__m128i test_mm_maskz_cvttps_epu32(__mmask8 __U, __m128 __A) {4214  // CHECK-LABEL: test_mm_maskz_cvttps_epu324215  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.1284216  return _mm_maskz_cvttps_epu32(__U,__A); 4217}4218__m256i test_mm256_cvttps_epu32(__m256 __A) {4219  // CHECK-LABEL: test_mm256_cvttps_epu324220  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.2564221  return _mm256_cvttps_epu32(__A); 4222}4223__m256i test_mm256_mask_cvttps_epu32(__m256i __W, __mmask8 __U, __m256 __A) {4224  // CHECK-LABEL: test_mm256_mask_cvttps_epu324225  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.2564226  return _mm256_mask_cvttps_epu32(__W,__U,__A); 4227}4228__m256i test_mm256_maskz_cvttps_epu32(__mmask8 __U, __m256 __A) {4229  // CHECK-LABEL: test_mm256_maskz_cvttps_epu324230  // CHECK: @llvm.x86.avx512.mask.cvttps2udq.2564231  return _mm256_maskz_cvttps_epu32(__U,__A); 4232}4233__m128d test_mm_cvtepu32_pd(__m128i __A) {4234  // CHECK-LABEL: test_mm_cvtepu32_pd4235  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>4236  // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>4237  return _mm_cvtepu32_pd(__A);4238}4239 4240TEST_CONSTEXPR(match_m128d(_mm_cvtepu32_pd((__m128i)(__v4su){1, 2, 4, 8}), 1.0, 2.0));4241 4242__m128d test_mm_mask_cvtepu32_pd(__m128d __W, __mmask8 __U, __m128i __A) {4243  // CHECK-LABEL: test_mm_mask_cvtepu32_pd4244  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>4245  // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>4246  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}4247  return _mm_mask_cvtepu32_pd(__W,__U,__A);4248}4249 4250TEST_CONSTEXPR(match_m128d(_mm_mask_cvtepu32_pd((__m128d){-777.0, -777.0}, /*10=*/0x2, (__m128i)(__v4su){1, 2, 4, 8}), -777.0, 2.0));4251 4252__m128d test_mm_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {4253  // CHECK-LABEL: test_mm_maskz_cvtepu32_pd4254  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <2 x i32> <i32 0, i32 1>4255  // CHECK: uitofp <2 x i32> %{{.*}} to <2 x double>4256  // CHECK: select <2 x i1> {{.*}}, <2 x double> {{.*}}, <2 x double> {{.*}}4257  return _mm_maskz_cvtepu32_pd(__U,__A);4258}4259 4260TEST_CONSTEXPR(match_m128d(_mm_maskz_cvtepu32_pd(/*10=*/0x2, (__m128i)(__v4su){1, 2, 4, 8}), 0.0, 2.0));4261 4262__m256d test_mm256_cvtepu32_pd(__m128i __A) {4263  // CHECK-LABEL: test_mm256_cvtepu32_pd4264  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>4265  return _mm256_cvtepu32_pd(__A);4266}4267 4268TEST_CONSTEXPR(match_m256d(_mm256_cvtepu32_pd((__m128i)(__v4su){1, 1, 2, 2}), 1.0, 1.0, 2.0, 2.0));4269 4270__m256d test_mm256_mask_cvtepu32_pd(__m256d __W, __mmask8 __U, __m128i __A) {4271  // CHECK-LABEL: test_mm256_mask_cvtepu32_pd4272  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>4273  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}4274  return _mm256_mask_cvtepu32_pd(__W,__U,__A);4275}4276 4277TEST_CONSTEXPR(match_m256d(_mm256_mask_cvtepu32_pd(_mm256_set1_pd(-777.0), /*1010=*/0xa, (__m128i)(__v4su){1, 1, 2, 2}), -777.0, 1.0, -777.0, 2.0));4278 4279__m256d test_mm256_maskz_cvtepu32_pd(__mmask8 __U, __m128i __A) {4280  // CHECK-LABEL: test_mm256_maskz_cvtepu32_pd4281  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x double>4282  // CHECK: select <4 x i1> {{.*}}, <4 x double> {{.*}}, <4 x double> {{.*}}4283  return _mm256_maskz_cvtepu32_pd(__U,__A);4284}4285 4286TEST_CONSTEXPR(match_m256d(_mm256_maskz_cvtepu32_pd(/*1010=*/0xa, (__m128i)(__v4su){1, 1, 2, 2}), 0.0, 1.0, 0.0, 2.0));4287 4288__m128 test_mm_cvtepu32_ps(__m128i __A) {4289  // CHECK-LABEL: test_mm_cvtepu32_ps4290  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>4291  return _mm_cvtepu32_ps(__A); 4292}4293 4294TEST_CONSTEXPR(match_m128(_mm_cvtepu32_ps((__m128i)(__v4su){1, 2, 4, 8}), 1.0f, 2.0f, 4.0f, 8.0f));4295 4296__m128 test_mm_mask_cvtepu32_ps(__m128 __W, __mmask8 __U, __m128i __A) {4297  // CHECK-LABEL: test_mm_mask_cvtepu32_ps4298  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>4299  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4300  return _mm_mask_cvtepu32_ps(__W,__U,__A); 4301}4302 4303TEST_CONSTEXPR(match_m128(_mm_mask_cvtepu32_ps((__m128){-777.0f, -777.0f, -777.0f, -777.0f}, /*0101=*/0x5, (__m128i)(__v4su){1, 2, 4, 8}), 1.0f, -777.0f, 4.0f, -777.0f));4304 4305__m128 test_mm_maskz_cvtepu32_ps(__mmask8 __U, __m128i __A) {4306  // CHECK-LABEL: test_mm_maskz_cvtepu32_ps4307  // CHECK: uitofp <4 x i32> %{{.*}} to <4 x float>4308  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4309  return _mm_maskz_cvtepu32_ps(__U,__A); 4310}4311 4312TEST_CONSTEXPR(match_m128(_mm_maskz_cvtepu32_ps(/*0101=*/0x5, (__m128i)(__v4su){1, 2, 4, 8}), 1.0f, 0.0f, 4.0f, 0.0f));4313 4314__m256 test_mm256_cvtepu32_ps(__m256i __A) {4315  // CHECK-LABEL: test_mm256_cvtepu32_ps4316  // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>4317  return _mm256_cvtepu32_ps(__A); 4318}4319 4320TEST_CONSTEXPR(match_m256(_mm256_cvtepu32_ps((__m256i)(__v8su){1, 1, 2, 2, 4, 4, 8, 8}), 1.0f, 1.0f, 2.0f, 2.0f, 4.0f, 4.0f, 8.0f, 8.0f));4321 4322__m256 test_mm256_mask_cvtepu32_ps(__m256 __W, __mmask8 __U, __m256i __A) {4323  // CHECK-LABEL: test_mm256_mask_cvtepu32_ps4324  // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>4325  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4326  return _mm256_mask_cvtepu32_ps(__W,__U,__A); 4327}4328 4329TEST_CONSTEXPR(match_m256(_mm256_mask_cvtepu32_ps(_mm256_set1_ps(-777.0f), /*1010 0101=*/0xa5,(__m256i)(__v8su){1, 1, 2, 2, 4, 4, 8, 8}), 1.0f, -777.0f, 2.0f, -777.0f, -777.0f, 4.0f, -777.0f, 8.0f));4330 4331__m256 test_mm256_maskz_cvtepu32_ps(__mmask8 __U, __m256i __A) {4332  // CHECK-LABEL: test_mm256_maskz_cvtepu32_ps4333  // CHECK: uitofp <8 x i32> %{{.*}} to <8 x float>4334  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4335  return _mm256_maskz_cvtepu32_ps(__U,__A); 4336}4337 4338TEST_CONSTEXPR(match_m256(_mm256_maskz_cvtepu32_ps(/*1010 0101=*/0xa5,(__m256i)(__v8su){1, 1, 2, 2, 4, 4, 8, 8}), 1.0f, 0.0f, 2.0f, 0.0f, 0.0f, 4.0f, 0.0f, 8.0f));4339 4340__m128d test_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {4341  // CHECK-LABEL: test_mm_mask_div_pd4342  // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}4343  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4344  return _mm_mask_div_pd(__W,__U,__A,__B); 4345}4346TEST_CONSTEXPR(match_m128d(_mm_mask_div_pd((__m128d){1.0, 2.0}, (__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), 0.1, 2.0));4347 4348__m128d test_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {4349  // CHECK-LABEL: test_mm_maskz_div_pd4350  // CHECK: fdiv <2 x double> %{{.*}}, %{{.*}}4351  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4352  return _mm_maskz_div_pd(__U,__A,__B); 4353}4354TEST_CONSTEXPR(match_m128d(_mm_maskz_div_pd((__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), 0.1, 0.0));4355 4356__m256d test_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {4357  // CHECK-LABEL: test_mm256_mask_div_pd4358  // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}4359  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4360  return _mm256_mask_div_pd(__W,__U,__A,__B); 4361}4362TEST_CONSTEXPR(match_m256d(_mm256_mask_div_pd((__m256d){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 1.0, 2.0, 0.1, 0.1));4363 4364__m256d test_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {4365  // CHECK-LABEL: test_mm256_maskz_div_pd4366  // CHECK: fdiv <4 x double> %{{.*}}, %{{.*}}4367  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4368  return _mm256_maskz_div_pd(__U,__A,__B); 4369}4370TEST_CONSTEXPR(match_m256d(_mm256_maskz_div_pd((__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 0.0, 0.0, 0.1, 0.1));4371 4372__m128 test_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {4373  // CHECK-LABEL: test_mm_mask_div_ps4374  // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}4375  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4376  return _mm_mask_div_ps(__W,__U,__A,__B); 4377}4378TEST_CONSTEXPR(match_m128(_mm_mask_div_ps((__m128){1.0f, 2.0f, 3.0f, 4.0f}, (__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 1.0f, 0.1f, 3.0f, 0.1f));4379 4380__m128 test_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {4381  // CHECK-LABEL: test_mm_maskz_div_ps4382  // CHECK: fdiv <4 x float> %{{.*}}, %{{.*}}4383  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4384  return _mm_maskz_div_ps(__U,__A,__B); 4385}4386TEST_CONSTEXPR(match_m128(_mm_maskz_div_ps((__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 0.0f, 0.1f, 0.0f, 0.1f));4387 4388__m256 test_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {4389  // CHECK-LABEL: test_mm256_mask_div_ps4390  // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}4391  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4392  return _mm256_mask_div_ps(__W,__U,__A,__B); 4393}4394TEST_CONSTEXPR(match_m256(_mm256_mask_div_ps((__m256){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}, (__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 1.0f, 2.0f, 3.0f, 4.0f, 0.1f, 0.1f, 0.1f, 0.1f));4395 4396__m256 test_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {4397  // CHECK-LABEL: test_mm256_maskz_div_ps4398  // CHECK: fdiv <8 x float> %{{.*}}, %{{.*}}4399  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4400  return _mm256_maskz_div_ps(__U,__A,__B); 4401}4402TEST_CONSTEXPR(match_m256(_mm256_maskz_div_ps((__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 0.0f, 0.0f, 0.0f, 0.0f, 0.1f, 0.1f, 0.1f, 0.1f));4403 4404__m128d test_mm_mask_expand_pd(__m128d __W, __mmask8 __U, __m128d __A) {4405  // CHECK-LABEL: test_mm_mask_expand_pd4406  // CHECK: @llvm.x86.avx512.mask.expand4407  return _mm_mask_expand_pd(__W,__U,__A); 4408}4409__m128d test_mm_maskz_expand_pd(__mmask8 __U, __m128d __A) {4410  // CHECK-LABEL: test_mm_maskz_expand_pd4411  // CHECK: @llvm.x86.avx512.mask.expand4412  return _mm_maskz_expand_pd(__U,__A); 4413}4414__m256d test_mm256_mask_expand_pd(__m256d __W, __mmask8 __U, __m256d __A) {4415  // CHECK-LABEL: test_mm256_mask_expand_pd4416  // CHECK: @llvm.x86.avx512.mask.expand4417  return _mm256_mask_expand_pd(__W,__U,__A); 4418}4419__m256d test_mm256_maskz_expand_pd(__mmask8 __U, __m256d __A) {4420  // CHECK-LABEL: test_mm256_maskz_expand_pd4421  // CHECK: @llvm.x86.avx512.mask.expand4422  return _mm256_maskz_expand_pd(__U,__A); 4423}4424__m128i test_mm_mask_expand_epi64(__m128i __W, __mmask8 __U, __m128i __A) {4425  // CHECK-LABEL: test_mm_mask_expand_epi644426  // CHECK: @llvm.x86.avx512.mask.expand4427  return _mm_mask_expand_epi64(__W,__U,__A); 4428}4429__m128i test_mm_maskz_expand_epi64(__mmask8 __U, __m128i __A) {4430  // CHECK-LABEL: test_mm_maskz_expand_epi644431  // CHECK: @llvm.x86.avx512.mask.expand4432  return _mm_maskz_expand_epi64(__U,__A); 4433}4434__m256i test_mm256_mask_expand_epi64(__m256i __W, __mmask8 __U, __m256i __A) {4435  // CHECK-LABEL: test_mm256_mask_expand_epi644436  // CHECK: @llvm.x86.avx512.mask.expand4437  return _mm256_mask_expand_epi64(__W,__U,__A); 4438}4439__m256i test_mm256_maskz_expand_epi64(__mmask8 __U, __m256i __A) {4440  // CHECK-LABEL: test_mm256_maskz_expand_epi644441  // CHECK: @llvm.x86.avx512.mask.expand4442  return _mm256_maskz_expand_epi64(__U,__A); 4443}4444__m128d test_mm_mask_expandloadu_pd(__m128d __W, __mmask8 __U, void const *__P) {4445  // CHECK-LABEL: test_mm_mask_expandloadu_pd4446  // CHECK: @llvm.masked.expandload.v2f64(ptr %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})4447  return _mm_mask_expandloadu_pd(__W,__U,__P); 4448}4449__m128d test_mm_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {4450  // CHECK-LABEL: test_mm_maskz_expandloadu_pd4451  // CHECK: @llvm.masked.expandload.v2f64(ptr %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})4452  return _mm_maskz_expandloadu_pd(__U,__P); 4453}4454__m256d test_mm256_mask_expandloadu_pd(__m256d __W, __mmask8 __U, void const *__P) {4455  // CHECK-LABEL: test_mm256_mask_expandloadu_pd4456  // CHECK: @llvm.masked.expandload.v4f64(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})4457  return _mm256_mask_expandloadu_pd(__W,__U,__P); 4458}4459__m256d test_mm256_maskz_expandloadu_pd(__mmask8 __U, void const *__P) {4460  // CHECK-LABEL: test_mm256_maskz_expandloadu_pd4461  // CHECK: @llvm.masked.expandload.v4f64(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})4462  return _mm256_maskz_expandloadu_pd(__U,__P); 4463}4464__m128i test_mm_mask_expandloadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {4465  // CHECK-LABEL: test_mm_mask_expandloadu_epi644466  // CHECK: @llvm.masked.expandload.v2i64(ptr %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})4467  return _mm_mask_expandloadu_epi64(__W,__U,__P); 4468}4469__m128i test_mm_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {4470  // CHECK-LABEL: test_mm_maskz_expandloadu_epi644471  // CHECK: @llvm.masked.expandload.v2i64(ptr %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})4472  return _mm_maskz_expandloadu_epi64(__U,__P); 4473}4474__m256i test_mm256_mask_expandloadu_epi64(__m256i __W, __mmask8 __U,   void const *__P) {4475  // CHECK-LABEL: test_mm256_mask_expandloadu_epi644476  // CHECK: @llvm.masked.expandload.v4i64(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})4477  return _mm256_mask_expandloadu_epi64(__W,__U,__P); 4478}4479__m256i test_mm256_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) {4480  // CHECK-LABEL: test_mm256_maskz_expandloadu_epi644481  // CHECK: @llvm.masked.expandload.v4i64(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})4482  return _mm256_maskz_expandloadu_epi64(__U,__P); 4483}4484__m128 test_mm_mask_expandloadu_ps(__m128 __W, __mmask8 __U, void const *__P) {4485  // CHECK-LABEL: test_mm_mask_expandloadu_ps4486  // CHECK: @llvm.masked.expandload.v4f32(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})4487  return _mm_mask_expandloadu_ps(__W,__U,__P); 4488}4489__m128 test_mm_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {4490  // CHECK-LABEL: test_mm_maskz_expandloadu_ps4491  // CHECK: @llvm.masked.expandload.v4f32(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})4492  return _mm_maskz_expandloadu_ps(__U,__P); 4493}4494__m256 test_mm256_mask_expandloadu_ps(__m256 __W, __mmask8 __U, void const *__P) {4495  // CHECK-LABEL: test_mm256_mask_expandloadu_ps4496  // CHECK: @llvm.masked.expandload.v8f32(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})4497  return _mm256_mask_expandloadu_ps(__W,__U,__P); 4498}4499__m256 test_mm256_maskz_expandloadu_ps(__mmask8 __U, void const *__P) {4500  // CHECK-LABEL: test_mm256_maskz_expandloadu_ps4501  // CHECK: @llvm.masked.expandload.v8f32(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})4502  return _mm256_maskz_expandloadu_ps(__U,__P); 4503}4504__m128i test_mm_mask_expandloadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {4505  // CHECK-LABEL: test_mm_mask_expandloadu_epi324506  // CHECK: @llvm.masked.expandload.v4i32(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})4507  return _mm_mask_expandloadu_epi32(__W,__U,__P); 4508}4509__m128i test_mm_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {4510  // CHECK-LABEL: test_mm_maskz_expandloadu_epi324511  // CHECK: @llvm.masked.expandload.v4i32(ptr %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})4512  return _mm_maskz_expandloadu_epi32(__U,__P); 4513}4514__m256i test_mm256_mask_expandloadu_epi32(__m256i __W, __mmask8 __U,   void const *__P) {4515  // CHECK-LABEL: test_mm256_mask_expandloadu_epi324516  // CHECK: @llvm.masked.expandload.v8i32(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})4517  return _mm256_mask_expandloadu_epi32(__W,__U,__P); 4518}4519__m256i test_mm256_maskz_expandloadu_epi32(__mmask8 __U, void const *__P) {4520  // CHECK-LABEL: test_mm256_maskz_expandloadu_epi324521  // CHECK: @llvm.masked.expandload.v8i32(ptr %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})4522  return _mm256_maskz_expandloadu_epi32(__U,__P); 4523}4524__m128 test_mm_mask_expand_ps(__m128 __W, __mmask8 __U, __m128 __A) {4525  // CHECK-LABEL: test_mm_mask_expand_ps4526  // CHECK: @llvm.x86.avx512.mask.expand4527  return _mm_mask_expand_ps(__W,__U,__A); 4528}4529__m128 test_mm_maskz_expand_ps(__mmask8 __U, __m128 __A) {4530  // CHECK-LABEL: test_mm_maskz_expand_ps4531  // CHECK: @llvm.x86.avx512.mask.expand4532  return _mm_maskz_expand_ps(__U,__A); 4533}4534__m256 test_mm256_mask_expand_ps(__m256 __W, __mmask8 __U, __m256 __A) {4535  // CHECK-LABEL: test_mm256_mask_expand_ps4536  // CHECK: @llvm.x86.avx512.mask.expand4537  return _mm256_mask_expand_ps(__W,__U,__A); 4538}4539__m256 test_mm256_maskz_expand_ps(__mmask8 __U, __m256 __A) {4540  // CHECK-LABEL: test_mm256_maskz_expand_ps4541  // CHECK: @llvm.x86.avx512.mask.expand4542  return _mm256_maskz_expand_ps(__U,__A); 4543}4544__m128i test_mm_mask_expand_epi32(__m128i __W, __mmask8 __U, __m128i __A) {4545  // CHECK-LABEL: test_mm_mask_expand_epi324546  // CHECK: @llvm.x86.avx512.mask.expand4547  return _mm_mask_expand_epi32(__W,__U,__A); 4548}4549__m128i test_mm_maskz_expand_epi32(__mmask8 __U, __m128i __A) {4550  // CHECK-LABEL: test_mm_maskz_expand_epi324551  // CHECK: @llvm.x86.avx512.mask.expand4552  return _mm_maskz_expand_epi32(__U,__A); 4553}4554__m256i test_mm256_mask_expand_epi32(__m256i __W, __mmask8 __U, __m256i __A) {4555  // CHECK-LABEL: test_mm256_mask_expand_epi324556  // CHECK: @llvm.x86.avx512.mask.expand4557  return _mm256_mask_expand_epi32(__W,__U,__A); 4558}4559__m256i test_mm256_maskz_expand_epi32(__mmask8 __U, __m256i __A) {4560  // CHECK-LABEL: test_mm256_maskz_expand_epi324561  // CHECK: @llvm.x86.avx512.mask.expand4562  return _mm256_maskz_expand_epi32(__U,__A); 4563}4564__m128d test_mm_getexp_pd(__m128d __A) {4565  // CHECK-LABEL: test_mm_getexp_pd4566  // CHECK: @llvm.x86.avx512.mask.getexp.pd.1284567  return _mm_getexp_pd(__A); 4568}4569__m128d test_mm_mask_getexp_pd(__m128d __W, __mmask8 __U, __m128d __A) {4570  // CHECK-LABEL: test_mm_mask_getexp_pd4571  // CHECK: @llvm.x86.avx512.mask.getexp.pd.1284572  return _mm_mask_getexp_pd(__W,__U,__A); 4573}4574__m128d test_mm_maskz_getexp_pd(__mmask8 __U, __m128d __A) {4575  // CHECK-LABEL: test_mm_maskz_getexp_pd4576  // CHECK: @llvm.x86.avx512.mask.getexp.pd.1284577  return _mm_maskz_getexp_pd(__U,__A); 4578}4579__m256d test_mm256_getexp_pd(__m256d __A) {4580  // CHECK-LABEL: test_mm256_getexp_pd4581  // CHECK: @llvm.x86.avx512.mask.getexp.pd.2564582  return _mm256_getexp_pd(__A); 4583}4584__m256d test_mm256_mask_getexp_pd(__m256d __W, __mmask8 __U, __m256d __A) {4585  // CHECK-LABEL: test_mm256_mask_getexp_pd4586  // CHECK: @llvm.x86.avx512.mask.getexp.pd.2564587  return _mm256_mask_getexp_pd(__W,__U,__A); 4588}4589__m256d test_mm256_maskz_getexp_pd(__mmask8 __U, __m256d __A) {4590  // CHECK-LABEL: test_mm256_maskz_getexp_pd4591  // CHECK: @llvm.x86.avx512.mask.getexp.pd.2564592  return _mm256_maskz_getexp_pd(__U,__A); 4593}4594__m128 test_mm_getexp_ps(__m128 __A) {4595  // CHECK-LABEL: test_mm_getexp_ps4596  // CHECK: @llvm.x86.avx512.mask.getexp.ps.1284597  return _mm_getexp_ps(__A); 4598}4599__m128 test_mm_mask_getexp_ps(__m128 __W, __mmask8 __U, __m128 __A) {4600  // CHECK-LABEL: test_mm_mask_getexp_ps4601  // CHECK: @llvm.x86.avx512.mask.getexp.ps.1284602  return _mm_mask_getexp_ps(__W,__U,__A); 4603}4604__m128 test_mm_maskz_getexp_ps(__mmask8 __U, __m128 __A) {4605  // CHECK-LABEL: test_mm_maskz_getexp_ps4606  // CHECK: @llvm.x86.avx512.mask.getexp.ps.1284607  return _mm_maskz_getexp_ps(__U,__A); 4608}4609__m256 test_mm256_getexp_ps(__m256 __A) {4610  // CHECK-LABEL: test_mm256_getexp_ps4611  // CHECK: @llvm.x86.avx512.mask.getexp.ps.2564612  return _mm256_getexp_ps(__A); 4613}4614__m256 test_mm256_mask_getexp_ps(__m256 __W, __mmask8 __U, __m256 __A) {4615  // CHECK-LABEL: test_mm256_mask_getexp_ps4616  // CHECK: @llvm.x86.avx512.mask.getexp.ps.2564617  return _mm256_mask_getexp_ps(__W,__U,__A); 4618}4619__m256 test_mm256_maskz_getexp_ps(__mmask8 __U, __m256 __A) {4620  // CHECK-LABEL: test_mm256_maskz_getexp_ps4621  // CHECK: @llvm.x86.avx512.mask.getexp.ps.2564622  return _mm256_maskz_getexp_ps(__U,__A); 4623}4624__m128d test_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {4625  // CHECK-LABEL: test_mm_mask_max_pd4626  // CHECK: @llvm.x86.sse2.max.pd4627  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4628  return _mm_mask_max_pd(__W,__U,__A,__B); 4629}4630__m128d test_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {4631  // CHECK-LABEL: test_mm_maskz_max_pd4632  // CHECK: @llvm.x86.sse2.max.pd4633  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4634  return _mm_maskz_max_pd(__U,__A,__B); 4635}4636__m256d test_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {4637  // CHECK-LABEL: test_mm256_mask_max_pd4638  // CHECK: @llvm.x86.avx.max.pd.2564639  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4640  return _mm256_mask_max_pd(__W,__U,__A,__B); 4641}4642__m256d test_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {4643  // CHECK-LABEL: test_mm256_maskz_max_pd4644  // CHECK: @llvm.x86.avx.max.pd.2564645  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4646  return _mm256_maskz_max_pd(__U,__A,__B); 4647}4648__m128 test_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {4649  // CHECK-LABEL: test_mm_mask_max_ps4650  // CHECK: @llvm.x86.sse.max.ps4651  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4652  return _mm_mask_max_ps(__W,__U,__A,__B); 4653}4654__m128 test_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {4655  // CHECK-LABEL: test_mm_maskz_max_ps4656  // CHECK: @llvm.x86.sse.max.ps4657  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4658  return _mm_maskz_max_ps(__U,__A,__B); 4659}4660__m256 test_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {4661  // CHECK-LABEL: test_mm256_mask_max_ps4662  // CHECK: @llvm.x86.avx.max.ps.2564663  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4664  return _mm256_mask_max_ps(__W,__U,__A,__B); 4665}4666__m256 test_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {4667  // CHECK-LABEL: test_mm256_maskz_max_ps4668  // CHECK: @llvm.x86.avx.max.ps.2564669  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4670  return _mm256_maskz_max_ps(__U,__A,__B); 4671}4672__m128d test_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {4673  // CHECK-LABEL: test_mm_mask_min_pd4674  // CHECK: @llvm.x86.sse2.min.pd4675  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4676  return _mm_mask_min_pd(__W,__U,__A,__B); 4677}4678__m128d test_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {4679  // CHECK-LABEL: test_mm_maskz_min_pd4680  // CHECK: @llvm.x86.sse2.min.pd4681  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4682  return _mm_maskz_min_pd(__U,__A,__B); 4683}4684__m256d test_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {4685  // CHECK-LABEL: test_mm256_mask_min_pd4686  // CHECK: @llvm.x86.avx.min.pd.2564687  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4688  return _mm256_mask_min_pd(__W,__U,__A,__B); 4689}4690__m256d test_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {4691  // CHECK-LABEL: test_mm256_maskz_min_pd4692  // CHECK: @llvm.x86.avx.min.pd.2564693  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4694  return _mm256_maskz_min_pd(__U,__A,__B); 4695}4696__m128 test_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {4697  // CHECK-LABEL: test_mm_mask_min_ps4698  // CHECK: @llvm.x86.sse.min.ps4699  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4700  return _mm_mask_min_ps(__W,__U,__A,__B); 4701}4702__m128 test_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {4703  // CHECK-LABEL: test_mm_maskz_min_ps4704  // CHECK: @llvm.x86.sse.min.ps4705  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4706  return _mm_maskz_min_ps(__U,__A,__B); 4707}4708__m256 test_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {4709  // CHECK-LABEL: test_mm256_mask_min_ps4710  // CHECK: @llvm.x86.avx.min.ps.2564711  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4712  return _mm256_mask_min_ps(__W,__U,__A,__B); 4713}4714__m256 test_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {4715  // CHECK-LABEL: test_mm256_maskz_min_ps4716  // CHECK: @llvm.x86.avx.min.ps.2564717  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4718  return _mm256_maskz_min_ps(__U,__A,__B); 4719}4720__m128d test_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {4721  // CHECK-LABEL: test_mm_mask_mul_pd4722  // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}4723  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4724  return _mm_mask_mul_pd(__W,__U,__A,__B); 4725}4726TEST_CONSTEXPR(match_m128d(_mm_mask_mul_pd((__m128d){1.0, 2.0}, (__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), 1000.0, 2.0));4727 4728__m128d test_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {4729  // CHECK-LABEL: test_mm_maskz_mul_pd4730  // CHECK: fmul <2 x double> %{{.*}}, %{{.*}}4731  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}4732  return _mm_maskz_mul_pd(__U,__A,__B); 4733}4734TEST_CONSTEXPR(match_m128d(_mm_maskz_mul_pd((__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), 1000.0, 0.0));4735 4736__m256d test_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {4737  // CHECK-LABEL: test_mm256_mask_mul_pd4738  // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}4739  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4740  return _mm256_mask_mul_pd(__W,__U,__A,__B); 4741}4742TEST_CONSTEXPR(match_m256d(_mm256_mask_mul_pd((__m256d){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 1.0, 2.0, 9000.0, 16000.0));4743 4744__m256d test_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {4745  // CHECK-LABEL: test_mm256_maskz_mul_pd4746  // CHECK: fmul <4 x double> %{{.*}}, %{{.*}}4747  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}4748  return _mm256_maskz_mul_pd(__U,__A,__B); 4749}4750TEST_CONSTEXPR(match_m256d(_mm256_maskz_mul_pd((__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 0.0, 0.0, 9000.0, 16000.0));4751 4752__m128 test_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {4753  // CHECK-LABEL: test_mm_mask_mul_ps4754  // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}4755  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4756  return _mm_mask_mul_ps(__W,__U,__A,__B); 4757}4758TEST_CONSTEXPR(match_m128(_mm_mask_mul_ps((__m128){1.0f, 2.0f, 3.0f, 4.0f}, (__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 1.0f, 4000.0f, 3.0f, 16000.0f));4759 4760__m128 test_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {4761  // CHECK-LABEL: test_mm_maskz_mul_ps4762  // CHECK: fmul <4 x float> %{{.*}}, %{{.*}}4763  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}4764  return _mm_maskz_mul_ps(__U,__A,__B); 4765}4766TEST_CONSTEXPR(match_m128(_mm_maskz_mul_ps((__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 0.0f, 4000.0f, 0.0f, 16000.0f));4767 4768__m256 test_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {4769  // CHECK-LABEL: test_mm256_mask_mul_ps4770  // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}4771  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4772  return _mm256_mask_mul_ps(__W,__U,__A,__B); 4773}4774TEST_CONSTEXPR(match_m256(_mm256_mask_mul_ps((__m256){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}, (__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 1.0f, 2.0f, 3.0f, 4.0f, 25000.0f, 36000.0f, 49000.0f, 64000.0f));4775 4776__m256 test_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {4777  // CHECK-LABEL: test_mm256_maskz_mul_ps4778  // CHECK: fmul <8 x float> %{{.*}}, %{{.*}}4779  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}4780  return _mm256_maskz_mul_ps(__U,__A,__B); 4781}4782TEST_CONSTEXPR(match_m256(_mm256_maskz_mul_ps((__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 0.0f, 0.0f, 0.0f, 0.0f, 25000.0f, 36000.0f, 49000.0f, 64000.0f));4783 4784__m128i test_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {4785  // CHECK-LABEL: test_mm_mask_abs_epi324786  // CHECK: [[ABS:%.*]] = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %{{.*}}, i1 false)4787  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[ABS]] to <2 x i64>4788  // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>4789  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[ABS]], <4 x i32> %{{.*}}4790  return _mm_mask_abs_epi32(__W,__U,__A); 4791}4792TEST_CONSTEXPR(match_v4si(_mm_mask_abs_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x01, (__m128i)(__v4si){-1, 2, 2, 2}), 1, 99, 99, 99));4793 4794__m128i test_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {4795  // CHECK-LABEL: test_mm_maskz_abs_epi324796  // CHECK: [[ABS:%.*]] = call <4 x i32> @llvm.abs.v4i32(<4 x i32> %{{.*}}, i1 false)4797  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[ABS]] to <2 x i64>4798  // CHECK: [[ABS:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>4799  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> [[ABS]], <4 x i32> %{{.*}}4800  return _mm_maskz_abs_epi32(__U,__A); 4801}4802TEST_CONSTEXPR(match_v4si(_mm_maskz_abs_epi32((__mmask8)0x05, (__m128i)(__v4si){-1, 2, -3, 4}), 1, 0, 3, 0));4803 4804__m256i test_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {4805  // CHECK-LABEL: test_mm256_mask_abs_epi324806  // CHECK: [[ABS:%.*]] = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %{{.*}}, i1 false)4807  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[ABS]] to <4 x i64>4808  // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>4809  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[ABS]], <8 x i32> %{{.*}}4810  return _mm256_mask_abs_epi32(__W,__U,__A); 4811}4812TEST_CONSTEXPR(match_v8si(_mm256_mask_abs_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x01, (__m256i)(__v8si){-1, 2, 2, 2, 2, 2, 2, 2}), 1, 99, 99, 99, 99, 99, 99, 99));4813 4814__m256i test_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {4815  // CHECK-LABEL: test_mm256_maskz_abs_epi324816  // CHECK: [[ABS:%.*]] = call <8 x i32> @llvm.abs.v8i32(<8 x i32> %{{.*}}, i1 false)4817  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[ABS]] to <4 x i64>4818  // CHECK: [[ABS:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>4819  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> [[ABS]], <8 x i32> %{{.*}}4820  return _mm256_maskz_abs_epi32(__U,__A); 4821}4822TEST_CONSTEXPR(match_v8si(_mm256_maskz_abs_epi32((__mmask8)0x01, (__m256i)(__v8si){-1, 2, 2, 2, 2, 2, 2, 2}), 1, 0, 0, 0, 0, 0, 0, 0));4823 4824__m128i test_mm_abs_epi64(__m128i __A) {4825  // CHECK-LABEL: test_mm_abs_epi644826  // CHECK: [[ABS:%.*]] = call {{.*}}<2 x i64> @llvm.abs.v2i64(<2 x i64> %{{.*}}, i1 false)4827  return _mm_abs_epi64(__A); 4828}4829TEST_CONSTEXPR(match_v2di(_mm_abs_epi64((__m128i)(__v2di){+5, -3}), 5, 3));4830 4831__m128i test_mm_mask_abs_epi64(__m128i __W, __mmask8 __U, __m128i __A) {4832  // CHECK-LABEL: test_mm_mask_abs_epi644833  // CHECK: [[ABS:%.*]] = call {{.*}}<2 x i64> @llvm.abs.v2i64(<2 x i64> %{{.*}}, i1 false)4834  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[ABS]], <2 x i64> %{{.*}}4835  return _mm_mask_abs_epi64(__W,__U,__A); 4836}4837TEST_CONSTEXPR(match_v2di(_mm_mask_abs_epi64((__m128i)(__v2di){99, 99}, (__mmask8)0x01, (__m128i)(__v2di){-1, 2}), 1, 99));4838 4839__m128i test_mm_maskz_abs_epi64(__mmask8 __U, __m128i __A) {4840  // CHECK-LABEL: test_mm_maskz_abs_epi644841  // CHECK: [[ABS:%.*]] = call {{.*}}<2 x i64> @llvm.abs.v2i64(<2 x i64> %{{.*}}, i1 false)4842  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> [[ABS]], <2 x i64> %{{.*}}4843  return _mm_maskz_abs_epi64(__U,__A); 4844}4845TEST_CONSTEXPR(match_v2di(_mm_maskz_abs_epi64((__mmask8)0x01, (__m128i)(__v2di){-1, 2}), 1, 0));4846 4847__m256i test_mm256_abs_epi64(__m256i __A) {4848  // CHECK-LABEL: test_mm256_abs_epi644849  // CHECK: [[ABS:%.*]] = call {{.*}}<4 x i64> @llvm.abs.v4i64(<4 x i64> %{{.*}}, i1 false)4850  return _mm256_abs_epi64(__A); 4851}4852TEST_CONSTEXPR(match_v4di(_mm256_abs_epi64((__m256i)(__v4di){+5, -3, -1000, 1000}), 5, 3, 1000, 1000));4853 4854__m256i test_mm256_mask_abs_epi64(__m256i __W, __mmask8 __U, __m256i __A) {4855  // CHECK-LABEL: test_mm256_mask_abs_epi644856  // CHECK: [[ABS:%.*]] = call {{.*}}<4 x i64> @llvm.abs.v4i64(<4 x i64> %{{.*}}, i1 false)4857  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[ABS]], <4 x i64> %{{.*}}4858  return _mm256_mask_abs_epi64(__W,__U,__A); 4859}4860TEST_CONSTEXPR(match_v4di(_mm256_mask_abs_epi64((__m256i)(__v4di){99, 99, 99, 99}, (__mmask8)0x01, (__m256i)(__v4di){-1, 2, 2, 2}), 1, 99, 99, 99));4861 4862__m256i test_mm256_maskz_abs_epi64(__mmask8 __U, __m256i __A) {4863  // CHECK-LABEL: test_mm256_maskz_abs_epi644864  // CHECK: [[ABS:%.*]] = call {{.*}}<4 x i64> @llvm.abs.v4i64(<4 x i64> %{{.*}}, i1 false)4865  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> [[ABS]], <4 x i64> %{{.*}}4866  return _mm256_maskz_abs_epi64(__U,__A); 4867}4868TEST_CONSTEXPR(match_v4di(_mm256_maskz_abs_epi64((__mmask8)0x01, (__m256i)(__v4di){-1, 2, 2, 2}), 1, 0, 0, 0));4869 4870__m128i test_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {4871  // CHECK-LABEL: test_mm_maskz_max_epi324872  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})4873  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>4874  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>4875  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}4876  return _mm_maskz_max_epi32(__M,__A,__B); 4877}4878 4879TEST_CONSTEXPR(match_v4si(_mm_maskz_max_epi32(0x01, (__m128i)(__v4si){+1, -2, +3, -4}, (__m128i)(__v4si){-1, +2, -3, +4}), +1, 0, 0, 0));4880 4881__m128i test_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {4882  // CHECK-LABEL: test_mm_mask_max_epi324883  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.smax.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})4884  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>4885  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>4886  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}4887  return _mm_mask_max_epi32(__W,__M,__A,__B); 4888}4889 4890TEST_CONSTEXPR(match_v4si(_mm_mask_max_epi32((__m128i)(__v4si){-100, +200, -300, +400}, 0x01, (__m128i)(__v4si){+1, -2, +3, -4}, (__m128i)(__v4si){-1, +2, -3, +4}), +1, +200, -300, +400));4891 4892__m256i test_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {4893  // CHECK-LABEL: test_mm256_maskz_max_epi324894  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.smax.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})4895  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>4896  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>4897  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}4898  return _mm256_maskz_max_epi32(__M,__A,__B); 4899}4900 4901TEST_CONSTEXPR(match_v8si(_mm256_maskz_max_epi32(0x0F, (__m256i)(__v8si){+1, -2, +3, -4, +5, -6, +7, -8}, (__m256i)(__v8si){-1, +2, -3, +4, -5, +6, -7, +8}), +1, +2, +3, +4, 0, 0, 0, 0));4902 4903__m256i test_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {4904  // CHECK-LABEL: test_mm256_mask_max_epi324905  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.smax.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})4906  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>4907  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>4908  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}4909  return _mm256_mask_max_epi32(__W,__M,__A,__B); 4910}4911 4912TEST_CONSTEXPR(match_v8si(_mm256_mask_max_epi32((__m256i)(__v8si){-100, +200, -300, +400, -500, +600, -700, +800}, 0x0F, (__m256i)(__v8si){+1, -2, +3, -4, +5, -6, +7, -8}, (__m256i)(__v8si){-1, +2, -3, +4, -5, +6, -7, +8}), +1, +2, +3, +4, -500, +600, -700, +800));4913 4914__m128i test_mm_maskz_max_epi64(__mmask8 __M, __m128i __A, __m128i __B) {4915  // CHECK-LABEL: test_mm_maskz_max_epi644916  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.smax.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})4917  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}4918  return _mm_maskz_max_epi64(__M,__A,__B); 4919}4920 4921TEST_CONSTEXPR(match_v2di(_mm_maskz_max_epi64(0x01, (__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-1, +2}), +1, 0));4922 4923__m128i test_mm_mask_max_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {4924  // CHECK-LABEL: test_mm_mask_max_epi644925  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.smax.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})4926  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}4927  return _mm_mask_max_epi64(__W,__M,__A,__B); 4928}4929 4930TEST_CONSTEXPR(match_v2di(_mm_mask_max_epi64((__m128i)(__v2di){-100, +200}, 0x01, (__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-1, +2}), +1, +200));4931 4932__m128i test_mm_max_epi64(__m128i __A, __m128i __B) {4933  // CHECK-LABEL: test_mm_max_epi644934  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.smax.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})4935  return _mm_max_epi64(__A,__B); 4936}4937 4938TEST_CONSTEXPR(match_v2di(_mm_max_epi64((__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-1, +2}), +1, +2));4939 4940__m256i test_mm256_maskz_max_epi64(__mmask8 __M, __m256i __A, __m256i __B) {4941  // CHECK-LABEL: test_mm256_maskz_max_epi644942  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.smax.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})4943  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}4944  return _mm256_maskz_max_epi64(__M,__A,__B); 4945}4946 4947TEST_CONSTEXPR(match_v4di(_mm256_maskz_max_epi64(0x01, (__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-1, +2, -3, +4}), +1, 0, 0, 0));4948 4949__m256i test_mm256_mask_max_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {4950  // CHECK-LABEL: test_mm256_mask_max_epi644951  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.smax.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})4952  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}4953  return _mm256_mask_max_epi64(__W,__M,__A,__B); 4954}4955 4956TEST_CONSTEXPR(match_v4di(_mm256_mask_max_epi64((__m256i)(__v4di){-100, +200, -300, +400}, 0x01, (__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-1, +2, -3, +4}), +1, +200, -300, +400));4957 4958__m256i test_mm256_max_epi64(__m256i __A, __m256i __B) {4959  // CHECK-LABEL: test_mm256_max_epi644960  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.smax.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})4961  return _mm256_max_epi64(__A,__B); 4962}4963 4964TEST_CONSTEXPR(match_v4di(_mm256_max_epi64((__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-1, +2, -3, +4}), +1, +2, +3, +4));4965 4966__m128i test_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {4967  // CHECK-LABEL: test_mm_maskz_max_epu324968  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.umax.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})4969  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>4970  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>4971  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}4972  return _mm_maskz_max_epu32(__M,__A,__B); 4973}4974 4975TEST_CONSTEXPR(match_v4su(_mm_maskz_max_epu32(0x01, (__m128i)(__v4su){1, 3, 5, 7}, (__m128i)(__v4su){3, 4, 5, 6}), 3, 0, 0, 0));4976 4977__m128i test_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {4978  // CHECK-LABEL: test_mm_mask_max_epu324979  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.umax.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})4980  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>4981  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>4982  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}4983  return _mm_mask_max_epu32(__W,__M,__A,__B); 4984}4985 4986TEST_CONSTEXPR(match_v4su(_mm_mask_max_epu32((__m128i)(__v4su){100, 200, 300, 400}, 0x01, (__m128i)(__v4su){1, 3, 5, 7}, (__m128i)(__v4su){3, 4, 5, 6}), 3, 200, 300, 400));4987 4988__m256i test_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {4989  // CHECK-LABEL: test_mm256_maskz_max_epu324990  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.umax.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})4991  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>4992  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>4993  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}4994  return _mm256_maskz_max_epu32(__M,__A,__B); 4995}4996 4997TEST_CONSTEXPR(match_v8su(_mm256_maskz_max_epu32(0x0F, (__m256i)(__v8su){1, 2, 3, 4, 5, 6, 7, 8}, (__m256i)(__v8su){0, 1, 2, 3, 4, 5, 6, 7}), 1, 2, 3, 4, 0, 0, 0, 0));4998 4999__m256i test_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {5000  // CHECK-LABEL: test_mm256_mask_max_epu325001  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.umax.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})5002  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>5003  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>5004  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}5005  return _mm256_mask_max_epu32(__W,__M,__A,__B); 5006}5007 5008TEST_CONSTEXPR(match_v8su(_mm256_mask_max_epu32((__m256i)(__v8su){100, 200, 300, 400, 500, 600, 700, 800}, 0x0F, (__m256i)(__v8su){1, 2, 3, 4, 5, 6, 7, 8}, (__m256i)(__v8su){0, 1, 2, 3, 4, 5, 6, 7}), 1, 2, 3, 4, 500, 600, 700, 800));5009 5010__m128i test_mm_maskz_max_epu64(__mmask8 __M, __m128i __A, __m128i __B) {5011  // CHECK-LABEL: test_mm_maskz_max_epu645012  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.umax.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5013  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}5014  return _mm_maskz_max_epu64(__M,__A,__B); 5015}5016 5017TEST_CONSTEXPR(match_m128i(_mm_maskz_max_epu64(0x01, (__m128i)(__v2du){0, 3}, (__m128i)(__v2du){1, 2}), 1, 0));5018 5019__m128i test_mm_max_epu64(__m128i __A, __m128i __B) {5020  // CHECK-LABEL: test_mm_max_epu645021  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.umax.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5022  return _mm_max_epu64(__A,__B); 5023}5024 5025TEST_CONSTEXPR(match_m128i(_mm_max_epu64((__m128i)(__v2du){0, 3}, (__m128i)(__v2du){1, 2}), 1, 3));5026 5027__m128i test_mm_mask_max_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {5028  // CHECK-LABEL: test_mm_mask_max_epu645029  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.umax.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5030  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}5031  return _mm_mask_max_epu64(__W,__M,__A,__B); 5032}5033 5034TEST_CONSTEXPR(match_m128i(_mm_mask_max_epu64((__m128i)(__v2du){100, 200}, 0x01, (__m128i)(__v2du){0, 3}, (__m128i)(__v2du){1, 2}), 1, 200));5035 5036__m256i test_mm256_maskz_max_epu64(__mmask8 __M, __m256i __A, __m256i __B) {5037  // CHECK-LABEL: test_mm256_maskz_max_epu645038  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.umax.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5039  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}5040  return _mm256_maskz_max_epu64(__M,__A,__B); 5041}5042 5043TEST_CONSTEXPR(match_m256i(_mm256_maskz_max_epu64(0x01, (__m256i)(__v4du){0, 1, 4, 3}, (__m256i)(__v4du){1, 2, 3, 4}), 1, 0, 0, 0));5044 5045__m256i test_mm256_max_epu64(__m256i __A, __m256i __B) {5046  // CHECK-LABEL: test_mm256_max_epu645047  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.umax.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5048  return _mm256_max_epu64(__A,__B); 5049}5050 5051TEST_CONSTEXPR(match_m256i(_mm256_max_epu64((__m256i)(__v4du){0, 1, 4, 3}, (__m256i)(__v4du){1, 2, 3, 4}), 1, 2, 4, 4));5052 5053__m256i test_mm256_mask_max_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {5054  // CHECK-LABEL: test_mm256_mask_max_epu645055  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.umax.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5056  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}5057  return _mm256_mask_max_epu64(__W,__M,__A,__B); 5058}5059 5060TEST_CONSTEXPR(match_m256i(_mm256_mask_max_epu64((__m256i)(__v4du){100, 200, 300, 400}, 0x01, (__m256i)(__v4du){0, 1, 4, 3}, (__m256i)(__v4du){1, 2, 3, 4}), 1, 200, 300, 400));5061 5062__m128i test_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {5063  // CHECK-LABEL: test_mm_maskz_min_epi325064  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.smin.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})5065  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>5066  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>5067  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}5068  return _mm_maskz_min_epi32(__M,__A,__B); 5069}5070 5071TEST_CONSTEXPR(match_v4si(_mm_maskz_min_epi32(0x01, (__m128i)(__v4si){-1, +2, -3, +4}, (__m128i)(__v4si){+1, -2, +3, -4}), -1, 0, 0, 0));5072 5073__m128i test_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {5074  // CHECK-LABEL: test_mm_mask_min_epi325075  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.smin.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})5076  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>5077  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>5078  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}5079  return _mm_mask_min_epi32(__W,__M,__A,__B); 5080}5081 5082TEST_CONSTEXPR(match_v4si(_mm_mask_min_epi32((__m128i)(__v4si){-100, +200, -300, +400}, 0x01, (__m128i)(__v4si){-1, +2, -3, +4}, (__m128i)(__v4si){+1, -2, +3, -4}), -1, +200, -300, +400));5083 5084__m256i test_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {5085  // CHECK-LABEL: test_mm256_maskz_min_epi325086  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.smin.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})5087  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>5088  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>5089  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}5090  return _mm256_maskz_min_epi32(__M,__A,__B); 5091}5092 5093TEST_CONSTEXPR(match_v8si(_mm256_maskz_min_epi32(0x0F, (__m256i)(__v8si){+1, -2, +3, -4, +5, -6, +7, -8}, (__m256i)(__v8si){-1, +2, -3, +4, -5, +6, -7, +8}), -1, -2, -3, -4, 0, 0, 0, 0));5094 5095__m256i test_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {5096  // CHECK-LABEL: test_mm256_mask_min_epi325097  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.smin.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})5098  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>5099  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>5100  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}5101  return _mm256_mask_min_epi32(__W,__M,__A,__B); 5102}5103 5104TEST_CONSTEXPR(match_v8si(_mm256_mask_min_epi32((__m256i)(__v8si){-100, +200, -300, +400, -500, +600, -700, +800}, 0x0F, (__m256i)(__v8si){+1, -2, +3, -4, +5, -6, +7, -8}, (__m256i)(__v8si){-1, +2, -3, +4, -5, +6, -7, +8}), -1, -2, -3, -4, -500, +600, -700, +800));5105 5106__m128i test_mm_min_epi64(__m128i __A, __m128i __B) {5107  // CHECK-LABEL: test_mm_min_epi645108  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.smin.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5109  return _mm_min_epi64(__A,__B); 5110}5111 5112TEST_CONSTEXPR(match_v2di(_mm_min_epi64((__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-1, +2}), -1, -2));5113 5114__m128i test_mm_mask_min_epi64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {5115  // CHECK-LABEL: test_mm_mask_min_epi645116  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.smin.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5117  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}5118  return _mm_mask_min_epi64(__W,__M,__A,__B); 5119}5120 5121TEST_CONSTEXPR(match_v2di(_mm_mask_min_epi64((__m128i)(__v2di){-100, +200}, 0x01, (__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-1, +2}), -1, +200));5122 5123__m128i test_mm_maskz_min_epi64(__mmask8 __M, __m128i __A, __m128i __B) {5124  // CHECK-LABEL: test_mm_maskz_min_epi645125  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.smin.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5126  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}5127  return _mm_maskz_min_epi64(__M,__A,__B); 5128}5129 5130TEST_CONSTEXPR(match_v2di(_mm_maskz_min_epi64(0x01, (__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-1, +2}), -1, 0));5131 5132__m256i test_mm256_min_epi64(__m256i __A, __m256i __B) {5133  // CHECK-LABEL: test_mm256_min_epi645134  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.smin.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5135  return _mm256_min_epi64(__A,__B); 5136}5137 5138TEST_CONSTEXPR(match_v4di(_mm256_min_epi64((__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-1, +2, -3, +4}), -1, -2, -3, -4));5139 5140__m256i test_mm256_mask_min_epi64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {5141  // CHECK-LABEL: test_mm256_mask_min_epi645142  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.smin.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5143  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}5144  return _mm256_mask_min_epi64(__W,__M,__A,__B); 5145}5146 5147TEST_CONSTEXPR(match_v4di(_mm256_mask_min_epi64((__m256i)(__v4di){}, 0x01, (__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-1, +2, -3, +4}), -1, 0, 0, 0));5148 5149__m256i test_mm256_maskz_min_epi64(__mmask8 __M, __m256i __A, __m256i __B) {5150  // CHECK-LABEL: test_mm256_maskz_min_epi645151  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.smin.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5152  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}5153  return _mm256_maskz_min_epi64(__M,__A,__B); 5154}5155 5156TEST_CONSTEXPR(match_v4di(_mm256_maskz_min_epi64(0x01, (__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-1, +2, -3, +4}), -1, 0, 0, 0));5157 5158__m128i test_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {5159  // CHECK-LABEL: test_mm_maskz_min_epu325160  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.umin.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})5161  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>5162  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>5163  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}5164  return _mm_maskz_min_epu32(__M,__A,__B); 5165}5166 5167TEST_CONSTEXPR(match_v4su(_mm_maskz_min_epu32(0x01, (__m128i)(__v4su){1, 3, 5, 7}, (__m128i)(__v4su){3, 4, 5, 6}), 1, 0, 0, 0));5168 5169__m128i test_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {5170  // CHECK-LABEL: test_mm_mask_min_epu325171  // CHECK: [[RES:%.*]] = call <4 x i32> @llvm.umin.v4i32(<4 x i32> %{{.*}}, <4 x i32> %{{.*}})5172  // CHECK: [[TMP:%.*]] = bitcast <4 x i32> [[RES]] to <2 x i64>5173  // CHECK: [[RES:%.*]] = bitcast <2 x i64> [[TMP]] to <4 x i32>5174  // CHECK:       select <4 x i1> {{.*}}, <4 x i32> [[RES]], <4 x i32> {{.*}}5175  return _mm_mask_min_epu32(__W,__M,__A,__B); 5176}5177 5178TEST_CONSTEXPR(match_v4su(_mm_mask_min_epu32((__m128i)(__v4su){100, 200, 300, 400}, 0x01, (__m128i)(__v4su){1, 3, 5, 7}, (__m128i)(__v4su){3, 4, 5, 6}), 1, 200, 300, 400));5179 5180__m256i test_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {5181  // CHECK-LABEL: test_mm256_maskz_min_epu325182  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.umin.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})5183  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>5184  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>5185  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}5186  return _mm256_maskz_min_epu32(__M,__A,__B); 5187}5188 5189TEST_CONSTEXPR(match_v8su(_mm256_maskz_min_epu32(0x0F, (__m256i)(__v8su){1, 2, 3, 4, 5, 6, 7, 8}, (__m256i)(__v8su){0, 1, 2, 3, 4, 5, 6, 7}), 0, 1, 2, 3, 0, 0, 0, 0));5190 5191__m256i test_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {5192  // CHECK-LABEL: test_mm256_mask_min_epu325193  // CHECK: [[RES:%.*]] = call <8 x i32> @llvm.umin.v8i32(<8 x i32> %{{.*}}, <8 x i32> %{{.*}})5194  // CHECK: [[TMP:%.*]] = bitcast <8 x i32> [[RES]] to <4 x i64>5195  // CHECK: [[RES:%.*]] = bitcast <4 x i64> [[TMP]] to <8 x i32>5196  // CHECK:       select <8 x i1> {{.*}}, <8 x i32> [[RES]], <8 x i32> {{.*}}5197  return _mm256_mask_min_epu32(__W,__M,__A,__B); 5198}5199 5200TEST_CONSTEXPR(match_v8su(_mm256_mask_min_epu32((__m256i)(__v8su){100, 200, 300, 400, 500, 600, 700, 800}, 0x0F, (__m256i)(__v8su){1, 2, 3, 4, 5, 6, 7, 8}, (__m256i)(__v8su){0, 1, 2, 3, 4, 5, 6, 7}), 0, 1, 2, 3, 500, 600, 700, 800));5201 5202__m128i test_mm_min_epu64(__m128i __A, __m128i __B) {5203  // CHECK-LABEL: test_mm_min_epu645204  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.umin.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5205  return _mm_min_epu64(__A,__B); 5206}5207 5208TEST_CONSTEXPR(match_m128i(_mm_min_epu64((__m128i)(__v2du){0, 3}, (__m128i)(__v2du){1, 2}), 0, 2));5209 5210__m128i test_mm_mask_min_epu64(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {5211  // CHECK-LABEL: test_mm_mask_min_epu645212  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.umin.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5213  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}5214  return _mm_mask_min_epu64(__W,__M,__A,__B); 5215}5216 5217TEST_CONSTEXPR(match_m128i(_mm_mask_min_epu64((__m128i)(__v2du){100, 200}, 0x01, (__m128i)(__v2du){0, 3}, (__m128i)(__v2du){1, 2}), 0, 200));5218 5219__m128i test_mm_maskz_min_epu64(__mmask8 __M, __m128i __A, __m128i __B) {5220  // CHECK-LABEL: test_mm_maskz_min_epu645221  // CHECK: [[RES:%.*]] = call {{.*}}<2 x i64> @llvm.umin.v2i64(<2 x i64> %{{.*}}, <2 x i64> %{{.*}})5222  // CHECK:       select <2 x i1> {{.*}}, <2 x i64> [[RES]], <2 x i64> {{.*}}5223  return _mm_maskz_min_epu64(__M,__A,__B); 5224}5225 5226TEST_CONSTEXPR(match_m128i(_mm_maskz_min_epu64(0x01, (__m128i)(__v2du){0, 3}, (__m128i)(__v2du){1, 2}), 0, 0));5227 5228__m256i test_mm256_min_epu64(__m256i __A, __m256i __B) {5229  // CHECK-LABEL: test_mm256_min_epu645230  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.umin.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5231  return _mm256_min_epu64(__A,__B); 5232}5233 5234TEST_CONSTEXPR(match_m256i(_mm256_min_epu64((__m256i)(__v4du){0, 1, 4, 3}, (__m256i)(__v4du){1, 2, 3, 4}), 0, 1, 3, 3));5235 5236__m256i test_mm256_mask_min_epu64(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {5237  // CHECK-LABEL: test_mm256_mask_min_epu645238  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.umin.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5239  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}5240  return _mm256_mask_min_epu64(__W,__M,__A,__B); 5241}5242 5243TEST_CONSTEXPR(match_m256i(_mm256_mask_min_epu64((__m256i)(__v4du){100, 200, 300, 400}, 0x01, (__m256i)(__v4du){0, 1, 4, 3}, (__m256i)(__v4du){1, 2, 3, 4}), 0, 200, 300, 400));5244 5245__m256i test_mm256_maskz_min_epu64(__mmask8 __M, __m256i __A, __m256i __B) {5246  // CHECK-LABEL: test_mm256_maskz_min_epu645247  // CHECK: [[RES:%.*]] = call {{.*}}<4 x i64> @llvm.umin.v4i64(<4 x i64> %{{.*}}, <4 x i64> %{{.*}})5248  // CHECK:       select <4 x i1> {{.*}}, <4 x i64> [[RES]], <4 x i64> {{.*}}5249  return _mm256_maskz_min_epu64(__M,__A,__B); 5250}5251 5252TEST_CONSTEXPR(match_m256i(_mm256_maskz_min_epu64(0x01, (__m256i)(__v4du){0, 1, 4, 3}, (__m256i)(__v4du){1, 2, 3, 4}), 0, 0, 0, 0));5253 5254__m128d test_mm_roundscale_pd(__m128d __A) {5255  // CHECK-LABEL: test_mm_roundscale_pd5256  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.1285257  return _mm_roundscale_pd(__A,4); 5258}5259__m128d test_mm_mask_roundscale_pd(__m128d __W, __mmask8 __U, __m128d __A) {5260  // CHECK-LABEL: test_mm_mask_roundscale_pd5261  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.1285262  return _mm_mask_roundscale_pd(__W,__U,__A,4); 5263}5264__m128d test_mm_maskz_roundscale_pd(__mmask8 __U, __m128d __A) {5265  // CHECK-LABEL: test_mm_maskz_roundscale_pd5266  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.1285267  return _mm_maskz_roundscale_pd(__U,__A,4); 5268}5269__m256d test_mm256_roundscale_pd(__m256d __A) {5270  // CHECK-LABEL: test_mm256_roundscale_pd5271  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.2565272  return _mm256_roundscale_pd(__A,4); 5273}5274__m256d test_mm256_mask_roundscale_pd(__m256d __W, __mmask8 __U, __m256d __A) {5275  // CHECK-LABEL: test_mm256_mask_roundscale_pd5276  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.2565277  return _mm256_mask_roundscale_pd(__W,__U,__A,4); 5278}5279__m256d test_mm256_maskz_roundscale_pd(__mmask8 __U, __m256d __A) {5280  // CHECK-LABEL: test_mm256_maskz_roundscale_pd5281  // CHECK: @llvm.x86.avx512.mask.rndscale.pd.2565282  return _mm256_maskz_roundscale_pd(__U,__A,4); 5283}5284__m128 test_mm_roundscale_ps(__m128 __A) {5285  // CHECK-LABEL: test_mm_roundscale_ps5286  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.1285287  return _mm_roundscale_ps(__A,4); 5288}5289__m128 test_mm_mask_roundscale_ps(__m128 __W, __mmask8 __U, __m128 __A) {5290  // CHECK-LABEL: test_mm_mask_roundscale_ps5291  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.1285292  return _mm_mask_roundscale_ps(__W,__U,__A,4); 5293}5294__m128 test_mm_maskz_roundscale_ps(__mmask8 __U, __m128 __A) {5295  // CHECK-LABEL: test_mm_maskz_roundscale_ps5296  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.1285297  return _mm_maskz_roundscale_ps(__U,__A, 4); 5298}5299__m256 test_mm256_roundscale_ps(__m256 __A) {5300  // CHECK-LABEL: test_mm256_roundscale_ps5301  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.2565302  return _mm256_roundscale_ps(__A,4); 5303}5304__m256 test_mm256_mask_roundscale_ps(__m256 __W, __mmask8 __U, __m256 __A) {5305  // CHECK-LABEL: test_mm256_mask_roundscale_ps5306  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.2565307  return _mm256_mask_roundscale_ps(__W,__U,__A,4); 5308}5309__m256 test_mm256_maskz_roundscale_ps(__mmask8 __U, __m256 __A) {5310  // CHECK-LABEL: test_mm256_maskz_roundscale_ps5311  // CHECK: @llvm.x86.avx512.mask.rndscale.ps.2565312  return _mm256_maskz_roundscale_ps(__U,__A,4); 5313}5314__m128d test_mm_scalef_pd(__m128d __A, __m128d __B) {5315  // CHECK-LABEL: test_mm_scalef_pd5316  // CHECK: @llvm.x86.avx512.mask.scalef.pd.1285317  return _mm_scalef_pd(__A,__B); 5318}5319__m128d test_mm_mask_scalef_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {5320  // CHECK-LABEL: test_mm_mask_scalef_pd5321  // CHECK: @llvm.x86.avx512.mask.scalef.pd.1285322  return _mm_mask_scalef_pd(__W,__U,__A,__B); 5323}5324__m128d test_mm_maskz_scalef_pd(__mmask8 __U, __m128d __A, __m128d __B) {5325  // CHECK-LABEL: test_mm_maskz_scalef_pd5326  // CHECK: @llvm.x86.avx512.mask.scalef.pd.1285327  return _mm_maskz_scalef_pd(__U,__A,__B); 5328}5329__m256d test_mm256_scalef_pd(__m256d __A, __m256d __B) {5330  // CHECK-LABEL: test_mm256_scalef_pd5331  // CHECK: @llvm.x86.avx512.mask.scalef.pd.2565332  return _mm256_scalef_pd(__A,__B); 5333}5334__m256d test_mm256_mask_scalef_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {5335  // CHECK-LABEL: test_mm256_mask_scalef_pd5336  // CHECK: @llvm.x86.avx512.mask.scalef.pd.2565337  return _mm256_mask_scalef_pd(__W,__U,__A,__B); 5338}5339__m256d test_mm256_maskz_scalef_pd(__mmask8 __U, __m256d __A, __m256d __B) {5340  // CHECK-LABEL: test_mm256_maskz_scalef_pd5341  // CHECK: @llvm.x86.avx512.mask.scalef.pd.2565342  return _mm256_maskz_scalef_pd(__U,__A,__B); 5343}5344__m128 test_mm_scalef_ps(__m128 __A, __m128 __B) {5345  // CHECK-LABEL: test_mm_scalef_ps5346  // CHECK: @llvm.x86.avx512.mask.scalef.ps.1285347  return _mm_scalef_ps(__A,__B); 5348}5349__m128 test_mm_mask_scalef_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {5350  // CHECK-LABEL: test_mm_mask_scalef_ps5351  // CHECK: @llvm.x86.avx512.mask.scalef.ps.1285352  return _mm_mask_scalef_ps(__W,__U,__A,__B); 5353}5354__m128 test_mm_maskz_scalef_ps(__mmask8 __U, __m128 __A, __m128 __B) {5355  // CHECK-LABEL: test_mm_maskz_scalef_ps5356  // CHECK: @llvm.x86.avx512.mask.scalef.ps.1285357  return _mm_maskz_scalef_ps(__U,__A,__B); 5358}5359__m256 test_mm256_scalef_ps(__m256 __A, __m256 __B) {5360  // CHECK-LABEL: test_mm256_scalef_ps5361  // CHECK: @llvm.x86.avx512.mask.scalef.ps.2565362  return _mm256_scalef_ps(__A,__B); 5363}5364__m256 test_mm256_mask_scalef_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {5365  // CHECK-LABEL: test_mm256_mask_scalef_ps5366  // CHECK: @llvm.x86.avx512.mask.scalef.ps.2565367  return _mm256_mask_scalef_ps(__W,__U,__A,__B); 5368}5369__m256 test_mm256_maskz_scalef_ps(__mmask8 __U, __m256 __A, __m256 __B) {5370  // CHECK-LABEL: test_mm256_maskz_scalef_ps5371  // CHECK: @llvm.x86.avx512.mask.scalef.ps.2565372  return _mm256_maskz_scalef_ps(__U,__A,__B); 5373}5374void test_mm_i64scatter_pd(double *__addr, __m128i __index,  __m128d __v1) {5375  // CHECK-LABEL: test_mm_i64scatter_pd5376  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.df5377  return _mm_i64scatter_pd(__addr,__index,__v1,2); 5378}5379void test_mm_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {5380  // CHECK-LABEL: test_mm_mask_i64scatter_pd5381  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.df5382  return _mm_mask_i64scatter_pd(__addr,__mask,__index,__v1,2); 5383}5384void test_mm_i64scatter_epi64(long long *__addr, __m128i __index,  __m128i __v1) {5385  // CHECK-LABEL: test_mm_i64scatter_epi645386  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.di5387  return _mm_i64scatter_epi64(__addr,__index,__v1,2); 5388}5389void test_mm_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {5390  // CHECK-LABEL: test_mm_mask_i64scatter_epi645391  // CHECK: @llvm.x86.avx512.mask.scatterdiv2.di5392  return _mm_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2); 5393}5394void test_mm256_i64scatter_pd(double *__addr, __m256i __index,  __m256d __v1) {5395  // CHECK-LABEL: test_mm256_i64scatter_pd5396  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.df5397  return _mm256_i64scatter_pd(__addr,__index,__v1,2); 5398}5399void test_mm256_mask_i64scatter_pd(double *__addr, __mmask8 __mask, __m256i __index, __m256d __v1) {5400  // CHECK-LABEL: test_mm256_mask_i64scatter_pd5401  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.df5402  return _mm256_mask_i64scatter_pd(__addr,__mask,__index,__v1,2); 5403}5404void test_mm256_i64scatter_epi64(long long *__addr, __m256i __index,  __m256i __v1) {5405  // CHECK-LABEL: test_mm256_i64scatter_epi645406  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.di5407  return _mm256_i64scatter_epi64(__addr,__index,__v1,2); 5408}5409void test_mm256_mask_i64scatter_epi64(long long *__addr, __mmask8 __mask,  __m256i __index, __m256i __v1) {5410  // CHECK-LABEL: test_mm256_mask_i64scatter_epi645411  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.di5412  return _mm256_mask_i64scatter_epi64(__addr,__mask,__index,__v1,2); 5413}5414void test_mm_i64scatter_ps(float *__addr, __m128i __index, __m128 __v1) {5415  // CHECK-LABEL: test_mm_i64scatter_ps5416  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.sf5417  return _mm_i64scatter_ps(__addr,__index,__v1,2); 5418}5419void test_mm_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {5420  // CHECK-LABEL: test_mm_mask_i64scatter_ps5421  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.sf5422  return _mm_mask_i64scatter_ps(__addr,__mask,__index,__v1,2); 5423}5424void test_mm_i64scatter_epi32(int *__addr, __m128i __index,  __m128i __v1) {5425  // CHECK-LABEL: test_mm_i64scatter_epi325426  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.si5427  return _mm_i64scatter_epi32(__addr,__index,__v1,2); 5428}5429void test_mm_mask_i64scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {5430  // CHECK-LABEL: test_mm_mask_i64scatter_epi325431  // CHECK: @llvm.x86.avx512.mask.scatterdiv4.si5432  return _mm_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2); 5433}5434void test_mm256_i64scatter_ps(float *__addr, __m256i __index,  __m128 __v1) {5435  // CHECK-LABEL: test_mm256_i64scatter_ps5436  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.sf5437  return _mm256_i64scatter_ps(__addr,__index,__v1,2); 5438}5439void test_mm256_mask_i64scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m128 __v1) {5440  // CHECK-LABEL: test_mm256_mask_i64scatter_ps5441  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.sf5442  return _mm256_mask_i64scatter_ps(__addr,__mask,__index,__v1,2); 5443}5444void test_mm256_i64scatter_epi32(int *__addr, __m256i __index,  __m128i __v1) {5445  // CHECK-LABEL: test_mm256_i64scatter_epi325446  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.si5447  return _mm256_i64scatter_epi32(__addr,__index,__v1,2); 5448}5449void test_mm256_mask_i64scatter_epi32(int *__addr, __mmask8 __mask,  __m256i __index, __m128i __v1) {5450  // CHECK-LABEL: test_mm256_mask_i64scatter_epi325451  // CHECK: @llvm.x86.avx512.mask.scatterdiv8.si5452  return _mm256_mask_i64scatter_epi32(__addr,__mask,__index,__v1,2); 5453}5454void test_mm_i32scatter_pd(double *__addr, __m128i __index,  __m128d __v1) {5455  // CHECK-LABEL: test_mm_i32scatter_pd5456  // CHECK: @llvm.x86.avx512.mask.scattersiv2.df5457  return _mm_i32scatter_pd(__addr,__index,__v1,2); 5458}5459void test_mm_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m128d __v1) {5460  // CHECK-LABEL: test_mm_mask_i32scatter_pd5461  // CHECK: @llvm.x86.avx512.mask.scattersiv2.df5462  return _mm_mask_i32scatter_pd(__addr,__mask,__index,__v1,2); 5463}5464void test_mm_i32scatter_epi64(long long *__addr, __m128i __index,  __m128i __v1) {5465  // CHECK-LABEL: test_mm_i32scatter_epi645466  // CHECK: @llvm.x86.avx512.mask.scattersiv2.di5467  return _mm_i32scatter_epi64(__addr,__index,__v1,2); 5468}5469void test_mm_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {5470  // CHECK-LABEL: test_mm_mask_i32scatter_epi645471  // CHECK: @llvm.x86.avx512.mask.scattersiv2.di5472  return _mm_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2); 5473}5474void test_mm256_i32scatter_pd(double *__addr, __m128i __index,  __m256d __v1) {5475  // CHECK-LABEL: test_mm256_i32scatter_pd5476  // CHECK: @llvm.x86.avx512.mask.scattersiv4.df5477  return _mm256_i32scatter_pd(__addr,__index,__v1,2); 5478}5479void test_mm256_mask_i32scatter_pd(double *__addr, __mmask8 __mask, __m128i __index, __m256d __v1) {5480  // CHECK-LABEL: test_mm256_mask_i32scatter_pd5481  // CHECK: @llvm.x86.avx512.mask.scattersiv4.df5482  return _mm256_mask_i32scatter_pd(__addr,__mask,__index,__v1,2); 5483}5484void test_mm256_i32scatter_epi64(long long *__addr, __m128i __index,  __m256i __v1) {5485  // CHECK-LABEL: test_mm256_i32scatter_epi645486  // CHECK: @llvm.x86.avx512.mask.scattersiv4.di5487  return _mm256_i32scatter_epi64(__addr,__index,__v1,2); 5488}5489void test_mm256_mask_i32scatter_epi64(long long *__addr, __mmask8 __mask,  __m128i __index, __m256i __v1) {5490  // CHECK-LABEL: test_mm256_mask_i32scatter_epi645491  // CHECK: @llvm.x86.avx512.mask.scattersiv4.di5492  return _mm256_mask_i32scatter_epi64(__addr,__mask,__index,__v1,2); 5493}5494void test_mm_i32scatter_ps(float *__addr, __m128i __index, __m128 __v1) {5495  // CHECK-LABEL: test_mm_i32scatter_ps5496  // CHECK: @llvm.x86.avx512.mask.scattersiv4.sf5497  return _mm_i32scatter_ps(__addr,__index,__v1,2); 5498}5499void test_mm_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m128i __index, __m128 __v1) {5500  // CHECK-LABEL: test_mm_mask_i32scatter_ps5501  // CHECK: @llvm.x86.avx512.mask.scattersiv4.sf5502  return _mm_mask_i32scatter_ps(__addr,__mask,__index,__v1,2); 5503}5504void test_mm_i32scatter_epi32(int *__addr, __m128i __index,  __m128i __v1) {5505  // CHECK-LABEL: test_mm_i32scatter_epi325506  // CHECK: @llvm.x86.avx512.mask.scattersiv4.si5507  return _mm_i32scatter_epi32(__addr,__index,__v1,2); 5508}5509void test_mm_mask_i32scatter_epi32(int *__addr, __mmask8 __mask, __m128i __index, __m128i __v1) {5510  // CHECK-LABEL: test_mm_mask_i32scatter_epi325511  // CHECK: @llvm.x86.avx512.mask.scattersiv4.si5512  return _mm_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2); 5513}5514void test_mm256_i32scatter_ps(float *__addr, __m256i __index,  __m256 __v1) {5515  // CHECK-LABEL: test_mm256_i32scatter_ps5516  // CHECK: @llvm.x86.avx512.mask.scattersiv8.sf5517  return _mm256_i32scatter_ps(__addr,__index,__v1,2); 5518}5519void test_mm256_mask_i32scatter_ps(float *__addr, __mmask8 __mask, __m256i __index, __m256 __v1) {5520  // CHECK-LABEL: test_mm256_mask_i32scatter_ps5521  // CHECK: @llvm.x86.avx512.mask.scattersiv8.sf5522  return _mm256_mask_i32scatter_ps(__addr,__mask,__index,__v1,2); 5523}5524void test_mm256_i32scatter_epi32(int *__addr, __m256i __index,  __m256i __v1) {5525  // CHECK-LABEL: test_mm256_i32scatter_epi325526  // CHECK: @llvm.x86.avx512.mask.scattersiv8.si5527  return _mm256_i32scatter_epi32(__addr,__index,__v1,2); 5528}5529void test_mm256_mask_i32scatter_epi32(int *__addr, __mmask8 __mask,  __m256i __index, __m256i __v1) {5530  // CHECK-LABEL: test_mm256_mask_i32scatter_epi325531  // CHECK: @llvm.x86.avx512.mask.scattersiv8.si5532  return _mm256_mask_i32scatter_epi32(__addr,__mask,__index,__v1,2); 5533}5534__m128d test_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {5535  // CHECK-LABEL: test_mm_mask_sqrt_pd5536  // CHECK: @llvm.sqrt.v2f645537  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5538  return _mm_mask_sqrt_pd(__W,__U,__A); 5539}5540__m128d test_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {5541  // CHECK-LABEL: test_mm_maskz_sqrt_pd5542  // CHECK: @llvm.sqrt.v2f645543  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5544  return _mm_maskz_sqrt_pd(__U,__A); 5545}5546__m256d test_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {5547  // CHECK-LABEL: test_mm256_mask_sqrt_pd5548  // CHECK: @llvm.sqrt.v4f645549  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5550  return _mm256_mask_sqrt_pd(__W,__U,__A); 5551}5552__m256d test_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {5553  // CHECK-LABEL: test_mm256_maskz_sqrt_pd5554  // CHECK: @llvm.sqrt.v4f645555  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5556  return _mm256_maskz_sqrt_pd(__U,__A); 5557}5558__m128 test_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {5559  // CHECK-LABEL: test_mm_mask_sqrt_ps5560  // CHECK: @llvm.sqrt.v4f325561  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5562  return _mm_mask_sqrt_ps(__W,__U,__A); 5563}5564__m128 test_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {5565  // CHECK-LABEL: test_mm_maskz_sqrt_ps5566  // CHECK: @llvm.sqrt.v4f325567  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5568  return _mm_maskz_sqrt_ps(__U,__A); 5569}5570__m256 test_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {5571  // CHECK-LABEL: test_mm256_mask_sqrt_ps5572  // CHECK: @llvm.sqrt.v8f325573  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5574  return _mm256_mask_sqrt_ps(__W,__U,__A); 5575}5576__m256 test_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {5577  // CHECK-LABEL: test_mm256_maskz_sqrt_ps5578  // CHECK: @llvm.sqrt.v8f325579  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5580  return _mm256_maskz_sqrt_ps(__U,__A); 5581}5582__m128d test_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {5583  // CHECK-LABEL: test_mm_mask_sub_pd5584  // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}5585  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5586  return _mm_mask_sub_pd(__W,__U,__A,__B); 5587}5588TEST_CONSTEXPR(match_m128d(_mm_mask_sub_pd((__m128d){1.0, 2.0}, (__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), -90.0, 2.0));5589 5590__m128d test_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {5591  // CHECK-LABEL: test_mm_maskz_sub_pd5592  // CHECK: fsub <2 x double> %{{.*}}, %{{.*}}5593  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5594  return _mm_maskz_sub_pd(__U,__A,__B); 5595}5596TEST_CONSTEXPR(match_m128d(_mm_maskz_sub_pd((__mmask8)0b00000001, (__m128d){10.0, 20.0}, (__m128d){100.0, 200.0}), -90.0, 0.0));5597 5598__m256d test_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {5599  // CHECK-LABEL: test_mm256_mask_sub_pd5600  // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}5601  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5602  return _mm256_mask_sub_pd(__W,__U,__A,__B); 5603}5604TEST_CONSTEXPR(match_m256d(_mm256_mask_sub_pd((__m256d){1.0, 2.0, 3.0, 4.0}, (__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 1.0, 2.0, -270.0, -360.0));5605 5606__m256d test_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {5607  // CHECK-LABEL: test_mm256_maskz_sub_pd5608  // CHECK: fsub <4 x double> %{{.*}}, %{{.*}}5609  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5610  return _mm256_maskz_sub_pd(__U,__A,__B); 5611}5612TEST_CONSTEXPR(match_m256d(_mm256_maskz_sub_pd((__mmask8)0b00001100, (__m256d){10.0, 20.0, 30.0, 40.0}, (__m256d){100.0, 200.0, 300.0, 400.0}), 0.0, 0.0, -270.0, -360.0));5613 5614__m128 test_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {5615  // CHECK-LABEL: test_mm_mask_sub_ps5616  // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}5617  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5618  return _mm_mask_sub_ps(__W,__U,__A,__B); 5619}5620TEST_CONSTEXPR(match_m128(_mm_mask_sub_ps((__m128){1.0f, 2.0f, 3.0f, 4.0f}, (__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 1.0f, -180.0f, 3.0f, -360.0f));5621 5622__m128 test_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {5623  // CHECK-LABEL: test_mm_maskz_sub_ps5624  // CHECK: fsub <4 x float> %{{.*}}, %{{.*}}5625  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5626  return _mm_maskz_sub_ps(__U,__A,__B); 5627}5628TEST_CONSTEXPR(match_m128(_mm_maskz_sub_ps((__mmask8)0b00001010, (__m128){10.0f, 20.0f, 30.0f, 40.0f}, (__m128){100.0f, 200.0f, 300.0f, 400.0f}), 0.0f, -180.0f, 0.0f, -360.0f));5629 5630__m256 test_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {5631  // CHECK-LABEL: test_mm256_mask_sub_ps5632  // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}5633  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5634  return _mm256_mask_sub_ps(__W,__U,__A,__B); 5635}5636TEST_CONSTEXPR(match_m256(_mm256_mask_sub_ps((__m256){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}, (__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 1.0f, 2.0f, 3.0f, 4.0f, -450.0f, -540.0f, -630.0f, -720.0f));5637 5638__m256 test_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {5639  // CHECK-LABEL: test_mm256_maskz_sub_ps5640  // CHECK: fsub <8 x float> %{{.*}}, %{{.*}}5641  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5642  return _mm256_maskz_sub_ps(__U,__A,__B); 5643}5644TEST_CONSTEXPR(match_m256(_mm256_maskz_sub_ps((__mmask8)0b11110000, (__m256){10.0f, 20.0f, 30.0f, 40.0f, 50.0f, 60.0f, 70.0f, 80.0f}, (__m256){100.0f, 200.0f, 300.0f, 400.0f, 500.0f, 600.0f, 700.0f, 800.0f}), 0.0f, 0.0f, 0.0f, 0.0f, -450.0f, -540.0f, -630.0f, -720.0f));5645 5646__m128i test_mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,  __m128i __B) {5647  // CHECK-LABEL: test_mm_mask2_permutex2var_epi325648  // CHECK: @llvm.x86.avx512.vpermi2var.d.1285649  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}5650  return _mm_mask2_permutex2var_epi32(__A,__I,__U,__B); 5651}5652TEST_CONSTEXPR(match_v4si(5653    _mm_mask2_permutex2var_epi32((__m128i)(__v4si){10, 20, 30, 40},5654                                 (__m128i)(__v4si){0, 3, 4, 6}, 0x05,5655                                 (__m128i)(__v4si){100, 200, 300, 400}),5656    10, 3, 100, 6));5657__m256i test_mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {5658  // CHECK-LABEL: test_mm256_mask2_permutex2var_epi325659  // CHECK: @llvm.x86.avx512.vpermi2var.d.2565660  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}5661  return _mm256_mask2_permutex2var_epi32(__A,__I,__U,__B); 5662}5663TEST_CONSTEXPR(match_v8si(5664    _mm256_mask2_permutex2var_epi32((__m256i)(__v8si){0, 10, 20, 30, 40, 50, 60, 70},5665                                    (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},5666                                    0xA5,5667                                    (__m256i)(__v8si){100, 110, 120, 130, 140, 150, 160, 170}),5668    0, 7, 100, 15, 1, 110, 2, 120));5669__m128d test_mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {5670  // CHECK-LABEL: test_mm_mask2_permutex2var_pd5671  // CHECK: @llvm.x86.avx512.vpermi2var.pd.1285672  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5673  return _mm_mask2_permutex2var_pd(__A,__I,__U,__B); 5674}5675__m256d test_mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,  __m256d __B) {5676  // CHECK-LABEL: test_mm256_mask2_permutex2var_pd5677  // CHECK: @llvm.x86.avx512.vpermi2var.pd.2565678  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5679  return _mm256_mask2_permutex2var_pd(__A,__I,__U,__B); 5680}5681__m128 test_mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {5682  // CHECK-LABEL: test_mm_mask2_permutex2var_ps5683  // CHECK: @llvm.x86.avx512.vpermi2var.ps.1285684  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5685  return _mm_mask2_permutex2var_ps(__A,__I,__U,__B); 5686}5687__m256 test_mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,  __m256 __B) {5688  // CHECK-LABEL: test_mm256_mask2_permutex2var_ps5689  // CHECK: @llvm.x86.avx512.vpermi2var.ps.2565690  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5691  return _mm256_mask2_permutex2var_ps(__A,__I,__U,__B); 5692}5693__m128i test_mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,  __m128i __B) {5694  // CHECK-LABEL: test_mm_mask2_permutex2var_epi645695  // CHECK: @llvm.x86.avx512.vpermi2var.q.1285696  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}5697  return _mm_mask2_permutex2var_epi64(__A,__I,__U,__B); 5698}5699TEST_CONSTEXPR(match_v2di(5700    _mm_mask2_permutex2var_epi64((__m128i)(__v2di){10, 20},5701                                 (__m128i)(__v2di){0, 5}, 0x1,5702                                 (__m128i)(__v2di){100, 200}),5703    10, 5));5704__m256i test_mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U, __m256i __B) {5705  // CHECK-LABEL: test_mm256_mask2_permutex2var_epi645706  // CHECK: @llvm.x86.avx512.vpermi2var.q.2565707  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}5708  return _mm256_mask2_permutex2var_epi64(__A,__I,__U,__B); 5709}5710TEST_CONSTEXPR(match_v4di(5711    _mm256_mask2_permutex2var_epi64((__m256i)(__v4di){0, 10, 20, 30},5712                                    (__m256i)(__v4di){0, 1, 4, 5}, 0x5,5713                                    (__m256i)(__v4di){100, 110, 120, 130}),5714    0, 1, 100, 5));5715__m128i test_mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {5716  // CHECK-LABEL: test_mm_permutex2var_epi325717  // CHECK: @llvm.x86.avx512.vpermi2var.d.1285718  return _mm_permutex2var_epi32(__A,__I,__B); 5719}5720TEST_CONSTEXPR(match_v4si(5721    _mm_permutex2var_epi32((__m128i)(__v4si){10, 20, 30, 40},5722                           (__m128i)(__v4si){0, 3, 4, 6},5723                           (__m128i)(__v4si){100, 200, 300, 400}),5724    10, 40, 100, 300));5725__m128i test_mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {5726  // CHECK-LABEL: test_mm_mask_permutex2var_epi325727  // CHECK: @llvm.x86.avx512.vpermi2var.d.1285728  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}5729  return _mm_mask_permutex2var_epi32(__A,__U,__I,__B); 5730}5731TEST_CONSTEXPR(match_v4si(5732    _mm_mask_permutex2var_epi32((__m128i)(__v4si){-1, -2, -3, -4}, 0x0A,5733                                (__m128i)(__v4si){0, 3, 4, 6},5734                                (__m128i)(__v4si){100, 200, 300, 400}),5735    -1, -4, -3, 300));5736__m128i test_mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,  __m128i __B) {5737  // CHECK-LABEL: test_mm_maskz_permutex2var_epi325738  // CHECK: @llvm.x86.avx512.vpermi2var.d.1285739  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}5740  return _mm_maskz_permutex2var_epi32(__U,__A,__I,__B); 5741}5742TEST_CONSTEXPR(match_v4si(5743    _mm_maskz_permutex2var_epi32(0x0A, (__m128i)(__v4si){10, 20, 30, 40},5744                                 (__m128i)(__v4si){0, 3, 4, 6},5745                                 (__m128i)(__v4si){100, 200, 300, 400}),5746    0, 40, 0, 300));5747__m256i test_mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {5748  // CHECK-LABEL: test_mm256_permutex2var_epi325749  // CHECK: @llvm.x86.avx512.vpermi2var.d.2565750  return _mm256_permutex2var_epi32(__A,__I,__B); 5751}5752TEST_CONSTEXPR(match_v8si(5753    _mm256_permutex2var_epi32((__m256i)(__v8si){0, 10, 20, 30, 40, 50, 60, 70},5754                              (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},5755                              (__m256i)(__v8si){100, 110, 120, 130, 140, 150, 160, 170}),5756    0, 70, 100, 170, 10, 110, 20, 120));5757__m256i test_mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {5758  // CHECK-LABEL: test_mm256_mask_permutex2var_epi325759  // CHECK: @llvm.x86.avx512.vpermi2var.d.2565760  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}5761  return _mm256_mask_permutex2var_epi32(__A,__U,__I,__B); 5762}5763TEST_CONSTEXPR(match_v8si(5764    _mm256_mask_permutex2var_epi32((__m256i)(__v8si){-1, -2, -3, -4, -5, -6, -7, -8}, 0xAA,5765                                   (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},5766                                   (__m256i)(__v8si){100, 110, 120, 130, 140, 150, 160, 170}),5767    -1, -8, -3, 170, -5, 110, -7, 120));5768__m256i test_mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {5769  // CHECK-LABEL: test_mm256_maskz_permutex2var_epi325770  // CHECK: @llvm.x86.avx512.vpermi2var.d.2565771  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}5772  return _mm256_maskz_permutex2var_epi32(__U,__A,__I,__B); 5773}5774TEST_CONSTEXPR(match_v8si(5775    _mm256_maskz_permutex2var_epi32(0xAA, (__m256i)(__v8si){0, 10, 20, 30, 40, 50, 60, 70},5776                                  (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},5777                                  (__m256i)(__v8si){100, 110, 120, 130, 140, 150, 160, 170}),5778    0, 70, 0, 170, 0, 110, 0, 120));5779__m128d test_mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {5780  // CHECK-LABEL: test_mm_permutex2var_pd5781  // CHECK: @llvm.x86.avx512.vpermi2var.pd.1285782  return _mm_permutex2var_pd(__A,__I,__B); 5783}5784TEST_CONSTEXPR(match_m128d(5785    _mm_permutex2var_pd((__m128d){1.0, 2.0}, (__m128i)(__v2di){0, 2}, (__m128d){10.0, 20.0}),5786    1.0, 10.0));5787__m128d test_mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {5788  // CHECK-LABEL: test_mm_mask_permutex2var_pd5789  // CHECK: @llvm.x86.avx512.vpermi2var.pd.1285790  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5791  return _mm_mask_permutex2var_pd(__A,__U,__I,__B); 5792}5793TEST_CONSTEXPR(match_m128d(5794    _mm_mask_permutex2var_pd((__m128d){-1.0, -2.0}, 0x2, (__m128i)(__v2di){0, 2}, (__m128d){10.0, 20.0}),5795    -1.0, 10.0));5796__m128d test_mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {5797  // CHECK-LABEL: test_mm_maskz_permutex2var_pd5798  // CHECK: @llvm.x86.avx512.vpermi2var.pd.1285799  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}5800  return _mm_maskz_permutex2var_pd(__U,__A,__I,__B); 5801}5802TEST_CONSTEXPR(match_m128d(5803    _mm_maskz_permutex2var_pd(0x2, (__m128d){1.0, 2.0}, (__m128i)(__v2di){0, 2}, (__m128d){10.0, 20.0}),5804    0.0, 10.0));5805__m256d test_mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {5806  // CHECK-LABEL: test_mm256_permutex2var_pd5807  // CHECK: @llvm.x86.avx512.vpermi2var.pd.2565808  return _mm256_permutex2var_pd(__A,__I,__B); 5809}5810TEST_CONSTEXPR(match_m256d(5811    _mm256_permutex2var_pd((__m256d){1.0, 2.0, 3.0, 4.0}, (__m256i)(__v4di){0, 4, 1, 5}, (__m256d){10.0, 20.0, 30.0, 40.0}),5812    1.0, 10.0, 2.0, 20.0));5813__m256d test_mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I, __m256d __B) {5814  // CHECK-LABEL: test_mm256_mask_permutex2var_pd5815  // CHECK: @llvm.x86.avx512.vpermi2var.pd.2565816  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5817  return _mm256_mask_permutex2var_pd(__A,__U,__I,__B); 5818}5819TEST_CONSTEXPR(match_m256d(5820    _mm256_mask_permutex2var_pd((__m256d){-1.0, -2.0, -3.0, -4.0}, 0x2, (__m256i)(__v4di){0, 4, 1, 5}, (__m256d){10.0, 20.0, 30.0, 40.0}),5821    -1.0, 10.0, -3.0, -4.0));5822__m256d test_mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,  __m256d __B) {5823  // CHECK-LABEL: test_mm256_maskz_permutex2var_pd5824  // CHECK: @llvm.x86.avx512.vpermi2var.pd.2565825  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}5826  return _mm256_maskz_permutex2var_pd(__U,__A,__I,__B); 5827}5828TEST_CONSTEXPR(match_m256d(5829    _mm256_maskz_permutex2var_pd(0x2, (__m256d){1.0, 2.0, 3.0, 4.0}, (__m256i)(__v4di){0, 4, 1, 5}, (__m256d){10.0, 20.0, 30.0, 40.0}),5830    0.0, 10.0, 0.0, 0.0));5831__m128 test_mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {5832  // CHECK-LABEL: test_mm_permutex2var_ps5833  // CHECK: @llvm.x86.avx512.vpermi2var.ps.1285834  return _mm_permutex2var_ps(__A,__I,__B); 5835}5836TEST_CONSTEXPR(match_m128(5837    _mm_permutex2var_ps((__m128){1.f, 2.f, 3.f, 4.f}, (__m128i)(__v4si){0, 3, 4, 6}, (__m128){10.f, 20.f, 30.f, 40.f}),5838    1.f, 4.f, 10.f, 30.f));5839__m128 test_mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {5840  // CHECK-LABEL: test_mm_mask_permutex2var_ps5841  // CHECK: @llvm.x86.avx512.vpermi2var.ps.1285842  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5843  return _mm_mask_permutex2var_ps(__A,__U,__I,__B); 5844}5845TEST_CONSTEXPR(match_m128(5846    _mm_mask_permutex2var_ps((__m128){-1.f, -2.f, -3.f, -4.f}, 0x0A, (__m128i)(__v4si){0, 3, 4, 6}, (__m128){10.f, 20.f, 30.f, 40.f}),5847    -1.f, -4.f, -3.f, 30.f));5848__m128 test_mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {5849  // CHECK-LABEL: test_mm_maskz_permutex2var_ps5850  // CHECK: @llvm.x86.avx512.vpermi2var.ps.1285851  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}5852  return _mm_maskz_permutex2var_ps(__U,__A,__I,__B); 5853}5854TEST_CONSTEXPR(match_m128(5855    _mm_maskz_permutex2var_ps(0x0A, (__m128){1.f, 2.f, 3.f, 4.f}, (__m128i)(__v4si){0, 3, 4, 6}, (__m128){10.f, 20.f, 30.f, 40.f}),5856    0.f, 4.f, 0.f, 30.f));5857__m256 test_mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {5858  // CHECK-LABEL: test_mm256_permutex2var_ps5859  // CHECK: @llvm.x86.avx512.vpermi2var.ps.2565860  return _mm256_permutex2var_ps(__A,__I,__B); 5861}5862TEST_CONSTEXPR(match_m256(5863    _mm256_permutex2var_ps((__m256){0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f},5864                              (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},5865                              (__m256){10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 17.f}),5866    0.f, 7.f, 10.f, 17.f, 1.f, 11.f, 2.f, 12.f));5867__m256 test_mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {5868  // CHECK-LABEL: test_mm256_mask_permutex2var_ps5869  // CHECK: @llvm.x86.avx512.vpermi2var.ps.2565870  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5871  return _mm256_mask_permutex2var_ps(__A,__U,__I,__B); 5872}5873TEST_CONSTEXPR(match_m256(5874    _mm256_mask_permutex2var_ps((__m256){-1.f, -2.f, -3.f, -4.f, -5.f, -6.f, -7.f, -8.f}, 0xAA, (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10}, (__m256){10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 17.f}),5875    -1.f, -8.f, -3.f, 17.f, -5.f, 11.f, -7.f, 12.f));5876__m256 test_mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I, __m256 __B) {5877  // CHECK-LABEL: test_mm256_maskz_permutex2var_ps5878  // CHECK: @llvm.x86.avx512.vpermi2var.ps.2565879  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}5880  return _mm256_maskz_permutex2var_ps(__U,__A,__I,__B); 5881}5882TEST_CONSTEXPR(match_m256(5883    _mm256_maskz_permutex2var_ps(0xAA, (__m256){0.f, 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f}, (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10}, (__m256){10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 17.f}),5884    0.f, 7.f, 0.f, 17.f, 0.f, 11.f, 0.f, 12.f));5885__m128i test_mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {5886  // CHECK-LABEL: test_mm_permutex2var_epi645887  // CHECK: @llvm.x86.avx512.vpermi2var.q.1285888  return _mm_permutex2var_epi64(__A,__I,__B); 5889}5890TEST_CONSTEXPR(match_v2di(5891    _mm_permutex2var_epi64((__m128i)(__v2di){10, 20}, (__m128i)(__v2di){0, 3}, (__m128i)(__v2di){100, 200}),5892    10, 200));5893__m128i test_mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I, __m128i __B) {5894  // CHECK-LABEL: test_mm_mask_permutex2var_epi645895  // CHECK: @llvm.x86.avx512.vpermi2var.q.1285896  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}5897  return _mm_mask_permutex2var_epi64(__A,__U,__I,__B); 5898}5899TEST_CONSTEXPR(match_v2di(5900    _mm_mask_permutex2var_epi64((__m128i)(__v2di){-1, -2}, 0x2, (__m128i)(__v2di){0, 3}, (__m128i)(__v2di){100, 200}),5901    -1, 200));5902__m128i test_mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I, __m128i __B) {5903  // CHECK-LABEL: test_mm_maskz_permutex2var_epi645904  // CHECK: @llvm.x86.avx512.vpermi2var.q.1285905  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}5906  return _mm_maskz_permutex2var_epi64(__U,__A,__I,__B); 5907}5908TEST_CONSTEXPR(match_v2di(5909    _mm_maskz_permutex2var_epi64(0x2, (__m128i)(__v2di){10, 20}, (__m128i)(__v2di){0, 3}, (__m128i)(__v2di){100, 200}),5910    0, 200));5911__m256i test_mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {5912  // CHECK-LABEL: test_mm256_permutex2var_epi645913  // CHECK: @llvm.x86.avx512.vpermi2var.q.2565914  return _mm256_permutex2var_epi64(__A,__I,__B); 5915}5916TEST_CONSTEXPR(match_v4di(5917    _mm256_permutex2var_epi64((__m256i)(__v4di){0, 10, 20, 30}, (__m256i)(__v4di){0, 1, 4, 5}, (__m256i)(__v4di){100, 110, 120, 130}),5918    0, 10, 100, 110));5919__m256i test_mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I, __m256i __B) {5920  // CHECK-LABEL: test_mm256_mask_permutex2var_epi645921  // CHECK: @llvm.x86.avx512.vpermi2var.q.2565922  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}5923  return _mm256_mask_permutex2var_epi64(__A,__U,__I,__B); 5924}5925TEST_CONSTEXPR(match_v4di(5926    _mm256_mask_permutex2var_epi64((__m256i)(__v4di){-1, -2, -3, -4}, 0x5, (__m256i)(__v4di){0, 1, 4, 5}, (__m256i)(__v4di){100, 110, 120, 130}),5927    -1, -2, 100, -4));5928__m256i test_mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I, __m256i __B) {5929  // CHECK-LABEL: test_mm256_maskz_permutex2var_epi645930  // CHECK: @llvm.x86.avx512.vpermi2var.q.2565931  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}5932  return _mm256_maskz_permutex2var_epi64(__U,__A,__I,__B); 5933}5934TEST_CONSTEXPR(match_v4di(5935    _mm256_maskz_permutex2var_epi64(0x5, (__m256i)(__v4di){0, 10, 20, 30}, (__m256i)(__v4di){0, 1, 4, 5}, (__m256i)(__v4di){100, 110, 120, 130}),5936    0, 0, 100, 0));5937 5938TEST_CONSTEXPR(match_v4si(5939    _mm_permutex2var_epi32((__m128i)(__v4si){10, 20, 30, 40},5940                           (__m128i)(__v4si){0, 3, 4, 6},5941                           (__m128i)(__v4si){100, 200, 300, 400}),5942    10, 40, 100, 300));5943TEST_CONSTEXPR(match_v4si(5944    _mm_mask_permutex2var_epi32((__m128i)(__v4si){-1, -2, -3, -4}, 0x0A,5945                                (__m128i)(__v4si){0, 3, 4, 6},5946                                (__m128i)(__v4si){100, 200, 300, 400}),5947    -1, -4, -3, 300));5948__m128i test_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {5949  // CHECK-LABEL: test_mm_mask_cvtepi8_epi325950  // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>5951  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}5952  return _mm_mask_cvtepi8_epi32(__W, __U, __A); 5953}5954 5955__m128i test_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {5956  // CHECK-LABEL: test_mm_maskz_cvtepi8_epi325957  // CHECK: sext <4 x i8> %{{.*}} to <4 x i32>5958  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}5959  return _mm_maskz_cvtepi8_epi32(__U, __A); 5960}5961 5962__m256i test_mm256_mask_cvtepi8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {5963  // CHECK-LABEL: test_mm256_mask_cvtepi8_epi325964  // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>5965  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}5966  return _mm256_mask_cvtepi8_epi32(__W, __U, __A); 5967}5968 5969__m256i test_mm256_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A) {5970  // CHECK-LABEL: test_mm256_maskz_cvtepi8_epi325971  // CHECK: sext <8 x i8> %{{.*}} to <8 x i32>5972  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}5973  return _mm256_maskz_cvtepi8_epi32(__U, __A); 5974}5975 5976__m128i test_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {5977  // CHECK-LABEL: test_mm_mask_cvtepi8_epi645978  // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>5979  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}5980  return _mm_mask_cvtepi8_epi64(__W, __U, __A); 5981}5982 5983__m128i test_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {5984  // CHECK-LABEL: test_mm_maskz_cvtepi8_epi645985  // CHECK: sext <2 x i8> %{{.*}} to <2 x i64>5986  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}5987  return _mm_maskz_cvtepi8_epi64(__U, __A); 5988}5989 5990__m256i test_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {5991  // CHECK-LABEL: test_mm256_mask_cvtepi8_epi645992  // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>5993  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}5994  return _mm256_mask_cvtepi8_epi64(__W, __U, __A); 5995}5996 5997__m256i test_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) {5998  // CHECK-LABEL: test_mm256_maskz_cvtepi8_epi645999  // CHECK: sext <4 x i8> %{{.*}} to <4 x i64>6000  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6001  return _mm256_maskz_cvtepi8_epi64(__U, __A); 6002}6003 6004__m128i test_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {6005  // CHECK-LABEL: test_mm_mask_cvtepi32_epi646006  // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>6007  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6008  return _mm_mask_cvtepi32_epi64(__W, __U, __X); 6009}6010 6011__m128i test_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {6012  // CHECK-LABEL: test_mm_maskz_cvtepi32_epi646013  // CHECK: sext <2 x i32> %{{.*}} to <2 x i64>6014  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6015  return _mm_maskz_cvtepi32_epi64(__U, __X); 6016}6017 6018__m256i test_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {6019  // CHECK-LABEL: test_mm256_mask_cvtepi32_epi646020  // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>6021  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6022  return _mm256_mask_cvtepi32_epi64(__W, __U, __X); 6023}6024 6025__m256i test_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X) {6026  // CHECK-LABEL: test_mm256_maskz_cvtepi32_epi646027  // CHECK: sext <4 x i32> %{{.*}} to <4 x i64>6028  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6029  return _mm256_maskz_cvtepi32_epi64(__U, __X); 6030}6031 6032__m128i test_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6033  // CHECK-LABEL: test_mm_mask_cvtepi16_epi326034  // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>6035  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6036  return _mm_mask_cvtepi16_epi32(__W, __U, __A); 6037}6038 6039__m128i test_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {6040  // CHECK-LABEL: test_mm_maskz_cvtepi16_epi326041  // CHECK: sext <4 x i16> %{{.*}} to <4 x i32>6042  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6043  return _mm_maskz_cvtepi16_epi32(__U, __A); 6044}6045 6046__m256i test_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {6047  // CHECK-LABEL: test_mm256_mask_cvtepi16_epi326048  // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>6049  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6050  return _mm256_mask_cvtepi16_epi32(__W, __U, __A); 6051}6052 6053__m256i test_mm256_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A) {6054  // CHECK-LABEL: test_mm256_maskz_cvtepi16_epi326055  // CHECK: sext <8 x i16> %{{.*}} to <8 x i32>6056  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6057  return _mm256_maskz_cvtepi16_epi32(__U, __A); 6058}6059 6060__m128i test_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {6061  // CHECK-LABEL: test_mm_mask_cvtepi16_epi646062  // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>6063  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6064  return _mm_mask_cvtepi16_epi64(__W, __U, __A); 6065}6066 6067__m128i test_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {6068  // CHECK-LABEL: test_mm_maskz_cvtepi16_epi646069  // CHECK: sext <2 x i16> %{{.*}} to <2 x i64>6070  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6071  return _mm_maskz_cvtepi16_epi64(__U, __A); 6072}6073 6074__m256i test_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {6075  // CHECK-LABEL: test_mm256_mask_cvtepi16_epi646076  // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>6077  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6078  return _mm256_mask_cvtepi16_epi64(__W, __U, __A); 6079}6080 6081__m256i test_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) {6082  // CHECK-LABEL: test_mm256_maskz_cvtepi16_epi646083  // CHECK: sext <4 x i16> %{{.*}} to <4 x i64>6084  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6085  return _mm256_maskz_cvtepi16_epi64(__U, __A); 6086}6087 6088__m128i test_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6089  // CHECK-LABEL: test_mm_mask_cvtepu8_epi326090  // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>6091  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6092  return _mm_mask_cvtepu8_epi32(__W, __U, __A); 6093}6094 6095__m128i test_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {6096  // CHECK-LABEL: test_mm_maskz_cvtepu8_epi326097  // CHECK: zext <4 x i8> %{{.*}} to <4 x i32>6098  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6099  return _mm_maskz_cvtepu8_epi32(__U, __A);6100}6101 6102__m256i test_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A) {6103  // CHECK-LABEL: test_mm256_mask_cvtepu8_epi326104  // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>6105  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6106  return _mm256_mask_cvtepu8_epi32(__W, __U, __A); 6107}6108 6109__m256i test_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A) {6110  // CHECK-LABEL: test_mm256_maskz_cvtepu8_epi326111  // CHECK: zext <8 x i8> %{{.*}} to <8 x i32>6112  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6113  return _mm256_maskz_cvtepu8_epi32(__U, __A); 6114}6115 6116__m128i test_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A) {6117  // CHECK-LABEL: test_mm_mask_cvtepu8_epi646118  // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>6119  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6120  return _mm_mask_cvtepu8_epi64(__W, __U, __A); 6121}6122 6123__m128i test_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {6124  // CHECK-LABEL: test_mm_maskz_cvtepu8_epi646125  // CHECK: zext <2 x i8> %{{.*}} to <2 x i64>6126  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6127  return _mm_maskz_cvtepu8_epi64(__U, __A); 6128}6129 6130__m256i test_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A) {6131  // CHECK-LABEL: test_mm256_mask_cvtepu8_epi646132  // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>6133  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6134  return _mm256_mask_cvtepu8_epi64(__W, __U, __A); 6135}6136 6137__m256i test_mm256_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) {6138  // CHECK-LABEL: test_mm256_maskz_cvtepu8_epi646139  // CHECK: zext <4 x i8> %{{.*}} to <4 x i64>6140  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6141  return _mm256_maskz_cvtepu8_epi64(__U, __A); 6142}6143 6144__m128i test_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X) {6145  // CHECK-LABEL: test_mm_mask_cvtepu32_epi646146  // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>6147  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6148  return _mm_mask_cvtepu32_epi64(__W, __U, __X); 6149}6150 6151__m128i test_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {6152  // CHECK-LABEL: test_mm_maskz_cvtepu32_epi646153  // CHECK: zext <2 x i32> %{{.*}} to <2 x i64>6154  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6155  return _mm_maskz_cvtepu32_epi64(__U, __X); 6156}6157 6158__m256i test_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X) {6159  // CHECK-LABEL: test_mm256_mask_cvtepu32_epi646160  // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>6161  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6162  return _mm256_mask_cvtepu32_epi64(__W, __U, __X); 6163}6164 6165__m256i test_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X) {6166  // CHECK-LABEL: test_mm256_maskz_cvtepu32_epi646167  // CHECK: zext <4 x i32> %{{.*}} to <4 x i64>6168  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6169  return _mm256_maskz_cvtepu32_epi64(__U, __X); 6170}6171 6172__m128i test_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6173  // CHECK-LABEL: test_mm_mask_cvtepu16_epi326174  // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>6175  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6176  return _mm_mask_cvtepu16_epi32(__W, __U, __A); 6177}6178 6179__m128i test_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {6180  // CHECK-LABEL: test_mm_maskz_cvtepu16_epi326181  // CHECK: zext <4 x i16> %{{.*}} to <4 x i32>6182  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6183  return _mm_maskz_cvtepu16_epi32(__U, __A); 6184}6185 6186__m256i test_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A) {6187  // CHECK-LABEL: test_mm256_mask_cvtepu16_epi326188  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>6189  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6190  return _mm256_mask_cvtepu16_epi32(__W, __U, __A); 6191}6192 6193__m256i test_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A) {6194  // CHECK-LABEL: test_mm256_maskz_cvtepu16_epi326195  // CHECK: zext <8 x i16> %{{.*}} to <8 x i32>6196  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6197  return _mm256_maskz_cvtepu16_epi32(__U, __A); 6198}6199 6200__m128i test_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A) {6201  // CHECK-LABEL: test_mm_mask_cvtepu16_epi646202  // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>6203  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6204  return _mm_mask_cvtepu16_epi64(__W, __U, __A); 6205}6206 6207__m128i test_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {6208  // CHECK-LABEL: test_mm_maskz_cvtepu16_epi646209  // CHECK: zext <2 x i16> %{{.*}} to <2 x i64>6210  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6211  return _mm_maskz_cvtepu16_epi64(__U, __A); 6212}6213 6214__m256i test_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A) {6215  // CHECK-LABEL: test_mm256_mask_cvtepu16_epi646216  // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>6217  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6218  return _mm256_mask_cvtepu16_epi64(__W, __U, __A); 6219}6220 6221__m256i test_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) {6222  // CHECK-LABEL: test_mm256_maskz_cvtepu16_epi646223  // CHECK: zext <4 x i16> %{{.*}} to <4 x i64>6224  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6225  return _mm256_maskz_cvtepu16_epi64(__U, __A); 6226}6227 6228__m128i test_mm_rol_epi32(__m128i __A) {6229  // CHECK-LABEL: test_mm_rol_epi326230  // CHECK: @llvm.fshl.v4i326231  return _mm_rol_epi32(__A, 5); 6232}6233TEST_CONSTEXPR(match_v4si(_mm_rol_epi32(((__m128i)(__v4si){1, -2, 3, -4}), 5), 32, -33, 96, -97));6234 6235__m128i test_mm_mask_rol_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6236  // CHECK-LABEL: test_mm_mask_rol_epi326237  // CHECK: @llvm.fshl.v4i326238  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6239  return _mm_mask_rol_epi32(__W, __U, __A, 5); 6240}6241TEST_CONSTEXPR(match_v4si(_mm_mask_rol_epi32(((__m128i)(__v4si){99, 99, 99, 99}), 0x3, ((__m128i)(__v4si){1, -2, 3, -4}), 5), 32, -33, 99, 99));6242 6243__m128i test_mm_maskz_rol_epi32(__mmask8 __U, __m128i __A) {6244  // CHECK-LABEL: test_mm_maskz_rol_epi326245  // CHECK: @llvm.fshl.v4i326246  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6247  return _mm_maskz_rol_epi32(__U, __A, 5); 6248}6249TEST_CONSTEXPR(match_v4si(_mm_maskz_rol_epi32(0x9, ((__m128i)(__v4si){1, -2, 3, -4}), 5), 32, 0, 0, -97));6250 6251__m256i test_mm256_rol_epi32(__m256i __A) {6252  // CHECK-LABEL: test_mm256_rol_epi326253  // CHECK: @llvm.fshl.v8i326254  return _mm256_rol_epi32(__A, 5); 6255}6256TEST_CONSTEXPR(match_v8si(_mm256_rol_epi32(((__m256i)(__v8si){1, -2, 3, -4, -5, 6, -7, 8}), 5), 32, -33, 96, -97, -129, 192, -193, 256));6257 6258__m256i test_mm256_mask_rol_epi32(__m256i __W, __mmask8 __U, __m256i __A) {6259  // CHECK-LABEL: test_mm256_mask_rol_epi326260  // CHECK: @llvm.fshl.v8i326261  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6262  return _mm256_mask_rol_epi32(__W, __U, __A, 5); 6263}6264TEST_CONSTEXPR(match_v8si(_mm256_mask_rol_epi32(((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}), 0x73, ((__m256i)(__v8si){1, -2, 3, -4, -5, 6, -7, 8}), 5), 32, -33, 99, 99, -129, 192, -193, 99));6265 6266__m256i test_mm256_maskz_rol_epi32(__mmask8 __U, __m256i __A) {6267  // CHECK-LABEL: test_mm256_maskz_rol_epi326268  // CHECK: @llvm.fshl.v8i326269  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6270  return _mm256_maskz_rol_epi32(__U, __A, 5); 6271}6272TEST_CONSTEXPR(match_v8si(_mm256_maskz_rol_epi32(0x37, ((__m256i)(__v8si){1, -2, 3, -4, -5, 6, -7, 8}), 5), 32, -33, 96, 0, -129, 192, 0, 0));6273 6274__m128i test_mm_rol_epi64(__m128i __A) {6275  // CHECK-LABEL: test_mm_rol_epi646276  // CHECK: @llvm.fshl.v2i646277  return _mm_rol_epi64(__A, 5); 6278}6279TEST_CONSTEXPR(match_v2di(_mm_rol_epi64(((__m128i)(__v2di){10, -11}), 19), 5242880, -5242881));6280 6281__m128i test_mm_mask_rol_epi64(__m128i __W, __mmask8 __U, __m128i __A) {6282  // CHECK-LABEL: test_mm_mask_rol_epi646283  // CHECK: @llvm.fshl.v2i646284  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6285  return _mm_mask_rol_epi64(__W, __U, __A, 5); 6286}6287TEST_CONSTEXPR(match_v2di(_mm_mask_rol_epi64(((__m128i)(__v2di){99, 99}), 0x1, ((__m128i)(__v2di){10, -11}), 19), 5242880, 99));6288 6289__m128i test_mm_maskz_rol_epi64(__mmask8 __U, __m128i __A) {6290  // CHECK-LABEL: test_mm_maskz_rol_epi646291  // CHECK: @llvm.fshl.v2i646292  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6293  return _mm_maskz_rol_epi64(__U, __A, 5); 6294}6295TEST_CONSTEXPR(match_v2di(_mm_maskz_rol_epi64(0x2, ((__m128i)(__v2di){10, -11}), 19), 0, -5242881));6296 6297__m256i test_mm256_rol_epi64(__m256i __A) {6298  // CHECK-LABEL: test_mm256_rol_epi646299  // CHECK: @llvm.fshl.v4i646300  return _mm256_rol_epi64(__A, 5); 6301}6302TEST_CONSTEXPR(match_v4di(_mm256_rol_epi64(((__m256i)(__v4di){10, -11, -12, 13}), 19), 5242880, -5242881, -5767169, 6815744));6303 6304__m256i test_mm256_mask_rol_epi64(__m256i __W, __mmask8 __U, __m256i __A) {6305  // CHECK-LABEL: test_mm256_mask_rol_epi646306  // CHECK: @llvm.fshl.v4i646307  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6308  return _mm256_mask_rol_epi64(__W, __U, __A, 5); 6309}6310TEST_CONSTEXPR(match_v4di(_mm256_mask_rol_epi64(((__m256i)(__v4di){99, 99, 99, 99}), 0x9, ((__m256i)(__v4di){10, -11, -12, 13}), 19), 5242880, 99, 99, 6815744));6311 6312__m256i test_mm256_maskz_rol_epi64(__mmask8 __U, __m256i __A) {6313  // CHECK-LABEL: test_mm256_maskz_rol_epi646314  // CHECK: @llvm.fshl.v4i646315  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6316  return _mm256_maskz_rol_epi64(__U, __A, 5); 6317}6318TEST_CONSTEXPR(match_v4di(_mm256_maskz_rol_epi64(0xC, ((__m256i)(__v4di){10, -11, -12, 13}), 19), 0, 0, -5767169, 6815744));6319 6320__m128i test_mm_rolv_epi32(__m128i __A, __m128i __B) {6321  // CHECK-LABEL: test_mm_rolv_epi326322  // CHECK: llvm.fshl.v4i326323  return _mm_rolv_epi32(__A, __B); 6324}6325TEST_CONSTEXPR(match_v4si(_mm_rolv_epi32((__m128i)(__v4si){ 1, 2, 3, -4}, (__m128i)(__v4si){ 4, 3, -2, -1}), 16, 16, -1073741824, 2147483646));6326 6327__m128i test_mm_mask_rolv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6328  // CHECK-LABEL: test_mm_mask_rolv_epi326329  // CHECK: llvm.fshl.v4i326330  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6331  return _mm_mask_rolv_epi32(__W, __U, __A, __B); 6332}6333TEST_CONSTEXPR(match_v4si(_mm_mask_rolv_epi32((__m128i)(__v4si){ 999, 999, 999, 999}, 0x3, (__m128i)(__v4si){ 1, 2, 3, -4}, (__m128i)(__v4si){ 4, 3, -2, -1}), 16, 16, 999, 999));6334 6335__m128i test_mm_maskz_rolv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {6336  // CHECK-LABEL: test_mm_maskz_rolv_epi326337  // CHECK: llvm.fshl.v4i326338  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6339  return _mm_maskz_rolv_epi32(__U, __A, __B); 6340}6341TEST_CONSTEXPR(match_v4si(_mm_maskz_rolv_epi32(0x3, (__m128i)(__v4si){ 1, 2, 3, -4}, (__m128i)(__v4si){ 4, 3, -2, -1}), 16, 16, 0, 0));6342 6343__m256i test_mm256_rolv_epi32(__m256i __A, __m256i __B) {6344  // CHECK-LABEL: test_mm256_rolv_epi326345  // CHECK: @llvm.fshl.v8i326346  return _mm256_rolv_epi32(__A, __B); 6347}6348TEST_CONSTEXPR(match_v8si(_mm256_rolv_epi32((__m256i)(__v8si){ -1, -2, 3, 4, -5, 6, -7, 8}, (__m256i)(__v8si){ 8, -7, -6, 5, 4, -3, 2, 1}), -1, -33554433, 201326592, 128, -65, -1073741824, -25, 16));6349 6350__m256i test_mm256_mask_rolv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {6351  // CHECK-LABEL: test_mm256_mask_rolv_epi326352  // CHECK: @llvm.fshl.v8i326353  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6354  return _mm256_mask_rolv_epi32(__W, __U, __A, __B); 6355}6356TEST_CONSTEXPR(match_v8si(_mm256_mask_rolv_epi32((__m256i)(__v8si){ 999, 999, 999, 999, 999, 999, 999, 999}, 0x69, (__m256i)(__v8si){ -1, -2, 3, 4, -5, 6, -7, 8}, (__m256i)(__v8si){ 8, -7, -6, 5, 4, -3, 2, 1}), -1, 999, 999, 128, 999, -1073741824, -25, 999));6357 6358__m256i test_mm256_maskz_rolv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {6359  // CHECK-LABEL: test_mm256_maskz_rolv_epi326360  // CHECK: @llvm.fshl.v8i326361  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6362  return _mm256_maskz_rolv_epi32(__U, __A, __B); 6363}6364TEST_CONSTEXPR(match_v8si(_mm256_maskz_rolv_epi32(0x69, (__m256i)(__v8si){ -1, -2, 3, 4, -5, 6, -7, 8}, (__m256i)(__v8si){ 8, -7, -6, 5, 4, -3, 2, 1}), -1, 0, 0, 128, 0, -1073741824, -25, 0));6365 6366__m128i test_mm_rolv_epi64(__m128i __A, __m128i __B) {6367  // CHECK-LABEL: test_mm_rolv_epi646368  // CHECK: @llvm.fshl.v2i646369  return _mm_rolv_epi64(__A, __B); 6370}6371TEST_CONSTEXPR(match_v2di(_mm_rolv_epi64((__m128i)(__v2di){ 1, 2}, (__m128i)(__v2di){ 2, 1}), 4, 4));6372 6373__m128i test_mm_mask_rolv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6374  // CHECK-LABEL: test_mm_mask_rolv_epi646375  // CHECK: @llvm.fshl.v2i646376  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6377  return _mm_mask_rolv_epi64(__W, __U, __A, __B); 6378}6379TEST_CONSTEXPR(match_v2di(_mm_mask_rolv_epi64((__m128i)(__v2di){ 999, 999}, 0x2, (__m128i)(__v2di){ 1, 2}, (__m128i)(__v2di){ 2, 1}), 999, 4));6380 6381__m128i test_mm_maskz_rolv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {6382  // CHECK-LABEL: test_mm_maskz_rolv_epi646383  // CHECK: @llvm.fshl.v2i646384  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6385  return _mm_maskz_rolv_epi64(__U, __A, __B); 6386}6387TEST_CONSTEXPR(match_v2di(_mm_maskz_rolv_epi64(0x2, (__m128i)(__v2di){ 1, 2}, (__m128i)(__v2di){ 2, 1}), 0, 4));6388 6389__m256i test_mm256_rolv_epi64(__m256i __A, __m256i __B) {6390  // CHECK-LABEL: test_mm256_rolv_epi646391  // CHECK: @llvm.fshl.v4i646392  return _mm256_rolv_epi64(__A, __B); 6393}6394TEST_CONSTEXPR(match_v4di(_mm256_rolv_epi64((__m256i)(__v4di){ -1, 2, -3, 4}, (__m256i)(__v4di){ 4, 3, -2, 1}), -1, 16, 9223372036854775807LL, 8));6395 6396__m256i test_mm256_mask_rolv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {6397  // CHECK-LABEL: test_mm256_mask_rolv_epi646398  // CHECK: @llvm.fshl.v4i646399  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6400  return _mm256_mask_rolv_epi64(__W, __U, __A, __B); 6401}6402TEST_CONSTEXPR(match_v4di(_mm256_mask_rolv_epi64((__m256i)(__v4di){ 999, 999, 999, 999}, 0xD, (__m256i)(__v4di){ -1, 2, -3, 4}, (__m256i)(__v4di){ 4, 3, -2, 1}), -1, 999, 9223372036854775807LL, 8));6403 6404__m256i test_mm256_maskz_rolv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {6405  // CHECK-LABEL: test_mm256_maskz_rolv_epi646406  // CHECK: @llvm.fshl.v4i646407  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6408  return _mm256_maskz_rolv_epi64(__U, __A, __B); 6409}6410TEST_CONSTEXPR(match_v4di(_mm256_maskz_rolv_epi64(0xD, (__m256i)(__v4di){ -1, 2, -3, 4}, (__m256i)(__v4di){ 4, 3, -2, 1}), -1, 0, 9223372036854775807LL, 8));6411 6412__m128i test_mm_ror_epi32(__m128i __A) {6413  // CHECK-LABEL: test_mm_ror_epi326414  // CHECK: @llvm.fshr.v4i326415  return _mm_ror_epi32(__A, 5); 6416}6417TEST_CONSTEXPR(match_v4si(_mm_ror_epi32(((__m128i)(__v4si){1, -2, 3, -4}), 5), 134217728, -134217729, 402653184, -402653185));6418 6419__m128i test_mm_mask_ror_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6420  // CHECK-LABEL: test_mm_mask_ror_epi326421  // CHECK: @llvm.fshr.v4i326422  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6423  return _mm_mask_ror_epi32(__W, __U, __A, 5); 6424}6425TEST_CONSTEXPR(match_v4si(_mm_mask_ror_epi32(((__m128i)(__v4si){99, 99, 99, 99}), 0x3, ((__m128i)(__v4si){1, -2, 3, -4}), 5), 134217728, -134217729, 99, 99));6426 6427__m128i test_mm_maskz_ror_epi32(__mmask8 __U, __m128i __A) {6428  // CHECK-LABEL: test_mm_maskz_ror_epi326429  // CHECK: @llvm.fshr.v4i326430  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6431  return _mm_maskz_ror_epi32(__U, __A, 5); 6432}6433TEST_CONSTEXPR(match_v4si(_mm_maskz_ror_epi32(0x9, ((__m128i)(__v4si){1, -2, 3, -4}), 5), 134217728, 0, 0, -402653185));6434 6435__m256i test_mm256_ror_epi32(__m256i __A) {6436  // CHECK-LABEL: test_mm256_ror_epi326437  // CHECK: @llvm.fshr.v8i326438  return _mm256_ror_epi32(__A, 5); 6439}6440TEST_CONSTEXPR(match_v8si(_mm256_ror_epi32(((__m256i)(__v8si){1, -2, 3, -4, -5, 6, -7, 8}), 5), 134217728, -134217729, 402653184, -402653185, -536870913, 805306368, -805306369, 1073741824));6441 6442__m256i test_mm256_mask_ror_epi32(__m256i __W, __mmask8 __U, __m256i __A) {6443  // CHECK-LABEL: test_mm256_mask_ror_epi326444  // CHECK: @llvm.fshr.v8i326445  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6446  return _mm256_mask_ror_epi32(__W, __U, __A, 5); 6447}6448TEST_CONSTEXPR(match_v8si(_mm256_mask_ror_epi32(((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}), 0x73, ((__m256i)(__v8si){1, -2, 3, -4, -5, 6, -7, 8}), 5), 134217728, -134217729, 99, 99, -536870913, 805306368, -805306369, 99));6449 6450__m256i test_mm256_maskz_ror_epi32(__mmask8 __U, __m256i __A) {6451  // CHECK-LABEL: test_mm256_maskz_ror_epi326452  // CHECK: @llvm.fshr.v8i326453  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6454  return _mm256_maskz_ror_epi32(__U, __A, 5); 6455}6456TEST_CONSTEXPR(match_v8si(_mm256_maskz_ror_epi32(0x37, ((__m256i)(__v8si){1, -2, 3, -4, -5, 6, -7, 8}), 5), 134217728, -134217729, 402653184, 0, -536870913, 805306368, 0, 0));6457 6458__m128i test_mm_ror_epi64(__m128i __A) {6459  // CHECK-LABEL: test_mm_ror_epi646460  // CHECK: @llvm.fshr.v2i646461  return _mm_ror_epi64(__A, 5); 6462}6463TEST_CONSTEXPR(match_v2di(_mm_ror_epi64(((__m128i)(__v2di){10, -11}), 19), 351843720888320LL, -351843720888321LL));6464 6465__m128i test_mm_mask_ror_epi64(__m128i __W, __mmask8 __U, __m128i __A) {6466  // CHECK-LABEL: test_mm_mask_ror_epi646467  // CHECK: @llvm.fshr.v2i646468  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6469  return _mm_mask_ror_epi64(__W, __U, __A, 5); 6470}6471TEST_CONSTEXPR(match_v2di(_mm_mask_ror_epi64(((__m128i)(__v2di){99, 99}), 0x1, ((__m128i)(__v2di){10, -11}), 19), 351843720888320LL, 99));6472 6473__m128i test_mm_maskz_ror_epi64(__mmask8 __U, __m128i __A) {6474  // CHECK-LABEL: test_mm_maskz_ror_epi646475  // CHECK: @llvm.fshr.v2i646476  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6477  return _mm_maskz_ror_epi64(__U, __A, 5); 6478}6479TEST_CONSTEXPR(match_v2di(_mm_maskz_ror_epi64(0x2, ((__m128i)(__v2di){10, -11}), 19), 0, -351843720888321LL));6480 6481__m256i test_mm256_ror_epi64(__m256i __A) {6482  // CHECK-LABEL: test_mm256_ror_epi646483  // CHECK: @llvm.fshr.v4i646484  return _mm256_ror_epi64(__A, 5); 6485}6486TEST_CONSTEXPR(match_v4di(_mm256_ror_epi64(((__m256i)(__v4di){10, -11, -12, 13}), 19), 351843720888320LL, -351843720888321LL, -387028092977153LL, 457396837154816LL));6487 6488__m256i test_mm256_mask_ror_epi64(__m256i __W, __mmask8 __U, __m256i __A) {6489  // CHECK-LABEL: test_mm256_mask_ror_epi646490  // CHECK: @llvm.fshr.v4i646491  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6492  return _mm256_mask_ror_epi64(__W, __U, __A,5); 6493}6494TEST_CONSTEXPR(match_v4di(_mm256_mask_ror_epi64(((__m256i)(__v4di){99, 99, 99, 99}), 0x9, ((__m256i)(__v4di){10, -11, -12, 13}), 19), 351843720888320LL, 99, 99, 457396837154816LL));6495 6496__m256i test_mm256_maskz_ror_epi64(__mmask8 __U, __m256i __A) {6497  // CHECK-LABEL: test_mm256_maskz_ror_epi646498  // CHECK: @llvm.fshr.v4i646499  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6500  return _mm256_maskz_ror_epi64(__U, __A, 5); 6501}6502TEST_CONSTEXPR(match_v4di(_mm256_maskz_ror_epi64(0xC, ((__m256i)(__v4di){10, -11, -12, 13}), 19), 0, 0, -387028092977153LL, 457396837154816LL));6503 6504__m128i test_mm_rorv_epi32(__m128i __A, __m128i __B) {6505  // CHECK-LABEL: test_mm_rorv_epi326506  // CHECK: @llvm.fshr.v4i326507  return _mm_rorv_epi32(__A, __B); 6508}6509TEST_CONSTEXPR(match_v4si(_mm_rorv_epi32((__m128i)(__v4si){ 1, 2, 3, -4}, (__m128i)(__v4si){ 4, 3, -2, -1}), 268435456, 1073741824, 12, -7));6510 6511__m128i test_mm_mask_rorv_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6512  // CHECK-LABEL: test_mm_mask_rorv_epi326513  // CHECK: @llvm.fshr.v4i326514  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6515  return _mm_mask_rorv_epi32(__W, __U, __A, __B); 6516}6517TEST_CONSTEXPR(match_v4si(_mm_mask_rorv_epi32((__m128i)(__v4si){ 999, 999, 999, 999}, 0x3, (__m128i)(__v4si){ 1, 2, 3, -4}, (__m128i)(__v4si){ 4, 3, -2, -1}), 268435456, 1073741824, 999, 999));6518 6519__m128i test_mm_maskz_rorv_epi32(__mmask8 __U, __m128i __A, __m128i __B) {6520  // CHECK-LABEL: test_mm_maskz_rorv_epi326521  // CHECK: @llvm.fshr.v4i326522  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6523  return _mm_maskz_rorv_epi32(__U, __A, __B); 6524}6525TEST_CONSTEXPR(match_v4si(_mm_maskz_rorv_epi32(0x3, (__m128i)(__v4si){ 1, 2, 3, -4}, (__m128i)(__v4si){ 4, 3, -2, -1}), 268435456, 1073741824, 0, 0));6526 6527__m256i test_mm256_rorv_epi32(__m256i __A, __m256i __B) {6528  // CHECK-LABEL: test_mm256_rorv_epi326529  // CHECK: @llvm.fshr.v8i326530  return _mm256_rorv_epi32(__A, __B); 6531}6532TEST_CONSTEXPR(match_v8si(_mm256_rorv_epi32((__m256i)(__v8si){ -1, -2, 3, 4, -5, 6, -7, 8}, (__m256i)(__v8si){ 8, -7, -6, 5, 4, -3, 2, 1}), -1, -129, 192, 536870912, -1073741825, 48, 2147483646, 4));6533 6534__m256i test_mm256_mask_rorv_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {6535  // CHECK-LABEL: test_mm256_mask_rorv_epi326536  // CHECK: @llvm.fshr.v8i326537  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6538  return _mm256_mask_rorv_epi32(__W, __U, __A, __B); 6539}6540TEST_CONSTEXPR(match_v8si(_mm256_mask_rorv_epi32((__m256i)(__v8si){ 999, 999, 999, 999, 999, 999, 999, 999}, 0x69, (__m256i)(__v8si){ -1, -2, 3, 4, -5, 6, -7, 8}, (__m256i)(__v8si){ 8, -7, -6, 5, 4, -3, 2, 1}), -1, 999, 999, 536870912, 999, 48, 2147483646, 999));6541 6542__m256i test_mm256_maskz_rorv_epi32(__mmask8 __U, __m256i __A, __m256i __B) {6543  // CHECK-LABEL: test_mm256_maskz_rorv_epi326544  // CHECK: @llvm.fshr.v8i326545  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6546  return _mm256_maskz_rorv_epi32(__U, __A, __B); 6547}6548TEST_CONSTEXPR(match_v8si(_mm256_maskz_rorv_epi32(0x69, (__m256i)(__v8si){ -1, -2, 3, 4, -5, 6, -7, 8}, (__m256i)(__v8si){ 8, -7, -6, 5, 4, -3, 2, 1}), -1, 0, 0, 536870912, 0, 48, 2147483646, 0));6549 6550__m128i test_mm_rorv_epi64(__m128i __A, __m128i __B) {6551  // CHECK-LABEL: test_mm_rorv_epi646552  // CHECK: @llvm.fshr.v2i646553  return _mm_rorv_epi64(__A, __B); 6554}6555TEST_CONSTEXPR(match_v2di(_mm_rorv_epi64((__m128i)(__v2di){ 1, 2}, (__m128i)(__v2di){ 2, 1}), 4611686018427387904LL, 1));6556 6557__m128i test_mm_mask_rorv_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6558  // CHECK-LABEL: test_mm_mask_rorv_epi646559  // CHECK: @llvm.fshr.v2i646560  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6561  return _mm_mask_rorv_epi64(__W, __U, __A, __B); 6562}6563TEST_CONSTEXPR(match_v2di(_mm_mask_rorv_epi64((__m128i)(__v2di){ 999, 999}, 0x2, (__m128i)(__v2di){ 1, 2}, (__m128i)(__v2di){ 2, 1}), 999, 1));6564 6565__m128i test_mm_maskz_rorv_epi64(__mmask8 __U, __m128i __A, __m128i __B) {6566  // CHECK-LABEL: test_mm_maskz_rorv_epi646567  // CHECK: @llvm.fshr.v2i646568  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6569  return _mm_maskz_rorv_epi64(__U, __A, __B); 6570}6571TEST_CONSTEXPR(match_v2di(_mm_maskz_rorv_epi64(0x2, (__m128i)(__v2di){ 1, 2}, (__m128i)(__v2di){ 2, 1}), 0, 1));6572 6573__m256i test_mm256_rorv_epi64(__m256i __A, __m256i __B) {6574  // CHECK-LABEL: test_mm256_rorv_epi646575  // CHECK: @llvm.fshr.v4i646576  return _mm256_rorv_epi64(__A, __B); 6577}6578TEST_CONSTEXPR(match_v4di(_mm256_rorv_epi64((__m256i)(__v4di){ -1, 2, -3, 4}, (__m256i)(__v4di){ 4, 3, -2, 1}), -1, 4611686018427387904LL, -9, 2));6579 6580__m256i test_mm256_mask_rorv_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {6581  // CHECK-LABEL: test_mm256_mask_rorv_epi646582  // CHECK: @llvm.fshr.v4i646583  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6584  return _mm256_mask_rorv_epi64(__W, __U, __A, __B); 6585}6586TEST_CONSTEXPR(match_v4di(_mm256_mask_rorv_epi64((__m256i)(__v4di){ 999, 999, 999, 999}, 0xD, (__m256i)(__v4di){ -1, 2, -3, 4}, (__m256i)(__v4di){ 4, 3, -2, 1}), -1, 999, -9, 2));6587 6588__m256i test_mm256_maskz_rorv_epi64(__mmask8 __U, __m256i __A, __m256i __B) {6589  // CHECK-LABEL: test_mm256_maskz_rorv_epi646590  // CHECK: @llvm.fshr.v4i646591  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6592  return _mm256_maskz_rorv_epi64(__U, __A, __B); 6593}6594TEST_CONSTEXPR(match_v4di(_mm256_maskz_rorv_epi64(0xD, (__m256i)(__v4di){ -1, 2, -3, 4}, (__m256i)(__v4di){ 4, 3, -2, 1}), -1, 0, -9, 2));6595 6596__m128i test_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {6597  // CHECK-LABEL: test_mm_mask_sllv_epi646598  // CHECK: @llvm.x86.avx2.psllv.q6599  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6600  return _mm_mask_sllv_epi64(__W, __U, __X, __Y); 6601}6602TEST_CONSTEXPR(match_v2di(_mm_mask_sllv_epi64((__m128i)(__v2di){99, 99}, (__mmask8)0x1, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 256, 99));6603 6604__m128i test_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {6605  // CHECK-LABEL: test_mm_maskz_sllv_epi646606  // CHECK: @llvm.x86.avx2.psllv.q6607  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6608  return _mm_maskz_sllv_epi64(__U, __X, __Y); 6609}6610TEST_CONSTEXPR(match_m128i(_mm_maskz_sllv_epi64((__mmask8)0x2, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 0, 0x8000000000000000ULL));6611 6612__m256i test_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {6613  // CHECK-LABEL: test_mm256_mask_sllv_epi646614  // CHECK: @llvm.x86.avx2.psllv.q.2566615  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6616  return _mm256_mask_sllv_epi64(__W, __U, __X, __Y); 6617}6618TEST_CONSTEXPR(match_v4di(_mm256_mask_sllv_epi64((__m256i)(__v4di){99, 99, 99, 99}, (__mmask8)0x6, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 99, -8, 24, 99));6619 6620__m256i test_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {6621  // CHECK-LABEL: test_mm256_maskz_sllv_epi646622  // CHECK: @llvm.x86.avx2.psllv.q.2566623  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6624  return _mm256_maskz_sllv_epi64(__U, __X, __Y); 6625}6626TEST_CONSTEXPR(match_v4di(_mm256_maskz_sllv_epi64((__mmask8)0x9, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 2, 0, 0, 0));6627 6628__m128i test_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {6629  // CHECK-LABEL: test_mm_mask_sllv_epi326630  // CHECK: @llvm.x86.avx2.psllv.d6631  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6632  return _mm_mask_sllv_epi32(__W, __U, __X, __Y); 6633}6634TEST_CONSTEXPR(match_v4si(_mm_mask_sllv_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x0E, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 99, -8, 24, 0));6635 6636__m128i test_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {6637  // CHECK-LABEL: test_mm_maskz_sllv_epi326638  // CHECK: @llvm.x86.avx2.psllv.d6639  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6640  return _mm_maskz_sllv_epi32(__U, __X, __Y); 6641}6642TEST_CONSTEXPR(match_v4si(_mm_maskz_sllv_epi32((__mmask8)0xC, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 0, 0, 24, 0));6643 6644__m256i test_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {6645  // CHECK-LABEL: test_mm256_mask_sllv_epi326646  // CHECK: @llvm.x86.avx2.psllv.d.2566647  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6648  return _mm256_mask_sllv_epi32(__W, __U, __X, __Y); 6649}6650TEST_CONSTEXPR(match_v8si(_mm256_mask_sllv_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x3C, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 99, 99, 24, -64, 0, 0, 99, 99));6651 6652__m256i test_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {6653  // CHECK-LABEL: test_mm256_maskz_sllv_epi326654  // CHECK: @llvm.x86.avx2.psllv.d.2566655  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6656  return _mm256_maskz_sllv_epi32(__U, __X, __Y); 6657}6658TEST_CONSTEXPR(match_v8si(_mm256_maskz_sllv_epi32((__mmask8)0xFE, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 0, -8, 24, -64, 0, 0, 0, 0));6659 6660__m128i test_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {6661  // CHECK-LABEL: test_mm_mask_srlv_epi646662  // CHECK: @llvm.x86.avx2.psrlv.q6663  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6664  return _mm_mask_srlv_epi64(__W, __U, __X, __Y); 6665}6666TEST_CONSTEXPR(match_m128i(_mm_mask_srlv_epi64((__m128i)(__v2di){99, 99}, (__mmask8)0x1, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 0, 99));6667 6668__m128i test_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {6669  // CHECK-LABEL: test_mm_maskz_srlv_epi646670  // CHECK: @llvm.x86.avx2.psrlv.q6671  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6672  return _mm_maskz_srlv_epi64(__U, __X, __Y); 6673}6674TEST_CONSTEXPR(match_m128i(_mm_maskz_srlv_epi64((__mmask8)0x2, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 0, 1));6675 6676__m256i test_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {6677  // CHECK-LABEL: test_mm256_mask_srlv_epi646678  // CHECK: @llvm.x86.avx2.psrlv.q.2566679  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6680  return _mm256_mask_srlv_epi64(__W, __U, __X, __Y); 6681}6682TEST_CONSTEXPR(match_m256i(_mm256_mask_srlv_epi64((__m256i)(__v4di){99, 99, 99, 99}, (__mmask8)0x6, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 99, 0x3FFFFFFFFFFFFFFFULL, 0, 99));6683 6684__m256i test_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {6685  // CHECK-LABEL: test_mm256_maskz_srlv_epi646686  // CHECK: @llvm.x86.avx2.psrlv.q.2566687  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6688  return _mm256_maskz_srlv_epi64(__U, __X, __Y); 6689}6690TEST_CONSTEXPR(match_m256i(_mm256_maskz_srlv_epi64((__mmask8)0x1, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 0, 0, 0, 0));6691 6692__m128i test_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {6693  // CHECK-LABEL: test_mm_mask_srlv_epi326694  // CHECK: @llvm.x86.avx2.psrlv.d6695  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6696  return _mm_mask_srlv_epi32(__W, __U, __X, __Y); 6697}6698TEST_CONSTEXPR(match_v4si(_mm_mask_srlv_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x0E, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 99, 1073741823, 0, 0));6699 6700__m128i test_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {6701  // CHECK-LABEL: test_mm_maskz_srlv_epi326702  // CHECK: @llvm.x86.avx2.psrlv.d6703  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6704  return _mm_maskz_srlv_epi32(__U, __X, __Y); 6705}6706TEST_CONSTEXPR(match_v4si(_mm_maskz_srlv_epi32((__mmask8)0xC, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 0, 0, 0, 0));6707 6708__m256i test_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {6709  // CHECK-LABEL: test_mm256_mask_srlv_epi326710  // CHECK: @llvm.x86.avx2.psrlv.d.2566711  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6712  return _mm256_mask_srlv_epi32(__W, __U, __X, __Y); 6713}6714TEST_CONSTEXPR(match_v8si(_mm256_mask_srlv_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x3C, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 99, 99, 0, 268435455, 0, 1, 99, 99));6715 6716__m256i test_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {6717  // CHECK-LABEL: test_mm256_maskz_srlv_epi326718  // CHECK: @llvm.x86.avx2.psrlv.d.2566719  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6720  return _mm256_maskz_srlv_epi32(__U, __X, __Y); 6721}6722TEST_CONSTEXPR(match_v8si(_mm256_maskz_srlv_epi32((__mmask8)0x9E, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 0, 1073741823, 0, 268435455, 0, 0, 0, 7));6723 6724__m128i test_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6725  // CHECK-LABEL: test_mm_mask_srl_epi326726  // CHECK: @llvm.x86.sse2.psrl.d6727  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6728  return _mm_mask_srl_epi32(__W, __U, __A, __B); 6729}6730 6731__m128i test_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B) {6732  // CHECK-LABEL: test_mm_maskz_srl_epi326733  // CHECK: @llvm.x86.sse2.psrl.d6734  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6735  return _mm_maskz_srl_epi32(__U, __A, __B); 6736}6737 6738__m256i test_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {6739  // CHECK-LABEL: test_mm256_mask_srl_epi326740  // CHECK: @llvm.x86.avx2.psrl.d6741  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6742  return _mm256_mask_srl_epi32(__W, __U, __A, __B); 6743}6744 6745__m256i test_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B) {6746  // CHECK-LABEL: test_mm256_maskz_srl_epi326747  // CHECK: @llvm.x86.avx2.psrl.d6748  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6749  return _mm256_maskz_srl_epi32(__U, __A, __B);6750}6751TEST_CONSTEXPR(match_v4si(_mm_mask_srl_epi32((__m128i)(__v4si){99, 99, 99, 99}, 0x5, (__m128i)(__v4si){-2, 4, -6, 8}, (__m128i)(__v4si){1, 0, 0, 0}), 2147483647, 99, 2147483645, 99));6752TEST_CONSTEXPR(match_v4si(_mm_maskz_srl_epi32(0xA, (__m128i)(__v4si){-2, 4, -6, 8}, (__m128i)(__v4si){1, 0, 0, 0}), 0, 2, 0, 4));6753TEST_CONSTEXPR(match_v8si(_mm256_mask_srl_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, 0x5A, (__m256i)(__v8si){0, -2, 4, -6, 8, -10, 12, -14}, (__m128i)(__v4si){1, 0, 0, 0}), 99, 2147483647, 99, 2147483645, 4, 99, 6, 99));6754TEST_CONSTEXPR(match_v8si(_mm256_maskz_srl_epi32(0xA5, (__m256i)(__v8si){0, -2, 4, -6, 8, -10, 12, -14}, (__m128i)(__v4si){1, 0, 0, 0}), 0, 0, 2, 0, 0, 2147483643, 0, 2147483641));6755 6756__m128i test_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6757  // CHECK-LABEL: test_mm_mask_srli_epi326758  // CHECK: @llvm.x86.sse2.psrli.d6759  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6760  return _mm_mask_srli_epi32(__W, __U, __A, 5); 6761}6762 6763__m128i test_mm_mask_srli_epi32_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {6764  // CHECK-LABEL: test_mm_mask_srli_epi32_26765  // CHECK: @llvm.x86.sse2.psrli.d6766  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6767  return _mm_mask_srli_epi32(__W, __U, __A, __B); 6768}6769 6770__m128i test_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A) {6771  // CHECK-LABEL: test_mm_maskz_srli_epi326772  // CHECK: @llvm.x86.sse2.psrli.d6773  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6774  return _mm_maskz_srli_epi32(__U, __A, 5); 6775}6776 6777__m128i test_mm_maskz_srli_epi32_2(__mmask8 __U, __m128i __A, unsigned int __B) {6778  // CHECK-LABEL: test_mm_maskz_srli_epi32_26779  // CHECK: @llvm.x86.sse2.psrli.d6780  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6781  return _mm_maskz_srli_epi32(__U, __A, __B); 6782}6783 6784__m256i test_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {6785  // CHECK-LABEL: test_mm256_mask_srli_epi326786  // CHECK: @llvm.x86.avx2.psrli.d6787  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6788  return _mm256_mask_srli_epi32(__W, __U, __A, 5); 6789}6790TEST_CONSTEXPR(match_v8si(_mm256_mask_srli_epi32((__m256i)(__v8si){100, 101, 102, 103, 104, 105, 106, 107}, (__mmask8)0xff, (__m256i)(__v8si){0, 1, 2, 3, 4, 5, 6, 7}, 3), 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0));6791 6792__m256i test_mm256_mask_srli_epi32_2(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B) {6793  // CHECK-LABEL: test_mm256_mask_srli_epi32_26794  // CHECK: @llvm.x86.avx2.psrli.d6795  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6796  return _mm256_mask_srli_epi32(__W, __U, __A, __B); 6797}6798 6799__m256i test_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A) {6800  // CHECK-LABEL: test_mm256_maskz_srli_epi326801  // CHECK: @llvm.x86.avx2.psrli.d6802  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6803  return _mm256_maskz_srli_epi32(__U, __A, 5); 6804}6805TEST_CONSTEXPR(match_v8si(_mm256_maskz_srli_epi32((__mmask8)0x71, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 1), 0x7f, 0, 0, 0, 0x2, 0x2, 0x3, 0));6806 6807__m256i test_mm256_maskz_srli_epi32_2(__mmask8 __U, __m256i __A, unsigned int __B) {6808  // CHECK-LABEL: test_mm256_maskz_srli_epi32_26809  // CHECK: @llvm.x86.avx2.psrli.d6810  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6811  return _mm256_maskz_srli_epi32(__U, __A, __B); 6812}6813__m128i test_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6814  // CHECK-LABEL: test_mm_mask_srl_epi646815  // CHECK: @llvm.x86.sse2.psrl.q6816  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6817  return _mm_mask_srl_epi64(__W, __U, __A, __B); 6818}6819 6820__m128i test_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B) {6821  // CHECK-LABEL: test_mm_maskz_srl_epi646822  // CHECK: @llvm.x86.sse2.psrl.q6823  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6824  return _mm_maskz_srl_epi64(__U, __A, __B); 6825}6826 6827__m256i test_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {6828  // CHECK-LABEL: test_mm256_mask_srl_epi646829  // CHECK: @llvm.x86.avx2.psrl.q6830  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6831  return _mm256_mask_srl_epi64(__W, __U, __A, __B); 6832}6833 6834__m256i test_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B) {6835  // CHECK-LABEL: test_mm256_maskz_srl_epi646836  // CHECK: @llvm.x86.avx2.psrl.q6837  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6838  return _mm256_maskz_srl_epi64(__U, __A, __B);6839}6840TEST_CONSTEXPR(match_v2di(_mm_mask_srl_epi64((__m128i)(__v2di){99, 99}, 0x1, (__m128i)(__v2di){-2, 4}, (__m128i)(__v2di){1, 0}), 9223372036854775807, 99));6841TEST_CONSTEXPR(match_v2di(_mm_maskz_srl_epi64(0x2, (__m128i)(__v2di){-2, 4}, (__m128i)(__v2di){1, 0}), 0, 2));6842TEST_CONSTEXPR(match_v4di(_mm256_mask_srl_epi64((__m256i)(__v4di){99, 99, 99, 99}, 0x5, (__m256i)(__v4di){0, -2, 4, -6}, (__m128i)(__v2di){1, 0}), 0, 99, 2, 99));6843TEST_CONSTEXPR(match_v4di(_mm256_maskz_srl_epi64(0xA, (__m256i)(__v4di){0, -2, 4, -6}, (__m128i)(__v2di){1, 0}), 0, 9223372036854775807, 0, 9223372036854775805));6844 6845__m128i test_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {6846  // CHECK-LABEL: test_mm_mask_srli_epi646847  // CHECK: @llvm.x86.sse2.psrli.q6848  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6849  return _mm_mask_srli_epi64(__W, __U, __A, 5); 6850}6851 6852__m128i test_mm_mask_srli_epi64_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {6853  // CHECK-LABEL: test_mm_mask_srli_epi64_26854  // CHECK: @llvm.x86.sse2.psrli.q6855  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6856  return _mm_mask_srli_epi64(__W, __U, __A, __B); 6857}6858 6859__m128i test_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A) {6860  // CHECK-LABEL: test_mm_maskz_srli_epi646861  // CHECK: @llvm.x86.sse2.psrli.q6862  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6863  return _mm_maskz_srli_epi64(__U, __A, 5); 6864}6865 6866__m128i test_mm_maskz_srli_epi64_2(__mmask8 __U, __m128i __A, unsigned int __B) {6867  // CHECK-LABEL: test_mm_maskz_srli_epi64_26868  // CHECK: @llvm.x86.sse2.psrli.q6869  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}6870  return _mm_maskz_srli_epi64(__U, __A, __B); 6871}6872 6873__m256i test_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {6874  // CHECK-LABEL: test_mm256_mask_srli_epi646875  // CHECK: @llvm.x86.avx2.psrli.q6876  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6877  return _mm256_mask_srli_epi64(__W, __U, __A, 5); 6878}6879TEST_CONSTEXPR(match_v4di(_mm256_mask_srli_epi64((__m256i)(__v4di){100, 101, 102, 103}, (__mmask8)0b1010, (__m256i)(__v4di){0, 0xff80, 2, 3}, 1), 100, 0x7fc0, 102, 0x1));6880 6881__m256i test_mm256_mask_srli_epi64_2(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B) {6882  // CHECK-LABEL: test_mm256_mask_srli_epi64_26883  // CHECK: @llvm.x86.avx2.psrli.q6884  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6885  return _mm256_mask_srli_epi64(__W, __U, __A, __B); 6886}6887 6888__m256i test_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A) {6889  // CHECK-LABEL: test_mm256_maskz_srli_epi646890  // CHECK: @llvm.x86.avx2.psrli.q6891  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6892  return _mm256_maskz_srli_epi64(__U, __A, 5); 6893}6894TEST_CONSTEXPR(match_v4di(_mm256_maskz_srli_epi64((__mmask8)0x71, (__m256i)(__v4di){0xff, 1, 2, 3}, 1), 0x7f, 0, 0, 0));6895 6896__m256i test_mm256_maskz_srli_epi64_2(__mmask8 __U,__m256i __A, unsigned int __B) {6897  // CHECK-LABEL: test_mm256_maskz_srli_epi64_26898  // CHECK: @llvm.x86.avx2.psrli.q6899  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}6900  return _mm256_maskz_srli_epi64(__U, __A, __B); 6901}6902 6903__m128i test_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6904  // CHECK-LABEL: test_mm_mask_sll_epi326905  // CHECK: @llvm.x86.sse2.psll.d6906  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6907  return _mm_mask_sll_epi32(__W, __U, __A, __B); 6908}6909 6910__m128i test_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B) {6911  // CHECK-LABEL: test_mm_maskz_sll_epi326912  // CHECK: @llvm.x86.sse2.psll.d6913  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6914  return _mm_maskz_sll_epi32(__U, __A, __B); 6915}6916 6917__m256i test_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {6918  // CHECK-LABEL: test_mm256_mask_sll_epi326919  // CHECK: @llvm.x86.avx2.psll.d6920  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6921  return _mm256_mask_sll_epi32(__W, __U, __A, __B); 6922}6923 6924__m256i test_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B) {6925  // CHECK-LABEL: test_mm256_maskz_sll_epi326926  // CHECK: @llvm.x86.avx2.psll.d6927  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6928  return _mm256_maskz_sll_epi32(__U, __A, __B);6929}6930TEST_CONSTEXPR(match_v4si(_mm_mask_sll_epi32((__m128i)(__v4si){99, 99, 99, 99}, 0x5, (__m128i)(__v4si){1, 2, 3, 4}, (__m128i)(__v4si){1, 0, 0, 0}), 2, 99, 6, 99));6931TEST_CONSTEXPR(match_v4si(_mm_maskz_sll_epi32(0xA, (__m128i)(__v4si){1, 2, 3, 4}, (__m128i)(__v4si){1, 0, 0, 0}), 0, 4, 0, 8));6932TEST_CONSTEXPR(match_v8si(_mm256_mask_sll_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, 0x5A, (__m256i)(__v8si){0, 1, 2, 3, 4, 5, 6, 7}, (__m128i)(__v4si){1, 0, 0, 0}), 99, 2, 99, 6, 8, 99, 12, 99));6933TEST_CONSTEXPR(match_v8si(_mm256_maskz_sll_epi32(0xA5, (__m256i)(__v8si){0, 1, 2, 3, 4, 5, 6, 7}, (__m128i)(__v4si){1, 0, 0, 0}), 0, 0, 4, 0, 0, 10, 0, 14));6934 6935__m128i test_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A) {6936  // CHECK-LABEL: test_mm_mask_slli_epi326937  // CHECK: @llvm.x86.sse2.pslli.d6938  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6939  return _mm_mask_slli_epi32(__W, __U, __A, 5); 6940}6941 6942__m128i test_mm_mask_slli_epi32_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {6943  // CHECK-LABEL: test_mm_mask_slli_epi32_26944  // CHECK: @llvm.x86.sse2.pslli.d6945  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6946  return _mm_mask_slli_epi32(__W, __U, __A, __B); 6947}6948 6949__m128i test_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A) {6950  // CHECK-LABEL: test_mm_maskz_slli_epi326951  // CHECK: @llvm.x86.sse2.pslli.d6952  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6953  return _mm_maskz_slli_epi32(__U, __A, 5); 6954}6955 6956__m128i test_mm_maskz_slli_epi32_2(__mmask8 __U, __m128i __A, unsigned int __B) {6957  // CHECK-LABEL: test_mm_maskz_slli_epi32_26958  // CHECK: @llvm.x86.sse2.pslli.d6959  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}6960  return _mm_maskz_slli_epi32(__U, __A, __B); 6961}6962 6963__m256i test_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A) {6964  // CHECK-LABEL: test_mm256_mask_slli_epi326965  // CHECK: @llvm.x86.avx2.pslli.d6966  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6967  return _mm256_mask_slli_epi32(__W, __U, __A, 5); 6968}6969TEST_CONSTEXPR(match_v8si(_mm256_mask_slli_epi32((__m256i)(__v8si){100, 101, 102, 103, 104, 105, 106, 107}, (__mmask8)0xff, (__m256i)(__v8si){0, 1, 2, 3, 4, 5, 6, 7}, 3), 0x0, 0x8, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38));6970 6971__m256i test_mm256_mask_slli_epi32_2(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B) {6972  // CHECK-LABEL: test_mm256_mask_slli_epi32_26973  // CHECK: @llvm.x86.avx2.pslli.d6974  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6975  return _mm256_mask_slli_epi32(__W, __U, __A, __B); 6976}6977 6978__m256i test_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A) {6979  // CHECK-LABEL: test_mm256_maskz_slli_epi326980  // CHECK: @llvm.x86.avx2.pslli.d6981  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6982  return _mm256_maskz_slli_epi32(__U, __A, 5); 6983}6984TEST_CONSTEXPR(match_v8si(_mm256_maskz_slli_epi32((__mmask8)0x00ffcc71, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 32), 0, 0, 0, 0, 0, 0, 0, 0));6985TEST_CONSTEXPR(match_v8si(_mm256_maskz_slli_epi32((__mmask8)0, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 16), 0, 0, 0, 0, 0, 0, 0, 0));6986TEST_CONSTEXPR(match_v8si(_mm256_maskz_slli_epi32((__mmask8)0xff, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 1), 0x1fe, 0x2, 0x4, 0x6, 0x8, 0xa, 0xc, 0xe));6987TEST_CONSTEXPR(match_v8si(_mm256_maskz_slli_epi32((__mmask8)0x7, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 1), 0x1fe, 0x2, 0x4, 0, 0, 0, 0, 0));6988TEST_CONSTEXPR(match_v8si(_mm256_maskz_slli_epi32((__mmask8)0x71, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 1), 0x1fe, 0, 0, 0, 0x8, 0xa, 0xc, 0));6989 6990__m256i test_mm256_maskz_slli_epi32_2(__mmask8 __U, __m256i __A, unsigned int __B) {6991  // CHECK-LABEL: test_mm256_maskz_slli_epi32_26992  // CHECK: @llvm.x86.avx2.pslli.d6993  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}6994  return _mm256_maskz_slli_epi32(__U, __A, __B); 6995}6996 6997__m128i test_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {6998  // CHECK-LABEL: test_mm_mask_sll_epi646999  // CHECK: @llvm.x86.sse2.psll.q7000  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7001  return _mm_mask_sll_epi64(__W, __U, __A, __B); 7002}7003 7004__m128i test_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B) {7005  // CHECK-LABEL: test_mm_maskz_sll_epi647006  // CHECK: @llvm.x86.sse2.psll.q7007  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7008  return _mm_maskz_sll_epi64(__U, __A, __B); 7009}7010 7011__m256i test_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {7012  // CHECK-LABEL: test_mm256_mask_sll_epi647013  // CHECK: @llvm.x86.avx2.psll.q7014  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7015  return _mm256_mask_sll_epi64(__W, __U, __A, __B); 7016}7017 7018__m256i test_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B) {7019  // CHECK-LABEL: test_mm256_maskz_sll_epi647020  // CHECK: @llvm.x86.avx2.psll.q7021  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7022  return _mm256_maskz_sll_epi64(__U, __A, __B);7023}7024TEST_CONSTEXPR(match_v2di(_mm_mask_sll_epi64((__m128i)(__v2di){99, 99}, 0x1, (__m128i)(__v2di){1, 2}, (__m128i)(__v2di){1, 0}), 2, 99));7025TEST_CONSTEXPR(match_v2di(_mm_maskz_sll_epi64(0x2, (__m128i)(__v2di){1, 2}, (__m128i)(__v2di){1, 0}), 0, 4));7026TEST_CONSTEXPR(match_v4di(_mm256_mask_sll_epi64((__m256i)(__v4di){99, 99, 99, 99}, 0x5, (__m256i)(__v4di){0, 1, 2, 3}, (__m128i)(__v2di){1, 0}), 0, 99, 4, 99));7027TEST_CONSTEXPR(match_v4di(_mm256_maskz_sll_epi64(0xA, (__m256i)(__v4di){0, 1, 2, 3}, (__m128i)(__v2di){1, 0}), 0, 2, 0, 6));7028 7029__m128i test_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A) {7030  // CHECK-LABEL: test_mm_mask_slli_epi647031  // CHECK: @llvm.x86.sse2.pslli.q7032  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7033  return _mm_mask_slli_epi64(__W, __U, __A, 5); 7034}7035 7036__m128i test_mm_mask_slli_epi64_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {7037  // CHECK-LABEL: test_mm_mask_slli_epi64_27038  // CHECK: @llvm.x86.sse2.pslli.q7039  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7040  return _mm_mask_slli_epi64(__W, __U, __A, __B); 7041}7042 7043__m128i test_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A) {7044  // CHECK-LABEL: test_mm_maskz_slli_epi647045  // CHECK: @llvm.x86.sse2.pslli.q7046  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7047  return _mm_maskz_slli_epi64(__U, __A, 5); 7048}7049 7050__m128i test_mm_maskz_slli_epi64_2(__mmask8 __U, __m128i __A, unsigned int __B) {7051  // CHECK-LABEL: test_mm_maskz_slli_epi64_27052  // CHECK: @llvm.x86.sse2.pslli.q7053  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7054  return _mm_maskz_slli_epi64(__U, __A, __B); 7055}7056 7057__m256i test_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A) {7058  // CHECK-LABEL: test_mm256_mask_slli_epi647059  // CHECK: @llvm.x86.avx2.pslli.q7060  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7061  return _mm256_mask_slli_epi64(__W, __U, __A, 5); 7062}7063TEST_CONSTEXPR(match_v4di(_mm256_mask_slli_epi64((__m256i)(__v4di){100, 101, 102, 103}, (__mmask8)0b1010, (__m256i)(__v4di){0, 1, 2, 3}, 4), 100, 0x10, 102, 0x30));7064 7065__m256i test_mm256_mask_slli_epi64_2(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B) {7066  // CHECK-LABEL: test_mm256_mask_slli_epi64_27067  // CHECK: @llvm.x86.avx2.pslli.q7068  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7069  return _mm256_mask_slli_epi64(__W, __U, __A, __B); 7070}7071 7072__m256i test_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A) {7073  // CHECK-LABEL: test_mm256_maskz_slli_epi647074  // CHECK: @llvm.x86.avx2.pslli.q7075  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7076  return _mm256_maskz_slli_epi64(__U, __A, 5); 7077}7078TEST_CONSTEXPR(match_v4di(_mm256_maskz_slli_epi64((__mmask8)0x00ffcc71, (__m256i)(__v4di){0xff, 1, 2, 3}, 64), 0, 0, 0, 0));7079TEST_CONSTEXPR(match_v4di(_mm256_maskz_slli_epi64((__mmask8)0, (__m256i)(__v4di){0xff, 1, 2, 3}, 16), 0, 0, 0, 0));7080TEST_CONSTEXPR(match_v4di(_mm256_maskz_slli_epi64((__mmask8)0xff, (__m256i)(__v4di){0xff, 1, 2, 3}, 1), 0x1fe, 0x2, 0x4, 0x6));7081TEST_CONSTEXPR(match_v4di(_mm256_maskz_slli_epi64((__mmask8)0x7, (__m256i)(__v4di){0xff, 1, 2, 3}, 1), 0x1fe, 0x2, 0x4, 0));7082TEST_CONSTEXPR(match_v4di(_mm256_maskz_slli_epi64((__mmask8)0x71, (__m256i)(__v4di){0xff, 1, 2, 3}, 1), 0x1fe, 0, 0, 0));7083 7084__m256i test_mm256_maskz_slli_epi64_2(__mmask8 __U, __m256i __A, unsigned int __B) {7085  // CHECK-LABEL: test_mm256_maskz_slli_epi64_27086  // CHECK: @llvm.x86.avx2.pslli.q7087  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7088  return _mm256_maskz_slli_epi64(__U, __A, __B);7089}7090 7091__m128i test_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {7092  // CHECK-LABEL: test_mm_mask_srav_epi327093  // CHECK: @llvm.x86.avx2.psrav.d7094  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}7095  return _mm_mask_srav_epi32(__W, __U, __X, __Y); 7096}7097TEST_CONSTEXPR(match_v4si(_mm_mask_srav_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x0E, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 99, -1, 0, -1));7098 7099__m128i test_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {7100  // CHECK-LABEL: test_mm_maskz_srav_epi327101  // CHECK: @llvm.x86.avx2.psrav.d7102  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}7103  return _mm_maskz_srav_epi32(__U, __X, __Y); 7104}7105TEST_CONSTEXPR(match_v4si(_mm_maskz_srav_epi32((__mmask8)0xC, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 0, 0, 0, -1));7106 7107__m256i test_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {7108  // CHECK-LABEL: test_mm256_mask_srav_epi327109  // CHECK: @llvm.x86.avx2.psrav.d.2567110  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}7111  return _mm256_mask_srav_epi32(__W, __U, __X, __Y); 7112}7113TEST_CONSTEXPR(match_v8si(_mm256_mask_srav_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x3C, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 99, 99, 0, -1, 0, -1, 99, 99));7114 7115__m256i test_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {7116  // CHECK-LABEL: test_mm256_maskz_srav_epi327117  // CHECK: @llvm.x86.avx2.psrav.d.2567118  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}7119  return _mm256_maskz_srav_epi32(__U, __X, __Y); 7120}7121TEST_CONSTEXPR(match_v8si(_mm256_maskz_srav_epi32((__mmask8)0x9E, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 0, -1, 0, -1, 0, 0, 0, -1));7122 7123__m128i test_mm_srav_epi64(__m128i __X, __m128i __Y) {7124  // CHECK-LABEL: test_mm_srav_epi647125  // CHECK: @llvm.x86.avx512.psrav.q.1287126  return _mm_srav_epi64(__X, __Y); 7127}7128TEST_CONSTEXPR(match_v2di(_mm_srav_epi64((__m128i)(__v2di){ 4, 5}, (__m128i)(__v2di){ 1, 2}),  2, 1));7129 7130__m128i test_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {7131  // CHECK-LABEL: test_mm_mask_srav_epi647132  // CHECK: @llvm.x86.avx512.psrav.q.1287133  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7134  return _mm_mask_srav_epi64(__W, __U, __X, __Y); 7135}7136TEST_CONSTEXPR(match_v2di(_mm_mask_srav_epi64((__m128i)(__v2di){ 999, 999}, 0x0, (__m128i)(__v2di){ 4, 5}, (__m128i)(__v2di){ 1, 2}), 999, 999));7137 7138__m128i test_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {7139  // CHECK-LABEL: test_mm_maskz_srav_epi647140  // CHECK: @llvm.x86.avx512.psrav.q.1287141  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7142  return _mm_maskz_srav_epi64(__U, __X, __Y); 7143}7144TEST_CONSTEXPR(match_v2di(_mm_maskz_srav_epi64(0x0, (__m128i)(__v2di){ 4, 5}, (__m128i)(__v2di){ 1, 2}),  0, 0));7145 7146__m256i test_mm256_srav_epi64(__m256i __X, __m256i __Y) {7147  // CHECK-LABEL: test_mm256_srav_epi647148  // CHECK: @llvm.x86.avx512.psrav.q.2567149  return _mm256_srav_epi64(__X, __Y); 7150}7151TEST_CONSTEXPR(match_v4di(_mm256_srav_epi64((__m256i)(__v4di){ -8, 9, -10, -11}, (__m256i)(__v4di){ 1, 2, -3, -4}),  -4, 2, -1, -1));7152 7153__m256i test_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {7154  // CHECK-LABEL: test_mm256_mask_srav_epi647155  // CHECK: @llvm.x86.avx512.psrav.q.2567156  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7157  return _mm256_mask_srav_epi64(__W, __U, __X, __Y); 7158}7159TEST_CONSTEXPR(match_v4di(_mm256_mask_srav_epi64((__m256i)(__v4di){ 999, 999, 999, 999}, 0xA, (__m256i)(__v4di){ -8, 9, -10, -11}, (__m256i)(__v4di){ 1, 2, -3, -4}), 999, 2, 999, -1));7160 7161__m256i test_mm256_maskz_srav_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {7162  // CHECK-LABEL: test_mm256_maskz_srav_epi647163  // CHECK: @llvm.x86.avx512.psrav.q.2567164  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7165  return _mm256_maskz_srav_epi64(__U, __X, __Y); 7166}7167TEST_CONSTEXPR(match_v4di(_mm256_maskz_srav_epi64(0xA, (__m256i)(__v4di){ -8, 9, -10, -11}, (__m256i)(__v4di){ 1, 2, -3, -4}),  0, 2, 0, -1));7168 7169void test_mm_store_epi32(void *__P, __m128i __A) {7170  // CHECK-LABEL: test_mm_store_epi327171  // CHECK: store <2 x i64> %{{.*}}, ptr %{{.*}}7172  return _mm_store_epi32(__P, __A);7173}7174 7175void test_mm_mask_store_epi32(void *__P, __mmask8 __U, __m128i __A) {7176  // CHECK-LABEL: test_mm_mask_store_epi327177  // CHECK: @llvm.masked.store.v4i32.p0(<4 x i32> %{{.*}}, ptr align 16 %{{.}}, <4 x i1> %{{.*}})7178  return _mm_mask_store_epi32(__P, __U, __A); 7179}7180 7181void test_mm256_store_epi32(void *__P, __m256i __A) {7182  // CHECK-LABEL: test_mm256_store_epi327183  // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}7184  return _mm256_store_epi32(__P, __A);7185}7186 7187void test_mm256_mask_store_epi32(void *__P, __mmask8 __U, __m256i __A) {7188  // CHECK-LABEL: test_mm256_mask_store_epi327189  // CHECK: @llvm.masked.store.v8i32.p0(<8 x i32> %{{.*}}, ptr align 32 %{{.}}, <8 x i1> %{{.*}})7190  return _mm256_mask_store_epi32(__P, __U, __A); 7191}7192 7193__m128i test_mm_mask_mov_epi32(__m128i __W, __mmask8 __U, __m128i __A) {7194  // CHECK-LABEL: test_mm_mask_mov_epi327195  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}7196  return _mm_mask_mov_epi32(__W, __U, __A); 7197}7198 7199__m128i test_mm_maskz_mov_epi32(__mmask8 __U, __m128i __A) {7200  // CHECK-LABEL: test_mm_maskz_mov_epi327201  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}7202  return _mm_maskz_mov_epi32(__U, __A); 7203}7204 7205__m256i test_mm256_mask_mov_epi32(__m256i __W, __mmask8 __U, __m256i __A) {7206  // CHECK-LABEL: test_mm256_mask_mov_epi327207  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}7208  return _mm256_mask_mov_epi32(__W, __U, __A); 7209}7210 7211__m256i test_mm256_maskz_mov_epi32(__mmask8 __U, __m256i __A) {7212  // CHECK-LABEL: test_mm256_maskz_mov_epi327213  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}7214  return _mm256_maskz_mov_epi32(__U, __A); 7215}7216 7217__m128i test_mm_mask_mov_epi64(__m128i __W, __mmask8 __U, __m128i __A) {7218  // CHECK-LABEL: test_mm_mask_mov_epi647219  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7220  return _mm_mask_mov_epi64(__W, __U, __A); 7221}7222 7223__m128i test_mm_maskz_mov_epi64(__mmask8 __U, __m128i __A) {7224  // CHECK-LABEL: test_mm_maskz_mov_epi647225  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7226  return _mm_maskz_mov_epi64(__U, __A); 7227}7228 7229__m256i test_mm256_mask_mov_epi64(__m256i __W, __mmask8 __U, __m256i __A) {7230  // CHECK-LABEL: test_mm256_mask_mov_epi647231  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7232  return _mm256_mask_mov_epi64(__W, __U, __A); 7233}7234 7235__m256i test_mm256_maskz_mov_epi64(__mmask8 __U, __m256i __A) {7236  // CHECK-LABEL: test_mm256_maskz_mov_epi647237  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7238  return _mm256_maskz_mov_epi64(__U, __A); 7239}7240 7241__m128i test_mm_load_epi32(void const *__P) {7242  // CHECK-LABEL: test_mm_load_epi327243  // CHECK: load <2 x i64>, ptr %{{.*}}7244  return _mm_load_epi32(__P);7245}7246 7247__m128i test_mm_mask_load_epi32(__m128i __W, __mmask8 __U, void const *__P) {7248  // CHECK-LABEL: test_mm_mask_load_epi327249  // CHECK: @llvm.masked.load.v4i32.p0(ptr align 16 %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})7250  return _mm_mask_load_epi32(__W, __U, __P); 7251}7252 7253__m128i test_mm_maskz_load_epi32(__mmask8 __U, void const *__P) {7254  // CHECK-LABEL: test_mm_maskz_load_epi327255  // CHECK: @llvm.masked.load.v4i32.p0(ptr align 16 %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})7256  return _mm_maskz_load_epi32(__U, __P); 7257}7258 7259__m256i test_mm256_load_epi32(void const *__P) {7260  // CHECK-LABEL: test_mm256_load_epi327261  // CHECK: load <4 x i64>, ptr %{{.*}}7262  return _mm256_load_epi32(__P);7263}7264 7265__m256i test_mm256_mask_load_epi32(__m256i __W, __mmask8 __U, void const *__P) {7266  // CHECK-LABEL: test_mm256_mask_load_epi327267  // CHECK: @llvm.masked.load.v8i32.p0(ptr align 32 %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})7268  return _mm256_mask_load_epi32(__W, __U, __P); 7269}7270 7271__m256i test_mm256_maskz_load_epi32(__mmask8 __U, void const *__P) {7272  // CHECK-LABEL: test_mm256_maskz_load_epi327273  // CHECK: @llvm.masked.load.v8i32.p0(ptr align 32 %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})7274  return _mm256_maskz_load_epi32(__U, __P); 7275}7276 7277__m128i test_mm_load_epi64(void const *__P) {7278  // CHECK-LABEL: test_mm_load_epi647279  // CHECK: load <2 x i64>, ptr %{{.*}}7280  return _mm_load_epi64(__P);7281}7282 7283__m128i test_mm_mask_load_epi64(__m128i __W, __mmask8 __U, void const *__P) {7284  // CHECK-LABEL: test_mm_mask_load_epi647285  // CHECK: @llvm.masked.load.v2i64.p0(ptr align 16 %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})7286  return _mm_mask_load_epi64(__W, __U, __P); 7287}7288 7289__m128i test_mm_maskz_load_epi64(__mmask8 __U, void const *__P) {7290  // CHECK-LABEL: test_mm_maskz_load_epi647291  // CHECK: @llvm.masked.load.v2i64.p0(ptr align 16 %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})7292  return _mm_maskz_load_epi64(__U, __P); 7293}7294 7295__m256i test_mm256_load_epi64(void const *__P) {7296  // CHECK-LABEL: test_mm256_load_epi647297  // CHECK: load <4 x i64>, ptr %{{.*}}7298  return _mm256_load_epi64(__P);7299}7300 7301__m256i test_mm256_mask_load_epi64(__m256i __W, __mmask8 __U, void const *__P) {7302  // CHECK-LABEL: test_mm256_mask_load_epi647303  // CHECK: @llvm.masked.load.v4i64.p0(ptr align 32 %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})7304  return _mm256_mask_load_epi64(__W, __U, __P); 7305}7306 7307__m256i test_mm256_maskz_load_epi64(__mmask8 __U, void const *__P) {7308  // CHECK-LABEL: test_mm256_maskz_load_epi647309  // CHECK: @llvm.masked.load.v4i64.p0(ptr align 32 %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})7310  return _mm256_maskz_load_epi64(__U, __P); 7311}7312 7313void test_mm_store_epi64(void *__P, __m128i __A) {7314  // CHECK-LABEL: test_mm_store_epi647315  // CHECK: store <2 x i64> %{{.*}}, ptr %{{.*}}7316  return _mm_store_epi64(__P, __A);7317}7318 7319void test_mm_mask_store_epi64(void *__P, __mmask8 __U, __m128i __A) {7320  // CHECK-LABEL: test_mm_mask_store_epi647321  // CHECK: @llvm.masked.store.v2i64.p0(<2 x i64> %{{.*}}, ptr align 16 %{{.*}}, <2 x i1> %{{.*}})7322  return _mm_mask_store_epi64(__P, __U, __A); 7323}7324 7325void test_mm256_store_epi64(void *__P, __m256i __A) {7326  // CHECK-LABEL: test_mm256_store_epi647327  // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}7328  return _mm256_store_epi64(__P, __A);7329}7330 7331void test_mm256_mask_store_epi64(void *__P, __mmask8 __U, __m256i __A) {7332  // CHECK-LABEL: test_mm256_mask_store_epi647333  // CHECK: @llvm.masked.store.v4i64.p0(<4 x i64> %{{.*}}, ptr align 32 %{{.*}}, <4 x i1> %{{.*}})7334  return _mm256_mask_store_epi64(__P, __U, __A); 7335}7336 7337__m128d test_mm_mask_movedup_pd(__m128d __W, __mmask8 __U, __m128d __A) {7338  // CHECK-LABEL: test_mm_mask_movedup_pd7339  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer7340  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}7341  return _mm_mask_movedup_pd(__W, __U, __A); 7342}7343 7344__m128d test_mm_maskz_movedup_pd(__mmask8 __U, __m128d __A) {7345  // CHECK-LABEL: test_mm_maskz_movedup_pd7346  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> zeroinitializer7347  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}7348  return _mm_maskz_movedup_pd(__U, __A); 7349}7350 7351__m256d test_mm256_mask_movedup_pd(__m256d __W, __mmask8 __U, __m256d __A) {7352  // CHECK-LABEL: test_mm256_mask_movedup_pd7353  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>7354  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}7355  return _mm256_mask_movedup_pd(__W, __U, __A); 7356}7357 7358__m256d test_mm256_maskz_movedup_pd(__mmask8 __U, __m256d __A) {7359  // CHECK-LABEL: test_mm256_maskz_movedup_pd7360  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>7361  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}7362  return _mm256_maskz_movedup_pd(__U, __A); 7363}7364 7365__m128i test_mm_mask_set1_epi32(__m128i __O, __mmask8 __M) {7366  // CHECK-LABEL: test_mm_mask_set1_epi327367  // CHECK: insertelement <4 x i32> poison, i32 %{{.*}}, i32 07368  // CHECK: insertelement <4 x i32> %{{.*}}32 17369  // CHECK: insertelement <4 x i32> %{{.*}}32 27370  // CHECK: insertelement <4 x i32> %{{.*}}32 37371  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7372  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}  7373  return _mm_mask_set1_epi32(__O, __M, 5); 7374}7375 7376TEST_CONSTEXPR(match_v4si(_mm_mask_set1_epi32(_mm_setzero_si128(), 0xF, 7), 7, 7, 7, 7));7377 7378__m128i test_mm_maskz_set1_epi32(__mmask8 __M) {7379  // CHECK-LABEL: test_mm_maskz_set1_epi327380  // CHECK: insertelement <4 x i32> poison, i32 %{{.*}}, i32 07381  // CHECK: insertelement <4 x i32> %{{.*}}32 17382  // CHECK: insertelement <4 x i32> %{{.*}}32 27383  // CHECK: insertelement <4 x i32> %{{.*}}32 37384  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7385  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}  7386  return _mm_maskz_set1_epi32(__M, 5); 7387}7388 7389TEST_CONSTEXPR(match_v4si(_mm_maskz_set1_epi32(0xA, 11), 0, 11, 0, 11));7390 7391__m256i test_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M) {7392  // CHECK-LABEL: test_mm256_mask_set1_epi327393  // CHECK:  insertelement <8 x i32> poison, i32 %{{.*}}, i32 07394  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 17395  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 27396  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 37397  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 47398  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 57399  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 67400  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 77401  // CHECK:  select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}7402  return _mm256_mask_set1_epi32(__O, __M, 5); 7403}7404 7405TEST_CONSTEXPR(match_v8si(_mm256_mask_set1_epi32(_mm256_setzero_si256(), 0xAA, 5), 0, 5, 0, 5, 0, 5, 0, 5));7406 7407__m256i test_mm256_maskz_set1_epi32(__mmask8 __M) {7408  // CHECK-LABEL: test_mm256_maskz_set1_epi327409  // CHECK:  insertelement <8 x i32> poison, i32 %{{.*}}, i32 07410  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 17411  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 27412  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 37413  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 47414  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 57415  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 67416  // CHECK:  insertelement <8 x i32> %{{.*}}, i32 %{{.*}}, i32 77417  // CHECK:  select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}7418  return _mm256_maskz_set1_epi32(__M, 5); 7419}7420 7421TEST_CONSTEXPR(match_v8si(_mm256_maskz_set1_epi32(0xAA, 13), 0, 13, 0, 13, 0, 13, 0, 13));7422 7423__m128i test_mm_mask_set1_epi64(__m128i __O, __mmask8 __M, long long __A) {7424  // CHECK-LABEL: test_mm_mask_set1_epi647425  // CHECK: insertelement <2 x i64> poison, i64 %{{.*}}, i32 07426  // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 17427  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>7428  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7429  return _mm_mask_set1_epi64(__O, __M, __A); 7430}7431 7432TEST_CONSTEXPR(match_v2di(_mm_mask_set1_epi64(_mm_setzero_si128(), 0x3, 9), 9, 9));7433 7434__m128i test_mm_maskz_set1_epi64(__mmask8 __M, long long __A) {7435  // CHECK-LABEL: test_mm_maskz_set1_epi647436  // CHECK: insertelement <2 x i64> poison, i64 %{{.*}}, i32 07437  // CHECK: insertelement <2 x i64> %{{.*}}, i64 %{{.*}}, i32 17438  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>7439  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}7440  return _mm_maskz_set1_epi64(__M, __A); 7441}7442 7443TEST_CONSTEXPR(match_v2di(_mm_maskz_set1_epi64(0x2, 15), 0, 15));7444 7445__m256i test_mm256_mask_set1_epi64(__m256i __O, __mmask8 __M, long long __A) {7446  // CHECK-LABEL: test_mm256_mask_set1_epi647447  // CHECK: insertelement <4 x i64> poison, i64 %{{.*}}, i32 07448  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 17449  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 27450  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 37451  // CHECK:  shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7452  // CHECK:  select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7453  return _mm256_mask_set1_epi64(__O, __M, __A); 7454}7455 7456TEST_CONSTEXPR(match_v4di(_mm256_mask_set1_epi64(_mm256_setzero_si256(), 0xF, 11), 11, 11, 11, 11));7457 7458__m256i test_mm256_maskz_set1_epi64(__mmask8 __M, long long __A) {7459  // CHECK-LABEL: test_mm256_maskz_set1_epi647460  // CHECK: insertelement <4 x i64> poison, i64 %{{.*}}, i32 07461  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 17462  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 27463  // CHECK: insertelement <4 x i64> %{{.*}}, i64 %{{.*}}, i32 37464  // CHECK:  shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7465  // CHECK:  select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}7466  return _mm256_maskz_set1_epi64(__M, __A); 7467}7468 7469TEST_CONSTEXPR(match_v4di(_mm256_maskz_set1_epi64(0xA, 17), 0, 17, 0, 17));7470 7471__m128d test_mm_fixupimm_pd(__m128d __A, __m128d __B, __m128i __C) {7472  // CHECK-LABEL: test_mm_fixupimm_pd7473  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.1287474  return _mm_fixupimm_pd(__A, __B, __C, 5); 7475}7476 7477__m128d test_mm_mask_fixupimm_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) {7478  // CHECK-LABEL: test_mm_mask_fixupimm_pd7479  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.1287480  return _mm_mask_fixupimm_pd(__A, __U, __B, __C, 5); 7481}7482 7483__m128d test_mm_maskz_fixupimm_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) {7484  // CHECK-LABEL: test_mm_maskz_fixupimm_pd7485  // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.1287486  return _mm_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 7487}7488 7489__m256d test_mm256_fixupimm_pd(__m256d __A, __m256d __B, __m256i __C) {7490  // CHECK-LABEL: test_mm256_fixupimm_pd7491  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.2567492  return _mm256_fixupimm_pd(__A, __B, __C, 5); 7493}7494 7495__m256d test_mm256_mask_fixupimm_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256i __C) {7496  // CHECK-LABEL: test_mm256_mask_fixupimm_pd7497  // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.2567498  return _mm256_mask_fixupimm_pd(__A, __U, __B, __C, 5); 7499}7500 7501__m256d test_mm256_maskz_fixupimm_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256i __C) {7502  // CHECK-LABEL: test_mm256_maskz_fixupimm_pd7503  // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.2567504  return _mm256_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 7505}7506 7507__m128 test_mm_fixupimm_ps(__m128 __A, __m128 __B, __m128i __C) {7508  // CHECK-LABEL: test_mm_fixupimm_ps7509  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.1287510  return _mm_fixupimm_ps(__A, __B, __C, 5); 7511}7512 7513__m128 test_mm_mask_fixupimm_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) {7514  // CHECK-LABEL: test_mm_mask_fixupimm_ps7515  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.1287516  return _mm_mask_fixupimm_ps(__A, __U, __B, __C, 5); 7517}7518 7519__m128 test_mm_maskz_fixupimm_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) {7520  // CHECK-LABEL: test_mm_maskz_fixupimm_ps7521  // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.1287522  return _mm_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 7523}7524 7525__m256 test_mm256_fixupimm_ps(__m256 __A, __m256 __B, __m256i __C) {7526  // CHECK-LABEL: test_mm256_fixupimm_ps7527  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.2567528  return _mm256_fixupimm_ps(__A, __B, __C, 5); 7529}7530 7531__m256 test_mm256_mask_fixupimm_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256i __C) {7532  // CHECK-LABEL: test_mm256_mask_fixupimm_ps7533  // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.2567534  return _mm256_mask_fixupimm_ps(__A, __U, __B, __C, 5); 7535}7536 7537__m256 test_mm256_maskz_fixupimm_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256i __C) {7538  // CHECK-LABEL: test_mm256_maskz_fixupimm_ps7539  // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.2567540  return _mm256_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 7541}7542 7543__m128d test_mm_mask_load_pd(__m128d __W, __mmask8 __U, void const *__P) {7544  // CHECK-LABEL: test_mm_mask_load_pd7545  // CHECK: @llvm.masked.load.v2f64.p0(ptr align 16 %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})7546  return _mm_mask_load_pd(__W, __U, __P); 7547}7548 7549__m128d test_mm_maskz_load_pd(__mmask8 __U, void const *__P) {7550  // CHECK-LABEL: test_mm_maskz_load_pd7551  // CHECK: @llvm.masked.load.v2f64.p0(ptr align 16 %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})7552  return _mm_maskz_load_pd(__U, __P); 7553}7554 7555__m256d test_mm256_mask_load_pd(__m256d __W, __mmask8 __U, void const *__P) {7556  // CHECK-LABEL: test_mm256_mask_load_pd7557  // CHECK: @llvm.masked.load.v4f64.p0(ptr align 32 %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})7558  return _mm256_mask_load_pd(__W, __U, __P); 7559}7560 7561__m256d test_mm256_maskz_load_pd(__mmask8 __U, void const *__P) {7562  // CHECK-LABEL: test_mm256_maskz_load_pd7563  // CHECK: @llvm.masked.load.v4f64.p0(ptr align 32 %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})7564  return _mm256_maskz_load_pd(__U, __P); 7565}7566 7567__m128 test_mm_mask_load_ps(__m128 __W, __mmask8 __U, void const *__P) {7568  // CHECK-LABEL: test_mm_mask_load_ps7569  // CHECK: @llvm.masked.load.v4f32.p0(ptr align 16 %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})7570  return _mm_mask_load_ps(__W, __U, __P); 7571}7572 7573__m128 test_mm_maskz_load_ps(__mmask8 __U, void const *__P) {7574  // CHECK-LABEL: test_mm_maskz_load_ps7575  // CHECK: @llvm.masked.load.v4f32.p0(ptr align 16 %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})7576  return _mm_maskz_load_ps(__U, __P); 7577}7578 7579__m256 test_mm256_mask_load_ps(__m256 __W, __mmask8 __U, void const *__P) {7580  // CHECK-LABEL: test_mm256_mask_load_ps7581  // CHECK: @llvm.masked.load.v8f32.p0(ptr align 32 %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})7582  return _mm256_mask_load_ps(__W, __U, __P); 7583}7584 7585__m256 test_mm256_maskz_load_ps(__mmask8 __U, void const *__P) {7586  // CHECK-LABEL: test_mm256_maskz_load_ps7587  // CHECK: @llvm.masked.load.v8f32.p0(ptr align 32 %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})7588  return _mm256_maskz_load_ps(__U, __P); 7589}7590 7591__m128i test_mm_loadu_epi64(void const *__P) {7592  // CHECK-LABEL: test_mm_loadu_epi647593  // CHECK: load <2 x i64>, ptr %{{.*}}, align 1{{$}}7594  return _mm_loadu_epi64(__P);7595}7596 7597__m128i test_mm_mask_loadu_epi64(__m128i __W, __mmask8 __U, void const *__P) {7598  // CHECK-LABEL: test_mm_mask_loadu_epi647599  // CHECK: @llvm.masked.load.v2i64.p0(ptr align 1 %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})7600  return _mm_mask_loadu_epi64(__W, __U, __P); 7601}7602 7603__m128i test_mm_maskz_loadu_epi64(__mmask8 __U, void const *__P) {7604  // CHECK-LABEL: test_mm_maskz_loadu_epi647605  // CHECK: @llvm.masked.load.v2i64.p0(ptr align 1 %{{.*}}, <2 x i1> %{{.*}}, <2 x i64> %{{.*}})7606  return _mm_maskz_loadu_epi64(__U, __P); 7607}7608 7609__m256i test_mm256_loadu_epi64(void const *__P) {7610  // CHECK-LABEL: test_mm256_loadu_epi647611  // CHECK: load <4 x i64>, ptr %{{.*}}, align 1{{$}}7612  return _mm256_loadu_epi64(__P);7613}7614 7615__m256i test_mm256_mask_loadu_epi64(__m256i __W, __mmask8 __U, void const *__P) {7616  // CHECK-LABEL: test_mm256_mask_loadu_epi647617  // CHECK: @llvm.masked.load.v4i64.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})7618  return _mm256_mask_loadu_epi64(__W, __U, __P); 7619}7620 7621__m256i test_mm256_maskz_loadu_epi64(__mmask8 __U, void const *__P) {7622  // CHECK-LABEL: test_mm256_maskz_loadu_epi647623  // CHECK: @llvm.masked.load.v4i64.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x i64> %{{.*}})7624  return _mm256_maskz_loadu_epi64(__U, __P); 7625}7626 7627__m128i test_mm_loadu_epi32(void const *__P) {7628  // CHECK-LABEL: test_mm_loadu_epi327629  // CHECK: load <2 x i64>, ptr %{{.*}}, align 1{{$}}7630  return _mm_loadu_epi32(__P);7631}7632 7633__m128i test_mm_mask_loadu_epi32(__m128i __W, __mmask8 __U, void const *__P) {7634  // CHECK-LABEL: test_mm_mask_loadu_epi327635  // CHECK: @llvm.masked.load.v4i32.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})7636  return _mm_mask_loadu_epi32(__W, __U, __P); 7637}7638 7639__m128i test_mm_maskz_loadu_epi32(__mmask8 __U, void const *__P) {7640  // CHECK-LABEL: test_mm_maskz_loadu_epi327641  // CHECK: @llvm.masked.load.v4i32.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x i32> %{{.*}})7642  return _mm_maskz_loadu_epi32(__U, __P); 7643}7644 7645__m256i test_mm256_loadu_epi32(void const *__P) {7646  // CHECK-LABEL: test_mm256_loadu_epi327647  // CHECK: load <4 x i64>, ptr %{{.*}}, align 1{{$}}7648  return _mm256_loadu_epi32(__P);7649}7650 7651__m256i test_mm256_mask_loadu_epi32(__m256i __W, __mmask8 __U, void const *__P) {7652  // CHECK-LABEL: test_mm256_mask_loadu_epi327653  // CHECK: @llvm.masked.load.v8i32.p0(ptr align 1 %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})7654  return _mm256_mask_loadu_epi32(__W, __U, __P); 7655}7656 7657__m256i test_mm256_maskz_loadu_epi32(__mmask8 __U, void const *__P) {7658  // CHECK-LABEL: test_mm256_maskz_loadu_epi327659  // CHECK: @llvm.masked.load.v8i32.p0(ptr align 1 %{{.*}}, <8 x i1> %{{.*}}, <8 x i32> %{{.*}})7660  return _mm256_maskz_loadu_epi32(__U, __P); 7661}7662 7663__m128d test_mm_mask_loadu_pd(__m128d __W, __mmask8 __U, void const *__P) {7664  // CHECK-LABEL: test_mm_mask_loadu_pd7665  // CHECK: @llvm.masked.load.v2f64.p0(ptr align 1 %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})7666  return _mm_mask_loadu_pd(__W, __U, __P); 7667}7668 7669__m128d test_mm_maskz_loadu_pd(__mmask8 __U, void const *__P) {7670  // CHECK-LABEL: test_mm_maskz_loadu_pd7671  // CHECK: @llvm.masked.load.v2f64.p0(ptr align 1 %{{.*}}, <2 x i1> %{{.*}}, <2 x double> %{{.*}})7672  return _mm_maskz_loadu_pd(__U, __P); 7673}7674 7675__m256d test_mm256_mask_loadu_pd(__m256d __W, __mmask8 __U, void const *__P) {7676  // CHECK-LABEL: test_mm256_mask_loadu_pd7677  // CHECK: @llvm.masked.load.v4f64.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})7678  return _mm256_mask_loadu_pd(__W, __U, __P); 7679}7680 7681__m256d test_mm256_maskz_loadu_pd(__mmask8 __U, void const *__P) {7682  // CHECK-LABEL: test_mm256_maskz_loadu_pd7683  // CHECK: @llvm.masked.load.v4f64.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x double> %{{.*}})7684  return _mm256_maskz_loadu_pd(__U, __P); 7685}7686 7687__m128 test_mm_mask_loadu_ps(__m128 __W, __mmask8 __U, void const *__P) {7688  // CHECK-LABEL: test_mm_mask_loadu_ps7689  // CHECK: @llvm.masked.load.v4f32.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})7690  return _mm_mask_loadu_ps(__W, __U, __P); 7691}7692 7693__m128 test_mm_maskz_loadu_ps(__mmask8 __U, void const *__P) {7694  // CHECK-LABEL: test_mm_maskz_loadu_ps7695  // CHECK: @llvm.masked.load.v4f32.p0(ptr align 1 %{{.*}}, <4 x i1> %{{.*}}, <4 x float> %{{.*}})7696  return _mm_maskz_loadu_ps(__U, __P); 7697}7698 7699__m256 test_mm256_mask_loadu_ps(__m256 __W, __mmask8 __U, void const *__P) {7700  // CHECK-LABEL: test_mm256_mask_loadu_ps7701  // CHECK: @llvm.masked.load.v8f32.p0(ptr align 1 %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})7702  return _mm256_mask_loadu_ps(__W, __U, __P); 7703}7704 7705__m256 test_mm256_maskz_loadu_ps(__mmask8 __U, void const *__P) {7706  // CHECK-LABEL: test_mm256_maskz_loadu_ps7707  // CHECK: @llvm.masked.load.v8f32.p0(ptr align 1 %{{.*}}, <8 x i1> %{{.*}}, <8 x float> %{{.*}})7708  return _mm256_maskz_loadu_ps(__U, __P); 7709}7710 7711void test_mm_mask_store_pd(void *__P, __mmask8 __U, __m128d __A) {7712  // CHECK-LABEL: test_mm_mask_store_pd7713  // CHECK: @llvm.masked.store.v2f64.p0(<2 x double> %{{.*}}, ptr align 16 %{{.*}}, <2 x i1> %{{.*}})7714  return _mm_mask_store_pd(__P, __U, __A); 7715}7716 7717void test_mm256_mask_store_pd(void *__P, __mmask8 __U, __m256d __A) {7718  // CHECK-LABEL: test_mm256_mask_store_pd7719  // CHECK: @llvm.masked.store.v4f64.p0(<4 x double> %{{.*}}, ptr align 32 %{{.*}}, <4 x i1> %{{.*}})7720  return _mm256_mask_store_pd(__P, __U, __A); 7721}7722 7723void test_mm_mask_store_ps(void *__P, __mmask8 __U, __m128 __A) {7724  // CHECK-LABEL: test_mm_mask_store_ps7725  // CHECK: @llvm.masked.store.v4f32.p0(<4 x float> %{{.*}}, ptr align 16 %{{.*}}, <4 x i1> %{{.*}})7726  return _mm_mask_store_ps(__P, __U, __A); 7727}7728 7729void test_mm256_mask_store_ps(void *__P, __mmask8 __U, __m256 __A) {7730  // CHECK-LABEL: test_mm256_mask_store_ps7731  // CHECK: @llvm.masked.store.v8f32.p0(<8 x float> %{{.*}}, ptr align 32 %{{.*}}, <8 x i1> %{{.*}})7732  return _mm256_mask_store_ps(__P, __U, __A); 7733}7734 7735void test_mm_storeu_epi64(void *__p, __m128i __a) {7736  // CHECK-LABEL: test_mm_storeu_epi647737  // check: store <2 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}7738  return _mm_storeu_epi64(__p, __a);7739}7740 7741void test_mm_mask_storeu_epi64(void *__P, __mmask8 __U, __m128i __A) {7742  // CHECK-LABEL: test_mm_mask_storeu_epi647743  // CHECK: @llvm.masked.store.v2i64.p0(<2 x i64> %{{.*}}, ptr align 1 %{{.*}}, <2 x i1> %{{.*}})7744  return _mm_mask_storeu_epi64(__P, __U, __A); 7745}7746 7747void test_mm256_storeu_epi64(void *__P, __m256i __A) {7748  // CHECK-LABEL: test_mm256_storeu_epi647749  // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}7750  return _mm256_storeu_epi64(__P, __A);7751}7752 7753void test_mm256_mask_storeu_epi64(void *__P, __mmask8 __U, __m256i __A) {7754  // CHECK-LABEL: test_mm256_mask_storeu_epi647755  // CHECK: @llvm.masked.store.v4i64.p0(<4 x i64> %{{.*}}, ptr align 1 %{{.*}}, <4 x i1> %{{.*}})7756  return _mm256_mask_storeu_epi64(__P, __U, __A); 7757}7758 7759void test_mm_storeu_epi32(void *__P, __m128i __A) {7760  // CHECK-LABEL: test_mm_storeu_epi327761  // CHECK: store <2 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}7762  return _mm_storeu_epi32(__P, __A);7763}7764 7765void test_mm_mask_storeu_epi32(void *__P, __mmask8 __U, __m128i __A) {7766  // CHECK-LABEL: test_mm_mask_storeu_epi327767  // CHECK: @llvm.masked.store.v4i32.p0(<4 x i32> %{{.*}}, ptr align 1 %{{.*}}, <4 x i1> %{{.*}})7768  return _mm_mask_storeu_epi32(__P, __U, __A); 7769}7770 7771void test_mm256_storeu_epi32(void *__P, __m256i __A) {7772  // CHECK-LABEL: test_mm256_storeu_epi327773  // CHECK: store <4 x i64> %{{.*}}, ptr %{{.*}}, align 1{{$}}7774  return _mm256_storeu_epi32(__P, __A);7775}7776 7777void test_mm256_mask_storeu_epi32(void *__P, __mmask8 __U, __m256i __A) {7778  // CHECK-LABEL: test_mm256_mask_storeu_epi327779  // CHECK: @llvm.masked.store.v8i32.p0(<8 x i32> %{{.*}}, ptr align 1 %{{.*}}, <8 x i1> %{{.*}})7780  return _mm256_mask_storeu_epi32(__P, __U, __A); 7781}7782 7783void test_mm_mask_storeu_pd(void *__P, __mmask8 __U, __m128d __A) {7784  // CHECK-LABEL: test_mm_mask_storeu_pd7785  // CHECK: @llvm.masked.store.v2f64.p0(<2 x double> %{{.*}}, ptr align 1 %{{.*}}, <2 x i1> %{{.*}})7786  return _mm_mask_storeu_pd(__P, __U, __A); 7787}7788 7789void test_mm256_mask_storeu_pd(void *__P, __mmask8 __U, __m256d __A) {7790  // CHECK-LABEL: test_mm256_mask_storeu_pd7791  // CHECK: @llvm.masked.store.v4f64.p0(<4 x double> %{{.*}}, ptr align 1 %{{.*}}, <4 x i1> %{{.*}})7792  return _mm256_mask_storeu_pd(__P, __U, __A); 7793}7794 7795void test_mm_mask_storeu_ps(void *__P, __mmask8 __U, __m128 __A) {7796  // CHECK-LABEL: test_mm_mask_storeu_ps7797  // CHECK: @llvm.masked.store.v4f32.p0(<4 x float> %{{.*}}, ptr align 1 %{{.*}}, <4 x i1> %{{.*}})7798  return _mm_mask_storeu_ps(__P, __U, __A); 7799}7800 7801void test_mm256_mask_storeu_ps(void *__P, __mmask8 __U, __m256 __A) {7802  // CHECK-LABEL: test_mm256_mask_storeu_ps7803  // CHECK: @llvm.masked.store.v8f32.p0(<8 x float> %{{.*}}, ptr align 1 %{{.*}}, <8 x i1> %{{.*}})7804  return _mm256_mask_storeu_ps(__P, __U, __A); 7805}7806 7807__m128d test_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {7808  // CHECK-LABEL: test_mm_mask_unpackhi_pd7809  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>7810  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}7811  return _mm_mask_unpackhi_pd(__W, __U, __A, __B); 7812}7813 7814TEST_CONSTEXPR(match_m128d(_mm_mask_unpackhi_pd(_mm_setzero_pd(), 0x3, (__m128d)(__v2df){1.0,2.0}, (__m128d)(__v2df){3.0,4.0}), 2.0,4.0));7815 7816__m128d test_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B) {7817  // CHECK-LABEL: test_mm_maskz_unpackhi_pd7818  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>7819  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}7820  return _mm_maskz_unpackhi_pd(__U, __A, __B); 7821}7822 7823__m256d test_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {7824  // CHECK-LABEL: test_mm256_mask_unpackhi_pd7825  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7826  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}7827  return _mm256_mask_unpackhi_pd(__W, __U, __A, __B); 7828}7829 7830TEST_CONSTEXPR(match_m256d(_mm256_mask_unpackhi_pd(_mm256_setzero_pd(), 0xAA, (__m256d)(__v4df){1.0,2.0,3.0,4.0}, (__m256d)(__v4df){5.0,6.0,7.0,8.0}), 0,6.0,0,8.0));7831 7832__m256d test_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B) {7833  // CHECK-LABEL: test_mm256_maskz_unpackhi_pd7834  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>7835  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}7836  return _mm256_maskz_unpackhi_pd(__U, __A, __B); 7837}7838 7839__m128 test_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {7840  // CHECK-LABEL: test_mm_mask_unpackhi_ps7841  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>7842  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}7843  return _mm_mask_unpackhi_ps(__W, __U, __A, __B); 7844}7845 7846__m128 test_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B) {7847  // CHECK-LABEL: test_mm_maskz_unpackhi_ps7848  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>7849  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}} <4 x float> %{{.*}}7850  return _mm_maskz_unpackhi_ps(__U, __A, __B); 7851}7852 7853__m256 test_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {7854  // CHECK-LABEL: test_mm256_mask_unpackhi_ps7855  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>7856  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}7857  return _mm256_mask_unpackhi_ps(__W, __U, __A, __B); 7858}7859 7860__m256 test_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B) {7861  // CHECK-LABEL: test_mm256_maskz_unpackhi_ps7862  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>7863  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}7864  return _mm256_maskz_unpackhi_ps(__U, __A, __B); 7865}7866 7867__m128d test_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {7868  // CHECK-LABEL: test_mm_mask_unpacklo_pd7869  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>7870  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}7871  return _mm_mask_unpacklo_pd(__W, __U, __A, __B); 7872}7873 7874TEST_CONSTEXPR(match_m128d(_mm_mask_unpacklo_pd(_mm_setzero_pd(), 0x3, (__m128d)(__v2df){1.0,2.0}, (__m128d)(__v2df){3.0,4.0}), 1.0,3.0));7875 7876__m128d test_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B) {7877  // CHECK-LABEL: test_mm_maskz_unpacklo_pd7878  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 0, i32 2>7879  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}7880  return _mm_maskz_unpacklo_pd(__U, __A, __B); 7881}7882 7883TEST_CONSTEXPR(match_m128d(_mm_maskz_unpacklo_pd(0x2, (__m128d)(__v2df){1.0,2.0}, (__m128d)(__v2df){3.0,4.0}), 0.0,3.0));7884 7885__m256d test_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {7886  // CHECK-LABEL: test_mm256_mask_unpacklo_pd7887  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>7888  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}7889  return _mm256_mask_unpacklo_pd(__W, __U, __A, __B); 7890}7891 7892TEST_CONSTEXPR(match_m256d(_mm256_mask_unpacklo_pd(_mm256_setzero_pd(), 0xAA, (__m256d)(__v4df){1.0,2.0,3.0,4.0}, (__m256d)(__v4df){5.0,6.0,7.0,8.0}), 0,5.0,0,7.0));7893 7894__m256d test_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B) {7895  // CHECK-LABEL: test_mm256_maskz_unpacklo_pd7896  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>7897  // CHECK: select <4 x i1> %{{.*}} <4 x double> %{{.*}}, <4 x double> %{{.*}}7898  return _mm256_maskz_unpacklo_pd(__U, __A, __B); 7899}7900 7901TEST_CONSTEXPR(match_m256d(_mm256_maskz_unpacklo_pd(0x0A, (__m256d)(__v4df){1.0,2.0,3.0,4.0}, (__m256d)(__v4df){5.0,6.0,7.0,8.0}), 0.0,5.0,0.0,7.0));7902 7903__m128 test_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {7904  // CHECK-LABEL: test_mm_mask_unpacklo_ps7905  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>7906  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}7907  return _mm_mask_unpacklo_ps(__W, __U, __A, __B); 7908}7909 7910__m128 test_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B) {7911  // CHECK-LABEL: test_mm_maskz_unpacklo_ps7912  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>7913  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}7914  return _mm_maskz_unpacklo_ps(__U, __A, __B); 7915}7916 7917__m256 test_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {7918  // CHECK-LABEL: test_mm256_mask_unpacklo_ps7919  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>7920  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}7921  return _mm256_mask_unpacklo_ps(__W, __U, __A, __B); 7922}7923 7924__m256 test_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B) {7925  // CHECK-LABEL: test_mm256_maskz_unpacklo_ps7926  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>7927  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}7928  return _mm256_maskz_unpacklo_ps(__U, __A, __B); 7929}7930 7931__m128d test_mm_rcp14_pd(__m128d __A) {7932  // CHECK-LABEL: test_mm_rcp14_pd7933  // CHECK: @llvm.x86.avx512.rcp14.pd.1287934  return _mm_rcp14_pd(__A); 7935}7936 7937__m128d test_mm_mask_rcp14_pd(__m128d __W, __mmask8 __U, __m128d __A) {7938  // CHECK-LABEL: test_mm_mask_rcp14_pd7939  // CHECK: @llvm.x86.avx512.rcp14.pd.1287940  return _mm_mask_rcp14_pd(__W, __U, __A); 7941}7942 7943__m128d test_mm_maskz_rcp14_pd(__mmask8 __U, __m128d __A) {7944  // CHECK-LABEL: test_mm_maskz_rcp14_pd7945  // CHECK: @llvm.x86.avx512.rcp14.pd.1287946  return _mm_maskz_rcp14_pd(__U, __A); 7947}7948 7949__m256d test_mm256_rcp14_pd(__m256d __A) {7950  // CHECK-LABEL: test_mm256_rcp14_pd7951  // CHECK: @llvm.x86.avx512.rcp14.pd.2567952  return _mm256_rcp14_pd(__A); 7953}7954 7955__m256d test_mm256_mask_rcp14_pd(__m256d __W, __mmask8 __U, __m256d __A) {7956  // CHECK-LABEL: test_mm256_mask_rcp14_pd7957  // CHECK: @llvm.x86.avx512.rcp14.pd.2567958  return _mm256_mask_rcp14_pd(__W, __U, __A); 7959}7960 7961__m256d test_mm256_maskz_rcp14_pd(__mmask8 __U, __m256d __A) {7962  // CHECK-LABEL: test_mm256_maskz_rcp14_pd7963  // CHECK: @llvm.x86.avx512.rcp14.pd.2567964  return _mm256_maskz_rcp14_pd(__U, __A); 7965}7966 7967__m128 test_mm_rcp14_ps(__m128 __A) {7968  // CHECK-LABEL: test_mm_rcp14_ps7969  // CHECK: @llvm.x86.avx512.rcp14.ps.1287970  return _mm_rcp14_ps(__A); 7971}7972 7973__m128 test_mm_mask_rcp14_ps(__m128 __W, __mmask8 __U, __m128 __A) {7974  // CHECK-LABEL: test_mm_mask_rcp14_ps7975  // CHECK: @llvm.x86.avx512.rcp14.ps.1287976  return _mm_mask_rcp14_ps(__W, __U, __A); 7977}7978 7979__m128 test_mm_maskz_rcp14_ps(__mmask8 __U, __m128 __A) {7980  // CHECK-LABEL: test_mm_maskz_rcp14_ps7981  // CHECK: @llvm.x86.avx512.rcp14.ps.1287982  return _mm_maskz_rcp14_ps(__U, __A); 7983}7984 7985__m256 test_mm256_rcp14_ps(__m256 __A) {7986  // CHECK-LABEL: test_mm256_rcp14_ps7987  // CHECK: @llvm.x86.avx512.rcp14.ps.2567988  return _mm256_rcp14_ps(__A); 7989}7990 7991__m256 test_mm256_mask_rcp14_ps(__m256 __W, __mmask8 __U, __m256 __A) {7992  // CHECK-LABEL: test_mm256_mask_rcp14_ps7993  // CHECK: @llvm.x86.avx512.rcp14.ps.2567994  return _mm256_mask_rcp14_ps(__W, __U, __A); 7995}7996 7997__m256 test_mm256_maskz_rcp14_ps(__mmask8 __U, __m256 __A) {7998  // CHECK-LABEL: test_mm256_maskz_rcp14_ps7999  // CHECK: @llvm.x86.avx512.rcp14.ps.2568000  return _mm256_maskz_rcp14_ps(__U, __A); 8001}8002 8003__m128d test_mm_mask_permute_pd(__m128d __W, __mmask8 __U, __m128d __X) {8004  // CHECK-LABEL: test_mm_mask_permute_pd8005  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> poison, <2 x i32> <i32 1, i32 0>8006  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}8007  return _mm_mask_permute_pd(__W, __U, __X, 1); 8008}8009TEST_CONSTEXPR(match_m128d(_mm_mask_permute_pd(8010  ((__m128d){0.0, 1.0}),8011  (__mmask8)0b10,8012  ((__m128d){2.0, 3.0}),8013  1),8014  0.0, 2.08015));8016 8017__m128d test_mm_maskz_permute_pd(__mmask8 __U, __m128d __X) {8018  // CHECK-LABEL: test_mm_maskz_permute_pd8019  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> poison, <2 x i32> <i32 1, i32 0>8020  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}8021  return _mm_maskz_permute_pd(__U, __X, 1); 8022}8023TEST_CONSTEXPR(match_m128d(_mm_maskz_permute_pd(8024  (__mmask8)0b10,8025  ((__m128d){1.0, 2.0}),8026  1),8027  0.0, 1.08028));8029 8030__m256d test_mm256_mask_permute_pd(__m256d __W, __mmask8 __U, __m256d __X) {8031  // CHECK-LABEL: test_mm256_mask_permute_pd8032  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <4 x i32> <i32 1, i32 0, i32 3, i32 2>8033  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}8034  return _mm256_mask_permute_pd(__W, __U, __X, 5); 8035}8036TEST_CONSTEXPR(match_m256d(_mm256_mask_permute_pd(8037  ((__m256d){0.0, 1.0, 2.0, 3.0}),8038  (__mmask8)0b1010,8039  ((__m256d){4.0, 5.0, 6.0, 7.0}),8040  5),8041  0.0, 4.0, 2.0, 6.08042));8043 8044__m256d test_mm256_maskz_permute_pd(__mmask8 __U, __m256d __X) {8045  // CHECK-LABEL: test_mm256_maskz_permute_pd8046  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <4 x i32> <i32 1, i32 0, i32 3, i32 2>8047  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}8048  return _mm256_maskz_permute_pd(__U, __X, 5); 8049}8050TEST_CONSTEXPR(match_m256d(_mm256_maskz_permute_pd(8051  (__mmask8)0b1010,8052  ((__m256d){4.0, 5.0, 6.0, 7.0}),8053  5),8054  0.0, 4.0, 0.0, 6.08055));8056 8057__m128 test_mm_mask_permute_ps(__m128 __W, __mmask8 __U, __m128 __X) {8058  // CHECK-LABEL: test_mm_mask_permute_ps8059  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>8060  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}8061  return _mm_mask_permute_ps(__W, __U, __X, 0x1b); 8062}8063TEST_CONSTEXPR(match_m128(_mm_mask_permute_ps(8064  ((__m128){0.0, 1.0, 2.0, 3.0}),8065  (__mmask8)0b1010,8066  ((__m128){4.0, 5.0, 6.0, 7.0}),8067  0x1b),8068  0, 6.0, 2.0, 4.08069));8070 8071__m128 test_mm_maskz_permute_ps(__mmask8 __U, __m128 __X) {8072  // CHECK-LABEL: test_mm_maskz_permute_ps8073  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>8074  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}8075  return _mm_maskz_permute_ps(__U, __X, 0x1b); 8076}8077TEST_CONSTEXPR(match_m128(_mm_maskz_permute_ps(8078  (__mmask8)0b1010,8079  ((__m128){4.0, 5.0, 6.0, 7.0}),8080  0x1b),8081  0.0, 6.0, 0.0, 4.08082));8083 8084 8085__m256 test_mm256_mask_permute_ps(__m256 __W, __mmask8 __U, __m256 __X) {8086  // CHECK-LABEL: test_mm256_mask_permute_ps8087  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> poison, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>8088  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}8089  return _mm256_mask_permute_ps(__W, __U, __X, 0x1b); 8090}8091TEST_CONSTEXPR(match_m256(_mm256_mask_permute_ps(8092  ((__m256){0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}),8093  (__mmask8)0b10101010,8094  ((__m256){8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0}),8095  0x1b),8096  0.0, 10.0, 2.0, 8.0, 4.0, 14.0, 6.0, 12.08097));8098 8099__m256 test_mm256_maskz_permute_ps(__mmask8 __U, __m256 __X) {8100  // CHECK-LABEL: test_mm256_maskz_permute_ps8101  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> poison, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 7, i32 6, i32 5, i32 4>8102  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}8103  return _mm256_maskz_permute_ps(__U, __X, 0x1b); 8104}8105TEST_CONSTEXPR(match_m256(_mm256_maskz_permute_ps(8106  (__mmask8)0b10101010,8107  ((__m256){8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0}),8108  0x1b),8109  0.0, 10.0, 0.0, 8.0, 0.0, 14.0, 0.0, 12.08110));8111 8112__m128d test_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C) {8113  // CHECK-LABEL: test_mm_mask_permutevar_pd8114  // CHECK: @llvm.x86.avx.vpermilvar.pd8115  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}8116  return _mm_mask_permutevar_pd(__W, __U, __A, __C); 8117}8118TEST_CONSTEXPR(match_m128d(8119  _mm_mask_permutevar_pd(8120    ((__m128d){3.0, 4.0}),8121    (__mmask8)0b01,8122    ((__m128d){0.0, 1.0}),8123    ((__m128i){0b10, 0b00})8124  ),8125  1.0, 4.08126));8127 8128__m128d test_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C) {8129  // CHECK-LABEL: test_mm_maskz_permutevar_pd8130  // CHECK: @llvm.x86.avx.vpermilvar.pd8131  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}8132  return _mm_maskz_permutevar_pd(__U, __A, __C); 8133}8134TEST_CONSTEXPR(match_m128d(8135  _mm_maskz_permutevar_pd(8136    (__mmask8)0b01,8137    ((__m128d){0.0, 1.0}),8138    ((__m128i){0b10, 0b00})8139  ),8140  1.0, 0.08141));8142 8143__m256d test_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C) {8144  // CHECK-LABEL: test_mm256_mask_permutevar_pd8145  // CHECK: @llvm.x86.avx.vpermilvar.pd.2568146  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}8147  return _mm256_mask_permutevar_pd(__W, __U, __A, __C); 8148}8149TEST_CONSTEXPR(match_m256d(8150  _mm256_mask_permutevar_pd(8151    ((__m256d){4.0, 5.0, 6.0, 7.0}),8152    (__mmask8)0b0101,8153    ((__m256d){0.0, 1.0, 2.0, 3.0}),8154    ((__m256i){0b10, 0b00, 0b00, 0b10})8155  ),8156  1.0, 5.0, 2.0, 7.08157));8158 8159__m256d test_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C) {8160  // CHECK-LABEL: test_mm256_maskz_permutevar_pd8161  // CHECK: @llvm.x86.avx.vpermilvar.pd.2568162  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}8163  return _mm256_maskz_permutevar_pd(__U, __A, __C); 8164}8165TEST_CONSTEXPR(match_m256d(8166  _mm256_maskz_permutevar_pd(8167    (__mmask8)0b0101,8168    ((__m256d){0.0, 1.0, 2.0, 3.0}),8169    ((__m256i){0b10, 0b00, 0b00, 0b10})8170  ),8171  1.0, 0.0, 2.0, 0.08172));8173 8174__m128 test_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C) {8175  // CHECK-LABEL: test_mm_mask_permutevar_ps8176  // CHECK: @llvm.x86.avx.vpermilvar.ps8177  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}8178  return _mm_mask_permutevar_ps(__W, __U, __A, __C); 8179}8180TEST_CONSTEXPR(match_m128(8181  _mm_mask_permutevar_ps(8182    ((__m128){4.0, 5.0, 6.0, 7.0}),8183    (__mmask8)0b0101,8184    ((__m128){0.0, 1.0, 2.0, 3.0}),8185    ((__m128i)(__v4si){0b11, 0b10, 0b01, 0b00})8186  ),8187  3.0, 5.0, 1.0, 7.08188));8189 8190__m128 test_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C) {8191  // CHECK-LABEL: test_mm_maskz_permutevar_ps8192  // CHECK: @llvm.x86.avx.vpermilvar.ps8193  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}8194  return _mm_maskz_permutevar_ps(__U, __A, __C); 8195}8196TEST_CONSTEXPR(match_m128(8197  _mm_maskz_permutevar_ps(8198    (__mmask8)0b0101,8199    ((__m128){0.0, 1.0, 2.0, 3.0}),8200    ((__m128i)(__v4si){0b11, 0b10, 0b01, 0b00})8201  ),8202  3.0, 0.0, 1.0, 0.08203));8204 8205__m256 test_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C) {8206  // CHECK-LABEL: test_mm256_mask_permutevar_ps8207  // CHECK: @llvm.x86.avx.vpermilvar.ps.2568208  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}8209  return _mm256_mask_permutevar_ps(__W, __U, __A, __C); 8210}8211TEST_CONSTEXPR(match_m256(8212  _mm256_mask_permutevar_ps(8213    ((__m256){8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0}),8214    (__mmask8)0b01010101,8215    ((__m256){0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}),8216    ((__m256i)(__v8si){0b11, 0b10, 0b01, 0b00, 0b00, 0b11, 0b01, 0b10})8217  ),8218  3.0, 9.0, 1.0, 11.0, 4.0, 13.0, 5.0, 15.08219));8220 8221__m256 test_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C) {8222  // CHECK-LABEL: test_mm256_maskz_permutevar_ps8223  // CHECK: @llvm.x86.avx.vpermilvar.ps.2568224  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}8225  return _mm256_maskz_permutevar_ps(__U, __A, __C); 8226}8227TEST_CONSTEXPR(match_m256(8228  _mm256_maskz_permutevar_ps(8229    (__mmask8)0b01010101,8230    ((__m256){0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}),8231    ((__m256i)(__v8si){0b11, 0b10, 0b01, 0b00, 0b00, 0b11, 0b01, 0b10})8232  ),8233  3.0, 0.0, 1.0, 0.0, 4.0, 0.0, 5.0, 0.08234));8235 8236__mmask8 test_mm_test_epi32_mask(__m128i __A, __m128i __B) {8237  // CHECK-LABEL: test_mm_test_epi32_mask8238  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8239  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}8240  return _mm_test_epi32_mask(__A, __B); 8241}8242 8243__mmask8 test_mm_mask_test_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {8244  // CHECK-LABEL: test_mm_mask_test_epi32_mask8245  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8246  // CHECK: icmp ne <4 x i32> %{{.*}}, %{{.*}}8247  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}8248  return _mm_mask_test_epi32_mask(__U, __A, __B); 8249}8250 8251__mmask8 test_mm256_test_epi32_mask(__m256i __A, __m256i __B) {8252  // CHECK-LABEL: test_mm256_test_epi32_mask8253  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8254  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}8255  return _mm256_test_epi32_mask(__A, __B); 8256}8257 8258__mmask8 test_mm256_mask_test_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {8259  // CHECK-LABEL: test_mm256_mask_test_epi32_mask8260  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8261  // CHECK: icmp ne <8 x i32> %{{.*}}, %{{.*}}8262  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}8263  return _mm256_mask_test_epi32_mask(__U, __A, __B); 8264}8265 8266__mmask8 test_mm_test_epi64_mask(__m128i __A, __m128i __B) {8267  // CHECK-LABEL: test_mm_test_epi64_mask8268  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8269  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}8270  return _mm_test_epi64_mask(__A, __B); 8271}8272 8273__mmask8 test_mm_mask_test_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {8274  // CHECK-LABEL: test_mm_mask_test_epi64_mask8275  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8276  // CHECK: icmp ne <2 x i64> %{{.*}}, %{{.*}}8277  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}8278  return _mm_mask_test_epi64_mask(__U, __A, __B); 8279}8280 8281__mmask8 test_mm256_test_epi64_mask(__m256i __A, __m256i __B) {8282  // CHECK-LABEL: test_mm256_test_epi64_mask8283  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8284  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}8285  return _mm256_test_epi64_mask(__A, __B); 8286}8287 8288__mmask8 test_mm256_mask_test_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {8289  // CHECK-LABEL: test_mm256_mask_test_epi64_mask8290  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8291  // CHECK: icmp ne <4 x i64> %{{.*}}, %{{.*}}8292  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}8293  return _mm256_mask_test_epi64_mask(__U, __A, __B); 8294}8295 8296__mmask8 test_mm_testn_epi32_mask(__m128i __A, __m128i __B) {8297  // CHECK-LABEL: test_mm_testn_epi32_mask8298  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8299  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}8300  return _mm_testn_epi32_mask(__A, __B); 8301}8302 8303__mmask8 test_mm_mask_testn_epi32_mask(__mmask8 __U, __m128i __A, __m128i __B) {8304  // CHECK-LABEL: test_mm_mask_testn_epi32_mask8305  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8306  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}8307  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}8308  return _mm_mask_testn_epi32_mask(__U, __A, __B); 8309}8310 8311__mmask8 test_mm256_testn_epi32_mask(__m256i __A, __m256i __B) {8312  // CHECK-LABEL: test_mm256_testn_epi32_mask8313  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8314  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}8315  return _mm256_testn_epi32_mask(__A, __B); 8316}8317 8318__mmask8 test_mm256_mask_testn_epi32_mask(__mmask8 __U, __m256i __A, __m256i __B) {8319  // CHECK-LABEL: test_mm256_mask_testn_epi32_mask8320  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8321  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}8322  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}8323  return _mm256_mask_testn_epi32_mask(__U, __A, __B); 8324}8325 8326__mmask8 test_mm_testn_epi64_mask(__m128i __A, __m128i __B) {8327  // CHECK-LABEL: test_mm_testn_epi64_mask8328  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8329  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}8330  return _mm_testn_epi64_mask(__A, __B); 8331}8332 8333__mmask8 test_mm_mask_testn_epi64_mask(__mmask8 __U, __m128i __A, __m128i __B) {8334  // CHECK-LABEL: test_mm_mask_testn_epi64_mask8335  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}8336  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}8337  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}8338  return _mm_mask_testn_epi64_mask(__U, __A, __B); 8339}8340 8341__mmask8 test_mm256_testn_epi64_mask(__m256i __A, __m256i __B) {8342  // CHECK-LABEL: test_mm256_testn_epi64_mask8343  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8344  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}8345  return _mm256_testn_epi64_mask(__A, __B); 8346}8347 8348__mmask8 test_mm256_mask_testn_epi64_mask(__mmask8 __U, __m256i __A, __m256i __B) {8349  // CHECK-LABEL: test_mm256_mask_testn_epi64_mask8350  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}8351  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}8352  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}8353  return _mm256_mask_testn_epi64_mask(__U, __A, __B); 8354}8355 8356__m128i test_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {8357  // CHECK-LABEL: test_mm_mask_unpackhi_epi328358  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>8359  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8360  return _mm_mask_unpackhi_epi32(__W, __U, __A, __B); 8361}8362 8363TEST_CONSTEXPR(match_v4si(_mm_mask_unpackhi_epi32(_mm_setzero_si128(), 0xA, (__m128i)(__v4si){0,1,2,3}, (__m128i)(__v4si){4,5,6,7}), 0,6,0,7));8364 8365__m128i test_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B) {8366  // CHECK-LABEL: test_mm_maskz_unpackhi_epi328367  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 2, i32 6, i32 3, i32 7>8368  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8369  return _mm_maskz_unpackhi_epi32(__U, __A, __B); 8370}8371 8372TEST_CONSTEXPR(match_v4si(_mm_maskz_unpackhi_epi32(0x5, (__m128i)(__v4si){0,1,2,3}, (__m128i)(__v4si){4,5,6,7}), 2,0,3,0));8373 8374__m256i test_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {8375  // CHECK-LABEL: test_mm256_mask_unpackhi_epi328376  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>8377  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8378  return _mm256_mask_unpackhi_epi32(__W, __U, __A, __B); 8379}8380 8381__m256i test_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B) {8382  // CHECK-LABEL: test_mm256_maskz_unpackhi_epi328383  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 2, i32 10, i32 3, i32 11, i32 6, i32 14, i32 7, i32 15>8384  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8385  return _mm256_maskz_unpackhi_epi32(__U, __A, __B); 8386}8387 8388__m128i test_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {8389  // CHECK-LABEL: test_mm_mask_unpackhi_epi648390  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>8391  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8392  return _mm_mask_unpackhi_epi64(__W, __U, __A, __B); 8393}8394 8395__m128i test_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B) {8396  // CHECK-LABEL: test_mm_maskz_unpackhi_epi648397  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 3>8398  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8399  return _mm_maskz_unpackhi_epi64(__U, __A, __B); 8400}8401 8402__m256i test_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {8403  // CHECK-LABEL: test_mm256_mask_unpackhi_epi648404  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>8405  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8406  return _mm256_mask_unpackhi_epi64(__W, __U, __A, __B); 8407}8408 8409__m256i test_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B) {8410  // CHECK-LABEL: test_mm256_maskz_unpackhi_epi648411  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 3, i32 7>8412  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8413  return _mm256_maskz_unpackhi_epi64(__U, __A, __B); 8414}8415 8416__m128i test_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {8417  // CHECK-LABEL: test_mm_mask_unpacklo_epi328418  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>8419  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8420  return _mm_mask_unpacklo_epi32(__W, __U, __A, __B); 8421}8422 8423__m128i test_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B) {8424  // CHECK-LABEL: test_mm_maskz_unpacklo_epi328425  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 1, i32 5>8426  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8427  return _mm_maskz_unpacklo_epi32(__U, __A, __B); 8428}8429 8430__m256i test_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {8431  // CHECK-LABEL: test_mm256_mask_unpacklo_epi328432  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>8433  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8434  return _mm256_mask_unpacklo_epi32(__W, __U, __A, __B); 8435}8436 8437__m256i test_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B) {8438  // CHECK-LABEL: test_mm256_maskz_unpacklo_epi328439  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 1, i32 9, i32 4, i32 12, i32 5, i32 13>8440  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8441  return _mm256_maskz_unpacklo_epi32(__U, __A, __B); 8442}8443 8444__m128i test_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {8445  // CHECK-LABEL: test_mm_mask_unpacklo_epi648446  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>8447  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8448  return _mm_mask_unpacklo_epi64(__W, __U, __A, __B); 8449}8450 8451__m128i test_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B) {8452  // CHECK-LABEL: test_mm_maskz_unpacklo_epi648453  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 0, i32 2>8454  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8455  return _mm_maskz_unpacklo_epi64(__U, __A, __B); 8456}8457 8458__m256i test_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {8459  // CHECK-LABEL: test_mm256_mask_unpacklo_epi648460  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>8461  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8462  return _mm256_mask_unpacklo_epi64(__W, __U, __A, __B); 8463}8464 8465__m256i test_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B) {8466  // CHECK-LABEL: test_mm256_maskz_unpacklo_epi648467  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 4, i32 2, i32 6>8468  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8469  return _mm256_maskz_unpacklo_epi64(__U, __A, __B); 8470}8471 8472__m128i test_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {8473  // CHECK-LABEL: test_mm_mask_sra_epi328474  // CHECK: @llvm.x86.sse2.psra.d8475  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8476  return _mm_mask_sra_epi32(__W, __U, __A, __B); 8477}8478 8479__m128i test_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B) {8480  // CHECK-LABEL: test_mm_maskz_sra_epi328481  // CHECK: @llvm.x86.sse2.psra.d8482  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8483  return _mm_maskz_sra_epi32(__U, __A, __B); 8484}8485 8486__m256i test_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {8487  // CHECK-LABEL: test_mm256_mask_sra_epi328488  // CHECK: @llvm.x86.avx2.psra.d8489  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8490  return _mm256_mask_sra_epi32(__W, __U, __A, __B); 8491}8492 8493__m256i test_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B) {8494  // CHECK-LABEL: test_mm256_maskz_sra_epi328495  // CHECK: @llvm.x86.avx2.psra.d8496  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8497  return _mm256_maskz_sra_epi32(__U, __A, __B);8498}8499TEST_CONSTEXPR(match_v4si(_mm_mask_sra_epi32((__m128i)(__v4si){99, 99, 99, 99}, 0x5, (__m128i)(__v4si){-2, 4, -6, 8}, (__m128i)(__v4si){1, 0, 0, 0}), -1, 99, -3, 99));8500TEST_CONSTEXPR(match_v4si(_mm_maskz_sra_epi32(0xA, (__m128i)(__v4si){-2, 4, -6, 8}, (__m128i)(__v4si){1, 0, 0, 0}), 0, 2, 0, 4));8501TEST_CONSTEXPR(match_v8si(_mm256_mask_sra_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, 0x5A, (__m256i)(__v8si){0, -2, 4, -6, 8, -10, 12, -14}, (__m128i)(__v4si){1, 0, 0, 0}), 99, -1, 99, -3, 4, 99, 6, 99));8502TEST_CONSTEXPR(match_v8si(_mm256_maskz_sra_epi32(0xA5, (__m256i)(__v8si){0, -2, 4, -6, 8, -10, 12, -14}, (__m128i)(__v4si){1, 0, 0, 0}), 0, 0, 2, 0, 0, -5, 0, -7));8503 8504__m128i test_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A) {8505  // CHECK-LABEL: test_mm_mask_srai_epi328506  // CHECK: @llvm.x86.sse2.psrai.d8507  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8508  return _mm_mask_srai_epi32(__W, __U, __A, 5); 8509}8510 8511__m128i test_mm_mask_srai_epi32_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {8512  // CHECK-LABEL: test_mm_mask_srai_epi32_28513  // CHECK: @llvm.x86.sse2.psrai.d8514  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8515  return _mm_mask_srai_epi32(__W, __U, __A, __B); 8516}8517 8518__m128i test_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A) {8519  // CHECK-LABEL: test_mm_maskz_srai_epi328520  // CHECK: @llvm.x86.sse2.psrai.d8521  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8522  return _mm_maskz_srai_epi32(__U, __A, 5); 8523}8524 8525__m128i test_mm_maskz_srai_epi32_2(__mmask8 __U, __m128i __A, unsigned int __B) {8526  // CHECK-LABEL: test_mm_maskz_srai_epi32_28527  // CHECK: @llvm.x86.sse2.psrai.d8528  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8529  return _mm_maskz_srai_epi32(__U, __A, __B); 8530}8531 8532__m256i test_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A) {8533  // CHECK-LABEL: test_mm256_mask_srai_epi328534  // CHECK: @llvm.x86.avx2.psrai.d8535  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8536  return _mm256_mask_srai_epi32(__W, __U, __A, 5); 8537}8538TEST_CONSTEXPR(match_v8si(_mm256_mask_srai_epi32((__m256i)(__v8si){100, 101, 102, 103, 104, 105, 106, 107}, (__mmask8)0xff, (__m256i)(__v8si){0, 1, 2, 3, 4, 5, 6, 7}, 3), 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0));8539 8540__m256i test_mm256_mask_srai_epi32_2(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B) {8541  // CHECK-LABEL: test_mm256_mask_srai_epi32_28542  // CHECK: @llvm.x86.avx2.psrai.d8543  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8544  return _mm256_mask_srai_epi32(__W, __U, __A, __B); 8545}8546 8547__m256i test_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A) {8548  // CHECK-LABEL: test_mm256_maskz_srai_epi328549  // CHECK: @llvm.x86.avx2.psrai.d8550  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8551  return _mm256_maskz_srai_epi32(__U, __A, 5); 8552}8553TEST_CONSTEXPR(match_v8si(_mm256_maskz_srai_epi32((__mmask8)0x71, (__m256i)(__v8si){0xff, 1, 2, 3, 4, 5, 6, 7}, 1), 0x7f, 0, 0, 0, 0x2, 0x2, 0x3, 0));8554 8555__m256i test_mm256_maskz_srai_epi32_2(__mmask8 __U, __m256i __A, unsigned int __B) {8556  // CHECK-LABEL: test_mm256_maskz_srai_epi32_28557  // CHECK: @llvm.x86.avx2.psrai.d8558  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8559  return _mm256_maskz_srai_epi32(__U, __A, __B); 8560}8561 8562__m128i test_mm_sra_epi64(__m128i __A, __m128i __B) {8563  // CHECK-LABEL: test_mm_sra_epi648564  // CHECK: @llvm.x86.avx512.psra.q.1288565  return _mm_sra_epi64(__A, __B);8566}8567TEST_CONSTEXPR(match_v2di(_mm_sra_epi64((__m128i)(__v2di){-2, 4}, (__m128i)(__v2di){1, 0}), -1, 2));8568TEST_CONSTEXPR(match_v2di(_mm_sra_epi64((__m128i)(__v2di){-2, 4}, (__m128i)(__v2di){64, 0}), -1, 0));8569 8570__m128i test_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {8571  // CHECK-LABEL: test_mm_mask_sra_epi648572  // CHECK: @llvm.x86.avx512.psra.q.1288573  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8574  return _mm_mask_sra_epi64(__W, __U, __A, __B); 8575}8576 8577__m128i test_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B) {8578  // CHECK-LABEL: test_mm_maskz_sra_epi648579  // CHECK: @llvm.x86.avx512.psra.q.1288580  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8581  return _mm_maskz_sra_epi64(__U, __A, __B); 8582}8583 8584__m256i test_mm256_sra_epi64(__m256i __A, __m128i __B) {8585  // CHECK-LABEL: test_mm256_sra_epi648586  // CHECK: @llvm.x86.avx512.psra.q.2568587  return _mm256_sra_epi64(__A, __B); 8588}8589 8590__m256i test_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {8591  // CHECK-LABEL: test_mm256_mask_sra_epi648592  // CHECK: @llvm.x86.avx512.psra.q.2568593  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8594  return _mm256_mask_sra_epi64(__W, __U, __A, __B); 8595}8596 8597__m256i test_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B) {8598  // CHECK-LABEL: test_mm256_maskz_sra_epi648599  // CHECK: @llvm.x86.avx512.psra.q.2568600  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8601  return _mm256_maskz_sra_epi64(__U, __A, __B);8602}8603TEST_CONSTEXPR(match_v2di(_mm_mask_sra_epi64((__m128i)(__v2di){99, 99}, 0x1, (__m128i)(__v2di){-2, 4}, (__m128i)(__v2di){1, 0}), -1, 99));8604TEST_CONSTEXPR(match_v2di(_mm_maskz_sra_epi64(0x2, (__m128i)(__v2di){-2, 4}, (__m128i)(__v2di){1, 0}), 0, 2));8605TEST_CONSTEXPR(match_v4di(_mm256_sra_epi64((__m256i)(__v4di){-2, 4, -6, 8}, (__m128i)(__v2di){1, 0}), -1, 2, -3, 4));8606TEST_CONSTEXPR(match_v4di(_mm256_mask_sra_epi64((__m256i)(__v4di){99, 99, 99, 99}, 0x5, (__m256i)(__v4di){0, -2, 4, -6}, (__m128i)(__v2di){1, 0}), 0, 99, 2, 99));8607TEST_CONSTEXPR(match_v4di(_mm256_maskz_sra_epi64(0xA, (__m256i)(__v4di){0, -2, 4, -6}, (__m128i)(__v2di){1, 0}), 0, -1, 0, -3));8608 8609__m128i test_mm_srai_epi64(__m128i __A) {8610  // CHECK-LABEL: test_mm_srai_epi648611  // CHECK: @llvm.x86.avx512.psrai.q.1288612  return _mm_srai_epi64(__A, 5); 8613}8614TEST_CONSTEXPR(match_v2di(_mm_srai_epi64((__m128i)(__v2di){-32768, -3}, 1), -16384, -2));8615 8616__m128i test_mm_srai_epi64_2(__m128i __A, unsigned int __B) {8617  // CHECK-LABEL: test_mm_srai_epi64_28618  // CHECK: @llvm.x86.avx512.psrai.q.1288619  return _mm_srai_epi64(__A, __B); 8620}8621 8622__m128i test_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A) {8623  // CHECK-LABEL: test_mm_mask_srai_epi648624  // CHECK: @llvm.x86.avx512.psrai.q.1288625  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8626  return _mm_mask_srai_epi64(__W, __U, __A, 5); 8627}8628 8629__m128i test_mm_mask_srai_epi64_2(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B) {8630  // CHECK-LABEL: test_mm_mask_srai_epi64_28631  // CHECK: @llvm.x86.avx512.psrai.q.1288632  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8633  return _mm_mask_srai_epi64(__W, __U, __A, __B); 8634}8635 8636__m128i test_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A) {8637  // CHECK-LABEL: test_mm_maskz_srai_epi648638  // CHECK: @llvm.x86.avx512.psrai.q.1288639  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8640  return _mm_maskz_srai_epi64(__U, __A, 5); 8641}8642 8643__m128i test_mm_maskz_srai_epi64_2(__mmask8 __U, __m128i __A, unsigned int __B) {8644  // CHECK-LABEL: test_mm_maskz_srai_epi64_28645  // CHECK: @llvm.x86.avx512.psrai.q.1288646  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8647  return _mm_maskz_srai_epi64(__U, __A, __B); 8648}8649 8650__m256i test_mm256_srai_epi64(__m256i __A) {8651  // CHECK-LABEL: test_mm256_srai_epi648652  // CHECK: @llvm.x86.avx512.psrai.q.2568653  return _mm256_srai_epi64(__A, 5); 8654}8655TEST_CONSTEXPR(match_v4di(_mm256_srai_epi64((__m256i)(__v4di){-32768, 32767, -3, -2}, 1), -16384, 16383, -2, -1));8656 8657__m256i test_mm256_srai_epi64_2(__m256i __A, unsigned int __B) {8658  // CHECK-LABEL: test_mm256_srai_epi64_28659  // CHECK: @llvm.x86.avx512.psrai.q.2568660  return _mm256_srai_epi64(__A, __B); 8661}8662 8663__m256i test_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A) {8664  // CHECK-LABEL: test_mm256_mask_srai_epi648665  // CHECK: @llvm.x86.avx512.psrai.q.2568666  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8667  return _mm256_mask_srai_epi64(__W, __U, __A, 5); 8668}8669TEST_CONSTEXPR(match_v4di(_mm256_mask_srai_epi64((__m256i)(__v4di){100, 101, 102, 103}, (__mmask8)0b1010, (__m256i)(__v4di){0,-128, 2, 3}, 2), 100, -32, 102, 0x0));8670 8671__m256i test_mm256_mask_srai_epi64_2(__m256i __W, __mmask8 __U, __m256i __A, unsigned int __B) {8672  // CHECK-LABEL: test_mm256_mask_srai_epi64_28673  // CHECK: @llvm.x86.avx512.psrai.q.2568674  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8675  return _mm256_mask_srai_epi64(__W, __U, __A, __B); 8676}8677 8678__m256i test_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A) {8679  // CHECK-LABEL: test_mm256_maskz_srai_epi648680  // CHECK: @llvm.x86.avx512.psrai.q.2568681  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8682  return _mm256_maskz_srai_epi64(__U, __A, 5); 8683}8684TEST_CONSTEXPR(match_v4di(_mm256_maskz_srai_epi64((__mmask8)0x71, (__m256i)(__v4di){0xff, 1, 2, 3}, 1), 0x7f, 0, 0, 0));8685 8686__m256i test_mm256_maskz_srai_epi64_2(__mmask8 __U, __m256i __A, unsigned int __B) {8687  // CHECK-LABEL: test_mm256_maskz_srai_epi64_28688  // CHECK: @llvm.x86.avx512.psrai.q.2568689  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}8690  return _mm256_maskz_srai_epi64(__U, __A, __B); 8691}8692 8693__m128i test_mm_ternarylogic_epi32(__m128i __A, __m128i __B, __m128i __C) {8694  // CHECK-LABEL: test_mm_ternarylogic_epi328695  // CHECK: @llvm.x86.avx512.pternlog.d.1288696  return _mm_ternarylogic_epi32(__A, __B, __C, 4); 8697}8698TEST_CONSTEXPR(match_v4si(8699  _mm_ternarylogic_epi32(8700    ((__m128i)((__v4si){(int)0x7FFFFFFF, (int)0x80000000, (int)0xAAAAAAAA, 0x00000000})),8701    ((__m128i)((__v4si){0x00000000, (int)0xFFFFFFFF, 0x12345678, (int)0xFFFFFFFF})),8702    ((__m128i)((__v4si){(int)0xCAFEBABE, 0x0F0F0F0F, (int)0xFFFFFFFF, 0x00000000})),8703    (unsigned char)0xCA), /* B ? (A | C) : (C & ~A) */8704  (int)0x80000000, (int)0x8F0F0F0F, 0x5775577D, 0x00000000));8705TEST_CONSTEXPR(match_v4si(8706  _mm_ternarylogic_epi32(8707    ((__m128i)((__v4si){0x12345678, (int)0x80000000, 0x00000000, (int)0xAAAAAAAA})),8708    ((__m128i)((__v4si){0x0000FFFF, 0x7FFFFFFF, 0x55555555, 0x00000000})),8709    ((__m128i)((__v4si){(int)0xF0F0F0F0, 0x00000001, 0x0F0F0F0F, 0x33333333})),8710    (unsigned char)0xFE), /* A | B | C */8711  (int)0xF2F4FFFF, (int)0xFFFFFFFF, 0x5F5F5F5F, (int)0xBBBBBBBB));8712TEST_CONSTEXPR(match_v4si(8713  _mm_ternarylogic_epi32(8714    ((__m128i)((__v4si){(int)0xFFFFFFFF, 0x12345678, (int)0x80000000, 0x0F0F0F0F})),8715    ((__m128i)((__v4si){0x00FF00FF, (int)0xFFFFFFFF, 0x7FFFFFFF, (int)0xF0F0F0F0})),8716    ((__m128i)((__v4si){0x0F0F0F0F, 0x00FF00FF, (int)0xFFFFFFFF, (int)0xFFFFFFFF})),8717    (unsigned char)0x80), /* A & B & C */8718  0x000F000F, 0x00340078, 0x00000000, 0x00000000));8719 8720__m128i test_mm_mask_ternarylogic_epi32(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {8721  // CHECK-LABEL: test_mm_mask_ternarylogic_epi328722  // CHECK: @llvm.x86.avx512.pternlog.d.1288723  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}8724  return _mm_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 8725}8726TEST_CONSTEXPR(match_v4si(8727  _mm_mask_ternarylogic_epi32(8728    ((__m128i)((__v4si){-0x1, 0x0, -0x1, 0x0})),8729    (__mmask8)0x03,8730    ((__m128i)((__v4si){0xB, 0xB, 0xB, 0xB})),8731    ((__m128i)((__v4si){0xC, 0xC, 0xC, 0xC })),8732    (unsigned char)0xCA), // A ? B : C8733  0xB, 0xC, -0x1, 0x0));8734TEST_CONSTEXPR(match_v4si(8735  _mm_mask_ternarylogic_epi32(8736    ((__m128i)((__v4si){0x9, 0x9, 0x9, 0x9})),8737    (__mmask8)0x0C,8738    ((__m128i)((__v4si){0x4, 0x4, 0x4, 0x4})),8739    ((__m128i)((__v4si){0x2, 0x2, 0x2, 0x2})),8740    (unsigned char)0xFE), // A | B | C8741  0x9, 0x9, 0xF, 0xF));8742TEST_CONSTEXPR(match_v4si(8743  _mm_mask_ternarylogic_epi32(8744    ((__m128i)((__v4si){0x9, 0x9, 0x9, 0x9})),8745    (__mmask8)0x05,8746    ((__m128i)((__v4si){0x4, 0x4, 0x4, 0x4})),8747    ((__m128i)((__v4si){0x2, 0x2, 0x2, 0x2})),8748    (unsigned char)0x80), // A & B & C8749  0x0, 0x9, 0x0, 0x9));8750 8751__m128i test_mm_maskz_ternarylogic_epi32(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {8752  // CHECK-LABEL: test_mm_maskz_ternarylogic_epi328753  // CHECK: @llvm.x86.avx512.pternlog.d.1288754  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer8755  return _mm_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 8756}8757TEST_CONSTEXPR(match_v4si(8758  _mm_maskz_ternarylogic_epi32(8759    (__mmask8)0x0B,8760    ((__m128i)((__v4si){(int)0xDEADBEEF, 0, (int)0xFFFFFFFF, 0x13579BDF})),8761    ((__m128i)((__v4si){(int)0xFFFFFFFF, 0, (int)0xFFFFFFFF, 0})),8762    ((__m128i)((__v4si){(int)0xCAFEBABE, (int)0xFFFFFFFF, 0, 0x2468ACE0})),8763    (unsigned char)0xE2), // B ? A : C8764  (int)0xDEADBEEF, (int)0xFFFFFFFF, 0, 0x2468ACE0));8765TEST_CONSTEXPR(match_v4si(8766  _mm_maskz_ternarylogic_epi32(8767    (__mmask8)0x0C,8768    ((__m128i)((__v4si){0, (int)0xFFFFFFFF, (int)0xAAAAAAAA, 0x55555555})),8769    ((__m128i)((__v4si){(int)0xFFFFFFFF, 0, (int)0xFFFFFFFF, (int)0xFFFFFFFF})),8770    ((__m128i)((__v4si){(int)0xF0F0F0F0, 0, 0, (int)0xFFFFFFFF})),8771    (unsigned char)0x7F),   // ~(A & B) | ~(B & C)8772  0, 0, (int)0xFFFFFFFF, (int)0xAAAAAAAA));8773TEST_CONSTEXPR(match_v4si(8774  _mm_maskz_ternarylogic_epi32(8775    (__mmask8)0x05,8776    ((__m128i)((__v4si){(int)0xFFFFFFFF, 0, 0x12345678, 0})),8777    ((__m128i)((__v4si){0, 0, 0x0000FFFF, (int)0xFFFFFFFF})),8778    ((__m128i)((__v4si){0, 0, 0x0000000F, 0})),8779    (unsigned char)0xBF),   // ~A | ~B | C   imm = 0xBF8780  (int)0xFFFFFFFF, 0, (int)0xFFFFA98F, 0));8781 8782__m256i test_mm256_ternarylogic_epi32(__m256i __A, __m256i __B, __m256i __C) {8783  // CHECK-LABEL: test_mm256_ternarylogic_epi328784  // CHECK: @llvm.x86.avx512.pternlog.d.2568785  return _mm256_ternarylogic_epi32(__A, __B, __C, 4); 8786}8787TEST_CONSTEXPR(match_v8si(8788  _mm256_ternarylogic_epi32(8789    ((__m256i)((__v8si){0x12345678, 0x00000000, (int)0xFFFFFFFF, 0x7FFFFFFF, (int)0x80000000, 0x00FF00FF, (int)0xF0F0F0F0, (int)0xAAAAAAAA})),8790    ((__m256i)((__v8si){(int)0xDEADBEEF, 0x11111111, 0x22222222, 0x33333333, 0x44444444, 0x55555555, 0x66666666, 0x77777777})),8791    ((__m256i)((__v8si){(int)0xCAFEBABE, (int)0x88888888, (int)0x99999999, (int)0xAAAAAAAA, (int)0xBBBBBBBB, (int)0xCCCCCCCC, (int)0xDDDDDDDD, (int)0xFFFFFFFF})),8792    (unsigned char)0xF0), /* A */8793  0x12345678, 0x00000000, (int)0xFFFFFFFF, 0x7FFFFFFF, (int)0x80000000, 0x00FF00FF, (int)0xF0F0F0F0, (int)0xAAAAAAAA));8794TEST_CONSTEXPR(match_v8si(8795  _mm256_ternarylogic_epi32(8796    ((__m256i)((__v8si){0x12345678, 0x00000000, (int)0xFFFFFFFF, 0x7FFFFFFF, (int)0x80000000, 0x00FF00FF, (int)0xF0F0F0F0, (int)0xAAAAAAAA})),8797    ((__m256i)((__v8si){(int)0xAAAAAAAA, (int)0xBBBBBBBB, (int)0xCCCCCCCC, (int)0xDDDDDDDD, (int)0xEEEEEEEE, (int)0xFFFFFFFF, 0x00000000, 0x11111111})),8798    ((__m256i)((__v8si){0x22222222, 0x33333333, 0x44444444, 0x55555555, 0x66666666, 0x77777777, (int)0x88888888, (int)0x99999999})),8799    (unsigned char)0x0F), /* ~A */8800  (int)0xEDCBA987, (int)0xFFFFFFFF, 0x00000000, (int)0x80000000, 0x7FFFFFFF, (int)0xFF00FF00, 0x0F0F0F0F, 0x55555555));8801TEST_CONSTEXPR(match_v8si(8802  _mm256_ternarylogic_epi32(8803    ((__m256i)((__v8si){0x0F0F0F0F, (int)0xAAAAAAAA, 0x12345678, 0x00000000, (int)0xFFFFFFFF, 0x13579BDF, (int)0x80000000, 0x7FFFFFFF})),8804    ((__m256i)((__v8si){(int)0xF0F0F0F0, 0x55555555, 0x11111111, (int)0xFFFFFFFF, 0x00000000, 0x02468ACE, 0x7FFFFFFF, (int)0x80000000})),8805    ((__m256i)((__v8si){(int)0xAAAAAAAA, (int)0xAAAAAAAA, (int)0xAAAAAAAA, (int)0xAAAAAAAA, (int)0xAAAAAAAA, (int)0xAAAAAAAA, (int)0xAAAAAAAA, (int)0xAAAAAAAA})),8806    (unsigned char)0x3C), /* A ^ B */8807  (int)0xFFFFFFFF, (int)0xFFFFFFFF, 0x03254769, (int)0xFFFFFFFF, (int)0xFFFFFFFF, 0x11111111, (int)0xFFFFFFFF, (int)0xFFFFFFFF));8808 8809__m256i test_mm256_mask_ternarylogic_epi32(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {8810  // CHECK-LABEL: test_mm256_mask_ternarylogic_epi328811  // CHECK: @llvm.x86.avx512.pternlog.d.2568812  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}8813  return _mm256_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 8814}8815TEST_CONSTEXPR(match_v8si(8816  _mm256_mask_ternarylogic_epi32(8817    ((__m256i)((__v8si){(int)0xFFFFFFFF, 0x00000000, 0x12345678, (int)0xAAAAAAAA, 0x7FFFFFFF, (int)0x80000000, 0x13579BDF, 0x2468ACE0})),8818    (__mmask8)0xA5,8819    ((__m256i)((__v8si){(int)0xFFFFFFFF, 0x00000000, (int)0xFFFFFFFF, 0x00000000, (int)0xFFFFFFFF, 0x00000000, (int)0xFFFFFFFF, 0x00000000})),8820    ((__m256i)((__v8si){0x00000000, (int)0xFFFFFFFF, 0x55555555, 0x33333333, (int)0x89ABCDEF, 0x00000000, (int)0xFFFFFFFF, 0x11111111})),8821    (unsigned char)0xE2), /* B ? A : C */8822  (int)0xFFFFFFFF, 0x00000000, 0x12345678, (int)0xAAAAAAAA, 0x7FFFFFFF, 0x00000000, 0x13579BDF, 0x11111111));8823TEST_CONSTEXPR(match_v8si(8824  _mm256_mask_ternarylogic_epi32(8825    ((__m256i)((__v8si){0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F, 0x0F0F0F0F})),8826    (__mmask8)0xFF,8827    ((__m256i)((__v8si){0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF, 0x00FF00FF})),8828    ((__m256i)((__v8si){0x33333333, 0x33333333, 0x33333333, 0x33333333, 0x33333333, 0x33333333, 0x33333333, 0x33333333})),8829    (unsigned char)0x96), /* A ^ B ^ C */8830  0x3CC33CC3, 0x3CC33CC3, 0x3CC33CC3, 0x3CC33CC3, 0x3CC33CC3, 0x3CC33CC3, 0x3CC33CC3, 0x3CC33CC3));8831TEST_CONSTEXPR(match_v8si(8832  _mm256_mask_ternarylogic_epi32(8833    ((__m256i)((__v8si){(int)0xFFFFFFFF, 0x00000000, (int)0xFFFFFFFF, 0x12345678, (int)0xAAAAAAAA, 0x55555555, (int)0x80000000, 0x7FFFFFFF})),8834    (__mmask8)0x5A,8835    ((__m256i)((__v8si){0x00000000, (int)0xFFFFFFFF, 0x11111111, (int)0xFFFFFFFF, 0x55555555, (int)0xAAAAAAAA, (int)0x80000000, 0x7FFFFFFF})),8836    ((__m256i)((__v8si){0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000})),8837    (unsigned char)0xC0), /* A & B */8838  (int)0xFFFFFFFF, 0x00000000, (int)0xFFFFFFFF, 0x12345678, 0x00000000, 0x55555555, (int)0x80000000, 0x7FFFFFFF));8839 8840__m256i test_mm256_maskz_ternarylogic_epi32(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {8841  // CHECK-LABEL: test_mm256_maskz_ternarylogic_epi328842  // CHECK: @llvm.x86.avx512.pternlog.d.2568843  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> zeroinitializer8844  return _mm256_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 8845}8846TEST_CONSTEXPR(match_v8si(8847  _mm256_maskz_ternarylogic_epi32(8848    (__mmask8)0x6D,8849    ((__m256i)((__v8si){(int)-1, 0, (int)-1, 0, (int)-1, 0, (int)-1, 0})),8850    ((__m256i)((__v8si){0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB})),8851    ((__m256i)((__v8si){0xC, 0xC, 0xC, 0xC, 0xC, 0xC, 0xC, 0xC})),8852    (unsigned char)0x30), /* A & ~B */8853  (int)0xFFFFFFF4, 0, (int)0xFFFFFFF4, 0, 0, 0, (int)0xFFFFFFF4, 0));8854TEST_CONSTEXPR(match_v8si(8855  _mm256_maskz_ternarylogic_epi32(8856    (__mmask8)0x90,8857    ((__m256i)((__v8si){0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9, 0x9})),8858    ((__m256i)((__v8si){0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4})),8859    ((__m256i)((__v8si){0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2})),8860    (unsigned char)0x44), /* B & ~C */8861  0, 0, 0, 0, 0x4, 0, 0, 0x4));8862TEST_CONSTEXPR(match_v8si(8863  _mm256_maskz_ternarylogic_epi32(8864    (__mmask8)0x0F,8865    ((__m256i)((__v8si){0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3})),8866    ((__m256i)((__v8si){0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1, 0x1})),8867    ((__m256i)((__v8si){0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2, 0x2})),8868    (unsigned char)0x28), /* (A ^ B) & C */8869  0x2, 0x2, 0x2, 0x2, 0, 0, 0, 0));8870 8871__m128i test_mm_ternarylogic_epi64(__m128i __A, __m128i __B, __m128i __C) {8872  // CHECK-LABEL: test_mm_ternarylogic_epi648873  // CHECK: @llvm.x86.avx512.pternlog.q.1288874  return _mm_ternarylogic_epi64(__A, __B, __C, 4); 8875}8876TEST_CONSTEXPR(match_v2di(8877  _mm_ternarylogic_epi64(8878    ((__m128i)((__v2di){ (long long)0xBB91433A6AA79987ULL, (long long)0xD1F6F86C029A7245ULL })),8879    ((__m128i)((__v2di){ (long long)0xCD8778E7D340BBCDULL, (long long)0xDAEA58BA4C73A942ULL })),8880    ((__m128i)((__v2di){ (long long)0xEE8971105E503A67ULL,  (long long)0x452EC40A3193CA54ULL })),8881    (unsigned char)0x77),  // F = ~(A & B)8882  (long long)0x337E8FFFADBFC5BAULL,8883  (long long)0xBFD5BFF5FFEC77BFULL));8884TEST_CONSTEXPR(match_v2di(8885  _mm_ternarylogic_epi64(8886    ((__m128i)((__v2di){ (long long)0x6FACAA5090E5E945ULL, (long long)0x5F811CB929645F8BULL })),8887    ((__m128i)((__v2di){ (long long)0xDFC9E3B11FCFF454ULL, (long long)0x42D6CB5C6ED4E94BULL })),8888    ((__m128i)((__v2di){ (long long)0xA091250E8FE46024ULL, (long long)0x9C9CEA0C2CA1C789ULL })),8889    (unsigned char)0xDD),  // F = (~A) | B8890  (long long)0xDFEFFBF17FDFFFDFULL,8891  (long long)0x63F7DFFFFFDEF97FULL));8892TEST_CONSTEXPR(match_v2di(8893  _mm_ternarylogic_epi64(8894    ((__m128i)((__v2di){ (long long)0x2FD2B7A48D9FE5B9ULL, (long long)0xBCF74D7A5ADAD121ULL })),8895    ((__m128i)((__v2di){ (long long)0xBB9D58E4F543BBCFULL, (long long)0x87F26AEE175F0CD2ULL })),8896    ((__m128i)((__v2di){ (long long)0xBC428D42FA882692ULL, (long long)0x95C5FB986980A81FULL })),8897    (unsigned char)0x22),  // F = A & ~B8898  (long long)0x044285020A880410ULL,8899  (long long)0x100591106880A00DULL));8900 8901__m128i test_mm_mask_ternarylogic_epi64(__m128i __A, __mmask8 __U, __m128i __B, __m128i __C) {8902  // CHECK-LABEL: test_mm_mask_ternarylogic_epi648903  // CHECK: @llvm.x86.avx512.pternlog.q.1288904  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}8905  return _mm_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 8906}8907TEST_CONSTEXPR(match_v2di(8908  _mm_mask_ternarylogic_epi64(8909    ((__m128i)((__v2di){(long long)0xF4C3B00C0D15EA5ELL, (long long)0x0123456789ABCDE0LL})),8910    (__mmask8)0x9D,8911    ((__m128i)((__v2di){(long long)0x9A7F3C2155EE00DDLL, (long long)0xDEADBEEFCAFEBABELL})),8912    ((__m128i)((__v2di){(long long)0x00F0F0F0F0F0F0F0LL, (long long)0x13579BDF2468ACE0LL})),8913    (unsigned char)0xFF), // All 1s8914  (long long)-1,8915  (long long)0x0123456789ABCDE0LL));8916TEST_CONSTEXPR(match_v2di(8917  _mm_mask_ternarylogic_epi64(8918    ((__m128i)((__v2di){ (long long)0x3A7C19E54B20D8A1LL, (long long)0x4F12B39D0C85E762LL })),8919    (__mmask8)0xD2,8920    ((__m128i)((__v2di){ (long long)0x6D93A0F217C54E3BLL, (long long)0x24E1C7A95B08D6F2LL })),8921    ((__m128i)((__v2di){ (long long)0x5A0C3E19D472B8F5LL, (long long)0x0187D3B2C9E4056ALL })),8922    (unsigned char)0x00),8923  (long long)0x3A7C19E54B20D8A1LL,8924  (long long)0x0LL)); // All 0s8925TEST_CONSTEXPR(match_v2di(8926  _mm_mask_ternarylogic_epi64(8927    ((__m128i)((__v2di){8928      (long long)0xA3F10B6C7D8294E1ULL, (long long)0x19D4E7350AB2C98FLL8929    })),8930    (__mmask8)0xB5,8931    ((__m128i)((__v2di){8932      (long long)0x5C2E9A10F4B7D863LL, (long long)0x9B7E1D2C3A4F5E60LL8933    })),8934    ((__m128i)((__v2di){8935      (long long)0x2A6D3F81C9E047B5LL, (long long)0x7F0A1C3E5D2B6490LL8936    })),8937    (unsigned char)0x55), // ~C8938  (long long)0xD592C07E361FB84AULL,8939  (long long)0x19D4E7350AB2C98FLL8940));8941 8942__m128i test_mm_maskz_ternarylogic_epi64(__mmask8 __U, __m128i __A, __m128i __B, __m128i __C) {8943  // CHECK-LABEL: test_mm_maskz_ternarylogic_epi648944  // CHECK: @llvm.x86.avx512.pternlog.q.1288945  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> zeroinitializer8946  return _mm_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 8947}8948TEST_CONSTEXPR(match_v2di(8949  _mm_maskz_ternarylogic_epi64(8950    (__mmask8)0xA9,8951    ((__m128i)((__v2di){8952      (long long)0x8F3A5C7E21D4B690ULL, (long long)0x5AD02CE19B7F46A3ULL8953    })),8954    ((__m128i)((__v2di){8955      (long long)0xC19E04B2A7D35F68ULL, (long long)0x2F7B93C4E1A05D76ULL8956    })),8957    ((__m128i)((__v2di){8958      (long long)0x7A0C1D2E3F405162ULL, (long long)0xD4E5F60718293A4BULL8959    })),8960    (unsigned char)0xD2),  // F = C ? (B | ~A) : (A & ~B)8961  (long long)0xB53A457239D4B692ULL,8962  (long long)0x0ULL));8963TEST_CONSTEXPR(match_v2di(8964  _mm_maskz_ternarylogic_epi64(8965    (__mmask8)0xB6,8966    ((__m128i)((__v2di){8967      (long long)0x83C1D2E3F4051627ULL, (long long)0x5A0B1C2D3E4F6071ULL8968    })),8969    ((__m128i)((__v2di){8970      (long long)0x9E8D7C6B5A493827ULL, (long long)0x13579BDF2468ACE0ULL8971    })),8972    ((__m128i)((__v2di){8973      (long long)0x02468ACE13579BDFULL, (long long)0xFEDCBA9876543210ULL8974    })),8975    (unsigned char)0xFE),  // F = A | B | C8976  (long long)0x0ULL,8977  (long long)0xFFDFBFFF7E7FFEF1ULL));8978TEST_CONSTEXPR(match_v2di(8979  _mm_maskz_ternarylogic_epi64(8980    (__mmask8)0xA5,8981    ((__m128i)((__v2di){8982      (long long)0x1C80317FA3B1799DULL, (long long)0xBDD640FB06671AD1ULL8983    })),8984    ((__m128i)((__v2di){8985      (long long)0x3EB13B9046685257ULL, (long long)0x23B8C1E9392456DEULL8986    })),8987    ((__m128i)((__v2di){8988      (long long)0x1A3D1FA7BC8960A9ULL, (long long)0xBD9C66B3AD3C2D6DULL8989    })),8990    (unsigned char)0x80),  // F = A & B & C8991  (long long)0x1800110000004001ULL,8992  (long long)0x0ULL8993));8994 8995__m256i test_mm256_ternarylogic_epi64(__m256i __A, __m256i __B, __m256i __C) {8996  // CHECK-LABEL: test_mm256_ternarylogic_epi648997  // CHECK: @llvm.x86.avx512.pternlog.q.2568998  return _mm256_ternarylogic_epi64(__A, __B, __C, 4); 8999}9000TEST_CONSTEXPR(match_v4di(9001  _mm256_ternarylogic_epi64(9002    ((__m256i)((__v4di){-0x1, 0x0, -0x1, 0x0})),9003    ((__m256i)((__v4di){0xB, 0xB, 0xB, 0xB})),9004    ((__m256i)((__v4di){0xC, 0xC, 0xC, 0xC})),9005    (unsigned char)0x94),9006  (long long)-0x8, (long long)0x3, (long long)-0x8, (long long)0x3));9007TEST_CONSTEXPR(match_v4di(9008  _mm256_ternarylogic_epi64(9009    ((__m256i)((__v4di){0x9, 0x9, 0x9, 0x9})),9010    ((__m256i)((__v4di){0x4, 0x4, 0x4, 0x4})),9011    ((__m256i)((__v4di){0x2, 0x2, 0x2, 0x2})),9012    (unsigned char)0x76),9013  (long long)0xF, (long long)0xF, (long long)0xF, (long long)0xF));9014 9015__m256i test_mm256_mask_ternarylogic_epi64(__m256i __A, __mmask8 __U, __m256i __B, __m256i __C) {9016  // CHECK-LABEL: test_mm256_mask_ternarylogic_epi649017  // CHECK: @llvm.x86.avx512.pternlog.q.2569018  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}9019  return _mm256_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 9020}9021TEST_CONSTEXPR(match_v4di(9022  _mm256_mask_ternarylogic_epi64(9023    ((__m256i)((__v4di){9024      (long long)0x0123456789ABCDEFULL, (long long)0x0F0F0F0F0F0F0F0FULL,9025      (long long)0xAAAAAAAAAAAAAAAALL, (long long)0x13579BDF02468ACEULL9026    })),9027    (__mmask8)0x09,9028    ((__m256i)((__v4di){9029      (long long)0x1111111111111111ULL, (long long)0x2222222222222222ULL,9030      (long long)0x3333333333333333ULL, (long long)0x4444444444444444ULL9031    })),9032    ((__m256i)((__v4di){9033      (long long)0x5555555555555555ULL, (long long)0x6666666666666666ULL,9034      (long long)0x7777777777777777ULL, (long long)0x8888888888888888ULL9035    })),9036    (unsigned char)0x12),9037  (long long)0x44660022CCEE88AAULL,9038  (long long)0x0F0F0F0F0F0F0F0FULL,9039  (long long)0xAAAAAAAAAAAAAAAALL,9040  (long long)0x9B9B13138A8A0202ULL));9041TEST_CONSTEXPR(match_v4di(9042  _mm256_mask_ternarylogic_epi64(9043    ((__m256i)((__v4di){9044      (long long)0xDEADBEEFDEADBEEFULL, (long long)0xCAFEBABECAFEBABEULL,9045      (long long)0xF00DFACEF00DFACEULL, (long long)0x0123456789ABCDEFULL9046    })),9047    (__mmask8)0x06,9048    ((__m256i)((__v4di){9049      (long long)0x0000000000000000ULL, (long long)0xFFFFFFFFFFFFFFFFULL,9050      (long long)0x13579BDF13579BDFULL, (long long)0x0AAAAAAAAAAAAAAULL9051    })),9052    ((__m256i)((__v4di){9053      (long long)0x1111111111111111ULL, (long long)0x2222222222222222ULL,9054      (long long)0x3333333333333333ULL, (long long)0x4444444444444444ULL9055    })),9056    (unsigned char)0x23),9057  (long long)0xDEADBEEFDEADBEEFULL,9058  (long long)0x0000000000000000ULL,9059  (long long)0x2CA024202CA02420ULL,9060  (long long)0x0123456789ABCDEFULL));9061 9062__m256i test_mm256_maskz_ternarylogic_epi64(__mmask8 __U, __m256i __A, __m256i __B, __m256i __C) {9063  // CHECK-LABEL: test_mm256_maskz_ternarylogic_epi649064  // CHECK: @llvm.x86.avx512.pternlog.q.2569065  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> zeroinitializer9066  return _mm256_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 9067}9068TEST_CONSTEXPR(match_v4di(9069  _mm256_maskz_ternarylogic_epi64(9070    (__mmask8)0x05,9071    ((__m256i)((__v4di){9072      (long long)0x1, (long long)0x2, (long long)0x0, (long long)0x79073    })),9074    ((__m256i)((__v4di){9075      (long long)0x0, (long long)0x3, (long long)0x4, (long long)0x09076    })),9077    ((__m256i)((__v4di){9078      (long long)0x0, (long long)0x5, (long long)0x0, (long long)0x19079    })),9080    (unsigned char)0xFE),9081  (long long)0x1,9082  (long long)0x0,9083  (long long)0x4,9084  (long long)0x0));9085TEST_CONSTEXPR(match_v4di(9086  _mm256_maskz_ternarylogic_epi64(9087    (__mmask8)0x0A,9088    ((__m256i)((__v4di){9089      (long long)0x1, (long long)0x0, (long long)0x2, (long long)0x19090    })),9091    ((__m256i)((__v4di){9092      (long long)0x0, (long long)0x1, (long long)0x0, (long long)0x09093    })),9094    ((__m256i)((__v4di){9095      (long long)0x0, (long long)0x0, (long long)0x4, (long long)0x19096    })),9097    (unsigned char)0xED),9098  (long long)0x0,9099  (long long)-0x1,9100  (long long)0x0,9101  (long long)-0x1));9102 9103__m256 test_mm256_shuffle_f32x4(__m256 __A, __m256 __B) {9104  // CHECK-LABEL: test_mm256_shuffle_f32x49105  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>9106  return _mm256_shuffle_f32x4(__A, __B, 3); 9107}9108TEST_CONSTEXPR(match_m256(_mm256_shuffle_f32x4(((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}), ((__m256){10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0}), 1), 5.0, 6.0, 7.0, 8.0, 10.0, 20.0, 30.0, 40.0));9109 9110__m256 test_mm256_mask_shuffle_f32x4(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {9111  // CHECK-LABEL: test_mm256_mask_shuffle_f32x49112  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>9113  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9114  return _mm256_mask_shuffle_f32x4(__W, __U, __A, __B, 3); 9115}9116TEST_CONSTEXPR(match_m256(_mm256_mask_shuffle_f32x4(((__m256){100.0, 200.0, 300.0, 400.0, 500.0, 600.0, 700.0, 800.0}), 0b10101010, ((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}), ((__m256){10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0}), 1), 100.0, 6.0, 300.0, 8.0, 500.0, 20.0, 700.0, 40.0));9117 9118__m256 test_mm256_maskz_shuffle_f32x4(__mmask8 __U, __m256 __A, __m256 __B) {9119  // CHECK-LABEL: test_mm256_maskz_shuffle_f32x49120  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>9121  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9122  return _mm256_maskz_shuffle_f32x4(__U, __A, __B, 3); 9123}9124TEST_CONSTEXPR(match_m256(_mm256_maskz_shuffle_f32x4(0b01010101, ((__m256){1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}), ((__m256){10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 80.0}), 1), 5.0, 0.0, 7.0, 0.0, 10.0, 0.0, 30.0, 0.0));9125 9126__m256d test_mm256_shuffle_f64x2(__m256d __A, __m256d __B) {9127  // CHECK-LABEL: test_mm256_shuffle_f64x29128  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>9129  return _mm256_shuffle_f64x2(__A, __B, 3); 9130}9131TEST_CONSTEXPR(match_m256d(_mm256_shuffle_f64x2(((__m256d){1.0, 2.0, 3.0, 4.0}), ((__m256d){10.0, 20.0, 30.0, 40.0}), 3), 3.0, 4.0, 30.0, 40.0));9132 9133__m256d test_mm256_mask_shuffle_f64x2(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {9134  // CHECK-LABEL: test_mm256_mask_shuffle_f64x29135  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>9136  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>9137  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}9138  return _mm256_mask_shuffle_f64x2(__W, __U, __A, __B, 3); 9139}9140TEST_CONSTEXPR(match_m256d(_mm256_mask_shuffle_f64x2(((__m256d){100.0, 200.0, 300.0, 400.0}), 0b00001111, ((__m256d){1.0, 2.0, 3.0, 4.0}), ((__m256d){10.0, 20.0, 30.0, 40.0}), 3), 3.0, 4.0, 30.0, 40.0));9141 9142__m256d test_mm256_maskz_shuffle_f64x2(__mmask8 __U, __m256d __A, __m256d __B) {9143  // CHECK-LABEL: test_mm256_maskz_shuffle_f64x29144  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>9145  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>9146  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}9147  return _mm256_maskz_shuffle_f64x2(__U, __A, __B, 3); 9148}9149TEST_CONSTEXPR(match_m256d(_mm256_maskz_shuffle_f64x2(0b00001011, ((__m256d){1.0, 2.0, 3.0, 4.0}), ((__m256d){10.0, 20.0, 30.0, 40.0}), 3), 3.0, 4.0, 0.0, 40.0));9150 9151__m256i test_mm256_shuffle_i32x4(__m256i __A, __m256i __B) {9152  // CHECK-LABEL: test_mm256_shuffle_i32x49153  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>9154  return _mm256_shuffle_i32x4(__A, __B, 3); 9155}9156TEST_CONSTEXPR(match_v8si(_mm256_shuffle_i32x4(((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), ((__m256i)(__v8si){10, 20, 30, 40, 50, 60, 70, 80}), 0), 1, 2, 3, 4, 10, 20, 30, 40));9157 9158__m256i test_mm256_mask_shuffle_i32x4(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {9159  // CHECK-LABEL: test_mm256_mask_shuffle_i32x49160  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>9161  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}9162  return _mm256_mask_shuffle_i32x4(__W, __U, __A, __B, 3); 9163}9164TEST_CONSTEXPR(match_v8si(_mm256_mask_shuffle_i32x4(((__m256i)(__v8si){100, 200, 300, 400, 500, 600, 700, 800}), 0b00000000, ((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), ((__m256i)(__v8si){10, 20, 30, 40, 50, 60, 70, 80}), 0), 100, 200, 300, 400, 500, 600, 700, 800));9165 9166__m256i test_mm256_maskz_shuffle_i32x4(__mmask8 __U, __m256i __A, __m256i __B) {9167  // CHECK-LABEL: test_mm256_maskz_shuffle_i32x49168  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 4, i32 5, i32 6, i32 7, i32 12, i32 13, i32 14, i32 15>9169  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}9170  return _mm256_maskz_shuffle_i32x4(__U, __A, __B, 3); 9171}9172TEST_CONSTEXPR(match_v8si(_mm256_maskz_shuffle_i32x4(0b11111111, ((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), ((__m256i)(__v8si){10, 20, 30, 40, 50, 60, 70, 80}), 0), 1, 2, 3, 4, 10, 20, 30, 40));9173 9174__m256i test_mm256_shuffle_i64x2(__m256i __A, __m256i __B) {9175  // CHECK-LABEL: test_mm256_shuffle_i64x29176  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>9177  return _mm256_shuffle_i64x2(__A, __B, 3); 9178}9179TEST_CONSTEXPR(match_m256i(_mm256_shuffle_i64x2(((__m256i){1ULL, 2ULL, 3ULL, 4ULL}), ((__m256i){10ULL, 20ULL, 30ULL, 40ULL}), 2), 1ULL, 2ULL, 30ULL, 40ULL));9180 9181__m256i test_mm256_mask_shuffle_i64x2(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {9182  // CHECK-LABEL: test_mm256_mask_shuffle_i64x29183  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>9184  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>9185  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}9186  return _mm256_mask_shuffle_i64x2(__W, __U, __A, __B, 3); 9187}9188TEST_CONSTEXPR(match_m256i(_mm256_mask_shuffle_i64x2(((__m256i){100ULL, 200ULL, 300ULL, 400ULL}), 0b00001101, ((__m256i){1ULL, 2ULL, 3ULL, 4ULL}), ((__m256i){10ULL, 20ULL, 30ULL, 40ULL}), 2), 1ULL, 200ULL, 30ULL, 40ULL));9189 9190__m256i test_mm256_maskz_shuffle_i64x2(__mmask8 __U, __m256i __A, __m256i __B) {9191  // CHECK-LABEL: test_mm256_maskz_shuffle_i64x29192  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 2, i32 3, i32 6, i32 7>9193  // CHECK: shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>9194  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}9195  return _mm256_maskz_shuffle_i64x2(__U, __A, __B, 3); 9196}9197TEST_CONSTEXPR(match_m256i(_mm256_maskz_shuffle_i64x2( 0b00000110, ((__m256i){1ULL, 2ULL, 3ULL, 4ULL}), ((__m256i){10ULL, 20ULL, 30ULL, 40ULL}), 2), 0ULL, 2ULL, 30ULL, 0ULL));9198 9199__m128d test_mm_mask_shuffle_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {9200  // CHECK-LABEL: test_mm_mask_shuffle_pd9201  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>9202  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}9203  return _mm_mask_shuffle_pd(__W, __U, __A, __B, 3); 9204}9205 9206__m128d test_mm_maskz_shuffle_pd(__mmask8 __U, __m128d __A, __m128d __B) {9207  // CHECK-LABEL: test_mm_maskz_shuffle_pd9208  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <2 x i32> <i32 1, i32 3>9209  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}9210  return _mm_maskz_shuffle_pd(__U, __A, __B, 3); 9211}9212 9213__m256d test_mm256_mask_shuffle_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {9214  // CHECK-LABEL: test_mm256_mask_shuffle_pd9215  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>9216  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}9217  return _mm256_mask_shuffle_pd(__W, __U, __A, __B, 3); 9218}9219 9220__m256d test_mm256_maskz_shuffle_pd(__mmask8 __U, __m256d __A, __m256d __B) {9221  // CHECK-LABEL: test_mm256_maskz_shuffle_pd9222  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 1, i32 5, i32 2, i32 6>9223  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}9224  return _mm256_maskz_shuffle_pd(__U, __A, __B, 3); 9225}9226 9227__m128 test_mm_mask_shuffle_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {9228  // CHECK-LABEL: test_mm_mask_shuffle_ps9229  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>9230  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}9231  return _mm_mask_shuffle_ps(__W, __U, __A, __B, 4); 9232}9233 9234__m128 test_mm_maskz_shuffle_ps(__mmask8 __U, __m128 __A, __m128 __B) {9235  // CHECK-LABEL: test_mm_maskz_shuffle_ps9236  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 4>9237  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}9238  return _mm_maskz_shuffle_ps(__U, __A, __B, 4); 9239}9240 9241__m256 test_mm256_mask_shuffle_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {9242  // CHECK-LABEL: test_mm256_mask_shuffle_ps9243  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>9244  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9245  return _mm256_mask_shuffle_ps(__W, __U, __A, __B, 4); 9246}9247 9248__m256 test_mm256_maskz_shuffle_ps(__mmask8 __U, __m256 __A, __m256 __B) {9249  // CHECK-LABEL: test_mm256_maskz_shuffle_ps9250  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 8, i32 8, i32 4, i32 5, i32 12, i32 12>9251  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9252  return _mm256_maskz_shuffle_ps(__U, __A, __B, 4);9253}9254 9255TEST_CONSTEXPR((match_m128d(_mm_maskz_shuffle_pd(0x3, ((__m128d)(__v2df){1.0, 2.0}), ((__m128d)(__v2df){3.0, 4.0}), 3), 2.0, 4.0)));9256TEST_CONSTEXPR((match_m256d(_mm256_maskz_shuffle_pd(0xF, ((__m256d)(__v4df){1.0, 2.0, 3.0, 4.0}), ((__m256d)(__v4df){5.0, 6.0, 7.0, 8.0}), 15), 2.0, 6.0, 4.0, 8.0)));9257TEST_CONSTEXPR((match_m128(_mm_maskz_shuffle_ps(0xF, ((__m128)(__v4sf){1.0f, 2.0f, 3.0f, 4.0f}), ((__m128)(__v4sf){5.0f, 6.0f, 7.0f, 8.0f}), 4), 1.0f, 2.0f, 5.0f, 5.0f)));9258TEST_CONSTEXPR((match_m256(_mm256_maskz_shuffle_ps(0xFF, ((__m256)(__v8sf){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}), ((__m256)(__v8sf){9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f}), 4), 1.0f, 2.0f, 9.0f, 9.0f, 5.0f, 6.0f, 13.0f, 13.0f)));9259 9260__m128d test_mm_rsqrt14_pd(__m128d __A) {9261  // CHECK-LABEL: test_mm_rsqrt14_pd9262  // CHECK: @llvm.x86.avx512.rsqrt14.pd.1289263  return _mm_rsqrt14_pd(__A); 9264}9265 9266__m128d test_mm_mask_rsqrt14_pd(__m128d __W, __mmask8 __U, __m128d __A) {9267  // CHECK-LABEL: test_mm_mask_rsqrt14_pd9268  // CHECK: @llvm.x86.avx512.rsqrt14.pd.1289269  return _mm_mask_rsqrt14_pd(__W, __U, __A); 9270}9271 9272__m128d test_mm_maskz_rsqrt14_pd(__mmask8 __U, __m128d __A) {9273  // CHECK-LABEL: test_mm_maskz_rsqrt14_pd9274  // CHECK: @llvm.x86.avx512.rsqrt14.pd.1289275  return _mm_maskz_rsqrt14_pd(__U, __A); 9276}9277 9278__m256d test_mm256_rsqrt14_pd(__m256d __A) {9279  // CHECK-LABEL: test_mm256_rsqrt14_pd9280  // CHECK: @llvm.x86.avx512.rsqrt14.pd.2569281  return _mm256_rsqrt14_pd(__A); 9282}9283 9284__m256d test_mm256_mask_rsqrt14_pd(__m256d __W, __mmask8 __U, __m256d __A) {9285  // CHECK-LABEL: test_mm256_mask_rsqrt14_pd9286  // CHECK: @llvm.x86.avx512.rsqrt14.pd.2569287  return _mm256_mask_rsqrt14_pd(__W, __U, __A); 9288}9289 9290__m256d test_mm256_maskz_rsqrt14_pd(__mmask8 __U, __m256d __A) {9291  // CHECK-LABEL: test_mm256_maskz_rsqrt14_pd9292  // CHECK: @llvm.x86.avx512.rsqrt14.pd.2569293  return _mm256_maskz_rsqrt14_pd(__U, __A); 9294}9295 9296__m128 test_mm_rsqrt14_ps(__m128 __A) {9297  // CHECK-LABEL: test_mm_rsqrt14_ps9298  // CHECK: @llvm.x86.avx512.rsqrt14.ps.1289299  return _mm_rsqrt14_ps(__A); 9300}9301 9302__m128 test_mm_mask_rsqrt14_ps(__m128 __W, __mmask8 __U, __m128 __A) {9303  // CHECK-LABEL: test_mm_mask_rsqrt14_ps9304  // CHECK: @llvm.x86.avx512.rsqrt14.ps.1289305  return _mm_mask_rsqrt14_ps(__W, __U, __A); 9306}9307 9308__m128 test_mm_maskz_rsqrt14_ps(__mmask8 __U, __m128 __A) {9309  // CHECK-LABEL: test_mm_maskz_rsqrt14_ps9310  // CHECK: @llvm.x86.avx512.rsqrt14.ps.1289311  return _mm_maskz_rsqrt14_ps(__U, __A); 9312}9313 9314__m256 test_mm256_rsqrt14_ps(__m256 __A) {9315  // CHECK-LABEL: test_mm256_rsqrt14_ps9316  // CHECK: @llvm.x86.avx512.rsqrt14.ps.2569317  return _mm256_rsqrt14_ps(__A); 9318}9319 9320__m256 test_mm256_mask_rsqrt14_ps(__m256 __W, __mmask8 __U, __m256 __A) {9321  // CHECK-LABEL: test_mm256_mask_rsqrt14_ps9322  // CHECK: @llvm.x86.avx512.rsqrt14.ps.2569323  return _mm256_mask_rsqrt14_ps(__W, __U, __A); 9324}9325 9326__m256 test_mm256_maskz_rsqrt14_ps(__mmask8 __U, __m256 __A) {9327  // CHECK-LABEL: test_mm256_maskz_rsqrt14_ps9328  // CHECK: @llvm.x86.avx512.rsqrt14.ps.2569329  return _mm256_maskz_rsqrt14_ps(__U, __A); 9330}9331 9332__m256 test_mm256_broadcast_f32x4(__m128 __A) {9333  // CHECK-LABEL: test_mm256_broadcast_f32x49334  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>9335  return _mm256_broadcast_f32x4(__A); 9336}9337TEST_CONSTEXPR(match_m256(_mm256_broadcast_f32x4((__m128)(__v4sf){1.0f, 3.0f, -5.0f, -8.0f}), 1.0f, 3.0f, -5.0f, -8.0f, 1.0f, 3.0f, -5.0f, -8.0f));9338 9339__m256 test_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A) {9340  // CHECK-LABEL: test_mm256_mask_broadcast_f32x49341  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>9342  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9343  return _mm256_mask_broadcast_f32x4(__O, __M, __A); 9344}9345 9346__m256 test_mm256_maskz_broadcast_f32x4(__mmask8 __M, __m128 __A) {9347  // CHECK-LABEL: test_mm256_maskz_broadcast_f32x49348  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>9349  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9350  return _mm256_maskz_broadcast_f32x4(__M, __A); 9351}9352 9353TEST_CONSTEXPR(match_m256(_mm256_maskz_broadcast_f32x4(0xAA, (__m128)(__v4sf){0,1,2,3}), 0,1,0,3,0,1,0,3));9354 9355__m256i test_mm256_broadcast_i32x4(__m128i const* __A) {9356  // CHECK-LABEL: test_mm256_broadcast_i32x49357  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>9358  return _mm256_broadcast_i32x4(_mm_loadu_si128(__A)); 9359}9360TEST_CONSTEXPR(match_v8si(_mm256_broadcast_i32x4((__m128i)(__v4si){1, 3, -5, -8}), 1, 3, -5, -8, 1, 3, -5, -8));9361 9362__m256i test_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i const* __A) {9363  // CHECK-LABEL: test_mm256_mask_broadcast_i32x49364  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>9365  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}9366  return _mm256_mask_broadcast_i32x4(__O, __M, _mm_loadu_si128(__A)); 9367}9368 9369__m256i test_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i const* __A) {9370  // CHECK-LABEL: test_mm256_maskz_broadcast_i32x49371  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3>9372  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}9373  return _mm256_maskz_broadcast_i32x4(__M, _mm_loadu_si128(__A)); 9374}9375 9376TEST_CONSTEXPR(match_v8si(_mm256_maskz_broadcast_i32x4(0xAA, (__m128i)(__v4si){0,1,2,3}), 0,1,0,3,0,1,0,3));9377 9378__m256d test_mm256_mask_broadcastsd_pd(__m256d __O, __mmask8 __M, __m128d __A) {9379  // CHECK-LABEL: test_mm256_mask_broadcastsd_pd9380  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer9381  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}9382  return _mm256_mask_broadcastsd_pd(__O, __M, __A);9383}9384 9385__m256d test_mm256_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) {9386  // CHECK-LABEL: test_mm256_maskz_broadcastsd_pd9387  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> zeroinitializer9388  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}9389  return _mm256_maskz_broadcastsd_pd(__M, __A);9390}9391 9392__m128 test_mm_mask_broadcastss_ps(__m128 __O, __mmask8 __M, __m128 __A) {9393  // CHECK-LABEL: test_mm_mask_broadcastss_ps9394  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer9395  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}9396  return _mm_mask_broadcastss_ps(__O, __M, __A);9397}9398 9399__m128 test_mm_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {9400  // CHECK-LABEL: test_mm_maskz_broadcastss_ps9401  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> zeroinitializer9402  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}9403  return _mm_maskz_broadcastss_ps(__M, __A);9404}9405 9406__m256 test_mm256_mask_broadcastss_ps(__m256 __O, __mmask8 __M, __m128 __A) {9407  // CHECK-LABEL: test_mm256_mask_broadcastss_ps9408  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer9409  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9410  return _mm256_mask_broadcastss_ps(__O, __M, __A);9411}9412 9413__m256 test_mm256_maskz_broadcastss_ps(__mmask8 __M, __m128 __A) {9414  // CHECK-LABEL: test_mm256_maskz_broadcastss_ps9415  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> zeroinitializer9416  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}9417  return _mm256_maskz_broadcastss_ps(__M, __A);9418}9419 9420__m128i test_mm_mask_broadcastd_epi32(__m128i __O, __mmask8 __M, __m128i __A) {9421  // CHECK-LABEL: test_mm_mask_broadcastd_epi329422  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer9423  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}9424  return _mm_mask_broadcastd_epi32(__O, __M, __A);9425}9426 9427__m128i test_mm_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {9428  // CHECK-LABEL: test_mm_maskz_broadcastd_epi329429  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> zeroinitializer9430  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}9431  return _mm_maskz_broadcastd_epi32(__M, __A);9432}9433 9434__m256i test_mm256_mask_broadcastd_epi32(__m256i __O, __mmask8 __M, __m128i __A) {9435  // CHECK-LABEL: test_mm256_mask_broadcastd_epi329436  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer9437  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}9438  return _mm256_mask_broadcastd_epi32(__O, __M, __A);9439}9440 9441__m256i test_mm256_maskz_broadcastd_epi32(__mmask8 __M, __m128i __A) {9442  // CHECK-LABEL: test_mm256_maskz_broadcastd_epi329443  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> zeroinitializer9444  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}9445  return _mm256_maskz_broadcastd_epi32(__M, __A);9446}9447 9448__m128i test_mm_mask_broadcastq_epi64(__m128i __O, __mmask8 __M, __m128i __A) {9449  // CHECK-LABEL: test_mm_mask_broadcastq_epi649450  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer9451  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}9452  return _mm_mask_broadcastq_epi64(__O, __M, __A);9453}9454 9455__m128i test_mm_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {9456  // CHECK-LABEL: test_mm_maskz_broadcastq_epi649457  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> zeroinitializer9458  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}9459  return _mm_maskz_broadcastq_epi64(__M, __A);9460}9461 9462__m256i test_mm256_mask_broadcastq_epi64(__m256i __O, __mmask8 __M, __m128i __A) {9463  // CHECK-LABEL: test_mm256_mask_broadcastq_epi649464  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer9465  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}9466  return _mm256_mask_broadcastq_epi64(__O, __M, __A);9467}9468 9469__m256i test_mm256_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) {9470  // CHECK-LABEL: test_mm256_maskz_broadcastq_epi649471  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> zeroinitializer9472  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}9473  return _mm256_maskz_broadcastq_epi64(__M, __A);9474}9475 9476__m128i test_mm_cvtsepi32_epi8(__m128i __A) {9477  // CHECK-LABEL: test_mm_cvtsepi32_epi89478  // CHECK: @llvm.x86.avx512.mask.pmovs.db.1289479  return _mm_cvtsepi32_epi8(__A); 9480}9481 9482__m128i test_mm_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {9483  // CHECK-LABEL: test_mm_mask_cvtsepi32_epi89484  // CHECK: @llvm.x86.avx512.mask.pmovs.db.1289485  return _mm_mask_cvtsepi32_epi8(__O, __M, __A); 9486}9487 9488__m128i test_mm_maskz_cvtsepi32_epi8(__mmask8 __M, __m128i __A) {9489  // CHECK-LABEL: test_mm_maskz_cvtsepi32_epi89490  // CHECK: @llvm.x86.avx512.mask.pmovs.db.1289491  return _mm_maskz_cvtsepi32_epi8(__M, __A); 9492}9493 9494void test_mm_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {9495  // CHECK-LABEL: test_mm_mask_cvtsepi32_storeu_epi89496  // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.1289497  return _mm_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 9498}9499 9500__m128i test_mm256_cvtsepi32_epi8(__m256i __A) {9501  // CHECK-LABEL: test_mm256_cvtsepi32_epi89502  // CHECK: @llvm.x86.avx512.mask.pmovs.db.2569503  return _mm256_cvtsepi32_epi8(__A); 9504}9505 9506__m128i test_mm256_mask_cvtsepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {9507  // CHECK-LABEL: test_mm256_mask_cvtsepi32_epi89508  // CHECK: @llvm.x86.avx512.mask.pmovs.db.2569509  return _mm256_mask_cvtsepi32_epi8(__O, __M, __A); 9510}9511 9512__m128i test_mm256_maskz_cvtsepi32_epi8(__mmask8 __M, __m256i __A) {9513  // CHECK-LABEL: test_mm256_maskz_cvtsepi32_epi89514  // CHECK: @llvm.x86.avx512.mask.pmovs.db.2569515  return _mm256_maskz_cvtsepi32_epi8(__M, __A); 9516}9517 9518void test_mm256_mask_cvtsepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {9519  // CHECK-LABEL: test_mm256_mask_cvtsepi32_storeu_epi89520  // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.2569521  return _mm256_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 9522}9523 9524__m128i test_mm_cvtsepi32_epi16(__m128i __A) {9525  // CHECK-LABEL: test_mm_cvtsepi32_epi169526  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.1289527  return _mm_cvtsepi32_epi16(__A); 9528}9529 9530__m128i test_mm_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {9531  // CHECK-LABEL: test_mm_mask_cvtsepi32_epi169532  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.1289533  return _mm_mask_cvtsepi32_epi16(__O, __M, __A); 9534}9535 9536__m128i test_mm_maskz_cvtsepi32_epi16(__mmask8 __M, __m128i __A) {9537  // CHECK-LABEL: test_mm_maskz_cvtsepi32_epi169538  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.1289539  return _mm_maskz_cvtsepi32_epi16(__M, __A); 9540}9541 9542void test_mm_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {9543  // CHECK-LABEL: test_mm_mask_cvtsepi32_storeu_epi169544  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.1289545  return _mm_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 9546}9547 9548__m128i test_mm256_cvtsepi32_epi16(__m256i __A) {9549  // CHECK-LABEL: test_mm256_cvtsepi32_epi169550  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.2569551  return _mm256_cvtsepi32_epi16(__A); 9552}9553 9554__m128i test_mm256_mask_cvtsepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {9555  // CHECK-LABEL: test_mm256_mask_cvtsepi32_epi169556  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.2569557  return _mm256_mask_cvtsepi32_epi16(__O, __M, __A); 9558}9559 9560__m128i test_mm256_maskz_cvtsepi32_epi16(__mmask8 __M, __m256i __A) {9561  // CHECK-LABEL: test_mm256_maskz_cvtsepi32_epi169562  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.2569563  return _mm256_maskz_cvtsepi32_epi16(__M, __A); 9564}9565 9566void test_mm256_mask_cvtsepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {9567  // CHECK-LABEL: test_mm256_mask_cvtsepi32_storeu_epi169568  // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.2569569  return _mm256_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 9570}9571 9572__m128i test_mm_cvtsepi64_epi8(__m128i __A) {9573  // CHECK-LABEL: test_mm_cvtsepi64_epi89574  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.1289575  return _mm_cvtsepi64_epi8(__A); 9576}9577 9578__m128i test_mm_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {9579  // CHECK-LABEL: test_mm_mask_cvtsepi64_epi89580  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.1289581  return _mm_mask_cvtsepi64_epi8(__O, __M, __A); 9582}9583 9584__m128i test_mm_maskz_cvtsepi64_epi8(__mmask8 __M, __m128i __A) {9585  // CHECK-LABEL: test_mm_maskz_cvtsepi64_epi89586  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.1289587  return _mm_maskz_cvtsepi64_epi8(__M, __A); 9588}9589 9590void test_mm_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {9591  // CHECK-LABEL: test_mm_mask_cvtsepi64_storeu_epi89592  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.1289593  return _mm_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 9594}9595 9596__m128i test_mm256_cvtsepi64_epi8(__m256i __A) {9597  // CHECK-LABEL: test_mm256_cvtsepi64_epi89598  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.2569599  return _mm256_cvtsepi64_epi8(__A); 9600}9601 9602__m128i test_mm256_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {9603  // CHECK-LABEL: test_mm256_mask_cvtsepi64_epi89604  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.2569605  return _mm256_mask_cvtsepi64_epi8(__O, __M, __A); 9606}9607 9608__m128i test_mm256_maskz_cvtsepi64_epi8(__mmask8 __M, __m256i __A) {9609  // CHECK-LABEL: test_mm256_maskz_cvtsepi64_epi89610  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.2569611  return _mm256_maskz_cvtsepi64_epi8(__M, __A); 9612}9613 9614void test_mm256_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {9615  // CHECK-LABEL: test_mm256_mask_cvtsepi64_storeu_epi89616  // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.2569617  return _mm256_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 9618}9619 9620__m128i test_mm_cvtsepi64_epi32(__m128i __A) {9621  // CHECK-LABEL: test_mm_cvtsepi64_epi329622  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.1289623  return _mm_cvtsepi64_epi32(__A); 9624}9625 9626__m128i test_mm_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {9627  // CHECK-LABEL: test_mm_mask_cvtsepi64_epi329628  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.1289629  return _mm_mask_cvtsepi64_epi32(__O, __M, __A); 9630}9631 9632__m128i test_mm_maskz_cvtsepi64_epi32(__mmask8 __M, __m128i __A) {9633  // CHECK-LABEL: test_mm_maskz_cvtsepi64_epi329634  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.1289635  return _mm_maskz_cvtsepi64_epi32(__M, __A); 9636}9637 9638void test_mm_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {9639  // CHECK-LABEL: test_mm_mask_cvtsepi64_storeu_epi329640  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.1289641  return _mm_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 9642}9643 9644__m128i test_mm256_cvtsepi64_epi32(__m256i __A) {9645  // CHECK-LABEL: test_mm256_cvtsepi64_epi329646  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.2569647  return _mm256_cvtsepi64_epi32(__A); 9648}9649 9650__m128i test_mm256_mask_cvtsepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {9651  // CHECK-LABEL: test_mm256_mask_cvtsepi64_epi329652  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.2569653  return _mm256_mask_cvtsepi64_epi32(__O, __M, __A); 9654}9655 9656__m128i test_mm256_maskz_cvtsepi64_epi32(__mmask8 __M, __m256i __A) {9657  // CHECK-LABEL: test_mm256_maskz_cvtsepi64_epi329658  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.2569659  return _mm256_maskz_cvtsepi64_epi32(__M, __A); 9660}9661 9662void test_mm256_mask_cvtsepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {9663  // CHECK-LABEL: test_mm256_mask_cvtsepi64_storeu_epi329664  // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.2569665  return _mm256_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 9666}9667 9668__m128i test_mm_cvtsepi64_epi16(__m128i __A) {9669  // CHECK-LABEL: test_mm_cvtsepi64_epi169670  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.1289671  return _mm_cvtsepi64_epi16(__A); 9672}9673 9674__m128i test_mm_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {9675  // CHECK-LABEL: test_mm_mask_cvtsepi64_epi169676  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.1289677  return _mm_mask_cvtsepi64_epi16(__O, __M, __A); 9678}9679 9680__m128i test_mm_maskz_cvtsepi64_epi16(__mmask8 __M, __m128i __A) {9681  // CHECK-LABEL: test_mm_maskz_cvtsepi64_epi169682  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.1289683  return _mm_maskz_cvtsepi64_epi16(__M, __A); 9684}9685 9686void test_mm_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {9687  // CHECK-LABEL: test_mm_mask_cvtsepi64_storeu_epi169688  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.1289689  return _mm_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 9690}9691 9692__m128i test_mm256_cvtsepi64_epi16(__m256i __A) {9693  // CHECK-LABEL: test_mm256_cvtsepi64_epi169694  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.2569695  return _mm256_cvtsepi64_epi16(__A); 9696}9697 9698__m128i test_mm256_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {9699  // CHECK-LABEL: test_mm256_mask_cvtsepi64_epi169700  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.2569701  return _mm256_mask_cvtsepi64_epi16(__O, __M, __A); 9702}9703 9704__m128i test_mm256_maskz_cvtsepi64_epi16(__mmask8 __M, __m256i __A) {9705  // CHECK-LABEL: test_mm256_maskz_cvtsepi64_epi169706  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.2569707  return _mm256_maskz_cvtsepi64_epi16(__M, __A); 9708}9709 9710void test_mm256_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {9711  // CHECK-LABEL: test_mm256_mask_cvtsepi64_storeu_epi169712  // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.2569713  return _mm256_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 9714}9715 9716__m128i test_mm_cvtusepi32_epi8(__m128i __A) {9717  // CHECK-LABEL: test_mm_cvtusepi32_epi89718  // CHECK: @llvm.x86.avx512.mask.pmovus.db.1289719  return _mm_cvtusepi32_epi8(__A); 9720}9721 9722__m128i test_mm_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {9723  // CHECK-LABEL: test_mm_mask_cvtusepi32_epi89724  // CHECK: @llvm.x86.avx512.mask.pmovus.db.1289725  return _mm_mask_cvtusepi32_epi8(__O, __M, __A); 9726}9727 9728__m128i test_mm_maskz_cvtusepi32_epi8(__mmask8 __M, __m128i __A) {9729  // CHECK-LABEL: test_mm_maskz_cvtusepi32_epi89730  // CHECK: @llvm.x86.avx512.mask.pmovus.db.1289731  return _mm_maskz_cvtusepi32_epi8(__M, __A); 9732}9733 9734void test_mm_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {9735  // CHECK-LABEL: test_mm_mask_cvtusepi32_storeu_epi89736  // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.1289737  return _mm_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 9738}9739 9740__m128i test_mm256_cvtusepi32_epi8(__m256i __A) {9741  // CHECK-LABEL: test_mm256_cvtusepi32_epi89742  // CHECK: @llvm.x86.avx512.mask.pmovus.db.2569743  return _mm256_cvtusepi32_epi8(__A); 9744}9745 9746__m128i test_mm256_mask_cvtusepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {9747  // CHECK-LABEL: test_mm256_mask_cvtusepi32_epi89748  // CHECK: @llvm.x86.avx512.mask.pmovus.db.2569749  return _mm256_mask_cvtusepi32_epi8(__O, __M, __A); 9750}9751 9752__m128i test_mm256_maskz_cvtusepi32_epi8(__mmask8 __M, __m256i __A) {9753  // CHECK-LABEL: test_mm256_maskz_cvtusepi32_epi89754  // CHECK: @llvm.x86.avx512.mask.pmovus.db.2569755  return _mm256_maskz_cvtusepi32_epi8(__M, __A); 9756}9757 9758void test_mm256_mask_cvtusepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {9759  // CHECK-LABEL: test_mm256_mask_cvtusepi32_storeu_epi89760  // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.2569761  return _mm256_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 9762}9763 9764__m128i test_mm_cvtusepi32_epi16(__m128i __A) {9765  // CHECK-LABEL: test_mm_cvtusepi32_epi169766  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.1289767  return _mm_cvtusepi32_epi16(__A); 9768}9769 9770__m128i test_mm_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {9771  // CHECK-LABEL: test_mm_mask_cvtusepi32_epi169772  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.1289773  return _mm_mask_cvtusepi32_epi16(__O, __M, __A); 9774}9775 9776__m128i test_mm_maskz_cvtusepi32_epi16(__mmask8 __M, __m128i __A) {9777  // CHECK-LABEL: test_mm_maskz_cvtusepi32_epi169778  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.1289779  return _mm_maskz_cvtusepi32_epi16(__M, __A); 9780}9781 9782void test_mm_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {9783  // CHECK-LABEL: test_mm_mask_cvtusepi32_storeu_epi169784  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.1289785  return _mm_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 9786}9787 9788__m128i test_mm256_cvtusepi32_epi16(__m256i __A) {9789  // CHECK-LABEL: test_mm256_cvtusepi32_epi169790  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.2569791  return _mm256_cvtusepi32_epi16(__A); 9792}9793 9794__m128i test_mm256_mask_cvtusepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {9795  // CHECK-LABEL: test_mm256_mask_cvtusepi32_epi169796  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.2569797  return _mm256_mask_cvtusepi32_epi16(__O, __M, __A); 9798}9799 9800__m128i test_mm256_maskz_cvtusepi32_epi16(__mmask8 __M, __m256i __A) {9801  // CHECK-LABEL: test_mm256_maskz_cvtusepi32_epi169802  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.2569803  return _mm256_maskz_cvtusepi32_epi16(__M, __A); 9804}9805 9806void test_mm256_mask_cvtusepi32_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {9807  // CHECK-LABEL: test_mm256_mask_cvtusepi32_storeu_epi169808  // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.2569809  return _mm256_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 9810}9811 9812__m128i test_mm_cvtusepi64_epi8(__m128i __A) {9813  // CHECK-LABEL: test_mm_cvtusepi64_epi89814  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.1289815  return _mm_cvtusepi64_epi8(__A); 9816}9817 9818__m128i test_mm_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {9819  // CHECK-LABEL: test_mm_mask_cvtusepi64_epi89820  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.1289821  return _mm_mask_cvtusepi64_epi8(__O, __M, __A); 9822}9823 9824__m128i test_mm_maskz_cvtusepi64_epi8(__mmask8 __M, __m128i __A) {9825  // CHECK-LABEL: test_mm_maskz_cvtusepi64_epi89826  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.1289827  return _mm_maskz_cvtusepi64_epi8(__M, __A); 9828}9829 9830void test_mm_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {9831  // CHECK-LABEL: test_mm_mask_cvtusepi64_storeu_epi89832  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.1289833  return _mm_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 9834}9835 9836__m128i test_mm256_cvtusepi64_epi8(__m256i __A) {9837  // CHECK-LABEL: test_mm256_cvtusepi64_epi89838  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.2569839  return _mm256_cvtusepi64_epi8(__A); 9840}9841 9842__m128i test_mm256_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {9843  // CHECK-LABEL: test_mm256_mask_cvtusepi64_epi89844  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.2569845  return _mm256_mask_cvtusepi64_epi8(__O, __M, __A); 9846}9847 9848__m128i test_mm256_maskz_cvtusepi64_epi8(__mmask8 __M, __m256i __A) {9849  // CHECK-LABEL: test_mm256_maskz_cvtusepi64_epi89850  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.2569851  return _mm256_maskz_cvtusepi64_epi8(__M, __A); 9852}9853 9854void test_mm256_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {9855  // CHECK-LABEL: test_mm256_mask_cvtusepi64_storeu_epi89856  // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.2569857  return _mm256_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 9858}9859 9860__m128i test_mm_cvtusepi64_epi32(__m128i __A) {9861  // CHECK-LABEL: test_mm_cvtusepi64_epi329862  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.1289863  return _mm_cvtusepi64_epi32(__A); 9864}9865 9866__m128i test_mm_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {9867  // CHECK-LABEL: test_mm_mask_cvtusepi64_epi329868  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.1289869  return _mm_mask_cvtusepi64_epi32(__O, __M, __A); 9870}9871 9872__m128i test_mm_maskz_cvtusepi64_epi32(__mmask8 __M, __m128i __A) {9873  // CHECK-LABEL: test_mm_maskz_cvtusepi64_epi329874  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.1289875  return _mm_maskz_cvtusepi64_epi32(__M, __A); 9876}9877 9878void test_mm_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {9879  // CHECK-LABEL: test_mm_mask_cvtusepi64_storeu_epi329880  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.1289881  return _mm_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 9882}9883 9884__m128i test_mm256_cvtusepi64_epi32(__m256i __A) {9885  // CHECK-LABEL: test_mm256_cvtusepi64_epi329886  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.2569887  return _mm256_cvtusepi64_epi32(__A); 9888}9889 9890__m128i test_mm256_mask_cvtusepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {9891  // CHECK-LABEL: test_mm256_mask_cvtusepi64_epi329892  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.2569893  return _mm256_mask_cvtusepi64_epi32(__O, __M, __A); 9894}9895 9896__m128i test_mm256_maskz_cvtusepi64_epi32(__mmask8 __M, __m256i __A) {9897  // CHECK-LABEL: test_mm256_maskz_cvtusepi64_epi329898  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.2569899  return _mm256_maskz_cvtusepi64_epi32(__M, __A); 9900}9901 9902void test_mm256_mask_cvtusepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {9903  // CHECK-LABEL: test_mm256_mask_cvtusepi64_storeu_epi329904  // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.2569905  return _mm256_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 9906}9907 9908__m128i test_mm_cvtusepi64_epi16(__m128i __A) {9909  // CHECK-LABEL: test_mm_cvtusepi64_epi169910  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.1289911  return _mm_cvtusepi64_epi16(__A); 9912}9913 9914__m128i test_mm_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {9915  // CHECK-LABEL: test_mm_mask_cvtusepi64_epi169916  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.1289917  return _mm_mask_cvtusepi64_epi16(__O, __M, __A); 9918}9919 9920__m128i test_mm_maskz_cvtusepi64_epi16(__mmask8 __M, __m128i __A) {9921  // CHECK-LABEL: test_mm_maskz_cvtusepi64_epi169922  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.1289923  return _mm_maskz_cvtusepi64_epi16(__M, __A); 9924}9925 9926void test_mm_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {9927  // CHECK-LABEL: test_mm_mask_cvtusepi64_storeu_epi169928  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.1289929  return _mm_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 9930}9931 9932__m128i test_mm256_cvtusepi64_epi16(__m256i __A) {9933  // CHECK-LABEL: test_mm256_cvtusepi64_epi169934  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.2569935  return _mm256_cvtusepi64_epi16(__A); 9936}9937 9938__m128i test_mm256_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {9939  // CHECK-LABEL: test_mm256_mask_cvtusepi64_epi169940  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.2569941  return _mm256_mask_cvtusepi64_epi16(__O, __M, __A); 9942}9943 9944__m128i test_mm256_maskz_cvtusepi64_epi16(__mmask8 __M, __m256i __A) {9945  // CHECK-LABEL: test_mm256_maskz_cvtusepi64_epi169946  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.2569947  return _mm256_maskz_cvtusepi64_epi16(__M, __A); 9948}9949 9950void test_mm256_mask_cvtusepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {9951  // CHECK-LABEL: test_mm256_mask_cvtusepi64_storeu_epi169952  // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.2569953  return _mm256_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 9954}9955 9956__m128i test_mm_cvtepi32_epi8(__m128i __A) {9957  // CHECK-LABEL: test_mm_cvtepi32_epi89958  // CHECK: trunc <4 x i32> %{{.*}} to <4 x i8>9959  // CHECK: shufflevector <4 x i8> %{{.*}}, <4 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>9960  return _mm_cvtepi32_epi8(__A); 9961}9962 9963TEST_CONSTEXPR(match_v16qi(_mm_cvtepi32_epi8((__m128i)(__v4si){1, 2, 3, 4}), 1 ,2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));9964 9965__m128i test_mm_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {9966  // CHECK-LABEL: test_mm_mask_cvtepi32_epi89967  // CHECK: @llvm.x86.avx512.mask.pmov.db.1289968  return _mm_mask_cvtepi32_epi8(__O, __M, __A); 9969}9970 9971__m128i test_mm_maskz_cvtepi32_epi8(__mmask8 __M, __m128i __A) {9972  // CHECK-LABEL: test_mm_maskz_cvtepi32_epi89973  // CHECK: @llvm.x86.avx512.mask.pmov.db.1289974  return _mm_maskz_cvtepi32_epi8(__M, __A); 9975}9976 9977void test_mm_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {9978  // CHECK-LABEL: test_mm_mask_cvtepi32_storeu_epi89979  // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.1289980  return _mm_mask_cvtepi32_storeu_epi8(__P, __M, __A); 9981}9982 9983__m128i test_mm256_cvtepi32_epi8(__m256i __A) {9984  // CHECK-LABEL: test_mm256_cvtepi32_epi89985  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i8>9986  // 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>9987  return _mm256_cvtepi32_epi8(__A); 9988}9989 9990TEST_CONSTEXPR(match_v16qi(_mm256_cvtepi32_epi8((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0 ,0));9991 9992__m128i test_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {9993  // CHECK-LABEL: test_mm256_mask_cvtepi32_epi89994  // CHECK: @llvm.x86.avx512.mask.pmov.db.2569995  return _mm256_mask_cvtepi32_epi8(__O, __M, __A); 9996}9997 9998__m128i test_mm256_maskz_cvtepi32_epi8(__mmask8 __M, __m256i __A) {9999  // CHECK-LABEL: test_mm256_maskz_cvtepi32_epi810000  // CHECK: @llvm.x86.avx512.mask.pmov.db.25610001  return _mm256_maskz_cvtepi32_epi8(__M, __A); 10002}10003 10004void test_mm256_mask_cvtepi32_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {10005  // CHECK-LABEL: test_mm256_mask_cvtepi32_storeu_epi810006  // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.25610007  return _mm256_mask_cvtepi32_storeu_epi8(__P, __M, __A); 10008}10009 10010__m128i test_mm_cvtepi32_epi16(__m128i __A) {10011  // CHECK-LABEL: test_mm_cvtepi32_epi1610012  // CHECK: trunc <4 x i32> %{{.*}} to <4 x i16>10013  // CHECK: shufflevector <4 x i16> %{{.*}}, <4 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>10014  return _mm_cvtepi32_epi16(__A); 10015}10016 10017TEST_CONSTEXPR(match_v8hi(_mm_cvtepi32_epi16((__m128i)(__v4si){1, 2, 3, 4}), 1 ,2, 3, 4, 0, 0, 0, 0));10018 10019__m128i test_mm_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {10020  // CHECK-LABEL: test_mm_mask_cvtepi32_epi1610021  // CHECK: @llvm.x86.avx512.mask.pmov.dw.12810022  return _mm_mask_cvtepi32_epi16(__O, __M, __A); 10023}10024 10025__m128i test_mm_maskz_cvtepi32_epi16(__mmask8 __M, __m128i __A) {10026  // CHECK-LABEL: test_mm_maskz_cvtepi32_epi1610027  // CHECK: @llvm.x86.avx512.mask.pmov.dw.12810028  return _mm_maskz_cvtepi32_epi16(__M, __A); 10029}10030 10031void test_mm_mask_cvtepi32_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {10032  // CHECK-LABEL: test_mm_mask_cvtepi32_storeu_epi1610033  // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.12810034  return _mm_mask_cvtepi32_storeu_epi16(__P, __M, __A); 10035}10036 10037__m128i test_mm256_cvtepi32_epi16(__m256i __A) {10038  // CHECK-LABEL: test_mm256_cvtepi32_epi1610039  // CHECK: trunc <8 x i32> %{{.*}} to <8 x i16>10040  return _mm256_cvtepi32_epi16(__A); 10041}10042 10043TEST_CONSTEXPR(match_v8hi(_mm256_cvtepi32_epi16((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 5, 6, 7, 8));10044 10045__m128i test_mm256_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {10046  // CHECK-LABEL: test_mm256_mask_cvtepi32_epi1610047  // CHECK: @llvm.x86.avx512.mask.pmov.dw.25610048  return _mm256_mask_cvtepi32_epi16(__O, __M, __A); 10049}10050 10051__m128i test_mm256_maskz_cvtepi32_epi16(__mmask8 __M, __m256i __A) {10052  // CHECK-LABEL: test_mm256_maskz_cvtepi32_epi1610053  // CHECK: @llvm.x86.avx512.mask.pmov.dw.25610054  return _mm256_maskz_cvtepi32_epi16(__M, __A); 10055}10056 10057void test_mm256_mask_cvtepi32_storeu_epi16(void *  __P, __mmask8 __M, __m256i __A) {10058  // CHECK-LABEL: test_mm256_mask_cvtepi32_storeu_epi1610059  // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.25610060  return _mm256_mask_cvtepi32_storeu_epi16(__P, __M, __A); 10061}10062 10063__m128i test_mm_cvtepi64_epi8(__m128i __A) {10064  // CHECK-LABEL: test_mm_cvtepi64_epi810065  // CHECK: trunc <2 x i64> %{{.*}} to <2 x i8>10066  // CHECK: shufflevector <2 x i8> %{{.*}}, <2 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>10067  return _mm_cvtepi64_epi8(__A); 10068}10069 10070TEST_CONSTEXPR(match_v16qi(_mm_cvtepi64_epi8((__m128i)(__v2di){1, 2}), 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));10071 10072__m128i test_mm_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {10073  // CHECK-LABEL: test_mm_mask_cvtepi64_epi810074  // CHECK: @llvm.x86.avx512.mask.pmov.qb.12810075  return _mm_mask_cvtepi64_epi8(__O, __M, __A); 10076}10077 10078__m128i test_mm_maskz_cvtepi64_epi8(__mmask8 __M, __m128i __A) {10079  // CHECK-LABEL: test_mm_maskz_cvtepi64_epi810080  // CHECK: @llvm.x86.avx512.mask.pmov.qb.12810081  return _mm_maskz_cvtepi64_epi8(__M, __A); 10082}10083 10084void test_mm_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m128i __A) {10085  // CHECK-LABEL: test_mm_mask_cvtepi64_storeu_epi810086  // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.12810087  return _mm_mask_cvtepi64_storeu_epi8(__P, __M, __A); 10088}10089 10090__m128i test_mm256_cvtepi64_epi8(__m256i __A) {10091  // CHECK-LABEL: test_mm256_cvtepi64_epi810092  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i8>10093  // CHECK: shufflevector <4 x i8> %{{.*}}, <4 x i8> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>10094  return _mm256_cvtepi64_epi8(__A); 10095}10096 10097TEST_CONSTEXPR(match_v16qi(_mm256_cvtepi64_epi8((__m256i)(__v4di){1, 2, 3, 4}), 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));10098 10099__m128i test_mm256_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {10100  // CHECK-LABEL: test_mm256_mask_cvtepi64_epi810101  // CHECK: @llvm.x86.avx512.mask.pmov.qb.25610102  return _mm256_mask_cvtepi64_epi8(__O, __M, __A); 10103}10104 10105__m128i test_mm256_maskz_cvtepi64_epi8(__mmask8 __M, __m256i __A) {10106  // CHECK-LABEL: test_mm256_maskz_cvtepi64_epi810107  // CHECK: @llvm.x86.avx512.mask.pmov.qb.25610108  return _mm256_maskz_cvtepi64_epi8(__M, __A); 10109}10110 10111void test_mm256_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m256i __A) {10112  // CHECK-LABEL: test_mm256_mask_cvtepi64_storeu_epi810113  // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.25610114  return _mm256_mask_cvtepi64_storeu_epi8(__P, __M, __A); 10115}10116 10117__m128i test_mm_cvtepi64_epi32(__m128i __A) {10118  // CHECK-LABEL: test_mm_cvtepi64_epi3210119  // CHECK: trunc <2 x i64> %{{.*}} to <2 x i32>10120  // CHECK: shufflevector <2 x i32> %{{.*}}, <2 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>10121  return _mm_cvtepi64_epi32(__A); 10122}10123 10124TEST_CONSTEXPR(match_v4si(_mm_cvtepi64_epi32((__m128i)(__v2di){1, 2}),1, 2, 0, 0));10125 10126__m128i test_mm_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {10127  // CHECK-LABEL: test_mm_mask_cvtepi64_epi3210128  // CHECK: @llvm.x86.avx512.mask.pmov.qd.12810129  return _mm_mask_cvtepi64_epi32(__O, __M, __A); 10130}10131 10132__m128i test_mm_maskz_cvtepi64_epi32(__mmask8 __M, __m128i __A) {10133  // CHECK-LABEL: test_mm_maskz_cvtepi64_epi3210134  // CHECK: @llvm.x86.avx512.mask.pmov.qd.12810135  return _mm_maskz_cvtepi64_epi32(__M, __A); 10136}10137 10138void test_mm_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m128i __A) {10139  // CHECK-LABEL: test_mm_mask_cvtepi64_storeu_epi3210140  // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.12810141  return _mm_mask_cvtepi64_storeu_epi32(__P, __M, __A); 10142}10143 10144__m128i test_mm256_cvtepi64_epi32(__m256i __A) {10145  // CHECK-LABEL: test_mm256_cvtepi64_epi3210146  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>10147  return _mm256_cvtepi64_epi32(__A); 10148}10149 10150TEST_CONSTEXPR(match_v4si(_mm256_cvtepi64_epi32((__m256i)(__v4di){1 ,2 ,3 ,4}), 1, 2, 3, 4));10151 10152__m128i test_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {10153  // CHECK-LABEL: test_mm256_mask_cvtepi64_epi3210154  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>10155  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10156  return _mm256_mask_cvtepi64_epi32(__O, __M, __A); 10157}10158 10159TEST_CONSTEXPR(match_v4si(_mm256_mask_cvtepi64_epi32(_mm_set1_epi32(-777), 0xA,(__m256i)(__v4di){1, -2, 3, -4}), -777, -2, -777, -4));10160 10161__m128i test_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {10162  // CHECK-LABEL: test_mm256_maskz_cvtepi64_epi3210163  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>10164  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10165  return _mm256_maskz_cvtepi64_epi32(__M, __A); 10166}10167 10168TEST_CONSTEXPR(match_v4si(_mm256_maskz_cvtepi64_epi32( 0xA,(__m256i)(__v4di){1, -2, 3, -4}),0 , -2, 0, -4));10169 10170void test_mm256_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {10171  // CHECK-LABEL: test_mm256_mask_cvtepi64_storeu_epi3210172  // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.25610173  return _mm256_mask_cvtepi64_storeu_epi32(__P, __M, __A); 10174}10175 10176__m128i test_mm_cvtepi64_epi16(__m128i __A) {10177  // CHECK-LABEL: test_mm_cvtepi64_epi1610178  // CHECK: trunc <2 x i64> %{{.*}} to <2 x i16>10179  // CHECK: shufflevector <2 x i16> %{{.*}}, <2 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 3, i32 3, i32 3, i32 3>10180  return _mm_cvtepi64_epi16(__A); 10181}10182 10183TEST_CONSTEXPR(match_v8hi(_mm_cvtepi64_epi16((__m128i)(__v2di){1, 2}),1, 2, 0, 0, 0, 0, 0, 0));10184 10185__m128i test_mm_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {10186  // CHECK-LABEL: test_mm_mask_cvtepi64_epi1610187  // CHECK: @llvm.x86.avx512.mask.pmov.qw.12810188  return _mm_mask_cvtepi64_epi16(__O, __M, __A); 10189}10190 10191__m128i test_mm_maskz_cvtepi64_epi16(__mmask8 __M, __m128i __A) {10192  // CHECK-LABEL: test_mm_maskz_cvtepi64_epi1610193  // CHECK: @llvm.x86.avx512.mask.pmov.qw.12810194  return _mm_maskz_cvtepi64_epi16(__M, __A); 10195}10196 10197void test_mm_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m128i __A) {10198  // CHECK-LABEL: test_mm_mask_cvtepi64_storeu_epi1610199  // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.12810200  return _mm_mask_cvtepi64_storeu_epi16(__P, __M, __A); 10201}10202 10203__m128i test_mm256_cvtepi64_epi16(__m256i __A) {10204  // CHECK-LABEL: test_mm256_cvtepi64_epi1610205  // CHECK: trunc <4 x i64> %{{.*}} to <4 x i16>10206  // CHECK: shufflevector <4 x i16> %{{.*}}, <4 x i16> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>10207  return _mm256_cvtepi64_epi16(__A); 10208}10209 10210TEST_CONSTEXPR(match_v8hi(_mm256_cvtepi64_epi16((__m256i)(__v4di){1 ,2, 3, 4}),1, 2, 3, 4, 0, 0, 0, 0));10211 10212__m128i test_mm256_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {10213  // CHECK-LABEL: test_mm256_mask_cvtepi64_epi1610214  // CHECK: @llvm.x86.avx512.mask.pmov.qw.25610215  return _mm256_mask_cvtepi64_epi16(__O, __M, __A); 10216}10217 10218__m128i test_mm256_maskz_cvtepi64_epi16(__mmask8 __M, __m256i __A) {10219  // CHECK-LABEL: test_mm256_maskz_cvtepi64_epi1610220  // CHECK: @llvm.x86.avx512.mask.pmov.qw.25610221  return _mm256_maskz_cvtepi64_epi16(__M, __A); 10222}10223 10224void test_mm256_mask_cvtepi64_storeu_epi16(void * __P, __mmask8 __M, __m256i __A) {10225  // CHECK-LABEL: test_mm256_mask_cvtepi64_storeu_epi1610226  // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.25610227  return _mm256_mask_cvtepi64_storeu_epi16(__P, __M, __A); 10228}10229 10230__m128 test_mm256_extractf32x4_ps(__m256 __A) {10231  // CHECK-LABEL: test_mm256_extractf32x4_ps10232  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>10233  return _mm256_extractf32x4_ps(__A, 1); 10234}10235TEST_CONSTEXPR(match_m128(_mm256_extractf32x4_ps(((__m256){0,1,2,3, 4,5,6,7}), 1),4.0f, 5.0f, 6.0f, 7.0f));10236 10237__m128 test_mm256_mask_extractf32x4_ps(__m128 __W, __mmask8 __U, __m256 __A) {10238  // CHECK-LABEL: test_mm256_mask_extractf32x4_ps10239  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>10240  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}10241  return _mm256_mask_extractf32x4_ps(__W, __U, __A, 1); 10242}10243TEST_CONSTEXPR(match_m128(_mm256_mask_extractf32x4_ps((((__m128){100,101,102,103})), (__mmask8)0x5, (((__m256){0,1,2,3, 4,5,6,7})), 1), 4.0f, 101.0f, 6.0f, 103.0f));10244 10245__m128 test_mm256_maskz_extractf32x4_ps(__mmask8 __U, __m256 __A) {10246  // CHECK-LABEL: test_mm256_maskz_extractf32x4_ps10247  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>10248  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}10249  return _mm256_maskz_extractf32x4_ps(__U, __A, 1); 10250}10251TEST_CONSTEXPR(match_m128(_mm256_maskz_extractf32x4_ps((__mmask8)0x3, (((__m256){0,1,2,3, 4,5,6,7})), 1), 4.0f, 5.0f, 0.0f, 0.0f));10252 10253__m128i test_mm256_extracti32x4_epi32(__m256i __A) {10254  // CHECK-LABEL: test_mm256_extracti32x4_epi3210255  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>10256  return _mm256_extracti32x4_epi32(__A, 1); 10257}10258TEST_CONSTEXPR(match_m128i(_mm256_extracti32x4_epi32((((__m256i)(__v8si){0,1,2,3, 4,5,6,7})), 1), 0x0000000500000004ULL, 0x0000000700000006ULL));10259 10260__m128i test_mm256_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m256i __A) {10261  // CHECK-LABEL: test_mm256_mask_extracti32x4_epi3210262  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>10263  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10264  return _mm256_mask_extracti32x4_epi32(__W, __U, __A, 1); 10265}10266TEST_CONSTEXPR(match_m128i(_mm256_mask_extracti32x4_epi32((((__m128i)(__v4si){100,101,102,103})), (__mmask8)0xA, (((__m256i)(__v8si){0,1,2,3, 4,5,6,7})), 1),0x0000000500000064ULL, 0x0000000700000066ULL));10267 10268__m128i test_mm256_maskz_extracti32x4_epi32(__mmask8 __U, __m256i __A) {10269  // CHECK-LABEL: test_mm256_maskz_extracti32x4_epi3210270  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>10271  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10272  return _mm256_maskz_extracti32x4_epi32(__U, __A, 1); 10273}10274TEST_CONSTEXPR(match_m128i(_mm256_maskz_extracti32x4_epi32((__mmask8)0x3, (((__m256i)(__v8si){0,1,2,3, 4,5,6,7})), 1), 0x0000000500000004ULL, 0x0000000000000000ULL));10275 10276__m256 test_mm256_insertf32x4(__m256 __A, __m128 __B) {10277  // CHECK-LABEL: test_mm256_insertf32x410278  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>10279  return _mm256_insertf32x4(__A, __B, 1); 10280}10281TEST_CONSTEXPR(match_m256(_mm256_insertf32x4(((__m256){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}), ((__m128){10.0f, 20.0f, 30.0f, 40.0f}), 1), 1.0f, 2.0f, 3.0f, 4.0f, 10.0f, 20.0f, 30.0f, 40.0f));10282 10283__m256 test_mm256_mask_insertf32x4(__m256 __W, __mmask8 __U, __m256 __A, __m128 __B) {10284  // CHECK-LABEL: test_mm256_mask_insertf32x410285  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>10286  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10287  return _mm256_mask_insertf32x4(__W, __U, __A, __B, 1); 10288}10289TEST_CONSTEXPR(match_m256(_mm256_mask_insertf32x4(((__m256){2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), (0x60), ((__m256){2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}), ((__m128){10.0f, 20.0f, 30.0f, 40.0f}), 1), 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 20.0f, 30.0f, 9.0f));10290 10291__m256 test_mm256_maskz_insertf32x4(__mmask8 __U, __m256 __A, __m128 __B) {10292  // CHECK-LABEL: test_mm256_maskz_insertf32x410293  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>10294  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10295  return _mm256_maskz_insertf32x4(__U, __A, __B, 1); 10296}10297TEST_CONSTEXPR(match_m256(_mm256_maskz_insertf32x4((0x30), ((__m256){1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f}), ((__m128){10.0f, 20.0f, 30.0f, 40.0f}), 1), 0.0f, 0.0f, 0.0f, 0.0f, 10.0f, 20.0f, 0.0f, 0.0f));10298 10299__m256i test_mm256_inserti32x4(__m256i __A, __m128i __B) {10300  // CHECK-LABEL: test_mm256_inserti32x410301  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>10302  return _mm256_inserti32x4(__A, __B, 1); 10303}10304TEST_CONSTEXPR(match_v8si(_mm256_inserti32x4(((__m256i)(__v8si){1,2,3,4,5,6,7,8}), ((__m128i)(__v4si){10,20,30,40}), 1), 1, 2, 3, 4, 10, 20, 30, 40));10305 10306__m256i test_mm256_mask_inserti32x4(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {10307  // CHECK-LABEL: test_mm256_mask_inserti32x410308  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>10309  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10310  return _mm256_mask_inserti32x4(__W, __U, __A, __B, 1); 10311}10312TEST_CONSTEXPR(match_v8si(_mm256_mask_inserti32x4(((__m256i)(__v8si){2,3,4,5,6,7,8,9}), (0x60), ((__m256i)(__v8si){2,3,4,5,6,7,8,9}), ((__m128i)(__v4si){10,20,30,40}), 1), 2, 3, 4, 5, 6, 20, 30, 9));10313 10314__m256i test_mm256_maskz_inserti32x4(__mmask8 __U, __m256i __A, __m128i __B) {10315  // CHECK-LABEL: test_mm256_maskz_inserti32x410316  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 8, i32 9, i32 10, i32 11>10317  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10318  return _mm256_maskz_inserti32x4(__U, __A, __B, 1); 10319}10320TEST_CONSTEXPR(match_v8si(_mm256_maskz_inserti32x4((0x30), ((__m256i)(__v8si){1,2,3,4,5,6,7,8}), ((__m128i)(__v4si){10,20,30,40}), 1), 0, 0, 0, 0, 10, 20, 0, 0));10321 10322__m128d test_mm_getmant_pd(__m128d __A) {10323  // CHECK-LABEL: test_mm_getmant_pd10324  // CHECK: @llvm.x86.avx512.mask.getmant.pd.12810325  return _mm_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10326}10327 10328__m128d test_mm_mask_getmant_pd(__m128d __W, __mmask8 __U, __m128d __A) {10329  // CHECK-LABEL: test_mm_mask_getmant_pd10330  // CHECK: @llvm.x86.avx512.mask.getmant.pd.12810331  return _mm_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10332}10333 10334__m128d test_mm_maskz_getmant_pd(__mmask8 __U, __m128d __A) {10335  // CHECK-LABEL: test_mm_maskz_getmant_pd10336  // CHECK: @llvm.x86.avx512.mask.getmant.pd.12810337  return _mm_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10338}10339 10340__m256d test_mm256_getmant_pd(__m256d __A) {10341  // CHECK-LABEL: test_mm256_getmant_pd10342  // CHECK: @llvm.x86.avx512.mask.getmant.pd.25610343  return _mm256_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10344}10345 10346__m256d test_mm256_mask_getmant_pd(__m256d __W, __mmask8 __U, __m256d __A) {10347  // CHECK-LABEL: test_mm256_mask_getmant_pd10348  // CHECK: @llvm.x86.avx512.mask.getmant.pd.25610349  return _mm256_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10350}10351 10352__m256d test_mm256_maskz_getmant_pd(__mmask8 __U, __m256d __A) {10353  // CHECK-LABEL: test_mm256_maskz_getmant_pd10354  // CHECK: @llvm.x86.avx512.mask.getmant.pd.25610355  return _mm256_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10356}10357 10358__m128 test_mm_getmant_ps(__m128 __A) {10359  // CHECK-LABEL: test_mm_getmant_ps10360  // CHECK: @llvm.x86.avx512.mask.getmant.ps.12810361  return _mm_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10362}10363 10364__m128 test_mm_mask_getmant_ps(__m128 __W, __mmask8 __U, __m128 __A) {10365  // CHECK-LABEL: test_mm_mask_getmant_ps10366  // CHECK: @llvm.x86.avx512.mask.getmant.ps.12810367  return _mm_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10368}10369 10370__m128 test_mm_maskz_getmant_ps(__mmask8 __U, __m128 __A) {10371  // CHECK-LABEL: test_mm_maskz_getmant_ps10372  // CHECK: @llvm.x86.avx512.mask.getmant.ps.12810373  return _mm_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10374}10375 10376__m256 test_mm256_getmant_ps(__m256 __A) {10377  // CHECK-LABEL: test_mm256_getmant_ps10378  // CHECK: @llvm.x86.avx512.mask.getmant.ps.25610379  return _mm256_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10380}10381 10382__m256 test_mm256_mask_getmant_ps(__m256 __W, __mmask8 __U, __m256 __A) {10383  // CHECK-LABEL: test_mm256_mask_getmant_ps10384  // CHECK: @llvm.x86.avx512.mask.getmant.ps.25610385  return _mm256_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10386}10387 10388__m256 test_mm256_maskz_getmant_ps(__mmask8 __U, __m256 __A) {10389  // CHECK-LABEL: test_mm256_maskz_getmant_ps10390  // CHECK: @llvm.x86.avx512.mask.getmant.ps.25610391  return _mm256_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 10392}10393 10394__m128d test_mm_mmask_i64gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10395  // CHECK-LABEL: test_mm_mmask_i64gather_pd10396  // CHECK: @llvm.x86.avx512.mask.gather3div2.df10397  return _mm_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 10398}10399 10400__m128i test_mm_mmask_i64gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10401  // CHECK-LABEL: test_mm_mmask_i64gather_epi6410402  // CHECK: @llvm.x86.avx512.mask.gather3div2.di10403  return _mm_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 10404}10405 10406__m256d test_mm256_mmask_i64gather_pd(__m256d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {10407  // CHECK-LABEL: test_mm256_mmask_i64gather_pd10408  // CHECK: @llvm.x86.avx512.mask.gather3div4.df10409  return _mm256_mmask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 10410}10411 10412__m256i test_mm256_mmask_i64gather_epi64(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {10413  // CHECK-LABEL: test_mm256_mmask_i64gather_epi6410414  // CHECK: @llvm.x86.avx512.mask.gather3div4.di10415  return _mm256_mmask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 10416}10417 10418__m128 test_mm_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10419  // CHECK-LABEL: test_mm_mmask_i64gather_ps10420  // CHECK: @llvm.x86.avx512.mask.gather3div4.sf10421  return _mm_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 10422}10423 10424__m128i test_mm_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10425  // CHECK-LABEL: test_mm_mmask_i64gather_epi3210426  // CHECK: @llvm.x86.avx512.mask.gather3div4.si10427  return _mm_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 10428}10429 10430__m128 test_mm256_mmask_i64gather_ps(__m128 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {10431  // CHECK-LABEL: test_mm256_mmask_i64gather_ps10432  // CHECK: @llvm.x86.avx512.mask.gather3div8.sf10433  return _mm256_mmask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 10434}10435 10436__m128i test_mm256_mmask_i64gather_epi32(__m128i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {10437  // CHECK-LABEL: test_mm256_mmask_i64gather_epi3210438  // CHECK: @llvm.x86.avx512.mask.gather3div8.si10439  return _mm256_mmask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 10440}10441 10442__m128d test_mm_mask_i32gather_pd(__m128d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10443  // CHECK-LABEL: test_mm_mask_i32gather_pd10444  // CHECK: @llvm.x86.avx512.mask.gather3siv2.df10445  return _mm_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 10446}10447 10448__m128i test_mm_mask_i32gather_epi64(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10449  // CHECK-LABEL: test_mm_mask_i32gather_epi6410450  // CHECK: @llvm.x86.avx512.mask.gather3siv2.di10451  return _mm_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 10452}10453 10454__m256d test_mm256_mask_i32gather_pd(__m256d __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10455  // CHECK-LABEL: test_mm256_mask_i32gather_pd10456  // CHECK: @llvm.x86.avx512.mask.gather3siv4.df10457  return _mm256_mmask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 10458}10459 10460__m256i test_mm256_mask_i32gather_epi64(__m256i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10461  // CHECK-LABEL: test_mm256_mask_i32gather_epi6410462  // CHECK: @llvm.x86.avx512.mask.gather3siv4.di10463  return _mm256_mmask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 10464}10465 10466__m128 test_mm_mask_i32gather_ps(__m128 __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10467  // CHECK-LABEL: test_mm_mask_i32gather_ps10468  // CHECK: @llvm.x86.avx512.mask.gather3siv4.sf10469  return _mm_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2); 10470}10471 10472__m128i test_mm_mask_i32gather_epi32(__m128i __v1_old, __mmask8 __mask, __m128i __index, void const *__addr) {10473  // CHECK-LABEL: test_mm_mask_i32gather_epi3210474  // CHECK: @llvm.x86.avx512.mask.gather3siv4.si10475  return _mm_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 10476}10477 10478__m256 test_mm256_mask_i32gather_ps(__m256 __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {10479  // CHECK-LABEL: test_mm256_mask_i32gather_ps10480  // CHECK: @llvm.x86.avx512.mask.gather3siv8.sf10481  return _mm256_mmask_i32gather_ps(__v1_old, __mask, __index, __addr, 2); 10482}10483 10484__m256i test_mm256_mask_i32gather_epi32(__m256i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) {10485  // CHECK-LABEL: test_mm256_mask_i32gather_epi3210486  // CHECK: @llvm.x86.avx512.mask.gather3siv8.si10487  return _mm256_mmask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 10488}10489 10490__m256d test_mm256_permutex_pd(__m256d __X) {10491  // CHECK-LABEL: test_mm256_permutex_pd10492  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>10493  return _mm256_permutex_pd(__X, 3);10494}10495 10496__m256d test_mm256_mask_permutex_pd(__m256d __W, __mmask8 __U, __m256d __X) {10497  // CHECK-LABEL: test_mm256_mask_permutex_pd10498  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>10499  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}10500  return _mm256_mask_permutex_pd(__W, __U, __X, 1);10501}10502 10503__m256d test_mm256_maskz_permutex_pd(__mmask8 __U, __m256d __X) {10504  // CHECK-LABEL: test_mm256_maskz_permutex_pd10505  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>10506  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}10507  return _mm256_maskz_permutex_pd(__U, __X, 1);10508}10509 10510__m256i test_mm256_permutex_epi64(__m256i __X) {10511  // CHECK-LABEL: test_mm256_permutex_epi6410512  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>10513  return _mm256_permutex_epi64(__X, 3);10514}10515 10516__m256i test_mm256_mask_permutex_epi64(__m256i __W, __mmask8 __M, __m256i __X) {10517  // CHECK-LABEL: test_mm256_mask_permutex_epi6410518  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>10519  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}10520  return _mm256_mask_permutex_epi64(__W, __M, __X, 3);10521}10522 10523__m256i test_mm256_maskz_permutex_epi64(__mmask8 __M, __m256i __X) {10524  // CHECK-LABEL: test_mm256_maskz_permutex_epi6410525  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>10526  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}10527  return _mm256_maskz_permutex_epi64(__M, __X, 3);10528}10529 10530__m256d test_mm256_permutexvar_pd(__m256i __X, __m256d __Y) {10531  // CHECK-LABEL: test_mm256_permutexvar_pd10532  // CHECK: @llvm.x86.avx512.permvar.df.25610533  return _mm256_permutexvar_pd(__X, __Y);10534}10535 10536TEST_CONSTEXPR(match_m256d(_mm256_permutexvar_pd((__m256i)(__v4di){3, 2, 1, 0}, (__m256d){0.0, 1.0, 2.0, 3.0}), 3.0, 2.0, 1.0, 0.0));10537TEST_CONSTEXPR(match_m256d(_mm256_permutexvar_pd((__m256i)(__v4di){0, 0, 0, 0}, (__m256d){1.0, 2.0, 3.0, 4.0}), 1.0, 1.0, 1.0, 1.0));10538 10539__m256d test_mm256_mask_permutexvar_pd(__m256d __W, __mmask8 __U, __m256i __X, __m256d __Y) {10540  // CHECK-LABEL: test_mm256_mask_permutexvar_pd10541  // CHECK: @llvm.x86.avx512.permvar.df.25610542  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}10543  return _mm256_mask_permutexvar_pd(__W, __U, __X, __Y);10544}10545 10546__m256d test_mm256_maskz_permutexvar_pd(__mmask8 __U, __m256i __X, __m256d __Y) {10547  // CHECK-LABEL: test_mm256_maskz_permutexvar_pd10548  // CHECK: @llvm.x86.avx512.permvar.df.25610549  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}10550  return _mm256_maskz_permutexvar_pd(__U, __X, __Y);10551}10552 10553TEST_CONSTEXPR(match_m256d(_mm256_mask_permutexvar_pd((__m256d){9.0, 9.0, 9.0, 9.0}, 0xF, (__m256i)(__v4di){3, 2, 1, 0}, (__m256d){0.0, 1.0, 2.0, 3.0}), 3.0, 2.0, 1.0, 0.0));10554TEST_CONSTEXPR(match_m256d(_mm256_mask_permutexvar_pd((__m256d){9.0, 9.0, 9.0, 9.0}, 0xA, (__m256i)(__v4di){3, 2, 1, 0}, (__m256d){0.0, 1.0, 2.0, 3.0}), 9.0, 2.0, 9.0, 0.0));10555TEST_CONSTEXPR(match_m256d(_mm256_maskz_permutexvar_pd(0xF, (__m256i)(__v4di){3, 2, 1, 0}, (__m256d){0.0, 1.0, 2.0, 3.0}), 3.0, 2.0, 1.0, 0.0));10556TEST_CONSTEXPR(match_m256d(_mm256_maskz_permutexvar_pd(0xA, (__m256i)(__v4di){3, 2, 1, 0}, (__m256d){0.0, 1.0, 2.0, 3.0}), 0.0, 2.0, 0.0, 0.0));10557 10558__m256i test_mm256_maskz_permutexvar_epi64(__mmask8 __M, __m256i __X, __m256i __Y) {10559  // CHECK-LABEL: test_mm256_maskz_permutexvar_epi6410560  // CHECK: @llvm.x86.avx512.permvar.di.25610561  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}10562  return _mm256_maskz_permutexvar_epi64(__M, __X, __Y);10563}10564 10565__m256i test_mm256_mask_permutexvar_epi64(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {10566  // CHECK-LABEL: test_mm256_mask_permutexvar_epi6410567  // CHECK: @llvm.x86.avx512.permvar.di.25610568  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}10569  return _mm256_mask_permutexvar_epi64(__W, __M, __X, __Y);10570}10571 10572TEST_CONSTEXPR(match_v4di(_mm256_mask_permutexvar_epi64((__m256i)(__v4di){99, 99, 99, 99}, 0xF, (__m256i)(__v4di){3, 2, 1, 0}, (__m256i)(__v4di){10, 11, 12, 13}), 13, 12, 11, 10));10573TEST_CONSTEXPR(match_v4di(_mm256_mask_permutexvar_epi64((__m256i)(__v4di){99, 99, 99, 99}, 0xA, (__m256i)(__v4di){3, 2, 1, 0}, (__m256i)(__v4di){10, 11, 12, 13}), 99, 12, 99, 10));10574TEST_CONSTEXPR(match_v4di(_mm256_maskz_permutexvar_epi64(0xF, (__m256i)(__v4di){3, 2, 1, 0}, (__m256i)(__v4di){10, 11, 12, 13}), 13, 12, 11, 10));10575TEST_CONSTEXPR(match_v4di(_mm256_maskz_permutexvar_epi64(0xA, (__m256i)(__v4di){3, 2, 1, 0}, (__m256i)(__v4di){10, 11, 12, 13}), 0, 12, 0, 10));10576 10577__m256 test_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y) {10578  // CHECK-LABEL: test_mm256_mask_permutexvar_ps10579  // CHECK: @llvm.x86.avx2.permps10580  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10581  return _mm256_mask_permutexvar_ps(__W, __U, __X, __Y);10582}10583 10584__m256 test_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y) {10585  // CHECK-LABEL: test_mm256_maskz_permutexvar_ps10586  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10587  return _mm256_maskz_permutexvar_ps(__U, __X, __Y);10588}10589 10590__m256 test_mm256_permutexvar_ps(__m256i __X, __m256 __Y) {10591  // CHECK-LABEL: test_mm256_permutexvar_ps10592  // CHECK: @llvm.x86.avx2.permps10593  return _mm256_permutexvar_ps( __X, __Y);10594}10595 10596TEST_CONSTEXPR(match_m256(_mm256_permutexvar_ps(((__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}),10597                                                 ((__m256){0.0f, 1.0f, 2.0f, 3.0f,10598                                                           4.0f, 5.0f, 6.0f, 7.0f})),10599                               7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.0f));10600TEST_CONSTEXPR(match_m256(_mm256_permutexvar_ps(((__m256i)(__v8si){0, 0, 0, 0, 0, 0, 0, 0}),10601                                                 ((__m256){1.0f, 2.0f, 3.0f, 4.0f,10602                                                           5.0f, 6.0f, 7.0f, 8.0f})),10603                               1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f));10604TEST_CONSTEXPR(match_m256(_mm256_mask_permutexvar_ps((__m256){99.0f, 99.0f, 99.0f, 99.0f, 99.0f, 99.0f, 99.0f, 99.0f}, 0xFF, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256){0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f}), 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.0f));10605TEST_CONSTEXPR(match_m256(_mm256_mask_permutexvar_ps((__m256){99.0f, 99.0f, 99.0f, 99.0f, 99.0f, 99.0f, 99.0f, 99.0f}, 0xAA, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256){0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f}), 99.0f, 6.0f, 99.0f, 4.0f, 99.0f, 2.0f, 99.0f, 0.0f));10606TEST_CONSTEXPR(match_m256(_mm256_maskz_permutexvar_ps(0xFF, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256){0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f}), 7.0f, 6.0f, 5.0f, 4.0f, 3.0f, 2.0f, 1.0f, 0.0f));10607TEST_CONSTEXPR(match_m256(_mm256_maskz_permutexvar_ps(0xAA, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256){0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f}), 0.0f, 6.0f, 0.0f, 4.0f, 0.0f, 2.0f, 0.0f, 0.0f));10608 10609__m256i test_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y) {10610  // CHECK-LABEL: test_mm256_maskz_permutexvar_epi3210611  // CHECK: @llvm.x86.avx2.permd10612  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10613  return _mm256_maskz_permutexvar_epi32(__M, __X, __Y);10614}10615 10616__m256i test_mm256_permutexvar_epi32(__m256i __X, __m256i __Y) {10617  // CHECK-LABEL: test_mm256_permutexvar_epi3210618  // CHECK: @llvm.x86.avx2.permd10619  return _mm256_permutexvar_epi32(__X, __Y);10620}10621 10622__m256i test_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y) {10623  // CHECK-LABEL: test_mm256_mask_permutexvar_epi3210624  // CHECK: @llvm.x86.avx2.permd10625  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10626  return _mm256_mask_permutexvar_epi32(__W, __M, __X, __Y);10627}10628 10629TEST_CONSTEXPR(match_v8si(_mm256_permutexvar_epi32(((__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}),10630                                                   ((__m256i)(__v8si){10, 11, 12, 13, 14, 15, 16, 17})),10631                              17, 16, 15, 14, 13, 12, 11, 10));10632TEST_CONSTEXPR(match_v8si(_mm256_permutexvar_epi32(((__m256i)(__v8si){0, 1, 2, 3, 4, 5, 6, 7}),10633                                                   ((__m256i)(__v8si){100, 101, 102, 103, 104, 105, 106, 107})),10634                              100, 101, 102, 103, 104, 105, 106, 107));10635TEST_CONSTEXPR(match_v8si(_mm256_mask_permutexvar_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, 0xFF, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v8si){10, 11, 12, 13, 14, 15, 16, 17}), 17, 16, 15, 14, 13, 12, 11, 10));10636TEST_CONSTEXPR(match_v8si(_mm256_mask_permutexvar_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, 0xAA, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v8si){10, 11, 12, 13, 14, 15, 16, 17}), 99, 16, 99, 14, 99, 12, 99, 10));10637TEST_CONSTEXPR(match_v8si(_mm256_maskz_permutexvar_epi32(0xFF, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v8si){10, 11, 12, 13, 14, 15, 16, 17}), 17, 16, 15, 14, 13, 12, 11, 10));10638TEST_CONSTEXPR(match_v8si(_mm256_maskz_permutexvar_epi32(0xAA, (__m256i)(__v8si){7, 6, 5, 4, 3, 2, 1, 0}, (__m256i)(__v8si){10, 11, 12, 13, 14, 15, 16, 17}), 0, 16, 0, 14, 0, 12, 0, 10));10639 10640__m128i test_mm_alignr_epi32(__m128i __A, __m128i __B) {10641  // CHECK-LABEL: test_mm_alignr_epi3210642  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>10643  return _mm_alignr_epi32(__A, __B, 1);10644}10645 10646__m128i test_mm_mask_alignr_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {10647  // CHECK-LABEL: test_mm_mask_alignr_epi3210648  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>10649  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10650  return _mm_mask_alignr_epi32(__W, __U, __A, __B, 5);10651}10652 10653__m128i test_mm_maskz_alignr_epi32(__mmask8 __U, __m128i __A, __m128i __B) {10654  // CHECK-LABEL: test_mm_maskz_alignr_epi3210655  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>10656  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10657  return _mm_maskz_alignr_epi32(__U, __A, __B, 1);10658}10659 10660__m256i test_mm256_alignr_epi32(__m256i __A, __m256i __B) {10661  // CHECK-LABEL: test_mm256_alignr_epi3210662  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>10663  return _mm256_alignr_epi32(__A, __B, 1);10664}10665 10666__m256i test_mm256_mask_alignr_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {10667  // CHECK-LABEL: test_mm256_mask_alignr_epi3210668  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>10669  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10670  return _mm256_mask_alignr_epi32(__W, __U, __A, __B, 9);10671}10672 10673__m256i test_mm256_maskz_alignr_epi32(__mmask8 __U, __m256i __A, __m256i __B) {10674  // CHECK-LABEL: test_mm256_maskz_alignr_epi3210675  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>10676  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10677  return _mm256_maskz_alignr_epi32(__U, __A, __B, 1);10678}10679 10680__m128i test_mm_alignr_epi64(__m128i __A, __m128i __B) {10681  // CHECK-LABEL: test_mm_alignr_epi6410682  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>10683  return _mm_alignr_epi64(__A, __B, 1);10684}10685 10686__m128i test_mm_mask_alignr_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {10687  // CHECK-LABEL: test_mm_mask_alignr_epi6410688  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>10689  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}10690  return _mm_mask_alignr_epi64(__W, __U, __A, __B, 3);10691}10692 10693__m128i test_mm_maskz_alignr_epi64(__mmask8 __U, __m128i __A, __m128i __B) {10694  // CHECK-LABEL: test_mm_maskz_alignr_epi6410695  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <2 x i32> <i32 1, i32 2>10696  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}10697  return _mm_maskz_alignr_epi64(__U, __A, __B, 1);10698}10699 10700__m256i test_mm256_alignr_epi64(__m256i __A, __m256i __B) {10701  // CHECK-LABEL: test_mm256_alignr_epi6410702  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>10703  return _mm256_alignr_epi64(__A, __B, 1);10704}10705 10706__m256i test_mm256_mask_alignr_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {10707  // CHECK-LABEL: test_mm256_mask_alignr_epi6410708  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>10709  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}10710  return _mm256_mask_alignr_epi64(__W, __U, __A, __B, 5);10711}10712 10713__m256i test_mm256_maskz_alignr_epi64(__mmask8 __U, __m256i __A, __m256i __B) {10714  // CHECK-LABEL: test_mm256_maskz_alignr_epi6410715  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 1, i32 2, i32 3, i32 4>10716  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}10717  return _mm256_maskz_alignr_epi64(__U, __A, __B, 1);10718}10719 10720TEST_CONSTEXPR(match_v4si(_mm_alignr_epi32(((__m128i)(__v4si){100, 200, 300, 400}),10721                                           ((__m128i)(__v4si){10, 20, 30, 40}), 1),10722                          20, 30, 40, 100));10723TEST_CONSTEXPR(match_v4si(_mm_mask_alignr_epi32(((__m128i)(__v4si){1000, 2000, 3000, 4000}), 0x5,10724                                                ((__m128i)(__v4si){100, 200, 300, 400}),10725                                                ((__m128i)(__v4si){10, 20, 30, 40}), 1),10726                          20, 2000, 40, 4000));10727TEST_CONSTEXPR(match_v4si(_mm_maskz_alignr_epi32(0x3,10728                                                 ((__m128i)(__v4si){100, 200, 300, 400}),10729                                                 ((__m128i)(__v4si){10, 20, 30, 40}), 1),10730                          20, 30, 0, 0));10731 10732TEST_CONSTEXPR(match_v8si(_mm256_alignr_epi32(((__m256i)(__v8si){100, 200, 300, 400, 500, 600, 700, 800}),10733                                              ((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 3),10734                          4, 5, 6, 7, 8, 100, 200, 300));10735TEST_CONSTEXPR(match_v8si(_mm256_mask_alignr_epi32(((__m256i)(__v8si){1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000}),10736                                                   0xA5,10737                                                   ((__m256i)(__v8si){100, 200, 300, 400, 500, 600, 700, 800}),10738                                                   ((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 3),10739                          4, 2000, 6, 4000, 5000, 100, 7000, 300));10740TEST_CONSTEXPR(match_v8si(_mm256_maskz_alignr_epi32(0x33,10741                                                    ((__m256i)(__v8si){100, 200, 300, 400, 500, 600, 700, 800}),10742                                                    ((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 3),10743                          4, 5, 0, 0, 8, 100, 0, 0));10744 10745TEST_CONSTEXPR(match_v2di(_mm_alignr_epi64(((__m128i)(__v2di){10, 11}), ((__m128i)(__v2di){1, 2}), 1), 2, 10));10746TEST_CONSTEXPR(match_v2di(_mm_mask_alignr_epi64(((__m128i)(__v2di){1000, 2000}), 0x1,10747                                                ((__m128i)(__v2di){10, 11}),10748                                                ((__m128i)(__v2di){1, 2}), 1),10749                          2, 2000));10750TEST_CONSTEXPR(match_v2di(_mm_maskz_alignr_epi64(0x2,10751                                                 ((__m128i)(__v2di){10, 11}),10752                                                 ((__m128i)(__v2di){1, 2}), 1),10753                          0, 10));10754 10755TEST_CONSTEXPR(match_v4di(_mm256_alignr_epi64(((__m256i)(__v4di){10, 11, 12, 13}),10756                                              ((__m256i)(__v4di){1, 2, 3, 4}), 2),10757                          3, 4, 10, 11));10758TEST_CONSTEXPR(match_v4di(_mm256_mask_alignr_epi64(((__m256i)(__v4di){1000, 2000, 3000, 4000}), 0x5,10759                                                   ((__m256i)(__v4di){10, 11, 12, 13}),10760                                                   ((__m256i)(__v4di){1, 2, 3, 4}), 2),10761                          3, 2000, 10, 4000));10762TEST_CONSTEXPR(match_v4di(_mm256_maskz_alignr_epi64(0xA,10763                                                    ((__m256i)(__v4di){10, 11, 12, 13}),10764                                                    ((__m256i)(__v4di){1, 2, 3, 4}), 2),10765                          0, 4, 0, 11));10766 10767__m128 test_mm_mask_movehdup_ps(__m128 __W, __mmask8 __U, __m128 __A) {10768  // CHECK-LABEL: test_mm_mask_movehdup_ps10769  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>10770  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}10771  return _mm_mask_movehdup_ps(__W, __U, __A);10772}10773 10774TEST_CONSTEXPR(match_m128(_mm_mask_movehdup_ps(_mm_setzero_ps(), 0xF, (__m128)(__v4sf){1.f,2.f,3.f,4.f}), 2.f,2.f,4.f,4.f));10775 10776__m128 test_mm_maskz_movehdup_ps(__mmask8 __U, __m128 __A) {10777  // CHECK-LABEL: test_mm_maskz_movehdup_ps10778  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 1, i32 1, i32 3, i32 3>10779  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}10780  return _mm_maskz_movehdup_ps(__U, __A);10781}10782 10783__m256 test_mm256_mask_movehdup_ps(__m256 __W, __mmask8 __U, __m256 __A) {10784  // CHECK-LABEL: test_mm256_mask_movehdup_ps10785  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>10786  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}10787  return _mm256_mask_movehdup_ps(__W, __U, __A);10788}10789 10790TEST_CONSTEXPR(match_m256(_mm256_mask_movehdup_ps(_mm256_setzero_ps(), 0xAA, (__m256)(__v8sf){1,2,3,4,5,6,7,8}), 0,2,0,4,0,6,0,8));10791 10792__m256 test_mm256_maskz_movehdup_ps(__mmask8 __U, __m256 __A) {10793  // CHECK-LABEL: test_mm256_maskz_movehdup_ps10794  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7>10795  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}10796  return _mm256_maskz_movehdup_ps(__U, __A);10797}10798 10799__m128 test_mm_mask_moveldup_ps(__m128 __W, __mmask8 __U, __m128 __A) {10800  // CHECK-LABEL: test_mm_mask_moveldup_ps10801  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>10802  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}10803  return _mm_mask_moveldup_ps(__W, __U, __A);10804}10805 10806TEST_CONSTEXPR(match_m128(_mm_mask_moveldup_ps(_mm_setzero_ps(), 0xF, (__m128)(__v4sf){1.f,2.f,3.f,4.f}), 1.f,1.f,3.f,3.f));10807 10808__m128 test_mm_maskz_moveldup_ps(__mmask8 __U, __m128 __A) {10809  // CHECK-LABEL: test_mm_maskz_moveldup_ps10810  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <4 x i32> <i32 0, i32 0, i32 2, i32 2>10811  // CHECK: select <4 x i1> %{{.*}} <4 x float> %{{.*}}, <4 x float> %{{.*}}10812  return _mm_maskz_moveldup_ps(__U, __A);10813}10814 10815__m256 test_mm256_mask_moveldup_ps(__m256 __W, __mmask8 __U, __m256 __A) {10816  // CHECK-LABEL: test_mm256_mask_moveldup_ps10817  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>10818  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}10819  return _mm256_mask_moveldup_ps(__W, __U, __A);10820}10821 10822TEST_CONSTEXPR(match_m256(_mm256_mask_moveldup_ps(_mm256_setzero_ps(), 0xAA, (__m256)(__v8sf){1,2,3,4,5,6,7,8}), 0,1,0,3,0,5,0,7));10823 10824__m256 test_mm256_maskz_moveldup_ps(__mmask8 __U, __m256 __A) {10825  // CHECK-LABEL: test_mm256_maskz_moveldup_ps10826  // CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6>10827  // CHECK: select <8 x i1> %{{.*}} <8 x float> %{{.*}}, <8 x float> %{{.*}}10828  return _mm256_maskz_moveldup_ps(__U, __A);10829}10830 10831__m128i test_mm_mask_shuffle_epi32(__m128i __W, __mmask8 __U, __m128i __A) {10832  // CHECK-LABEL: test_mm_mask_shuffle_epi3210833  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>10834  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10835  return _mm_mask_shuffle_epi32(__W, __U, __A, 1);10836}10837 10838TEST_CONSTEXPR(match_v4si(_mm_mask_shuffle_epi32(((__m128i)(__v4si){100,101,102,103}), 0x0Fu, ((__m128i)(__v4si){0,1,2,3}), 1), 1,0,0,0));10839TEST_CONSTEXPR(match_v4si(_mm_mask_shuffle_epi32(((__m128i)(__v4si){100,101,102,103}), 0x0Au, ((__m128i)(__v4si){0,1,2,3}), 1), 100,0,102,0));10840TEST_CONSTEXPR(match_v4si(_mm_mask_shuffle_epi32(((__m128i)(__v4si){100,101,102,103}), 0x05u, ((__m128i)(__v4si){0,1,2,3}), 1), 1,101,0,103));10841TEST_CONSTEXPR(match_v4si(_mm_mask_shuffle_epi32(((__m128i)(__v4si){100,101,102,103}), 0x00u, ((__m128i)(__v4si){0,1,2,3}), 1), 100,101,102,103));10842 10843__m128i test_mm_maskz_shuffle_epi32(__mmask8 __U, __m128i __A) {10844  // CHECK-LABEL: test_mm_maskz_shuffle_epi3210845  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>10846  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}10847  return _mm_maskz_shuffle_epi32(__U, __A, 2);10848}10849 10850TEST_CONSTEXPR(match_v4si(_mm_maskz_shuffle_epi32(0x01u, ((__m128i)(__v4si){0,1,2,3}), 2), 2,0,0,0));10851TEST_CONSTEXPR(match_v4si(_mm_maskz_shuffle_epi32(0x0Au, ((__m128i)(__v4si){0,1,2,3}), 2), 0,0,0,0));10852TEST_CONSTEXPR(match_v4si(_mm_maskz_shuffle_epi32(0x0Fu, ((__m128i)(__v4si){0,1,2,3}), 2), 2,0,0,0));10853 10854__m256i test_mm256_mask_shuffle_epi32(__m256i __W, __mmask8 __U, __m256i __A) {10855  // CHECK-LABEL: test_mm256_mask_shuffle_epi3210856  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> poison, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4>10857  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10858  return _mm256_mask_shuffle_epi32(__W, __U, __A, 2);10859}10860 10861TEST_CONSTEXPR(match_v8si(_mm256_mask_shuffle_epi32(((__m256i)(__v8si){100,101,102,103,104,105,106,107}), 0xF0u, ((__m256i)(__v8si){0,1,2,3,4,5,6,7}), 2), 100,101,102,103, 6,4,4,4));10862TEST_CONSTEXPR(match_v8si(_mm256_mask_shuffle_epi32(((__m256i)(__v8si){100,101,102,103,104,105,106,107}), 0x33u, ((__m256i)(__v8si){0,1,2,3,4,5,6,7}), 2), 2,0,102,103, 6,4,106,107));10863TEST_CONSTEXPR(match_v8si(_mm256_mask_shuffle_epi32(((__m256i)(__v8si){100,101,102,103,104,105,106,107}), 0x00u, ((__m256i)(__v8si){0,1,2,3,4,5,6,7}), 2), 100,101,102,103,104,105,106,107));10864 10865__m256i test_mm256_maskz_shuffle_epi32(__mmask8 __U, __m256i __A) {10866  // CHECK-LABEL: test_mm256_maskz_shuffle_epi3210867  // CHECK: shufflevector <8 x i32> %{{.*}}, <8 x i32> poison, <8 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4>10868  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}10869  return _mm256_maskz_shuffle_epi32(__U, __A, 2);10870}10871 10872TEST_CONSTEXPR(match_v8si(_mm256_maskz_shuffle_epi32(0x33u, ((__m256i)(__v8si){0,1,2,3,4,5,6,7}), 2), 2,0,0,0, 6,4,0,0));10873TEST_CONSTEXPR(match_v8si(_mm256_maskz_shuffle_epi32(0xAAu, ((__m256i)(__v8si){0,1,2,3,4,5,6,7}), 2), 0,0,0,0, 0,4,0,4));10874TEST_CONSTEXPR(match_v8si(_mm256_maskz_shuffle_epi32(0xFFu, ((__m256i)(__v8si){0,1,2,3,4,5,6,7}), 2), 2,0,0,0, 6,4,4,4));10875TEST_CONSTEXPR(match_v8si(10876    _mm256_permutex2var_epi32((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8},10877                              (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},10878                              (__m256i)(__v8si){101, 102, 103, 104, 105, 106, 107, 108}),10879    1, 8, 101, 108, 2, 102, 3, 103));10880TEST_CONSTEXPR(match_v8si(10881    _mm256_mask_permutex2var_epi32((__m256i)(__v8si){-1, -2, -3, -4, -5, -6, -7, -8},10882                                    0xAA,10883                                    (__m256i)(__v8si){0, 7, 8, 15, 1, 9, 2, 10},10884                                    (__m256i)(__v8si){101, 102, 103, 104, 105, 106, 107, 108}),10885    -1, -8, -3, 108, -5, 102, -7, 103));10886 10887__m128d test_mm_mask_mov_pd(__m128d __W, __mmask8 __U, __m128d __A) {10888  // CHECK-LABEL: test_mm_mask_mov_pd10889  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}10890  return _mm_mask_mov_pd(__W, __U, __A);10891}10892TEST_CONSTEXPR(match_m128d(_mm_mask_mov_pd((__m128d){-2.0, -1.0}, 0x2, (__m128d){+1.0, +2.0}), -2.0, +2.0));10893 10894__m128d test_mm_maskz_mov_pd(__mmask8 __U, __m128d __A) {10895  // CHECK-LABEL: test_mm_maskz_mov_pd10896  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}10897  return _mm_maskz_mov_pd(__U, __A);10898}10899TEST_CONSTEXPR(match_m128d(_mm_maskz_mov_pd(0x1, (__m128d){+1.0, +2.0}), +1.0, +0.0));10900 10901__m256d test_mm256_mask_mov_pd(__m256d __W, __mmask8 __U, __m256d __A) {10902  // CHECK-LABEL: test_mm256_mask_mov_pd10903  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}10904  return _mm256_mask_mov_pd(__W, __U, __A);10905}10906TEST_CONSTEXPR(match_m256d(_mm256_mask_mov_pd((__m256d){-4.0, -3.0, -2.0, -1.0}, 0x3, (__m256d){+1.0, +2.0, +3.0, +4.0}), +1.0, +2.0, -2.0, -1.0));10907 10908__m256d test_mm256_maskz_mov_pd(__mmask8 __U, __m256d __A) {10909  // CHECK-LABEL: test_mm256_maskz_mov_pd10910  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}10911  return _mm256_maskz_mov_pd(__U, __A);10912}10913TEST_CONSTEXPR(match_m256d(_mm256_maskz_mov_pd(0xC, (__m256d){+1.0, +2.0, +3.0, +4.0}), 0.0, 0.0, +3.0, +4.0));10914 10915__m128 test_mm_mask_mov_ps(__m128 __W, __mmask8 __U, __m128 __A) {10916  // CHECK-LABEL: test_mm_mask_mov_ps10917  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}10918  return _mm_mask_mov_ps(__W, __U, __A);10919}10920TEST_CONSTEXPR(match_m128(_mm_mask_mov_ps((__m128){-4.0f, -3.0f, -2.0f, -1.0f}, 0x3, (__m128){+1.0f, +2.0f, +3.0f, +4.0f}), +1.0f, +2.0f, -2.0f, -1.0f));10921 10922__m128 test_mm_maskz_mov_ps(__mmask8 __U, __m128 __A) {10923  // CHECK-LABEL: test_mm_maskz_mov_ps10924  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}10925  return _mm_maskz_mov_ps(__U, __A);10926}10927TEST_CONSTEXPR(match_m128(_mm_maskz_mov_ps(0xC, (__m128){+1.0f, +2.0f, +3.0f, +4.0f}), 0.0f, 0.0f, +3.0f, +4.0f));10928 10929__m256 test_mm256_mask_mov_ps(__m256 __W, __mmask8 __U, __m256 __A) {10930  // CHECK-LABEL: test_mm256_mask_mov_ps10931  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10932  return _mm256_mask_mov_ps(__W, __U, __A);10933}10934TEST_CONSTEXPR(match_m256(_mm256_mask_mov_ps((__m256){-8.0f, -7.0f, -6.0f, -5.0f, -4.0f, -3.0f, -2.0f, -1.0f}, 0xC3, (__m256){+1.0f, +2.0f, +3.0f, +4.0f, +5.0f, +6.0f, +7.0f, +8.0f}), +1.0f, +2.0f, -6.0f, -5.0f, -4.0f, -3.0f, +7.0f, +8.0f));10935 10936__m256 test_mm256_maskz_mov_ps(__mmask8 __U, __m256 __A) {10937  // CHECK-LABEL: test_mm256_maskz_mov_ps10938  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10939  return _mm256_maskz_mov_ps(__U, __A);10940}10941TEST_CONSTEXPR(match_m256(_mm256_maskz_mov_ps(0xC3, (__m256){+1.0f, +2.0f, +3.0f, +4.0f, +5.0f, +6.0f, +7.0f, +8.0f}), +1.0f, +2.0f, 0.0f, 0.0f, 0.0f, 0.0f, +7.0f, +8.0f));10942 10943__m128 test_mm_mask_cvtph_ps(__m128 __W, __mmask8 __U, __m128i __A) {10944  // CHECK-LABEL: test_mm_mask_cvtph_ps10945  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>10946  // CHECK: fpext <4 x half> %{{.*}} to <4 x float>10947  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}10948  return _mm_mask_cvtph_ps(__W, __U, __A);10949}10950 10951__m128 test_mm_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {10952  // CHECK-LABEL: test_mm_maskz_cvtph_ps10953  // CHECK: shufflevector <8 x i16> %{{.*}}, <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>10954  // CHECK: fpext <4 x half> %{{.*}} to <4 x float>10955  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}10956  return _mm_maskz_cvtph_ps(__U, __A);10957}10958 10959__m256 test_mm256_mask_cvtph_ps(__m256 __W, __mmask8 __U, __m128i __A) {10960  // CHECK-LABEL: test_mm256_mask_cvtph_ps10961  // CHECK: fpext <8 x half> %{{.*}} to <8 x float>10962  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10963  return _mm256_mask_cvtph_ps(__W, __U, __A);10964}10965 10966__m256 test_mm256_maskz_cvtph_ps(__mmask8 __U, __m128i __A) {10967  // CHECK-LABEL: test_mm256_maskz_cvtph_ps10968  // CHECK: fpext <8 x half> %{{.*}} to <8 x float>10969  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}10970  return _mm256_maskz_cvtph_ps(__U, __A);10971}10972 10973__m128i test_mm_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m128 __A) {10974  // CHECK-LABEL: test_mm_mask_cvtps_ph10975  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.12810976  return _mm_mask_cvtps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);10977}10978 10979__m128i test_mm_maskz_cvtps_ph(__mmask8 __U, __m128 __A) {10980  // CHECK-LABEL: test_mm_maskz_cvtps_ph10981  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.12810982  return _mm_maskz_cvtps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);10983}10984 10985__m128i test_mm256_mask_cvtps_ph(__m128i __W, __mmask8 __U, __m256 __A) {10986  // CHECK-LABEL: test_mm256_mask_cvtps_ph10987  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.25610988  return _mm256_mask_cvtps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);10989}10990 10991__m128i test_mm256_maskz_cvtps_ph(__mmask8 __U, __m256 __A) {10992  // CHECK-LABEL: test_mm256_maskz_cvtps_ph10993  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.25610994  return _mm256_maskz_cvtps_ph(__U, __A, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);10995}10996 10997__m128i test_mm_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m128 __A) {10998  // CHECK-LABEL: test_mm_mask_cvt_roundps_ph10999  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.12811000  return _mm_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO);11001}11002 11003__m128i test_mm_maskz_cvt_roundps_ph(__mmask8 __U, __m128 __A) {11004  // CHECK-LABEL: test_mm_maskz_cvt_roundps_ph11005  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.12811006  return _mm_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO);11007}11008 11009__m128i test_mm256_mask_cvt_roundps_ph(__m128i __W, __mmask8 __U, __m256 __A) {11010  // CHECK-LABEL: test_mm256_mask_cvt_roundps_ph11011  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.25611012  return _mm256_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_TO_ZERO);11013}11014 11015__m128i test_mm256_maskz_cvt_roundps_ph(__mmask8 __U, __m256 __A) {11016  // CHECK-LABEL: test_mm256_maskz_cvt_roundps_ph11017  // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.25611018  return _mm256_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_TO_ZERO);11019}11020 11021__mmask8 test_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {11022  // CHECK-LABEL: test_mm_cmpeq_epi32_mask11023  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}11024  return (__mmask8)_mm_cmpeq_epi32_mask(__a, __b);11025}11026 11027__mmask8 test_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {11028  // CHECK-LABEL: test_mm_mask_cmpeq_epi32_mask11029  // CHECK: icmp eq <4 x i32> %{{.*}}, %{{.*}}11030  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}11031  return (__mmask8)_mm_mask_cmpeq_epi32_mask(__u, __a, __b);11032}11033 11034__mmask8 test_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {11035  // CHECK-LABEL: test_mm_mask_cmpeq_epi64_mask11036  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}11037  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}11038  return (__mmask8)_mm_mask_cmpeq_epi64_mask(__u, __a, __b);11039}11040 11041__mmask8 test_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {11042  // CHECK-LABEL: test_mm_cmpeq_epi64_mask11043  // CHECK: icmp eq <2 x i64> %{{.*}}, %{{.*}}11044  return (__mmask8)_mm_cmpeq_epi64_mask(__a, __b);11045}11046 11047__mmask8 test_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {11048  // CHECK-LABEL: test_mm_cmpgt_epi32_mask11049  // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}11050  return (__mmask8)_mm_cmpgt_epi32_mask(__a, __b);11051}11052 11053__mmask8 test_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {11054  // CHECK-LABEL: test_mm_mask_cmpgt_epi32_mask11055  // CHECK: icmp sgt <4 x i32> %{{.*}}, %{{.*}}11056  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}11057  return (__mmask8)_mm_mask_cmpgt_epi32_mask(__u, __a, __b);11058}11059 11060__mmask8 test_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {11061  // CHECK-LABEL: test_mm_mask_cmpgt_epi64_mask11062  // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}11063  // CHECK: and <2 x i1> %{{.*}}, %{{.*}}11064  return (__mmask8)_mm_mask_cmpgt_epi64_mask(__u, __a, __b);11065}11066 11067__mmask8 test_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {11068  // CHECK-LABEL: test_mm_cmpgt_epi64_mask11069  // CHECK: icmp sgt <2 x i64> %{{.*}}, %{{.*}}11070  return (__mmask8)_mm_cmpgt_epi64_mask(__a, __b);11071}11072 11073__mmask8 test_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {11074  // CHECK-LABEL: test_mm256_cmpeq_epi32_mask11075  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}11076  return (__mmask8)_mm256_cmpeq_epi32_mask(__a, __b);11077}11078 11079__mmask8 test_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {11080  // CHECK-LABEL: test_mm256_mask_cmpeq_epi32_mask11081  // CHECK: icmp eq <8 x i32> %{{.*}}, %{{.*}}11082  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}11083  return (__mmask8)_mm256_mask_cmpeq_epi32_mask(__u, __a, __b);11084}11085 11086__mmask8 test_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {11087  // CHECK-LABEL: test_mm256_mask_cmpeq_epi64_mask11088  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}11089  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}11090  return (__mmask8)_mm256_mask_cmpeq_epi64_mask(__u, __a, __b);11091}11092 11093__mmask8 test_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {11094  // CHECK-LABEL: test_mm256_cmpeq_epi64_mask11095  // CHECK: icmp eq <4 x i64> %{{.*}}, %{{.*}}11096  return (__mmask8)_mm256_cmpeq_epi64_mask(__a, __b);11097}11098 11099__mmask8 test_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {11100  // CHECK-LABEL: test_mm256_cmpgt_epi32_mask11101  // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}11102  return (__mmask8)_mm256_cmpgt_epi32_mask(__a, __b);11103}11104 11105__mmask8 test_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {11106  // CHECK-LABEL: test_mm256_mask_cmpgt_epi32_mask11107  // CHECK: icmp sgt <8 x i32> %{{.*}}, %{{.*}}11108  // CHECK: and <8 x i1> %{{.*}}, %{{.*}}11109  return (__mmask8)_mm256_mask_cmpgt_epi32_mask(__u, __a, __b);11110}11111 11112__mmask8 test_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {11113  // CHECK-LABEL: test_mm256_mask_cmpgt_epi64_mask11114  // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}11115  // CHECK: and <4 x i1> %{{.*}}, %{{.*}}11116  return (__mmask8)_mm256_mask_cmpgt_epi64_mask(__u, __a, __b);11117}11118 11119__mmask8 test_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {11120  // CHECK-LABEL: test_mm256_cmpgt_epi64_mask11121  // CHECK: icmp sgt <4 x i64> %{{.*}}, %{{.*}}11122  return (__mmask8)_mm256_cmpgt_epi64_mask(__a, __b);11123}11124