From e61df091c1a54588f0ea6a58a646f030ea0e5ef5 Mon Sep 17 00:00:00 2001 From: sayantn Date: Mon, 14 Apr 2025 04:06:33 +0530 Subject: [PATCH] Remove workarounds for llvm/llvm-project#98306 --- .../crates/core_arch/src/x86/avx512fp16.rs | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/library/stdarch/crates/core_arch/src/x86/avx512fp16.rs b/library/stdarch/crates/core_arch/src/x86/avx512fp16.rs index a191ebfcb3b3..d0a4f41dac95 100644 --- a/library/stdarch/crates/core_arch/src/x86/avx512fp16.rs +++ b/library/stdarch/crates/core_arch/src/x86/avx512fp16.rs @@ -4563,9 +4563,13 @@ pub fn _mm_maskz_fmadd_round_sch( ) -> __m128h { unsafe { static_assert_rounding!(ROUNDING); - let a = transmute(a); - let r = vfmaddcsh_maskz(a, transmute(b), transmute(c), k, ROUNDING); - transmute(_mm_move_ss(a, r)) // FIXME: If `k == 0`, then LLVM optimized `vfmaddcsh_maskz` to output an all-zero vector, which is incorrect + transmute(vfmaddcsh_maskz( + transmute(a), + transmute(b), + transmute(c), + k, + ROUNDING, + )) } } @@ -5108,9 +5112,13 @@ pub fn _mm_maskz_fcmadd_round_sch( ) -> __m128h { unsafe { static_assert_rounding!(ROUNDING); - let a = transmute(a); - let r = vfcmaddcsh_maskz(a, transmute(b), transmute(c), k, ROUNDING); - transmute(_mm_move_ss(a, r)) // FIXME: If `k == 0`, then LLVM optimized `vfcmaddcsh_maskz` to output an all-zero vector, which is incorrect + transmute(vfcmaddcsh_maskz( + transmute(a), + transmute(b), + transmute(c), + k, + ROUNDING, + )) } }