Skip to content

Commit 4cf9720

Browse files
authored
[Headers][X86] Allow AVX512VL mask/z variants of AVX2 per-element shift intrinsics to be used in constexpr (llvm#155984)
Followup to llvm#154780
1 parent fe4ac50 commit 4cf9720

File tree

2 files changed

+40
-20
lines changed

2 files changed

+40
-20
lines changed

clang/lib/Headers/avx512vlintrin.h

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4669,127 +4669,127 @@ _mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
46694669
(__v4di)_mm256_setzero_si256());
46704670
}
46714671

4672-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4672+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
46734673
_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
46744674
{
46754675
return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
46764676
(__v2di)_mm_sllv_epi64(__X, __Y),
46774677
(__v2di)__W);
46784678
}
46794679

4680-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4680+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
46814681
_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
46824682
{
46834683
return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
46844684
(__v2di)_mm_sllv_epi64(__X, __Y),
46854685
(__v2di)_mm_setzero_si128());
46864686
}
46874687

4688-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4688+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
46894689
_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
46904690
{
46914691
return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
46924692
(__v4di)_mm256_sllv_epi64(__X, __Y),
46934693
(__v4di)__W);
46944694
}
46954695

4696-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4696+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
46974697
_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
46984698
{
46994699
return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
47004700
(__v4di)_mm256_sllv_epi64(__X, __Y),
47014701
(__v4di)_mm256_setzero_si256());
47024702
}
47034703

4704-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4704+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
47054705
_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
47064706
{
47074707
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
47084708
(__v4si)_mm_sllv_epi32(__X, __Y),
47094709
(__v4si)__W);
47104710
}
47114711

4712-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4712+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
47134713
_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
47144714
{
47154715
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
47164716
(__v4si)_mm_sllv_epi32(__X, __Y),
47174717
(__v4si)_mm_setzero_si128());
47184718
}
47194719

4720-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4720+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
47214721
_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
47224722
{
47234723
return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
47244724
(__v8si)_mm256_sllv_epi32(__X, __Y),
47254725
(__v8si)__W);
47264726
}
47274727

4728-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4728+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
47294729
_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
47304730
{
47314731
return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
47324732
(__v8si)_mm256_sllv_epi32(__X, __Y),
47334733
(__v8si)_mm256_setzero_si256());
47344734
}
47354735

4736-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4736+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
47374737
_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
47384738
{
47394739
return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
47404740
(__v2di)_mm_srlv_epi64(__X, __Y),
47414741
(__v2di)__W);
47424742
}
47434743

4744-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4744+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
47454745
_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
47464746
{
47474747
return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
47484748
(__v2di)_mm_srlv_epi64(__X, __Y),
47494749
(__v2di)_mm_setzero_si128());
47504750
}
47514751

4752-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4752+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
47534753
_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
47544754
{
47554755
return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
47564756
(__v4di)_mm256_srlv_epi64(__X, __Y),
47574757
(__v4di)__W);
47584758
}
47594759

4760-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4760+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
47614761
_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
47624762
{
47634763
return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
47644764
(__v4di)_mm256_srlv_epi64(__X, __Y),
47654765
(__v4di)_mm256_setzero_si256());
47664766
}
47674767

4768-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4768+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
47694769
_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
47704770
{
47714771
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
47724772
(__v4si)_mm_srlv_epi32(__X, __Y),
47734773
(__v4si)__W);
47744774
}
47754775

4776-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4776+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
47774777
_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
47784778
{
47794779
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
47804780
(__v4si)_mm_srlv_epi32(__X, __Y),
47814781
(__v4si)_mm_setzero_si128());
47824782
}
47834783

4784-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4784+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
47854785
_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
47864786
{
47874787
return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
47884788
(__v8si)_mm256_srlv_epi32(__X, __Y),
47894789
(__v8si)__W);
47904790
}
47914791

