1/* $OpenBSD: s_floor.S,v 1.5 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(floor) 11 RETGUARD_SETUP(floor, r11) 12 movsd %xmm0, -8(%rsp) 13 fstcw -12(%rsp) 14 movw -12(%rsp),%dx 15 orw $0x0400,%dx 16 andw $0xf7ff,%dx 17 movw %dx,-16(%rsp) 18 fldcw -16(%rsp) 19 fldl -8(%rsp) 20 frndint 21 fldcw -12(%rsp) 22 fstpl -8(%rsp) 23 movsd -8(%rsp),%xmm0 24 RETGUARD_CHECK(floor, r11) 25 ret 26END_STD(floor) 27