brintos

brintos / llvm-project-archived public Read only

0
0
Text · 52.2 KiB · 92d8e1a Raw
1250 lines · c
1// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s2// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s3// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s4// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s5 6// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s7// RUN: %clang_cc1 -x c -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s8// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s9// RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -ffreestanding %s -triple=i386-apple-darwin -target-feature +avx512dq -target-feature +avx512vl -emit-llvm -o - -Wall -Werror -fexperimental-new-constant-interpreter | FileCheck %s10 11 12#include <immintrin.h>13#include "builtin_test_helpers.h"14 15__m256i test_mm256_mullo_epi64 (__m256i __A, __m256i __B) {16  // CHECK-LABEL: test_mm256_mullo_epi6417  // CHECK: mul <4 x i64>18  return _mm256_mullo_epi64(__A, __B);19}20TEST_CONSTEXPR(match_v4di(_mm256_mullo_epi64((__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-2, +3, +4, -5}), -2, -6, +12, +20));21 22__m256i test_mm256_mask_mullo_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {23  // CHECK-LABEL: test_mm256_mask_mullo_epi6424  // CHECK: mul <4 x i64> %{{.*}}, %{{.*}}25  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}26  return (__m256i) _mm256_mask_mullo_epi64 ( __W, __U, __A, __B);27}28TEST_CONSTEXPR(match_v4di(_mm256_mask_mullo_epi64((__m256i)(__v4di){-100, +200, -300, +400}, 0x03, (__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-2, +3, +4, -5}), -2, -6, -300, +400));29 30__m256i test_mm256_maskz_mullo_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {31  // CHECK-LABEL: test_mm256_maskz_mullo_epi6432  // CHECK: mul <4 x i64> %{{.*}}, %{{.*}}33  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}34  return (__m256i) _mm256_maskz_mullo_epi64 (__U, __A, __B);35}36TEST_CONSTEXPR(match_v4di(_mm256_maskz_mullo_epi64(0x03, (__m256i)(__v4di){+1, -2, +3, -4}, (__m256i)(__v4di){-2, +3, +4, -5}), -2, -6, 0, 0));37 38__m128i test_mm_mullo_epi64 (__m128i __A, __m128i __B) {39  // CHECK-LABEL: test_mm_mullo_epi6440  // CHECK: mul <2 x i64>41  return (__m128i) _mm_mullo_epi64(__A, __B);42}43TEST_CONSTEXPR(match_v2di(_mm_mullo_epi64((__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-3, +4}), -3, -8));44 45__m128i test_mm_mask_mullo_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {46  // CHECK-LABEL: test_mm_mask_mullo_epi6447  // CHECK: mul <2 x i64> %{{.*}}, %{{.*}}48  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}49  return (__m128i) _mm_mask_mullo_epi64 ( __W, __U, __A, __B);50}51TEST_CONSTEXPR(match_v2di(_mm_mask_mullo_epi64((__m128i)(__v2di){-100, +200}, 0x01, (__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-3, +4}), -3, +200));52 53__m128i test_mm_maskz_mullo_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {54  // CHECK-LABEL: test_mm_maskz_mullo_epi6455  // CHECK: mul <2 x i64> %{{.*}}, %{{.*}}56  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}57  return (__m128i) _mm_maskz_mullo_epi64 (__U, __A, __B);58}59TEST_CONSTEXPR(match_v2di(_mm_maskz_mullo_epi64(0x01, (__m128i)(__v2di){+1, -2}, (__m128i)(__v2di){-3, +4}), -3, 0));60 61__m256d test_mm256_mask_andnot_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {62  // CHECK-LABEL: test_mm256_mask_andnot_pd63  // CHECK: xor <4 x i64> %{{.*}}, splat (i64 -1)64  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}65  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}66  return (__m256d) _mm256_mask_andnot_pd ( __W, __U, __A, __B);67}68 69__m256d test_mm256_maskz_andnot_pd (__mmask8 __U, __m256d __A, __m256d __B) {70  // CHECK-LABEL: test_mm256_maskz_andnot_pd71  // CHECK: xor <4 x i64> %{{.*}}, splat (i64 -1)72  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}73  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}74  return (__m256d) _mm256_maskz_andnot_pd (__U, __A, __B);75}76 77__m128d test_mm_mask_andnot_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {78  // CHECK-LABEL: test_mm_mask_andnot_pd79  // CHECK: xor <2 x i64> %{{.*}}, splat (i64 -1)80  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}81  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}82  return (__m128d) _mm_mask_andnot_pd ( __W, __U, __A, __B);83}84 85__m128d test_mm_maskz_andnot_pd (__mmask8 __U, __m128d __A, __m128d __B) {86  // CHECK-LABEL: test_mm_maskz_andnot_pd87  // CHECK: xor <2 x i64> %{{.*}}, splat (i64 -1)88  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}89  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}90  return (__m128d) _mm_maskz_andnot_pd (__U, __A, __B);91}92 93__m256 test_mm256_mask_andnot_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {94  // CHECK-LABEL: test_mm256_mask_andnot_ps95  // CHECK: xor <8 x i32> %{{.*}}, splat (i32 -1)96  // CHECK: and <8 x i32> %{{.*}}, %{{.*}}97  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}98  return (__m256) _mm256_mask_andnot_ps ( __W, __U, __A, __B);99}100 101__m256 test_mm256_maskz_andnot_ps (__mmask8 __U, __m256 __A, __m256 __B) {102  // CHECK-LABEL: test_mm256_maskz_andnot_ps103  // CHECK: xor <8 x i32> %{{.*}}, splat (i32 -1)104  // CHECK: and <8 x i32> %{{.*}}, %{{.*}}105  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}106  return (__m256) _mm256_maskz_andnot_ps (__U, __A, __B);107}108 109__m128 test_mm_mask_andnot_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {110  // CHECK-LABEL: test_mm_mask_andnot_ps111  // CHECK: xor <4 x i32> %{{.*}}, splat (i32 -1)112  // CHECK: and <4 x i32> %{{.*}}, %{{.*}}113  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}114  return (__m128) _mm_mask_andnot_ps ( __W, __U, __A, __B);115}116 117__m128 test_mm_maskz_andnot_ps (__mmask8 __U, __m128 __A, __m128 __B) {118  // CHECK-LABEL: test_mm_maskz_andnot_ps119  // CHECK: xor <4 x i32> %{{.*}}, splat (i32 -1)120  // CHECK: and <4 x i32> %{{.*}}, %{{.*}}121  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}122  return (__m128) _mm_maskz_andnot_ps (__U, __A, __B);123}124 125__m256d test_mm256_mask_and_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {126  // CHECK-LABEL: test_mm256_mask_and_pd127  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}128  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}129  return (__m256d) _mm256_mask_and_pd ( __W, __U, __A, __B);130}131 132__m256d test_mm256_maskz_and_pd (__mmask8 __U, __m256d __A, __m256d __B) {133  // CHECK-LABEL: test_mm256_maskz_and_pd134  // CHECK: and <4 x i64> %{{.*}}, %{{.*}}135  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}136  return (__m256d) _mm256_maskz_and_pd (__U, __A, __B);137}138 139__m128d test_mm_mask_and_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {140  // CHECK-LABEL: test_mm_mask_and_pd141  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}142  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}143  return (__m128d) _mm_mask_and_pd ( __W, __U, __A, __B);144}145 146__m128d test_mm_maskz_and_pd (__mmask8 __U, __m128d __A, __m128d __B) {147  // CHECK-LABEL: test_mm_maskz_and_pd148  // CHECK: and <2 x i64> %{{.*}}, %{{.*}}149  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}150  return (__m128d) _mm_maskz_and_pd (__U, __A, __B);151}152 153__m256 test_mm256_mask_and_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {154  // CHECK-LABEL: test_mm256_mask_and_ps155  // CHECK: and <8 x i32> %{{.*}}, %{{.*}}156  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}157  return (__m256) _mm256_mask_and_ps ( __W, __U, __A, __B);158}159 160__m256 test_mm256_maskz_and_ps (__mmask8 __U, __m256 __A, __m256 __B) {161  // CHECK-LABEL: test_mm256_maskz_and_ps162  // CHECK: and <8 x i32> %{{.*}}, %{{.*}}163  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}164  return (__m256) _mm256_maskz_and_ps (__U, __A, __B);165}166 167__m128 test_mm_mask_and_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {168  // CHECK-LABEL: test_mm_mask_and_ps169  // CHECK: and <4 x i32> %{{.*}}, %{{.*}}170  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}171  return (__m128) _mm_mask_and_ps ( __W, __U, __A, __B);172}173 174__m128 test_mm_maskz_and_ps (__mmask8 __U, __m128 __A, __m128 __B) {175  // CHECK-LABEL: test_mm_maskz_and_ps176  // CHECK: and <4 x i32> %{{.*}}, %{{.*}}177  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}178  return (__m128) _mm_maskz_and_ps (__U, __A, __B);179}180 181__m256d test_mm256_mask_xor_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {182  // CHECK-LABEL: test_mm256_mask_xor_pd183  // CHECK: xor <4 x i64> %{{.*}}, %{{.*}}184  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}185  return (__m256d) _mm256_mask_xor_pd ( __W, __U, __A, __B);186}187 188__m256d test_mm256_maskz_xor_pd (__mmask8 __U, __m256d __A, __m256d __B) {189  // CHECK-LABEL: test_mm256_maskz_xor_pd190  // CHECK: xor <4 x i64> %{{.*}}, %{{.*}}191  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}192  return (__m256d) _mm256_maskz_xor_pd (__U, __A, __B);193}194 195__m128d test_mm_mask_xor_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {196  // CHECK-LABEL: test_mm_mask_xor_pd197  // CHECK: xor <2 x i64> %{{.*}}, %{{.*}}198  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}199  return (__m128d) _mm_mask_xor_pd ( __W, __U, __A, __B);200}201 202__m128d test_mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {203  // CHECK-LABEL: test_mm_maskz_xor_pd204  // CHECK: xor <2 x i64> %{{.*}}, %{{.*}}205  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}206  return (__m128d) _mm_maskz_xor_pd (__U, __A, __B);207}208 209__m256 test_mm256_mask_xor_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {210  // CHECK-LABEL: test_mm256_mask_xor_ps211  // CHECK: xor <8 x i32> %{{.*}}, %{{.*}}212  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}213  return (__m256) _mm256_mask_xor_ps ( __W, __U, __A, __B);214}215 216__m256 test_mm256_maskz_xor_ps (__mmask8 __U, __m256 __A, __m256 __B) {217  // CHECK-LABEL: test_mm256_maskz_xor_ps218  // CHECK: xor <8 x i32> %{{.*}}, %{{.*}}219  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}220  return (__m256) _mm256_maskz_xor_ps (__U, __A, __B);221}222 223__m128 test_mm_mask_xor_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {224  // CHECK-LABEL: test_mm_mask_xor_ps225  // CHECK: xor <4 x i32> %{{.*}}, %{{.*}}226  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}227  return (__m128) _mm_mask_xor_ps ( __W, __U, __A, __B);228}229 230__m128 test_mm_maskz_xor_ps (__mmask8 __U, __m128 __A, __m128 __B) {231  // CHECK-LABEL: test_mm_maskz_xor_ps232  // CHECK: xor <4 x i32> %{{.*}}, %{{.*}}233  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}234  return (__m128) _mm_maskz_xor_ps (__U, __A, __B);235}236 237__m256d test_mm256_mask_or_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {238  // CHECK-LABEL: test_mm256_mask_or_pd239  // CHECK: or <4 x i64> %{{.*}}, %{{.*}}240  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}241  return (__m256d) _mm256_mask_or_pd ( __W, __U, __A, __B);242}243 244__m256d test_mm256_maskz_or_pd (__mmask8 __U, __m256d __A, __m256d __B) {245  // CHECK-LABEL: test_mm256_maskz_or_pd246  // CHECK: or <4 x i64> %{{.*}}, %{{.*}}247  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}248  return (__m256d) _mm256_maskz_or_pd (__U, __A, __B);249}250 251__m128d test_mm_mask_or_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {252  // CHECK-LABEL: test_mm_mask_or_pd253  // CHECK: or <2 x i64> %{{.*}}, %{{.*}}254  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}255  return (__m128d) _mm_mask_or_pd ( __W, __U, __A, __B);256}257 258__m128d test_mm_maskz_or_pd (__mmask8 __U, __m128d __A, __m128d __B) {259  // CHECK-LABEL: test_mm_maskz_or_pd260  // CHECK: or <2 x i64> %{{.*}}, %{{.*}}261  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}262  return (__m128d) _mm_maskz_or_pd (__U, __A, __B);263}264 265__m256 test_mm256_mask_or_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {266  // CHECK-LABEL: test_mm256_mask_or_ps267  // CHECK: or <8 x i32> %{{.*}}, %{{.*}}268  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}269  return (__m256) _mm256_mask_or_ps ( __W, __U, __A, __B);270}271 272__m256 test_mm256_maskz_or_ps (__mmask8 __U, __m256 __A, __m256 __B) {273  // CHECK-LABEL: test_mm256_maskz_or_ps274  // CHECK: or <8 x i32> %{{.*}}, %{{.*}}275  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}276  return (__m256) _mm256_maskz_or_ps (__U, __A, __B);277}278 279__m128 test_mm_mask_or_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {280  // CHECK-LABEL: test_mm_mask_or_ps281  // CHECK: or <4 x i32> %{{.*}}, %{{.*}}282  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}283  return (__m128) _mm_mask_or_ps ( __W, __U, __A, __B);284}285 286__m128 test_mm_maskz_or_ps (__mmask8 __U, __m128 __A, __m128 __B) {287  // CHECK-LABEL: test_mm_maskz_or_ps288  // CHECK: or <4 x i32> %{{.*}}, %{{.*}}289  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}290  return (__m128) _mm_maskz_or_ps(__U, __A, __B);291}292 293__m128i test_mm_cvtpd_epi64(__m128d __A) {294  // CHECK-LABEL: test_mm_cvtpd_epi64295  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.128296  return _mm_cvtpd_epi64(__A); 297}298 299__m128i test_mm_mask_cvtpd_epi64(__m128i __W, __mmask8 __U, __m128d __A) {300  // CHECK-LABEL: test_mm_mask_cvtpd_epi64301  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.128302  return _mm_mask_cvtpd_epi64(__W, __U, __A); 303}304 305__m128i test_mm_maskz_cvtpd_epi64(__mmask8 __U, __m128d __A) {306  // CHECK-LABEL: test_mm_maskz_cvtpd_epi64307  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.128308  return _mm_maskz_cvtpd_epi64(__U, __A); 309}310 311__m256i test_mm256_cvtpd_epi64(__m256d __A) {312  // CHECK-LABEL: test_mm256_cvtpd_epi64313  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.256314  return _mm256_cvtpd_epi64(__A); 315}316 317__m256i test_mm256_mask_cvtpd_epi64(__m256i __W, __mmask8 __U, __m256d __A) {318  // CHECK-LABEL: test_mm256_mask_cvtpd_epi64319  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.256320  return _mm256_mask_cvtpd_epi64(__W, __U, __A); 321}322 323__m256i test_mm256_maskz_cvtpd_epi64(__mmask8 __U, __m256d __A) {324  // CHECK-LABEL: test_mm256_maskz_cvtpd_epi64325  // CHECK: @llvm.x86.avx512.mask.cvtpd2qq.256326  return _mm256_maskz_cvtpd_epi64(__U, __A); 327}328 329__m128i test_mm_cvtpd_epu64(__m128d __A) {330  // CHECK-LABEL: test_mm_cvtpd_epu64331  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.128332  return _mm_cvtpd_epu64(__A); 333}334 335__m128i test_mm_mask_cvtpd_epu64(__m128i __W, __mmask8 __U, __m128d __A) {336  // CHECK-LABEL: test_mm_mask_cvtpd_epu64337  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.128338  return _mm_mask_cvtpd_epu64(__W, __U, __A); 339}340 341__m128i test_mm_maskz_cvtpd_epu64(__mmask8 __U, __m128d __A) {342  // CHECK-LABEL: test_mm_maskz_cvtpd_epu64343  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.128344  return _mm_maskz_cvtpd_epu64(__U, __A); 345}346 347__m256i test_mm256_cvtpd_epu64(__m256d __A) {348  // CHECK-LABEL: test_mm256_cvtpd_epu64349  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.256350  return _mm256_cvtpd_epu64(__A); 351}352 353__m256i test_mm256_mask_cvtpd_epu64(__m256i __W, __mmask8 __U, __m256d __A) {354  // CHECK-LABEL: test_mm256_mask_cvtpd_epu64355  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.256356  return _mm256_mask_cvtpd_epu64(__W, __U, __A); 357}358 359__m256i test_mm256_maskz_cvtpd_epu64(__mmask8 __U, __m256d __A) {360  // CHECK-LABEL: test_mm256_maskz_cvtpd_epu64361  // CHECK: @llvm.x86.avx512.mask.cvtpd2uqq.256362  return _mm256_maskz_cvtpd_epu64(__U, __A); 363}364 365__m128i test_mm_cvtps_epi64(__m128 __A) {366  // CHECK-LABEL: test_mm_cvtps_epi64367  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.128368  return _mm_cvtps_epi64(__A); 369}370 371__m128i test_mm_mask_cvtps_epi64(__m128i __W, __mmask8 __U, __m128 __A) {372  // CHECK-LABEL: test_mm_mask_cvtps_epi64373  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.128374  return _mm_mask_cvtps_epi64(__W, __U, __A); 375}376 377__m128i test_mm_maskz_cvtps_epi64(__mmask8 __U, __m128 __A) {378  // CHECK-LABEL: test_mm_maskz_cvtps_epi64379  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.128380  return _mm_maskz_cvtps_epi64(__U, __A); 381}382 383__m256i test_mm256_cvtps_epi64(__m128 __A) {384  // CHECK-LABEL: test_mm256_cvtps_epi64385  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.256386  return _mm256_cvtps_epi64(__A); 387}388 389__m256i test_mm256_mask_cvtps_epi64(__m256i __W, __mmask8 __U, __m128 __A) {390  // CHECK-LABEL: test_mm256_mask_cvtps_epi64391  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.256392  return _mm256_mask_cvtps_epi64(__W, __U, __A); 393}394 395__m256i test_mm256_maskz_cvtps_epi64(__mmask8 __U, __m128 __A) {396  // CHECK-LABEL: test_mm256_maskz_cvtps_epi64397  // CHECK: @llvm.x86.avx512.mask.cvtps2qq.256398  return _mm256_maskz_cvtps_epi64(__U, __A); 399}400 401__m128i test_mm_cvtps_epu64(__m128 __A) {402  // CHECK-LABEL: test_mm_cvtps_epu64403  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.128404  return _mm_cvtps_epu64(__A); 405}406 407__m128i test_mm_mask_cvtps_epu64(__m128i __W, __mmask8 __U, __m128 __A) {408  // CHECK-LABEL: test_mm_mask_cvtps_epu64409  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.128410  return _mm_mask_cvtps_epu64(__W, __U, __A); 411}412 413__m128i test_mm_maskz_cvtps_epu64(__mmask8 __U, __m128 __A) {414  // CHECK-LABEL: test_mm_maskz_cvtps_epu64415  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.128416  return _mm_maskz_cvtps_epu64(__U, __A); 417}418 419__m256i test_mm256_cvtps_epu64(__m128 __A) {420  // CHECK-LABEL: test_mm256_cvtps_epu64421  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.256422  return _mm256_cvtps_epu64(__A); 423}424 425__m256i test_mm256_mask_cvtps_epu64(__m256i __W, __mmask8 __U, __m128 __A) {426  // CHECK-LABEL: test_mm256_mask_cvtps_epu64427  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.256428  return _mm256_mask_cvtps_epu64(__W, __U, __A); 429}430 431__m256i test_mm256_maskz_cvtps_epu64(__mmask8 __U, __m128 __A) {432  // CHECK-LABEL: test_mm256_maskz_cvtps_epu64433  // CHECK: @llvm.x86.avx512.mask.cvtps2uqq.256434  return _mm256_maskz_cvtps_epu64(__U, __A); 435}436 437__m128d test_mm_cvtepi64_pd(__m128i __A) {438  // CHECK-LABEL: test_mm_cvtepi64_pd439  // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>440  return _mm_cvtepi64_pd(__A); 441}442 443TEST_CONSTEXPR(match_m128d(_mm_cvtepi64_pd((__m128i)(__v2di){-1, -1}), -1.0, -1.0));444 445__m128d test_mm_mask_cvtepi64_pd(__m128d __W, __mmask8 __U, __m128i __A) {446  // CHECK-LABEL: test_mm_mask_cvtepi64_pd447  // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>448  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}449  return _mm_mask_cvtepi64_pd(__W, __U, __A); 450}451 452TEST_CONSTEXPR(match_m128d(_mm_mask_cvtepi64_pd((__m128d){-777.0, -777.0}, /*01=*/0x1, (__m128i)(__v2di){-1, -1}), -1.0, -777.0));453 454__m128d test_mm_maskz_cvtepi64_pd(__mmask8 __U, __m128i __A) {455  // CHECK-LABEL: test_mm_maskz_cvtepi64_pd456  // CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>457  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}458  return _mm_maskz_cvtepi64_pd(__U, __A); 459}460 461TEST_CONSTEXPR(match_m128d(_mm_maskz_cvtepi64_pd(/*01=*/0x1, (__m128i)(__v2di){-1, -1}), -1.0, 0.0));462 463__m256d test_mm256_cvtepi64_pd(__m256i __A) {464  // CHECK-LABEL: test_mm256_cvtepi64_pd465  // CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>466  return _mm256_cvtepi64_pd(__A); 467}468 469TEST_CONSTEXPR(match_m256d(_mm256_cvtepi64_pd((__m256i)(__v4di){-1, -1, 2, 2}), -1.0, -1.0, 2.0, 2.0));470 471__m256d test_mm256_mask_cvtepi64_pd(__m256d __W, __mmask8 __U, __m256i __A) {472  // CHECK-LABEL: test_mm256_mask_cvtepi64_pd473  // CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>474  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}475  return _mm256_mask_cvtepi64_pd(__W, __U, __A); 476}477 478TEST_CONSTEXPR(match_m256d(_mm256_mask_cvtepi64_pd((__m256d){-777.0, -777.0, -777.0, -777.0}, /*1100*/0xc, (__m256i)(__v4di){-1, -1, 2, 2}), -777.0, -777.0, 2.0, 2.0));479 480__m256d test_mm256_maskz_cvtepi64_pd(__mmask8 __U, __m256i __A) {481  // CHECK-LABEL: test_mm256_maskz_cvtepi64_pd482  // CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>483  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}484  return _mm256_maskz_cvtepi64_pd(__U, __A); 485}486 487TEST_CONSTEXPR(match_m256d(_mm256_maskz_cvtepi64_pd(/*1100*/0xc, (__m256i)(__v4di){-1, -1, 2, 2}), 0.0, 0.0, 2.0, 2.0));488 489__m128 test_mm_cvtepi64_ps(__m128i __A) {490  // CHECK-LABEL: test_mm_cvtepi64_ps491  // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128492  return _mm_cvtepi64_ps(__A); 493}494 495__m128 test_mm_mask_cvtepi64_ps(__m128 __W, __mmask8 __U, __m128i __A) {496  // CHECK-LABEL: test_mm_mask_cvtepi64_ps497  // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128498  return _mm_mask_cvtepi64_ps(__W, __U, __A); 499}500 501__m128 test_mm_maskz_cvtepi64_ps(__mmask8 __U, __m128i __A) {502  // CHECK-LABEL: test_mm_maskz_cvtepi64_ps503  // CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128504  return _mm_maskz_cvtepi64_ps(__U, __A); 505}506 507__m128 test_mm256_cvtepi64_ps(__m256i __A) {508  // CHECK-LABEL: test_mm256_cvtepi64_ps509  // CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>510  return _mm256_cvtepi64_ps(__A); 511}512 513TEST_CONSTEXPR(match_m128(_mm256_cvtepi64_ps((__m256i)(__v4di){-1, -1, 2, 2}), -1.0f, -1.0f, 2.0f, 2.0f));514 515__m128 test_mm256_mask_cvtepi64_ps(__m128 __W, __mmask8 __U, __m256i __A) {516  // CHECK-LABEL: test_mm256_mask_cvtepi64_ps517  // CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>518  // select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}519  return _mm256_mask_cvtepi64_ps(__W, __U, __A); 520}521 522TEST_CONSTEXPR(match_m128(_mm256_mask_cvtepi64_ps((__m128){-777.0f, -777.0f, -777.0f, -777.0f}, /*1010=*/0xa, (__m256i)(__v4di){-1, -1, 2, 2}), -777.0f, -1.0f, -777.0f, 2.0f));523 524__m128 test_mm256_maskz_cvtepi64_ps(__mmask8 __U, __m256i __A) {525  // CHECK-LABEL: test_mm256_maskz_cvtepi64_ps526  // CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>527  // select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}528  return _mm256_maskz_cvtepi64_ps(__U, __A); 529}530 531TEST_CONSTEXPR(match_m128(_mm256_maskz_cvtepi64_ps(/*1010=*/0xa, (__m256i)(__v4di){-1, -1, 2, 2}), 0.0f, -1.0f, 0.0f, 2.0f));532 533__m128i test_mm_cvttpd_epi64(__m128d __A) {534  // CHECK-LABEL: test_mm_cvttpd_epi64535  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128536  return _mm_cvttpd_epi64(__A); 537}538 539__m128i test_mm_mask_cvttpd_epi64(__m128i __W, __mmask8 __U, __m128d __A) {540  // CHECK-LABEL: test_mm_mask_cvttpd_epi64541  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128542  return _mm_mask_cvttpd_epi64(__W, __U, __A); 543}544 545__m128i test_mm_maskz_cvttpd_epi64(__mmask8 __U, __m128d __A) {546  // CHECK-LABEL: test_mm_maskz_cvttpd_epi64547  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128548  return _mm_maskz_cvttpd_epi64(__U, __A); 549}550 551__m256i test_mm256_cvttpd_epi64(__m256d __A) {552  // CHECK-LABEL: test_mm256_cvttpd_epi64553  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.256554  return _mm256_cvttpd_epi64(__A); 555}556 557__m256i test_mm256_mask_cvttpd_epi64(__m256i __W, __mmask8 __U, __m256d __A) {558  // CHECK-LABEL: test_mm256_mask_cvttpd_epi64559  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.256560  return _mm256_mask_cvttpd_epi64(__W, __U, __A); 561}562 563__m256i test_mm256_maskz_cvttpd_epi64(__mmask8 __U, __m256d __A) {564  // CHECK-LABEL: test_mm256_maskz_cvttpd_epi64565  // CHECK: @llvm.x86.avx512.mask.cvttpd2qq.256566  return _mm256_maskz_cvttpd_epi64(__U, __A); 567}568 569__m128i test_mm_cvttpd_epu64(__m128d __A) {570  // CHECK-LABEL: test_mm_cvttpd_epu64571  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.128572  return _mm_cvttpd_epu64(__A); 573}574 575__m128i test_mm_mask_cvttpd_epu64(__m128i __W, __mmask8 __U, __m128d __A) {576  // CHECK-LABEL: test_mm_mask_cvttpd_epu64577  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.128578  return _mm_mask_cvttpd_epu64(__W, __U, __A); 579}580 581__m128i test_mm_maskz_cvttpd_epu64(__mmask8 __U, __m128d __A) {582  // CHECK-LABEL: test_mm_maskz_cvttpd_epu64583  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.128584  return _mm_maskz_cvttpd_epu64(__U, __A); 585}586 587__m256i test_mm256_cvttpd_epu64(__m256d __A) {588  // CHECK-LABEL: test_mm256_cvttpd_epu64589  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.256590  return _mm256_cvttpd_epu64(__A); 591}592 593__m256i test_mm256_mask_cvttpd_epu64(__m256i __W, __mmask8 __U, __m256d __A) {594  // CHECK-LABEL: test_mm256_mask_cvttpd_epu64595  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.256596  return _mm256_mask_cvttpd_epu64(__W, __U, __A); 597}598 599__m256i test_mm256_maskz_cvttpd_epu64(__mmask8 __U, __m256d __A) {600  // CHECK-LABEL: test_mm256_maskz_cvttpd_epu64601  // CHECK: @llvm.x86.avx512.mask.cvttpd2uqq.256602  return _mm256_maskz_cvttpd_epu64(__U, __A); 603}604 605__m128i test_mm_cvttps_epi64(__m128 __A) {606  // CHECK-LABEL: test_mm_cvttps_epi64607  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.128608  return _mm_cvttps_epi64(__A); 609}610 611__m128i test_mm_mask_cvttps_epi64(__m128i __W, __mmask8 __U, __m128 __A) {612  // CHECK-LABEL: test_mm_mask_cvttps_epi64613  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.128614  return _mm_mask_cvttps_epi64(__W, __U, __A); 615}616 617__m128i test_mm_maskz_cvttps_epi64(__mmask8 __U, __m128 __A) {618  // CHECK-LABEL: test_mm_maskz_cvttps_epi64619  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.128620  return _mm_maskz_cvttps_epi64(__U, __A); 621}622 623__m256i test_mm256_cvttps_epi64(__m128 __A) {624  // CHECK-LABEL: test_mm256_cvttps_epi64625  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.256626  return _mm256_cvttps_epi64(__A); 627}628 629__m256i test_mm256_mask_cvttps_epi64(__m256i __W, __mmask8 __U, __m128 __A) {630  // CHECK-LABEL: test_mm256_mask_cvttps_epi64631  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.256632  return _mm256_mask_cvttps_epi64(__W, __U, __A); 633}634 635__m256i test_mm256_maskz_cvttps_epi64(__mmask8 __U, __m128 __A) {636  // CHECK-LABEL: test_mm256_maskz_cvttps_epi64637  // CHECK: @llvm.x86.avx512.mask.cvttps2qq.256638  return _mm256_maskz_cvttps_epi64(__U, __A); 639}640 641__m128i test_mm_cvttps_epu64(__m128 __A) {642  // CHECK-LABEL: test_mm_cvttps_epu64643  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.128644  return _mm_cvttps_epu64(__A); 645}646 647__m128i test_mm_mask_cvttps_epu64(__m128i __W, __mmask8 __U, __m128 __A) {648  // CHECK-LABEL: test_mm_mask_cvttps_epu64649  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.128650  return _mm_mask_cvttps_epu64(__W, __U, __A); 651}652 653__m128i test_mm_maskz_cvttps_epu64(__mmask8 __U, __m128 __A) {654  // CHECK-LABEL: test_mm_maskz_cvttps_epu64655  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.128656  return _mm_maskz_cvttps_epu64(__U, __A); 657}658 659__m256i test_mm256_cvttps_epu64(__m128 __A) {660  // CHECK-LABEL: test_mm256_cvttps_epu64661  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.256662  return _mm256_cvttps_epu64(__A); 663}664 665__m256i test_mm256_mask_cvttps_epu64(__m256i __W, __mmask8 __U, __m128 __A) {666  // CHECK-LABEL: test_mm256_mask_cvttps_epu64667  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.256668  return _mm256_mask_cvttps_epu64(__W, __U, __A); 669}670 671__m256i test_mm256_maskz_cvttps_epu64(__mmask8 __U, __m128 __A) {672  // CHECK-LABEL: test_mm256_maskz_cvttps_epu64673  // CHECK: @llvm.x86.avx512.mask.cvttps2uqq.256674  return _mm256_maskz_cvttps_epu64(__U, __A); 675}676 677__m128d test_mm_cvtepu64_pd(__m128i __A) {678  // CHECK-LABEL: test_mm_cvtepu64_pd679  // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>680  return _mm_cvtepu64_pd(__A); 681}682 683TEST_CONSTEXPR(match_m128d(_mm_cvtepu64_pd((__m128i)(__v2du){1, 1}), 1.0, 1.0));684 685__m128d test_mm_mask_cvtepu64_pd(__m128d __W, __mmask8 __U, __m128i __A) {686  // CHECK-LABEL: test_mm_mask_cvtepu64_pd687  // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>688  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}689  return _mm_mask_cvtepu64_pd(__W, __U, __A); 690}691 692TEST_CONSTEXPR(match_m128d(_mm_mask_cvtepu64_pd((__m128d){-777.0, -777.0}, /*01=*/0x1, (__m128i)(__v2du){1, 1}), 1.0, -777.0));693 694__m128d test_mm_maskz_cvtepu64_pd(__mmask8 __U, __m128i __A) {695  // CHECK-LABEL: test_mm_maskz_cvtepu64_pd696  // CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>697  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}698  return _mm_maskz_cvtepu64_pd(__U, __A); 699}700 701TEST_CONSTEXPR(match_m128d(_mm_maskz_cvtepu64_pd(/*01=*/0x1, (__m128i)(__v2du){1, 1}), 1.0, 0.0));702 703__m256d test_mm256_cvtepu64_pd(__m256i __A) {704  // CHECK-LABEL: test_mm256_cvtepu64_pd705  // CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>706  return _mm256_cvtepu64_pd(__A); 707}708 709TEST_CONSTEXPR(match_m256d(_mm256_cvtepu64_pd((__m256i)(__v4du){1, 1, 2, 2}), 1.0, 1.0, 2.0, 2.0));710 711__m256d test_mm256_mask_cvtepu64_pd(__m256d __W, __mmask8 __U, __m256i __A) {712  // CHECK-LABEL: test_mm256_mask_cvtepu64_pd713  // CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>714  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}715  return _mm256_mask_cvtepu64_pd(__W, __U, __A); 716}717 718TEST_CONSTEXPR(match_m256d(_mm256_mask_cvtepu64_pd((__m256d){-777.0, -777.0, -777.0, -777.0}, /*1100*/0xc, (__m256i)(__v4du){1, 1, 2, 2}), -777.0, -777.0, 2.0, 2.0));719 720__m256d test_mm256_maskz_cvtepu64_pd(__mmask8 __U, __m256i __A) {721  // CHECK-LABEL: test_mm256_maskz_cvtepu64_pd722  // CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>723  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}724  return _mm256_maskz_cvtepu64_pd(__U, __A); 725}726 727TEST_CONSTEXPR(match_m256d(_mm256_maskz_cvtepu64_pd(/*1100*/0xc, (__m256i)(__v4du){1, 1, 2, 2}), 0.0, 0.0, 2.0, 2.0));728 729__m128 test_mm_cvtepu64_ps(__m128i __A) {730  // CHECK-LABEL: test_mm_cvtepu64_ps731  // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128732  return _mm_cvtepu64_ps(__A); 733}734 735__m128 test_mm_mask_cvtepu64_ps(__m128 __W, __mmask8 __U, __m128i __A) {736  // CHECK-LABEL: test_mm_mask_cvtepu64_ps737  // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128738  return _mm_mask_cvtepu64_ps(__W, __U, __A); 739}740 741__m128 test_mm_maskz_cvtepu64_ps(__mmask8 __U, __m128i __A) {742  // CHECK-LABEL: test_mm_maskz_cvtepu64_ps743  // CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128744  return _mm_maskz_cvtepu64_ps(__U, __A); 745}746 747__m128 test_mm256_cvtepu64_ps(__m256i __A) {748  // CHECK-LABEL: test_mm256_cvtepu64_ps749  // CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>750  return _mm256_cvtepu64_ps(__A); 751}752 753TEST_CONSTEXPR(match_m128(_mm256_cvtepu64_ps((__m256i)(__v4du){1, 1, 2, 2}), 1.0f, 1.0f, 2.0f, 2.0f));754 755__m128 test_mm256_mask_cvtepu64_ps(__m128 __W, __mmask8 __U, __m256i __A) {756  // CHECK-LABEL: test_mm256_mask_cvtepu64_ps757  // CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>758  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}759  return _mm256_mask_cvtepu64_ps(__W, __U, __A); 760}761 762TEST_CONSTEXPR(match_m128(_mm256_mask_cvtepu64_ps((__m128){-777.0f, -777.0f, -777.0f, -777.0f}, /*1010=*/0xa, (__m256i)(__v4du){1, 1, 2, 2}), -777.0f, 1.0f, -777.0f, 2.0f));763 764__m128 test_mm256_maskz_cvtepu64_ps(__mmask8 __U, __m256i __A) {765  // CHECK-LABEL: test_mm256_maskz_cvtepu64_ps766  // CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>767  // CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}768  return _mm256_maskz_cvtepu64_ps(__U, __A); 769}770 771TEST_CONSTEXPR(match_m128(_mm256_maskz_cvtepu64_ps(/*1010=*/0xa, (__m256i)(__v4du){1, 1, 2, 2}), 0.0f, 1.0f, 0.0f, 2.0f));772 773__m128d test_mm_range_pd(__m128d __A, __m128d __B) {774  // CHECK-LABEL: test_mm_range_pd775  // CHECK: @llvm.x86.avx512.mask.range.pd.128776  return _mm_range_pd(__A, __B, 4); 777}778 779__m128d test_mm_mask_range_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {780  // CHECK-LABEL: test_mm_mask_range_pd781  // CHECK: @llvm.x86.avx512.mask.range.pd.128782  return _mm_mask_range_pd(__W, __U, __A, __B, 4); 783}784 785__m128d test_mm_maskz_range_pd(__mmask8 __U, __m128d __A, __m128d __B) {786  // CHECK-LABEL: test_mm_maskz_range_pd787  // CHECK: @llvm.x86.avx512.mask.range.pd.128788  return _mm_maskz_range_pd(__U, __A, __B, 4); 789}790 791__m256d test_mm256_range_pd(__m256d __A, __m256d __B) {792  // CHECK-LABEL: test_mm256_range_pd793  // CHECK: @llvm.x86.avx512.mask.range.pd.256794  return _mm256_range_pd(__A, __B, 4); 795}796 797__m256d test_mm256_mask_range_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {798  // CHECK-LABEL: test_mm256_mask_range_pd799  // CHECK: @llvm.x86.avx512.mask.range.pd.256800  return _mm256_mask_range_pd(__W, __U, __A, __B, 4); 801}802 803__m256d test_mm256_maskz_range_pd(__mmask8 __U, __m256d __A, __m256d __B) {804  // CHECK-LABEL: test_mm256_maskz_range_pd805  // CHECK: @llvm.x86.avx512.mask.range.pd.256806  return _mm256_maskz_range_pd(__U, __A, __B, 4); 807}808 809__m128 test_mm_range_ps(__m128 __A, __m128 __B) {810  // CHECK-LABEL: test_mm_range_ps811  // CHECK: @llvm.x86.avx512.mask.range.ps.128812  return _mm_range_ps(__A, __B, 4); 813}814 815__m128 test_mm_mask_range_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {816  // CHECK-LABEL: test_mm_mask_range_ps817  // CHECK: @llvm.x86.avx512.mask.range.ps.128818  return _mm_mask_range_ps(__W, __U, __A, __B, 4); 819}820 821__m128 test_mm_maskz_range_ps(__mmask8 __U, __m128 __A, __m128 __B) {822  // CHECK-LABEL: test_mm_maskz_range_ps823  // CHECK: @llvm.x86.avx512.mask.range.ps.128824  return _mm_maskz_range_ps(__U, __A, __B, 4); 825}826 827__m256 test_mm256_range_ps(__m256 __A, __m256 __B) {828  // CHECK-LABEL: test_mm256_range_ps829  // CHECK: @llvm.x86.avx512.mask.range.ps.256830  return _mm256_range_ps(__A, __B, 4); 831}832 833__m256 test_mm256_mask_range_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {834  // CHECK-LABEL: test_mm256_mask_range_ps835  // CHECK: @llvm.x86.avx512.mask.range.ps.256836  return _mm256_mask_range_ps(__W, __U, __A, __B, 4); 837}838 839__m256 test_mm256_maskz_range_ps(__mmask8 __U, __m256 __A, __m256 __B) {840  // CHECK-LABEL: test_mm256_maskz_range_ps841  // CHECK: @llvm.x86.avx512.mask.range.ps.256842  return _mm256_maskz_range_ps(__U, __A, __B, 4); 843}844 845__m128d test_mm_reduce_pd(__m128d __A) {846  // CHECK-LABEL: test_mm_reduce_pd847  // CHECK: @llvm.x86.avx512.mask.reduce.pd.128848  return _mm_reduce_pd(__A, 4); 849}850 851__m128d test_mm_mask_reduce_pd(__m128d __W, __mmask8 __U, __m128d __A) {852  // CHECK-LABEL: test_mm_mask_reduce_pd853  // CHECK: @llvm.x86.avx512.mask.reduce.pd.128854  return _mm_mask_reduce_pd(__W, __U, __A, 4); 855}856 857__m128d test_mm_maskz_reduce_pd(__mmask8 __U, __m128d __A) {858  // CHECK-LABEL: test_mm_maskz_reduce_pd859  // CHECK: @llvm.x86.avx512.mask.reduce.pd.128860  return _mm_maskz_reduce_pd(__U, __A, 4); 861}862 863__m256d test_mm256_reduce_pd(__m256d __A) {864  // CHECK-LABEL: test_mm256_reduce_pd865  // CHECK: @llvm.x86.avx512.mask.reduce.pd.256866  return _mm256_reduce_pd(__A, 4); 867}868 869__m256d test_mm256_mask_reduce_pd(__m256d __W, __mmask8 __U, __m256d __A) {870  // CHECK-LABEL: test_mm256_mask_reduce_pd871  // CHECK: @llvm.x86.avx512.mask.reduce.pd.256872  return _mm256_mask_reduce_pd(__W, __U, __A, 4); 873}874 875__m256d test_mm256_maskz_reduce_pd(__mmask8 __U, __m256d __A) {876  // CHECK-LABEL: test_mm256_maskz_reduce_pd877  // CHECK: @llvm.x86.avx512.mask.reduce.pd.256878  return _mm256_maskz_reduce_pd(__U, __A, 4); 879}880 881__m128 test_mm_reduce_ps(__m128 __A) {882  // CHECK-LABEL: test_mm_reduce_ps883  // CHECK: @llvm.x86.avx512.mask.reduce.ps.128884  return _mm_reduce_ps(__A, 4); 885}886 887__m128 test_mm_mask_reduce_ps(__m128 __W, __mmask8 __U, __m128 __A) {888  // CHECK-LABEL: test_mm_mask_reduce_ps889  // CHECK: @llvm.x86.avx512.mask.reduce.ps.128890  return _mm_mask_reduce_ps(__W, __U, __A, 4); 891}892 893__m128 test_mm_maskz_reduce_ps(__mmask8 __U, __m128 __A) {894  // CHECK-LABEL: test_mm_maskz_reduce_ps895  // CHECK: @llvm.x86.avx512.mask.reduce.ps.128896  return _mm_maskz_reduce_ps(__U, __A, 4); 897}898 899__m256 test_mm256_reduce_ps(__m256 __A) {900  // CHECK-LABEL: test_mm256_reduce_ps901  // CHECK: @llvm.x86.avx512.mask.reduce.ps.256902  return _mm256_reduce_ps(__A, 4); 903}904 905__m256 test_mm256_mask_reduce_ps(__m256 __W, __mmask8 __U, __m256 __A) {906  // CHECK-LABEL: test_mm256_mask_reduce_ps907  // CHECK: @llvm.x86.avx512.mask.reduce.ps.256908  return _mm256_mask_reduce_ps(__W, __U, __A, 4); 909}910 911__m256 test_mm256_maskz_reduce_ps(__mmask8 __U, __m256 __A) {912  // CHECK-LABEL: test_mm256_maskz_reduce_ps913  // CHECK: @llvm.x86.avx512.mask.reduce.ps.256914  return _mm256_maskz_reduce_ps(__U, __A, 4); 915}916 917__mmask8 test_mm_movepi32_mask(__m128i __A) {918  // CHECK-LABEL: test_mm_movepi32_mask919  // CHECK: [[CMP:%.*]] = icmp slt <4 x i32> %{{.*}}, zeroinitializer920  // CHECK: [[SHUF:%.*]] = shufflevector <4 x i1> [[CMP]], <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>921  return _mm_movepi32_mask(__A); 922}923 924TEST_CONSTEXPR(_mm512_movepi16_mask(925    ((__m512i)(__v32hi){0, 1, short(32768), 3, 4, 5, 6, 7,926                        8, 9, 10, 11, 12, 13, 14, 15,927                        16, 17, 18, 19, 20, 21, 22, 23,928                        24, 25, 26, 27, 28, 29, 30, short(32768)})929) == (__mmask32)0x80000004);930 931__mmask8 test_mm256_movepi32_mask(__m256i __A) {932  // CHECK-LABEL: test_mm256_movepi32_mask933  // CHECK: [[CMP:%.*]] = icmp slt <8 x i32> %{{.*}}, zeroinitializer934  return _mm256_movepi32_mask(__A); 935}936 937TEST_CONSTEXPR(_mm256_movepi32_mask(((__m256i)(__v8si){0, 1, -1, 3, 4, 5, 6, -2147483648})) == (__mmask8)0x84);938 939__m128i test_mm_movm_epi32(__mmask8 __A) {940  // CHECK-LABEL: test_mm_movm_epi32941  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>942  // CHECK: %extract.i = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>943  // CHECK: %vpmovm2.i = sext <4 x i1> %extract.i to <4 x i32>944  return _mm_movm_epi32(__A); 945}946 947__m256i test_mm256_movm_epi32(__mmask8 __A) {948  // CHECK-LABEL: test_mm256_movm_epi32949  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>950  // CHECK: %vpmovm2.i = sext <8 x i1> %{{.*}} to <8 x i32>951  return _mm256_movm_epi32(__A); 952}953 954__m128i test_mm_movm_epi64(__mmask8 __A) {955  // CHECK-LABEL: test_mm_movm_epi64956  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>957  // CHECK: %extract.i = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <2 x i32> <i32 0, i32 1>958  // CHECK: %vpmovm2.i = sext <2 x i1> %extract.i to <2 x i64>959  return _mm_movm_epi64(__A); 960}961 962__m256i test_mm256_movm_epi64(__mmask8 __A) {963  // CHECK-LABEL: test_mm256_movm_epi64964  // CHECK: %{{.*}} = bitcast i8 %{{.*}} to <8 x i1>965  // CHECK: %extract.i = shufflevector <8 x i1> %{{.*}}, <8 x i1> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>966  // CHECK: %vpmovm2.i = sext <4 x i1> %extract.i to <4 x i64>967  return _mm256_movm_epi64(__A); 968}969 970__mmask8 test_mm_movepi64_mask(__m128i __A) {971  // CHECK-LABEL: test_mm_movepi64_mask972  // CHECK: [[CMP:%.*]] = icmp slt <2 x i64> %{{.*}}, zeroinitializer973  // CHECK: [[SHUF:%.*]] = shufflevector <2 x i1> [[CMP]], <2 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 2, i32 3, i32 2, i32 3>974  return _mm_movepi64_mask(__A); 975}976 977TEST_CONSTEXPR(_mm_movepi64_mask(((__m128i)(__v2di){0, -1})) == (__mmask8)0x02);978 979__mmask8 test_mm256_movepi64_mask(__m256i __A) {980  // CHECK-LABEL: test_mm256_movepi64_mask981  // CHECK: [[CMP:%.*]] = icmp slt <4 x i64> %{{.*}}, zeroinitializer982  // CHECK: [[SHUF:%.*]] = shufflevector <4 x i1> [[CMP]], <4 x i1> zeroinitializer, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>983  return _mm256_movepi64_mask(__A); 984}985 986TEST_CONSTEXPR(_mm256_movepi64_mask(((__m256i)(__v4di){0, 1, -1, 3})) == (__mmask8)0x04);987 988__m256 test_mm256_broadcast_f32x2(__m128 __A) {989  // CHECK-LABEL: test_mm256_broadcast_f32x2990  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>991  return _mm256_broadcast_f32x2(__A); 992}993TEST_CONSTEXPR(match_m256(_mm256_broadcast_f32x2((__m128)(__v4sf){1.0f, -2.0f, 3.0f, -4.0f}), 1.0f, -2.0f, 1.0f, -2.0f, 1.0f, -2.0f, 1.0f, -2.0f));994 995__m256 test_mm256_mask_broadcast_f32x2(__m256 __O, __mmask8 __M, __m128 __A) {996  // CHECK-LABEL: test_mm256_mask_broadcast_f32x2997  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>998  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}999  return _mm256_mask_broadcast_f32x2(__O, __M, __A); 1000}1001 1002TEST_CONSTEXPR(match_m256(_mm256_mask_broadcast_f32x2(_mm256_setzero_ps(), 0xAA, (__m128)(__v4sf){1.f,2.f,3.f,4.f}), 0,2.f,0,2.f,0,2.f,0,2.f));1003 1004__m256 test_mm256_maskz_broadcast_f32x2(__mmask8 __M, __m128 __A) {1005  // CHECK-LABEL: test_mm256_maskz_broadcast_f32x21006  // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1007  // CHECK: select <8 x i1> %{{.*}}, <8 x float> %{{.*}}, <8 x float> %{{.*}}1008  return _mm256_maskz_broadcast_f32x2(__M, __A); 1009}1010 1011TEST_CONSTEXPR(match_m256(_mm256_maskz_broadcast_f32x2(0xAA, (__m128)(__v4sf){1.f,2.f,3.f,4.f}), 0,2.f,0,2.f,0,2.f,0,2.f));1012 1013__m256d test_mm256_broadcast_f64x2(double const* __A) {1014  // CHECK-LABEL: test_mm256_broadcast_f64x21015  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1016  return _mm256_broadcast_f64x2(_mm_loadu_pd(__A)); 1017}1018TEST_CONSTEXPR(match_m256d(_mm256_broadcast_f64x2((__m128d)(__v2df){1.0, -2.0}), 1.0, -2.0, 1.0, -2.0));1019 1020__m256d test_mm256_mask_broadcast_f64x2(__m256d __O, __mmask8 __M, double const* __A) {1021  // CHECK-LABEL: test_mm256_mask_broadcast_f64x21022  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1023  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}1024  return _mm256_mask_broadcast_f64x2(__O, __M, _mm_loadu_pd(__A)); 1025}1026 1027TEST_CONSTEXPR(match_m256d(_mm256_mask_broadcast_f64x2(_mm256_setzero_pd(), 0xA, (__m128d)(__v2df){1.0,2.0}), 0,2.0,0,2.0));1028 1029__m256d test_mm256_maskz_broadcast_f64x2(__mmask8 __M, double const* __A) {1030  // CHECK-LABEL: test_mm256_maskz_broadcast_f64x21031  // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1032  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}1033  return _mm256_maskz_broadcast_f64x2(__M, _mm_loadu_pd(__A)); 1034}1035 1036TEST_CONSTEXPR(match_m256d(_mm256_maskz_broadcast_f64x2(0xA, (__m128d)(__v2df){1.0,2.0}), 0,2.0,0,2.0));1037 1038__m128i test_mm_broadcast_i32x2(__m128i __A) {1039  // CHECK-LABEL: test_mm_broadcast_i32x21040  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1041  return _mm_broadcast_i32x2(__A); 1042}1043TEST_CONSTEXPR(match_v4si(_mm_broadcast_i32x2((__m128i)(__v4si){1, -2, 3, -4}), 1, -2, 1, -2));1044 1045__m128i test_mm_mask_broadcast_i32x2(__m128i __O, __mmask8 __M, __m128i __A) {1046  // CHECK-LABEL: test_mm_mask_broadcast_i32x21047  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1048  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}1049  return _mm_mask_broadcast_i32x2(__O, __M, __A); 1050}1051 1052TEST_CONSTEXPR(match_v4si(_mm_mask_broadcast_i32x2(_mm_setzero_si128(), 0xF, (__m128i)(__v4si){0,1,2,3}), 0,1,0,1));1053 1054__m128i test_mm_maskz_broadcast_i32x2(__mmask8 __M, __m128i __A) {1055  // CHECK-LABEL: test_mm_maskz_broadcast_i32x21056  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1057  // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}1058  return _mm_maskz_broadcast_i32x2(__M, __A); 1059}1060 1061TEST_CONSTEXPR(match_v4si(_mm_maskz_broadcast_i32x2(0xF, (__m128i)(__v4si){0,1,2,3}), 0,1,0,1));1062 1063__m256i test_mm256_broadcast_i32x2(__m128i __A) {1064  // CHECK-LABEL: test_mm256_broadcast_i32x21065  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1066  return _mm256_broadcast_i32x2(__A); 1067}1068TEST_CONSTEXPR(match_v8si(_mm256_broadcast_i32x2((__m128i)(__v4si){1, -2, 3, -4}), 1, -2, 1, -2, 1, -2, 1, -2));1069 1070__m256i test_mm256_mask_broadcast_i32x2(__m256i __O, __mmask8 __M, __m128i __A) {1071  // CHECK-LABEL: test_mm256_mask_broadcast_i32x21072  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1073  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}1074  return _mm256_mask_broadcast_i32x2(__O, __M, __A); 1075}1076 1077TEST_CONSTEXPR(match_v8si(_mm256_mask_broadcast_i32x2(_mm256_setzero_si256(), 0xAA, (__m128i)(__v4si){0,1,2,3}), 0,1,0,1,0,1,0,1));1078 1079__m256i test_mm256_maskz_broadcast_i32x2(__mmask8 __M, __m128i __A) {1080  // CHECK-LABEL: test_mm256_maskz_broadcast_i32x21081  // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1>1082  // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}1083  return _mm256_maskz_broadcast_i32x2(__M, __A); 1084}1085 1086TEST_CONSTEXPR(match_v8si(_mm256_maskz_broadcast_i32x2(0xAA, (__m128i)(__v4si){0,1,2,3}), 0,1,0,1,0,1,0,1));1087 1088__m256i test_mm256_broadcast_i64x2(__m128i const* __A) {1089  // CHECK-LABEL: test_mm256_broadcast_i64x21090  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1091  return _mm256_broadcast_i64x2(_mm_loadu_si128(__A)); 1092}1093TEST_CONSTEXPR(match_v4di(_mm256_broadcast_i64x2((__m128i)(__v2di){1, -2}), 1, -2, 1, -2));1094 1095__m256i test_mm256_mask_broadcast_i64x2(__m256i __O, __mmask8 __M, __m128i const* __A) {1096  // CHECK-LABEL: test_mm256_mask_broadcast_i64x21097  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1098  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1099  return _mm256_mask_broadcast_i64x2(__O, __M, _mm_loadu_si128(__A)); 1100}1101 1102__m256i test_mm256_maskz_broadcast_i64x2(__mmask8 __M, __m128i const* __A) {1103  // CHECK-LABEL: test_mm256_maskz_broadcast_i64x21104  // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 0, i32 1>1105  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1106  return _mm256_maskz_broadcast_i64x2(__M, _mm_loadu_si128(__A)); 1107}1108 1109TEST_CONSTEXPR(match_v4di(_mm256_maskz_broadcast_i64x2(0xF, (__m128i)(__v2di){1,2}), 1,2,1,2));1110 1111__m128d test_mm256_extractf64x2_pd(__m256d __A) {1112  // CHECK-LABEL: test_mm256_extractf64x2_pd1113  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <2 x i32> <i32 2, i32 3>1114  return _mm256_extractf64x2_pd(__A, 1); 1115}1116TEST_CONSTEXPR(match_m128d(_mm256_extractf64x2_pd(((__m256d){0.0,1.0,2.0,3.0}), 1), 2.0, 3.0));1117 1118__m128d test_mm256_mask_extractf64x2_pd(__m128d __W, __mmask8 __U, __m256d __A) {1119  // CHECK-LABEL: test_mm256_mask_extractf64x2_pd1120  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <2 x i32> <i32 2, i32 3>1121  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}1122  return _mm256_mask_extractf64x2_pd(__W, __U, __A, 1); 1123}1124TEST_CONSTEXPR(match_m128d(_mm256_mask_extractf64x2_pd((((__m128d){100.0, 101.0})), (__mmask8)0x1, (((__m256d){0.0,1.0,2.0,3.0})),1), 2.0, 101.0));1125 1126__m128d test_mm256_maskz_extractf64x2_pd(__mmask8 __U, __m256d __A) {1127  // CHECK-LABEL: test_mm256_maskz_extractf64x2_pd1128  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> poison, <2 x i32> <i32 2, i32 3>1129  // CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}1130  return _mm256_maskz_extractf64x2_pd(__U, __A, 1); 1131}1132TEST_CONSTEXPR(match_m128d(_mm256_maskz_extractf64x2_pd((__mmask8)0x2,(((__m256d){0.0,1.0,2.0,3.0})),1), 0.0, 3.0));1133 1134__m128i test_mm256_extracti64x2_epi64(__m256i __A) {1135  // CHECK-LABEL: test_mm256_extracti64x2_epi641136  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <2 x i32> <i32 2, i32 3>1137  return _mm256_extracti64x2_epi64(__A, 1); 1138}1139TEST_CONSTEXPR(match_m128i(_mm256_extracti64x2_epi64(((__m256i){0ULL,1ULL,2ULL,3ULL}), 1), 2ULL, 3ULL));1140 1141__m128i test_mm256_mask_extracti64x2_epi64(__m128i __W, __mmask8 __U, __m256i __A) {1142  // CHECK-LABEL: test_mm256_mask_extracti64x2_epi641143  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <2 x i32> <i32 2, i32 3>1144  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1145  return _mm256_mask_extracti64x2_epi64(__W, __U, __A, 1); 1146}1147TEST_CONSTEXPR(match_m128i(_mm256_mask_extracti64x2_epi64((((__m128i){100ULL, 101ULL})), (__mmask8)0x1, (((__m256i){0ULL,1ULL,2ULL,3ULL})), 1), 2ULL, 101ULL));1148 1149__m128i test_mm256_maskz_extracti64x2_epi64(__mmask8 __U, __m256i __A) {1150  // CHECK-LABEL: test_mm256_maskz_extracti64x2_epi641151  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> poison, <2 x i32> <i32 2, i32 3>1152  // CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}1153  return _mm256_maskz_extracti64x2_epi64(__U, __A, 1); 1154}1155TEST_CONSTEXPR(match_m128i(_mm256_maskz_extracti64x2_epi64((__mmask8)0x2, (((__m256i){0ULL,1ULL,2ULL,3ULL})),1), 0ULL, 3ULL));1156 1157__m256d test_mm256_insertf64x2(__m256d __A, __m128d __B) {1158  // CHECK-LABEL: test_mm256_insertf64x21159  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>1160  return _mm256_insertf64x2(__A, __B, 1); 1161}1162TEST_CONSTEXPR(match_m256d(_mm256_insertf64x2(((__m256d){1.0, 2.0, 3.0, 4.0}), ((__m128d){5.0, 6.0}), 1), 1.0, 2.0, 5.0, 6.0));1163 1164__m256d test_mm256_mask_insertf64x2(__m256d __W, __mmask8 __U, __m256d __A, __m128d __B) {1165  // CHECK-LABEL: test_mm256_mask_insertf64x21166  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>1167  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}1168  return _mm256_mask_insertf64x2(__W, __U, __A, __B, 1); 1169}1170TEST_CONSTEXPR(match_m256d(_mm256_mask_insertf64x2(((__m256d){2.0, 3.0, 4.0, 5.0}), (0x8), ((__m256d){2.0, 3.0, 4.0, 5.0}), ((__m128d){6.0, 7.0}), 1), 2.0, 3.0, 4.0, 7.0));1171 1172__m256d test_mm256_maskz_insertf64x2(__mmask8 __U, __m256d __A, __m128d __B) {1173  // CHECK-LABEL: test_mm256_maskz_insertf64x21174  // CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>1175  // CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}1176  return _mm256_maskz_insertf64x2(__U, __A, __B, 1); 1177}1178TEST_CONSTEXPR(match_m256d(_mm256_maskz_insertf64x2((0x8), ((__m256d){1.0, 2.0, 3.0, 4.0}), ((__m128d){5.0, 6.0}), 1), 0.0, 0.0, 0.0, 6.0));1179 1180__m256i test_mm256_inserti64x2(__m256i __A, __m128i __B) {1181  // CHECK-LABEL: test_mm256_inserti64x21182  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>1183  return _mm256_inserti64x2(__A, __B, 1); 1184}1185TEST_CONSTEXPR(match_m256i(_mm256_inserti64x2(((__m256i){1, 2, 3, 4}), ((__m128i){5, 6}), 1), 1, 2, 5, 6));1186 1187__m256i test_mm256_mask_inserti64x2(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B) {1188  // CHECK-LABEL: test_mm256_mask_inserti64x21189  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>1190  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1191  return _mm256_mask_inserti64x2(__W, __U, __A, __B, 1); 1192}1193TEST_CONSTEXPR(match_m256i(_mm256_mask_inserti64x2(((__m256i){2, 3, 4, 5}), (0x4), ((__m256i){2, 3, 4, 5}), ((__m128i){6, 7}), 1), 2, 3, 6, 5));1194 1195__m256i test_mm256_maskz_inserti64x2(__mmask8 __U, __m256i __A, __m128i __B) {1196  // CHECK-LABEL: test_mm256_maskz_inserti64x21197  // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 4, i32 5>1198  // CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}1199  return _mm256_maskz_inserti64x2(__U, __A, __B, 1); 1200}1201TEST_CONSTEXPR(match_m256i(_mm256_maskz_inserti64x2((0x4), ((__m256i){1, 2, 3, 4}), ((__m128i){5, 6}), 1), 0, 0, 5, 0));1202 1203__mmask8 test_mm_mask_fpclass_pd_mask(__mmask8 __U, __m128d __A) {1204  // CHECK-LABEL: test_mm_mask_fpclass_pd_mask1205  // CHECK: @llvm.x86.avx512.fpclass.pd.1281206  return _mm_mask_fpclass_pd_mask(__U, __A, 2); 1207}1208 1209__mmask8 test_mm_fpclass_pd_mask(__m128d __A) {1210  // CHECK-LABEL: test_mm_fpclass_pd_mask1211  // CHECK: @llvm.x86.avx512.fpclass.pd.1281212  return _mm_fpclass_pd_mask(__A, 2); 1213}1214 1215__mmask8 test_mm256_mask_fpclass_pd_mask(__mmask8 __U, __m256d __A) {1216  // CHECK-LABEL: test_mm256_mask_fpclass_pd_mask1217  // CHECK: @llvm.x86.avx512.fpclass.pd.2561218  return _mm256_mask_fpclass_pd_mask(__U, __A, 2); 1219}1220 1221__mmask8 test_mm256_fpclass_pd_mask(__m256d __A) {1222  // CHECK-LABEL: test_mm256_fpclass_pd_mask1223  // CHECK: @llvm.x86.avx512.fpclass.pd.2561224  return _mm256_fpclass_pd_mask(__A, 2); 1225}1226 1227__mmask8 test_mm_mask_fpclass_ps_mask(__mmask8 __U, __m128 __A) {1228  // CHECK-LABEL: test_mm_mask_fpclass_ps_mask1229  // CHECK: @llvm.x86.avx512.fpclass.ps.1281230  return _mm_mask_fpclass_ps_mask(__U, __A, 2); 1231}1232 1233__mmask8 test_mm_fpclass_ps_mask(__m128 __A) {1234  // CHECK-LABEL: test_mm_fpclass_ps_mask1235  // CHECK: @llvm.x86.avx512.fpclass.ps.1281236  return _mm_fpclass_ps_mask(__A, 2); 1237}1238 1239__mmask8 test_mm256_mask_fpclass_ps_mask(__mmask8 __U, __m256 __A) {1240  // CHECK-LABEL: test_mm256_mask_fpclass_ps_mask1241  // CHECK: @llvm.x86.avx512.fpclass.ps.2561242  return _mm256_mask_fpclass_ps_mask(__U, __A, 2); 1243}1244 1245__mmask8 test_mm256_fpclass_ps_mask(__m256 __A) {1246  // CHECK-LABEL: test_mm256_fpclass_ps_mask1247  // CHECK: @llvm.x86.avx512.fpclass.ps.2561248  return _mm256_fpclass_ps_mask(__A, 2); 1249}1250