1868599f8d
The following patch provides some further math library fallbacks. fmaf can be implemented using fma if available, fma and fmal can use x * y + z as fallback, it is not perfect, but e.g. glibc on various arches has been using that as fallback for many years, and copysign/copysignl/fabs/fabsl can be implemented using corresponding __builtin_* if we make sure that gcc expands it inline instead of using a library call (these days it is expanded inline on most targets). 2020-04-22 Jakub Jelinek <jakub@redhat.com> PR libfortran/94694 PR libfortran/94586 * configure.ac: Add math func checks for fmaf, fma and fmal. Add HAVE_INLINE_BUILTIN_COPYSIGN check. * c99_protos.h (copysign, fmaf, fma, fmal): Provide fallback prototypes. (HAVE_COPYSIGN, HAVE_FMAF, HAVE_FMA, HAVE_FMAL): Define if not defined and fallback version is provided. * intrinsics/c99_functions.c (copysign, fmaf, fma, fmal): Provide fallback implementations if possible * configure: Regenerated. * config.h.in: Regenerated. * math.m4 (GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK1, GCC_CHECK_MATH_INLINE_BUILTIN_FALLBACK2): New. |
||
---|---|---|
.. | ||
abort.c | ||
access.c | ||
args.c | ||
associated.c | ||
c99_functions.c | ||
chdir.c | ||
chmod.c | ||
clock.c | ||
cpu_time.c | ||
cshift0.c | ||
ctime.c | ||
date_and_time.c | ||
dprod_r8.f90 | ||
dtime.c | ||
env.c | ||
eoshift0.c | ||
eoshift2.c | ||
erfc_scaled_inc.c | ||
erfc_scaled.c | ||
etime.c | ||
execute_command_line.c | ||
exit.c | ||
extends_type_of.c | ||
f2c_specifics.F90 | ||
fnum.c | ||
gerror.c | ||
getcwd.c | ||
getlog.c | ||
getXid.c | ||
hostnm.c | ||
ierrno.c | ||
is_contiguous.c | ||
ishftc.c | ||
kill.c | ||
link.c | ||
move_alloc.c | ||
mvbits.c | ||
pack_generic.c | ||
perror.c | ||
rand.c | ||
random_init.f90 | ||
random.c | ||
rename.c | ||
reshape_generic.c | ||
reshape_packed.c | ||
selected_char_kind.c | ||
selected_int_kind.f90 | ||
selected_real_kind.f90 | ||
signal.c | ||
size.c | ||
sleep.c | ||
spread_generic.c | ||
stat.c | ||
string_intrinsics_inc.c | ||
string_intrinsics.c | ||
symlnk.c | ||
system_clock.c | ||
system.c | ||
time_1.h | ||
time.c | ||
trigd_lib.inc | ||
trigd.c | ||
trigd.inc | ||
umask.c | ||
unlink.c | ||
unpack_generic.c |