Author: Simon Pilgrim Date: 2025-08-08T11:02:08+01:00 New Revision: 691ede28303925f33796cbe917451f5b27b8361f
URL: https://github.com/llvm/llvm-project/commit/691ede28303925f33796cbe917451f5b27b8361f DIFF: https://github.com/llvm/llvm-project/commit/691ede28303925f33796cbe917451f5b27b8361f.diff LOG: [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 Added: Modified: clang/lib/Headers/avx512fintrin.h clang/test/CodeGen/X86/avx512f-builtins.c Removed: ################################################################################ diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h index 74343c33ba76f..e3bc71ed8e918 100644 --- a/clang/lib/Headers/avx512fintrin.h +++ b/clang/lib/Headers/avx512fintrin.h @@ -314,7 +314,7 @@ _mm512_set1_epi16(short __w) __w, __w, __w, __w, __w, __w, __w, __w }; } -static __inline __m512i __DEFAULT_FN_ATTRS512 +static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set1_epi32(int __s) { return __extension__ (__m512i)(__v16si){ @@ -330,7 +330,7 @@ _mm512_maskz_set1_epi32(__mmask16 __M, int __A) (__v16si)_mm512_setzero_si512()); } -static __inline __m512i __DEFAULT_FN_ATTRS512 +static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set1_epi64(long long __d) { return __extension__(__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d }; diff --git a/clang/test/CodeGen/X86/avx512f-builtins.c b/clang/test/CodeGen/X86/avx512f-builtins.c index 8c14c571d96a7..d59799e2c24e5 100644 --- a/clang/test/CodeGen/X86/avx512f-builtins.c +++ b/clang/test/CodeGen/X86/avx512f-builtins.c @@ -9062,6 +9062,36 @@ __m512i test_mm512_set1_epi16(short d) return _mm512_set1_epi16(d); } +__m512i test_mm512_set1_epi32(int d) +{ + // CHECK-LABEL: test_mm512_set1_epi32 + // CHECK: insertelement <16 x i32> {{.*}}, i32 0 + // CHECK: insertelement <16 x i32> {{.*}}, i32 1 + // CHECK: insertelement <16 x i32> {{.*}}, i32 2 + // CHECK: insertelement <16 x i32> {{.*}}, i32 3 + // CHECK: insertelement <16 x i32> {{.*}}, i32 4 + // CHECK: insertelement <16 x i32> {{.*}}, i32 5 + // CHECK: insertelement <16 x i32> {{.*}}, i32 6 + // CHECK: insertelement <16 x i32> {{.*}}, i32 15 + return _mm512_set1_epi32(d); +} +TEST_CONSTEXPR(match_v16si(_mm512_set1_epi32(99), 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99)); + +__m512i test_mm512_set1_epi64(long long d) +{ + // CHECK-LABEL: test_mm512_set1_epi64 + // CHECK: insertelement <8 x i64> {{.*}}, i32 0 + // CHECK: insertelement <8 x i64> {{.*}}, i32 1 + // CHECK: insertelement <8 x i64> {{.*}}, i32 2 + // CHECK: insertelement <8 x i64> {{.*}}, i32 3 + // CHECK: insertelement <8 x i64> {{.*}}, i32 4 + // CHECK: insertelement <8 x i64> {{.*}}, i32 5 + // CHECK: insertelement <8 x i64> {{.*}}, i32 6 + // CHECK: insertelement <8 x i64> {{.*}}, i32 7 + return _mm512_set1_epi64(d); +} +TEST_CONSTEXPR(match_v8di(_mm512_set1_epi64(-42), -42, -42, -42, -42, -42, -42, -42, -42)); + __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D) { // CHECK-LABEL: test_mm512_set4_epi32 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits