diff options
author | Richard Henderson <rth@twiddle.net> | 2012-03-10 08:53:05 -0800 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2012-03-19 06:50:41 -0700 |
commit | 0fe0f1f86f82f9e08ca4d4b85111de03f4c2f876 (patch) | |
tree | b7daee8ebf19cc6f493921a1862408ef166b6b14 /sysdeps/generic | |
parent | eb92c487b35e26aa1e08815c4480d0bc5cc9f370 (diff) | |
download | glibc-0fe0f1f86f82f9e08ca4d4b85111de03f4c2f876.tar.gz glibc-0fe0f1f86f82f9e08ca4d4b85111de03f4c2f876.tar.xz glibc-0fe0f1f86f82f9e08ca4d4b85111de03f4c2f876.zip |
Create and use libc_feupdateenv_test.
We can reduce the number of STMXCSR, and often we can avoid the call to __feraiseexcept.
Diffstat (limited to 'sysdeps/generic')
-rw-r--r-- | sysdeps/generic/math_private.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h index 0b945f9afc..813ad93611 100644 --- a/sysdeps/generic/math_private.h +++ b/sysdeps/generic/math_private.h @@ -457,6 +457,24 @@ default_libc_feupdateenv (fenv_t *e) # define libc_feupdateenv_53bit libc_feupdateenv #endif +static __always_inline int +default_libc_feupdateenv_test (fenv_t *e, int ex) +{ + int ret = fetestexcept (ex); + feupdateenv (e); + return ret; +} + +#ifndef libc_feupdateenv_test +# define libc_feupdateenv_test default_libc_feupdateenv_test +#endif +#ifndef libc_feupdateenv_testf +# define libc_feupdateenv_testf default_libc_feupdateenv_test +#endif +#ifndef libc_feupdateenv_testl +# define libc_feupdateenv_testl default_libc_feupdateenv_test +#endif + /* Save and set the rounding mode. The use of fenv_t to store the old mode allows a target-specific version of this function to avoid converting the rounding mode from the fpu format. By default we have no choice but to |