4792-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4792+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
47934793
_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
47944794
{
47954795
return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
@@ -4925,31 +4925,31 @@ _mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, unsigned int __B)
49254925
(__v4di)_mm256_setzero_si256());
49264926
}
49274927

4928-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4928+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
49294929
_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
49304930
{
49314931
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
49324932
(__v4si)_mm_srav_epi32(__X, __Y),
49334933
(__v4si)__W);
49344934
}
49354935

4936-
static __inline__ __m128i __DEFAULT_FN_ATTRS128
4936+
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
49374937
_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
49384938
{
49394939
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
49404940
(__v4si)_mm_srav_epi32(__X, __Y),
49414941
(__v4si)_mm_setzero_si128());
49424942
}
49434943

4944-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4944+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
49454945
_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
49464946
{
49474947
return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
49484948
(__v8si)_mm256_srav_epi32(__X, __Y),
49494949
(__v8si)__W);
49504950
}
49514951

4952-
static __inline__ __m256i __DEFAULT_FN_ATTRS256
4952+
static __inline__ __m256i __DEFAULT_FN_ATTRS256_CONSTEXPR
49534953
_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
49544954
{
49554955
return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5988,111 +5988,127 @@ __m128i test_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i
59885988
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
59895989
return _mm_mask_sllv_epi64(__W, __U, __X, __Y);
59905990
}
5991+
TEST_CONSTEXPR(match_v2di(_mm_mask_sllv_epi64((__m128i)(__v2di){99, 99}, (__mmask8)0x1, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 256, 99));
59915992

59925993
__m128i test_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
59935994
// CHECK-LABEL: test_mm_maskz_sllv_epi64
59945995
// CHECK: @llvm.x86.avx2.psllv.q
59955996
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
59965997
return _mm_maskz_sllv_epi64(__U, __X, __Y);
59975998
}
5999+
TEST_CONSTEXPR(match_m128i(_mm_maskz_sllv_epi64((__mmask8)0x2, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 0, 0x8000000000000000ULL));
59986000

59996001
__m256i test_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
60006002
// CHECK-LABEL: test_mm256_mask_sllv_epi64
60016003
// CHECK: @llvm.x86.avx2.psllv.q.256
60026004
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
60036005
return _mm256_mask_sllv_epi64(__W, __U, __X, __Y);
60046006
}
6007+
TEST_CONSTEXPR(match_v4di(_mm256_mask_sllv_epi64((__m256i)(__v4di){99, 99, 99, 99}, (__mmask8)0x6, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 99, -8, 24, 99));
60056008

60066009
__m256i test_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
60076010
// CHECK-LABEL: test_mm256_maskz_sllv_epi64
60086011
// CHECK: @llvm.x86.avx2.psllv.q.256
60096012
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
60106013
return _mm256_maskz_sllv_epi64(__U, __X, __Y);
60116014
}
6015+
TEST_CONSTEXPR(match_v4di(_mm256_maskz_sllv_epi64((__mmask8)0x9, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 2, 0, 0, 0));
60126016

60136017
__m128i test_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
60146018
// CHECK-LABEL: test_mm_mask_sllv_epi32
60156019
// CHECK: @llvm.x86.avx2.psllv.d
60166020
// CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
60176021
return _mm_mask_sllv_epi32(__W, __U, __X, __Y);
60186022
}
6023+
TEST_CONSTEXPR(match_v4si(_mm_mask_sllv_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x0E, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 99, -8, 24, 0));
60196024

60206025
__m128i test_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
60216026
// CHECK-LABEL: test_mm_maskz_sllv_epi32
60226027
// CHECK: @llvm.x86.avx2.psllv.d
60236028
// CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
60246029
return _mm_maskz_sllv_epi32(__U, __X, __Y);
60256030
}
6031+
TEST_CONSTEXPR(match_v4si(_mm_maskz_sllv_epi32((__mmask8)0xC, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 0, 0, 24, 0));
60266032

60276033
__m256i test_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
60286034
// CHECK-LABEL: test_mm256_mask_sllv_epi32
60296035
// CHECK: @llvm.x86.avx2.psllv.d.256
60306036
// CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
60316037
return _mm256_mask_sllv_epi32(__W, __U, __X, __Y);
60326038
}
6039+
TEST_CONSTEXPR(match_v8si(_mm256_mask_sllv_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x3C, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 99, 99, 24, -64, 0, 0, 99, 99));
60336040

