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