about summary refs log tree commit diff
path: root/sysdeps/alpha/fpu/s_lround.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/alpha/fpu/s_lround.c')
-rw-r--r--sysdeps/alpha/fpu/s_lround.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/sysdeps/alpha/fpu/s_lround.c b/sysdeps/alpha/fpu/s_lround.c
index dedb98e31a..52a88b6b56 100644
--- a/sysdeps/alpha/fpu/s_lround.c
+++ b/sysdeps/alpha/fpu/s_lround.c
@@ -25,11 +25,11 @@
 long int
 __lround (double x)
 {
-  double adj;
+  double adj, y;
 
-  adj = 0x1.fffffffffffffp-2;	/* nextafter (0.5, 0.0) */
-  adj = copysign (adj, x);
-  return x + adj;
+  adj = copysign (0.5, x);
+  asm("addt/suc %1,%2,%0" : "=&f"(y) : "f"(x), "f"(adj));
+  return y;
 }
 
 strong_alias (__lround, __llround)