FPU: Implement floating multiply-add instructions
authorPaul Mackerras <paulus@ozlabs.org>
Sat, 1 Aug 2020 09:17:36 +0000 (19:17 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Thu, 3 Sep 2020 07:45:41 +0000 (17:45 +1000)
commitdc1544db691a82dccdd6f6d43224d833dd4a1433
tree518fd0ac286f908f8ff18d8f5e01706607e0ae09
parentc083b9507dafee86c5c0c14d6e1ef8c56a2b8a3f
FPU: Implement floating multiply-add instructions

This implements fmadd, fmsub, fnmadd, fnmsub and their
single-precision counterparts.  The single-precision versions operate
the same as the double-precision versions until the final rounding and
overflow/underflow steps.

This adds an S register to store the low bits of the product.  S
shifts into R on left shifts, and can be negated, but doesn't do any
other arithmetic.

This adds a test for the double-precision versions of these
instructions.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
decode1.vhdl
fpu.vhdl
tests/fpu/fpu.c
tests/test_fpu.bin
tests/test_fpu.console_out