Skip to content

Commit 21edc64

Browse files
committed
[Headers][X86] Allow AVX512 masked arithmetic intrinsics to be used in constexpr
1 parent 0df4e63 commit 21edc64

File tree

7 files changed

+166
-77
lines changed

7 files changed

+166
-77
lines changed

clang/include/clang/Basic/BuiltinsX86.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4104,7 +4104,7 @@ let Features = "avx512bf16", Attributes = [NoThrow, Const, RequiredVectorWidth<1
41044104
def selectsbf_128 : X86Builtin<"_Vector<8, __bf16>(unsigned char, _Vector<8, __bf16>, _Vector<8, __bf16>)">;
41054105
}
41064106

4107-
let Features = "avx512f", Attributes = [NoThrow, Const, RequiredVectorWidth<128>] in {
4107+
let Features = "avx512f", Attributes = [NoThrow, Const, Constexpr, RequiredVectorWidth<128>] in {
41084108
def selectss_128 : X86Builtin<"_Vector<4, float>(unsigned char, _Vector<4, float>, _Vector<4, float>)">;
41094109
def selectsd_128 : X86Builtin<"_Vector<2, double>(unsigned char, _Vector<2, double>, _Vector<2, double>)">;
41104110
}

clang/lib/AST/ByteCode/InterpBuiltin.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3598,6 +3598,26 @@ bool InterpretBuiltin(InterpState &S, CodePtr OpPC, const CallExpr *Call,
35983598
return APInt::getAllOnes(DstBits);
35993599
});
36003600

3601+
case clang::X86::BI__builtin_ia32_selectss_128:
3602+
case clang::X86::BI__builtin_ia32_selectsd_128: {
3603+
const unsigned N = Call->getArg(1)->getType()->getAs<VectorType>()->getNumElements();
3604+
3605+
const Pointer &W = S.Stk.pop<Pointer>();
3606+
const Pointer &A = S.Stk.pop<Pointer>();
3607+
APSInt U = popToAPSInt(S, Call->getArg(0));
3608+
const Pointer &Dst = S.Stk.peek<Pointer>();
3609+
3610+
const bool TakeA0 = U.getZExtValue() & 1ULL;
3611+
3612+
for (unsigned i = 0; i < N; ++i)
3613+
Dst.elem<Floating>(i) = W.elem<Floating>(i);
3614+
if (TakeA0)
3615+
Dst.elem<Floating>(0) = A.elem<Floating>(0);
3616+
3617+
Dst.initializeAllElements();
3618+
return true;
3619+
}
3620+
36013621
case clang::X86::BI__builtin_ia32_vprotbi:
36023622
case clang::X86::BI__builtin_ia32_vprotdi:
36033623
case clang::X86::BI__builtin_ia32_vprotqi:

clang/lib/AST/ExprConstant.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11705,6 +11705,23 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1170511705
return Success(APValue(ResultElements.data(), SourceLen), E);
1170611706
};
1170711707

11708+
auto EvalSelectScalar = [&](unsigned Len) -> std::optional<APValue> {
11709+
APSInt Mask;
11710+
APValue AVal, WVal;
11711+
if (!EvaluateInteger(E->getArg(0), Mask, Info) ||
11712+
!EvaluateAsRValue(Info, E->getArg(1), AVal) ||
11713+
!EvaluateAsRValue(Info, E->getArg(2), WVal))
11714+
return std::nullopt;
11715+
11716+
const bool TakeA0 = (Mask.getZExtValue() & 1u) != 0;
11717+
SmallVector<APValue, 4> Res;
11718+
Res.reserve(Len);
11719+
Res.push_back(TakeA0 ? AVal.getVectorElt(0) : WVal.getVectorElt(0));
11720+
for (unsigned i = 1; i < Len; ++i)
11721+
Res.push_back(WVal.getVectorElt(i));
11722+
return APValue(Res.data(), Res.size());
11723+
};
11724+
1170811725
switch (E->getBuiltinCallee()) {
1170911726
default:
1171011727
return false;
@@ -11933,6 +11950,16 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) {
1193311950
return APInt((Src).trunc(DstBits));
1193411951
return APInt::getAllOnes(DstBits);
1193511952
});
11953+
case clang::X86::BI__builtin_ia32_selectss_128: {
11954+
if (auto V = EvalSelectScalar(4))
11955+
return Success(*V, E);
11956+
return false;
11957+
}
11958+
case clang::X86::BI__builtin_ia32_selectsd_128: {
11959+
if (auto V = EvalSelectScalar(2))
11960+
return Success(*V, E);
11961+
return false;
11962+
}
1193611963
case clang::X86::BI__builtin_ia32_pmuldq128:
1193711964
case clang::X86::BI__builtin_ia32_pmuldq256:
1193811965
case clang::X86::BI__builtin_ia32_pmuldq512:

