]> sourceware.org Git - glibc.git/commitdiff
sparc32/sparcv9: add a VIS3 version of fdim
authorAurelien Jarno <aurelien@aurel32.net>
Fri, 5 Aug 2016 20:35:01 +0000 (22:35 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Fri, 5 Aug 2016 20:35:01 +0000 (22:35 +0200)
sparc32 passes floating point values in the integer registers. VIS3
instructions gives access to the movwtos instruction to directly
transfer a value from an integer register to a floating point register.
Therefore it makes sense to provide a VIS3 version consisting in the
generic version compiled with -mvis3.

Changelog:
* math/s_fdim.c: Avoid alias renamed.
* math/s_fdimf.c: Likewise.
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile
[$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines):
Add s_fdimf-vis3, s_fdim-vis3.
(CFLAGS-s_fdimf-vis3.c): New. Set to -Wa,-Av9d -mvis3.
(CFLAGS-s_fdim-vis3.c): Likewise.
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c: New file.
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c: Likewise.

ChangeLog
math/s_fdim.c
math/s_fdimf.c
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.c [new file with mode: 0644]
sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.c [new file with mode: 0644]

index 3927bf785bf73380836899c752ff4ab1c9e2738a..d244dccfbe7414806aeabdb085aec36ba8f465e5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2016-08-05  Aurelien Jarno  <aurelien@aurel32.net>
+
+       * math/s_fdim.c: Avoid alias renamed.
+       * math/s_fdimf.c: Likewise.
+       * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile
+       [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines):
+       Add s_fdimf-vis3, s_fdim-vis3.
+       (CFLAGS-s_fdimf-vis3.c): New. Set to -Wa,-Av9d -mvis3.
+       (CFLAGS-s_fdim-vis3.c): Likewise.
+       sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c: New file.
+       sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c: Likewise.
+
 2016-08-05  Aurelien Jarno  <aurelien@aurel32.net>
 
        * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile
index a051ed8db9672be37296431fb88d31fbcc89176f..1786521c17fcd7a3a706e5f1980b9c622a3143ce 100644 (file)
@@ -33,8 +33,10 @@ __fdim (double x, double y)
 
   return r;
 }
+#ifndef __fdim
 weak_alias (__fdim, fdim)
-#ifdef NO_LONG_DOUBLE
+# ifdef NO_LONG_DOUBLE
 strong_alias (__fdim, __fdiml)
 weak_alias (__fdim, fdiml)
+# endif
 #endif
index 8aed61d9e7e9119b1b6a2000f19266fa48bdcee4..e457f9d3b9d5eee21c2852863e36cb755547b999 100644 (file)
@@ -33,4 +33,6 @@ __fdimf (float x, float y)
 
   return r;
 }
+#ifndef __fdimf
 weak_alias (__fdimf, fdimf)
+#endif
index 13d3c6db513309c38c43b059a9fc259ec803e5ac..4489b70cff0533cd34711a546d40c2b96b5e435e 100644 (file)
@@ -5,7 +5,10 @@ libm-sysdep_routines += m_copysignf-vis3 m_copysign-vis3 s_fabs-vis3 \
                        s_rintf-vis3 s_rint-vis3 w_sqrt-vis3 w_sqrtf-vis3 \
                        s_fminf-vis3 s_fmin-vis3 s_fmaxf-vis3 s_fmax-vis3 \
                        s_fmaf-vis3 s_fma-vis3 s_nearbyint-vis3 \
-                       s_nearbyintf-vis3
+                       s_nearbyintf-vis3 s_fdimf-vis3 s_fdim-vis3
 sysdep_routines += s_copysignf-vis3 s_copysign-vis3
+
+CFLAGS-s_fdimf-vis3.c += -Wa,-Av9d -mvis3
+CFLAGS-s_fdim-vis3.c += -Wa,-Av9d -mvis3
 endif
 endif
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.c
new file mode 100644 (file)
index 0000000..2973b49
--- /dev/null
@@ -0,0 +1,23 @@
+/* Compute positive difference, sparc 32-bit+v9+vis3.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+#define __fdim __fdim_vis3
+
+#include <math/s_fdim.c>
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.c
new file mode 100644 (file)
index 0000000..c9c7704
--- /dev/null
@@ -0,0 +1,32 @@
+/* Compute positive difference, sparc 32-bit.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_AS_VIS3_SUPPORT
+# include <sparc-ifunc.h>
+# include <math.h>
+
+extern double __fdim_vis3 (double, double);
+extern double __fdim_generic (double, double);
+
+sparc_libm_ifunc(__fdim, hwcap & HWCAP_SPARC_VIS3 ? __fdim_vis3 : __fdim_generic);
+weak_alias (__fdim, fdim)
+
+# define __fdim __fdim_generic
+#endif
+
+#include <math/s_fdim.c>
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.c
new file mode 100644 (file)
index 0000000..75997c6
--- /dev/null
@@ -0,0 +1,23 @@
+/* Float compute positive difference, sparc 32-bit+v9+vis3.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <math.h>
+
+#define __fdimf __fdimf_vis3
+
+#include <math/s_fdimf.c>
diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.c b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.c
new file mode 100644 (file)
index 0000000..767520f
--- /dev/null
@@ -0,0 +1,32 @@
+/* Float compute positive difference, sparc 32-bit.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_AS_VIS3_SUPPORT
+# include <sparc-ifunc.h>
+# include <math.h>
+
+extern float __fdimf_vis3 (float, float);
+extern float __fdimf_generic (float, float);
+
+sparc_libm_ifunc(__fdimf, hwcap & HWCAP_SPARC_VIS3 ? __fdimf_vis3 : __fdimf_generic);
+weak_alias (__fdimf, fdimf)
+
+# define __fdimf __fdimf_generic
+#endif
+
+#include <math/s_fdimf.c>
This page took 0.197808 seconds and 5 git commands to generate.