sortix-mirror/libm/arch/x86_64/flt_rounds.S
Jonas 'Sortie' Termansen 5980be9b3c Add Sortix Math Library.
This work is based in part on code from NetBSD libm, libc and kernel.

The library is partly public domain and partly BSD-style licensed.
2013-12-17 14:30:39 +01:00

22 lines
432 B
ArmAsm

/* $NetBSD: flt_rounds.S,v 1.6 2011/09/30 17:42:34 christos Exp $ */
#include <machine/asm.h>
/*
* 00 0 round to zero
* 01 1 round to nearest
* 10 2 round to positive infinity
* 11 3 round to negative infinity
*/
.text
_ALIGN_TEXT
ENTRY(__flt_rounds)
fnstcw -4(%rsp)
movl -4(%rsp), %ecx
shrl $9, %ecx
andl $6, %ecx
movl $0x2d, %eax /* 0x2d = 00.10.11.01 */
sarl %cl, %eax /* 0,1,2,3 -> 1,3,2,0 */
andl $3, %eax
ret