Update.
[jlayton/glibc.git] / sysdeps / libm-i387 / s_remquo.S
1 /*
2  * Written by Ulrich Drepper <drepper@cygnus.com>.
3  * Based on e_remainder by J.T. Conklin <jtc@netbsd.org>.
4  * Public domain.
5  */
6
7 #include <machine/asm.h>
8
9 ENTRY(__remquo)
10         fldl    12(%esp)
11         fldl    4(%esp)
12 1:      fprem1
13         fstsw   %ax
14         sahf
15         jp      1b
16         fstp    %st(1)
17         /* Compute the congruent of the quotient.  */
18         movl    %eax, %ecx
19         shrl    $8, %eax
20         shrl    $12, %ecx
21         andl    $4, %ecx
22         andl    $3, %eax
23         orl     %eax, %ecx
24         movl    $0xef2960, %eax
25         shrl    %cl, %eax
26         andl    $3, %eax
27         movl    20(%esp), %ecx
28         movl    8(%esp), %edx
29         xorl    16(%esp), %edx
30         testl   $0x80000000, %edx
31         jz      1f
32         negl    %eax
33 1:      movl    %eax, (%ecx)
34         ret
35 END (__remquo)
36 weak_alias (__remquo, remquo)