diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-10-18 09:00:46 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-10-18 09:00:46 -0400 |
commit | d38f1dba009689d78af371cffa091b27e4ebe17d (patch) | |
tree | da7daa82001d244a4dbc1ce6dc72cf4e8eac45db /math | |
parent | 83c7615c2dc344562f6a1a499a269b114f74c7e5 (diff) | |
download | glibc-d38f1dba009689d78af371cffa091b27e4ebe17d.tar.gz glibc-d38f1dba009689d78af371cffa091b27e4ebe17d.tar.xz glibc-d38f1dba009689d78af371cffa091b27e4ebe17d.zip |
Start optimizing the use of the fenv interfaces in libm itself
Diffstat (limited to 'math')
-rw-r--r-- | math/math_private.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/math/math_private.h b/math/math_private.h index c5fbf15f65..a1ce0142b1 100644 --- a/math/math_private.h +++ b/math/math_private.h @@ -358,4 +358,26 @@ extern void __docos (double __x, double __dx, double __v[]); #define math_force_eval(x) __asm __volatile ("" : : "m" (x)) #endif + +/* The standards only specify one variant of the fenv.h interfaces. + But at least for some architectures we can be more efficient if we + know what operations are going to be performed. Therefore we + define additional interfaces. By default they refer to the normal + interfaces. */ +#define libc_fegetround() fegetround () +#define libc_fegetroundf() fegetround () +#define libc_fegetroundl() fegetround () + +#define libc_fesetround(r) (void) fesetround (r) +#define libc_fesetroundf(r) (void) fesetround (r) +#define libc_fesetroundl(r) (void) fesetround (r) + +#define libc_feholdexcept(e) (void) feholdexcept (e) +#define libc_feholdexceptf(e) (void) feholdexcept (e) +#define libc_feholdexceptl(e) (void) feholdexcept (e) + +#define libc_fesetenv(e) (void) fesetenv (e) +#define libc_fesetenvf(e) (void) fesetenv (e) +#define libc_fesetenvl(e) (void) fesetenv (e) + #endif /* _MATH_PRIVATE_H_ */ |