diff options
author | Stefan Liebler <stli@linux.ibm.com> | 2019-12-11 15:09:18 +0100 |
---|---|---|
committer | Stefan Liebler <stli@linux.ibm.com> | 2019-12-11 15:12:15 +0100 |
commit | ae3577f607b50bf3ce9b0877e43ad2508c9da61b (patch) | |
tree | b284b10fc26c0454a71be353759f3d2f892b06e0 /sysdeps/s390 | |
parent | 36e9acbd5cb2c330c0d53195db4a0ee31f2c3097 (diff) | |
download | glibc-ae3577f607b50bf3ce9b0877e43ad2508c9da61b.tar.gz glibc-ae3577f607b50bf3ce9b0877e43ad2508c9da61b.tar.xz glibc-ae3577f607b50bf3ce9b0877e43ad2508c9da61b.zip |
Use GCC builtins for nearbyint functions if desired.
This patch is using the corresponding GCC builtin for nearbyintf, nearbyint, nearbintl and nearbyintf128 if the USE_FUNCTION_BUILTIN macros are defined to one in math-use-builtins.h. This is the case for s390 if build with at least --march=z196 --mzarch. Otherwise the generic implementation is used. The code of the generic implementation is not changed. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'sysdeps/s390')
-rw-r--r-- | sysdeps/s390/fpu/math-use-builtins.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sysdeps/s390/fpu/math-use-builtins.h b/sysdeps/s390/fpu/math-use-builtins.h new file mode 100644 index 0000000000..7abbfb3b50 --- /dev/null +++ b/sysdeps/s390/fpu/math-use-builtins.h @@ -0,0 +1,49 @@ +/* Using math gcc builtins instead of generic implementation. s390/s390x version. + Copyright (C) 2019 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_S390_H +#define MATH_USE_BUILTINS_S390_H 1 + +#ifdef HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT + +# include <features.h> /* For __GNUC_PREREQ. */ + +/* GCC emits the z196 zarch "load fp integer" instructions for these + builtins if build with at least --march=z196 -mzarch. Otherwise a + function call to libc is emitted. */ +# define USE_NEARBYINT_BUILTIN 1 +# define USE_NEARBYINTF_BUILTIN 1 +# define USE_NEARBYINTL_BUILTIN 1 + +# if __GNUC_PREREQ (8, 0) +# define USE_NEARBYINTF128_BUILTIN 1 +# else +# define USE_NEARBYINTF128_BUILTIN 0 +# endif + +#else + +/* Disable the builtins if we do not have the z196 zarch instructions. */ +# define USE_NEARBYINT_BUILTIN 0 +# define USE_NEARBYINTF_BUILTIN 0 +# define USE_NEARBYINTL_BUILTIN 0 +# define USE_NEARBYINTF128_BUILTIN 0 + +#endif /* ! HAVE_S390_MIN_Z196_ZARCH_ASM_SUPPORT */ + +#endif /* math-use-builtins.h */ |