xref: /dragonfly/contrib/openbsd_libm/arch/amd64/s_floorf.S (revision a27bb01fb90c87959b0c0dfacf7dd85d1308a35f)
1/*        $OpenBSD: s_floorf.S,v 1.4 2009/04/08 22:30:41 martynas Exp $ */
2/*
3 * Written by J.T. Conklin <jtc@NetBSD.org>.
4 * Public domain.
5 */
6
7#include <machine/asm.h>
8
9ENTRY(floorf)
10          movss     %xmm0, -4(%rsp)
11          fstcw     -8(%rsp)
12          movw      -8(%rsp),%dx
13          orw       $0x0400,%dx
14          andw      $0xf7ff,%dx
15          movw      %dx,-12(%rsp)
16          fldcw     -12(%rsp)
17          flds      -4(%rsp)
18          frndint
19          fldcw     -8(%rsp)
20          fstps     -4(%rsp)
21          movss     -4(%rsp),%xmm0
22          ret
23END(floorf)
24
25          .section .note.GNU-stack,"",%progbits
26