cvs commit: src/sys/i386/include ieeefp.h
bde at FreeBSD.org
Fri Jan 11 10:59:35 PST 2008
bde 2008-01-11 18:59:35 UTC
FreeBSD src repository
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