cvs commit: src/lib/msun/i387 Makefile.inc e_scalb.S e_scalbf.S

Bruce Evans bde at FreeBSD.org
Wed Jul 5 20:06:43 UTC 2006


bde         2006-07-05 20:06:42 UTC

  FreeBSD src repository

  Modified files:
    lib/msun/i387        Makefile.inc 
  Removed files:
    lib/msun/i387        e_scalb.S e_scalbf.S 
  Log:
  Removed the optimized asm versions of scalb() and scalbf().  These
  functions are only for compatibility with obsolete standards.  They
  shouldn't be used, so they shouldn't be optimized.  Use the generic
  versions instead.
  
  This fixes scalbf() as a side effect.  The optimized asm version left
  garbage on the FP stack.  I fixed the corresponding bug in the optimized
  asm scalb() and scalbn() in 1996.  NetBSD fixed it in scalb(), scalbn()
  and scalbnf() in 1999 but missed fixing it in scalbf().  Then in 2005
  the bug was reimplemented in FreeBSD by importing NetBSD's scalbf().
  
  The generic versions have slightly different error handling:
  - the asm versions blindly round the second parameter to a (floating
    point) integer and proceed, while the generic versions return NaN
    if this rounding changes the value.  POSIX permits both behaviours
    (these functions are XSI extensions and the behaviour for a bogus
    non-integral second parameter is unspecified).   Apart from this
    and the bug in scalbf(), the behaviour of the generic versions seems
    to be identical.  (I only exhusatively tested
    generic_scalbf(1.0F, anyfloat) == asm_scalb(1.0F, anyfloat).  This
    covers many representative corner cases involving NaNs and Infs but
    doesn't test exception flags.  The brokenness of scalbf() showed up
    as weird behaviour after testing just 7 integer cases sequentially.)
  
  Revision  Changes    Path
  1.9       +2 -2      src/lib/msun/i387/Makefile.inc
  1.9       +0 -45     src/lib/msun/i387/e_scalb.S (dead)
  1.3       +0 -15     src/lib/msun/i387/e_scalbf.S (dead)


More information about the cvs-all mailing list