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.26.9000-862-g21bfcc3


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  21bfcc3d245734618f4fcb710b91c41b1483975b (commit)
       via  522228ddeae7b5cfb76332f80d2c0dfdb7055d4c (commit)
       via  2a6f4fab24289d0952128d15a6264ff9dbb2b649 (commit)
       via  712b5b83e1a1e2a6f3a8d554b2f3e3aab5b1928e (commit)
       via  c96d3335a30c214994bfcb2077518027b52dce07 (commit)
       via  c6862a237149f5ffcca6d9142f18b2b08fff9388 (commit)
       via  1cbd7bfe65e4fafdf77cccccf67950d2b5570d4a (commit)
      from  aa1142c593447b433208a79bd5a95095cd5dd892 (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=21bfcc3d245734618f4fcb710b91c41b1483975b

commit 21bfcc3d245734618f4fcb710b91c41b1483975b
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 13:42:07 2017 -0300

    sparc: refactor sparc64 rint{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    s_rint{f}-generic.S).
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
    	(libm-sysdep_routines): Add s_rintf-generic and s_rint-generic
    	objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S: Likewise.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index d0e393a..87a1d48 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,16 @@
 2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+	(libm-sysdep_routines): Add s_rintf-generic and s_rint-generic
+	objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S: Likewise.
+
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
 	(libm-sysdep_routines): Add s_lrint-generic and s_lrintf-generic
 	objects.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S: New file.
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index d0a87d1..3321e1d 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -11,6 +11,7 @@ sysdep_calls := s_signbitf-vis3 s_signbit-vis3 s_signbitf-generic \
 sysdep_routines += $(sysdep_calls)
 libm-sysdep_routines += s_lrintf-vis3 s_lrint-vis3 s_lrintf-generic \
 			s_lrint-generic s_rintf-vis3 s_rint-vis3 \
+			s_rintf-generic s_rint-generic \
 			s_fmaf-vis3 s_fma-vis3 s_fmaf-generic s_fma-generic \
 			s_nearbyint-vis3 s_nearbyintf-vis3 \
 			s_nearbyint-generic s_nearbyintf-generic \
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S
new file mode 100644
index 0000000..d927434
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S
@@ -0,0 +1,4 @@
+#define __rint __rint_generic
+#undef weak_alias
+#define weak_alias(a, b)
+#include <sysdeps/sparc/sparc64/fpu/s_rint.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
deleted file mode 100644
index cc980eb..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(rint)
-
-weak_alias (__rint, rint)
-
-# undef weak_alias
-# define weak_alias(a, b)
-
-#define __rint __rint_generic
-
-#include "../s_rint.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c
new file mode 100644
index 0000000..c53a7fe
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c
@@ -0,0 +1,29 @@
+/* rint ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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>
+#include <sparc-ifunc.h>
+
+extern __typeof (rint) __rint_vis3 attribute_hidden;
+extern __typeof (rint) __rint_generic attribute_hidden;
+
+sparc_libm_ifunc (__rint,
+		  hwcap & HWCAP_SPARC_VIS3
+		  ? __rint_vis3
+		  : __rint_generic);
+weak_alias (__rint, rint)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S
new file mode 100644
index 0000000..30da5f0
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S
@@ -0,0 +1,4 @@
+#define __rintf __rintf_generic
+#undef weak_alias
+#define weak_alias(a, b)
+#include <sysdeps/sparc/sparc64/fpu/s_rintf.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
deleted file mode 100644
index 38fd936..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(rintf)
-
-weak_alias (__rintf, rintf)
-
-# undef weak_alias
-# define weak_alias(a, b)
-
-#define __rintf __rintf_generic
-
-#include "../s_rintf.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c
new file mode 100644
index 0000000..6fdf092
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c
@@ -0,0 +1,29 @@
+/* rintf ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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>
+#include <sparc-ifunc.h>
+
+extern __typeof (rintf) __rintf_vis3 attribute_hidden;
+extern __typeof (rintf) __rintf_generic attribute_hidden;
+
+sparc_libm_ifunc (__rintf,
+		  hwcap & HWCAP_SPARC_VIS3
+		  ? __rintf_vis3
+		  : __rintf_generic);
+weak_alias (__rintf, rintf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=522228ddeae7b5cfb76332f80d2c0dfdb7055d4c

commit 522228ddeae7b5cfb76332f80d2c0dfdb7055d4c
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 13:20:00 2017 -0300

    sparc: refactor sparc64 lrint{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    s_lrint{f}-generic.S).
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
    	(libm-sysdep_routines): Add s_lrint-generic and s_lrint-generic
    	objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S: Likewise.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index 9a4b5c8..d0e393a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,16 @@
 2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+	(libm-sysdep_routines): Add s_lrint-generic and s_lrintf-generic
+	objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S: Likewise.
+
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
 	(libm-sysdep_routines): Add s_nearbyint-generic and
 	s_nearbyintf-generic objects.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S: New file.
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index 6062af0..d0a87d1 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -9,7 +9,8 @@ sysdep_calls := s_signbitf-vis3 s_signbit-vis3 s_signbitf-generic \
 		s_isnanf-vis3 s_isnan-vis3 s_isnanf-generic s_isnan-generic
 
 sysdep_routines += $(sysdep_calls)
-libm-sysdep_routines += s_lrintf-vis3 s_lrint-vis3 s_rintf-vis3 s_rint-vis3 \
+libm-sysdep_routines += s_lrintf-vis3 s_lrint-vis3 s_lrintf-generic \
+			s_lrint-generic s_rintf-vis3 s_rint-vis3 \
 			s_fmaf-vis3 s_fma-vis3 s_fmaf-generic s_fma-generic \
 			s_nearbyint-vis3 s_nearbyintf-vis3 \
 			s_nearbyint-generic s_nearbyintf-generic \
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S
new file mode 100644
index 0000000..e6ab999
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S
@@ -0,0 +1,6 @@
+#define __lrint __lrint_generic
+#undef weak_alias
+#define weak_alias(a,b)
+#undef strong_alias
+#define strong_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_lrint.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
deleted file mode 100644
index 94af8f0..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(lrint)
-
-weak_alias (__lrint, lrint)
-
-strong_alias (__lrint, __llrint)
-weak_alias (__llrint, llrint)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef strong_alias
-# define strong_alias(a, b)
-
-#define __lrint __lrint_generic
-
-#include "../s_lrint.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c
new file mode 100644
index 0000000..557f0d6
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c
@@ -0,0 +1,39 @@
+/* lrint/llrint ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define lrint __redirect_lrint
+#define llrint __redirect_llrint
+#define __lrint __redirect___lrint
+#define __llrint __redirect___llrint
+#include <math.h>
+#undef lrint
+#undef llrint
+#undef __lrint
+#undef __llrint
+#include <sparc-ifunc.h>
+
+extern __typeof (__redirect_lrint) __lrint_vis3 attribute_hidden;
+extern __typeof (__redirect_lrint) __lrint_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect_lrint, __lrint,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __lrint_vis3
+			     : __lrint_generic);
+weak_alias (__lrint, lrint)
+strong_alias (__lrint, __llrint)
+weak_alias (__llrint, llrint)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S
new file mode 100644
index 0000000..4cfbf4a
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S
@@ -0,0 +1,6 @@
+#define __lrintf __lrintf_generic
+#undef weak_alias
+#define weak_alias(a,b)
+#undef strong_alias
+#define strong_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_lrintf.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
deleted file mode 100644
index e6ea406..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
+++ /dev/null
@@ -1,17 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(lrintf)
-
-weak_alias (__lrintf, lrintf)
-
-strong_alias (__lrintf, __llrintf)
-weak_alias (__llrintf, llrintf)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef strong_alias
-# define strong_alias(a, b)
-
-#define __lrintf __lrintf_generic
-
-#include "../s_lrintf.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c
new file mode 100644
index 0000000..9b1a569
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c
@@ -0,0 +1,39 @@
+/* lrintf/llrintf ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define lrintf __redirect_lrintf
+#define llrintf __redirect_llrintf
+#define __lrintf __redirect_lrintf
+#define __llrintf __redirect_llrintf
+#include <math.h>
+#undef lrintf
+#undef llrintf
+#undef __lrintf
+#undef __llrintf
+#include <sparc-ifunc.h>
+
+extern __typeof (__redirect_lrintf) __lrintf_vis3 attribute_hidden;
+extern __typeof (__redirect_lrintf) __lrintf_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect_lrintf, __lrintf,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __lrintf_vis3
+			     : __lrintf_generic);
+weak_alias (__lrintf, lrintf)
+strong_alias (__lrintf, __llrintf)
+weak_alias (__llrintf, llrintf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=2a6f4fab24289d0952128d15a6264ff9dbb2b649

commit 2a6f4fab24289d0952128d15a6264ff9dbb2b649
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 12:00:28 2017 -0300

    sparc: refactor sparc64 nearbyint{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    s_nearbyint{f}-generic.S).
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
    	(libm-sysdep_routines): Add s_nearbyint-generic and
    	s_nearbyintf-generic objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S: Likewise.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index 5cbdd71..9a4b5c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+	(libm-sysdep_routines): Add s_nearbyint-generic and
+	s_nearbyintf-generic objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S: Likewise.
+
 	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
 	Add s_finitef-generic and s_finite-generic objects.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S: New file.
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index d19a446..6062af0 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -12,6 +12,7 @@ sysdep_routines += $(sysdep_calls)
 libm-sysdep_routines += s_lrintf-vis3 s_lrint-vis3 s_rintf-vis3 s_rint-vis3 \
 			s_fmaf-vis3 s_fma-vis3 s_fmaf-generic s_fma-generic \
 			s_nearbyint-vis3 s_nearbyintf-vis3 \
+			s_nearbyint-generic s_nearbyintf-generic \
 			s_ceilf-vis3 s_ceil-vis3 s_ceilf-generic \
 			s_ceil-generic s_floorf-vis3 s_floor-vis3 \
 			s_floorf-generic s_floor-generic s_truncf-vis3 \
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S
new file mode 100644
index 0000000..efe2383
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S
@@ -0,0 +1,4 @@
+#define __nearbyint __nearbyint_generic
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_nearbyint.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S
deleted file mode 100644
index bb75ab3..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(nearbyint)
-
-weak_alias (__nearbyint, nearbyint)
-
-# undef weak_alias
-# define weak_alias(a, b)
-
-#define __nearbyint __nearbyint_generic
-
-#include "../s_nearbyint.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c
new file mode 100644
index 0000000..1ed497a
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c
@@ -0,0 +1,29 @@
+/* nearbyint ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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>
+#include <sparc-ifunc.h>
+
+extern __typeof (nearbyint) __nearbyint_vis3 attribute_hidden;
+extern __typeof (nearbyint) __nearbyint_generic attribute_hidden;
+
+sparc_libm_ifunc (__nearbyint,
+		  hwcap & HWCAP_SPARC_VIS3
+		  ? __nearbyint_vis3
+		  : __nearbyint_generic);
+weak_alias (__nearbyint, nearbyint)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S
new file mode 100644
index 0000000..a2e38e9
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S
@@ -0,0 +1,4 @@
+#define __nearbyintf __nearbyintf_generic
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_nearbyintf.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S
deleted file mode 100644
index 95100c1..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(nearbyintf)
-
-weak_alias (__nearbyintf, nearbyintf)
-
-# undef weak_alias
-# define weak_alias(a, b)
-
-#define __nearbyintf __nearbyintf_generic
-
-#include "../s_nearbyintf.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c
new file mode 100644
index 0000000..0de020e
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c
@@ -0,0 +1,29 @@
+/* nearbyintf ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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>
+#include <sparc-ifunc.h>
+
+extern __typeof (nearbyintf) __nearbyintf_vis3 attribute_hidden;
+extern __typeof (nearbyintf) __nearbyintf_generic attribute_hidden;
+
+sparc_libm_ifunc (__nearbyintf,
+		  hwcap & HWCAP_SPARC_VIS3
+		  ? __nearbyintf_vis3
+		  : __nearbyintf_generic);
+weak_alias (__nearbyintf, nearbyintf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=712b5b83e1a1e2a6f3a8d554b2f3e3aab5b1928e

commit 712b5b83e1a1e2a6f3a8d554b2f3e3aab5b1928e
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 11:48:57 2017 -0300

    sparc: refactor sparc64 finite{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    s_finite{f}-generic.S).
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
    	Add s_finitef-generic and s_finite-generic objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S: Remove file.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index 8a18e71..5cbdd71 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
 2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
+	Add s_finitef-generic and s_finite-generic objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S: Remove file.
+
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
 	Add s_isinff-generic and s_isinf-generic objects.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S: New file.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c: Likewise.
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index f0c8fa3..d19a446 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -4,6 +4,7 @@ ifeq ($(subdir),math)
 # prefixed with  m_.
 sysdep_calls := s_signbitf-vis3 s_signbit-vis3 s_signbitf-generic \
 		s_signbit-generic s_finitef-vis3 s_finite-vis3 \
+		s_finitef-generic s_finite-generic \
 		s_isinff-vis3 s_isinf-vis3 s_isinff-generic s_isinf-generic \
 		s_isnanf-vis3 s_isnan-vis3 s_isnanf-generic s_isnan-generic
 
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S
new file mode 100644
index 0000000..dfbf32f
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S
@@ -0,0 +1,6 @@
+#define __finite __finite_generic
+#undef hidden_def
+#define hidden_def(a)
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_finite.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
deleted file mode 100644
index 78406a6..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(finite)
-
-hidden_def (__finite)
-weak_alias (__finite, finite)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __finite __finite_generic
-
-#include "../s_finite.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c
new file mode 100644
index 0000000..22e46c4
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c
@@ -0,0 +1,37 @@
+/* finite ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __finite __redirect___finite
+#define __finitef __redirect___finitef
+#define __finitel __redirect___finitel
+#include <math.h>
+#undef __finite
+#undef __finitef
+#undef __finitel
+#include <sparc-ifunc.h>
+
+extern __typeof (finite) __finite_vis3 attribute_hidden;
+extern __typeof (finite) __finite_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect___finite, __finite,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __finite_vis3
+			     : __finite_generic);
+
+sparc_ifunc_redirected_hidden_def (__redirect___finite, __finite)
+weak_alias (__finite, finite)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S
new file mode 100644
index 0000000..3888076
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S
@@ -0,0 +1,6 @@
+#define __finitef __finitef_generic
+#undef hidden_def
+#define hidden_def(a)
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_finitef.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
deleted file mode 100644
index cafd41f..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(finitef)
-
-hidden_def (__finitef)
-weak_alias (__finitef, finitef)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __finitef __finitef_generic
-
-#include "../s_finitef.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c
new file mode 100644
index 0000000..695e8a0
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c
@@ -0,0 +1,33 @@
+/* finitef ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __finitef __redirect___finitef
+#include <math.h>
+#undef __finitef
+#include <sparc-ifunc.h>
+
+extern __typeof (finitef) __finitef_vis3 attribute_hidden;
+extern __typeof (finitef) __finitef_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect___finitef, __finitef,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __finitef_vis3
+			     : __finitef_generic);
+
+sparc_ifunc_redirected_hidden_def (__redirect___finitef, __finitef)
+weak_alias (__finitef, finitef)

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

commit c96d3335a30c214994bfcb2077518027b52dce07
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 11:39:43 2017 -0300

    sparc: refactor sparc64 isinf{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    s_isinf{f}-generic.S).
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
    	Add isinff-generic and s_isinf-generic objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S: Likewise.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index ade36e3..8a18e71 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
 2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
+	Add s_isinff-generic and s_isinf-generic objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S: Likewise.
+
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
 	Add s_isnanf-generic and s_isnan-generic objects.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S: New file.
 	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S: Likewise.
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index a46773b..f0c8fa3 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -3,8 +3,8 @@ ifeq ($(subdir),math)
 # by printf.  While the libc objects have the prefix s_, the libm ones are
 # prefixed with  m_.
 sysdep_calls := s_signbitf-vis3 s_signbit-vis3 s_signbitf-generic \
-		s_signbit-generic s_finitef-vis3 \
-		s_finite-vis3 s_isinff-vis3 s_isinf-vis3 \
+		s_signbit-generic s_finitef-vis3 s_finite-vis3 \
+		s_isinff-vis3 s_isinf-vis3 s_isinff-generic s_isinf-generic \
 		s_isnanf-vis3 s_isnan-vis3 s_isnanf-generic s_isnan-generic
 
 sysdep_routines += $(sysdep_calls)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S
new file mode 100644
index 0000000..ebaf054
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S
@@ -0,0 +1,6 @@
+#define __isinf __isinf_generic
+#undef hidden_def
+#define hidden_def(a)
+#undef weak_alias
+#define weak_alias(a,b)
+#include <./sysdeps/sparc/sparc64/fpu/s_isinf.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
deleted file mode 100644
index ed9b626..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(isinf)
-
-hidden_def (__isinf)
-weak_alias (__isinf, isinf)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __isinf __isinf_generic
-
-#include "../s_isinf.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c
new file mode 100644
index 0000000..d7fec22
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c
@@ -0,0 +1,37 @@
+/* isinf ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __isinf __redirect___isinf
+#define __isinff __redirect___isinff
+#define __isinfl __redirect___isinfl
+#include <math.h>
+#undef __isinf
+#undef __isinff
+#undef __isinfl
+#include <sparc-ifunc.h>
+
+extern __typeof (isinf) __isinf_vis3 attribute_hidden;
+extern __typeof (isinf) __isinf_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect___isinf, __isinf,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __isinf_vis3
+			     : __isinf_generic)
+
+sparc_ifunc_redirected_hidden_def (__redirect___isinf, __isinf)
+weak_alias (__isinf, isinf)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S
new file mode 100644
index 0000000..d37243f
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S
@@ -0,0 +1,6 @@
+#define __isinff __isinff_generic
+#undef hidden_def
+#define hidden_def(a)
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_isinff.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
deleted file mode 100644
index 0451739..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(isinff)
-
-hidden_def (__isinff)
-weak_alias (__isinff, isinff)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __isinff __isinff_generic
-
-#include "../s_isinff.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c
new file mode 100644
index 0000000..31c67f3
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c
@@ -0,0 +1,33 @@
+/* isinff ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __isinff __redirect___isinff
+#include <math.h>
+#undef __isinff
+#include <sparc-ifunc.h>
+
+extern __typeof (isinff) __isinff_vis3 attribute_hidden;
+extern __typeof (isinff) __isinff_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect___isinff, __isinff,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __isinff_vis3
+			     : __isinff_generic);
+
+sparc_ifunc_redirected_hidden_def (__redirect___isinff, __isinff)
+weak_alias (__isinff, isinff)

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

commit c6862a237149f5ffcca6d9142f18b2b08fff9388
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 11:28:55 2017 -0300

    sparc: refactor sparc64 isnan{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    (s_isnan{f}-generic.S).
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
    	Add s_isnanf-generic and s_isnan-generic objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S: Likewise.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index 44ea47e..ade36e3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdeps_calls):
+	Add s_isnanf-generic and s_isnan-generic objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S: Likewise.
+
 	* sysdeps/sparc/sparc-ifunc.h (sparc_libm_ifunc_redirected): New
 	macro.
 	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdep_calls): New
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index 702452c..a46773b 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -5,7 +5,7 @@ ifeq ($(subdir),math)
 sysdep_calls := s_signbitf-vis3 s_signbit-vis3 s_signbitf-generic \
 		s_signbit-generic s_finitef-vis3 \
 		s_finite-vis3 s_isinff-vis3 s_isinf-vis3 \
-		s_isnanf-vis3 s_isnan-vis3
+		s_isnanf-vis3 s_isnan-vis3 s_isnanf-generic s_isnan-generic
 
 sysdep_routines += $(sysdep_calls)
 libm-sysdep_routines += s_lrintf-vis3 s_lrint-vis3 s_rintf-vis3 s_rint-vis3 \
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S
new file mode 100644
index 0000000..64d4430
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S
@@ -0,0 +1,6 @@
+#define __isnan __isnan_generic
+#undef hidden_def
+#define hidden_def(a)
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_isnan.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
deleted file mode 100644
index 40e985a..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(isnan)
-
-hidden_def (__isnan)
-weak_alias (__isnan, isnan)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __isnan __isnan_generic
-
-#include "../s_isnan.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c
new file mode 100644
index 0000000..ffdf504
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c
@@ -0,0 +1,37 @@
+/* isnan ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __isnan __redirect___isnan
+#define __isnanf __redirect___isnanf
+#define __isnanl __redirect___isnanl
+#include <math.h>
+#undef __isnan
+#undef __isnanf
+#undef __isnanl
+#include <sparc-ifunc.h>
+
+extern __typeof (isnan) __isnan_vis3 attribute_hidden;
+extern __typeof (isnan) __isnan_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect___isnan, __isnan,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __isnan_vis3
+			     : __isnan_generic);
+
+sparc_ifunc_redirected_hidden_def (__redirect___isnan, __isnan)
+weak_alias (__isnan, isnan)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S
new file mode 100644
index 0000000..5c82f7d
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S
@@ -0,0 +1,6 @@
+#define __isnanf __isnanf_generic
+#undef hidden_def
+#define hidden_def(a)
+#undef weak_alias
+#define weak_alias(a,b)
+#include <sysdeps/sparc/sparc64/fpu/s_isnanf.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
deleted file mode 100644
index 6b53b69..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(isnanf)
-
-hidden_def (__isnanf)
-weak_alias (__isnanf, isnanf)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __isnanf __isnanf_generic
-
-#include "../s_isnanf.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c
new file mode 100644
index 0000000..7103830
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c
@@ -0,0 +1,33 @@
+/* isnanf ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __isnanf __redirect___isnanf
+#include <math.h>
+#undef __isnanf
+#include <sparc-ifunc.h>
+
+extern __typeof (isnanf) __isnanf_vis3 attribute_hidden;
+extern __typeof (isnanf) __isnanf_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect___isnanf, __isnanf,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __isnanf_vis3
+			     : __isnanf_generic);
+
+sparc_ifunc_redirected_hidden_def (__redirect___isnanf,__isnanf)
+weak_alias (__isnanf, isnanf)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1cbd7bfe65e4fafdf77cccccf67950d2b5570d4a

commit 1cbd7bfe65e4fafdf77cccccf67950d2b5570d4a
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Oct 13 09:56:49 2017 -0300

    sparc: refactor sparc64 signbit{f} selector to C
    
    This patch refactors the sparc64 ifunc selector to a C implementation.
    Also, the generic symbol is moved to its own implementation file
    (s_signbit{f}-generic.S).
    
    It also simplifies the multiarch Makefile by moving the common objects
    from libm-sysdeps_routines and sysdeps_routines to a new sysdeps_call
    rule and including it where required with the correct prefix.
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
    
    	* sysdeps/sparc/sparc-ifunc.h (sparc_libm_ifunc_redirected): New
    	macro.
    	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdep_calls): New
    	rule.
    	(sysdep_routines): Use sysdep_calls as base.
    	(libm-sysdep_routines): Add generic rule for symbols shared with
    	libc.  Add s_signbit-generic and s_signbitf-generic objects.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c: New file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S: Likewise.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: Remove file.
    	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: Likewise.
    
    Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

diff --git a/ChangeLog b/ChangeLog
index 89ed1f4..44ea47e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2017-11-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+
+	* sysdeps/sparc/sparc-ifunc.h (sparc_libm_ifunc_redirected): New
+	macro.
+	* sysdeps/sparc/sparc64/fpu/multiarch/Makefile (sysdep_calls): New
+	rule.
+	(sysdep_routines): Use sysdep_calls as base.
+	(libm-sysdep_routines): Add generic rule for symbols shared with
+	libc.  Add s_signbit-generic and s_signbitf-generic objects.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c: New file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S: Likewise.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: Remove file.
+	* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: Likewise.
+
 2017-11-29  Joseph Myers  <joseph@codesourcery.com>
 
 	* sysdeps/ia64/fpu/libm-symbols.h: Include <libm-alias-float.h>.
diff --git a/sysdeps/sparc/sparc-ifunc.h b/sysdeps/sparc/sparc-ifunc.h
index 54420d8..4a68cf1 100644
--- a/sysdeps/sparc/sparc-ifunc.h
+++ b/sysdeps/sparc/sparc-ifunc.h
@@ -158,6 +158,9 @@ END (__##name)
 
 # define sparc_libc_ifunc(name, expr) sparc_libm_ifunc (name, expr)
 
+# define sparc_libm_ifunc_redirected(redirected_name, name, expr)	\
+  __ifunc (redirected_name, name, expr, int hwcap, libm_ifunc_init)
+
 /* It essentially does libc_hidden_builtin_def (name) and redirect
    the internal redirected symbol to ifunc implementation.  */
 # if defined SHARED
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
index 2ac4496..702452c 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile
@@ -1,17 +1,21 @@
 ifeq ($(subdir),math)
-libm-sysdep_routines += m_signbitf-vis3 m_signbit-vis3 m_finitef-vis3 \
-			m_finite-vis3 m_isinff-vis3 m_isinf-vis3 \
-			m_isnanf-vis3 m_isnan-vis3 s_lrintf-vis3 \
-			s_lrint-vis3 s_rintf-vis3 s_rint-vis3 \
+# These functions are built both for libc and libm because they're required
+# by printf.  While the libc objects have the prefix s_, the libm ones are
+# prefixed with  m_.
+sysdep_calls := s_signbitf-vis3 s_signbit-vis3 s_signbitf-generic \
+		s_signbit-generic s_finitef-vis3 \
+		s_finite-vis3 s_isinff-vis3 s_isinf-vis3 \
+		s_isnanf-vis3 s_isnan-vis3
+
+sysdep_routines += $(sysdep_calls)
+libm-sysdep_routines += s_lrintf-vis3 s_lrint-vis3 s_rintf-vis3 s_rint-vis3 \
 			s_fmaf-vis3 s_fma-vis3 s_fmaf-generic s_fma-generic \
 			s_nearbyint-vis3 s_nearbyintf-vis3 \
 			s_ceilf-vis3 s_ceil-vis3 s_ceilf-generic \
 			s_ceil-generic s_floorf-vis3 s_floor-vis3 \
 			s_floorf-generic s_floor-generic s_truncf-vis3 \
-			s_trunc-vis3 s_truncf-generic s_trunc-generic
-sysdep_routines += s_signbitf-vis3 s_signbit-vis3 s_finitef-vis3 \
-		   s_finite-vis3 s_isinff-vis3 s_isinf-vis3 \
-		   s_isnanf-vis3 s_isnan-vis3
+			s_trunc-vis3 s_truncf-generic s_trunc-generic \
+			$(sysdep_calls:s_%=m_%)
 
 CFLAGS-s_ceilf-vis3.c += -Wa,-Av9d -mvis3
 CFLAGS-s_ceil-vis3.c += -Wa,-Av9d -mvis3
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S
new file mode 100644
index 0000000..dfa40ac
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S
@@ -0,0 +1,6 @@
+#define __signbit __signbit_generic
+#undef strong_alias
+#define strong_alias(a, b)
+#undef hidden_def
+#define hidden_def(a)
+#include <sysdeps/sparc/sparc64/fpu/s_signbit.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
deleted file mode 100644
index b8ff64a..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(signbit)
-
-/* On 64-bit the double version will also always work for
-   long-double-precision since in both cases the word with the
-   sign bit in it is passed always in register %f0.  */
-strong_alias (__signbit, __signbitl)
-hidden_def (__signbitl)
-
-# undef weak_alias
-# define weak_alias(a, b)
-# undef strong_alias
-# define strong_alias(a, b)
-# undef hidden_def
-# define hidden_def(a)
-
-#define __signbit __signbit_generic
-
-#include "../s_signbit.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c
new file mode 100644
index 0000000..47596bc
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c
@@ -0,0 +1,37 @@
+/* signbit ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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/>.  */
+
+#define __signbit __redirect_signbit
+#include <math.h>
+#undef __signbit
+
+#include <sparc-ifunc.h>
+
+extern __typeof (__redirect_signbit) __signbit_vis3 attribute_hidden;
+extern __typeof (__redirect_signbit) __signbit_generic attribute_hidden;
+
+sparc_libm_ifunc_redirected (__redirect_signbit, __signbit,
+			     hwcap & HWCAP_SPARC_VIS3
+			     ? __signbit_vis3
+			     : __signbit_generic);
+
+/* On 64-bit the double version will also always work for
+   long-double-precision since in both cases the word with the
+   sign bit in it is passed always in register %f0.  */
+strong_alias (__signbit, __signbitl)
+sparc_ifunc_redirected_hidden_def (__redirect_signbit, __signbitl)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S
new file mode 100644
index 0000000..851ff35
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S
@@ -0,0 +1,2 @@
+#define __signbitf __signbitf_generic
+#include <sysdeps/sparc/sparc64/fpu/s_signbitf.S>
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
deleted file mode 100644
index d57e999..0000000
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <sparc-ifunc.h>
-
-SPARC_ASM_VIS3_IFUNC(signbitf)
-
-# undef weak_alias
-# define weak_alias(a, b)
-
-#define __signbitf __signbitf_generic
-
-#include "../s_signbitf.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c
new file mode 100644
index 0000000..85a97ce
--- /dev/null
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c
@@ -0,0 +1,28 @@
+/* signbit ifunc resolver, Linux/sparc64 version.
+   Copyright (C) 2017 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>
+#include <sparc-ifunc.h>
+
+extern int __signbitf_vis3 (float) attribute_hidden;
+extern int __signbitf_generic (float) attribute_hidden;
+
+sparc_libm_ifunc(__signbitf,
+		 hwcap & HWCAP_SPARC_VIS3
+		 ? __signbitf_vis3
+		 : __signbitf_generic);

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

Summary of changes:
 ChangeLog                                          |   73 ++++++++++++++++++++
 sysdeps/sparc/sparc-ifunc.h                        |    3 +
 sysdeps/sparc/sparc64/fpu/multiarch/Makefile       |   24 ++++--
 .../sparc/sparc64/fpu/multiarch/s_finite-generic.S |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S     |   15 ----
 sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c     |   37 ++++++++++
 .../sparc64/fpu/multiarch/s_finitef-generic.S      |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S    |   15 ----
 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c    |   33 +++++++++
 .../sparc/sparc64/fpu/multiarch/s_isinf-generic.S  |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S      |   15 ----
 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c      |   37 ++++++++++
 .../sparc/sparc64/fpu/multiarch/s_isinff-generic.S |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S     |   15 ----
 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c     |   33 +++++++++
 .../sparc/sparc64/fpu/multiarch/s_isnan-generic.S  |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S      |   15 ----
 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c      |   37 ++++++++++
 .../sparc/sparc64/fpu/multiarch/s_isnanf-generic.S |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S     |   15 ----
 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c     |   33 +++++++++
 .../sparc/sparc64/fpu/multiarch/s_lrint-generic.S  |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S      |   17 -----
 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c      |   39 +++++++++++
 .../sparc/sparc64/fpu/multiarch/s_lrintf-generic.S |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S     |   17 -----
 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c     |   39 +++++++++++
 .../sparc64/fpu/multiarch/s_nearbyint-generic.S    |    4 +
 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S  |   12 ---
 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c  |   29 ++++++++
 .../sparc64/fpu/multiarch/s_nearbyintf-generic.S   |    4 +
 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S |   12 ---
 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c |   29 ++++++++
 .../sparc/sparc64/fpu/multiarch/s_rint-generic.S   |    4 +
 sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S       |   12 ---
 sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c       |   29 ++++++++
 .../sparc/sparc64/fpu/multiarch/s_rintf-generic.S  |    4 +
 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S      |   12 ---
 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c      |   29 ++++++++
 .../sparc64/fpu/multiarch/s_signbit-generic.S      |    6 ++
 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S    |   20 ------
 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c    |   37 ++++++++++
 .../sparc64/fpu/multiarch/s_signbitf-generic.S     |    2 +
 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S   |   10 ---
 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c   |   28 ++++++++
 45 files changed, 633 insertions(+), 210 deletions(-)
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finite-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finite.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyint.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_nearbyintf.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rint-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rint.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.c
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf-generic.S
 delete mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
 create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.c


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]