Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDanny Smith <dannysmith@users.sourceforge.net>2002-07-29 07:00:10 +0400
committerDanny Smith <dannysmith@users.sourceforge.net>2002-07-29 07:00:10 +0400
commitb8cdc234c67d883b7e9d6e4caf4ba15972ac7788 (patch)
treee45d96d2d976020ad018e6e919bbeae2500e884a /winsup/mingw/mingwex/math/ilogbf.S
parent840e611264ac6ad7d41bc0b275945f50067cda50 (diff)
Add incomplet long double math support to libmingwex.a
Diffstat (limited to 'winsup/mingw/mingwex/math/ilogbf.S')
-rw-r--r--winsup/mingw/mingwex/math/ilogbf.S35
1 files changed, 35 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/math/ilogbf.S b/winsup/mingw/mingwex/math/ilogbf.S
new file mode 100644
index 000000000..fa3e78e84
--- /dev/null
+++ b/winsup/mingw/mingwex/math/ilogbf.S
@@ -0,0 +1,35 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
+ */
+
+ .file "ilogbf.S"
+ .text
+ .align 4
+.globl _ilogbf
+ .def _ilogbf; .scl 2; .type 32; .endef
+_ilogbf:
+ flds 4(%esp)
+/* I added the following ugly construct because ilogb(+-Inf) is
+ required to return INT_MAX in ISO C99.
+ -- jakub@redhat.com. */
+ fxam /* Is NaN or +-Inf? */
+ fstsw %ax
+ movb $0x45, %dh
+ andb %ah, %dh
+ cmpb $0x05, %dh
+ je 1f /* Is +-Inf, jump. */
+
+ fxtract
+ pushl %eax
+ fstp %st
+
+ fistpl (%esp)
+ fwait
+ popl %eax
+
+ ret
+
+1: fstp %st
+ movl $0x7fffffff, %eax
+ ret