1
0
mirror of https://github.com/antonblanchard/microwatt.git synced 2026-01-11 23:43:15 +00:00
Paul Mackerras 1ad8848655 FPU: Improve zero result detection and simplify final states
This improves detection of results that are exactly zero in FINISH state
by noting that on entry to FINISH state, if R is zero then X must also
be zero, so no rounding needs to be done and no underflow exists.
Therefore we can set rcls_op = RCLS_TZERO to test for zero and exit
early if R = 0.  The RCLS_TZERO test now tests the whole of R just in
case.

The rest of the following states have been streamlined and simplified.
In cases of underflow, we only need to take action before rounding in
the UE=0 case (disabled underflow exception), where we need to denormalize
before rounding.  For enabled underflow cases we just use the existing
NORMALIZE state, which lets us remove NORM_UFLOW state.

On entry to ROUNDING state, R can be zero or denorm only for round to
integer instructions (fri*) or for disabled underflow exception cases.
Note that in case of underflow with UE=0, the exception is only actually
signalled if there is loss of accuracy, i.e. if FPSCR[FI] will be set.
This is now done at the end of ROUNDING state.  For underflow with UE=1,
we go to a new ROUND_UFLOW_EN state to adjust the exponent from
ROUNDING, ROUNDING_2 or ROUNDING_3 state.

In the ROUNDING* states, we avoid shifting left to normalize a result
with exponent <= -1022, because if we did we would then just need to
denormalize again.  This lets us get rid of DENORM state.

Finally, noticing that DO_FRSP_2 state does much the same as FINISH
state lets us remove DO_FRSP_2 state and go to FINISH state from
DO_FRSP.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2025-12-15 13:59:23 +11:00
..
2022-08-09 20:39:39 +10:00
2020-06-24 09:53:46 +10:00
2021-09-27 15:30:41 +10:00
2020-06-24 09:53:46 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2020-04-07 11:11:17 +10:00
2022-08-09 20:39:39 +10:00
2020-06-19 20:28:03 +10:00
2022-08-09 20:39:39 +10:00