FloatParts64.exp holds an unbiased exponent. Subtract exp_bias to store
the unbiased equivalent of the max-normal biased exponent.
Fixes: d8be49537658 ("fpu: Add conversion routines for OCP FP8 E5M2")
Signed-off-by: Max Chou <[email protected]>
---
fpu/softfloat.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index bc244a44ff..e2e53c1d68 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -2435,7 +2435,8 @@ static void parts_float_to_e5m2(FloatParts64 *a,
float_status *s, bool saturate)
/* Per OCP, conversion in SATURATE mode bounds Inf to MAX. */
if (saturate) {
a->cls = float_class_normal;
- a->exp = float8_e5m2_params.exp_max - 1;
+ a->exp = (float8_e5m2_params.exp_max - 1 -
+ float8_e5m2_params.exp_bias);
a->frac = MAKE_64BIT_MASK(float8_e5m2_params.frac_shift,
float8_e5m2_params.frac_size + 1);
}
--
2.55.0