diff options
Diffstat (limited to 'sysdeps/ieee754/ldbl-128ibm/e_expl.c')
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/e_expl.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_expl.c b/sysdeps/ieee754/ldbl-128ibm/e_expl.c index a5024559dc..0c33d88010 100644 --- a/sysdeps/ieee754/ldbl-128ibm/e_expl.c +++ b/sysdeps/ieee754/ldbl-128ibm/e_expl.c @@ -134,6 +134,11 @@ static const long double C[] = { 1.98412698413981650382436541785404286E-04L, }; +/* Avoid local PLT entry use from (int) roundl (...) being converted + to a call to lroundl in the case of 32-bit long and roundl not + inlined. */ +long int lroundl (long double) asm ("__lroundl"); + long double __ieee754_expl (long double x) { @@ -149,15 +154,15 @@ __ieee754_expl (long double x) SET_RESTORE_ROUND (FE_TONEAREST); - n = __roundl (x*M_1_LN2); + n = roundl (x*M_1_LN2); x = x-n*M_LN2_0; xl = n*M_LN2_1; - tval1 = __roundl (x*TWO8); + tval1 = roundl (x*TWO8); x -= __expl_table[T_EXPL_ARG1+2*tval1]; xl -= __expl_table[T_EXPL_ARG1+2*tval1+1]; - tval2 = __roundl (x*TWO15); + tval2 = roundl (x*TWO15); x -= __expl_table[T_EXPL_ARG2+2*tval2]; xl -= __expl_table[T_EXPL_ARG2+2*tval2+1]; |