hercules-390 / hyperion

Hercules 390
Other
252 stars 70 forks source link

Improve Softfloat implementation #33

Closed ghost closed 7 years ago

ghost commented 10 years ago

Roger appears to have integrated the softfloat package into his spinhawk in a different manner than the way I originally implemented it into Hyperion.

My implementation modified every softfloat function to pass along a "ctx" context variable whereas his implementation does not and thus appears to be much cleaner and more straightforward and therefore prefer his implementation over mine.

The difference in the implementations also makes it more difficult to port fixes to existing floating point instructions as well as introducing (or finishing) new floating point functionality such as the Floating Point Extension Facility (which has not been fully implemented yet in Hyperion (it appears to only be half finished!) whereas it appears to have been fully implemented in Roger's spinhawk).

This GitHub issue has therefore been created to address the need to bring Hyperion's softfloat implementation into alignment with spinhawk's to make it easier to address other dependent floating point issues that currently exist and may arise in the future.

Fish-Git commented 9 years ago

TEMPORARILY STALLED due to current workload.

srorso commented 8 years ago

It is tempting to approach this issue by transporting code from Spinhawk into Hyperion.

Spinhawk's code avoids the call-backs and context passing by using thread-instantiated variables, and that would be relatively easy to migrate into Hyperion's Softfloat implementation.

But the Spinhawk ieee.c also seems to include support for nearly all of the Floating Point Extension Facility (PFPO is not implemented, although a pfpo.c shell exists). In particular, it includes RRF-e instruction decode, includes code for all of the "A" floating point instructions (e.g., LEXBRA). and supports the additional rounding modes that were added somewhere between z/Arch POP -7 and -10.

This approach would also address #34, and would simplify future cross-ports of fixes.

srorso commented 7 years ago

While it might be debated that the integration of SoftFloat 3a might not be an improvement from a build perspective, the commits dated 16 December 2016 beginning with 83f60bf have made Hyperion conform to the PoO SA22-7832-10, as validated by the BFP-* suite of tests.