mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
sparc: remove fdim sparc specific implementations
The fdim and fdimf functions on sparc do not fully follow the standard and do not set errno to ERANGE when the result overflows. Since glibc 2.24 this causes the two following tests to fail: Failure: fdim (max_value, -max_value): errno set to 0, expected 34 (ERANGE) Failure: fdim_upward (max_value, -max_value): errno set to 0, expected 34 (ERANGE) It happens that using GCC with the generic C code generates very similar code to the sparc specific implementations. Therefore this patches remove them. Note it might still worth adding a vis3 specific version of fdim on sparc32/sparcv9, this is done in a following patch to ease backporting. Changelog: * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines): Remove s_fdimf-vis3, s_fdim-vis3. * sysdeps/sparc/sparc32/fpu/s_fdim.S: Delete file. * sysdeps/sparc/sparc32/fpu/s_fdimf.S: Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S: Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S: Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S: Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S: Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S: Likewise. * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S: Likewise. * sysdeps/sparc/sparc64/fpu/s_fdim.S: Likewise. * sysdeps/sparc/sparc64/fpu/s_fdimf.S: Likewise.
This commit is contained in:
parent
9c8addbc1c
commit
8a9f4eb958
16
ChangeLog
16
ChangeLog
@ -1,3 +1,19 @@
|
||||
2016-08-05 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile
|
||||
[$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines):
|
||||
Remove s_fdimf-vis3, s_fdim-vis3.
|
||||
* sysdeps/sparc/sparc32/fpu/s_fdim.S: Delete file.
|
||||
* sysdeps/sparc/sparc32/fpu/s_fdimf.S: Likewise.
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S: Likewise.
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S: Likewise.
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S: Likewise.
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S: Likewise.
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S: Likewise.
|
||||
* sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S: Likewise.
|
||||
* sysdeps/sparc/sparc64/fpu/s_fdim.S: Likewise.
|
||||
* sysdeps/sparc/sparc64/fpu/s_fdimf.S: Likewise.
|
||||
|
||||
2016-08-05 Aurelien Jarno <aurelien@aurel32.net>
|
||||
|
||||
* sysdeps/sparc/sparc32/sparcv9/Makefile (sysdep-CFLAGS): Add -mvis.
|
||||
|
@ -1,42 +0,0 @@
|
||||
/* Compute positive difference, sparc 32-bit.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
#include <math_ldbl_opt.h>
|
||||
|
||||
ENTRY(__fdim)
|
||||
std %o0, [%sp + 72]
|
||||
std %o2, [%sp + 80]
|
||||
ldd [%sp + 72], %f0
|
||||
ldd [%sp + 80], %f2
|
||||
fcmpd %f0, %f2
|
||||
st %g0, [%sp + 72]
|
||||
fbug 1f
|
||||
st %g0, [%sp + 76]
|
||||
ldd [%sp + 72], %f0
|
||||
fnegs %f0, %f2
|
||||
fmovs %f1, %f3
|
||||
1: retl
|
||||
fsubd %f0, %f2, %f0
|
||||
END(__fdim)
|
||||
weak_alias (__fdim, fdim)
|
||||
|
||||
#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
|
||||
compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
|
||||
#endif
|
@ -1,35 +0,0 @@
|
||||
/* Compute positive difference, sparc 32-bit.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
|
||||
ENTRY(__fdimf)
|
||||
st %o0, [%sp + 72]
|
||||
st %o1, [%sp + 76]
|
||||
ld [%sp + 72], %f0
|
||||
ld [%sp + 76], %f1
|
||||
fcmps %f0, %f1
|
||||
fbug 1f
|
||||
st %g0, [%sp + 72]
|
||||
ld [%sp + 72], %f0
|
||||
fnegs %f0, %f1
|
||||
1: retl
|
||||
fsubs %f0, %f1, %f0
|
||||
END(__fdimf)
|
||||
weak_alias (__fdimf, fdimf)
|
@ -4,8 +4,8 @@ libm-sysdep_routines += m_copysignf-vis3 m_copysign-vis3 s_fabs-vis3 \
|
||||
s_fabsf-vis3 s_llrintf-vis3 s_llrint-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_fdimf-vis3 s_fdim-vis3 \
|
||||
s_nearbyint-vis3 s_nearbyintf-vis3
|
||||
s_fmaf-vis3 s_fma-vis3 s_nearbyint-vis3 \
|
||||
s_nearbyintf-vis3
|
||||
sysdep_routines += s_copysignf-vis3 s_copysign-vis3
|
||||
endif
|
||||
endif
|
||||
|
@ -1,34 +0,0 @@
|
||||
/* Compute positive difference, sparc 32-bit+v9+vis3.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
|
||||
ENTRY(__fdim_vis3)
|
||||
movwtos %o0, %f0
|
||||
movwtos %o1, %f1
|
||||
movwtos %o2, %f2
|
||||
movwtos %o3, %f3
|
||||
fcmpd %f0, %f2
|
||||
fbug 1f
|
||||
nop
|
||||
fzero %f0
|
||||
fnegd %f0, %f2
|
||||
1: retl
|
||||
fsubd %f0, %f2, %f0
|
||||
END(__fdim_vis3)
|
@ -1,19 +0,0 @@
|
||||
#include <sparc-ifunc.h>
|
||||
#include <math_ldbl_opt.h>
|
||||
|
||||
SPARC_ASM_VIS3_IFUNC(fdim)
|
||||
|
||||
weak_alias (__fdim, fdim)
|
||||
|
||||
#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
|
||||
compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
|
||||
#endif
|
||||
|
||||
# undef weak_alias
|
||||
# define weak_alias(a, b)
|
||||
# undef compat_symbol
|
||||
# define compat_symbol(a, b, c, d)
|
||||
|
||||
#define __fdim __fdim_generic
|
||||
|
||||
#include "../s_fdim.S"
|
@ -1,32 +0,0 @@
|
||||
/* Compute positive difference, sparc 32-bit+v9+vis3.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
|
||||
ENTRY(__fdimf_vis3)
|
||||
movwtos %o0, %f0
|
||||
movwtos %o1, %f1
|
||||
fcmps %f0, %f1
|
||||
fbug 1f
|
||||
nop
|
||||
fzeros %f0
|
||||
fnegs %f0, %f1
|
||||
1: retl
|
||||
fsubs %f0, %f1, %f0
|
||||
END(__fdimf_vis3)
|
@ -1,12 +0,0 @@
|
||||
#include <sparc-ifunc.h>
|
||||
|
||||
SPARC_ASM_VIS3_IFUNC(fdimf)
|
||||
|
||||
weak_alias (__fdimf, fdimf)
|
||||
|
||||
# undef weak_alias
|
||||
# define weak_alias(a, b)
|
||||
|
||||
#define __fdimf __fdimf_generic
|
||||
|
||||
#include "../s_fdimf.S"
|
@ -1,40 +0,0 @@
|
||||
/* Compute positive difference, sparc 32-bit+v9.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
#include <math_ldbl_opt.h>
|
||||
|
||||
ENTRY(__fdim)
|
||||
std %o0, [%sp + 72]
|
||||
std %o2, [%sp + 80]
|
||||
ldd [%sp + 72], %f0
|
||||
ldd [%sp + 80], %f2
|
||||
fcmpd %f0, %f2
|
||||
fbug 1f
|
||||
nop
|
||||
fzero %f0
|
||||
fnegd %f0, %f2
|
||||
1: retl
|
||||
fsubd %f0, %f2, %f0
|
||||
END(__fdim)
|
||||
weak_alias (__fdim, fdim)
|
||||
|
||||
#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1)
|
||||
compat_symbol (libm, __fdim, fdiml, GLIBC_2_1);
|
||||
#endif
|
@ -1,35 +0,0 @@
|
||||
/* Compute positive difference, sparc 32-bit+v9.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
|
||||
ENTRY(__fdimf)
|
||||
st %o0, [%sp + 72]
|
||||
st %o1, [%sp + 76]
|
||||
ld [%sp + 72], %f0
|
||||
ld [%sp + 76], %f1
|
||||
fcmps %f0, %f1
|
||||
fbug 1f
|
||||
nop
|
||||
fzeros %f0
|
||||
fnegs %f0, %f1
|
||||
1: retl
|
||||
fsubs %f0, %f1, %f0
|
||||
END(__fdimf)
|
||||
weak_alias (__fdimf, fdimf)
|
@ -1,32 +0,0 @@
|
||||
/* Compute positive difference, sparc 64-bit.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
#include <math_ldbl_opt.h>
|
||||
|
||||
ENTRY(__fdim)
|
||||
fcmpd %f0, %f2
|
||||
fbug 1f
|
||||
nop
|
||||
fzero %f0
|
||||
fnegd %f0, %f2
|
||||
1: retl
|
||||
fsubd %f0, %f2, %f0
|
||||
END(__fdim)
|
||||
weak_alias (__fdim, fdim)
|
@ -1,31 +0,0 @@
|
||||
/* Compute positive difference, sparc 64-bit.
|
||||
Copyright (C) 2013-2016 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by David S. Miller <davem@davemloft.net>.
|
||||
|
||||
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>
|
||||
|
||||
ENTRY(__fdimf)
|
||||
fcmps %f1, %f3
|
||||
fbug 1f
|
||||
nop
|
||||
fzeros %f1
|
||||
fnegs %f1, %f3
|
||||
1: retl
|
||||
fsubs %f1, %f3, %f0
|
||||
END(__fdimf)
|
||||
weak_alias (__fdimf, fdimf)
|
Loading…
Reference in New Issue
Block a user