This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] Create a header for sparc ifunc expansion and use it forVIS3 ifuncs.
- From: David Miller <davem at davemloft dot net>
- To: libc-alpha at sourceware dot org
- Date: Thu, 15 Mar 2012 20:28:26 -0700 (PDT)
- Subject: [PATCH] Create a header for sparc ifunc expansion and use it forVIS3 ifuncs.
This creates macros that sparc IFUNC code can use so we don't
have the same exact piece of code showing up over and over again
in the tree. It also confines all the ugly ifdefs to the new
sparc-ifunc.h header file.
Committed to master.
* sysdeps/sparc/sparc-ifunc.h: New file.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: Use sparc-ifunc.h
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: Likewise.
* sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: Likewise.
---
ChangeLog | 42 ++++++++
sysdeps/sparc/sparc-ifunc.h | 112 ++++++++++++++++++++
.../sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S | 42 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S | 40 +-------
.../sparc32/sparcv9/fpu/multiarch/s_copysign.S | 40 +-------
.../sparc32/sparcv9/fpu/multiarch/s_copysignf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S | 40 +-------
.../sparc32/sparcv9/fpu/multiarch/s_llrintf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S | 40 +-------
.../sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S | 42 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S | 40 +-------
sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S | 40 +-------
40 files changed, 270 insertions(+), 1408 deletions(-)
create mode 100644 sysdeps/sparc/sparc-ifunc.h
diff --git a/ChangeLog b/ChangeLog
index 2765185..88f99c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,45 @@
+2012-03-15 David S. Miller <davem@davemloft.net>
+
+ * sysdeps/sparc/sparc-ifunc.h: New file.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S: Use sparc-ifunc.h
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S: Likewise.
+ * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S: Likewise.
+ * sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S: Likewise.
+
2012-03-15 Andreas Schwab <schwab@linux-m68k.org>
* sysdeps/powerpc/fpu/e_hypotf.c: Use double precision instead of
diff --git a/sysdeps/sparc/sparc-ifunc.h b/sysdeps/sparc/sparc-ifunc.h
new file mode 100644
index 0000000..db53a71
--- /dev/null
+++ b/sysdeps/sparc/sparc-ifunc.h
@@ -0,0 +1,112 @@
+/* This file is part of the GNU C Library.
+ Copyright (C) 2012 Free Software Foundation, Inc.
+
+ 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>
+
+#ifdef __ASSEMBLER__
+
+# ifdef SHARED
+
+# define SPARC_ASM_IFUNC_DFLT(name, dflt) \
+ENTRY (__##name) \
+ .type __##name, @gnu_indirect_function; \
+ SETUP_PIC_REG_LEAF(o3, o5); \
+ sethi %gdop_hix22(dflt), %o1; \
+ xor %o1, %gdop_lox10(dflt), %o1; \
+ add %o3, %o1, %o1; \
+ retl; \
+ mov %o1, %o0; \
+END (__##name)
+
+# define SPARC_ASM_IFUNC1(name, m1, f1, dflt) \
+ENTRY (__##name) \
+ .type __##name, @gnu_indirect_function; \
+ SETUP_PIC_REG_LEAF(o3, o5); \
+ set m1, %o1; \
+ andcc %o0, %o1, %g0; \
+ be 9f; \
+ nop; \
+ sethi %gdop_hix22(f1), %o1; \
+ xor %o1, %gdop_lox10(f1), %o1; \
+ ba 10f; \
+ nop; \
+9: sethi %gdop_hix22(dflt), %o1; \
+ xor %o1, %gdop_lox10(dflt), %o1; \
+10: add %o3, %o1, %o1; \
+ retl; \
+ mov %o1, %o0; \
+END (__##name)
+
+# else /* SHARED */
+
+# ifdef __arch64__
+# define SET(SYM, TMP, REG) setx SYM, TMP, REG
+# else
+# define SET(SYM, TMP, REG) set SYM, REG
+# endif
+
+# define SPARC_ASM_IFUNC_DFLT(name, dflt) \
+ENTRY (__##name) \
+ .type __##name, @gnu_indirect_function; \
+ SET(dflt, %g1, %o1); \
+ retl; \
+ mov %o1, %o0; \
+END (__##name)
+
+# define SPARC_ASM_IFUNC1(name, m1, f1, dflt) \
+ENTRY (__##name) \
+ .type __##name, @gnu_indirect_function; \
+ set m1, %o1; \
+ andcc %o0, %o1, %g0; \
+ be 9f; \
+ nop; \
+ SET(f1, %g1, %o1); \
+ ba 10f; \
+ nop; \
+9: SET(dflt, %g1, %o1); \
+10: retl; \
+ mov %o1, %o0; \
+END (__##name)
+
+# endif /* SHARED */
+
+# ifdef HAVE_AS_VIS3_SUPPORT
+
+#define SPARC_ASM_VIS3_IFUNC(name) \
+ SPARC_ASM_IFUNC1(name, HWCAP_SPARC_VIS3, \
+ __##name##_vis3, __##name##_generic)
+
+# else /* HAVE_AS_VIS3_SUPPORT */
+
+#define SPARC_ASM_VIS3_IFUNC(name) \
+ SPARC_ASM_IFUNC_DFLT(name, __##name##_generic)
+
+# endif /* HAVE_AS_VIS3_SUPPORT */
+
+
+#else /* __ASSEMBLER__ */
+
+# define sparc_libm_ifunc(name, expr) \
+ extern void *name##_ifunc (int) __asm__ (#name); \
+ void *name##_ifunc (int hwcap) \
+ { \
+ __typeof (name) *res = expr; \
+ return res; \
+ } \
+ __asm__ (".type " #name ", %gnu_indirect_function");
+
+#endif /* __ASSEMBLER__ */
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S
index f91fda6..ab5a809 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceil.S
@@ -1,46 +1,12 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(ceil)
- .text
-ENTRY(__ceil)
- .type __ceil, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__ceil_vis3), %o1
- xor %o1, %gdop_lox10(__ceil_vis3), %o1
-# else
- set __ceil_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__ceil_generic), %o1
- xor %o1, %gdop_lox10(__ceil_generic), %o1
-# else
- set __ceil_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__ceil)
weak_alias (__ceil, ceil)
# undef weak_alias
# define weak_alias(a, b)
-
+
#define __ceil __ceil_generic
#include "../s_ceil.S"
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S
index 048b619..3047dd8 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_ceilf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(ceilf)
- .text
-ENTRY(__ceilf)
- .type __ceilf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__ceilf_vis3), %o1
- xor %o1, %gdop_lox10(__ceilf_vis3), %o1
-# else
- set __ceilf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__ceilf_generic), %o1
- xor %o1, %gdop_lox10(__ceilf_generic), %o1
-# else
- set __ceilf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__ceilf)
weak_alias (__ceilf, ceilf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S
index 7179058..cdd98c0 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysign.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(copysign)
- .text
-ENTRY(__copysign)
- .type __copysign, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__copysign_vis3), %o1
- xor %o1, %gdop_lox10(__copysign_vis3), %o1
-# else
- set __copysign_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__copysign_generic), %o1
- xor %o1, %gdop_lox10(__copysign_generic), %o1
-# else
- set __copysign_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__copysign)
weak_alias (__copysign, copysign)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S
index 4d055f2..cd40955 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_copysignf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(copysignf)
- .text
-ENTRY(__copysignf)
- .type __copysignf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__copysignf_vis3), %o1
- xor %o1, %gdop_lox10(__copysignf_vis3), %o1
-# else
- set __copysignf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__copysignf_generic), %o1
- xor %o1, %gdop_lox10(__copysignf_generic), %o1
-# else
- set __copysignf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__copysignf)
weak_alias (__copysignf, copysignf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S
index ed70e4b..86c6398 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabs.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fabs)
- .text
-ENTRY(__fabs)
- .type __fabs, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fabs_vis3), %o1
- xor %o1, %gdop_lox10(__fabs_vis3), %o1
-# else
- set __fabs_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fabs_generic), %o1
- xor %o1, %gdop_lox10(__fabs_generic), %o1
-# else
- set __fabs_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fabs)
weak_alias (__fabs, fabs)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S
index 4b7351f..0f2e11e 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fabsf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fabsf)
- .text
-ENTRY(__fabsf)
- .type __fabsf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fabsf_vis3), %o1
- xor %o1, %gdop_lox10(__fabsf_vis3), %o1
-# else
- set __fabsf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fabsf_generic), %o1
- xor %o1, %gdop_lox10(__fabsf_generic), %o1
-# else
- set __fabsf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fabsf)
weak_alias (__fabsf, fabsf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S
index 1cdc53f..6ae9947 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floor.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(floor)
- .text
-ENTRY(__floor)
- .type __floor, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__floor_vis3), %o1
- xor %o1, %gdop_lox10(__floor_vis3), %o1
-# else
- set __floor_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__floor_generic), %o1
- xor %o1, %gdop_lox10(__floor_generic), %o1
-# else
- set __floor_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__floor)
weak_alias (__floor, floor)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S
index 0dcd0e1..31cda38 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_floorf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(floorf)
- .text
-ENTRY(__floorf)
- .type __floorf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__floorf_vis3), %o1
- xor %o1, %gdop_lox10(__floorf_vis3), %o1
-# else
- set __floorf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__floorf_generic), %o1
- xor %o1, %gdop_lox10(__floorf_generic), %o1
-# else
- set __floorf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__floorf)
weak_alias (__floorf, floorf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S
index f604f5b..d5e59d8 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmax.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fmax)
- .text
-ENTRY(__fmax)
- .type __fmax, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fmax_vis3), %o1
- xor %o1, %gdop_lox10(__fmax_vis3), %o1
-# else
- set __fmax_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fmax_generic), %o1
- xor %o1, %gdop_lox10(__fmax_generic), %o1
-# else
- set __fmax_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fmax)
weak_alias (__fmax, fmax)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S
index c188f8e..daa9157 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmaxf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fmaxf)
- .text
-ENTRY(__fmaxf)
- .type __fmaxf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fmaxf_vis3), %o1
- xor %o1, %gdop_lox10(__fmaxf_vis3), %o1
-# else
- set __fmaxf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fmaxf_generic), %o1
- xor %o1, %gdop_lox10(__fmaxf_generic), %o1
-# else
- set __fmaxf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fmaxf)
weak_alias (__fmaxf, fmaxf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S
index ed7018b..b2aec1b 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fmin.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fmin)
- .text
-ENTRY(__fmin)
- .type __fmin, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fmin_vis3), %o1
- xor %o1, %gdop_lox10(__fmin_vis3), %o1
-# else
- set __fmin_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fmin_generic), %o1
- xor %o1, %gdop_lox10(__fmin_generic), %o1
-# else
- set __fmin_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fmin)
weak_alias (__fmin, fmin)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S
index 6c7a492..c4690e1 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fminf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fminf)
- .text
-ENTRY(__fminf)
- .type __fminf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fminf_vis3), %o1
- xor %o1, %gdop_lox10(__fminf_vis3), %o1
-# else
- set __fminf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fminf_generic), %o1
- xor %o1, %gdop_lox10(__fminf_generic), %o1
-# else
- set __fminf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fminf)
weak_alias (__fminf, fminf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S
index 3a9294d..a904aec 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrint.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(llrint)
- .text
-ENTRY(__llrint)
- .type __llrint, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__llrint_vis3), %o1
- xor %o1, %gdop_lox10(__llrint_vis3), %o1
-# else
- set __llrint_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__llrint_generic), %o1
- xor %o1, %gdop_lox10(__llrint_generic), %o1
-# else
- set __llrint_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__llrint)
weak_alias (__llrint, llrint)
strong_alias (__llrint, __lllrint)
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S
index f2236f0..8af5244 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_llrintf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(llrintf)
- .text
-ENTRY(__llrintf)
- .type __llrintf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__llrintf_vis3), %o1
- xor %o1, %gdop_lox10(__llrintf_vis3), %o1
-# else
- set __llrintf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__llrintf_generic), %o1
- xor %o1, %gdop_lox10(__llrintf_generic), %o1
-# else
- set __llrintf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__llrintf)
weak_alias (__llrintf, llrintf)
strong_alias (__llrintf, __lllrintf)
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S
index 3872ae2..cc980eb 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rint.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(rint)
- .text
-ENTRY(__rint)
- .type __rint, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__rint_vis3), %o1
- xor %o1, %gdop_lox10(__rint_vis3), %o1
-# else
- set __rint_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__rint_generic), %o1
- xor %o1, %gdop_lox10(__rint_generic), %o1
-# else
- set __rint_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__rint)
weak_alias (__rint, rint)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S
index 9918929..38fd936 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_rintf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(rintf)
- .text
-ENTRY(__rintf)
- .type __rintf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__rintf_vis3), %o1
- xor %o1, %gdop_lox10(__rintf_vis3), %o1
-# else
- set __rintf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__rintf_generic), %o1
- xor %o1, %gdop_lox10(__rintf_generic), %o1
-# else
- set __rintf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__rintf)
weak_alias (__rintf, rintf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S
index 80b1576..3b07072 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrt.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(sqrt)
- .text
-ENTRY(__sqrt)
- .type __sqrt, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__sqrt_vis3), %o1
- xor %o1, %gdop_lox10(__sqrt_vis3), %o1
-# else
- set __sqrt_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__sqrt_generic), %o1
- xor %o1, %gdop_lox10(__sqrt_generic), %o1
-# else
- set __sqrt_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__sqrt)
weak_alias (__sqrt, sqrt)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S
index a700a4e..777a040 100644
--- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S
+++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/w_sqrtf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(sqrtf)
- .text
-ENTRY(__sqrtf)
- .type __sqrtf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__sqrtf_vis3), %o1
- xor %o1, %gdop_lox10(__sqrtf_vis3), %o1
-# else
- set __sqrtf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__sqrtf_generic), %o1
- xor %o1, %gdop_lox10(__sqrtf_generic), %o1
-# else
- set __sqrtf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__sqrtf)
weak_alias (__sqrtf, sqrtf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S
index f91fda6..ab5a809 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.S
@@ -1,46 +1,12 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(ceil)
- .text
-ENTRY(__ceil)
- .type __ceil, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__ceil_vis3), %o1
- xor %o1, %gdop_lox10(__ceil_vis3), %o1
-# else
- set __ceil_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__ceil_generic), %o1
- xor %o1, %gdop_lox10(__ceil_generic), %o1
-# else
- set __ceil_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__ceil)
weak_alias (__ceil, ceil)
# undef weak_alias
# define weak_alias(a, b)
-
+
#define __ceil __ceil_generic
#include "../s_ceil.S"
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S
index 048b619..3047dd8 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(ceilf)
- .text
-ENTRY(__ceilf)
- .type __ceilf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__ceilf_vis3), %o1
- xor %o1, %gdop_lox10(__ceilf_vis3), %o1
-# else
- set __ceilf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__ceilf_generic), %o1
- xor %o1, %gdop_lox10(__ceilf_generic), %o1
-# else
- set __ceilf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__ceilf)
weak_alias (__ceilf, ceilf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
index f4bfdce..78406a6 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_finite.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(finite)
- .text
-ENTRY(__finite)
- .type __finite, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__finite_vis3), %o1
- xor %o1, %gdop_lox10(__finite_vis3), %o1
-# else
- set __finite_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__finite_generic), %o1
- xor %o1, %gdop_lox10(__finite_generic), %o1
-# else
- set __finite_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__finite)
hidden_def (__finite)
weak_alias (__finite, finite)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
index 65ca7fd..cafd41f 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_finitef.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(finitef)
- .text
-ENTRY(__finitef)
- .type __finitef, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__finitef_vis3), %o1
- xor %o1, %gdop_lox10(__finitef_vis3), %o1
-# else
- set __finitef_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__finitef_generic), %o1
- xor %o1, %gdop_lox10(__finitef_generic), %o1
-# else
- set __finitef_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__finitef)
hidden_def (__finitef)
weak_alias (__finitef, finitef)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S
index 1cdc53f..6ae9947 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(floor)
- .text
-ENTRY(__floor)
- .type __floor, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__floor_vis3), %o1
- xor %o1, %gdop_lox10(__floor_vis3), %o1
-# else
- set __floor_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__floor_generic), %o1
- xor %o1, %gdop_lox10(__floor_generic), %o1
-# else
- set __floor_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__floor)
weak_alias (__floor, floor)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S
index 0dcd0e1..31cda38 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(floorf)
- .text
-ENTRY(__floorf)
- .type __floorf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__floorf_vis3), %o1
- xor %o1, %gdop_lox10(__floorf_vis3), %o1
-# else
- set __floorf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__floorf_generic), %o1
- xor %o1, %gdop_lox10(__floorf_generic), %o1
-# else
- set __floorf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__floorf)
weak_alias (__floorf, floorf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S
index f604f5b..d5e59d8 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_fmax.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fmax)
- .text
-ENTRY(__fmax)
- .type __fmax, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fmax_vis3), %o1
- xor %o1, %gdop_lox10(__fmax_vis3), %o1
-# else
- set __fmax_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fmax_generic), %o1
- xor %o1, %gdop_lox10(__fmax_generic), %o1
-# else
- set __fmax_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fmax)
weak_alias (__fmax, fmax)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S
index c188f8e..daa9157 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_fmaxf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fmaxf)
- .text
-ENTRY(__fmaxf)
- .type __fmaxf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fmaxf_vis3), %o1
- xor %o1, %gdop_lox10(__fmaxf_vis3), %o1
-# else
- set __fmaxf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fmaxf_generic), %o1
- xor %o1, %gdop_lox10(__fmaxf_generic), %o1
-# else
- set __fmaxf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fmaxf)
weak_alias (__fmaxf, fmaxf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S
index ed7018b..b2aec1b 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_fmin.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fmin)
- .text
-ENTRY(__fmin)
- .type __fmin, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fmin_vis3), %o1
- xor %o1, %gdop_lox10(__fmin_vis3), %o1
-# else
- set __fmin_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fmin_generic), %o1
- xor %o1, %gdop_lox10(__fmin_generic), %o1
-# else
- set __fmin_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fmin)
weak_alias (__fmin, fmin)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S
index 6c7a492..c4690e1 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_fminf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(fminf)
- .text
-ENTRY(__fminf)
- .type __fminf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__fminf_vis3), %o1
- xor %o1, %gdop_lox10(__fminf_vis3), %o1
-# else
- set __fminf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__fminf_generic), %o1
- xor %o1, %gdop_lox10(__fminf_generic), %o1
-# else
- set __fminf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__fminf)
weak_alias (__fminf, fminf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
index 8b47267..ed9b626 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(isinf)
- .text
-ENTRY(__isinf)
- .type __isinf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__isinf_vis3), %o1
- xor %o1, %gdop_lox10(__isinf_vis3), %o1
-# else
- set __isinf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__isinf_generic), %o1
- xor %o1, %gdop_lox10(__isinf_generic), %o1
-# else
- set __isinf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__isinf)
hidden_def (__isinf)
weak_alias (__isinf, isinf)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
index 9a42a01..0451739 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isinff.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(isinff)
- .text
-ENTRY(__isinff)
- .type __isinff, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__isinff_vis3), %o1
- xor %o1, %gdop_lox10(__isinff_vis3), %o1
-# else
- set __isinff_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__isinff_generic), %o1
- xor %o1, %gdop_lox10(__isinff_generic), %o1
-# else
- set __isinff_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__isinff)
hidden_def (__isinff)
weak_alias (__isinff, isinff)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
index d75077c..40e985a 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnan.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(isnan)
- .text
-ENTRY(__isnan)
- .type __isnan, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__isnan_vis3), %o1
- xor %o1, %gdop_lox10(__isnan_vis3), %o1
-# else
- set __isnan_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__isnan_generic), %o1
- xor %o1, %gdop_lox10(__isnan_generic), %o1
-# else
- set __isnan_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__isnan)
hidden_def (__isnan)
weak_alias (__isnan, isnan)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
index 6d11dd4..6b53b69 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_isnanf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(isnanf)
- .text
-ENTRY(__isnanf)
- .type __isnanf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__isnanf_vis3), %o1
- xor %o1, %gdop_lox10(__isnanf_vis3), %o1
-# else
- set __isnanf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__isnanf_generic), %o1
- xor %o1, %gdop_lox10(__isnanf_generic), %o1
-# else
- set __isnanf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__isnanf)
hidden_def (__isnanf)
weak_alias (__isnanf, isnanf)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
index e63e833..94af8f0 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrint.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(lrint)
- .text
-ENTRY(__lrint)
- .type __lrint, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__lrint_vis3), %o1
- xor %o1, %gdop_lox10(__lrint_vis3), %o1
-# else
- set __lrint_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__lrint_generic), %o1
- xor %o1, %gdop_lox10(__lrint_generic), %o1
-# else
- set __lrint_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__lrint)
weak_alias (__lrint, lrint)
strong_alias (__lrint, __llrint)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
index 809aaa8..e6ea406 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_lrintf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(lrintf)
- .text
-ENTRY(__lrintf)
- .type __lrintf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__lrintf_vis3), %o1
- xor %o1, %gdop_lox10(__lrintf_vis3), %o1
-# else
- set __lrintf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__lrintf_generic), %o1
- xor %o1, %gdop_lox10(__lrintf_generic), %o1
-# else
- set __lrintf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__lrintf)
weak_alias (__lrintf, lrintf)
strong_alias (__lrintf, __llrintf)
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
index 3872ae2..cc980eb 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_rint.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(rint)
- .text
-ENTRY(__rint)
- .type __rint, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__rint_vis3), %o1
- xor %o1, %gdop_lox10(__rint_vis3), %o1
-# else
- set __rint_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__rint_generic), %o1
- xor %o1, %gdop_lox10(__rint_generic), %o1
-# else
- set __rint_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__rint)
weak_alias (__rint, rint)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
index 9918929..38fd936 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_rintf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(rintf)
- .text
-ENTRY(__rintf)
- .type __rintf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__rintf_vis3), %o1
- xor %o1, %gdop_lox10(__rintf_vis3), %o1
-# else
- set __rintf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__rintf_generic), %o1
- xor %o1, %gdop_lox10(__rintf_generic), %o1
-# else
- set __rintf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__rintf)
weak_alias (__rintf, rintf)
# undef weak_alias
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
index a8e9728..e69550c 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbit.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(signbit)
- .text
-ENTRY(__signbit)
- .type __signbit, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__signbit_vis3), %o1
- xor %o1, %gdop_lox10(__signbit_vis3), %o1
-# else
- set __signbit_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__signbit_generic), %o1
- xor %o1, %gdop_lox10(__signbit_generic), %o1
-# else
- set __signbit_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__signbit)
weak_alias (__signbit, signbit)
/* On 64-bit the double version will also always work for
diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
index 721bc7f..c35c79f 100644
--- a/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
+++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_signbitf.S
@@ -1,41 +1,7 @@
-#include <sysdep.h>
+#include <sparc-ifunc.h>
+
+SPARC_ASM_VIS3_IFUNC(signbitf)
- .text
-ENTRY(__signbitf)
- .type __signbitf, @gnu_indirect_function
-# ifdef SHARED
- SETUP_PIC_REG_LEAF(o3, o5)
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
- set HWCAP_SPARC_VIS3, %o1
- andcc %o0, %o1, %g0
- be 9f
- nop
-# ifdef SHARED
- sethi %gdop_hix22(__signbitf_vis3), %o1
- xor %o1, %gdop_lox10(__signbitf_vis3), %o1
-# else
- set __signbitf_vis3, %o1
-# endif
- ba 10f
- nop
-9:
-# endif
-# ifdef SHARED
- sethi %gdop_hix22(__signbitf_generic), %o1
- xor %o1, %gdop_lox10(__signbitf_generic), %o1
-# else
- set __signbitf_generic, %o1
-# endif
-# ifdef HAVE_AS_VIS3_SUPPORT
-10:
-# endif
-# ifdef SHARED
- add %o3, %o1, %o1
-# endif
- retl
- mov %o1, %o0
-END(__signbitf)
weak_alias (__signbitf, signbitf)
# undef weak_alias
--
1.7.9.1