Merge branch 'vendor/LIBARCHIVE' (early part)
[dragonfly.git] / lib / libm / arch / i386 / s_sin.S
1 /*
2  * Written by J.T. Conklin <jtc@NetBSD.org>.
3  * Public domain.
4  *
5  * $NetBSD: s_sin.S,v 1.7 2003/07/26 19:25:03 salo Exp $
6  * $DragonFly: src/lib/libm/arch/i386/s_sin.S,v 1.1 2005/07/26 21:15:19 joerg Exp $
7  */
8
9 #include <machine/asm.h>
10
11 #include "abi.h"
12
13 ENTRY(sin)
14         XMM_ONE_ARG_DOUBLE_PROLOGUE
15         fldl    ARG_DOUBLE_ONE
16         fsin
17         fnstsw  %ax
18         andw    $0x400,%ax
19         jnz     1f
20         XMM_DOUBLE_EPILOGUE
21         ret
22 1:      fldpi
23         fadd    %st(0)
24         fxch    %st(1)
25 2:      fprem1
26         fnstsw  %ax
27         andw    $0x400,%ax
28         jnz     2b
29         fstp    %st(1)
30         fsin
31         XMM_DOUBLE_EPILOGUE
32         ret