clang/lib/Headers/avx512fintrin.h

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,15 +1377,15 @@ _mm512_mul_epi32(__m512i __X, __m512i __Y) {
13771377
return (__m512i)__builtin_ia32_pmuldq512((__v16si)__X, (__v16si) __Y);
13781378
}
13791379

1380-
static __inline __m512i __DEFAULT_FN_ATTRS512
1380+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
13811381
_mm512_mask_mul_epi32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
13821382
{
13831383
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
13841384
(__v8di)_mm512_mul_epi32(__X, __Y),
13851385
(__v8di)__W);
13861386
}
13871387

1388-
static __inline __m512i __DEFAULT_FN_ATTRS512
1388+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
13891389
_mm512_maskz_mul_epi32(__mmask8 __M, __m512i __X, __m512i __Y)
13901390
{
13911391
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
@@ -1398,15 +1398,15 @@ _mm512_mul_epu32(__m512i __X, __m512i __Y) {
13981398
return (__m512i)__builtin_ia32_pmuludq512((__v16si)__X, (__v16si)__Y);
13991399
}
14001400

1401-
static __inline __m512i __DEFAULT_FN_ATTRS512
1401+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
14021402
_mm512_mask_mul_epu32(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
14031403
{
14041404
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
14051405
(__v8di)_mm512_mul_epu32(__X, __Y),
14061406
(__v8di)__W);
14071407
}
14081408

1409-
static __inline __m512i __DEFAULT_FN_ATTRS512
1409+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
14101410
_mm512_maskz_mul_epu32(__mmask8 __M, __m512i __X, __m512i __Y)
14111411
{
14121412
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
@@ -1842,13 +1842,13 @@ _mm512_maskz_abs_epi32(__mmask16 __U, __m512i __A) {
18421842
(__v16si)_mm512_setzero_si512());
18431843
}
18441844

1845-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
1845+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
18461846
_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
18471847
__A = _mm_add_ss(__A, __B);
18481848
return __builtin_ia32_selectss_128(__U, __A, __W);
18491849
}
18501850

1851-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
1851+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
18521852
_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
18531853
__A = _mm_add_ss(__A, __B);
18541854
return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
@@ -1872,13 +1872,13 @@ _mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
18721872
(__v4sf)_mm_setzero_ps(), \
18731873
(__mmask8)(U), (int)(R)))
18741874

1875-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
1875+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
18761876
_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
18771877
__A = _mm_add_sd(__A, __B);
18781878
return __builtin_ia32_selectsd_128(__U, __A, __W);
18791879
}
18801880

1881-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
1881+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
18821882
_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
18831883
__A = _mm_add_sd(__A, __B);
18841884
return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
@@ -1901,28 +1901,28 @@ _mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
19011901
(__v2df)_mm_setzero_pd(), \
19021902
(__mmask8)(U), (int)(R)))
19031903

1904-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
1904+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
19051905
_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
19061906
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
19071907
(__v8df)_mm512_add_pd(__A, __B),
19081908
(__v8df)__W);
19091909
}
19101910

1911-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
1911+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
19121912
_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
19131913
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
19141914
(__v8df)_mm512_add_pd(__A, __B),
19151915
(__v8df)_mm512_setzero_pd());
19161916
}
19171917

1918-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
1918+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
19191919
_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
19201920
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
19211921
(__v16sf)_mm512_add_ps(__A, __B),
19221922
(__v16sf)__W);
19231923
}
19241924

1925-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
1925+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
19261926
_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
19271927
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
19281928
(__v16sf)_mm512_add_ps(__A, __B),
@@ -1957,13 +1957,13 @@ _mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
19571957
(__v16sf)_mm512_add_round_ps((A), (B), (R)), \
19581958
(__v16sf)_mm512_setzero_ps()))
19591959

1960-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
1960+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
19611961
_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
19621962
__A = _mm_sub_ss(__A, __B);
19631963
return __builtin_ia32_selectss_128(__U, __A, __W);
19641964
}
19651965

1966-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
1966+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
19671967
_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
19681968
__A = _mm_sub_ss(__A, __B);
19691969
return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
@@ -1986,13 +1986,13 @@ _mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
19861986
(__v4sf)_mm_setzero_ps(), \
19871987
(__mmask8)(U), (int)(R)))
19881988

1989-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
1989+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
19901990
_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
19911991
__A = _mm_sub_sd(__A, __B);
19921992
return __builtin_ia32_selectsd_128(__U, __A, __W);
19931993
}
19941994

1995-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
1995+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
19961996
_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
19971997
__A = _mm_sub_sd(__A, __B);
19981998
return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
@@ -2016,28 +2016,28 @@ _mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
20162016
(__v2df)_mm_setzero_pd(), \
20172017
(__mmask8)(U), (int)(R)))
20182018

2019-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2019+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
20202020
_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
20212021
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
20222022
(__v8df)_mm512_sub_pd(__A, __B),
20232023
(__v8df)__W);
20242024
}
20252025

