Skip to content

Commit 2ea1a09

Browse files
authored
[Headers][X86] Allow AVX512 masked arithmetic pd/ps/epi/epu intrinsics to be used in constexpr (#168496)
### Summary This PR resolves #160559 - other pd/ps/epi/epu part of AVX512 masked arithmetic intrinsics.
1 parent f9256ca commit 2ea1a09

File tree

4 files changed

+180
-85
lines changed

4 files changed

+180
-85
lines changed

clang/lib/Headers/avx512fintrin.h

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,17 +1369,15 @@ _mm512_mul_epi32(__m512i __X, __m512i __Y) {
13691369
return (__m512i)__builtin_ia32_pmuldq512((__v16si)__X, (__v16si) __Y);
13701370
}
13711371

1372-
static __inline __m512i __DEFAULT_FN_ATTRS512
1373-
_mm512_mask_mul_epi32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1374-
{
1372+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1373+
_mm512_mask_mul_epi32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
13751374
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
13761375
(__v8di)_mm512_mul_epi32(__X, __Y),
13771376
(__v8di)__W);
13781377
}
13791378

1380-
static __inline __m512i __DEFAULT_FN_ATTRS512
1381-
_mm512_maskz_mul_epi32(__mmask8 __M, __m512i __X, __m512i __Y)
1382-
{
1379+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1380+
_mm512_maskz_mul_epi32(__mmask8 __M, __m512i __X, __m512i __Y) {
13831381
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
13841382
(__v8di)_mm512_mul_epi32(__X, __Y),
13851383
(__v8di)_mm512_setzero_si512 ());
@@ -1390,17 +1388,15 @@ _mm512_mul_epu32(__m512i __X, __m512i __Y) {
13901388
return (__m512i)__builtin_ia32_pmuludq512((__v16si)__X, (__v16si)__Y);
13911389
}
13921390

1393-
static __inline __m512i __DEFAULT_FN_ATTRS512
1394-
_mm512_mask_mul_epu32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1395-
{
1391+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1392+
_mm512_mask_mul_epu32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) {
13961393
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
13971394
(__v8di)_mm512_mul_epu32(__X, __Y),
13981395
(__v8di)__W);
13991396
}
14001397

1401-
static __inline __m512i __DEFAULT_FN_ATTRS512
1402-
_mm512_maskz_mul_epu32(__mmask8 __M, __m512i __X, __m512i __Y)
1403-
{
1398+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1399+
_mm512_maskz_mul_epu32(__mmask8 __M, __m512i __X, __m512i __Y) {
14041400
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
14051401
(__v8di)_mm512_mul_epu32(__X, __Y),
14061402
(__v8di)_mm512_setzero_si512 ());
@@ -1879,28 +1875,28 @@ _mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) {
18791875
(__v2df)_mm_setzero_pd(), \
18801876
(__mmask8)(U), (int)(R)))
18811877

1882-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
1878+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
18831879
_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
18841880
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
18851881
(__v8df)_mm512_add_pd(__A, __B),
18861882
(__v8df)__W);
18871883
}
18881884

1889-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
1885+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
18901886
_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
18911887
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
18921888
(__v8df)_mm512_add_pd(__A, __B),
18931889
(__v8df)_mm512_setzero_pd());
18941890
}
18951891

1896-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
1892+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
18971893
_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
18981894
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
18991895
(__v16sf)_mm512_add_ps(__A, __B),
19001896
(__v16sf)__W);
19011897
}
19021898

1903-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
1899+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
19041900
_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
19051901
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
19061902
(__v16sf)_mm512_add_ps(__A, __B),
@@ -1994,28 +1990,28 @@ _mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) {
19941990
(__v2df)_mm_setzero_pd(), \
19951991
(__mmask8)(U), (int)(R)))
19961992

1997-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
1993+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
19981994
_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
19991995
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
20001996
(__v8df)_mm512_sub_pd(__A, __B),
20011997
(__v8df)__W);
20021998
}
20031999

2004-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2000+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
20052001
_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
20062002
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
20072003
(__v8df)_mm512_sub_pd(__A, __B),
20082004
(__v8df)_mm512_setzero_pd());
20092005
}
20102006

2011-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2007+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
20122008
_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
20132009
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
20142010
(__v16sf)_mm512_sub_ps(__A, __B),
20152011
(__v16sf)__W);
20162012
}
20172013

2018-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2014+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
20192015
_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
20202016
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
20212017
(__v16sf)_mm512_sub_ps(__A, __B),
@@ -2109,28 +2105,28 @@ _mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) {
21092105
(__v2df)_mm_setzero_pd(), \
21102106
(__mmask8)(U), (int)(R)))
21112107

2112-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2108+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
21132109
_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
21142110
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
21152111
(__v8df)_mm512_mul_pd(__A, __B),
21162112
(__v8df)__W);
21172113
}
21182114

2119-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2115+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
21202116
_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
21212117
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
21222118
(__v8df)_mm512_mul_pd(__A, __B),
21232119
(__v8df)_mm512_setzero_pd());
21242120
}
21252121

2126-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2122+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
21272123
_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
21282124
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
21292125
(__v16sf)_mm512_mul_ps(__A, __B),
21302126
(__v16sf)__W);
21312127
}
21322128

2133-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2129+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
21342130
_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
21352131
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
21362132
(__v16sf)_mm512_mul_ps(__A, __B),
@@ -2230,14 +2226,14 @@ static __inline __m512d
22302226
return (__m512d)((__v8df)__a/(__v8df)__b);
22312227
}
22322228

2233-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2229+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
22342230
_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
22352231
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
22362232
(__v8df)_mm512_div_pd(__A, __B),
22372233
(__v8df)__W);
22382234
}
22392235

2240-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2236+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
22412237
_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
22422238
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
22432239
(__v8df)_mm512_div_pd(__A, __B),
@@ -2249,14 +2245,14 @@ _mm512_div_ps(__m512 __a, __m512 __b) {
22492245
return (__m512)((__v16sf)__a/(__v16sf)__b);
22502246
}
22512247

2252-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2248+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
22532249
_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
22542250
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
22552251
(__v16sf)_mm512_div_ps(__A, __B),
22562252
(__v16sf)__W);
22572253
}
22582254

2259-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2255+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
22602256
_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
22612257
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
22622258
(__v16sf)_mm512_div_ps(__A, __B),

0 commit comments

Comments
 (0)