about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64le/Makefile
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-08-09 16:48:54 -0500
committerGabriel F. T. Gomes <gftg@linux.vnet.ibm.com>2017-05-25 16:14:47 -0300
commit0ded00553f47d1e19bad2df60b4d6ee54eaff1ad (patch)
tree5625f7b30e20f2e893ef210379e79aed180f1dd8 /sysdeps/powerpc/powerpc64le/Makefile
parent6675666a8233b38c726df28d4c61d6e806585215 (diff)
downloadglibc-0ded00553f47d1e19bad2df60b4d6ee54eaff1ad.tar.gz
glibc-0ded00553f47d1e19bad2df60b4d6ee54eaff1ad.tar.xz
glibc-0ded00553f47d1e19bad2df60b4d6ee54eaff1ad.zip
powerpc64le: Enable float128 tuliom/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.
Diffstat (limited to 'sysdeps/powerpc/powerpc64le/Makefile')
-rw-r--r--sysdeps/powerpc/powerpc64le/Makefile48
1 files changed, 48 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64le/Makefile b/sysdeps/powerpc/powerpc64le/Makefile
new file mode 100644
index 0000000000..0e3c449b2d
--- /dev/null
+++ b/sysdeps/powerpc/powerpc64le/Makefile
@@ -0,0 +1,48 @@
+# When building float128 we need to ensure -mfloat128 is
+# passed to all such object files.
+
+ifeq ($(subdir),math)
+# sqrtf128 requires emulation on POWER8 and below.
+CPPFLAGS += -I../soft-fp
+
+# float128 requires adding a handful of extra flags.
+%f128.o %f128.os %f128_r.o %f128_r.os: CFLAGS += -mfloat128
+$(objpfx)test-float128%.o $(objpfx)test-float128%.os: CFLAGS += -mfloat128
+$(objpfx)test-ifloat128%.o $(objpfx)test-ifloat128%.os: CFLAGS += -mfloat128
+CFLAGS-libm-test-support-float128.c += -mfloat128
+endif
+
+# Append flags to string <-> _Float128 routines.
+ifneq ($(filter $(subdir),wcsmbs stdlib),)
+%f128.o %f128.os %f128_l.o %f128_l.os %f128_nan.o %f128_nan.os %float1282mpn.o %float1282mpn.os %mpn2float128.o %mpn2float128.os: CFLAGS += -mfloat128
+CFLAGS-bug-strtod.c += -mfloat128
+CFLAGS-bug-strtod2.c += -mfloat128
+CFLAGS-tst-strtod-round.c += -mfloat128
+CFLAGS-tst-wcstod-round.c += -mfloat128
+CFLAGS-tst-strtod6.c += -mfloat128
+CFLAGS-tst-strfrom.c += -mfloat128
+CFLAGS-tst-strfrom-locale.c += -mfloat128
+CFLAGS-strfrom-skeleton.c += -mfloat128
+
+# The strfrom class of functions call __printf_fp in order to convert the
+# floating-point value to characters.  This requires the value of IO_MTSAFE_IO.
+CFLAGS-strfromf128.c += $(libio-mtsafe)
+
+# When building glibc with support for _Float128, the powers of ten tables in
+# fpioconst.c and in the string conversion functions must be extended.
+sysdep-CFLAGS += $(sysdep-CFLAGS-$(<F))
+sysdep-CFLAGS-fpioconst.c += -mfloat128
+sysdep-CFLAGS-strtod_l.c += -mfloat128
+sysdep-CFLAGS-strtof_l.c += -mfloat128
+sysdep-CFLAGS-strtold_l.c += -mfloat128
+sysdep-CFLAGS-wcstod_l.c += -mfloat128
+sysdep-CFLAGS-wcstof_l.c += -mfloat128
+sysdep-CFLAGS-wcstold_l.c += -mfloat128
+endif
+
+# Append flags to printf routines.
+ifeq ($(subdir),stdio-common)
+CFLAGS-printf_fp.c = -mfloat128
+CFLAGS-printf_fphex.c = -mfloat128
+CFLAGS-printf_size.c = -mfloat128
+endif