Message ID | 20200602003541.21005-4-vgupta@synopsys.com |
---|---|

State | New |

Headers | show |

Series | Enable generic math code for more arches | expand |

On 01/06/2020 21:35, Vineet Gupta wrote: > introduce sysdep header math-use-builtins.h to replace aarch64 > impementations with corresponding generic ones s/impementations/implementations and missing ':'. > > - newly inroduced generic sqrt{,f}, fma{,f} > - existing floor{,f}, nearbyint{,f}, rint{,f}, round{,f}, trunc{,f} > - Note that generic copysign was already enabled (via generic > math-use-builtins.h) now thru sysdep header > > This is supposed to be a non functional change > Passes build-many for aarch64-linux-gnu LGTM (just double check if the objects generated by the removed implementations did not changed). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > --- > sysdeps/aarch64/fpu/e_sqrt.c | 27 ---------- > sysdeps/aarch64/fpu/e_sqrtf.c | 27 ---------- > sysdeps/aarch64/fpu/math-use-builtins.h | 71 +++++++++++++++++++++++++ > sysdeps/aarch64/fpu/s_floor.c | 29 ---------- > sysdeps/aarch64/fpu/s_floorf.c | 29 ---------- > sysdeps/aarch64/fpu/s_fma.c | 28 ---------- > sysdeps/aarch64/fpu/s_fmaf.c | 28 ---------- > sysdeps/aarch64/fpu/s_nearbyint.c | 28 ---------- > sysdeps/aarch64/fpu/s_nearbyintf.c | 28 ---------- > sysdeps/aarch64/fpu/s_rint.c | 29 ---------- > sysdeps/aarch64/fpu/s_rintf.c | 29 ---------- > sysdeps/aarch64/fpu/s_round.c | 29 ---------- > sysdeps/aarch64/fpu/s_roundf.c | 29 ---------- > sysdeps/aarch64/fpu/s_trunc.c | 29 ---------- > sysdeps/aarch64/fpu/s_truncf.c | 29 ---------- > 15 files changed, 71 insertions(+), 398 deletions(-) > delete mode 100644 sysdeps/aarch64/fpu/e_sqrt.c > delete mode 100644 sysdeps/aarch64/fpu/e_sqrtf.c > create mode 100644 sysdeps/aarch64/fpu/math-use-builtins.h > delete mode 100644 sysdeps/aarch64/fpu/s_floor.c > delete mode 100644 sysdeps/aarch64/fpu/s_floorf.c > delete mode 100644 sysdeps/aarch64/fpu/s_fma.c > delete mode 100644 sysdeps/aarch64/fpu/s_fmaf.c > delete mode 100644 sysdeps/aarch64/fpu/s_nearbyint.c > delete mode 100644 sysdeps/aarch64/fpu/s_nearbyintf.c > delete mode 100644 sysdeps/aarch64/fpu/s_rint.c > delete mode 100644 sysdeps/aarch64/fpu/s_rintf.c > delete mode 100644 sysdeps/aarch64/fpu/s_round.c > delete mode 100644 sysdeps/aarch64/fpu/s_roundf.c > delete mode 100644 sysdeps/aarch64/fpu/s_trunc.c > delete mode 100644 sysdeps/aarch64/fpu/s_truncf.c > > diff --git a/sysdeps/aarch64/fpu/e_sqrt.c b/sysdeps/aarch64/fpu/e_sqrt.c > deleted file mode 100644 > index abb67ef7b061..000000000000 > --- a/sysdeps/aarch64/fpu/e_sqrt.c > +++ /dev/null > @@ -1,27 +0,0 @@ > -/* Square root of floating point number. > - Copyright (C) 2015-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#include <math_private.h> > -#include <libm-alias-finite.h> > - > -double > -__ieee754_sqrt (double d) > -{ > - return __builtin_sqrt (d); > -} > -libm_alias_finite (__ieee754_sqrt, __sqrt) Ok. > diff --git a/sysdeps/aarch64/fpu/e_sqrtf.c b/sysdeps/aarch64/fpu/e_sqrtf.c > deleted file mode 100644 > index 13008a4f45d6..000000000000 > --- a/sysdeps/aarch64/fpu/e_sqrtf.c > +++ /dev/null > @@ -1,27 +0,0 @@ > -/* Single-precision floating point square root. > - Copyright (C) 2015-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#include <math_private.h> > -#include <libm-alias-finite.h> > - > -float > -__ieee754_sqrtf (float s) > -{ > - return __builtin_sqrtf (s); > -} > -libm_alias_finite (__ieee754_sqrtf, __sqrtf) Ok. > diff --git a/sysdeps/aarch64/fpu/math-use-builtins.h b/sysdeps/aarch64/fpu/math-use-builtins.h > new file mode 100644 > index 000000000000..50a1ba0db5ea > --- /dev/null > +++ b/sysdeps/aarch64/fpu/math-use-builtins.h > @@ -0,0 +1,71 @@ > +/* Using math gcc builtins instead of generic implementation. aarch64 version. > + Copyright (C) 2020 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 > + <https://www.gnu.org/licenses/>. */ > + > +#ifndef MATH_USE_BUILTINS_H > +#define MATH_USE_BUILTINS_H 1 > + > +#include <features.h> /* For __GNUC_PREREQ. */ > + > +/* Define these macros to 1 to use __builtin_xyz instead of the > + generic implementation. */ > +#define USE_NEARBYINT_BUILTIN 1 > +#define USE_NEARBYINTF_BUILTIN 1 > +#define USE_NEARBYINTL_BUILTIN 0 > +#define USE_NEARBYINTF128_BUILTIN 0 > + > +#define USE_RINT_BUILTIN 1 > +#define USE_RINTF_BUILTIN 1 > +#define USE_RINTL_BUILTIN 0 > +#define USE_RINTF128_BUILTIN 0 > + > +#define USE_FLOOR_BUILTIN 1 > +#define USE_FLOORF_BUILTIN 1 > +#define USE_FLOORL_BUILTIN 0 > +#define USE_FLOORF128_BUILTIN 0 > + > +#define USE_CEIL_BUILTIN 1 > +#define USE_CEILF_BUILTIN 1 > +#define USE_CEILL_BUILTIN 0 > +#define USE_CEILF128_BUILTIN 0 > + > +#define USE_TRUNC_BUILTIN 1 > +#define USE_TRUNCF_BUILTIN 1 > +#define USE_TRUNCL_BUILTIN 0 > +#define USE_TRUNCF128_BUILTIN 0 > + > +#define USE_ROUND_BUILTIN 1 > +#define USE_ROUNDF_BUILTIN 1 > +#define USE_ROUNDL_BUILTIN 0 > +#define USE_ROUNDF128_BUILTIN 0 > + > +#define USE_COPYSIGNL_BUILTIN 1 > +#if __GNUC_PREREQ (7, 0) > +# define USE_COPYSIGNF128_BUILTIN 1 > +#else > +# define USE_COPYSIGNF128_BUILTIN 0 > +#endif > + > +#define USE_SQRT_BUILTIN 1 > +#define USE_SQRTF_BUILTIN 1 > + > +#define USE_FMA_BUILTIN 1 > +#define USE_FMAF_BUILTIN 1 > +#define USE_FMAL_BUILTIN 0 > +#define USE_FMAF128_BUILTIN 0 > + > +#endif Ok. > diff --git a/sysdeps/aarch64/fpu/s_floor.c b/sysdeps/aarch64/fpu/s_floor.c > deleted file mode 100644 > index d7d3e9336a6e..000000000000 > --- a/sysdeps/aarch64/fpu/s_floor.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-double.h> > - > -double > -__floor (double x) > -{ > - return __builtin_floor (x); > -} > - > -libm_alias_double (__floor, floor) Ok. > diff --git a/sysdeps/aarch64/fpu/s_floorf.c b/sysdeps/aarch64/fpu/s_floorf.c > deleted file mode 100644 > index 625ff4375702..000000000000 > --- a/sysdeps/aarch64/fpu/s_floorf.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-float.h> > - > -float > -__floorf (float x) > -{ > - return __builtin_floorf (x); > -} > - > -libm_alias_float (__floor, floor) Ok. > diff --git a/sysdeps/aarch64/fpu/s_fma.c b/sysdeps/aarch64/fpu/s_fma.c > deleted file mode 100644 > index 48bb40482dc9..000000000000 > --- a/sysdeps/aarch64/fpu/s_fma.c > +++ /dev/null > @@ -1,28 +0,0 @@ > -/* Copyright (C) 1996-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#include <math.h> > -#include <libm-alias-double.h> > - > -double > -__fma (double x, double y, double z) > -{ > - return __builtin_fma (x, y, z); > -} > - > -libm_alias_double (__fma, fma) Ok. > diff --git a/sysdeps/aarch64/fpu/s_fmaf.c b/sysdeps/aarch64/fpu/s_fmaf.c > deleted file mode 100644 > index 544f32e27aec..000000000000 > --- a/sysdeps/aarch64/fpu/s_fmaf.c > +++ /dev/null > @@ -1,28 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#include <math.h> > -#include <libm-alias-float.h> > - > -float > -__fmaf (float x, float y, float z) > -{ > - return __builtin_fmaf (x, y, z); > -} > - > -libm_alias_float (__fma, fma) Ok. > diff --git a/sysdeps/aarch64/fpu/s_nearbyint.c b/sysdeps/aarch64/fpu/s_nearbyint.c > deleted file mode 100644 > index 59a57dd39ba1..000000000000 > --- a/sysdeps/aarch64/fpu/s_nearbyint.c > +++ /dev/null > @@ -1,28 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#include <math.h> > -#include <libm-alias-double.h> > - > -double > -__nearbyint (double x) > -{ > - return __builtin_nearbyint (x); > -} > - > -libm_alias_double (__nearbyint, nearbyint) Ok. > diff --git a/sysdeps/aarch64/fpu/s_nearbyintf.c b/sysdeps/aarch64/fpu/s_nearbyintf.c > deleted file mode 100644 > index f52968ae2bbd..000000000000 > --- a/sysdeps/aarch64/fpu/s_nearbyintf.c > +++ /dev/null > @@ -1,28 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#include <math.h> > -#include <libm-alias-float.h> > - > -float > -__nearbyintf (float x) > -{ > - return __builtin_nearbyintf (x); > -} > - > -libm_alias_float (__nearbyint, nearbyint) Ok. > diff --git a/sysdeps/aarch64/fpu/s_rint.c b/sysdeps/aarch64/fpu/s_rint.c > deleted file mode 100644 > index bdd757167e0c..000000000000 > --- a/sysdeps/aarch64/fpu/s_rint.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-double.h> > - > -double > -__rint (double x) > -{ > - return __builtin_rint (x); > -} > - > -libm_alias_double (__rint, rint) Ok. > diff --git a/sysdeps/aarch64/fpu/s_rintf.c b/sysdeps/aarch64/fpu/s_rintf.c > deleted file mode 100644 > index 8cf7c63d6dda..000000000000 > --- a/sysdeps/aarch64/fpu/s_rintf.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-float.h> > - > -float > -__rintf (float x) > -{ > - return __builtin_rintf (x); > -} > - > -libm_alias_float (__rint, rint) Ok. > diff --git a/sysdeps/aarch64/fpu/s_round.c b/sysdeps/aarch64/fpu/s_round.c > deleted file mode 100644 > index d2fd5f34117a..000000000000 > --- a/sysdeps/aarch64/fpu/s_round.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-double.h> > - > -double > -__round (double x) > -{ > - return __builtin_round (x); > -} > - > -libm_alias_double (__round, round) Ok. > diff --git a/sysdeps/aarch64/fpu/s_roundf.c b/sysdeps/aarch64/fpu/s_roundf.c > deleted file mode 100644 > index e51214e86cd2..000000000000 > --- a/sysdeps/aarch64/fpu/s_roundf.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-float.h> > - > -float > -__roundf (float x) > -{ > - return __builtin_roundf (x); > -} > - > -libm_alias_float (__round, round) Ok. > diff --git a/sysdeps/aarch64/fpu/s_trunc.c b/sysdeps/aarch64/fpu/s_trunc.c > deleted file mode 100644 > index bac23a5e269d..000000000000 > --- a/sysdeps/aarch64/fpu/s_trunc.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-double.h> > - > -double > -__trunc (double x) > -{ > - return __builtin_trunc (x); > -} > - > -libm_alias_double (__trunc, trunc) Ok. > diff --git a/sysdeps/aarch64/fpu/s_truncf.c b/sysdeps/aarch64/fpu/s_truncf.c > deleted file mode 100644 > index 6a025c084a5a..000000000000 > --- a/sysdeps/aarch64/fpu/s_truncf.c > +++ /dev/null > @@ -1,29 +0,0 @@ > -/* Copyright (C) 2011-2020 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 > - <https://www.gnu.org/licenses/>. */ > - > -#define NO_MATH_REDIRECT > -#include <math.h> > -#include <libm-alias-float.h> > - > -float > -__truncf (float x) > -{ > - return __builtin_truncf (x); > -} > - > -libm_alias_float (__trunc, trunc) > Ok.

