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 */