60346041
__m256i test_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
60356042
// CHECK-LABEL: test_mm256_maskz_sllv_epi32
60366043
// CHECK: @llvm.x86.avx2.psllv.d.256
60376044
// CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
60386045
return _mm256_maskz_sllv_epi32(__U, __X, __Y);
60396046
}
6047+
TEST_CONSTEXPR(match_v8si(_mm256_maskz_sllv_epi32((__mmask8)0xFE, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 0, -8, 24, -64, 0, 0, 0, 0));
60406048

60416049
__m128i test_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
60426050
// CHECK-LABEL: test_mm_mask_srlv_epi64
60436051
// CHECK: @llvm.x86.avx2.psrlv.q
60446052
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
60456053
return _mm_mask_srlv_epi64(__W, __U, __X, __Y);
60466054
}
6055+
TEST_CONSTEXPR(match_m128i(_mm_mask_srlv_epi64((__m128i)(__v2di){99, 99}, (__mmask8)0x1, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 0, 99));
60476056

60486057
__m128i test_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y) {
60496058
// CHECK-LABEL: test_mm_maskz_srlv_epi64
60506059
// CHECK: @llvm.x86.avx2.psrlv.q
60516060
// CHECK: select <2 x i1> %{{.*}}, <2 x i64> %{{.*}}, <2 x i64> %{{.*}}
60526061
return _mm_maskz_srlv_epi64(__U, __X, __Y);
60536062
}
6063+
TEST_CONSTEXPR(match_m128i(_mm_maskz_srlv_epi64((__mmask8)0x2, (__m128i)(__v2di){1, -3}, (__m128i)(__v2di){8, 63}), 0, 1));
60546064

60556065
__m256i test_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
60566066
// CHECK-LABEL: test_mm256_mask_srlv_epi64
60576067
// CHECK: @llvm.x86.avx2.psrlv.q.256
60586068
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
60596069
return _mm256_mask_srlv_epi64(__W, __U, __X, __Y);
60606070
}
6071+
TEST_CONSTEXPR(match_m256i(_mm256_mask_srlv_epi64((__m256i)(__v4di){99, 99, 99, 99}, (__mmask8)0x6, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 99, 0x3FFFFFFFFFFFFFFFULL, 0, 99));
60616072

60626073
__m256i test_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y) {
60636074
// CHECK-LABEL: test_mm256_maskz_srlv_epi64
60646075
// CHECK: @llvm.x86.avx2.psrlv.q.256
60656076
// CHECK: select <4 x i1> %{{.*}}, <4 x i64> %{{.*}}, <4 x i64> %{{.*}}
60666077
return _mm256_maskz_srlv_epi64(__U, __X, __Y);
60676078
}
6079+
TEST_CONSTEXPR(match_m256i(_mm256_maskz_srlv_epi64((__mmask8)0x1, (__m256i)(__v4di){1, -2, 3, -4}, (__m256i)(__v4di){1, 2, 3, -4}), 0, 0, 0, 0));
60686080

60696081
__m128i test_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
60706082
// CHECK-LABEL: test_mm_mask_srlv_epi32
60716083
// CHECK: @llvm.x86.avx2.psrlv.d
60726084
// CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
60736085
return _mm_mask_srlv_epi32(__W, __U, __X, __Y);
60746086
}
6087+
TEST_CONSTEXPR(match_v4si(_mm_mask_srlv_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x0E, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 99, 1073741823, 0, 0));
60756088

