Skip to content

Commit 691ede2

Browse files
authored
[Headers][X86] Allow _mm512_set1_epi32/64 intrinsics to be used in constexpr (#152674)
Pulled out of #152288 as I need this to proceed with several other patches
1 parent a910a6a commit 691ede2

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

clang/lib/Headers/avx512fintrin.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ _mm512_set1_epi16(short __w)
314314
__w, __w, __w, __w, __w, __w, __w, __w };
315315
}
316316

317-
static __inline __m512i __DEFAULT_FN_ATTRS512
317+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
318318
_mm512_set1_epi32(int __s)
319319
{
320320
return __extension__ (__m512i)(__v16si){
@@ -330,7 +330,7 @@ _mm512_maskz_set1_epi32(__mmask16 __M, int __A)
330330
(__v16si)_mm512_setzero_si512());
331331
}
332332

333-
static __inline __m512i __DEFAULT_FN_ATTRS512
333+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
334334
_mm512_set1_epi64(long long __d)
335335
{
336336
return __extension__(__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9062,6 +9062,36 @@ __m512i test_mm512_set1_epi16(short d)
90629062
return _mm512_set1_epi16(d);
90639063
}
90649064

9065+
__m512i test_mm512_set1_epi32(int d)
9066+
{
9067+
// CHECK-LABEL: test_mm512_set1_epi32
9068+
// CHECK: insertelement <16 x i32> {{.*}}, i32 0
9069+
// CHECK: insertelement <16 x i32> {{.*}}, i32 1
9070+
// CHECK: insertelement <16 x i32> {{.*}}, i32 2
9071+
// CHECK: insertelement <16 x i32> {{.*}}, i32 3
9072+
// CHECK: insertelement <16 x i32> {{.*}}, i32 4
9073+
// CHECK: insertelement <16 x i32> {{.*}}, i32 5
9074+
// CHECK: insertelement <16 x i32> {{.*}}, i32 6
9075+
// CHECK: insertelement <16 x i32> {{.*}}, i32 15
9076+
return _mm512_set1_epi32(d);
9077+
}
9078+
TEST_CONSTEXPR(match_v16si(_mm512_set1_epi32(99), 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99));
9079+
9080+
__m512i test_mm512_set1_epi64(long long d)
9081+
{
9082+
// CHECK-LABEL: test_mm512_set1_epi64
9083+
// CHECK: insertelement <8 x i64> {{.*}}, i32 0
9084+
// CHECK: insertelement <8 x i64> {{.*}}, i32 1
9085+
// CHECK: insertelement <8 x i64> {{.*}}, i32 2
9086+
// CHECK: insertelement <8 x i64> {{.*}}, i32 3
9087+
// CHECK: insertelement <8 x i64> {{.*}}, i32 4
9088+
// CHECK: insertelement <8 x i64> {{.*}}, i32 5
9089+
// CHECK: insertelement <8 x i64> {{.*}}, i32 6
9090+
// CHECK: insertelement <8 x i64> {{.*}}, i32 7
9091+
return _mm512_set1_epi64(d);
9092+
}
9093+
TEST_CONSTEXPR(match_v8di(_mm512_set1_epi64(-42), -42, -42, -42, -42, -42, -42, -42, -42));
9094+
90659095
__m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
90669096
{
90679097
// CHECK-LABEL: test_mm512_set4_epi32

0 commit comments

Comments
 (0)