gcc/libgcc
Michael Meissner 781183595a Add conversions between _Float128 and Decimal.
This patch implements conversions between _Float128 and the 3 Decimal floating
types.  It does this by extendending the dfp-bit conversions to add a new
binary floating point type (KF), and doing the conversions in the same manner
as the other binary/decimal conversions.

For conversions from _Float128 to Decimal, this patch uses a function
(__sprintfkf) instead of the sprintf function to convert long double values to
strings.  The __sprintfkf function determines if GLIBC 2.32 or newer is used
and calls the IEEE 128-bit version of sprintf (__sprintfieee128).  If the GLIBC
is earlier than 2.32, the code will convert _Float128 to __ibm128 and then use
the normal sprintf to convert this value.

For conversions from Decimal to _Float128, this patch uses a function
(__strtokf) instead of strtold to convert the strings from the Decimal
conversion to long double.  The __strtokf function determines if GLIBC 2.32 or
newer is used, and if it is, calls the IEEE 128-bit version (__strtoieee128).
If the GLIBC is earlier than 2.32, the code will call strtold and convert the
__ibm128 value to _Float128.

These functions will primarily be used if/when the default PowerPC long double
type is changed to IEEE 128-bit, but they could also be used if the user
explicitly converts _Float128 to/from a Decimal type.

libgcc/
2021-02-22  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/_dd_to_kf.c: New file.
	* config/rs6000/_kf_to_dd.c: New file.
	* config/rs6000/_kf_to_sd.c: New file.
	* config/rs6000/_kf_to_td.c: New file.
	* config/rs6000/_sd_to_kf.c: New file.
	* config/rs6000/_sprintfkf.c: New file.
	* config/rs6000/_sprintfkf.h: New file.
	* config/rs6000/_strtokf.h: New file.
	* config/rs6000/_strtokf.c: New file.
	* config/rs6000/_td_to_kf.c: New file.
	* config/rs6000/quad-float128.h: Add new declarations.
	* config/rs6000/t-float128 (fp128_dec_funcs): New macro.
	(fp128_decstr_funcs): New macro.
	(ibm128_dec_funcs): New macro.
	(fp128_ppc_funcs): Add the new conversions.
	(fp128_dec_objs): Force Decimal <-> __float128 conversions to be
	compiled with -mabi=ieeelongdouble.
	(fp128_decstr_objs): Force __float128 <-> string conversions to be
	compiled with -mabi=ibmlongdouble.
	(ibm128_dec_objs): Force Decimal <-> __float128 conversions to be
	compiled with -mabi=ieeelongdouble.
	(FP128_CFLAGS_DECIMAL): New macro.
	(IBM128_CFLAGS_DECIMAL): New macro.
	* dfp-bit.c (DFP_TO_BFP): Add PowerPC _Float128 support.
	(BFP_TO_DFP): Add PowerPC _Float128 support.
	* dfp-bit.h (BFP_KIND): Add new binary floating point kind for
	IEEE 128-bit floating point.
	(DFP_TO_BFP): Add PowerPC _Float128 support.
	(BFP_TO_DFP): Add PowerPC _Float128 support.
	(BFP_SPRINTF): New macro.
