Skip to content

Commit 45b4f1b

Browse files
authored
[Headers][X86] Allow _mm512_set1_epi8/16/pd/ps intrinsics to be used in constexpr (#152746)
Pulled out of #152288 as I need this to proceed with several other patches
1 parent 1778669 commit 45b4f1b

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

clang/lib/Headers/avx512fintrin.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -277,20 +277,20 @@ _mm512_setzero_pd(void) {
277277
return __extension__(__m512d){0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
278278
}
279279

280-
static __inline __m512 __DEFAULT_FN_ATTRS512
280+
static __inline __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
281281
_mm512_set1_ps(float __w)
282282
{
283283
return __extension__ (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
284284
__w, __w, __w, __w, __w, __w, __w, __w };
285285
}
286286

287-
static __inline __m512d __DEFAULT_FN_ATTRS512
287+
static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
288288
_mm512_set1_pd(double __w)
289289
{
290290
return __extension__ (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
291291
}
292292

293-
static __inline __m512i __DEFAULT_FN_ATTRS512
293+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
294294
_mm512_set1_epi8(char __w)
295295
{
296296
return __extension__ (__m512i)(__v64qi){
@@ -304,7 +304,7 @@ _mm512_set1_epi8(char __w)
304304
__w, __w, __w, __w, __w, __w, __w, __w };
305305
}
306306

307-
static __inline __m512i __DEFAULT_FN_ATTRS512
307+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
308308
_mm512_set1_epi16(short __w)
309309
{
310310
return __extension__ (__m512i)(__v32hi){

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -439,6 +439,22 @@ __m512d test_mm512_set1_pd(double d)
439439
// CHECK: insertelement <8 x double> {{.*}}, i32 7
440440
return _mm512_set1_pd(d);
441441
}
442+
TEST_CONSTEXPR(match_m512d(_mm512_set1_pd(-100.0), -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0));
443+
444+
__m512 test_mm512_set1_ps(float d)
445+
{
446+
// CHECK-LABEL: test_mm512_set1_ps
447+
// CHECK: insertelement <16 x float> {{.*}}, i32 0
448+
// CHECK: insertelement <16 x float> {{.*}}, i32 1
449+
// CHECK: insertelement <16 x float> {{.*}}, i32 2
450+
// CHECK: insertelement <16 x float> {{.*}}, i32 3
451+
// CHECK: insertelement <16 x float> {{.*}}, i32 4
452+
// CHECK: insertelement <16 x float> {{.*}}, i32 5
453+
// CHECK: insertelement <16 x float> {{.*}}, i32 6
454+
// CHECK: insertelement <16 x float> {{.*}}, i32 15
455+
return _mm512_set1_ps(d);
456+
}
457+
TEST_CONSTEXPR(match_m512(_mm512_set1_ps(-55.0f), -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f));
442458

443459
__mmask16 test_mm512_knot(__mmask16 a)
444460
{
@@ -9046,6 +9062,7 @@ __m512i test_mm512_set1_epi8(char d)
90469062
// CHECK: insertelement <64 x i8> {{.*}}, i32 63
90479063
return _mm512_set1_epi8(d);
90489064
}
9065+
TEST_CONSTEXPR(match_v64qi(_mm512_set1_epi8(127), 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127));
90499066

90509067
__m512i test_mm512_set1_epi16(short d)
90519068
{
@@ -9061,6 +9078,7 @@ __m512i test_mm512_set1_epi16(short d)
90619078
// CHECK: insertelement <32 x i16> {{.*}}, i32 31
90629079
return _mm512_set1_epi16(d);
90639080
}
9081+
TEST_CONSTEXPR(match_v32hi(_mm512_set1_epi16(-511), -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511));
90649082

90659083
__m512i test_mm512_set1_epi32(int d)
90669084
{

0 commit comments

Comments
 (0)