Skip to content

Commit 49f28f6

Browse files
authored
[Headers][X86] Add constexpr support for some AVX[512] intrinsics. (#157260)
The following AVX[512] intrinsics are now constexpr: - `_mm_cvtepi64_pd` - `_mm_mask_cvtepi64_pd` - `_mm_maskz_cvtepi64_pd` - `_mm_cvtepu64_pd` - `_mm_mask_cvtepu64_pd` - `_mm_maskz_cvtepu64_pd` - `_mm256_cvtepi64_pd` - `_mm256_mask_cvtepi64_pd` - `_mm256_maskz_cvtepi64_pd` - `_mm256_cvtepu64_pd` - `_mm256_mask_cvtepu64_pd` - `_mm256_maskz_cvtepu64_pd` - `_mm256_cvtepi64_ps` - `_mm256_mask_cvtepi64_ps` - `_mm256_maskz_cvtepi64_ps` - `_mm256_cvtepu64_ps` - `_mm256_mask_cvtepu64_ps` - `_mm256_maskz_cvtepu64_ps` - `_mm_cvtepi16_ph` - `_mm_mask_cvtepi16_ph` - `_mm_maskz_cvtepi16_ph` - `_mm_set1_ph` - `_mm_cvtepu16_ph` - `_mm_mask_cvtepu16_ph` - `_mm_maskz_cvtepu16_ph` - `_mm256_cvtepi16_ph` - `_mm256_mask_cvtepi16_ph` - `_mm256_set1_ph` - `_mm256_maskz_cvtepi16_ph` This PR is part 3 [[part 1](#156187) - [part 2](#156567)] of a series of PRs fixing #155798
1 parent afa0e70 commit 49f28f6

File tree

4 files changed

+109
-47
lines changed

4 files changed

+109
-47
lines changed

clang/lib/Headers/avx512vldqintrin.h

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -460,39 +460,39 @@ _mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
460460
(__mmask8) __U);
461461
}
462462

463-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
464-
_mm_cvtepi64_pd (__m128i __A) {
463+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
464+
_mm_cvtepi64_pd(__m128i __A) {
465465
return (__m128d)__builtin_convertvector((__v2di)__A, __v2df);
466466
}
467467

468-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
469-
_mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
468+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
469+
_mm_mask_cvtepi64_pd(__m128d __W, __mmask8 __U, __m128i __A) {
470470
return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
471471
(__v2df)_mm_cvtepi64_pd(__A),
472472
(__v2df)__W);
473473
}
474474

475-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
476-
_mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) {
475+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
476+
_mm_maskz_cvtepi64_pd(__mmask8 __U, __m128i __A) {
477477
return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
478478
(__v2df)_mm_cvtepi64_pd(__A),
479479
(__v2df)_mm_setzero_pd());
480480
}
481481

482-
static __inline__ __m256d __DEFAULT_FN_ATTRS256
483-
_mm256_cvtepi64_pd (__m256i __A) {
482+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
483+
_mm256_cvtepi64_pd(__m256i __A) {
484484
return (__m256d)__builtin_convertvector((__v4di)__A, __v4df);
485485
}
486486

487-
static __inline__ __m256d __DEFAULT_FN_ATTRS256
488-
_mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
487+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
488+
_mm256_mask_cvtepi64_pd(__m256d __W, __mmask8 __U, __m256i __A) {
489489
return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
490490
(__v4df)_mm256_cvtepi64_pd(__A),
491491
(__v4df)__W);
492492
}
493493

494-
static __inline__ __m256d __DEFAULT_FN_ATTRS256
495-
_mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) {
494+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
495+
_mm256_maskz_cvtepi64_pd(__mmask8 __U, __m256i __A) {
496496
return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
497497
(__v4df)_mm256_cvtepi64_pd(__A),
498498
(__v4df)_mm256_setzero_pd());
@@ -519,20 +519,20 @@ _mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A) {
519519
(__mmask8) __U);
520520
}
521521

