mirror of git://sourceware.org/git/glibc.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.
This commit is contained in:
parent
695d7d138e
commit
26265c3bce
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
2017-05-09 Paul E. Murphy <murphyp@linux.vnet.ibm.com>
|
||||||
|
Gabriel F. T. Gomes <gftg@linux.vnet.ibm.com>
|
||||||
|
|
||||||
|
* 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 <joseph@codesourcery.com>
|
2017-05-09 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PRLIMIT64):
|
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PRLIMIT64):
|
||||||
|
|
|
@ -100,7 +100,7 @@ libm-compat-calls = \
|
||||||
# Finally, note that types is an intentionally recursive variable.
|
# Finally, note that types is an intentionally recursive variable.
|
||||||
# We only know the full set of supported types for the target machine
|
# We only know the full set of supported types for the target machine
|
||||||
# after the Rules makefile has been parsed.
|
# 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
|
# long double support
|
||||||
type-ldouble-suffix := l
|
type-ldouble-suffix := l
|
||||||
|
@ -117,12 +117,23 @@ type-double-routines := branred doasin dosincos halfulp mpa mpatan2 \
|
||||||
type-float-suffix := f
|
type-float-suffix := f
|
||||||
type-float-routines := k_rem_pio2f
|
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
|
# Apply suffix to each type in arg 1
|
||||||
type-foreach = $(foreach t,$(types),$(subst F,$(type-$(t)-suffix),$(1)))
|
type-foreach = $(foreach t,$(types),$(subst F,$(type-$(t)-suffix),$(1)))
|
||||||
|
|
||||||
libm-routines = $(strip $(libm-support) \
|
libm-routines = $(strip $(libm-support) \
|
||||||
$(call type-foreach, $(libm-compat-calls)) \
|
$(call type-basic-foreach, \
|
||||||
|
$(libm-compat-calls)) \
|
||||||
$(call type-foreach, $(libm-calls)) \
|
$(call type-foreach, $(libm-calls)) \
|
||||||
$(foreach t, $(types), $(type-$(t)-routines))) \
|
$(foreach t, $(types), $(type-$(t)-routines))) \
|
||||||
|
|
||||||
|
@ -543,6 +554,7 @@ endif
|
||||||
CFLAGS-s_modf.c += -fsignaling-nans
|
CFLAGS-s_modf.c += -fsignaling-nans
|
||||||
CFLAGS-s_modff.c += -fsignaling-nans
|
CFLAGS-s_modff.c += -fsignaling-nans
|
||||||
CFLAGS-s_modfl.c += -fsignaling-nans
|
CFLAGS-s_modfl.c += -fsignaling-nans
|
||||||
|
CFLAGS-s_modff128.c += -fsignaling-nans
|
||||||
|
|
||||||
# The -lieee library is actually an object file.
|
# The -lieee library is actually an object file.
|
||||||
# The module just defines the _LIB_VERSION_ variable.
|
# The module just defines the _LIB_VERSION_ variable.
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Include this earlier so it can be used earlier in Makefiles,
|
||||||
|
# and sysdep/ makefiles.
|
||||||
|
float128-fcts = yes
|
|
@ -0,0 +1,145 @@
|
||||||
|
%include <float128-abi.h>
|
||||||
|
%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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue