aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386/fpu/math_private.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2012-03-18 15:58:00 -0700
committerRichard Henderson <rth@twiddle.net>2012-03-19 06:51:39 -0700
commitbd37f2ee314147c69a39817d590149cf1181ef47 (patch)
tree453f01145f7e526a6f5fdd5f3a6c1dde93f59ce8 /sysdeps/i386/fpu/math_private.h
parentd0adc9223031b606c3c7781b4ec41462796ab313 (diff)
downloadglibc-bd37f2ee314147c69a39817d590149cf1181ef47.zip
glibc-bd37f2ee314147c69a39817d590149cf1181ef47.tar.gz
glibc-bd37f2ee314147c69a39817d590149cf1181ef47.tar.bz2
Optimize private 387 fenv access; share code between i386 and x86_64.
Diffstat (limited to 'sysdeps/i386/fpu/math_private.h')
-rw-r--r--sysdeps/i386/fpu/math_private.h46
1 files changed, 2 insertions, 44 deletions
diff --git a/sysdeps/i386/fpu/math_private.h b/sysdeps/i386/fpu/math_private.h
index 9236448..541a7f8 100644
--- a/sysdeps/i386/fpu/math_private.h
+++ b/sysdeps/i386/fpu/math_private.h
@@ -1,48 +1,6 @@
#ifndef _MATH_PRIVATE_H
-#include <fenv.h>
-#include <fpu_control.h>
-
-#define math_opt_barrier(x) \
-({ __typeof (x) __x; \
- __asm ("" : "=t" (__x) : "0" (x)); \
- __x; })
-#define math_force_eval(x) \
-do \
- { \
- __typeof (x) __x = (x); \
- if (sizeof (x) <= sizeof (double)) \
- __asm __volatile ("" : : "m" (__x)); \
- else \
- __asm __volatile ("" : : "f" (__x)); \
- } \
-while (0)
-
-static __always_inline void
-libc_feholdexcept_setround_53bit (fenv_t *e, int r)
-{
- feholdexcept (e);
- fesetround (r);
-
- fpu_control_t cw;
- _FPU_GETCW (cw);
- cw &= ~(fpu_control_t) _FPU_EXTENDED;
- cw |= _FPU_DOUBLE;
- _FPU_SETCW (cw);
-}
-#define libc_feholdexcept_setround_53bit libc_feholdexcept_setround_53bit
-
-static __always_inline void
-libc_feupdateenv_53bit (fenv_t *e)
-{
- feupdateenv (e);
-
- /* Unfortunately, feupdateenv fails to affect the rounding precision.
- We can get that back by restoring the exact control word we saved. */
- _FPU_SETCW (e->__control_word);
-}
-#define libc_feupdateenv_53bit libc_feupdateenv_53bit
-
+#include "fenv_private.h"
#include_next <math_private.h>
-#endif /* _MATH_PRIVATE_H */
+#endif