522-
static __inline__ __m128 __DEFAULT_FN_ATTRS256
523-
_mm256_cvtepi64_ps (__m256i __A) {
522+
static __inline__ __m128 __DEFAULT_FN_ATTRS256_CONSTEXPR
523+
_mm256_cvtepi64_ps(__m256i __A) {
524524
return (__m128)__builtin_convertvector((__v4di)__A, __v4sf);
525525
}
526526

527-
static __inline__ __m128 __DEFAULT_FN_ATTRS256
528-
_mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
527+
static __inline__ __m128 __DEFAULT_FN_ATTRS256_CONSTEXPR
528+
_mm256_mask_cvtepi64_ps(__m128 __W, __mmask8 __U, __m256i __A) {
529529
return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
530530
(__v4sf)_mm256_cvtepi64_ps(__A),
531531
(__v4sf)__W);
532532
}
533533

534-
static __inline__ __m128 __DEFAULT_FN_ATTRS256
535-
_mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A) {
534+
static __inline__ __m128 __DEFAULT_FN_ATTRS256_CONSTEXPR
535+
_mm256_maskz_cvtepi64_ps(__mmask8 __U, __m256i __A) {
536536
return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
537537
(__v4sf)_mm256_cvtepi64_ps(__A),
538538
(__v4sf)_mm_setzero_ps());
@@ -706,39 +706,39 @@ _mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
706706
(__mmask8) __U);
707707
}
708708

709-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
710-
_mm_cvtepu64_pd (__m128i __A) {
709+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
710+
_mm_cvtepu64_pd(__m128i __A) {
711711
return (__m128d)__builtin_convertvector((__v2du)__A, __v2df);
712712
}
713713

714-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
715-
_mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
714+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
715+
_mm_mask_cvtepu64_pd(__m128d __W, __mmask8 __U, __m128i __A) {
716716
return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
717717
(__v2df)_mm_cvtepu64_pd(__A),
718718
(__v2df)__W);
719719
}
720720

721-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
722-
_mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) {
721+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
722+
_mm_maskz_cvtepu64_pd(__mmask8 __U, __m128i __A) {
723723
return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
724724
(__v2df)_mm_cvtepu64_pd(__A),
725725
(__v2df)_mm_setzero_pd());
726726
}
727727

728-
static __inline__ __m256d __DEFAULT_FN_ATTRS256
729-
_mm256_cvtepu64_pd (__m256i __A) {
728+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
729+
_mm256_cvtepu64_pd(__m256i __A) {
730730
return (__m256d)__builtin_convertvector((__v4du)__A, __v4df);
731731
}
732732

733-
static __inline__ __m256d __DEFAULT_FN_ATTRS256
734-
_mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
733+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
734+
_mm256_mask_cvtepu64_pd(__m256d __W, __mmask8 __U, __m256i __A) {
735735
return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
736736
(__v4df)_mm256_cvtepu64_pd(__A),
737737
(__v4df)__W);
738738
}
739739

740-
static __inline__ __m256d __DEFAULT_FN_ATTRS256
741-
_mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) {
740+
static __inline__ __m256d __DEFAULT_FN_ATTRS256_CONSTEXPR
741+
_mm256_maskz_cvtepu64_pd(__mmask8 __U, __m256i __A) {
742742
return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
743743
(__v4df)_mm256_cvtepu64_pd(__A),
744744
(__v4df)_mm256_setzero_pd());
@@ -765,20 +765,20 @@ _mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A) {
765765
(__mmask8) __U);
766766
}
767767

768-
static __inline__ __m128 __DEFAULT_FN_ATTRS256
769-
_mm256_cvtepu64_ps (__m256i __A) {
768+
static __inline__ __m128 __DEFAULT_FN_ATTRS256_CONSTEXPR
769+
_mm256_cvtepu64_ps(__m256i __A) {
770770
return (__m128)__builtin_convertvector((__v4du)__A, __v4sf);
771771
}
772772

773-
static __inline__ __m128 __DEFAULT_FN_ATTRS256
774-
_mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
773+
static __inline__ __m128 __DEFAULT_FN_ATTRS256_CONSTEXPR
774+
_mm256_mask_cvtepu64_ps(__m128 __W, __mmask8 __U, __m256i __A) {
775775
return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
776776
(__v4sf)_mm256_cvtepu64_ps(__A),
777777
(__v4sf)__W);
778778
}
779779