60766089
__m128i test_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
60776090
// CHECK-LABEL: test_mm_maskz_srlv_epi32
60786091
// CHECK: @llvm.x86.avx2.psrlv.d
60796092
// CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
60806093
return _mm_maskz_srlv_epi32(__U, __X, __Y);
60816094
}
6095+
TEST_CONSTEXPR(match_v4si(_mm_maskz_srlv_epi32((__mmask8)0xC, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 0, 0, 0, 0));
60826096

60836097
__m256i test_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
60846098
// CHECK-LABEL: test_mm256_mask_srlv_epi32
60856099
// CHECK: @llvm.x86.avx2.psrlv.d.256
60866100
// CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
60876101
return _mm256_mask_srlv_epi32(__W, __U, __X, __Y);
60886102
}
6103+
TEST_CONSTEXPR(match_v8si(_mm256_mask_srlv_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x3C, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 99, 99, 0, 268435455, 0, 1, 99, 99));
60896104

60906105
__m256i test_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
60916106
// CHECK-LABEL: test_mm256_maskz_srlv_epi32
60926107
// CHECK: @llvm.x86.avx2.psrlv.d.256
60936108
// CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
60946109
return _mm256_maskz_srlv_epi32(__U, __X, __Y);
60956110
}
6111+
TEST_CONSTEXPR(match_v8si(_mm256_maskz_srlv_epi32((__mmask8)0x9E, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 0, 1073741823, 0, 268435455, 0, 0, 0, 7));
60966112

60976113
__m128i test_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
60986114
// CHECK-LABEL: test_mm_mask_srl_epi32
@@ -6435,27 +6451,31 @@ __m128i test_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i
64356451
// CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
64366452
return _mm_mask_srav_epi32(__W, __U, __X, __Y);
64376453
}
6454+
TEST_CONSTEXPR(match_v4si(_mm_mask_srav_epi32((__m128i)(__v4si){99, 99, 99, 99}, (__mmask8)0x0E, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 99, -1, 0, -1));
64386455

64396456
__m128i test_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y) {
64406457
// CHECK-LABEL: test_mm_maskz_srav_epi32
64416458
// CHECK: @llvm.x86.avx2.psrav.d
64426459
// CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
64436460
return _mm_maskz_srav_epi32(__U, __X, __Y);
64446461
}
6462+
TEST_CONSTEXPR(match_v4si(_mm_maskz_srav_epi32((__mmask8)0xC, (__m128i)(__v4si){1, -2, 3, -4}, (__m128i)(__v4si){1, 2, 3, -4}), 0, 0, 0, -1));
64456463

64466464
__m256i test_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y) {
64476465
// CHECK-LABEL: test_mm256_mask_srav_epi32
64486466
// CHECK: @llvm.x86.avx2.psrav.d.256
64496467
// CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
64506468
return _mm256_mask_srav_epi32(__W, __U, __X, __Y);
64516469
}
6470+
TEST_CONSTEXPR(match_v8si(_mm256_mask_srav_epi32((__m256i)(__v8si){99, 99, 99, 99, 99, 99, 99, 99}, (__mmask8)0x3C, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 99, 99, 0, -1, 0, -1, 99, 99));
64526471

64536472
__m256i test_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y) {
64546473
// CHECK-LABEL: test_mm256_maskz_srav_epi32
64556474
// CHECK: @llvm.x86.avx2.psrav.d.256
64566475
// CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
64576476
return _mm256_maskz_srav_epi32(__U, __X, __Y);
64586477
}
6478+
TEST_CONSTEXPR(match_v8si(_mm256_maskz_srav_epi32((__mmask8)0x9E, (__m256i)(__v8si){1, -2, 3, -4, 5, -6, 7, -8}, (__m256i)(__v8si){1, 2, 3, 4, -17, 31, 33, 29}), 0, -1, 0, -1, 0, 0, 0, -1));
64596479

64606480
__m128i test_mm_srav_epi64(__m128i __X, __m128i __Y) {
64616481
// CHECK-LABEL: test_mm_srav_epi64

0 commit comments

Comments
 (0)