From: Paul E. Murphy Date: Fri, 15 Jul 2016 19:05:51 +0000 (-0500) Subject: float128: Add _Float128 make bits to libm. X-Git-Tag: upstream/2.30~3474 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=26265c3bce73ca85a4b6976ba62dc2111b46e414;p=platform%2Fupstream%2Fglibc.git float128: Add _Float128 make bits to libm. This adds the appropriate common bits for a platform to enable float128 and expose ABI. * math/Makefile: (type-float128-suffix): New variable (type-float128-routines): Likewise (type-float128-yes): Likewise (types): Append float128 if supported (types-basic): New variable to control the use of templates for float, double, and long double, but not for float128 or newer types. (type-basic-foreach): Likewise. * sysdeps/ieee754/float128/Makeconfig: New file. * sysdeps/ieee754/float128/Versions: New file. --- diff --git a/ChangeLog b/ChangeLog index e53c4b0..6adf580 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2017-05-09 Paul E. Murphy + Gabriel F. T. Gomes + + * math/Makefile: + (type-float128-suffix): New variable + (type-float128-routines): Likewise + (type-float128-yes): Likewise + (types): Append float128 if supported + (types-basic): New variable to control the use of templates for + float, double, and long double, but not for float128 or newer types. + (type-basic-foreach): Likewise. + + * sysdeps/ieee754/float128/Makeconfig: New file. + * sysdeps/ieee754/float128/Versions: New file. + 2017-05-09 Joseph Myers * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PRLIMIT64): diff --git a/math/Makefile b/math/Makefile index 97080a7..634c619 100644 --- a/math/Makefile +++ b/math/Makefile @@ -100,7 +100,7 @@ libm-compat-calls = \ # Finally, note that types is an intentionally recursive variable. # We only know the full set of supported types for the target machine # after the Rules makefile has been parsed. -types = $(type-ldouble-$(long-double-fcts)) double float +types-basic = $(type-ldouble-$(long-double-fcts)) double float # long double support type-ldouble-suffix := l @@ -117,12 +117,23 @@ type-double-routines := branred doasin dosincos halfulp mpa mpatan2 \ type-float-suffix := f type-float-routines := k_rem_pio2f +# _Float128 support +type-float128-suffix := f128 +type-float128-routines := t_sincosf128 k_sincosf128 +type-float128-yes := float128 +types = $(types-basic) $(type-float128-$(float128-fcts)) + +# For each of the basic types (float, double, long double), replace the +# occurrences of 'F' in arg 1 with the appropriate suffix for the type. +type-basic-foreach = $(foreach t, $(types-basic), \ + $(subst F,$(type-$(t)-suffix),$(1))) # Apply suffix to each type in arg 1 type-foreach = $(foreach t,$(types),$(subst F,$(type-$(t)-suffix),$(1))) libm-routines = $(strip $(libm-support) \ - $(call type-foreach, $(libm-compat-calls)) \ + $(call type-basic-foreach, \ + $(libm-compat-calls)) \ $(call type-foreach, $(libm-calls)) \ $(foreach t, $(types), $(type-$(t)-routines))) \ @@ -543,6 +554,7 @@ endif CFLAGS-s_modf.c += -fsignaling-nans CFLAGS-s_modff.c += -fsignaling-nans CFLAGS-s_modfl.c += -fsignaling-nans +CFLAGS-s_modff128.c += -fsignaling-nans # The -lieee library is actually an object file. # The module just defines the _LIB_VERSION_ variable. diff --git a/sysdeps/ieee754/float128/Makeconfig b/sysdeps/ieee754/float128/Makeconfig new file mode 100644 index 0000000..6c385d2 --- /dev/null +++ b/sysdeps/ieee754/float128/Makeconfig @@ -0,0 +1,3 @@ +# Include this earlier so it can be used earlier in Makefiles, +# and sysdep/ makefiles. +float128-fcts = yes diff --git a/sysdeps/ieee754/float128/Versions b/sysdeps/ieee754/float128/Versions new file mode 100644 index 0000000..9f431d9 --- /dev/null +++ b/sysdeps/ieee754/float128/Versions @@ -0,0 +1,145 @@ +%include +%ifndef FLOAT128_VERSION +% error "float128-abi.h must define FLOAT128_VERSION" +%endif +libm { + FLOAT128_VERSION { + __acosf128_finite; + __acoshf128_finite; + __asinf128_finite; + __atan2f128_finite; + __atanhf128_finite; + __coshf128_finite; + __exp10f128_finite; + __exp2f128_finite; + __expf128_finite; + __finitef128; + __fmodf128_finite; + __fpclassifyf128; + __gammaf128_r_finite; + __hypotf128_finite; + __iseqsigf128; + __isinff128; + __isnanf128; + __issignalingf128; + __j0f128_finite; + __j1f128_finite; + __jnf128_finite; + __lgammaf128_r_finite; + __log10f128_finite; + __log2f128_finite; + __logf128_finite; + __powf128_finite; + __remainderf128_finite; + __signbitf128; + __sinhf128_finite; + __sqrtf128_finite; + __y0f128_finite; + __y1f128_finite; + __ynf128_finite; + acosf128; + acoshf128; + asinf128; + asinhf128; + atan2f128; + atanf128; + atanhf128; + cabsf128; + cacosf128; + cacoshf128; + canonicalizef128; + cargf128; + casinf128; + casinhf128; + catanf128; + catanhf128; + cbrtf128; + ccosf128; + ccoshf128; + ceilf128; + cexpf128; + cimagf128; + clog10f128; + clogf128; + conjf128; + copysignf128; + cosf128; + coshf128; + cpowf128; + cprojf128; + crealf128; + csinf128; + csinhf128; + csqrtf128; + ctanf128; + ctanhf128; + erfcf128; + erff128; + exp10f128; + exp2f128; + expf128; + expm1f128; + fabsf128; + fdimf128; + floorf128; + fmaf128; + fmaxf128; + fmaxmagf128; + fminf128; + fminmagf128; + fmodf128; + frexpf128; + fromfpf128; + fromfpxf128; + getpayloadf128; + hypotf128; + ilogbf128; + j0f128; + j1f128; + jnf128; + ldexpf128; + lgammaf128; + lgammaf128_r; + llogbf128; + llrintf128; + llroundf128; + log10f128; + log1pf128; + log2f128; + logbf128; + logf128; + lrintf128; + lroundf128; + modff128; + nanf128; + nearbyintf128; + nextafterf128; + nextdownf128; + nextupf128; + powf128; + remainderf128; + remquof128; + rintf128; + roundevenf128; + roundf128; + scalblnf128; + scalbnf128; + setpayloadf128; + setpayloadsigf128; + sincosf128; + sinf128; + sinhf128; + sqrtf128; + tanf128; + tanhf128; + tgammaf128; + totalorderf128; + totalordermagf128; + truncf128; + ufromfpf128; + ufromfpxf128; + y0f128; + y1f128; + ynf128; + } +}