Module Name:    src
Committed By:   joerg
Date:           Wed Oct 22 10:32:50 UTC 2014

Modified Files:
        src/lib/libm/src: s_copysignl.c
        src/sys/arch/powerpc/include: ieee.h math.h

Log Message:
Support copysignl on PowerPC.


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/lib/libm/src/s_copysignl.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/powerpc/include/ieee.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/powerpc/include/math.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/src/s_copysignl.c
diff -u src/lib/libm/src/s_copysignl.c:1.2 src/lib/libm/src/s_copysignl.c:1.3
--- src/lib/libm/src/s_copysignl.c:1.2	Fri Sep 17 20:39:39 2010
+++ src/lib/libm/src/s_copysignl.c	Wed Oct 22 10:32:50 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: s_copysignl.c,v 1.2 2010/09/17 20:39:39 christos Exp $	*/
+/*	$NetBSD: s_copysignl.c,v 1.3 2014/10/22 10:32:50 joerg Exp $	*/
 
 /*-
  * Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -26,7 +26,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: s_copysignl.c,v 1.2 2010/09/17 20:39:39 christos Exp $");
+__RCSID("$NetBSD: s_copysignl.c,v 1.3 2014/10/22 10:32:50 joerg Exp $");
 
 #include <math.h>
 #include <machine/ieee.h>
@@ -48,4 +48,17 @@ copysignl(long double x, long double y)
 
 	return (ux.extu_ld);
 }
+#elif defined(__HAVE_IBM_LONGDOUBLE)
+long double
+copysignl(long double x, long double y)
+{
+	union ldbl_u ux, uy;
+
+	ux.ldblu_ld = x;
+	uy.ldblu_ld = y;
+	ux.ldblu_d[0] = copysign(ux.ldblu_d[0], uy.ldblu_d[0]);
+	ux.ldblu_d[1] = copysign(ux.ldblu_d[1], uy.ldblu_d[1]);
+
+	return ux.ldblu_ld;
+}
 #endif

Index: src/sys/arch/powerpc/include/ieee.h
diff -u src/sys/arch/powerpc/include/ieee.h:1.5 src/sys/arch/powerpc/include/ieee.h:1.6
--- src/sys/arch/powerpc/include/ieee.h:1.5	Sun Dec 11 12:18:43 2005
+++ src/sys/arch/powerpc/include/ieee.h	Wed Oct 22 10:32:50 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: ieee.h,v 1.5 2005/12/11 12:18:43 christos Exp $	*/
+/*	$NetBSD: ieee.h,v 1.6 2014/10/22 10:32:50 joerg Exp $	*/
 
 #include <sys/ieee754.h>
 
@@ -11,3 +11,8 @@
 #define	SNG_QUIETNAN	(1 << 22)
 #define	DBL_QUIETNAN	(1 << 19)
 #endif
+
+union ldbl_u {
+	long double	ldblu_ld;
+	double		ldblu_d[2];
+};

Index: src/sys/arch/powerpc/include/math.h
diff -u src/sys/arch/powerpc/include/math.h:1.4 src/sys/arch/powerpc/include/math.h:1.5
--- src/sys/arch/powerpc/include/math.h:1.4	Tue Feb 19 13:08:15 2002
+++ src/sys/arch/powerpc/include/math.h	Wed Oct 22 10:32:50 2014
@@ -1,3 +1,4 @@
-/*	$NetBSD: math.h,v 1.4 2002/02/19 13:08:15 simonb Exp $	*/
+/*	$NetBSD: math.h,v 1.5 2014/10/22 10:32:50 joerg Exp $	*/
 
 #define	__HAVE_NANF
+#define __HAVE_IBM_LONGDOUBLE	/* Uses double-double as long double */

Reply via email to