1/* $OpenBSD: s_floorf.S,v 1.6 2018/07/03 22:43:34 mortimer Exp $ */ 2/* 3 * Written by J.T. Conklin <jtc@NetBSD.org>. 4 * Public domain. 5 */ 6 7#include <machine/asm.h> 8#include "abi.h" 9 10ENTRY(floorf) 11 RETGUARD_SETUP(floorf, r11) 12 movss %xmm0, -4(%rsp) 13 fstcw -8(%rsp) 14 movw -8(%rsp),%dx 15 orw $0x0400,%dx 16 andw $0xf7ff,%dx 17 movw %dx,-12(%rsp) 18 fldcw -12(%rsp) 19 flds -4(%rsp) 20 frndint 21 fldcw -8(%rsp) 22 fstps -4(%rsp) 23 movss -4(%rsp),%xmm0 24 RETGUARD_CHECK(floorf, r11) 25 ret 26END_STD(floorf) 27