Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
user avatar
cshapiro authored
  the precision control will always be set to double precision.  For
  the duration of calls into C, the precision control will be set to
  the ABI default.  On Linux and Darwin this is double extended
  precision.  On all other platforms the precision control is left as
  double precision.  The specious FLOAT-ACCURACY declaration has been
  eliminated.

* Shorten the precision control field to 24-bits by disposing of the
  unexamined high order eight bits of the status word.  This compacts
  the code generated around floating point mode changes and reduces
  consing.

* Eliminate unnecessary uses of FLDENV and FSTENV.  We can substitute a
  use of FSTENV with FSTSW in FLOATING-POINT-MODES.  This reduces the
  number of cycles to access the relevant mode bits by a factor of
  thirty.  We cannot eliminate FLDENV in SET-FLOATING-POINT-MODES, but
  the common case does not require an update to the status word.  A
  fast path has been added to the VOP that improves the execution time
  by at least a factor of fifteen.

* Remove the precision control option to SET-FLOATING-POINT-MODES.  It
  is the responsibility of the compiler to generating code that yields
  correctly rounded results in double and single precision.
1440af76
History
Name Last commit Last update