reactos/lib/sdk/crt/math/i386/floorf.S
Cameron Gutman c2d0d784c7 [USB-BRINGUP-TRUNK]
- Create a branch to do a proper merge of USB work from a trunk base instead of from cmake-bringup
- In the future, DO NOT under any circumstances branch another branch. This leads to merge problems!

svn path=/branches/usb-bringup-trunk/; revision=55018
2012-01-20 20:58:46 +00:00

41 lines
819 B
ArmAsm

/*
* 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>
*/
#include <asm.inc>
.code
.align 4
PUBLIC _floorf
_floorf:
fld dword ptr [esp + 4]
sub esp, 8
fstcw [esp + 4] /* 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. */
mov edx, [esp + 4]
or edx, HEX(0400) /* round towards -oo */
and edx, HEX(0f7ff)
mov [esp], edx
fldcw [esp] /* load modified control word */
frndint /* round */
fldcw [esp + 4] /* restore original control word */
add esp, 8
ret
END