From bdf20beac183c705abef5aef8de2db5fac00bc8b Mon Sep 17 00:00:00 2001 From: Aurelien Jarno Date: Sun, 31 Jul 2016 23:45:52 +0200 Subject: sparc64: add a VIS3 version of ceil, floor and trunc sparc64 passes floating point values in the floating point registers. As the the generic ceil, floor and trunc functions use integer instructions, it makes sense to provide a VIS3 version consisting in the the generic version compiled with -mvis3. GCC will then use movdtox, movxtod, movwtos and movstow instructions. sparc32 passes the floating point values in the integer registers, so it doesn't make sense to do the same. Changelog: * sysdeps/ieee754/dbl-64/s_trunc.c: Avoid alias renamed. * sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c: Likewise. * sysdeps/ieee754/flt-32/s_truncf.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/Makefile [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines): Add s_ceilf-vis3, s_ceil-vis3, s_floorf-vis3, s_floor-vis3, s_truncf-vis3, s_trunc-vis3. (CFLAGS-s_ceilf-vis3.c): New. Set to -Wa,-Av9d -mvis3. (CFLAGS-s_ceil-vis3.c): Likewise. (CFLAGS-s_floorf-vis3.c): Likewise. (CFLAGS-s_floor-vis3.c): Likewise. (CFLAGS-s_truncf-vis3.c): Likewise. (CFLAGS-s_trunc-vis3.c): Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c: New file. * sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.c: Likewise. * sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c: Likewise. --- ChangeLog | 28 +++++++++++++++++++ sysdeps/ieee754/dbl-64/s_trunc.c | 4 ++- sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c | 4 ++- sysdeps/ieee754/flt-32/s_truncf.c | 2 ++ sysdeps/sparc/sparc64/fpu/multiarch/Makefile | 11 +++++++- sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c | 23 ++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c | 32 ++++++++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c | 23 ++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c | 32 ++++++++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c | 23 ++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c | 32 ++++++++++++++++++++++ .../sparc/sparc64/fpu/multiarch/s_floorf-vis3.c | 23 ++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c | 32 ++++++++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c | 23 ++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c | 32 ++++++++++++++++++++++ .../sparc/sparc64/fpu/multiarch/s_truncf-vis3.c | 23 ++++++++++++++++ sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c | 32 ++++++++++++++++++++++ 17 files changed, 376 insertions(+), 3 deletions(-) create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.c create mode 100644 sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c diff --git a/ChangeLog b/ChangeLog index f84b981388..bebb915876 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,31 @@ +2016-08-03 Aurelien Jarno + + * sysdeps/ieee754/dbl-64/s_trunc.c: Avoid alias renamed. + * sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c: Likewise. + * sysdeps/ieee754/flt-32/s_truncf.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/Makefile + [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines): + Add s_ceilf-vis3, s_ceil-vis3, s_floorf-vis3, s_floor-vis3, + s_truncf-vis3, s_trunc-vis3. + (CFLAGS-s_ceilf-vis3.c): New. Set to -Wa,-Av9d -mvis3. + (CFLAGS-s_ceil-vis3.c): Likewise. + (CFLAGS-s_floorf-vis3.c): Likewise. + (CFLAGS-s_floor-vis3.c): Likewise. + (CFLAGS-s_truncf-vis3.c): Likewise. + (CFLAGS-s_trunc-vis3.c): Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c: New file. + * sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.c: Likewise. + * sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c: Likewise. + 2016-08-02 David S. Miller * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S diff --git a/sysdeps/ieee754/dbl-64/s_trunc.c b/sysdeps/ieee754/dbl-64/s_trunc.c index f64e097f16..7663f613cd 100644 --- a/sysdeps/ieee754/dbl-64/s_trunc.c +++ b/sysdeps/ieee754/dbl-64/s_trunc.c @@ -53,8 +53,10 @@ __trunc (double x) return x; } +#ifndef __trunc weak_alias (__trunc, trunc) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__trunc, __truncl) weak_alias (__trunc, truncl) +# endif #endif diff --git a/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c b/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c index 81ac55e2f6..f961e52f38 100644 --- a/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c +++ b/sysdeps/ieee754/dbl-64/wordsize-64/s_trunc.c @@ -48,8 +48,10 @@ __trunc (double x) return x; } +#ifndef __trunc weak_alias (__trunc, trunc) -#ifdef NO_LONG_DOUBLE +# ifdef NO_LONG_DOUBLE strong_alias (__trunc, __truncl) weak_alias (__trunc, truncl) +# endif #endif diff --git a/sysdeps/ieee754/flt-32/s_truncf.c b/sysdeps/ieee754/flt-32/s_truncf.c index 43d35c7f6a..5228ec647f 100644 --- a/sysdeps/ieee754/flt-32/s_truncf.c +++ b/sysdeps/ieee754/flt-32/s_truncf.c @@ -48,4 +48,6 @@ __truncf (float x) return x; } +#ifndef __truncf weak_alias (__truncf, truncf) +#endif diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile index 47859f0ec2..51f37093d8 100644 --- a/sysdeps/sparc/sparc64/fpu/multiarch/Makefile +++ b/sysdeps/sparc/sparc64/fpu/multiarch/Makefile @@ -6,9 +6,18 @@ libm-sysdep_routines += m_signbitf-vis3 m_signbit-vis3 m_finitef-vis3 \ s_lrint-vis3 s_rintf-vis3 s_rint-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_nearbyint-vis3 s_nearbyintf-vis3 \ + s_ceilf-vis3 s_ceil-vis3 s_floorf-vis3 \ + s_floor-vis3 s_truncf-vis3 s_trunc-vis3 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 + +CFLAGS-s_ceilf-vis3.c += -Wa,-Av9d -mvis3 +CFLAGS-s_ceil-vis3.c += -Wa,-Av9d -mvis3 +CFLAGS-s_floorf-vis3.c += -Wa,-Av9d -mvis3 +CFLAGS-s_floor-vis3.c += -Wa,-Av9d -mvis3 +CFLAGS-s_truncf-vis3.c += -Wa,-Av9d -mvis3 +CFLAGS-s_trunc-vis3.c += -Wa,-Av9d -mvis3 endif endif diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c new file mode 100644 index 0000000000..77d353719d --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil-vis3.c @@ -0,0 +1,23 @@ +/* ceil function, sparc64 vis3 version. + 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 + . */ + +#include + +#define __ceil __ceil_vis3 + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c new file mode 100644 index 0000000000..6d04b780fb --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceil.c @@ -0,0 +1,32 @@ +/* ceil function, sparc64 version. + 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 + . */ + +#ifdef HAVE_AS_VIS3_SUPPORT +# include +# include + +extern double __ceil_vis3 (double); +extern double __ceil_generic (double); + +sparc_libm_ifunc(__ceil, hwcap & HWCAP_SPARC_VIS3 ? __ceil_vis3 : __ceil_generic); +weak_alias (__ceil, ceil) + +# define __ceil __ceil_generic +#endif + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c new file mode 100644 index 0000000000..119fe46cb1 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf-vis3.c @@ -0,0 +1,23 @@ +/* Float ceil function, sparc64 vis3 version. + 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 + . */ + +#include + +#define __ceilf __ceilf_vis3 + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c new file mode 100644 index 0000000000..5eca59f542 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_ceilf.c @@ -0,0 +1,32 @@ +/* Float ceil function, sparc64 version. + 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 + . */ + +#ifdef HAVE_AS_VIS3_SUPPORT +# include +# include + +extern float __ceilf_vis3 (float); +extern float __ceilf_generic (float); + +sparc_libm_ifunc(__ceilf, hwcap & HWCAP_SPARC_VIS3 ? __ceilf_vis3 : __ceilf_generic); +weak_alias (__ceilf, ceilf) + +# define __ceilf __ceilf_generic +#endif + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c new file mode 100644 index 0000000000..39af6b96f3 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor-vis3.c @@ -0,0 +1,23 @@ +/* floor function, sparc64 vis3 version. + 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 + . */ + +#include + +#define __floor __floor_vis3 + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c new file mode 100644 index 0000000000..3edd8a9c0c --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floor.c @@ -0,0 +1,32 @@ +/* floor function, sparc64 version. + 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 + . */ + +#ifdef HAVE_AS_VIS3_SUPPORT +# include +# include + +extern double __floor_vis3 (double); +extern double __floor_generic (double); + +sparc_libm_ifunc(__floor, hwcap & HWCAP_SPARC_VIS3 ? __floor_vis3 : __floor_generic); +weak_alias (__floor, floor) + +# define __floor __floor_generic +#endif + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.c new file mode 100644 index 0000000000..4e525f6ca6 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf-vis3.c @@ -0,0 +1,23 @@ +/* Float floor function, sparc64 vis3 version. + 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 + . */ + +#include + +#define __floorf __floorf_vis3 + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c new file mode 100644 index 0000000000..d86f3135b7 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_floorf.c @@ -0,0 +1,32 @@ +/* Float floor function, sparc64 version. + 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 + . */ + +#ifdef HAVE_AS_VIS3_SUPPORT +# include +# include + +extern float __floorf_vis3 (float); +extern float __floorf_generic (float); + +sparc_libm_ifunc(__floorf, hwcap & HWCAP_SPARC_VIS3 ? __floorf_vis3 : __floorf_generic); +weak_alias (__floorf, floorf) + +# define __floorf __floorf_generic +#endif + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c new file mode 100644 index 0000000000..2451034e9e --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_trunc-vis3.c @@ -0,0 +1,23 @@ +/* trunc function, sparc64 vis3 version. + 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 + . */ + +#include + +#define __trunc __trunc_vis3 + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c new file mode 100644 index 0000000000..7ae9a972fd --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_trunc.c @@ -0,0 +1,32 @@ +/* trunc function, sparc64 version. + 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 + . */ + +#ifdef HAVE_AS_VIS3_SUPPORT +# include +# include + +extern double __trunc_vis3 (double); +extern double __trunc_generic (double); + +sparc_libm_ifunc(__trunc, hwcap & HWCAP_SPARC_VIS3 ? __trunc_vis3 : __trunc_generic); +weak_alias (__trunc, trunc) + +# define __trunc __trunc_generic +#endif + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.c new file mode 100644 index 0000000000..6253efce21 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_truncf-vis3.c @@ -0,0 +1,23 @@ +/* Float trunc function, sparc64 vis3 version. + 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 + . */ + +#include + +#define __truncf __truncf_vis3 + +#include diff --git a/sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c b/sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c new file mode 100644 index 0000000000..e36ffcab20 --- /dev/null +++ b/sysdeps/sparc/sparc64/fpu/multiarch/s_truncf.c @@ -0,0 +1,32 @@ +/* Float trunc function, sparc64 version. + 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 + . */ + +#ifdef HAVE_AS_VIS3_SUPPORT +# include +# include + +extern float __truncf_vis3 (float); +extern float __truncf_generic (float); + +sparc_libm_ifunc(__truncf, hwcap & HWCAP_SPARC_VIS3 ? __truncf_vis3 : __truncf_generic); +weak_alias (__truncf, truncf) + +# define __truncf __truncf_generic +#endif + +#include -- cgit v1.2.3