[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 01/11] target/arm: Copy entire float_status in is_ebf
From: |
Richard Henderson |
Subject: |
[PATCH 01/11] target/arm: Copy entire float_status in is_ebf |
Date: |
Tue, 3 Dec 2024 14:39:38 -0600 |
Now that float_status has a bunch of fp parameters,
it is easier to copy an existing structure than create
one from scratch. Begin by copying the structure that
corresponds to the FPSR and make only the adjustments
required for BFloat16 semantics.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/tcg/vec_helper.c | 20 +++++++-------------
1 file changed, 7 insertions(+), 13 deletions(-)
diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c
index e825d501a2..ad6f26545a 100644
--- a/target/arm/tcg/vec_helper.c
+++ b/target/arm/tcg/vec_helper.c
@@ -2813,25 +2813,19 @@ bool is_ebf(CPUARMState *env, float_status *statusp,
float_status *oddstatusp)
* no effect on AArch32 instructions.
*/
bool ebf = is_a64(env) && env->vfp.fpcr & FPCR_EBF;
- *statusp = (float_status){
- .tininess_before_rounding = float_tininess_before_rounding,
- .float_rounding_mode = float_round_to_odd_inf,
- .flush_to_zero = true,
- .flush_inputs_to_zero = true,
- .default_nan_mode = true,
- };
+
+ *statusp = env->vfp.fp_status;
+ set_default_nan_mode(true, statusp);
if (ebf) {
- float_status *fpst = &env->vfp.fp_status;
- set_flush_to_zero(get_flush_to_zero(fpst), statusp);
- set_flush_inputs_to_zero(get_flush_inputs_to_zero(fpst), statusp);
- set_float_rounding_mode(get_float_rounding_mode(fpst), statusp);
-
/* EBF=1 needs to do a step with round-to-odd semantics */
*oddstatusp = *statusp;
set_float_rounding_mode(float_round_to_odd, oddstatusp);
+ } else {
+ set_flush_to_zero(true, statusp);
+ set_flush_inputs_to_zero(true, statusp);
+ set_float_rounding_mode(float_round_to_odd_inf, statusp);
}
-
return ebf;
}
--
2.43.0
- [PATCH for-10.0 00/11] fpu: pickNaN follow ups, Richard Henderson, 2024/12/03
- [PATCH 05/11] softfloat: Pad array size in pick_nan_muladd, Richard Henderson, 2024/12/03
- [PATCH 01/11] target/arm: Copy entire float_status in is_ebf,
Richard Henderson <=
- [PATCH 03/11] softfloat: Use goto for default nan case in pick_nan_muladd, Richard Henderson, 2024/12/03
- [PATCH 04/11] softfloat: Remove which from parts_pick_nan_muladd, Richard Henderson, 2024/12/03
- [PATCH 08/11] softfloat: Inline pickNaN, Richard Henderson, 2024/12/03
- [PATCH 09/11] softfloat: Share code between parts_pick_nan cases, Richard Henderson, 2024/12/03