From af7cf00a5a3fef576bacfeaa85b215fd6d67447c Mon Sep 17 00:00:00 2001 From: drochner Date: Thu, 1 Jul 2004 17:30:48 +0000 Subject: provide an assembler implementation of lrint() for i386 and amd64 --- lib/libm/arch/i387/Makefile | 5 +++-- lib/libm/arch/i387/lrint.S | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 lib/libm/arch/i387/lrint.S (limited to 'lib') diff --git a/lib/libm/arch/i387/Makefile b/lib/libm/arch/i387/Makefile index 9068bcd197b..93aaebad906 100644 --- a/lib/libm/arch/i387/Makefile +++ b/lib/libm/arch/i387/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.4 2002/08/19 14:55:16 lukem Exp $ +# $NetBSD: Makefile,v 1.5 2004/07/01 17:30:48 drochner Exp $ # NOLINT= # defined @@ -13,6 +13,7 @@ SRCS=e_acos.S e_asin.S e_atan2.S e_exp.S e_expf.S e_fmod.S e_log.S \ s_finite.S s_finitef.S s_floor.S s_floorf.S s_ilogb.S s_ilogbf.S \ s_log1p.S s_log1pf.S s_logb.S s_logbf.S s_rint.S s_rintf.S \ s_scalbn.S s_scalbnf.S s_significand.S s_significandf.S s_sin.S \ - s_sinf.S s_tan.S s_tanf.S + s_sinf.S s_tan.S s_tanf.S \ + lrint.S .include diff --git a/lib/libm/arch/i387/lrint.S b/lib/libm/arch/i387/lrint.S new file mode 100644 index 00000000000..9f3ba1d50fa --- /dev/null +++ b/lib/libm/arch/i387/lrint.S @@ -0,0 +1,18 @@ +/* $NetBSD: lrint.S,v 1.1 2004/07/01 17:30:48 drochner Exp $ */ + +#include + +ENTRY(lrint) +#ifdef __i386__ + pushl %ebp + movl %esp,%ebp + subl $4,%esp + fldl 8(%ebp) + fistpl (%esp) + movl (%esp),%eax + leave + ret +#else + cvtsd2siq %xmm0,%rax + ret +#endif -- cgit reecommitdiff
AgeCommit message (Expand)Author
2011-11-06moved because we cannot have multiple FILESDIRchristos