From owner-svn-src-all@FreeBSD.ORG Sat Sep 22 15:38:30 2012 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D765C106566B; Sat, 22 Sep 2012 15:38:30 +0000 (UTC) (envelope-from kargl@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A98DD8FC0C; Sat, 22 Sep 2012 15:38:30 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8MFcUe2092627; Sat, 22 Sep 2012 15:38:30 GMT (envelope-from kargl@svn.freebsd.org) Received: (from kargl@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8MFcUwM092623; Sat, 22 Sep 2012 15:38:30 GMT (envelope-from kargl@svn.freebsd.org) Message-Id: <201209221538.q8MFcUwM092623@svn.freebsd.org> From: Steve Kargl Date: Sat, 22 Sep 2012 15:38:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r240828 - head/lib/msun/src X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 15:38:31 -0000 Author: kargl Date: Sat Sep 22 15:38:29 2012 New Revision: 240828 URL: http://svn.freebsd.org/changeset/base/240828 Log: * Use ENTERI() and RETURNI() to toggle the rounding precision if necessary, so that cosl(), sinl() and tanl() work on i386 even for naive callers. Suggested by: bde Reviewed by: bde Approved by: das (mentor) Modified: head/lib/msun/src/s_cosl.c head/lib/msun/src/s_sinl.c head/lib/msun/src/s_tanl.c Modified: head/lib/msun/src/s_cosl.c ============================================================================== --- head/lib/msun/src/s_cosl.c Sat Sep 22 15:19:11 2012 (r240827) +++ head/lib/msun/src/s_cosl.c Sat Sep 22 15:38:29 2012 (r240828) @@ -33,6 +33,9 @@ __FBSDID("$FreeBSD$"); */ #include +#ifdef __i386__ +#include +#endif #include "math.h" #include "math_private.h" @@ -63,9 +66,11 @@ cosl(long double x) if (z.bits.exp == 32767) return ((x - x) / (x - x)); + ENTERI(); + /* Optimize the case where x is already within range. */ if (z.e < M_PI_4) - return (__kernel_cosl(z.e, 0)); + RETURNI(__kernel_cosl(z.e, 0)); e0 = __ieee754_rem_pio2l(x, y); hi = y[0]; @@ -86,5 +91,5 @@ cosl(long double x) break; } - return (hi); + RETURNI(hi); } Modified: head/lib/msun/src/s_sinl.c ============================================================================== --- head/lib/msun/src/s_sinl.c Sat Sep 22 15:19:11 2012 (r240827) +++ head/lib/msun/src/s_sinl.c Sat Sep 22 15:38:29 2012 (r240828) @@ -28,6 +28,9 @@ __FBSDID("$FreeBSD$"); #include +#ifdef __i386__ +#include +#endif #include "math.h" #include "math_private.h" @@ -59,10 +62,12 @@ sinl(long double x) if (z.bits.exp == 32767) return ((x - x) / (x - x)); + ENTERI(); + /* Optimize the case where x is already within range. */ if (z.e < M_PI_4) { hi = __kernel_sinl(z.e, 0, 0); - return (s ? -hi : hi); + RETURNI(s ? -hi : hi); } e0 = __ieee754_rem_pio2l(x, y); @@ -84,5 +89,5 @@ sinl(long double x) break; } - return (hi); + RETURNI(hi); } Modified: head/lib/msun/src/s_tanl.c ============================================================================== --- head/lib/msun/src/s_tanl.c Sat Sep 22 15:19:11 2012 (r240827) +++ head/lib/msun/src/s_tanl.c Sat Sep 22 15:38:29 2012 (r240828) @@ -34,6 +34,9 @@ __FBSDID("$FreeBSD$"); */ #include +#ifdef __i386__ +#include +#endif #include "math.h" #include "math_private.h" @@ -65,10 +68,12 @@ tanl(long double x) if (z.bits.exp == 32767) return ((x - x) / (x - x)); + ENTERI(); + /* Optimize the case where x is already within range. */ if (z.e < M_PI_4) { hi = __kernel_tanl(z.e, 0, 0); - return (s ? -hi : hi); + RETURNI(s ? -hi : hi); } e0 = __ieee754_rem_pio2l(x, y); @@ -86,5 +91,5 @@ tanl(long double x) break; } - return (hi); + RETURNI(hi); }