On Wed, 2020-04-22 at 16:42 +0200, Jakub Jelinek via Gcc-patches wrote:
> Hi!
> 
> 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).
> 
> Bootstrapped/regtested on x86_64-linux and i686-linux and Andrea Corallo
> has tested it on aarch64-elf.  Ok for trunk?
> 
> Fritz has a further patch for the PR to deal with cases where some functions
> aren't available and there is no easy fallback for them.
> 
> 2020-04-22  Jakub Jelinek  <ja...@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.
Normally I try to stay out of libgfortran.  But I'll go ahead and ACK this.

The *-elf targets in my tester don't build fortran/libgfortran.  But I'm open to
possibly turning that on if they're stable enough.

jeff
> 

Reply via email to