This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.23-477-gf4015c8


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  f4015c8a861803c128112ca41fc62817398bd1c0 (commit)
      from  4fea2cda618de1c74959aaec79c020993c34c552 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=f4015c8a861803c128112ca41fc62817398bd1c0

commit f4015c8a861803c128112ca41fc62817398bd1c0
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Jun 14 16:04:19 2016 +0000

    Use generic fdim on more architectures (bug 6796, bug 20255, bug 20256).
    
    Some architectures have their own versions of fdim functions, which
    are missing errno setting (bug 6796) and may also return sNaN instead
    of qNaN for sNaN input, in the case of the x86 / x86_64 long double
    versions (bug 20256).
    
    These versions are not actually doing anything that a compiler
    couldn't generate, just straightforward comparisons / arithmetic (and,
    in the x86 / x86_64 case, testing for NaNs with fxam, which isn't
    actually needed once you use an unordered comparison and let the NaNs
    pass through the same subtraction as non-NaN inputs).  This patch
    removes the x86 / x86_64 / powerpc versions, so that those
    architectures use the generic C versions, which correctly handle
    setting errno and deal properly with sNaN inputs.  This seems better
    than dealing with setting errno in lots of .S versions.
    
    The i386 versions also return results with excess range and precision,
    which is not appropriate for a function exactly defined by reference
    to IEEE operations.  For errno setting to work correctly on overflow,
    it's necessary to remove excess range with math_narrow_eval, which
    this patch duly does in the float and double versions so that the
    tests can reliably pass on x86.  For float, this avoids any double
    rounding issues as the long double precision is more than twice that
    of float.  For double, double rounding issues will need to be
    addressed separately, so this patch does not fully fix bug 20255.
    
    Tested for x86_64, x86 and powerpc.
    
    	[BZ #6796]
    	[BZ #20255]
    	[BZ #20256]
    	* math/s_fdim.c: Include <math_private.h>.
    	(__fdim): Use math_narrow_eval on result.
    	* math/s_fdimf.c: Include <math_private.h>.
    	(__fdimf): Use math_narrow_eval on result.
    	* sysdeps/i386/fpu/s_fdim.S: Remove file.
    	* sysdeps/i386/fpu/s_fdimf.S: Likewise.
    	* sysdeps/i386/fpu/s_fdiml.S: Likewise.
    	* sysdeps/i386/i686/fpu/s_fdim.S: Likewise.
    	* sysdeps/i386/i686/fpu/s_fdimf.S: Likewise.
    	* sysdeps/i386/i686/fpu/s_fdiml.S: Likewise.
    	* sysdeps/powerpc/fpu/s_fdim.c: Likewise.
    	* sysdeps/powerpc/fpu/s_fdimf.c: Likewise.
    	* sysdeps/powerpc/powerpc32/fpu/s_fdim.c: Likewise.
    	* sysdeps/powerpc/powerpc64/fpu/s_fdim.c: Likewise.
    	* sysdeps/x86_64/fpu/s_fdiml.S: Likewise.
    	* math/libm-test.inc (fdim_test_data): Expect errno setting on
    	overflow.  Add sNaN tests.

diff --git a/ChangeLog b/ChangeLog
index abd8fcb..b6d20dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,26 @@
 2016-06-14  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #6796]
+	[BZ #20255]
+	[BZ #20256]
+	* math/s_fdim.c: Include <math_private.h>.
+	(__fdim): Use math_narrow_eval on result.
+	* math/s_fdimf.c: Include <math_private.h>.
+	(__fdimf): Use math_narrow_eval on result.
+	* sysdeps/i386/fpu/s_fdim.S: Remove file.
+	* sysdeps/i386/fpu/s_fdimf.S: Likewise.
+	* sysdeps/i386/fpu/s_fdiml.S: Likewise.
+	* sysdeps/i386/i686/fpu/s_fdim.S: Likewise.
+	* sysdeps/i386/i686/fpu/s_fdimf.S: Likewise.
+	* sysdeps/i386/i686/fpu/s_fdiml.S: Likewise.
+	* sysdeps/powerpc/fpu/s_fdim.c: Likewise.
+	* sysdeps/powerpc/fpu/s_fdimf.c: Likewise.
+	* sysdeps/powerpc/powerpc32/fpu/s_fdim.c: Likewise.
+	* sysdeps/powerpc/powerpc64/fpu/s_fdim.c: Likewise.
+	* sysdeps/x86_64/fpu/s_fdiml.S: Likewise.
+	* math/libm-test.inc (fdim_test_data): Expect errno setting on
+	overflow.  Add sNaN tests.
+
 	* math/s_fdim.c (__fdim): Use islessequal and isinf instead of
 	fpclassify.
 	* math/s_fdimf.c (__fdimf): Likewise.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 010743f..cc41c63 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -7211,8 +7211,7 @@ static const struct test_ff_f_data fdim_test_data[] =
     TEST_ff_f (fdim, max_value, max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -max_value, -max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -max_value, max_value, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
-    /* Bug 6796: errno setting may be missing.  */
-    TEST_ff_f (fdim, max_value, -max_value, plus_oflow, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION),
+    TEST_ff_f (fdim, max_value, -max_value, plus_oflow, INEXACT_EXCEPTION|OVERFLOW_EXCEPTION|ERRNO_PLUS_OFLOW),
 
     TEST_ff_f (fdim, plus_infty, 9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, plus_infty, -9, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
@@ -7229,24 +7228,56 @@ static const struct test_ff_f_data fdim_test_data[] =
     TEST_ff_f (fdim, 0, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, 9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -9, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fdim, 0, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, 9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -9, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, 0, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, 9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -9, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
     TEST_ff_f (fdim, qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fdim, snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, 0, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, 9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, -9, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
     TEST_ff_f (fdim, plus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, minus_infty, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, plus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, minus_infty, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fdim, plus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, minus_infty, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, plus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, minus_infty, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
     TEST_ff_f (fdim, qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fdim, snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, plus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, minus_infty, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
     TEST_ff_f (fdim, qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, -qnan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+    TEST_ff_f (fdim, snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -qnan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -qnan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
+    TEST_ff_f (fdim, -snan_value, -snan_value, qnan_value, NO_INEXACT_EXCEPTION|INVALID_EXCEPTION),
 
     TEST_ff_f (fdim, plus_infty, plus_infty, 0, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
     TEST_ff_f (fdim, plus_infty, minus_infty, plus_infty, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
diff --git a/math/s_fdim.c b/math/s_fdim.c
index 8789ca4..a051ed8 100644
--- a/math/s_fdim.c
+++ b/math/s_fdim.c
@@ -19,6 +19,7 @@
 
 #include <errno.h>
 #include <math.h>
+#include <math_private.h>
 
 double
 __fdim (double x, double y)
@@ -26,7 +27,7 @@ __fdim (double x, double y)
   if (islessequal (x, y))
     return 0.0;
 
-  double r = x - y;
+  double r = math_narrow_eval (x - y);
   if (isinf (r) && !isinf (x) && !isinf (y))
     __set_errno (ERANGE);
 
diff --git a/math/s_fdimf.c b/math/s_fdimf.c
index 2e8eccf..8aed61d 100644
--- a/math/s_fdimf.c
+++ b/math/s_fdimf.c
@@ -19,6 +19,7 @@
 
 #include <errno.h>
 #include <math.h>
+#include <math_private.h>
 
 float
 __fdimf (float x, float y)
@@ -26,7 +27,7 @@ __fdimf (float x, float y)
   if (islessequal (x, y))
     return 0.0f;
 
-  float r = x - y;
+  float r = math_narrow_eval (x - y);
   if (isinf (r) && !isinf (x) && !isinf (y))
     __set_errno (ERANGE);
 
diff --git a/sysdeps/i386/fpu/s_fdim.S b/sysdeps/i386/fpu/s_fdim.S
deleted file mode 100644
index d62069b..0000000
--- a/sysdeps/i386/fpu/s_fdim.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdim)
-	fldl	4(%esp)		// x
-	fldl	12(%esp)	// x : y
-
-	fucom	%st(1)
-	fnstsw
-	sahf
-	jp	1f
-
-	jc	3f
-
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fxam
-	fnstsw
-	andb	$0x45, %ah
-	cmpb	$0x01, %ah
-	je	2f
-
-	fxch
-2:	fstp	%st(1)
-	ret
-END(__fdim)
-weak_alias (__fdim, fdim)
diff --git a/sysdeps/i386/fpu/s_fdimf.S b/sysdeps/i386/fpu/s_fdimf.S
deleted file mode 100644
index d2bd29a..0000000
--- a/sysdeps/i386/fpu/s_fdimf.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdimf)
-	flds	4(%esp)		// x
-	flds	8(%esp)		// x : y
-
-	fucom	%st(1)
-	fnstsw
-	sahf
-	jp	1f
-
-	jc	3f
-
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fxam
-	fnstsw
-	andb	$0x45, %ah
-	cmpb	$0x01, %ah
-	je	2f
-
-	fxch
-2:	fstp	%st(1)
-	ret
-END(__fdimf)
-weak_alias (__fdimf, fdimf)
diff --git a/sysdeps/i386/fpu/s_fdiml.S b/sysdeps/i386/fpu/s_fdiml.S
deleted file mode 100644
index df6e9c0..0000000
--- a/sysdeps/i386/fpu/s_fdiml.S
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdiml)
-	fldt	4(%esp)		// x
-	fldt	16(%esp)	// x : y
-
-	fucom	%st(1)
-	fnstsw
-	sahf
-	jp	1f
-
-	jc	3f
-
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fxam
-	fnstsw
-	andb	$0x45, %ah
-	cmpb	$0x01, %ah
-	je	2f
-
-	fxch
-2:	fstp	%st(1)
-	ret
-END(__fdiml)
-weak_alias (__fdiml, fdiml)
diff --git a/sysdeps/i386/i686/fpu/s_fdim.S b/sysdeps/i386/i686/fpu/s_fdim.S
deleted file mode 100644
index 2cbf815..0000000
--- a/sysdeps/i386/i686/fpu/s_fdim.S
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdim)
-	fldl	4(%esp)		// x
-	fldl	12(%esp)	// x : y
-
-	fucomi	%st(1), %st
-	jp	1f
-
-	jc	3f
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fucomi	%st(0), %st
-	fcmovnu	%st(1), %st
-2:	fstp	%st(1)
-	ret
-END(__fdim)
-weak_alias (__fdim, fdim)
diff --git a/sysdeps/i386/i686/fpu/s_fdimf.S b/sysdeps/i386/i686/fpu/s_fdimf.S
deleted file mode 100644
index 291433f..0000000
--- a/sysdeps/i386/i686/fpu/s_fdimf.S
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdimf)
-	flds	4(%esp)		// x
-	flds	8(%esp)		// x : y
-
-	fucomi	%st(1), %st
-	jp	1f
-
-	jc	3f
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fucomi	%st(0), %st
-	fcmovnu	%st(1), %st
-2:	fstp	%st(1)
-	ret
-END(__fdimf)
-weak_alias (__fdimf, fdimf)
diff --git a/sysdeps/i386/i686/fpu/s_fdiml.S b/sysdeps/i386/i686/fpu/s_fdiml.S
deleted file mode 100644
index 8cdfede..0000000
--- a/sysdeps/i386/i686/fpu/s_fdiml.S
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdiml)
-	fldt	4(%esp)		// x
-	fldt	16(%esp)	// x : y
-
-	fucomi	%st(1), %st
-	jp	1f
-
-	jc	3f
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fucomi	%st(0), %st
-	fcmovnu	%st(1), %st
-2:	fstp	%st(1)
-	ret
-END(__fdiml)
-weak_alias (__fdiml, fdiml)
diff --git a/sysdeps/powerpc/fpu/s_fdim.c b/sysdeps/powerpc/fpu/s_fdim.c
deleted file mode 100644
index 1d4b6d0..0000000
--- a/sysdeps/powerpc/fpu/s_fdim.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Return positive difference between arguments.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-double
-__fdim (double x, double y)
-{
-  return x <= y ? 0 : x - y;
-}
-weak_alias (__fdim, fdim)
-#ifdef NO_LONG_DOUBLE
-strong_alias (__fdim, __fdiml)
-weak_alias (__fdim, fdiml)
-#endif
diff --git a/sysdeps/powerpc/fpu/s_fdimf.c b/sysdeps/powerpc/fpu/s_fdimf.c
deleted file mode 100644
index 8c645c4..0000000
--- a/sysdeps/powerpc/fpu/s_fdimf.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Return positive difference between arguments.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-
-float
-__fdimf (float x, float y)
-{
-  return x <= y ? 0 : x - y;
-}
-weak_alias (__fdimf, fdimf)
diff --git a/sysdeps/powerpc/powerpc32/fpu/s_fdim.c b/sysdeps/powerpc/powerpc32/fpu/s_fdim.c
deleted file mode 100644
index e34b51e..0000000
--- a/sysdeps/powerpc/powerpc32/fpu/s_fdim.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fdim.c>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
-#endif
diff --git a/sysdeps/powerpc/powerpc64/fpu/s_fdim.c b/sysdeps/powerpc/powerpc64/fpu/s_fdim.c
deleted file mode 100644
index e34b51e..0000000
--- a/sysdeps/powerpc/powerpc64/fpu/s_fdim.c
+++ /dev/null
@@ -1,5 +0,0 @@
-#include <math_ldbl_opt.h>
-#include <sysdeps/powerpc/fpu/s_fdim.c>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
-compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
-#endif
diff --git a/sysdeps/x86_64/fpu/s_fdiml.S b/sysdeps/x86_64/fpu/s_fdiml.S
deleted file mode 100644
index f9f1e20..0000000
--- a/sysdeps/x86_64/fpu/s_fdiml.S
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Compute positive difference.
-   Copyright (C) 1997-2016 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
-
-   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, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <sysdep.h>
-
-	.text
-ENTRY(__fdiml)
-	fldt	8(%rsp)		// x
-	fldt	24(%rsp)	// x : y
-
-	fucomi	%st(1), %st
-	jp	1f
-
-	jc	3f
-	fstp	%st(1)
-	fldz
-	jmp	2f
-
-3:	fsubrp	%st, %st(1)
-	ret
-
-1:	fucomi	%st(0), %st
-	fcmovnu	%st(1), %st
-2:	fstp	%st(1)
-	ret
-END(__fdiml)
-weak_alias (__fdiml, fdiml)

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                              |   21 +++++++++++++
 math/libm-test.inc                     |   35 ++++++++++++++++++++-
 math/s_fdim.c                          |    3 +-
 math/s_fdimf.c                         |    3 +-
 sysdeps/i386/fpu/s_fdim.S              |   51 --------------------------------
 sysdeps/i386/fpu/s_fdimf.S             |   51 --------------------------------
 sysdeps/i386/fpu/s_fdiml.S             |   51 --------------------------------
 sysdeps/i386/i686/fpu/s_fdim.S         |   43 ---------------------------
 sysdeps/i386/i686/fpu/s_fdimf.S        |   43 ---------------------------
 sysdeps/i386/i686/fpu/s_fdiml.S        |   43 ---------------------------
 sysdeps/powerpc/fpu/s_fdim.c           |   30 ------------------
 sysdeps/powerpc/fpu/s_fdimf.c          |   26 ----------------
 sysdeps/powerpc/powerpc32/fpu/s_fdim.c |    5 ---
 sysdeps/powerpc/powerpc64/fpu/s_fdim.c |    5 ---
 sysdeps/x86_64/fpu/s_fdiml.S           |   43 ---------------------------
 15 files changed, 58 insertions(+), 395 deletions(-)
 delete mode 100644 sysdeps/i386/fpu/s_fdim.S
 delete mode 100644 sysdeps/i386/fpu/s_fdimf.S
 delete mode 100644 sysdeps/i386/fpu/s_fdiml.S
 delete mode 100644 sysdeps/i386/i686/fpu/s_fdim.S
 delete mode 100644 sysdeps/i386/i686/fpu/s_fdimf.S
 delete mode 100644 sysdeps/i386/i686/fpu/s_fdiml.S
 delete mode 100644 sysdeps/powerpc/fpu/s_fdim.c
 delete mode 100644 sysdeps/powerpc/fpu/s_fdimf.c
 delete mode 100644 sysdeps/powerpc/powerpc32/fpu/s_fdim.c
 delete mode 100644 sysdeps/powerpc/powerpc64/fpu/s_fdim.c
 delete mode 100644 sysdeps/x86_64/fpu/s_fdiml.S


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]