FPU: Implement floating convert to integer instructions
authorPaul Mackerras <paulus@ozlabs.org>
Wed, 22 Jul 2020 02:19:12 +0000 (12:19 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Thu, 3 Sep 2020 07:44:52 +0000 (17:44 +1000)
commit03d1aa968a76f338c4caf9c742e9e59d8a8d13e0
treed60a5c9a59c8a515952d4ac21541178d9dab59e8
parent36130f1db351eec8bf19b00f4e2f9dd92276810b
FPU: Implement floating convert to integer instructions

This implements fctiw, fctiwz, fctiwu, fctiwuz, fctid, fctidz, fctidu
and fctiduz, and adds tests for them.

There are some subtleties around the setting of the inexact (XX) and
invalid conversion (VXCVI) flags in the FPSCR.  If the rounded value
ends up being out of range, we need to set VXCVI and not XX.  For a
conversion to unsigned word or doubleword of a negative value that
rounds to zero, we need to set XX and not VXCVI.

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