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/floorf.S
parent840e611264ac6ad7d41bc0b275945f50067cda50 (diff)
Add incomplet long double math support to libmingwex.a
Diffstat (limited to 'winsup/mingw/mingwex/math/floorf.S')
-rw-r--r--winsup/mingw/mingwex/math/floorf.S35
1 files changed, 35 insertions, 0 deletions
diff --git a/winsup/mingw/mingwex/math/floorf.S b/winsup/mingw/mingwex/math/floorf.S
new file mode 100644
index 000000000..8ae8100a7
--- /dev/null
+++ b/winsup/mingw/mingwex/math/floorf.S
@@ -0,0 +1,35 @@
+/*
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
+ *
+ * Changes for long double by Ulrich Drepper <drepper@cygnus.com>
+ *
+ * Removed header file dependency for use in libmingwex.a by
+ * Danny Smith <dannysmith@users.sourceforge.net>
+ */
+ .file "floorf.S"
+ .text
+ .align 4
+.globl _floorf
+ .def _floorf; .scl 2; .type 32; .endef
+_floorf:
+ flds 4(%esp)
+ subl $8,%esp
+
+ fstcw 4(%esp) /* store fpu control word */
+
+ /* We use here %edx although only the low 1 bits are defined.
+ But none of the operations should care and they are faster
+ than the 16 bit operations. */
+ movl $0x400,%edx /* round towards -oo */
+ orl 4(%esp),%edx
+ andl $0xf7ff,%edx
+ movl %edx,(%esp)
+ fldcw (%esp) /* load modified control word */
+
+ frndint /* round */
+
+ fldcw 4(%esp) /* restore original control word */
+
+ addl $8,%esp
+ ret