Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
  • cshapiro's avatar
    1440af76
    * Change the way the x87 precision control is managed. While in Lisp, · 1440af76
    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
    * Change the way the x87 precision control is managed. While in Lisp,
    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.