2026-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2026+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
20272027
_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
20282028
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
20292029
(__v8df)_mm512_sub_pd(__A, __B),
20302030
(__v8df)_mm512_setzero_pd());
20312031
}
20322032

2033-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2033+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
20342034
_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
20352035
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
20362036
(__v16sf)_mm512_sub_ps(__A, __B),
20372037
(__v16sf)__W);
20382038
}
20392039

2040-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2040+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
20412041
_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
20422042
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
20432043
(__v16sf)_mm512_sub_ps(__A, __B),
@@ -2072,13 +2072,13 @@ _mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
20722072
(__v16sf)_mm512_sub_round_ps((A), (B), (R)), \
20732073
(__v16sf)_mm512_setzero_ps()))
20742074

2075-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
2075+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
20762076
_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
20772077
__A = _mm_mul_ss(__A, __B);
20782078
return __builtin_ia32_selectss_128(__U, __A, __W);
20792079
}
20802080

2081-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
2081+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
20822082
_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
20832083
__A = _mm_mul_ss(__A, __B);
20842084
return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
@@ -2101,13 +2101,13 @@ _mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
21012101
(__v4sf)_mm_setzero_ps(), \
21022102
(__mmask8)(U), (int)(R)))
21032103

2104-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
2104+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
21052105
_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
21062106
__A = _mm_mul_sd(__A, __B);
21072107
return __builtin_ia32_selectsd_128(__U, __A, __W);
21082108
}
21092109

2110-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
2110+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
21112111
_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
21122112
__A = _mm_mul_sd(__A, __B);
21132113
return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
@@ -2131,28 +2131,28 @@ _mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
21312131
(__v2df)_mm_setzero_pd(), \
21322132
(__mmask8)(U), (int)(R)))
21332133

2134-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2134+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
21352135
_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
21362136
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
21372137
(__v8df)_mm512_mul_pd(__A, __B),
21382138
(__v8df)__W);
21392139
}
21402140

2141-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2141+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
21422142
_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
21432143
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
21442144
(__v8df)_mm512_mul_pd(__A, __B),
21452145
(__v8df)_mm512_setzero_pd());
21462146
}
21472147

2148-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2148+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
21492149
_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
21502150
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
21512151
(__v16sf)_mm512_mul_ps(__A, __B),
21522152
(__v16sf)__W);
21532153
}
21542154

2155-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2155+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
21562156
_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
21572157
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
21582158
(__v16sf)_mm512_mul_ps(__A, __B),
@@ -2187,13 +2187,13 @@ _mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
21872187
(__v16sf)_mm512_mul_round_ps((A), (B), (R)), \
21882188
(__v16sf)_mm512_setzero_ps()))
21892189

2190-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
2190+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
21912191
_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
21922192
__A = _mm_div_ss(__A, __B);
21932193
return __builtin_ia32_selectss_128(__U, __A, __W);
21942194
}
21952195

2196-
static __inline__ __m128 __DEFAULT_FN_ATTRS128
2196+
static __inline__ __m128 __DEFAULT_FN_ATTRS128_CONSTEXPR
21972197
_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
21982198
__A = _mm_div_ss(__A, __B);
21992199
return __builtin_ia32_selectss_128(__U, __A, _mm_setzero_ps());
@@ -2217,13 +2217,13 @@ _mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
22172217
(__v4sf)_mm_setzero_ps(), \
22182218
(__mmask8)(U), (int)(R)))
22192219

2220-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
2220+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
22212221
_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
22222222
__A = _mm_div_sd(__A, __B);
22232223
return __builtin_ia32_selectsd_128(__U, __A, __W);
22242224
}
22252225

2226-
static __inline__ __m128d __DEFAULT_FN_ATTRS128
2226+
static __inline__ __m128d __DEFAULT_FN_ATTRS128_CONSTEXPR
22272227
_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
22282228
__A = _mm_div_sd(__A, __B);
22292229
return __builtin_ia32_selectsd_128(__U, __A, _mm_setzero_pd());
@@ -2252,14 +2252,14 @@ static __inline __m512d
22522252
return (__m512d)((__v8df)__a/(__v8df)__b);
22532253
}
22542254

2255-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2255+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
22562256
_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
22572257
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
22582258
(__v8df)_mm512_div_pd(__A, __B),
22592259
(__v8df)__W);
22602260
}
22612261

2262-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
2262+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
22632263
_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
22642264
return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
22652265
(__v8df)_mm512_div_pd(__A, __B),
@@ -2271,14 +2271,14 @@ _mm512_div_ps(__m512 __a, __m512 __b) {
22712271
return (__m512)((__v16sf)__a/(__v16sf)__b);
22722272
}
22732273

2274-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2274+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
22752275
_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
22762276
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
22772277
(__v16sf)_mm512_div_ps(__A, __B),
22782278
(__v16sf)__W);
22792279
}
22802280

2281-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
2281+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
22822282
_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
22832283
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
22842284
(__v16sf)_mm512_div_ps(__A, __B),

0 commit comments

Comments
 (0)