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