Cygwin: pinfo: use stpcpy where appropriate
[newlib-cygwin.git] / winsup / cygwin / math / sinl_internal.S
blob6d766b098d52b3ddb85bfaaba94c7e18b7ab69a5
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #include <_mingw_mac.h>
8         .file   "sinl_internal.S"
9         .text
10 #ifdef __x86_64__
11         .align 8
12 #else
13         .align 4
14 #endif
15 .globl __MINGW_USYMBOL(__sinl_internal)
16         .def    __MINGW_USYMBOL(__sinl_internal);       .scl    2;      .type   32;     .endef
17 __MINGW_USYMBOL(__sinl_internal):
18 #ifdef __x86_64__
19         fldt    (%rdx)
20         fsin
21         fnstsw  %ax
22         testl   $0x400,%eax
23         jnz     1f
24         movq    %rcx,%rax
25         movq    $0,8(%rcx)
26         fstpt   (%rcx)
27         ret
28 1:      fldpi
29         fadd    %st(0)
30         fxch    %st(1)
31 2:      fprem1
32         fnstsw  %ax
33         testl   $0x400,%eax
34         jnz     2b
35         fstp    %st(1)
36         fsin
37         movq    %rcx,%rax
38         movq    $0,8(%rcx)
39         fstpt   (%rcx)
40         ret
41 #else
42         fldt    4(%esp)
43         fsin
44         fnstsw  %ax
45         testl   $0x400,%eax
46         jnz     1f
47         ret
48 1:      fldpi
49         fadd    %st(0)
50         fxch    %st(1)
51 2:      fprem1
52         fnstsw  %ax
53         testl   $0x400,%eax
54         jnz     2b
55         fstp    %st(1)
56         fsin
57         ret
58 #endif