@@ -9,13 +9,23 @@
//__FBSDID("$FreeBSD: src/lib/msun/amd64/e_remainderl.S,v 1.2 2011/01/07 16:13:12 kib Exp $")
ENTRY(remainderl)
+#ifndef _WIN64
fldt 24(%rsp)
fldt 8(%rsp)
+#else
+ fldt (%r8)
+ fldt (%rdx)
+#endif
1: fprem1
fstsw %ax
testw $0x400,%ax
jne 1b
fstp %st(1)
+#ifdef _WIN64
+ mov %rcx,%rax
+ movq $0x0,0x8(%rcx)
+ fstpt (%rcx)
ret
@@ -28,8 +28,15 @@
//__FBSDID("$FreeBSD: src/lib/msun/amd64/e_sqrtl.S,v 1.2 2011/01/07 16:13:12 kib Exp $")
ENTRY(sqrtl)
fsqrt
+ fsqrt
-
@@ -1,6 +1,8 @@
#include <amd64/bsd_asm.h>
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_llrint.S,v 1.3 2011/02/04 21:54:06 kib Exp $")
-/* sizeof(long) == sizeof(long long) */
-#define fn llrint
-#include "s_lrint.S"
+ENTRY(llrint)
+ cvtsd2si %xmm0, %rax
+ ret
+END(llrint)
+
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_llrintf.S,v 1.3 2011/02/04 21:54:06 kib Exp $")
-#define fn llrintf
-#include "s_lrintf.S"
+ENTRY(llrintf)
+ cvtss2si %xmm0, %rax
+END(llrintf)
@@ -28,10 +28,14 @@
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_llrintl.S,v 1.2 2011/01/07 16:13:12 kib Exp $");
ENTRY(llrintl)
+ fldt (%rcx)
subq $8,%rsp
fistpll (%rsp)
popq %rax
@@ -8,9 +8,18 @@
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_logbl.S,v 1.4 2011/01/07 16:13:12 kib Exp $")
ENTRY(logbl)
fxtract
fstp %st
@@ -26,14 +26,15 @@
-#ifndef fn
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_lrint.S,v 1.3 2011/01/07 16:13:12 kib Exp $")
-#define fn lrint
-#endif
-ENTRY(fn)
+ENTRY(lrint)
cvtsd2si %xmm0, %rax
+ cvtsd2si %xmm0, %eax
-END(fn)
+END(lrint)
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_lrintf.S,v 1.3 2011/01/07 16:13:12 kib Exp $")
-#define fn lrintf
+ENTRY(lrintf)
cvtss2si %xmm0, %rax
+ cvtss2si %xmm0, %eax
+END(lrintf)
@@ -28,7 +28,11 @@
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_lrintl.S,v 1.2 2011/01/07 16:13:12 kib Exp $");
ENTRY(lrintl)
@@ -59,7 +59,11 @@ ENTRY(remquo)
andl $1,%ecx
addl %ecx,%eax
/* Store the quotient and return. */
movl %eax,(%rdi)
+ movl %eax,(%r8)
fstpl -8(%rsp)
movsd -8(%rsp),%xmm0
@@ -59,7 +59,11 @@ ENTRY(remquof)
fstps -4(%rsp)
movss -4(%rsp),%xmm0
@@ -32,8 +32,14 @@
//__FBSDID("$FreeBSD: src/lib/msun/amd64/s_remquol.S,v 1.2 2011/01/07 16:13:12 kib Exp $");
ENTRY(remquol)
+ mov %rcx,%r8
btw $10,%ax
@@ -58,7 +64,14 @@ ENTRY(remquol)
+ movl %eax,(%r9)
+ mov %r8,%rax
+ movq $0x0,0x8(%r8)
+ fstpt (%r8)
@@ -7,8 +7,16 @@
ENTRY(rintl)
frndint
+ frndint
@@ -29,7 +29,11 @@
ENTRY(scalbn)
movsd %xmm0,-8(%rsp)
movl %edi,-12(%rsp)
+ movl %edx,-12(%rsp)
fildl -12(%rsp)
fldl -8(%rsp)
fscale
ENTRY(scalbnf)
movss %xmm0,-8(%rsp)
movl %edi,-4(%rsp)
+ movl %edx,-4(%rsp)
fildl -4(%rsp)
flds -8(%rsp)
@@ -8,11 +8,23 @@
/* //RCSID("$NetBSD: s_scalbnf.S,v 1.4 1999/01/02 05:15:40 kristerw Exp $") */
ENTRY(scalbnl)
+ movl %eax,-4(%rsp)
+ fildl -4(%rsp)
END(scalbnl)