1 #ifndef _MATH_PRIVATE_H_
2 #error "Never use <math_ldbl.h> directly; include <math_private.h> instead."
5 /* GCC does not optimize the default ldbl_pack code to not spill register
6 in the stack. The following optimization tells gcc that pack/unpack
7 is really a nop. We use fr1/fr2 because those are the regs used to
8 pass/return a single long double arg. */
9 static inline long double
10 ldbl_pack_ppc (double a
, double aa
)
12 register long double x
__asm__ ("fr1");
13 register double xh
__asm__ ("fr1");
14 register double xl
__asm__ ("fr2");
17 __asm__ ("" : "=f" (x
) : "f" (xh
), "f" (xl
));
22 ldbl_unpack_ppc (long double l
, double *a
, double *aa
)
24 register long double x
__asm__ ("fr1");
25 register double xh
__asm__ ("fr1");
26 register double xl
__asm__ ("fr2");
28 __asm__ ("" : "=f" (xh
), "=f" (xl
) : "f" (x
));
33 #define ldbl_pack ldbl_pack_ppc
34 #define ldbl_unpack ldbl_unpack_ppc
36 #include <sysdeps/ieee754/ldbl-128ibm/math_ldbl.h>