glibc:tuliom/float128

Last commit made on 2017-05-25
Get this branch:
git clone -b tuliom/float128 https://git.launchpad.net/glibc

Branch merges

Branch information

Name:
tuliom/float128
Repository:
lp:glibc

Recent commits

0ded005... by "Paul E. Murphy" <email address hidden>

powerpc64le: Enable float128

Add ulps for the float128 type, bits/floatn.h, and float128-abi.h.

Likewise, sqrt is not implemented in libgcc. The sfp-machine.h
header is taken from libgcc, and used to build a P7/P8 soft-fp
sqrtf128.

 * sysdeps/powerpc/fpu/libm-test-ulps: Regenerated.
 * sysdeps/powerpc/fpu/math_private.h:
 (__ieee754_sqrtf128): New inline override.
 * sysdeps/powerpc/powerpc64le/Implies-before: New file.
 * sysdeps/powerpc/powerpc64le/Makefile: New file.
 * sysdeps/powerpc/powerpc64le/bits/floatn.h: New file.
 * sysdeps/powerpc/powerpc64le/fpu/e_sqrtf128.c: New file.
 * sysdeps/powerpc/powerpc64le/fpu/sfp-machine.h: New file.
 * sysdeps/powerpc/powerpc64le/power9/fpu/e_sqrtf128.c: New file.

 * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist:
 Regenerated.
 * sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist:
 Likewise.

 * sysdeps/unix/sysv/linux/powerpc/powerpc64le/float128-abi.h
 New file.

6675666... by Gabriel F. T. Gomes

powerpc64le: Require gcc >= 6.2 for powerpc64le

On powerpc64le, support for __float128 will start to be built by default,
which requires gcc versions greater than or equal to 6.2.

Tested for ppc64 (still works with older compilers) and ppc64le.

2017-04-28 Gabriel F. T. Gomes <email address hidden>
     Tulio Magno Quites Machado Filho <email address hidden>

 * sysdeps/powerpc/powerpc64le/configure.ac: New file with test for
 the required minimum gcc version.
 * sysdeps/powerpc/powerpc64le/configure: New, auto-generated file.

6019524... by "Paul E. Murphy" <email address hidden>

float128: Add test-{float128,ifloat128,float128-finite}

This adds test support for float128, and lays some
groundwork for future _FloatN types.

 * math/Makefile
 (CFLAGS-test-float128.c): Add appropriate test flags.
 (CFLAGS-test-float128-finite.c): Likewise
 (CPPFLAGS-test-ifloat128.c): Likewise

 * math/test-support.h (CFLOAT): New macro to compensate for older
 compilers not supporting _Complex __float128.
 * math/libm-test-support.c (check_complex): Use CFLOAT instead
 of __complex__ FLOAT.

 * math/test-float128-finite.c: New file.
 * math/test-float128.c: New file.
 * math/test-float128.h: New file.
 * math/test-ifloat128.c: New file.
 * math/test-math-floatn.h: New file.

 * math/gen-libm-test.pl (all_floats): Add float128 variants.
 (all_floats_pfx): Add float128 mapping.

 * math/gen-libm-have-vector-test.sh: Add support for float128.

aee0db1... by Gabriel F. T. Gomes

float128: Add strfromf128, strtof128, and wcstof128 to the manual

2016-11-14 Gabriel F. T. Gomes <email address hidden>

 * manual/arith.texi: Add descriptions for strfromf128, strtof128,
 and wcstof128.

3d9c4a4... by "Paul E. Murphy" <email address hidden>

float128: Add strtof128, wcstof128, and related functions.

The implementations are contained with sysdeps/ieee754/float128 as
they are only built when _Float128 is enabled within libc/m.

