From 72b4957811a01e73347ef8c0e747a9317dddf2e1 Mon Sep 17 00:00:00 2001 From: Jeroen Ruigrok/asmodai Date: Wed, 29 Dec 2004 12:55:50 +0000 Subject: [PATCH] Add more files to the architecture specific section. These include C99 functions. Taken from: NetBSD --- lib/msun/Makefile | 14 +++--- lib/msun/i387/e_atan2f.S | 21 +++++++++ lib/msun/i387/e_expf.S | 31 +++++++++++++ lib/msun/i387/e_log10f.S | 21 +++++++++ lib/msun/i387/e_logf.S | 21 +++++++++ lib/msun/i387/e_remainderf.S | 25 +++++++++++ lib/msun/i387/e_scalbf.S | 21 +++++++++ lib/msun/i387/e_sqrtf.S | 20 +++++++++ lib/msun/i387/s_atanf.S | 21 +++++++++ lib/msun/i387/s_ceilf.S | 46 ++++++++++++++++++++ lib/msun/i387/s_copysignf.S | 56 ++++++++++++++++++++++++ lib/msun/i387/s_cosf.S | 21 +++++++++ lib/msun/i387/s_finitef.S | 28 ++++++++++++ lib/msun/i387/s_floorf.S | 46 ++++++++++++++++++++ lib/msun/i387/s_ilogbf.S | 35 +++++++++++++++ lib/msun/i387/s_log1pf.S | 79 ++++++++++++++++++++++++++++++++++ lib/msun/i387/s_logbf.S | 21 +++++++++ lib/msun/i387/s_rintf.S | 20 +++++++++ lib/msun/i387/s_scalbnf.S | 22 ++++++++++ lib/msun/i387/s_significandf.S | 21 +++++++++ lib/msun/i387/s_sinf.S | 21 +++++++++ lib/msun/i387/s_tanf.S | 22 ++++++++++ 22 files changed, 628 insertions(+), 5 deletions(-) create mode 100644 lib/msun/i387/e_atan2f.S create mode 100644 lib/msun/i387/e_expf.S create mode 100644 lib/msun/i387/e_log10f.S create mode 100644 lib/msun/i387/e_logf.S create mode 100644 lib/msun/i387/e_remainderf.S create mode 100644 lib/msun/i387/e_scalbf.S create mode 100644 lib/msun/i387/e_sqrtf.S create mode 100644 lib/msun/i387/s_atanf.S create mode 100644 lib/msun/i387/s_ceilf.S create mode 100644 lib/msun/i387/s_copysignf.S create mode 100644 lib/msun/i387/s_cosf.S create mode 100644 lib/msun/i387/s_finitef.S create mode 100644 lib/msun/i387/s_floorf.S create mode 100644 lib/msun/i387/s_ilogbf.S create mode 100644 lib/msun/i387/s_log1pf.S create mode 100644 lib/msun/i387/s_logbf.S create mode 100644 lib/msun/i387/s_rintf.S create mode 100644 lib/msun/i387/s_scalbnf.S create mode 100644 lib/msun/i387/s_significandf.S create mode 100644 lib/msun/i387/s_sinf.S create mode 100644 lib/msun/i387/s_tanf.S diff --git a/lib/msun/Makefile b/lib/msun/Makefile index 2016ef2847..f9fba51a88 100644 --- a/lib/msun/Makefile +++ b/lib/msun/Makefile @@ -1,6 +1,6 @@ # @(#)Makefile 5.1beta 93/09/24 # $FreeBSD: src/lib/msun/Makefile,v 1.23.2.3 2002/07/22 14:21:50 ru Exp $ -# $DragonFly: src/lib/msun/Attic/Makefile,v 1.4 2004/12/29 10:40:09 asmodai Exp $ +# $DragonFly: src/lib/msun/Attic/Makefile,v 1.5 2004/12/29 12:55:50 asmodai Exp $ # # ==================================================== # Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. @@ -45,10 +45,14 @@ .if ${MACHINE_ARCH} == "i386" ARCH= i387 ARCH_PREFIX= ${ARCH}_ -ARCH_SRCS = e_acos.S e_asin.S e_atan2.S e_exp.S e_fmod.S e_log.S e_log10.S \ - e_remainder.S e_scalb.S e_sqrt.S s_atan.S s_ceil.S s_copysign.S \ - s_cos.S s_finite.S s_floor.S s_ilogb.S s_logb.S \ - s_rint.S s_scalbn.S s_significand.S s_sin.S s_tan.S +ARCH_SRCS = e_acos.S e_asin.S e_atan2.S e_atan2f.S e_exp.S e_expf.S e_fmod.S \ + e_log.S e_log10.S e_log10f.S e_logf.S e_remainder.S e_remainderf.S \ + e_scalb.S e_scalbf.S e_sqrt.S e_sqrtf.S s_atan.S s_atanf.S \ + s_ceil.S s_ceilf.S s_copysign.S s_copysignf.S s_cos.S s_cosf.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 .endif # Broken diff --git a/lib/msun/i387/e_atan2f.S b/lib/msun/i387/e_atan2f.S new file mode 100644 index 0000000000..3a20e253f4 --- /dev/null +++ b/lib/msun/i387/e_atan2f.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: e_atan2f.S,v 1.2 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_atan2f.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(__ieee754_atan2f) + XMM_TWO_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + flds ARG_FLOAT_TWO + fpatan + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/e_expf.S b/lib/msun/i387/e_expf.S new file mode 100644 index 0000000000..6d22538ca2 --- /dev/null +++ b/lib/msun/i387/e_expf.S @@ -0,0 +1,31 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: e_expf.S,v 1.4 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_expf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +/* e^x = 2^(x * log2(e)) */ +ENTRY(__ieee754_expf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fldl2e + fmulp /* x * log2(e) */ + fld %st(0) + frndint /* int(x * log2(e)) */ + fsubr %st(0),%st(1) /* fract(x * log2(e)) */ + fxch + f2xm1 /* 2^(fract(x * log2(e))) - 1 */ + fld1 + faddp /* 2^(fract(x * log2(e))) */ + fscale /* e^x */ + fstp %st(1) + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/e_log10f.S b/lib/msun/i387/e_log10f.S new file mode 100644 index 0000000000..843ea0b745 --- /dev/null +++ b/lib/msun/i387/e_log10f.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: e_log10f.S,v 1.2 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_log10f.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(__ieee754_log10f) + XMM_ONE_ARG_FLOAT_PROLOGUE + fldlg2 + flds ARG_FLOAT_ONE + fyl2x + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/e_logf.S b/lib/msun/i387/e_logf.S new file mode 100644 index 0000000000..1877247beb --- /dev/null +++ b/lib/msun/i387/e_logf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: e_logf.S,v 1.3 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_logf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(__ieee754_logf) + XMM_ONE_ARG_FLOAT_PROLOGUE + fldln2 + flds ARG_FLOAT_ONE + fyl2x + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/e_remainderf.S b/lib/msun/i387/e_remainderf.S new file mode 100644 index 0000000000..687d8cda59 --- /dev/null +++ b/lib/msun/i387/e_remainderf.S @@ -0,0 +1,25 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: e_remainderf.S,v 1.4 2001/06/25 16:47:05 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_remainderf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(__ieee754_remainderf) + XMM_TWO_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_TWO + flds ARG_FLOAT_ONE +1: fprem1 + fstsw %ax + btw $10,%ax + jc 1b + fstp %st(1) + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/e_scalbf.S b/lib/msun/i387/e_scalbf.S new file mode 100644 index 0000000000..78005b6ac7 --- /dev/null +++ b/lib/msun/i387/e_scalbf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: e_scalbf.S,v 1.2 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_scalbf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(__ieee754_scalbf) + XMM_TWO_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_TWO + flds ARG_FLOAT_ONE + fscale + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/e_sqrtf.S b/lib/msun/i387/e_sqrtf.S new file mode 100644 index 0000000000..822e8fd0a7 --- /dev/null +++ b/lib/msun/i387/e_sqrtf.S @@ -0,0 +1,20 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#if 0 +RCSID("$NetBSD: e_sqrtf.S,v 1.3 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/e_sqrtf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(__ieee754_sqrtf) +#ifdef __i386__ + flds 4(%esp) + fsqrt +#else + sqrtss %xmm0,%xmm0 +#endif + ret diff --git a/lib/msun/i387/s_atanf.S b/lib/msun/i387/s_atanf.S new file mode 100644 index 0000000000..5653bed150 --- /dev/null +++ b/lib/msun/i387/s_atanf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_atanf.S,v 1.4 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_atanf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(atanf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fld1 + fpatan + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_ceilf.S b/lib/msun/i387/s_ceilf.S new file mode 100644 index 0000000000..9f5c2a945f --- /dev/null +++ b/lib/msun/i387/s_ceilf.S @@ -0,0 +1,46 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#if 0 +RCSID("$NetBSD: s_ceilf.S,v 1.7 2003/07/26 19:25:01 salo Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_ceilf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(ceilf) +#ifdef __i386__ + pushl %ebp + movl %esp,%ebp + subl $8,%esp + + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx + orw $0x0800,%dx /* round towards +oo */ + andw $0xfbff,%dx + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ + + flds 8(%ebp); /* round */ + frndint + + fldcw -4(%ebp) /* restore original control word */ + + leave +#else + fstcw -8(%rsp) + movw -8(%rsp),%dx + orw $0x0800,%dx + andw $0xfbff,%dx + movw %dx,-12(%rsp) + fldcw -12(%rsp) + movss %xmm0,-4(%rsp) + flds -4(%rsp) + frndint + fldcw -8(%rsp) + fstps -4(%rsp) + movss -4(%rsp),%xmm0 +#endif + ret diff --git a/lib/msun/i387/s_copysignf.S b/lib/msun/i387/s_copysignf.S new file mode 100644 index 0000000000..e3914b0e07 --- /dev/null +++ b/lib/msun/i387/s_copysignf.S @@ -0,0 +1,56 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +/* + * XXXfvdl split this file. + */ + +#if 0 +RCSID("$NetBSD: s_copysignf.S,v 1.4 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_copysignf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +#ifdef __x86_64__ +.Lneg: + .long 0x7fffffff +.Lpos: + .long 0x80000000 +#endif + +ENTRY(copysignf) +#ifdef __i386__ + movl 8(%esp),%edx + andl $0x80000000,%edx + movl 4(%esp),%eax + andl $0x7fffffff,%eax + orl %edx,%eax + movl %eax,4(%esp) + flds 4(%esp) +#else +#if 0 + /* + * XXXfvdl gas doesn't grok this. + * but it's legal according to the p4 manual. + */ + movss .Lpos(%rip),%xmm2 + movss .Lneg(%rip),%xmm3 + pandq %xmm2,%xmm1 + pandq %xmm3,%xmm0 + porq %xmm1,%xmm0 +#else + movss %xmm0,-4(%rsp) + movss %xmm1,-8(%rsp) + movl -8(%rsp),%edx + andl $0x80000000,%edx + movl -4(%rsp),%eax + andl $0x7fffffff,%eax + orl %edx,%eax + movl %eax,-4(%rsp) + movss -4(%rsp),%xmm0 +#endif +#endif + ret diff --git a/lib/msun/i387/s_cosf.S b/lib/msun/i387/s_cosf.S new file mode 100644 index 0000000000..a87e6f5748 --- /dev/null +++ b/lib/msun/i387/s_cosf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_cosf.S,v 1.5 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_cosf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +/* A float's domain isn't large enough to require argument reduction. */ +ENTRY(cosf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fcos + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_finitef.S b/lib/msun/i387/s_finitef.S new file mode 100644 index 0000000000..02f5acf2ed --- /dev/null +++ b/lib/msun/i387/s_finitef.S @@ -0,0 +1,28 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#if 0 +RCSID("$NetBSD: s_finitef.S,v 1.5 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_finitef.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(finitef) +#ifdef __i386__ + movl 4(%esp),%eax + andl $0x7f800000, %eax + cmpl $0x7f800000, %eax + setne %al + andl $0x000000ff, %eax +#else + xorl %eax,%eax + movl $0x7ff00000,%esi + movss %xmm0,-4(%rsp) + andl -4(%rsp),%esi + cmpl $0x7ff00000,%esi + setne %al +#endif + ret diff --git a/lib/msun/i387/s_floorf.S b/lib/msun/i387/s_floorf.S new file mode 100644 index 0000000000..b451bc0723 --- /dev/null +++ b/lib/msun/i387/s_floorf.S @@ -0,0 +1,46 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#if 0 +RCSID("$NetBSD: s_floorf.S,v 1.6 2003/07/26 19:25:02 salo Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_floorf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(floorf) +#ifdef __i386__ + pushl %ebp + movl %esp,%ebp + subl $8,%esp + + fstcw -4(%ebp) /* store fpu control word */ + movw -4(%ebp),%dx + orw $0x0400,%dx /* round towards -oo */ + andw $0xf7ff,%dx + movw %dx,-8(%ebp) + fldcw -8(%ebp) /* load modfied control word */ + + flds 8(%ebp); /* round */ + frndint + + fldcw -4(%ebp) /* restore original control word */ + + leave +#else + movss %xmm0, -4(%rsp) + fstcw -8(%rsp) + movw -8(%rsp),%dx + orw $0x0400,%dx + andw $0xf7ff,%dx + movw %dx,-12(%rsp) + fldcw -12(%rsp) + flds -4(%rsp) + frndint + fldcw -8(%rsp) + fstps -4(%rsp) + movss -4(%rsp),%xmm0 +#endif + ret diff --git a/lib/msun/i387/s_ilogbf.S b/lib/msun/i387/s_ilogbf.S new file mode 100644 index 0000000000..cfa5f33b7b --- /dev/null +++ b/lib/msun/i387/s_ilogbf.S @@ -0,0 +1,35 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#if 0 +RCSID("$NetBSD: s_ilogbf.S,v 1.5 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_ilogbf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(ilogbf) +#ifdef __i386__ + pushl %ebp + movl %esp,%ebp + subl $4,%esp + + flds 8(%ebp) + fxtract + fstp %st + + fistpl -4(%ebp) + movl -4(%ebp),%eax + + leave +#else + movss %xmm0,-4(%rsp) + flds -4(%rsp) + fxtract + fstp %st + fistpl -4(%rsp) + movl -4(%rsp),%eax +#endif + ret diff --git a/lib/msun/i387/s_log1pf.S b/lib/msun/i387/s_log1pf.S new file mode 100644 index 0000000000..2c704e28f5 --- /dev/null +++ b/lib/msun/i387/s_log1pf.S @@ -0,0 +1,79 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +/* + * Modified by Lex Wennmacher + * Still public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD$") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_log1pf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +/* + * The log1pf() function is provided to compute an accurate value of + * log(1 + x), even for tiny values of x. The i387 FPU provides the + * fyl2xp1 instruction for this purpose. However, the range of this + * instruction is limited to: + * -(1 - (sqrt(2) / 2)) <= x <= sqrt(2) - 1 + * -0.292893 <= x <= 0.414214 + * at least on older processor versions. + * + * log1pf() is implemented by testing the range of the argument. + * If it is appropriate for fyl2xp1, this instruction is used. + * Else, we compute log1pf(x) = ln(2)*ld(1 + x) the traditional way + * (using fyl2x). + * + * The range testing costs speed, but as the rationale for the very + * existence of this function is accuracy, we accept that. + * + * In order to reduce the cost for testing the range, we check if + * the argument is in the range + * -0.25 <= x <= 0.25 + * which can be done with just one conditional branch. If x is + * inside this range, we use fyl2xp1. Outside of this range, + * the use of fyl2x is accurate enough. + * + */ + +.text + .align 4 +ENTRY(log1pf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fabs + fld1 /* ... x 1 */ + fadd %st(0) /* ... x 2 */ + fadd %st(0) /* ... x 4 */ + fld1 /* ... 4 1 */ + fdivp /* ... x 0.25 */ + fcompp + fnstsw %ax + andb $69,%ah + jne use_fyl2x + jmp use_fyl2xp1 + + .align 4 +use_fyl2x: + fldln2 + flds ARG_FLOAT_ONE + fld1 + faddp + fyl2x + XMM_FLOAT_EPILOGUE + ret + + .align 4 +use_fyl2xp1: + fldln2 + flds ARG_FLOAT_ONE + fyl2xp1 + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_logbf.S b/lib/msun/i387/s_logbf.S new file mode 100644 index 0000000000..2fddeaddcc --- /dev/null +++ b/lib/msun/i387/s_logbf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_logbf.S,v 1.4 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_logbf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(logbf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fxtract + fstp %st + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_rintf.S b/lib/msun/i387/s_rintf.S new file mode 100644 index 0000000000..b0be4c177e --- /dev/null +++ b/lib/msun/i387/s_rintf.S @@ -0,0 +1,20 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_rintf.S,v 1.4 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_rintf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(rintf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + frndint + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_scalbnf.S b/lib/msun/i387/s_scalbnf.S new file mode 100644 index 0000000000..dc64293ef7 --- /dev/null +++ b/lib/msun/i387/s_scalbnf.S @@ -0,0 +1,22 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_scalbnf.S,v 1.5 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_scalbnf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(scalbnf) + XMM_TWO_ARG_FLOAT_PROLOGUE + fildl ARG_FLOAT_TWO + flds ARG_FLOAT_ONE + fscale + fstp %st(1) /* bug fix for fp stack overflow */ + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_significandf.S b/lib/msun/i387/s_significandf.S new file mode 100644 index 0000000000..7dcebd82a1 --- /dev/null +++ b/lib/msun/i387/s_significandf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_significandf.S,v 1.4 2001/06/19 00:26:30 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_significandf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +ENTRY(significandf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fxtract + fstp %st(1) + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_sinf.S b/lib/msun/i387/s_sinf.S new file mode 100644 index 0000000000..99963191c9 --- /dev/null +++ b/lib/msun/i387/s_sinf.S @@ -0,0 +1,21 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_sinf.S,v 1.4 2001/06/19 00:26:31 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_sinf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +/* A float's domain isn't large enough to require argument reduction. */ +ENTRY(sinf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fsin + XMM_FLOAT_EPILOGUE + ret diff --git a/lib/msun/i387/s_tanf.S b/lib/msun/i387/s_tanf.S new file mode 100644 index 0000000000..ec0e1e1349 --- /dev/null +++ b/lib/msun/i387/s_tanf.S @@ -0,0 +1,22 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +#include "abi.h" + +#if 0 +RCSID("$NetBSD: s_tanf.S,v 1.4 2001/06/19 00:26:31 fvdl Exp $") +#endif +RCSID("$DragonFly: src/lib/msun/i387/Attic/s_tanf.S,v 1.1 2004/12/29 12:55:50 asmodai Exp $") + +/* A float's domain isn't large enough to require argument reduction. */ +ENTRY(tanf) + XMM_ONE_ARG_FLOAT_PROLOGUE + flds ARG_FLOAT_ONE + fptan + fstp %st(0) + XMM_FLOAT_EPILOGUE + ret -- 2.41.0