[clang] [X86][Clang] Support constexpr evaluation of cvtpd2ps intrinsics (PR #169980)
Hamza Hassanain via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 1 00:06:03 PST 2025
================
@@ -207,9 +207,8 @@ _mm512_undefined(void)
return (__m512)__builtin_ia32_undef512();
}
-static __inline__ __m512 __DEFAULT_FN_ATTRS512
-_mm512_undefined_ps(void)
-{
+static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_undefined_ps(void) {
----------------
HamzaHassanain wrote:
I had an issue with these two functions: `_mm256_mask_cvtpd_ps`, `_mm256_maskz_cvtpd_ps`, because 256-bit masked operations use selectps, which evaluates ALL lanes before masking
So even masked-off Inf/NaN values cause errors.
The other issue with all the functions mentioned in the issue, that are defined in this header, `avx512fintrin.h`, but they were solved when I just added `__DEFAULT_FN_ATTRS512_CONSTEXPR`, and updated the `BuiltinsX86` to treat the `*_undefined_ps` as constexpr.
Please correct me if I am wrong, or misunderstood something
I would like to add the `*_undefined_ps` to be constexpr as well. Can I proceed?
https://github.com/llvm/llvm-project/pull/169980
More information about the cfe-commits
mailing list