2017-05-23 Paul E. Murphy <email address hidden>

 * NEWS: Mention the addition of strtof128 and wcstof128.

 * include/gmp.h (__mpn_construct_float128): New declaration.
 * include/stdlib.h: Include bits/floatn.h for _Float128 tests.
 (__strtof128_l): New declaration.
 (__strtof128_nan): Likewise.
 (__wcstof128_nan): Likewise.
 (__strtof128_internal): Likewise.
 (____strtof128_l_internal): Likewise.
 * include/wchar.h: Include bits/floatn.h for _Float128 tests.
 (__wcstof128_l): New declaration.
 (__wcstof128_internal): Likewise.

 * stdlib/Makefile (bug-strtod2): Link libm too.

 * stdlib/stdlib.h (strtof128): New declaration.
 (strtof128_l): Likewise.

 * stdlib/tst-strtod-nan-locale-main.c: Updated to use
 tst-strtod.h macros to ensure float128 gets tested too.

 * stdlib/tst-strtod-round-skeleton.c (CHOOSE_f128): New macro.

 * stdlib/tst-strtod.h: Include bits/floatn.h for _Float128
 tests.
 (_GEN_F128): New macro.
 (_GEN): Likewise.
 (_GENx): Likewise.
 (_DO_F128): Likewise.
 (_DO): Likewise.
 (_DOx): Likewise.
 (GEN_TEST_STRTOD): Update to optionally include _Float128 in
 the tests.
 (STRTOD_TEST_FOREACH): Likewise.

 * sysdeps/ieee754/float128/Makefile: Insert new strtof128 and
 wcstof128 functions into libc.

 * sysdeps/ieee754/float128/Versions: Add exports for the above
 new functions.

 * sysdeps/ieee754/float128/mpn2float128.c: New file.
 * sysdeps/ieee754/float128/strtod_nan_float128.h: New file.
 * sysdeps/ieee754/float128/strtof128.c: New file.
 * sysdeps/ieee754/float128/strtof128_l.c: New file.
 * sysdeps/ieee754/float128/strtof128_nan.c: New file.
 * sysdeps/ieee754/float128/wcstof128.c: New file.
 * sysdeps/ieee754/float128/wcstof128_l.c: New file.
 * sysdeps/ieee754/float128/wcstof128_nan.c: New fike.
 * wcsmbs/Makefile: (CFLAGS-wcstof128.c): Append strtox-CFLAGS.
 (CFLAGS-wcstof128_l): Likewise.

 * wcsmbs/wchar.h (wcstof128): New declaration.
 (wcstof128_l): Likewise.

b2da973... by Gabriel F. T. Gomes

float128: Add strfromf128

Add strfromf128 to stdlib when _Float128 support is enabled.

2016-11-07 Gabriel F. T. Gomes <email address hidden>

 * NEWS: Mention the addition of strfromf128.
 * include/gmp.h: Include bits/floatn.h for _Float128 support.
 * stdio-common/printf-parsemb.c (__parse_one_specmb): Initialize
 spec->info.is_binary128 to zero.
 * stdio-common/printf.h (printf_info): Add new member is_binary128
 to indicate that the number being converted to string is compatible
 with the IEC 60559 binary128 format.
 * stdio-common/printf_fp.c (__printf_fp_l): Add code to deal with
 _Float128 numbers.
 * stdio-common/printf_fphex.c (__printf_fphex): Likewise.
 * stdio-common/printf_size.c (__printf_size): Likewise.
 * stdio-common/vfprintf.c (process_arg): Initialize member
 info.is_binary128 to zero.
 * stdlib/fpioconst.h (FLT128_MAX_10_EXP_LOG): New macro.
 * stdlib/stdlib.h: Include bits/floatn.h for _Float128 support.
 (strfromf128): New declaration.
 * stdlib/strfrom-skeleton.c (STRFROM): Set member info.is_binary128
 to one.
 * sysdeps/ieee754/float128/Makefile: Add strfromf128.
 * sysdeps/ieee754/float128/Versions: Likewise.
 * sysdeps/ieee754/float128/strfromf128.c: New file.

fb91e22... by Gabriel F. T. Gomes

float128: Add conversion from float128 to mpn

Reuse the code for __mpn_extract_long_double to implement
__mpn_extract_float128.

2017-05-15 Gabriel F. T. Gomes <email address hidden>

 * include/gmp.h (__mpn_extract_float128): Declare when
 __HAVE_DISTINCT_FLOAT128 is 1.
 * misc/sys/param.h (MIN, MAX): Only define if not yet defined.
 * sysdeps/ieee754/float128/Makefile: New file.
 * sysdeps/ieee754/float128/float1282mpn.c: New file.
 * sysdeps/ieee754/ldbl-128/ldbl2mpn.c (__mpn_extract_float128): New
 function, which is built when __FLOAT128_OVERRIDE is defined.

ec9052e... by "Paul E. Murphy" <email address hidden>

