Home | History | Annotate | Download | only in fpu
History log of /src/sys/arch/powerpc/fpu/fpu_implode.c
RevisionDateAuthorComments
 1.24  14-Sep-2022  rin Fix logic for FPSCR[OX]; set FPSCR[FI] (and therefore FPSCR[XX]).
 1.23  14-Sep-2022  rin Fix logic for FPSCR[UX]:
- Correct FPSCR[FPRF] field when round to 0.0 or 0.0f.
- Simplify.
 1.22  04-Sep-2022  rin Simplify logic to remove needless goto. NFC.
 1.21  04-Sep-2022  rin Fix logic for FI, FR, and FPRF fields of FPSCR.

They are not sticky bits and updated by arithmetic and round
insns at the same time.

Comparison insns update only FPCC sub-field of FPRF.

For other insns, these field are left untouched.

Also, for single-precision insns, exception bits should be set by
the first fpu_implode(), which rounds the value to float.
 1.20  04-Sep-2022  rin Fix debug printf. Unbreak DEBUG build.
 1.19  04-Sep-2022  rin Remove extra break.
 1.18  02-Sep-2022  rin fpu_implode(): Clear lower word for float just for sure.
 1.17  02-Sep-2022  rin Make fpu_explode() and fpu_implode() take uint64_t and uint64_t *,
instead of register number, respectively. NFC.
 1.16  02-Sep-2022  rin Fix off-by-one error in exponent when round a double to the
largest normalized value; QNaN was wrongly generated here.
 1.15  02-Sep-2022  rin Make fpu_ftod() return uint64_t value. NFC.
 1.14  01-Sep-2022  rin Set FPSCR[FPRF] for calculated result, for all instructions
that are documented to update this field.

Exceptions are fcti{w,d}{,z}; FPSCR[FPRF] becomes undefined,
according to Power ISA. We do not overwrite this field for
these insns at the moment.
 1.13  01-Sep-2022  rin static-fy fpu_fto[ixsd](). NFC.
 1.12  01-Sep-2022  rin Further fix for fcti{w,d}{,z}.

- Treat {Q,S}NaN correctly.
- Set exception bits appropriately.
- Introduce round_int().
 1.11  01-Sep-2022  rin Remove stale comment.
 1.10  30-Aug-2022  rin Fix fcti{w,d}{,z}.

- Treat 64-bit integer correctly for fctid{,z}.
- Respect round mode specified by FPSCR[RN].

XXX
- Set FPSCR[FR] and [FI] appropriately.
- Also set FPSCR[FPRF]?
- fctid{,z} traps on powerpc32 (confirmed on 603e and G4).
 1.9  30-Aug-2022  rin Do not assert FPSCR[UX] when overflow.
 1.8  28-Aug-2022  rin u_int64_t --> uint64_t. No binary changes.
 1.7  27-Jun-2020  rin Sort headers. No functional changes intended.
 1.6  11-Dec-2005  christos merge ktrace-lwp.
 1.5  27-Jul-2005  simonb KNF nit.
 1.4  27-Oct-2003  simonb branches: 1.4.16;
Remove (the now non-compiling) support for 128bit FP emulation, which
isn't needed for PowerPC anyway.
 1.3  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.2  15-Jul-2003  lukem __KERNEL_RCSID()
 1.1  13-Jun-2001  simonb branches: 1.1.8; 1.1.24;
Add a port to IBM's PPC405GP Reference Board (the "walnut")
by Eduardo Horvath and Simon Burge of Wasabi Systems.

IBM 4xx series CPU features:
- New pmap and revised trap handler.
- Support on-chip timers, PCI controller, UARTs
- Framework for on-chip ethernet and watchdog timer.
General PowerPC features:
- Add in-kernel PPC floating point emulation
- New in{,4}_cksum that is between 1.5 and 5 times faster than the
old version depending on CPU type.
General changes:
- Kernel support for generic dbsym-style symbols.
 1.1.24.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.1.24.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.1.24.2  18-Sep-2004  skrll Sync with HEAD.
 1.1.24.1  03-Aug-2004  skrll Sync with HEAD
 1.1.8.2  13-Jun-2001  simonb Add a port to IBM's PPC405GP Reference Board (the "walnut")
by Eduardo Horvath and Simon Burge of Wasabi Systems.

IBM 4xx series CPU features:
- New pmap and revised trap handler.
- Support on-chip timers, PCI controller, UARTs
- Framework for on-chip ethernet and watchdog timer.
General PowerPC features:
- Add in-kernel PPC floating point emulation
- New in{,4}_cksum that is between 1.5 and 5 times faster than the
old version depending on CPU type.
General changes:
- Kernel support for generic dbsym-style symbols.
 1.1.8.1  13-Jun-2001  simonb file fpu_implode.c was added on branch nathanw_sa on 2001-06-13 06:01:48 +0000
 1.4.16.1  21-Jun-2006  yamt sync with head.

RSS XML Feed