<iso646.h>: Avoid conflicts w/ C++ keywords.
[dragonfly.git] / lib / libm / arch / i386 / s_tan.S
1 /*
2  * Written by J.T. Conklin <jtc@NetBSD.org>.
3  * Public domain.
4  *
5  * $NetBSD: s_tan.S,v 1.7 2003/07/26 19:25:04 salo Exp $
6  */
7
8 #include <machine/asm.h>
9
10 #include "abi.h"
11
12 ENTRY(tan)
13         XMM_ONE_ARG_DOUBLE_PROLOGUE
14         fldl    ARG_DOUBLE_ONE
15         fptan
16         fnstsw  %ax
17         andw    $0x400,%ax
18         jnz     1f
19         fstp    %st(0)
20         XMM_DOUBLE_EPILOGUE
21         ret
22 1:      fldpi
23         fadd    %st(0)
24         fxch    %st(1)
25 2:      fprem1
26         fstsw   %ax
27         andw    $0x400,%ax
28         jnz     2b
29         fstp    %st(1)
30         fptan
31         fstp    %st(0)
32         XMM_DOUBLE_EPILOGUE
33         ret
34 END(tan)
35
36         .section .note.GNU-stack,"",%progbits