Remove workarounds for llvm/llvm-project#98306
This commit is contained in:
committed by
Amanieu d'Antras
parent
444c636fdb
commit
e61df091c1
@@ -4563,9 +4563,13 @@ pub fn _mm_maskz_fmadd_round_sch<const ROUNDING: i32>(
|
|||||||
) -> __m128h {
|
) -> __m128h {
|
||||||
unsafe {
|
unsafe {
|
||||||
static_assert_rounding!(ROUNDING);
|
static_assert_rounding!(ROUNDING);
|
||||||
let a = transmute(a);
|
transmute(vfmaddcsh_maskz(
|
||||||
let r = vfmaddcsh_maskz(a, transmute(b), transmute(c), k, ROUNDING);
|
transmute(a),
|
||||||
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(b),
|
||||||
|
transmute(c),
|
||||||
|
k,
|
||||||
|
ROUNDING,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5108,9 +5112,13 @@ pub fn _mm_maskz_fcmadd_round_sch<const ROUNDING: i32>(
|
|||||||
) -> __m128h {
|
) -> __m128h {
|
||||||
unsafe {
|
unsafe {
|
||||||
static_assert_rounding!(ROUNDING);
|
static_assert_rounding!(ROUNDING);
|
||||||
let a = transmute(a);
|
transmute(vfcmaddcsh_maskz(
|
||||||
let r = vfcmaddcsh_maskz(a, transmute(b), transmute(c), k, ROUNDING);
|
transmute(a),
|
||||||
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(b),
|
||||||
|
transmute(c),
|
||||||
|
k,
|
||||||
|
ROUNDING,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user