2006-01-31 Jakub Jelinek <jakub@redhat.com>
authorroland <roland>
Wed, 1 Feb 2006 03:13:45 +0000 (03:13 +0000)
committerroland <roland>
Wed, 1 Feb 2006 03:13:45 +0000 (03:13 +0000)
* sysdeps/unix/sysv/linux/alpha/fpu/Implies: New file.
* sysdeps/alpha/fpu/s_ceil.c: Include math_ldbl_opt.h, add
compat_symbol if LONG_DOUBLE_COMPAT.
* sysdeps/alpha/fpu/s_copysign.c: Likewise.
* sysdeps/alpha/fpu/s_fabs.c: Likewise.
* sysdeps/alpha/fpu/s_floor.c: Likewise.
* sysdeps/alpha/fpu/s_rint.c: Likewise.
* sysdeps/alpha/soft-fp/e_sqrtl.c: New file.
* sysdeps/alpha/Implies: Add ieee754/ldbl-128.

sysdeps/alpha/Implies
sysdeps/alpha/fpu/s_ceil.c
sysdeps/alpha/fpu/s_copysign.c
sysdeps/alpha/fpu/s_fabs.c
sysdeps/alpha/fpu/s_floor.c
sysdeps/alpha/fpu/s_rint.c
sysdeps/alpha/soft-fp/e_sqrtl.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/alpha/fpu/Implies [new file with mode: 0644]

index 4b354f3..18c3590 100644 (file)
@@ -1,5 +1,6 @@
 wordsize-64
-# Alpha uses IEEE 754 single and double precision floating point.
-ieee754/flt-32
+# Alpha uses IEEE 754 single, double and quad precision floating point.
+ieee754/ldbl-128
 ieee754/dbl-64
+ieee754/flt-32
 alpha/soft-fp
index a7a46bb..ec58fd9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson.
 
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <math.h>
+#include <math_ldbl_opt.h>
 
 /* Use the -inf rounding mode conversion instructions to implement
    ceil, via something akin to -floor(-x).  This is much faster than
@@ -52,3 +53,6 @@ weak_alias (__ceil, ceil)
 strong_alias (__ceil, __ceill)
 weak_alias (__ceil, ceill)
 #endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __ceil, ceill, GLIBC_2_0);
+#endif
index e86778e..52c632e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson.
 
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <math.h>
+#include <math_ldbl_opt.h>
 
 double
 __copysign (double x, double y)
@@ -31,3 +32,10 @@ weak_alias (__copysign, copysign)
 strong_alias (__copysign, __copysignl)
 weak_alias (__copysign, copysignl)
 #endif
+#ifdef IS_IN_libm
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __copysign, copysignl, GLIBC_2_0);
+# endif
+#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0)
+compat_symbol (libc, __copysign, copysignl, GLIBC_2_0);
+#endif
index f7a2f93..9bc42f6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson.
 
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <math.h>
+#include <math_ldbl_opt.h>
 
 double
 __fabs (double x)
@@ -35,3 +36,6 @@ weak_alias (__fabs, fabs)
 strong_alias (__fabs, __fabsl)
 weak_alias (__fabs, fabsl)
 #endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __fabs, fabsl, GLIBC_2_0);
+#endif
index c6872f5..b22c523 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 1999, 2000, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson.
 
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <math.h>
+#include <math_ldbl_opt.h>
 
 
 /* Use the -inf rounding mode conversion instructions to implement
@@ -53,3 +54,6 @@ weak_alias (__floor, floor)
 strong_alias (__floor, __floorl)
 weak_alias (__floor, floorl)
 #endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __floor, floorl, GLIBC_2_0);
+#endif
index 61cba04..be09651 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2006 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson.
 
@@ -18,6 +18,7 @@
    02111-1307 USA.  */
 
 #include <math.h>
+#include <math_ldbl_opt.h>
 
 
 double
@@ -48,3 +49,6 @@ weak_alias (__rint, rint)
 strong_alias (__rint, __rintl)
 weak_alias (__rint, rintl)
 #endif
+#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+compat_symbol (libm, __rint, rintl, GLIBC_2_0);
+#endif
diff --git a/sysdeps/alpha/soft-fp/e_sqrtl.c b/sysdeps/alpha/soft-fp/e_sqrtl.c
new file mode 100644 (file)
index 0000000..a1d0972
--- /dev/null
@@ -0,0 +1,37 @@
+/* long double square root in software floating-point emulation.
+   Copyright (C) 1997, 1999, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Richard Henderson (rth@cygnus.com) and
+                 Jakub Jelinek (jj@ultra.linux.cz).
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include "local-soft-fp.h"
+
+long double
+__ieee754_sqrtl (const long double a)
+{
+  FP_DECL_EX;
+  FP_DECL_Q(A); FP_DECL_Q(C);
+  long double c;
+
+  FP_INIT_ROUNDMODE;
+  FP_UNPACK_Q(A, a);
+  FP_SQRT_Q(C, A);
+  FP_PACK_Q(c, C);
+  FP_HANDLE_EXCEPTIONS;
+  return c;
+}
diff --git a/sysdeps/unix/sysv/linux/alpha/fpu/Implies b/sysdeps/unix/sysv/linux/alpha/fpu/Implies
new file mode 100644 (file)
index 0000000..d76f511
--- /dev/null
@@ -0,0 +1,2 @@
+# Override ldbl-opt with alpha specific routines.
+alpha/fpu