mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 06:20:06 +00:00
edf66e57fc
This patch removes redudant definition from PowerPC specific math_ldbl, using the definitions from ieee754 math_ldbl.h.
37 lines
1.0 KiB
C
37 lines
1.0 KiB
C
#ifndef _MATH_PRIVATE_H_
|
|
#error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
|
|
#endif
|
|
|
|
/* GCC does not optimize the default ldbl_pack code to not spill register
|
|
in the stack. The following optimization tells gcc that pack/unpack
|
|
is really a nop. We use fr1/fr2 because those are the regs used to
|
|
pass/return a single long double arg. */
|
|
static inline long double
|
|
ldbl_pack_ppc (double a, double aa)
|
|
{
|
|
register long double x __asm__ ("fr1");
|
|
register double xh __asm__ ("fr1");
|
|
register double xl __asm__ ("fr2");
|
|
xh = a;
|
|
xl = aa;
|
|
__asm__ ("" : "=f" (x) : "f" (xh), "f" (xl));
|
|
return x;
|
|
}
|
|
|
|
static inline void
|
|
ldbl_unpack_ppc (long double l, double *a, double *aa)
|
|
{
|
|
register long double x __asm__ ("fr1");
|
|
register double xh __asm__ ("fr1");
|
|
register double xl __asm__ ("fr2");
|
|
x = l;
|
|
__asm__ ("" : "=f" (xh), "=f" (xl) : "f" (x));
|
|
*a = xh;
|
|
*aa = xl;
|
|
}
|
|
|
|
#define ldbl_pack ldbl_pack_ppc
|
|
#define ldbl_unpack ldbl_unpack_ppc
|
|
|
|
#include <sysdeps/ieee754/ldbl-128ibm/math_ldbl.h>
|