summaryrefslogtreecommitdiff
path: root/sysdeps/x86_64/fpu
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-04-26 05:42:49 +0000
committerUlrich Drepper <drepper@redhat.com>2009-04-26 05:42:49 +0000
commit337c270829f7088949ba0c96fffa6326fde17f78 (patch)
tree156108c0cf719838f421f4b30116ad8f3181056f /sysdeps/x86_64/fpu
parent002a604fd61d1d3b8d82a5a85959ba4ebd210aec (diff)
* sysdeps/i386/fpu/s_tan.S: Set errno for ±Inf.
* sysdeps/i386/fpu/s_tanf.S: Likewise. * sysdeps/i386/fpu/s_tanl.S: Likewise. * sysdeps/ieee754/dbl-64/s_tan.c: Likewise. * sysdeps/ieee754/flt-32/s_tanf.c: Likewise. * sysdeps/x86_64/fpu/s_tanl.S: Likewise. * math/libm-test.inc: Add tests for errno after tan calls with ±Inf.
Diffstat (limited to 'sysdeps/x86_64/fpu')
-rw-r--r--sysdeps/x86_64/fpu/s_tanl.S14
1 files changed, 13 insertions, 1 deletions
diff --git a/sysdeps/x86_64/fpu/s_tanl.S b/sysdeps/x86_64/fpu/s_tanl.S
index 674e908acc..6427e3f6f0 100644
--- a/sysdeps/x86_64/fpu/s_tanl.S
+++ b/sysdeps/x86_64/fpu/s_tanl.S
@@ -4,15 +4,24 @@
*
* Adapted for `long double' by Ulrich Drepper <drepper@cygnus.com>.
* Adapted for x86-64 by Andreas Jaeger <aj@suse.de>.
+ * Fixed errno handling by Ulrich Drepper <drepper@redhat.com>.
*/
+#define __need_Emath
+#include <bits/errno.h>
#include <machine/asm.h>
RCSID("$NetBSD: $")
ENTRY(__tanl)
fldt 8(%rsp)
- fptan
+ fxam
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 3f
+4: fptan
fnstsw %ax
testl $0x400,%eax
jnz 1f
@@ -29,5 +38,8 @@ ENTRY(__tanl)
fptan
fstp %st(0)
ret
+3: call __errno_location@PLT
+ movl $EDOM, (%rax)
+ jmp 4b
END (__tanl)
weak_alias (__tanl, tanl)