CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: maya Date: Fri Apr 26 10:11:14 UTC 2019 Removed Files: src/lib/libm/arch/i387: s_cos.S s_cosf.S s_ilogb.S s_ilogbf.S s_modf.S s_sin.S s_sinf.S s_tan.S s_tanf.S Log Message: Remove unused 387 implementations. These were removed from the build for being wrong, but the implementation stayed around. This is confusing, we have the attic for old code, let's delete the unused implementations. To generate a diff of this commit: cvs rdiff -u -r1.8 -r0 src/lib/libm/arch/i387/s_cos.S cvs rdiff -u -r1.6 -r0 src/lib/libm/arch/i387/s_cosf.S \ src/lib/libm/arch/i387/s_ilogbf.S cvs rdiff -u -r1.7 -r0 src/lib/libm/arch/i387/s_ilogb.S \ src/lib/libm/arch/i387/s_sin.S src/lib/libm/arch/i387/s_tan.S cvs rdiff -u -r1.1 -r0 src/lib/libm/arch/i387/s_modf.S cvs rdiff -u -r1.5 -r0 src/lib/libm/arch/i387/s_sinf.S \ src/lib/libm/arch/i387/s_tanf.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: christos Date: Thu Jan 25 03:54:21 UTC 2018 Modified Files: src/lib/libm/arch/i387: fenv.c Log Message: use named initializers To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libm/arch/i387/fenv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/fenv.c diff -u src/lib/libm/arch/i387/fenv.c:1.8 src/lib/libm/arch/i387/fenv.c:1.9 --- src/lib/libm/arch/i387/fenv.c:1.8 Wed Mar 22 19:11:08 2017 +++ src/lib/libm/arch/i387/fenv.c Wed Jan 24 22:54:21 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: fenv.c,v 1.8 2017/03/22 23:11:08 chs Exp $ */ +/* $NetBSD: fenv.c,v 1.9 2018/01/25 03:54:21 christos Exp $ */ /*- * Copyright (c) 2004-2005 David Schultz @@ -27,7 +27,7 @@ */ #include -__RCSID("$NetBSD: fenv.c,v 1.8 2017/03/22 23:11:08 chs Exp $"); +__RCSID("$NetBSD: fenv.c,v 1.9 2018/01/25 03:54:21 christos Exp $"); #include "namespace.h" @@ -106,19 +106,18 @@ __weak_alias(feupdateenv,_feupdateenv) * consumers of FE_DFL_ENV, during runtime. */ fenv_t __fe_dfl_env = { - { - __NetBSD_NPXCW__, /* Control word register */ - 0x0, /* Unused */ - 0x, /* Status word register */ - 0x0, /* Unused */ - 0x, /* Tag word register */ - 0x0, /* Unused */ - { - 0x, 0x, - 0x, 0x + .x87 = { + .control = __NetBSD_NPXCW__,/* Control word register */ + .unused1 = 0, /* Unused */ + .status = 0, /* Status word register */ + .unused2 = 0, /* Unused */ + .tag = 0x, /* Tag word register */ + .unused3 = 0, /* Unused */ + .others = { + 0, 0, 0, 0x, } }, - __INITIAL_MXCSR__ /* MXCSR register */ + .mxcsr = __INITIAL_MXCSR__ /* MXCSR register */ }; /*
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: christos Date: Wed Feb 17 19:54:11 UTC 2016 Modified Files: src/lib/libm/arch/i387: fenv.c Log Message: PR/50822: David Binderman: Fix copy length. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libm/arch/i387/fenv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/fenv.c diff -u src/lib/libm/arch/i387/fenv.c:1.6 src/lib/libm/arch/i387/fenv.c:1.7 --- src/lib/libm/arch/i387/fenv.c:1.6 Sun Nov 10 19:31:51 2013 +++ src/lib/libm/arch/i387/fenv.c Wed Feb 17 14:54:11 2016 @@ -1,4 +1,4 @@ -/* $NetBSD: fenv.c,v 1.6 2013/11/11 00:31:51 joerg Exp $ */ +/* $NetBSD: fenv.c,v 1.7 2016/02/17 19:54:11 christos Exp $ */ /*- * Copyright (c) 2004-2005 David Schultz @@ -27,7 +27,7 @@ */ #include -__RCSID("$NetBSD: fenv.c,v 1.6 2013/11/11 00:31:51 joerg Exp $"); +__RCSID("$NetBSD: fenv.c,v 1.7 2016/02/17 19:54:11 christos Exp $"); #include #include @@ -400,9 +400,8 @@ fesetenv(const fenv_t *envp) __fe_dfl_env.x87.unused1 = env.x87.unused1; __fe_dfl_env.x87.unused2 = env.x87.unused2; __fe_dfl_env.x87.unused3 = env.x87.unused3; - memcpy(__fe_dfl_env.x87.others, - env.x87.others, - sizeof(__fe_dfl_env.x87.others) / sizeof(uint32_t)); + memcpy(__fe_dfl_env.x87.others, env.x87.others, + sizeof(__fe_dfl_env.x87.others)); __fldenv(envp->x87); if (__HAS_SSE) @@ -436,9 +435,8 @@ feupdateenv(const fenv_t *envp) __fe_dfl_env.x87.unused1 = env.x87.unused1; __fe_dfl_env.x87.unused2 = env.x87.unused2; __fe_dfl_env.x87.unused3 = env.x87.unused3; - memcpy(__fe_dfl_env.x87.others, - env.x87.others, - sizeof(__fe_dfl_env.x87.others) / sizeof(uint32_t)); + memcpy(__fe_dfl_env.x87.others, env.x87.others, + sizeof(__fe_dfl_env.x87.others)); __fnstsw(&status); if (__HAS_SSE)
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: dsl Date: Mon Mar 3 08:00:50 UTC 2014 Modified Files: src/lib/libm/arch/i387: e_acos.S Log Message: Drop in a fabs() after the fsqrt(). While it may seem pointless, it the rouding mode is set to round towards minus infinity then acos(-1) calculates atan2(sqrt(1.0 - 1.0), -1) the subtract generates -0.0 which sqrt() preserves. atan2(-0, -1) is -pi, but acos(-1) is expected to be +pi. This might 'fix' the test failures seen in some environments, but they are not failing due to an obvously incorrent x87 rounding mode. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/lib/libm/arch/i387/e_acos.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/e_acos.S diff -u src/lib/libm/arch/i387/e_acos.S:1.8 src/lib/libm/arch/i387/e_acos.S:1.9 --- src/lib/libm/arch/i387/e_acos.S:1.8 Sat Jul 26 19:24:57 2003 +++ src/lib/libm/arch/i387/e_acos.S Mon Mar 3 08:00:50 2014 @@ -7,7 +7,7 @@ #include "abi.h" -RCSID("$NetBSD: e_acos.S,v 1.8 2003/07/26 19:24:57 salo Exp $") +RCSID("$NetBSD: e_acos.S,v 1.9 2014/03/03 08:00:50 dsl Exp $") /* acos = atan (sqrt(1 - x^2) / x) */ ENTRY(__ieee754_acos) @@ -18,6 +18,7 @@ ENTRY(__ieee754_acos) fld1 fsubp/* 1 - x^2 */ fsqrt/* sqrt (1 - x^2) */ + fabs/* Change -0.0 to +0.0 */ fxch %st(1) fpatan XMM_DOUBLE_EPILOGUE
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: mlelstv Date: Mon May 20 15:13:36 UTC 2013 Modified Files: src/lib/libm/arch/i387: s_scalbn.S Log Message: Use correct alias for scalbn(). Tested by martin@. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 src/lib/libm/arch/i387/s_scalbn.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_scalbn.S diff -u src/lib/libm/arch/i387/s_scalbn.S:1.12 src/lib/libm/arch/i387/s_scalbn.S:1.13 --- src/lib/libm/arch/i387/s_scalbn.S:1.12 Sat Apr 27 18:39:28 2013 +++ src/lib/libm/arch/i387/s_scalbn.S Mon May 20 15:13:36 2013 @@ -5,10 +5,10 @@ #include -RCSID("$NetBSD: s_scalbn.S,v 1.12 2013/04/27 18:39:28 joerg Exp $") +RCSID("$NetBSD: s_scalbn.S,v 1.13 2013/05/20 15:13:36 mlelstv Exp $") #ifdef WEAK_ALIAS -WEAK_ALIAS(scalbn,_scalbln) +WEAK_ALIAS(scalbn,_scalbn) WEAK_ALIAS(scalbln,_scalbln) WEAK_ALIAS(ldexp,_scalbln) #endif
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Apr 27 18:44:39 UTC 2013 Added Files: src/lib/libm/arch/i387: s_scalbln.S Log Message: Add a dummy s_scalbln.S to avoid the generic implementations of scalbln and co on i386 and amd64. They are implemented next to scalbn and co. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libm/arch/i387/s_scalbln.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/lib/libm/arch/i387/s_scalbln.S diff -u /dev/null src/lib/libm/arch/i387/s_scalbln.S:1.1 --- /dev/null Sat Apr 27 18:44:39 2013 +++ src/lib/libm/arch/i387/s_scalbln.S Sat Apr 27 18:44:39 2013 @@ -0,0 +1 @@ +/* This file is intentionally empty */
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Apr 27 18:36:42 UTC 2013 Modified Files: src/lib/libm/arch/i387: s_scalbn.S s_scalbnf.S s_scalbnl.S Log Message: Use the correct register on AMD64 for the argument. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/lib/libm/arch/i387/s_scalbn.S cvs rdiff -u -r1.11 -r1.12 src/lib/libm/arch/i387/s_scalbnf.S cvs rdiff -u -r1.3 -r1.4 src/lib/libm/arch/i387/s_scalbnl.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_scalbn.S diff -u src/lib/libm/arch/i387/s_scalbn.S:1.10 src/lib/libm/arch/i387/s_scalbn.S:1.11 --- src/lib/libm/arch/i387/s_scalbn.S:1.10 Mon Feb 11 01:19:33 2013 +++ src/lib/libm/arch/i387/s_scalbn.S Sat Apr 27 18:36:41 2013 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_scalbn.S,v 1.10 2013/02/11 01:19:33 matt Exp $") +RCSID("$NetBSD: s_scalbn.S,v 1.11 2013/04/27 18:36:41 joerg Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbn,_scalbln) @@ -28,7 +28,7 @@ STRONG_ALIAS(_scalbn, scalbln) ENTRY(_scalbln) #ifdef __x86_64__ - movq %rdx,-16(%rsp) + movq %rdi,-16(%rsp) fildq -16(%rsp) movsd %xmm0,-8(%rsp) fldl -8(%rsp) Index: src/lib/libm/arch/i387/s_scalbnf.S diff -u src/lib/libm/arch/i387/s_scalbnf.S:1.11 src/lib/libm/arch/i387/s_scalbnf.S:1.12 --- src/lib/libm/arch/i387/s_scalbnf.S:1.11 Tue Feb 12 02:52:13 2013 +++ src/lib/libm/arch/i387/s_scalbnf.S Sat Apr 27 18:36:41 2013 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_scalbnf.S,v 1.11 2013/02/12 02:52:13 matt Exp $") +RCSID("$NetBSD: s_scalbnf.S,v 1.12 2013/04/27 18:36:41 joerg Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbnf,_scalbnf) @@ -29,7 +29,7 @@ STRONG_ALIAS(_scalbnf,_scalblnf) ENTRY(_scalblnf) #ifdef __x86_64__ - movq %rdx,-16(%rsp) + movq %rdi,-16(%rsp) fildq -16(%rsp) movss %xmm0,-4(%rsp) flds -4(%rsp) Index: src/lib/libm/arch/i387/s_scalbnl.S diff -u src/lib/libm/arch/i387/s_scalbnl.S:1.3 src/lib/libm/arch/i387/s_scalbnl.S:1.4 --- src/lib/libm/arch/i387/s_scalbnl.S:1.3 Mon Feb 11 02:45:16 2013 +++ src/lib/libm/arch/i387/s_scalbnl.S Sat Apr 27 18:36:41 2013 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_scalbnl.S,v 1.3 2013/02/11 02:45:16 christos Exp $") +RCSID("$NetBSD: s_scalbnl.S,v 1.4 2013/04/27 18:36:41 joerg Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbnl,_scalbnl) @@ -27,7 +27,7 @@ STRONG_ALIAS(_scalbnl,_scalblnl) ENTRY(_scalblnl) #ifdef __x86_64__ - movq %rdx,-8(%rsp) + movq %rdi,-8(%rsp) fildq -8(%rsp) fldt 8(%rsp) fscale
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: matt Date: Tue Feb 12 02:52:13 UTC 2013 Modified Files: src/lib/libm/arch/i387: s_scalbnf.S Log Message: Fix the strong alias correctly this time. To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/lib/libm/arch/i387/s_scalbnf.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_scalbnf.S diff -u src/lib/libm/arch/i387/s_scalbnf.S:1.10 src/lib/libm/arch/i387/s_scalbnf.S:1.11 --- src/lib/libm/arch/i387/s_scalbnf.S:1.10 Mon Feb 11 04:57:22 2013 +++ src/lib/libm/arch/i387/s_scalbnf.S Tue Feb 12 02:52:13 2013 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_scalbnf.S,v 1.10 2013/02/11 04:57:22 matt Exp $") +RCSID("$NetBSD: s_scalbnf.S,v 1.11 2013/02/12 02:52:13 matt Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbnf,_scalbnf) @@ -24,7 +24,7 @@ ENTRY(_scalbnf) fstp %st(0) ret #elif defined(STRONG_ALIAS) -STRONG_ALIAS(_scalbnf,_scalbnfl) +STRONG_ALIAS(_scalbnf,_scalblnf) #endif ENTRY(_scalblnf)
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: matt Date: Mon Feb 11 04:57:22 UTC 2013 Modified Files: src/lib/libm/arch/i387: s_scalbnf.S Log Message: Fix strong_alias To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/lib/libm/arch/i387/s_scalbnf.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_scalbnf.S diff -u src/lib/libm/arch/i387/s_scalbnf.S:1.9 src/lib/libm/arch/i387/s_scalbnf.S:1.10 --- src/lib/libm/arch/i387/s_scalbnf.S:1.9 Mon Feb 11 01:19:33 2013 +++ src/lib/libm/arch/i387/s_scalbnf.S Mon Feb 11 04:57:22 2013 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_scalbnf.S,v 1.9 2013/02/11 01:19:33 matt Exp $") +RCSID("$NetBSD: s_scalbnf.S,v 1.10 2013/02/11 04:57:22 matt Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbnf,_scalbnf) @@ -24,7 +24,7 @@ ENTRY(_scalbnf) fstp %st(0) ret #elif defined(STRONG_ALIAS) -STRONG_ALIAS(_scalbnf,_scalbnf) +STRONG_ALIAS(_scalbnf,_scalbnfl) #endif ENTRY(_scalblnf)
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: matt Date: Mon Feb 11 01:19:33 UTC 2013 Modified Files: src/lib/libm/arch/i387: s_scalbn.S s_scalbnf.S s_scalbnl.S Log Message: Add long double version of x86 scalb functions To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/lib/libm/arch/i387/s_scalbn.S cvs rdiff -u -r1.8 -r1.9 src/lib/libm/arch/i387/s_scalbnf.S cvs rdiff -u -r1.1 -r1.2 src/lib/libm/arch/i387/s_scalbnl.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_scalbn.S diff -u src/lib/libm/arch/i387/s_scalbn.S:1.9 src/lib/libm/arch/i387/s_scalbn.S:1.10 --- src/lib/libm/arch/i387/s_scalbn.S:1.9 Fri Apr 23 19:17:07 2010 +++ src/lib/libm/arch/i387/s_scalbn.S Mon Feb 11 01:19:33 2013 @@ -5,14 +5,14 @@ #include -RCSID("$NetBSD: s_scalbn.S,v 1.9 2010/04/23 19:17:07 drochner Exp $") +RCSID("$NetBSD: s_scalbn.S,v 1.10 2013/02/11 01:19:33 matt Exp $") #ifdef WEAK_ALIAS -WEAK_ALIAS(scalbn,_scalbn) +WEAK_ALIAS(scalbn,_scalbln) +WEAK_ALIAS(scalbln,_scalbln) #endif - -ENTRY(_scalbn) #ifdef __x86_64__ +ENTRY(_scalbn) movl %edi,-12(%rsp) fildl -12(%rsp) movsd %xmm0,-8(%rsp) @@ -21,6 +21,21 @@ ENTRY(_scalbn) fstpl -8(%rsp) movsd -8(%rsp),%xmm0 fstp %st(0) + ret +#elif defined(STRONG_ALIAS) +STRONG_ALIAS(_scalbn, scalbln) +#endif + +ENTRY(_scalbln) +#ifdef __x86_64__ + movq %rdx,-16(%rsp) + fildq -16(%rsp) + movsd %xmm0,-8(%rsp) + fldl -8(%rsp) + fscale + fstpl -8(%rsp) + movsd -8(%rsp),%xmm0 + fstp %st(0) #else fildl 12(%esp) fldl 4(%esp) Index: src/lib/libm/arch/i387/s_scalbnf.S diff -u src/lib/libm/arch/i387/s_scalbnf.S:1.8 src/lib/libm/arch/i387/s_scalbnf.S:1.9 --- src/lib/libm/arch/i387/s_scalbnf.S:1.8 Fri Apr 23 19:17:07 2010 +++ src/lib/libm/arch/i387/s_scalbnf.S Mon Feb 11 01:19:33 2013 @@ -5,14 +5,15 @@ #include -RCSID("$NetBSD: s_scalbnf.S,v 1.8 2010/04/23 19:17:07 drochner Exp $") +RCSID("$NetBSD: s_scalbnf.S,v 1.9 2013/02/11 01:19:33 matt Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbnf,_scalbnf) +WEAK_ALIAS(scalblnf,_scalblnf) #endif -ENTRY(_scalbnf) #ifdef __x86_64__ +ENTRY(_scalbnf) movl %edi,-8(%rsp) fildl -8(%rsp) movss %xmm0,-4(%rsp) @@ -21,6 +22,21 @@ ENTRY(_scalbnf) fstps -4(%rsp) movss -4(%rsp),%xmm0 fstp %st(0) + ret +#elif defined(STRONG_ALIAS) +STRONG_ALIAS(_scalbnf,_scalbnf) +#endif + +ENTRY(_scalblnf) +#ifdef __x86_64__ + movq %rdx,-16(%rsp) + fildq -16(%rsp) + movss %xmm0,-4(%rsp) + flds -4(%rsp) + fscale + fstps -4(%rsp) + movss -4(%rsp),%xmm0 + fstp %st(0) #else fildl 8(%esp) flds 4(%esp) Index: src/lib/libm/arch/i387/s_scalbnl.S diff -u src/lib/libm/arch/i387/s_scalbnl.S:1.1 src/lib/libm/arch/i387/s_scalbnl.S:1.2 --- src/lib/libm/arch/i387/s_scalbnl.S:1.1 Tue Jul 26 17:03:23 2011 +++ src/lib/libm/arch/i387/s_scalbnl.S Mon Feb 11 01:19:33 2013 @@ -5,19 +5,32 @@ #include -RCSID("$NetBSD: s_scalbnl.S,v 1.1 2011/07/26 17:03:23 joerg Exp $") +RCSID("$NetBSD: s_scalbnl.S,v 1.2 2013/02/11 01:19:33 matt Exp $") #ifdef WEAK_ALIAS WEAK_ALIAS(scalbnl,_scalbnl) +WEAK_ALIAS(scalblnl,_scalblnl) #endif -ENTRY(_scalbnl) #ifdef __x86_64__ +ENTRY(_scalbnl) movl %edi,-4(%rsp) fildl -4(%rsp) fldt 8(%rsp) fscale fstp %st(1) + ret +#elif defined(STRONG_ALIAS) +STRONG_ALIAS(_scalbnl,_scalblnl) +#endif + +ENTRY(_scalblnl) +#ifdef __x86_64__ + movq %rdx,-8(%rsp) + fildq -8(%rsp) + fldt 8(%rsp) + fscale + fstp %st(1) #else fildl 16(%esp) fldt 4(%esp)
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Tue Jul 26 17:03:23 UTC 2011 Added Files: src/lib/libm/arch/i387: s_scalbnl.S Log Message: Add optimised version of scalbnl for x86. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/lib/libm/arch/i387/s_scalbnl.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/lib/libm/arch/i387/s_scalbnl.S diff -u /dev/null src/lib/libm/arch/i387/s_scalbnl.S:1.1 --- /dev/null Tue Jul 26 17:03:23 2011 +++ src/lib/libm/arch/i387/s_scalbnl.S Tue Jul 26 17:03:23 2011 @@ -0,0 +1,27 @@ +/* + * Written by J.T. Conklin . + * Public domain. + */ + +#include + +RCSID("$NetBSD: s_scalbnl.S,v 1.1 2011/07/26 17:03:23 joerg Exp $") + +#ifdef WEAK_ALIAS +WEAK_ALIAS(scalbnl,_scalbnl) +#endif + +ENTRY(_scalbnl) +#ifdef __x86_64__ + movl %edi,-4(%rsp) + fildl -4(%rsp) + fldt 8(%rsp) + fscale + fstp %st(1) +#else + fildl 16(%esp) + fldt 4(%esp) + fscale + fstp %st(1) /* clean up stack */ +#endif + ret
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Tue Jun 21 21:52:49 UTC 2011 Modified Files: src/lib/libm/arch/i387: s_copysignf.S Log Message: Actually used SSE branch. Noticed by enami@ To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libm/arch/i387/s_copysignf.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_copysignf.S diff -u src/lib/libm/arch/i387/s_copysignf.S:1.6 src/lib/libm/arch/i387/s_copysignf.S:1.7 --- src/lib/libm/arch/i387/s_copysignf.S:1.6 Sat Jun 18 20:49:26 2011 +++ src/lib/libm/arch/i387/s_copysignf.S Tue Jun 21 21:52:49 2011 @@ -9,7 +9,7 @@ * XXXfvdl split this file. */ -RCSID("$NetBSD: s_copysignf.S,v 1.6 2011/06/18 20:49:26 joerg Exp $") +RCSID("$NetBSD: s_copysignf.S,v 1.7 2011/06/21 21:52:49 joerg Exp $") #ifdef __x86_64__ .Lneg: @@ -28,14 +28,10 @@ movl %eax,4(%esp) flds 4(%esp) #else - movss %xmm0,-4(%rsp) - movss %xmm1,-8(%rsp) - movl -8(%rsp),%edx - andl $0x8000,%edx - movl -4(%rsp),%eax - andl $0x7fff,%eax - orl %edx,%eax - movl %eax,-4(%rsp) - movss -4(%rsp),%xmm0 + movss .Lpos(%rip),%xmm2 + movss .Lneg(%rip),%xmm3 + pand %xmm2,%xmm1 + pand %xmm3,%xmm0 + por %xmm1,%xmm0 #endif ret
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Jun 18 22:19:52 UTC 2011 Modified Files: src/lib/libm/arch/i387: abi.h Log Message: Use correct stack register as noticed by christos To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libm/arch/i387/abi.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/abi.h diff -u src/lib/libm/arch/i387/abi.h:1.6 src/lib/libm/arch/i387/abi.h:1.7 --- src/lib/libm/arch/i387/abi.h:1.6 Sat Jun 18 18:16:40 2011 +++ src/lib/libm/arch/i387/abi.h Sat Jun 18 22:19:52 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: abi.h,v 1.6 2011/06/18 18:16:40 joerg Exp $ */ +/* $NetBSD: abi.h,v 1.7 2011/06/18 22:19:52 joerg Exp $ */ /* * Written by Frank van der Linden (f...@wasabisystems.com) @@ -51,8 +51,8 @@ #else -#define ARG_LONG_DOUBLE_ONE 4(%rsp) -#define ARG_LONG_DOUBLE_TWO 16(%rsp) +#define ARG_LONG_DOUBLE_ONE 4(%esp) +#define ARG_LONG_DOUBLE_TWO 16(%esp) #define ARG_DOUBLE_ONE 4(%esp) #define ARG_DOUBLE_ONE_LSW 4(%esp) #define ARG_DOUBLE_ONE_MSW 8(%esp)
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Jun 18 21:24:51 UTC 2011 Modified Files: src/lib/libm/arch/i387: s_ceil.S s_ceilf.S s_floor.S s_floorf.S Log Message: Kill redundant ; To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/lib/libm/arch/i387/s_ceil.S \ src/lib/libm/arch/i387/s_floorf.S cvs rdiff -u -r1.8 -r1.9 src/lib/libm/arch/i387/s_ceilf.S \ src/lib/libm/arch/i387/s_floor.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_ceil.S diff -u src/lib/libm/arch/i387/s_ceil.S:1.7 src/lib/libm/arch/i387/s_ceil.S:1.8 --- src/lib/libm/arch/i387/s_ceil.S:1.7 Sat Jul 26 19:25:00 2003 +++ src/lib/libm/arch/i387/s_ceil.S Sat Jun 18 21:24:51 2011 @@ -7,7 +7,7 @@ #include "abi.h" -RCSID("$NetBSD: s_ceil.S,v 1.7 2003/07/26 19:25:00 salo Exp $") +RCSID("$NetBSD: s_ceil.S,v 1.8 2011/06/18 21:24:51 joerg Exp $") ENTRY(ceil) #ifdef __i386__ @@ -22,7 +22,7 @@ movw %dx,-8(%ebp) fldcw -8(%ebp) /* load modfied control word */ - fldl 8(%ebp); /* round */ + fldl 8(%ebp) /* round */ frndint fldcw -4(%ebp) /* restore original control word */ Index: src/lib/libm/arch/i387/s_floorf.S diff -u src/lib/libm/arch/i387/s_floorf.S:1.7 src/lib/libm/arch/i387/s_floorf.S:1.8 --- src/lib/libm/arch/i387/s_floorf.S:1.7 Fri Jul 16 18:40:24 2004 +++ src/lib/libm/arch/i387/s_floorf.S Sat Jun 18 21:24:51 2011 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_floorf.S,v 1.7 2004/07/16 18:40:24 drochner Exp $") +RCSID("$NetBSD: s_floorf.S,v 1.8 2011/06/18 21:24:51 joerg Exp $") ENTRY(floorf) #ifdef __i386__ @@ -20,7 +20,7 @@ movw %dx,-8(%ebp) fldcw -8(%ebp) /* load modfied control word */ - flds 8(%ebp); /* round */ + flds 8(%ebp) /* round */ frndint fldcw -4(%ebp) /* restore original control word */ Index: src/lib/libm/arch/i387/s_ceilf.S diff -u src/lib/libm/arch/i387/s_ceilf.S:1.8 src/lib/libm/arch/i387/s_ceilf.S:1.9 --- src/lib/libm/arch/i387/s_ceilf.S:1.8 Fri Jul 16 18:40:24 2004 +++ src/lib/libm/arch/i387/s_ceilf.S Sat Jun 18 21:24:51 2011 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_ceilf.S,v 1.8 2004/07/16 18:40:24 drochner Exp $") +RCSID("$NetBSD: s_ceilf.S,v 1.9 2011/06/18 21:24:51 joerg Exp $") ENTRY(ceilf) #ifdef __i386__ @@ -20,7 +20,7 @@ movw %dx,-8(%ebp) fldcw -8(%ebp) /* load modfied control word */ - flds 8(%ebp); /* round */ + flds 8(%ebp) /* round */ frndint fldcw -4(%ebp) /* restore original control word */ Index: src/lib/libm/arch/i387/s_floor.S diff -u src/lib/libm/arch/i387/s_floor.S:1.8 src/lib/libm/arch/i387/s_floor.S:1.9 --- src/lib/libm/arch/i387/s_floor.S:1.8 Sat Jul 26 19:25:02 2003 +++ src/lib/libm/arch/i387/s_floor.S Sat Jun 18 21:24:51 2011 @@ -5,7 +5,7 @@ #include -RCSID("$NetBSD: s_floor.S,v 1.8 2003/07/26 19:25:02 salo Exp $") +RCSID("$NetBSD: s_floor.S,v 1.9 2011/06/18 21:24:51 joerg Exp $") ENTRY(floor) #ifdef __i386__ @@ -20,7 +20,7 @@ movw %dx,-8(%ebp) fldcw -8(%ebp) /* load modfied control word */ - fldl 8(%ebp); /* round */ + fldl 8(%ebp) /* round */ frndint fldcw -4(%ebp) /* restore original control word */
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Jun 18 20:49:26 UTC 2011 Modified Files: src/lib/libm/arch/i387: s_copysign.S s_copysignf.S Log Message: Switch to SSE code, since our gas supports it now. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/lib/libm/arch/i387/s_copysign.S cvs rdiff -u -r1.5 -r1.6 src/lib/libm/arch/i387/s_copysignf.S Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/s_copysign.S diff -u src/lib/libm/arch/i387/s_copysign.S:1.6 src/lib/libm/arch/i387/s_copysign.S:1.7 --- src/lib/libm/arch/i387/s_copysign.S:1.6 Sat Jul 26 19:25:01 2003 +++ src/lib/libm/arch/i387/s_copysign.S Sat Jun 18 20:49:26 2011 @@ -9,7 +9,7 @@ #include -RCSID("$NetBSD: s_copysign.S,v 1.6 2003/07/26 19:25:01 salo Exp $") +RCSID("$NetBSD: s_copysign.S,v 1.7 2011/06/18 20:49:26 joerg Exp $") #ifdef __x86_64__ .Lpos: @@ -29,25 +29,10 @@ movl %eax,8(%esp) fldl 4(%esp) #else -#if 0 - /* - * XXXfvdl gas doesn't grok this yet. - */ movq .Lpos(%rip),%xmm2 movq .Lneg(%rip),%xmm3 pand %xmm2,%xmm1 pand %xmm3,%xmm0 por %xmm1,%xmm0 -#else - movsd %xmm0,-8(%rsp) - movsd %xmm1,-16(%rsp) - movl -12(%rsp),%edx - andl $0x8000,%edx - movl -4(%rsp),%eax - andl $0x7fff,%eax - orl %edx,%eax - movl %eax,-4(%rsp) - movsd -8(%rsp),%xmm0 -#endif #endif ret Index: src/lib/libm/arch/i387/s_copysignf.S diff -u src/lib/libm/arch/i387/s_copysignf.S:1.5 src/lib/libm/arch/i387/s_copysignf.S:1.6 --- src/lib/libm/arch/i387/s_copysignf.S:1.5 Sat Jul 26 19:25:01 2003 +++ src/lib/libm/arch/i387/s_copysignf.S Sat Jun 18 20:49:26 2011 @@ -9,7 +9,7 @@ * XXXfvdl split this file. */ -RCSID("$NetBSD: s_copysignf.S,v 1.5 2003/07/26 19:25:01 salo Exp $") +RCSID("$NetBSD: s_copysignf.S,v 1.6 2011/06/18 20:49:26 joerg Exp $") #ifdef __x86_64__ .Lneg: @@ -28,17 +28,6 @@ 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 @@ -49,5 +38,4 @@ movl %eax,-4(%rsp) movss -4(%rsp),%xmm0 #endif -#endif ret
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Jun 18 18:16:40 UTC 2011 Modified Files: src/lib/libm/arch/i387: abi.h Log Message: SSE2 registers are only used for float and double arguments, so update comment to reflect reality. Add some accessor macros for long double arguments for i386 and x86_64. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/lib/libm/arch/i387/abi.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/abi.h diff -u src/lib/libm/arch/i387/abi.h:1.5 src/lib/libm/arch/i387/abi.h:1.6 --- src/lib/libm/arch/i387/abi.h:1.5 Mon Jun 23 10:24:13 2008 +++ src/lib/libm/arch/i387/abi.h Sat Jun 18 18:16:40 2011 @@ -1,12 +1,12 @@ -/* $NetBSD: abi.h,v 1.5 2008/06/23 10:24:13 drochner Exp $ */ +/* $NetBSD: abi.h,v 1.6 2011/06/18 18:16:40 joerg Exp $ */ /* * Written by Frank van der Linden (f...@wasabisystems.com) */ /* - * The x86-64 ABI specifies that float, double and long double - * arguments are passed in SSE2 (xmm) registers. Unfortunately, + * The x86-64 ABI specifies that float and double arguments + * are passed in SSE2 (xmm) registers. Unfortunately, * there is no way to push those on to the FP stack, which is * where the fancier instructions get their arguments from. * @@ -16,6 +16,8 @@ #ifdef __x86_64__ +#define ARG_LONG_DOUBLE_ONE 8(%rsp) +#define ARG_LONG_DOUBLE_TWO 24(%rsp) #define ARG_DOUBLE_ONE -8(%rsp) #define ARG_DOUBLE_ONE_LSW -8(%rsp) #define ARG_DOUBLE_ONE_MSW -4(%rsp) @@ -49,6 +51,8 @@ #else +#define ARG_LONG_DOUBLE_ONE 4(%rsp) +#define ARG_LONG_DOUBLE_TWO 16(%rsp) #define ARG_DOUBLE_ONE 4(%esp) #define ARG_DOUBLE_ONE_LSW 4(%esp) #define ARG_DOUBLE_ONE_MSW 8(%esp)
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: taca Date: Sun Aug 1 06:34:38 UTC 2010 Modified Files: src/lib/libm/arch/i387: fenv.c Log Message: Fix compile error. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/lib/libm/arch/i387/fenv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/fenv.c diff -u src/lib/libm/arch/i387/fenv.c:1.2 src/lib/libm/arch/i387/fenv.c:1.3 --- src/lib/libm/arch/i387/fenv.c:1.2 Sat Jul 31 22:14:18 2010 +++ src/lib/libm/arch/i387/fenv.c Sun Aug 1 06:34:38 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: fenv.c,v 1.2 2010/07/31 22:14:18 joerg Exp $ */ +/* $NetBSD: fenv.c,v 1.3 2010/08/01 06:34:38 taca Exp $ */ /*- * Copyright (c) 2004-2005 David Schultz @@ -27,7 +27,7 @@ */ #include -__RCSID("$NetBSD: fenv.c,v 1.2 2010/07/31 22:14:18 joerg Exp $"); +__RCSID("$NetBSD: fenv.c,v 1.3 2010/08/01 06:34:38 taca Exp $"); #include #include @@ -119,7 +119,7 @@ static void __test_sse(void) { - size_t oldlen = sizeof(HAS_SSE); + size_t oldlen = sizeof(__HAS_SSE); int rv; rv = sysctlbyname("machdep.sse", &__HAS_SSE, &oldlen, NULL, 0);
CVS commit: src/lib/libm/arch/i387
Module Name:src Committed By: joerg Date: Sat Jul 31 22:14:18 UTC 2010 Modified Files: src/lib/libm/arch/i387: fenv.c Log Message: Fix merge error: drop machine from an older workaround for machine.sse under compat32, drop the assertion, initialize oldlen. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/lib/libm/arch/i387/fenv.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/lib/libm/arch/i387/fenv.c diff -u src/lib/libm/arch/i387/fenv.c:1.1 src/lib/libm/arch/i387/fenv.c:1.2 --- src/lib/libm/arch/i387/fenv.c:1.1 Sat Jul 31 21:47:53 2010 +++ src/lib/libm/arch/i387/fenv.c Sat Jul 31 22:14:18 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: fenv.c,v 1.1 2010/07/31 21:47:53 joerg Exp $ */ +/* $NetBSD: fenv.c,v 1.2 2010/07/31 22:14:18 joerg Exp $ */ /*- * Copyright (c) 2004-2005 David Schultz @@ -27,7 +27,7 @@ */ #include -__RCSID("$NetBSD: fenv.c,v 1.1 2010/07/31 21:47:53 joerg Exp $"); +__RCSID("$NetBSD: fenv.c,v 1.2 2010/07/31 22:14:18 joerg Exp $"); #include #include @@ -119,12 +119,10 @@ static void __test_sse(void) { - char machine[64]; - size_t oldlen; + size_t oldlen = sizeof(HAS_SSE); int rv; rv = sysctlbyname("machdep.sse", &__HAS_SSE, &oldlen, NULL, 0); - _DIAGASSERT(rv != -1); if (rv == -1) __HAS_SSE = 0; }