freebsd-skq/lib/msun/i387
David Schultz 9233b45ad9 Make the fenv.h routines work for programs that use SSE for
floating-point arithmetic on i386.  Now I'm going to make excuses
for why this code is kinda scary:

- To avoid breaking the ABI with 5.3-RELEASE, we can't change
  sizeof(fenv_t).  I stuck the saved mxcsr in some discontiguous
  reserved bits in the existing structure.

- Attempting to access the mxcsr on older processors results
  in an illegal instruction exception, so support for SSE must
  be detected at runtime.  (The extra baggage is optimized away
  if either the application or libm is compiled with -msse{,2}.)

I didn't run tests to ensure that this doesn't SIGILL on older 486's
lacking the cpuid instruction or on other processors lacking SSE.
Results from running the fenv regression test on these processors
would be appreciated.  (You'll need to compile the test with
-DNO_STRICT_DFL_ENV.)  If you have an 80386, or if your processor
supports SSE but the kernel didn't enable it, then you're probably out
of luck.

Also, I un-inlined some of the functions that grew larger as a result
of this change, moving them from fenv.h to fenv.c.
2005-03-17 22:21:46 +00:00
..
e_exp.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_fmod.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_log10.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_log10f.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_log.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_logf.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_remainder.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_remainderf.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_scalb.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_scalbf.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_sqrt.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
e_sqrtf.S Remove wrappers and other cruft intended to support SVID, mistakes in 2005-02-04 14:08:32 +00:00
fenv.c Make the fenv.h routines work for programs that use SSE for 2005-03-17 22:21:46 +00:00
fenv.h Make the fenv.h routines work for programs that use SSE for 2005-03-17 22:21:46 +00:00
Makefile.inc - Define the LDBL_PREC to be the number of significant bits in a long 2005-03-07 04:53:48 +00:00
s_ceil.S
s_ceilf.S Import the subset of J.T. Conklin's single-precision x86-optimized 2005-01-13 18:58:25 +00:00
s_copysign.S
s_copysignf.S Import the subset of J.T. Conklin's single-precision x86-optimized 2005-01-13 18:58:25 +00:00
s_cos.S
s_finite.S
s_floor.S
s_floorf.S Import the subset of J.T. Conklin's single-precision x86-optimized 2005-01-13 18:58:25 +00:00
s_llrint.S Faster lrint() and llrint() implementations for x86. 2005-01-11 23:10:53 +00:00
s_logb.S
s_logbf.S Import the subset of J.T. Conklin's single-precision x86-optimized 2005-01-13 18:58:25 +00:00
s_lrint.S Faster lrint() and llrint() implementations for x86. 2005-01-11 23:10:53 +00:00
s_rint.S
s_rintf.S Import the subset of J.T. Conklin's single-precision x86-optimized 2005-01-13 18:58:25 +00:00
s_scalbn.S
s_scalbnf.S Alias scalbnf as ldexpf. The two are identical in binary 2005-03-07 04:52:43 +00:00
s_scalbnl.S Add scalbnl, also known as as ldexpl. 2005-03-07 04:52:58 +00:00
s_significand.S
s_significandf.S Import the subset of J.T. Conklin's single-precision x86-optimized 2005-01-13 18:58:25 +00:00
s_sin.S
s_tan.S