cvs commit: src/sys/i386/include ieeefp.h

Bruce Evans bde at FreeBSD.org
Fri Jan 11 10:59:35 PST 2008


bde         2008-01-11 18:59:35 UTC

  FreeBSD src repository

  Modified files:
    sys/i386/include     ieeefp.h 
  Log:
  MFamd64 (everything possible up to 1.19; mainly the amd64 implementations
  of fpget*() and fpset*()).
  
  The i386 fpget*() were efficient but a bit obfuscated (using macros
  and a case statement to demultiplex them through a single inline).
  The demultiplexing mainly gave smaller source code.
  
  The i386 fpset*() were obfuscated in the same way and were very
  inefficient due to the case statement not having enough cases or
  complexity so all cases used the FP environment.
  
  This also fixes a harmless bug in rev.1.12.  fpsetmask() extracted the
  old value from the bit-field twice, but the doubled shift was harmless
  since the shift count is 0.
  
  All fp*() interfaces are now inline functions on i386.  They used to
  be macros that call (a different set of) inline functions.  This is a
  small ABI change which shouldn't cause problems since cases where
  inlining fails (mainly -O0) only give (working) static functions.
  
  Revision  Changes    Path
  1.14      +103 -61   src/sys/i386/include/ieeefp.h


More information about the cvs-all mailing list