2021-02-22 15:33:29 -05:00
..
config Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
soft-fp soft-fp: Update soft-fp from glibc 2019-05-17 07:37:39 -07:00
ChangeLog Daily bump. 2021-01-28 00:16:56 +00:00
config.host Update copyright years. 2021-01-04 10:26:59 +01:00
config.in aarch64: Fix bootstrap with old binutils [PR93053] 2020-04-15 11:01:19 +02:00
configure Introduce vxworks7r2 support for ppc and ppc64 2020-10-21 16:26:37 +00:00
configure.ac Introduce vxworks7r2 support for ppc and ppc64 2020-10-21 16:26:37 +00:00
crtstuff.c Update copyright years. 2021-01-04 10:26:59 +01:00
dfp-bit.c Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
dfp-bit.h Add conversions between _Float128 and Decimal. 2021-02-22 15:33:29 -05:00
divmod.c Update copyright years. 2021-01-04 10:26:59 +01:00
emutls.c Update copyright years. 2021-01-04 10:26:59 +01:00
enable-execute-stack-empty.c
enable-execute-stack-mprotect.c Update copyright years. 2021-01-04 10:26:59 +01:00
find-symver.awk Update copyright years. 2021-01-04 10:26:59 +01:00
fixed-bit.c Update copyright years. 2021-01-04 10:26:59 +01:00
fixed-bit.h Update copyright years. 2021-01-04 10:26:59 +01:00
fixed-obj.mk
floatunsidf.c
floatunsisf.c
floatunsitf.c
floatunsixf.c
fp-bit.c Update copyright years. 2021-01-04 10:26:59 +01:00
fp-bit.h Update copyright years. 2021-01-04 10:26:59 +01:00
gbl-ctors.h Update copyright years. 2021-01-04 10:26:59 +01:00
gcov.h Update copyright years. 2021-01-04 10:26:59 +01:00
gen-fixed.sh
generic-morestack-thread.c Update copyright years. 2021-01-04 10:26:59 +01:00
generic-morestack.c Update copyright years. 2021-01-04 10:26:59 +01:00
generic-morestack.h Update copyright years. 2021-01-04 10:26:59 +01:00
gstdint.h
gthr-posix.h Update copyright years. 2021-01-04 10:26:59 +01:00
gthr-single.h Update copyright years. 2021-01-04 10:26:59 +01:00
gthr.h Update copyright years. 2021-01-04 10:26:59 +01:00
libgcc2.c Update copyright years. 2021-01-04 10:26:59 +01:00
libgcc2.h Update copyright years. 2021-01-04 10:26:59 +01:00
libgcc-std.ver.in Update copyright years. 2021-01-04 10:26:59 +01:00
libgcov-driver-system.c Update copyright years. 2021-01-04 10:26:59 +01:00
libgcov-driver.c Update copyright years. 2021-01-04 10:26:59 +01:00
libgcov-interface.c Update copyright years. 2021-01-04 10:26:59 +01:00
libgcov-merge.c Restore profile reproducibility. 2021-01-25 13:30:34 +01:00
libgcov-profiler.c Update copyright years. 2021-01-04 10:26:59 +01:00
libgcov-util.c Update copyright years. 2021-01-04 10:26:59 +01:00
libgcov.h libgcov: improve profile reproducibility 2021-01-26 12:44:34 +01:00
Makefile.in Update copyright years. 2021-01-04 10:26:59 +01:00
memcmp.c
memcpy.c
memmove.c
memset.c
mkheader.sh Update copyright years. 2021-01-04 10:26:59 +01:00
mkmap-flat.awk Update copyright years. 2021-01-04 10:26:59 +01:00
mkmap-symver.awk Update copyright years. 2021-01-04 10:26:59 +01:00
offloadstuff.c Update copyright years. 2021-01-04 10:26:59 +01:00
shared-object.mk
siditi-object.mk
static-object.mk
sync.c Update copyright years. 2021-01-04 10:26:59 +01:00
udivhi3.c Update copyright years. 2021-01-04 10:26:59 +01:00
udivmod.c Update copyright years. 2021-01-04 10:26:59 +01:00
udivmodhi4.c Update copyright years. 2021-01-04 10:26:59 +01:00
udivmodsi4.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-arm-common.inc Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-c.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-compat.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-compat.h Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-dw2-fde-compat.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-dw2-fde-dip.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-dw2-fde.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-dw2-fde.h Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-dw2.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-dw2.h Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-generic.h Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-pe.h Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-seh.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind-sjlj.c Update copyright years. 2021-01-04 10:26:59 +01:00
unwind.inc Update copyright years. 2021-01-04 10:26:59 +01:00
vtv_end_preinit.c Update copyright years. 2021-01-04 10:26:59 +01:00
vtv_end.c Update copyright years. 2021-01-04 10:26:59 +01:00
vtv_start_preinit.c Update copyright years. 2021-01-04 10:26:59 +01:00
vtv_start.c Update copyright years. 2021-01-04 10:26:59 +01:00