float128: Extend the power of ten tables

Update the power of ten tables used by the common implementation when long
double is not the most expressive real type.

2016-11-04 Paul E. Murphy <email address hidden>

 * stdlib/fpioconst.c (HAVE_EXTENDED_RANGE): New macro
 for testing how big the power of ten table should be.
 [TENS_P11_IDX]: Include if above is true.
 [TENS_P12_IDX]: Include if above is true.
 [TENS_P13_IDX]: Include if above is true.
 [TENS_P14_IDX]: Include if above is true.
 * stdlib/fpioconst.h (FPIOCONST_POW10_ARRAY_SIZE):
 Use larger table if _Float128 is supported.

302bb1a... by "Paul E. Murphy" <email address hidden>

float128: Add wrappers to override ldbl-128 as float128.

This change defines float128_private.h which contains
macros used to override long double naming conventions
when building a ldbl file.

 * math/math.h [__HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)]
 (SNANF128): New macro.
 * math/e_sqrtf128.c: New file.
 * math/s_fmaxmag_template.c: Include math_private.h in order to
 make inline expansion of fabs128().
 * math/s_fminmag_template.c: Likewise.

 * sysdeps/ieee754/float128/e_acosf128.c: New file.
 * sysdeps/ieee754/float128/e_acoshf128.c: New file.
 * sysdeps/ieee754/float128/e_asinf128.c: New file.
 * sysdeps/ieee754/float128/e_atan2f128.c: New file.
 * sysdeps/ieee754/float128/e_atanhf128.c: New file.
 * sysdeps/ieee754/float128/e_coshf128.c: New file.
 * sysdeps/ieee754/float128/e_exp10f128.c: New file.
 * sysdeps/ieee754/float128/e_expf128.c: New file.
 * sysdeps/ieee754/float128/e_fmodf128.c: New file.
 * sysdeps/ieee754/float128/e_gammaf128_r.c: New file.
 * sysdeps/ieee754/float128/e_hypotf128.c: New file.
 * sysdeps/ieee754/float128/e_ilogbf128.c: New file.
 * sysdeps/ieee754/float128/e_j0f128.c: New file.
 * sysdeps/ieee754/float128/e_j1f128.c: New file.
 * sysdeps/ieee754/float128/e_jnf128.c: New file.
 * sysdeps/ieee754/float128/e_lgammaf128_r.c: New file.
 * sysdeps/ieee754/float128/e_log10f128.c: New file.
 * sysdeps/ieee754/float128/e_log2f128.c: New file.
 * sysdeps/ieee754/float128/e_logf128.c: New file.
 * sysdeps/ieee754/float128/e_powf128.c: New file.
 * sysdeps/ieee754/float128/e_rem_pio2f128.c: New file.
 * sysdeps/ieee754/float128/e_remainderf128.c: New file.
 * sysdeps/ieee754/float128/e_scalbf128.c: New file.
 * sysdeps/ieee754/float128/e_sinhf128.c: New file.
 * sysdeps/ieee754/float128/float128_private.h: New file.
 * sysdeps/ieee754/float128/gamma_productf128.c: New file.
 * sysdeps/ieee754/float128/ieee754_float128.h: New file.
 * sysdeps/ieee754/float128/k_cosf128.c: New file.
 * sysdeps/ieee754/float128/k_sincosf128.c: New file.
 * sysdeps/ieee754/float128/k_sinf128.c: New file.
 * sysdeps/ieee754/float128/k_tanf128.c: New file.
 * sysdeps/ieee754/float128/lgamma_negf128.c: New file.
 * sysdeps/ieee754/float128/lgamma_productf128.c: New file.
 * sysdeps/ieee754/float128/s_asinhf128.c: New file.
 * sysdeps/ieee754/float128/s_atanf128.c: New file.
 * sysdeps/ieee754/float128/s_cbrtf128.c: New file.
 * sysdeps/ieee754/float128/s_ceilf128.c: New file.
 * sysdeps/ieee754/float128/s_copysignf128.c: New file.
 * sysdeps/ieee754/float128/s_cosf128.c: New file.
 * sysdeps/ieee754/float128/s_erff128.c: New file.
 * sysdeps/ieee754/float128/s_expm1f128.c: New file.
 * sysdeps/ieee754/float128/s_fabsf128.c: New file.
 * sysdeps/ieee754/float128/s_finitef128.c: New file.
 * sysdeps/ieee754/float128/s_floorf128.c: New file.
 * sysdeps/ieee754/float128/s_fmaf128.c: New file.
 * sysdeps/ieee754/float128/s_fpclassifyf128.c: New file.
 * sysdeps/ieee754/float128/s_frexpf128.c: New file.
 * sysdeps/ieee754/float128/s_fromfpf128.c: New file.
 * sysdeps/ieee754/float128/s_fromfpxf128.c: New file.
 * sysdeps/ieee754/float128/s_getpayloadf128.c: New file.
 * sysdeps/ieee754/float128/s_isinff128.c: New file.
 * sysdeps/ieee754/float128/s_isnanf128.c: New file.
 * sysdeps/ieee754/float128/s_issignalingf128.c: New file.
 * sysdeps/ieee754/float128/s_llrintf128.c: New file.
 * sysdeps/ieee754/float128/s_llroundf128.c: New file.
 * sysdeps/ieee754/float128/s_log1pf128.c: New file.
 * sysdeps/ieee754/float128/s_logbf128.c: New file.
 * sysdeps/ieee754/float128/s_lrintf128.c: New file.
 * sysdeps/ieee754/float128/s_lroundf128.c: New file.
 * sysdeps/ieee754/float128/s_modff128.c: New file.
 * sysdeps/ieee754/float128/s_nearbyintf128.c: New file.
 * sysdeps/ieee754/float128/s_nextafterf128.c: New file.
 * sysdeps/ieee754/float128/s_nexttowardf128.c: New file.
 * sysdeps/ieee754/float128/s_nextupf128.c: New file.
 * sysdeps/ieee754/float128/s_remquof128.c: New file.
 * sysdeps/ieee754/float128/s_rintf128.c: New file.
 * sysdeps/ieee754/float128/s_roundevenf128.c: New file.
 * sysdeps/ieee754/float128/s_roundf128.c: New file.
 * sysdeps/ieee754/float128/s_scalblnf128.c: New file.
 * sysdeps/ieee754/float128/s_scalbnf128.c: New file.
 * sysdeps/ieee754/float128/s_setpayloadf128.c: New file.
 * sysdeps/ieee754/float128/s_setpayloadsigf128.c: New file.
 * sysdeps/ieee754/float128/s_signbitf128.c: New file.
 * sysdeps/ieee754/float128/s_significandf128.c: New file.
 * sysdeps/ieee754/float128/s_sincosf128.c: New file.
 * sysdeps/ieee754/float128/s_sinf128.c: New file.
 * sysdeps/ieee754/float128/s_tanf128.c: New file.
 * sysdeps/ieee754/float128/s_tanhf128.c: New file.
 * sysdeps/ieee754/float128/s_totalorderf128.c: New file.
 * sysdeps/ieee754/float128/s_totalordermagf128.c: New file.
 * sysdeps/ieee754/float128/s_truncf128.c: New file.
 * sysdeps/ieee754/float128/s_ufromfpf128.c: New file.
 * sysdeps/ieee754/float128/s_ufromfpxf128.c: New file.
 * sysdeps/ieee754/float128/t_sincosf128.c: New file.
 * sysdeps/ieee754/float128/x2y2m1f128.c: New file.

 * sysdeps/ieee754/ldbl-128ibm/bits/iscanonical.h:
 (__iscanonicalf128): Define as a macro.

6a2c695... by Steve Ellcey

aarch64: Thunderx specific memcpy and memmove

 * sysdeps/aarch64/memcpy.S (MEMMOVE, MEMCPY): New macros.
 (memmove): Use MEMMOVE for name.
 (memcpy): Use MEMCPY for name. Change internal labels
 to external labels.
 * sysdeps/aarch64/multiarch/Makefile: New file.
 * sysdeps/aarch64/multiarch/ifunc-impl-list.c: Likewise.
 * sysdeps/aarch64/multiarch/init-arch.h: Likewise.
 * sysdeps/aarch64/multiarch/memcpy.c: Likewise.
 * sysdeps/aarch64/multiarch/memcpy_generic.S: Likewise.
 * sysdeps/aarch64/multiarch/memcpy_thunderx.S: Likewise.
 * sysdeps/aarch64/multiarch/memmove.c: Likewise.