On 6/2/20 10:31 AM, Adhemerval Zanella via Libc-alpha wrote: > > > On 01/06/2020 21:35, Vineet Gupta wrote: >> introduce sysdep header math-use-builtins.h to replace aarch64 >> impementations with corresponding generic ones > > s/impementations/implementations and missing ':'. Fixed. >> - newly inroduced generic sqrt{,f}, fma{,f} >> - existing floor{,f}, nearbyint{,f}, rint{,f}, round{,f}, trunc{,f} >> - Note that generic copysign was already enabled (via generic >> math-use-builtins.h) now thru sysdep header >> >> This is supposed to be a non functional change >> Passes build-many for aarch64-linux-gnu > > LGTM (just double check if the objects generated by the removed > implementations did not changed). I will add the diff output to v3.

diff --git a/sysdeps/aarch64/fpu/e_sqrt.c b/sysdeps/aarch64/fpu/e_sqrt.c deleted file mode 100644 index abb67ef7b061..000000000000 --- a/sysdeps/aarch64/fpu/e_sqrt.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Square root of floating point number. - Copyright (C) 2015-2020 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 - <https://www.gnu.org/licenses/>. */ - -#include <math_private.h> -#include <libm-alias-finite.h> - -double -__ieee754_sqrt (double d) -{ - return __builtin_sqrt (d); -} -libm_alias_finite (__ieee754_sqrt, __sqrt) diff --git a/sysdeps/aarch64/fpu/e_sqrtf.c b/sysdeps/aarch64/fpu/e_sqrtf.c deleted file mode 100644 index 13008a4f45d6..000000000000 --- a/sysdeps/aarch64/fpu/e_sqrtf.c +++ /dev/null @@ -1,27 +0,0 @@ -/* Single-precision floating point square root. - Copyright (C) 2015-2020 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 - <https://www.gnu.org/licenses/>. */ - -#include <math_private.h> -#include <libm-alias-finite.h> - -float -__ieee754_sqrtf (float s) -{ - return __builtin_sqrtf (s); -} -libm_alias_finite (__ieee754_sqrtf, __sqrtf) diff --git a/sysdeps/aarch64/fpu/math-use-builtins.h b/sysdeps/aarch64/fpu/math-use-builtins.h new file mode 100644 index 000000000000..50a1ba0db5ea --- /dev/null +++ b/sysdeps/aarch64/fpu/math-use-builtins.h @@ -0,0 +1,71 @@ +/* Using math gcc builtins instead of generic implementation. aarch64 version. + Copyright (C) 2020 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef MATH_USE_BUILTINS_H +#define MATH_USE_BUILTINS_H 1 + +#include <features.h> /* For __GNUC_PREREQ. */ + +/* Define these macros to 1 to use __builtin_xyz instead of the + generic implementation. */ +#define USE_NEARBYINT_BUILTIN 1 +#define USE_NEARBYINTF_BUILTIN 1 +#define USE_NEARBYINTL_BUILTIN 0 +#define USE_NEARBYINTF128_BUILTIN 0 + +#define USE_RINT_BUILTIN 1 +#define USE_RINTF_BUILTIN 1 +#define USE_RINTL_BUILTIN 0 +#define USE_RINTF128_BUILTIN 0 + +#define USE_FLOOR_BUILTIN 1 +#define USE_FLOORF_BUILTIN 1 +#define USE_FLOORL_BUILTIN 0 +#define USE_FLOORF128_BUILTIN 0 + +#define USE_CEIL_BUILTIN 1 +#define USE_CEILF_BUILTIN 1 +#define USE_CEILL_BUILTIN 0 +#define USE_CEILF128_BUILTIN 0 + +#define USE_TRUNC_BUILTIN 1 +#define USE_TRUNCF_BUILTIN 1 +#define USE_TRUNCL_BUILTIN 0 +#define USE_TRUNCF128_BUILTIN 0 + +#define USE_ROUND_BUILTIN 1 +#define USE_ROUNDF_BUILTIN 1 +#define USE_ROUNDL_BUILTIN 0 +#define USE_ROUNDF128_BUILTIN 0 + +#define USE_COPYSIGNL_BUILTIN 1 +#if __GNUC_PREREQ (7, 0) +# define USE_COPYSIGNF128_BUILTIN 1 +#else +# define USE_COPYSIGNF128_BUILTIN 0 +#endif + +#define USE_SQRT_BUILTIN 1 +#define USE_SQRTF_BUILTIN 1 + +#define USE_FMA_BUILTIN 1 +#define USE_FMAF_BUILTIN 1 +#define USE_FMAL_BUILTIN 0 +#define USE_FMAF128_BUILTIN 0 + +#endif diff --git a/sysdeps/aarch64/fpu/s_floor.c b/sysdeps/aarch64/fpu/s_floor.c deleted file mode 100644 index d7d3e9336a6e..000000000000 --- a/sysdeps/aarch64/fpu/s_floor.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-double.h> - -double -__floor (double x) -{ - return __builtin_floor (x); -} - -libm_alias_double (__floor, floor) diff --git a/sysdeps/aarch64/fpu/s_floorf.c b/sysdeps/aarch64/fpu/s_floorf.c deleted file mode 100644 index 625ff4375702..000000000000 --- a/sysdeps/aarch64/fpu/s_floorf.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-float.h> - -float -__floorf (float x) -{ - return __builtin_floorf (x); -} - -libm_alias_float (__floor, floor) diff --git a/sysdeps/aarch64/fpu/s_fma.c b/sysdeps/aarch64/fpu/s_fma.c deleted file mode 100644 index 48bb40482dc9..000000000000 --- a/sysdeps/aarch64/fpu/s_fma.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 1996-2020 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 - <https://www.gnu.org/licenses/>. */ - -#include <math.h> -#include <libm-alias-double.h> - -double -__fma (double x, double y, double z) -{ - return __builtin_fma (x, y, z); -} - -libm_alias_double (__fma, fma) diff --git a/sysdeps/aarch64/fpu/s_fmaf.c b/sysdeps/aarch64/fpu/s_fmaf.c deleted file mode 100644 index 544f32e27aec..000000000000 --- a/sysdeps/aarch64/fpu/s_fmaf.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#include <math.h> -#include <libm-alias-float.h> - -float -__fmaf (float x, float y, float z) -{ - return __builtin_fmaf (x, y, z); -} - -libm_alias_float (__fma, fma) diff --git a/sysdeps/aarch64/fpu/s_nearbyint.c b/sysdeps/aarch64/fpu/s_nearbyint.c deleted file mode 100644 index 59a57dd39ba1..000000000000 --- a/sysdeps/aarch64/fpu/s_nearbyint.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#include <math.h> -#include <libm-alias-double.h> - -double -__nearbyint (double x) -{ - return __builtin_nearbyint (x); -} - -libm_alias_double (__nearbyint, nearbyint) diff --git a/sysdeps/aarch64/fpu/s_nearbyintf.c b/sysdeps/aarch64/fpu/s_nearbyintf.c deleted file mode 100644 index f52968ae2bbd..000000000000 --- a/sysdeps/aarch64/fpu/s_nearbyintf.c +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#include <math.h> -#include <libm-alias-float.h> - -float -__nearbyintf (float x) -{ - return __builtin_nearbyintf (x); -} - -libm_alias_float (__nearbyint, nearbyint) diff --git a/sysdeps/aarch64/fpu/s_rint.c b/sysdeps/aarch64/fpu/s_rint.c deleted file mode 100644 index bdd757167e0c..000000000000 --- a/sysdeps/aarch64/fpu/s_rint.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-double.h> - -double -__rint (double x) -{ - return __builtin_rint (x); -} - -libm_alias_double (__rint, rint) diff --git a/sysdeps/aarch64/fpu/s_rintf.c b/sysdeps/aarch64/fpu/s_rintf.c deleted file mode 100644 index 8cf7c63d6dda..000000000000 --- a/sysdeps/aarch64/fpu/s_rintf.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-float.h> - -float -__rintf (float x) -{ - return __builtin_rintf (x); -} - -libm_alias_float (__rint, rint) diff --git a/sysdeps/aarch64/fpu/s_round.c b/sysdeps/aarch64/fpu/s_round.c deleted file mode 100644 index d2fd5f34117a..000000000000 --- a/sysdeps/aarch64/fpu/s_round.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-double.h> - -double -__round (double x) -{ - return __builtin_round (x); -} - -libm_alias_double (__round, round) diff --git a/sysdeps/aarch64/fpu/s_roundf.c b/sysdeps/aarch64/fpu/s_roundf.c deleted file mode 100644 index e51214e86cd2..000000000000 --- a/sysdeps/aarch64/fpu/s_roundf.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-float.h> - -float -__roundf (float x) -{ - return __builtin_roundf (x); -} - -libm_alias_float (__round, round) diff --git a/sysdeps/aarch64/fpu/s_trunc.c b/sysdeps/aarch64/fpu/s_trunc.c deleted file mode 100644 index bac23a5e269d..000000000000 --- a/sysdeps/aarch64/fpu/s_trunc.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-double.h> - -double -__trunc (double x) -{ - return __builtin_trunc (x); -} - -libm_alias_double (__trunc, trunc) diff --git a/sysdeps/aarch64/fpu/s_truncf.c b/sysdeps/aarch64/fpu/s_truncf.c deleted file mode 100644 index 6a025c084a5a..000000000000 --- a/sysdeps/aarch64/fpu/s_truncf.c +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 2011-2020 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 - <https://www.gnu.org/licenses/>. */ - -#define NO_MATH_REDIRECT -#include <math.h> -#include <libm-alias-float.h> - -float -__truncf (float x) -{ - return __builtin_truncf (x); -} - -libm_alias_float (__trunc, trunc)