FPU: Set sign of 0 result of subtraction in pack_dp
authorPaul Mackerras <paulus@ozlabs.org>
Fri, 27 May 2022 12:23:50 +0000 (22:23 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Tue, 9 Aug 2022 09:51:53 +0000 (19:51 +1000)
commit09965b91024faceab13446ab6801fdb2614da71e
tree4712dce8fca5e18185a0cd48c5a92f29775ddab4
parent932da4c114b518504ea9863415159af01bd412b4
FPU: Set sign of 0 result of subtraction in pack_dp

When a floating-point subtraction results in a zero result, the sign
of the result is required to be positive in all rounding modes except
the round to minus infinity mode, when it is negative.  Consolidate
the logic for doing this in one place, in the pack_dp function,
instead of having it at each place where a zero result is generated.

Since fnmadd[s] and fnmsub[s] negate the result after this rule has
been applied, we use the r.negate signal to indicate a negation which
is now done in pack_dp.  Thus the EXC_RESULT state no longer uses
r.negate, and in fact doesn't set v.result_sign at all; that is now
done in the states that lead into EXC_RESULT.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
fpu.vhdl