xref: /dflybsd-src/contrib/openbsd_libm/arch/amd64/s_floorf.S (revision a27bb01fb90c87959b0c0dfacf7dd85d1308a35f)
105a0b428SJohn Marino/*	$OpenBSD: s_floorf.S,v 1.4 2009/04/08 22:30:41 martynas Exp $ */
205a0b428SJohn Marino/*
305a0b428SJohn Marino * Written by J.T. Conklin <jtc@NetBSD.org>.
405a0b428SJohn Marino * Public domain.
505a0b428SJohn Marino */
605a0b428SJohn Marino
705a0b428SJohn Marino#include <machine/asm.h>
805a0b428SJohn Marino
905a0b428SJohn MarinoENTRY(floorf)
1005a0b428SJohn Marino	movss	%xmm0, -4(%rsp)
1105a0b428SJohn Marino	fstcw	-8(%rsp)
1205a0b428SJohn Marino	movw	-8(%rsp),%dx
1305a0b428SJohn Marino	orw	$0x0400,%dx
1405a0b428SJohn Marino	andw	$0xf7ff,%dx
1505a0b428SJohn Marino	movw	%dx,-12(%rsp)
1605a0b428SJohn Marino	fldcw	-12(%rsp)
1705a0b428SJohn Marino	flds	-4(%rsp)
1805a0b428SJohn Marino	frndint
1905a0b428SJohn Marino	fldcw	-8(%rsp)
2005a0b428SJohn Marino	fstps	-4(%rsp)
2105a0b428SJohn Marino	movss	-4(%rsp),%xmm0
2205a0b428SJohn Marino	ret
23*a27bb01fSJohn MarinoEND(floorf)
24*a27bb01fSJohn Marino
25*a27bb01fSJohn Marino	.section .note.GNU-stack,"",%progbits
26