[clang] [Headers][X86] Allow FMA intrinsics to be used in constexpr (PR #156385)
Simon Pilgrim via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 2 06:39:26 PDT 2025
================
@@ -2501,125 +2501,124 @@ _mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
-(__v8df)(__m512d)(C), \
(__mmask8)(U), (int)(R)))
+static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) {
+ return (__m512d)__builtin_elementwise_fma((__v8df)__A, (__v8df)__B,
+ (__v8df)__C);
+}
-static __inline__ __m512d __DEFAULT_FN_ATTRS512
-_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
-{
- return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
- (__v8df) __B,
- (__v8df) __C,
- (__mmask8) -1,
- _MM_FROUND_CUR_DIRECTION);
+static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) {
+ return (__m512d)__builtin_ia32_selectpd_512(
+ (__mmask8)__U,
+ __builtin_elementwise_fma((__v8df)__A, (__v8df)__B, (__v8df)__C),
+ (__v8df)__A);
}
-static __inline__ __m512d __DEFAULT_FN_ATTRS512
-_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
-{
- return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
- (__v8df) __B,
- (__v8df) __C,
- (__mmask8) __U,
- _MM_FROUND_CUR_DIRECTION);
+static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) {
+ return (__m512d)__builtin_ia32_selectpd_512(
+ (__mmask8)__U,
+ __builtin_elementwise_fma((__v8df)__A, (__v8df)__B, (__v8df)__C),
+ (__v8df)__C);
----------------
RKSimon wrote:
@ckoparkar please can you confirm this works and create a separate PR with that 2 line change if it does?
https://github.com/llvm/llvm-project/pull/156385
More information about the cfe-commits
mailing list