1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00
Files
glibc/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math_private.h
Paul E. Murphy 33fc34521d powerpc64le: ifunc select *f128 routines in multiarch mode
Programatically generate simple wrappers for interesting libm *f128
objects.  Selected functions are transcendental functions or
those with trivial compiler builtins.  This can result in a 2-3x
speedup (e.g logf128 and expf128).

A second set of implementation files are generated which include
the first implementation encountered along the search path.  This
usually works, except when a wrapper is overriden and makefile
search order slightly diverges from include order.  Likewise,
wrapper object files are created for each generated file.  These
hold the ifunc selection routines which export ABI.

Next, several shared headers are intercepted to control renaming of
asm function redirects are used first, and sometimes macro renames
if the former is impractical.

Notably, if the request machine supports hardware IEEE128 (i.e POWER9
and newer) this ifunc machinery is disabled.  Likewise existing
ifunc support for float128 is consolidated into this (e.g sqrtf128
and fmaf128).

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-11-30 09:56:14 -06:00

16 lines
396 B
C

#ifndef MATH_PRIVATE_PPC64LE_MA
#define MATH_PRIVATE_PPC64LE_MA 1
#include_next <math_private.h>
#if defined (_F128_ENABLE_IFUNC)
/* math_private.h redeclares many float128_private.h renamed functions, but
we can't include float128_private.h as this header is used beyond
private float128 files. */
#include <float128-ifunc-redirects-mp.h>
#endif
#endif /* MATH_PRIVATE_PPC64LE_MA */