780-
static __inline__ __m128 __DEFAULT_FN_ATTRS256
781-
_mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A) {
780+
static __inline__ __m128 __DEFAULT_FN_ATTRS256_CONSTEXPR
781+
_mm256_maskz_cvtepu64_ps(__mmask8 __U, __m256i __A) {
782782
return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
783783
(__v4sf)_mm256_cvtepu64_ps(__A),
784784
(__v4sf)_mm_setzero_ps());

clang/lib/Headers/avx512vlfp16intrin.h

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,13 @@ static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_set_sh(_Float16 __h) {
4646
return __extension__(__m128h){__h, 0, 0, 0, 0, 0, 0, 0};
4747
}
4848

49-
static __inline __m128h __DEFAULT_FN_ATTRS128 _mm_set1_ph(_Float16 __h) {
49+
static __inline __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
50+
_mm_set1_ph(_Float16 __h) {
5051
return (__m128h)(__v8hf){__h, __h, __h, __h, __h, __h, __h, __h};
5152
}
5253

53-
static __inline __m256h __DEFAULT_FN_ATTRS256 _mm256_set1_ph(_Float16 __h) {
54+
static __inline __m256h __DEFAULT_FN_ATTRS256_CONSTEXPR
55+
_mm256_set1_ph(_Float16 __h) {
5456
return (__m256h)(__v16hf){__h, __h, __h, __h, __h, __h, __h, __h,
5557
__h, __h, __h, __h, __h, __h, __h, __h};
5658
}
@@ -807,34 +809,35 @@ _mm256_maskz_cvttph_epi16(__mmask16 __U, __m256h __A) {
807809
(__v16hf)__A, (__v16hi)_mm256_setzero_si256(), (__mmask16)__U);
808810
}
809811

810-
static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepi16_ph(__m128i __A) {
812+
static __inline__ __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
813+
_mm_cvtepi16_ph(__m128i __A) {
811814
return (__m128h) __builtin_convertvector((__v8hi)__A, __v8hf);
812815
}
813816

814-
static __inline__ __m128h __DEFAULT_FN_ATTRS128
817+
static __inline__ __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
815818
_mm_mask_cvtepi16_ph(__m128h __W, __mmask8 __U, __m128i __A) {
816819
return (__m128h)__builtin_ia32_selectph_128(
817820
(__mmask8)__U, (__v8hf)_mm_cvtepi16_ph(__A), (__v8hf)__W);
818821
}
819822

820-
static __inline__ __m128h __DEFAULT_FN_ATTRS128
823+
static __inline__ __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
821824
_mm_maskz_cvtepi16_ph(__mmask8 __U, __m128i __A) {
822825
return (__m128h)__builtin_ia32_selectph_128(
823826
(__mmask8)__U, (__v8hf)_mm_cvtepi16_ph(__A), (__v8hf)_mm_setzero_ph());
824827
}
825828

826-
static __inline__ __m256h __DEFAULT_FN_ATTRS256
829+
static __inline__ __m256h __DEFAULT_FN_ATTRS256_CONSTEXPR
827830
_mm256_cvtepi16_ph(__m256i __A) {
828831
return (__m256h) __builtin_convertvector((__v16hi)__A, __v16hf);
829832
}
830833

831-
static __inline__ __m256h __DEFAULT_FN_ATTRS256
834+
static __inline__ __m256h __DEFAULT_FN_ATTRS256_CONSTEXPR
832835
_mm256_mask_cvtepi16_ph(__m256h __W, __mmask16 __U, __m256i __A) {
833836
return (__m256h)__builtin_ia32_selectph_256(
834837
(__mmask16)__U, (__v16hf)_mm256_cvtepi16_ph(__A), (__v16hf)__W);
835838
}
836839

837-
static __inline__ __m256h __DEFAULT_FN_ATTRS256
840+
static __inline__ __m256h __DEFAULT_FN_ATTRS256_CONSTEXPR
838841
_mm256_maskz_cvtepi16_ph(__mmask16 __U, __m256i __A) {
839842
return (__m256h)__builtin_ia32_selectph_256((__mmask16)__U,
840843
(__v16hf)_mm256_cvtepi16_ph(__A),
@@ -911,17 +914,18 @@ _mm256_maskz_cvttph_epu16(__mmask16 __U, __m256h __A) {
911914
(__v16hf)__A, (__v16hu)_mm256_setzero_si256(), (__mmask16)__U);
912915
}
913916

914-
static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepu16_ph(__m128i __A) {
917+
static __inline__ __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
918+
_mm_cvtepu16_ph(__m128i __A) {
915919
return (__m128h) __builtin_convertvector((__v8hu)__A, __v8hf);
916920
}
917921

918-
static __inline__ __m128h __DEFAULT_FN_ATTRS128
922+
static __inline__ __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
919923
_mm_mask_cvtepu16_ph(__m128h __W, __mmask8 __U, __m128i __A) {
920924
return (__m128h)__builtin_ia32_selectph_128(
921925
(__mmask8)__U, (__v8hf)_mm_cvtepu16_ph(__A), (__v8hf)__W);
922926
}
923927

924-
static __inline__ __m128h __DEFAULT_FN_ATTRS128
928+
static __inline__ __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR
925929
_mm_maskz_cvtepu16_ph(__mmask8 __U, __m128i __A) {
926930
return (__m128h)__builtin_ia32_selectph_128(
927931
(__mmask8)__U, (__v8hf)_mm_cvtepu16_ph(__A), (__v8hf)_mm_setzero_ph());

clang/test/CodeGen/X86/avx512vldq-builtins.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -440,40 +440,52 @@ __m128d test_mm_cvtepi64_pd(__m128i __A) {
440440
return _mm_cvtepi64_pd(__A);
441441
}
442442

443+
TEST_CONSTEXPR(match_m128d(_mm_cvtepi64_pd((__m128i)(__v2di){-1, -1}), -1.0, -1.0));
444+
443445
__m128d test_mm_mask_cvtepi64_pd(__m128d __W, __mmask8 __U, __m128i __A) {
444446
// CHECK-LABEL: test_mm_mask_cvtepi64_pd
445447
// CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
446448
// CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
447449
return _mm_mask_cvtepi64_pd(__W, __U, __A);
448450
}
449451

452+
TEST_CONSTEXPR(match_m128d(_mm_mask_cvtepi64_pd((__m128d){-777.0, -777.0}, /*01=*/0x1, (__m128i)(__v2di){-1, -1}), -1.0, -777.0));
453+
450454
__m128d test_mm_maskz_cvtepi64_pd(__mmask8 __U, __m128i __A) {
451455
// CHECK-LABEL: test_mm_maskz_cvtepi64_pd
452456
// CHECK: sitofp <2 x i64> %{{.*}} to <2 x double>
453457
// CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
454458
return _mm_maskz_cvtepi64_pd(__U, __A);
455459
}
456460

461+
TEST_CONSTEXPR(match_m128d(_mm_maskz_cvtepi64_pd(/*01=*/0x1, (__m128i)(__v2di){-1, -1}), -1.0, 0.0));
462+
457463
__m256d test_mm256_cvtepi64_pd(__m256i __A) {
458464
// CHECK-LABEL: test_mm256_cvtepi64_pd
459465
// CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>
460466
return _mm256_cvtepi64_pd(__A);
461467
}
462468

469+
TEST_CONSTEXPR(match_m256d(_mm256_cvtepi64_pd((__m256i)(__v4di){-1, -1, 2, 2}), -1.0, -1.0, 2.0, 2.0));
470+
463471
__m256d test_mm256_mask_cvtepi64_pd(__m256d __W, __mmask8 __U, __m256i __A) {
464472
// CHECK-LABEL: test_mm256_mask_cvtepi64_pd
465473
// CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>
466474
// CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
467475
return _mm256_mask_cvtepi64_pd(__W, __U, __A);
468476
}
469477

478+
TEST_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+
470480
__m256d test_mm256_maskz_cvtepi64_pd(__mmask8 __U, __m256i __A) {
471481
// CHECK-LABEL: test_mm256_maskz_cvtepi64_pd
472482
// CHECK: sitofp <4 x i64> %{{.*}} to <4 x double>
473483
// CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
474484
return _mm256_maskz_cvtepi64_pd(__U, __A);
475485
}
476486

487+
TEST_CONSTEXPR(match_m256d(_mm256_maskz_cvtepi64_pd(/*1100*/0xc, (__m256i)(__v4di){-1, -1, 2, 2}), 0.0, 0.0, 2.0, 2.0));
488+
477489
__m128 test_mm_cvtepi64_ps(__m128i __A) {
478490
// CHECK-LABEL: test_mm_cvtepi64_ps
479491
// CHECK: @llvm.x86.avx512.mask.cvtqq2ps.128
@@ -498,20 +510,26 @@ __m128 test_mm256_cvtepi64_ps(__m256i __A) {
498510
return _mm256_cvtepi64_ps(__A);
499511
}
500512

513+
TEST_CONSTEXPR(match_m128(_mm256_cvtepi64_ps((__m256i)(__v4di){-1, -1, 2, 2}), -1.0f, -1.0f, 2.0f, 2.0f));
514+
501515
__m128 test_mm256_mask_cvtepi64_ps(__m128 __W, __mmask8 __U, __m256i __A) {
502516
// CHECK-LABEL: test_mm256_mask_cvtepi64_ps
503517
// CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>
504518
// select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
505519
return _mm256_mask_cvtepi64_ps(__W, __U, __A);
506520
}
507521

522+
TEST_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+
508524
__m128 test_mm256_maskz_cvtepi64_ps(__mmask8 __U, __m256i __A) {
509525
// CHECK-LABEL: test_mm256_maskz_cvtepi64_ps
510526
// CHECK: sitofp <4 x i64> %{{.*}} to <4 x float>
511527
// select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
512528
return _mm256_maskz_cvtepi64_ps(__U, __A);
513529
}
514530

531+
TEST_CONSTEXPR(match_m128(_mm256_maskz_cvtepi64_ps(/*1010=*/0xa, (__m256i)(__v4di){-1, -1, 2, 2}), 0.0f, -1.0f, 0.0f, 2.0f));
532+
515533
__m128i test_mm_cvttpd_epi64(__m128d __A) {
516534
// CHECK-LABEL: test_mm_cvttpd_epi64
517535
// CHECK: @llvm.x86.avx512.mask.cvttpd2qq.128
@@ -662,40 +680,52 @@ __m128d test_mm_cvtepu64_pd(__m128i __A) {
662680
return _mm_cvtepu64_pd(__A);
663681
}
664682

683+
TEST_CONSTEXPR(match_m128d(_mm_cvtepu64_pd((__m128i)(__v2du){1, 1}), 1.0, 1.0));
684+
665685
__m128d test_mm_mask_cvtepu64_pd(__m128d __W, __mmask8 __U, __m128i __A) {
666686
// CHECK-LABEL: test_mm_mask_cvtepu64_pd
667687
// CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
668688
// CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
669689
return _mm_mask_cvtepu64_pd(__W, __U, __A);
670690
}
671691

692+
TEST_CONSTEXPR(match_m128d(_mm_mask_cvtepu64_pd((__m128d){-777.0, -777.0}, /*01=*/0x1, (__m128i)(__v2du){1, 1}), 1.0, -777.0));
693+
672694
__m128d test_mm_maskz_cvtepu64_pd(__mmask8 __U, __m128i __A) {
673695
// CHECK-LABEL: test_mm_maskz_cvtepu64_pd
674696
// CHECK: uitofp <2 x i64> %{{.*}} to <2 x double>
675697
// CHECK: select <2 x i1> %{{.*}}, <2 x double> %{{.*}}, <2 x double> %{{.*}}
676698
return _mm_maskz_cvtepu64_pd(__U, __A);
677699
}
678700

701+
TEST_CONSTEXPR(match_m128d(_mm_maskz_cvtepu64_pd(/*01=*/0x1, (__m128i)(__v2du){1, 1}), 1.0, 0.0));
702+
679703
__m256d test_mm256_cvtepu64_pd(__m256i __A) {
680704
// CHECK-LABEL: test_mm256_cvtepu64_pd
681705
// CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>
682706
return _mm256_cvtepu64_pd(__A);
683707
}
684708

709+
TEST_CONSTEXPR(match_m256d(_mm256_cvtepu64_pd((__m256i)(__v4du){1, 1, 2, 2}), 1.0, 1.0, 2.0, 2.0));
710+
685711
__m256d test_mm256_mask_cvtepu64_pd(__m256d __W, __mmask8 __U, __m256i __A) {
686712
// CHECK-LABEL: test_mm256_mask_cvtepu64_pd
687713
// CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>
688714
// CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
689715
return _mm256_mask_cvtepu64_pd(__W, __U, __A);
690716
}
691717

718+
TEST_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+
692720
__m256d test_mm256_maskz_cvtepu64_pd(__mmask8 __U, __m256i __A) {
693721
// CHECK-LABEL: test_mm256_maskz_cvtepu64_pd
694722
// CHECK: uitofp <4 x i64> %{{.*}} to <4 x double>
695723
// CHECK: select <4 x i1> %{{.*}}, <4 x double> %{{.*}}, <4 x double> %{{.*}}
696724
return _mm256_maskz_cvtepu64_pd(__U, __A);
697725
}
698726

727+
TEST_CONSTEXPR(match_m256d(_mm256_maskz_cvtepu64_pd(/*1100*/0xc, (__m256i)(__v4du){1, 1, 2, 2}), 0.0, 0.0, 2.0, 2.0));
728+
699729
__m128 test_mm_cvtepu64_ps(__m128i __A) {
700730
// CHECK-LABEL: test_mm_cvtepu64_ps
701731
// CHECK: @llvm.x86.avx512.mask.cvtuqq2ps.128
@@ -720,20 +750,26 @@ __m128 test_mm256_cvtepu64_ps(__m256i __A) {
720750
return _mm256_cvtepu64_ps(__A);
721751
}
722752

753+
TEST_CONSTEXPR(match_m128(_mm256_cvtepu64_ps((__m256i)(__v4du){1, 1, 2, 2}), 1.0f, 1.0f, 2.0f, 2.0f));
754+
723755
__m128 test_mm256_mask_cvtepu64_ps(__m128 __W, __mmask8 __U, __m256i __A) {
724756
// CHECK-LABEL: test_mm256_mask_cvtepu64_ps
725757
// CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>
726758
// CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
727759
return _mm256_mask_cvtepu64_ps(__W, __U, __A);
728760
}
729761

762+
TEST_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+
730764
__m128 test_mm256_maskz_cvtepu64_ps(__mmask8 __U, __m256i __A) {
731765
// CHECK-LABEL: test_mm256_maskz_cvtepu64_ps
732766
// CHECK: uitofp <4 x i64> %{{.*}} to <4 x float>
733767
// CHECK: select <4 x i1> %{{.*}}, <4 x float> %{{.*}}, <4 x float> %{{.*}}
734768
return _mm256_maskz_cvtepu64_ps(__U, __A);
735769
}
736770

771+
TEST_CONSTEXPR(match_m128(_mm256_maskz_cvtepu64_ps(/*1010=*/0xa, (__m256i)(__v4du){1, 1, 2, 2}), 0.0f, 1.0f, 0.0f, 2.0f));
772+
737773
__m128d test_mm_range_pd(__m128d __A, __m128d __B) {
738774
// CHECK-LABEL: test_mm_range_pd
739775
// CHECK: @llvm.x86.avx512.mask.range.pd.128

0 commit comments

Comments
 (0)