Fix an error in rsqrte_f64() where the sign bit was being placed incorrectly. Specifically, ensure f64_sign is deposited into bit 63.
Additionally, update the comments regarding the exponent (exp) bit width to reflect the correct double-precision specifications. Signed-off-by: Li-Hang Lin <[email protected]> --- target/arm/tcg/vfp_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/vfp_helper.c b/target/arm/tcg/vfp_helper.c index e156e3774a..60188b2c7e 100644 --- a/target/arm/tcg/vfp_helper.c +++ b/target/arm/tcg/vfp_helper.c @@ -1078,8 +1078,8 @@ float64 HELPER(rsqrte_f64)(float64 input, float_status *s) f64_frac = recip_sqrt_estimate(&f64_exp, 3068, f64_frac, false); - /* result = sign : result_exp<4:0> : estimate<7:0> : Zeros(44) */ - val = deposit64(0, 61, 1, f64_sign); + /* result = sign : result_exp<10:0> : estimate<7:0> : Zeros(44) */ + val = deposit64(0, 63, 1, f64_sign); val = deposit64(val, 52, 11, f64_exp); val = deposit64(val, 44, 8, extract64(f64_frac, 52 - 8, 8)); return make_float64(val); -- 2.52.0.351.gbe84eed79e-goog
