aboutsummaryrefslogtreecommitdiff
path: root/libgcc/configure
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2017-03-10 18:57:58 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2017-03-10 18:57:58 +0100
commit7502c5970d0af6cc71c2a906d55d95a31322bc07 (patch)
tree16e2a026b5e756c50a081d806968d0a5851baaf4 /libgcc/configure
parent0c942f3edab10854aecdf92e8bd79ca6bc33bc66 (diff)
downloadgcc-7502c5970d0af6cc71c2a906d55d95a31322bc07.zip
gcc-7502c5970d0af6cc71c2a906d55d95a31322bc07.tar.gz
gcc-7502c5970d0af6cc71c2a906d55d95a31322bc07.tar.bz2
rs6000: float128 on BE and 32-bit
This fixes float128 on BE and on 32-bit. The configure tests need to use -mabi=altivec for 32-bit, since it is not the default there. That also enables the "vector" keyword, used by the tests. To do this it temporarily adds a few flags to the CFLAGS variable. It also fixes a syntax error in the libgcc_cv_powerpc_float128_hw test (the function name was missing in the function declaration). Regenerating config.in (via autoreconf) removed the duplicate definition of HAVE_SOLARIS_CRTS. Finally, this adds a "-mfloat128-hardware requires -m64" test to rs6000.c: all the current patterns need 64-bit registers. Maybe we'll want to add float128 hardware support to 32-bit some day, but certainly not today. * config/rs6000/rs6000.c (rs6000_option_override_internal): Disallow -mfloat128-hardware without -m64. libgcc/ * configure.ac (test for libgcc_cv_powerpc_float128): Temporarily modify CFLAGS. Add -mabi=altivec -mvsx -mfloat128. (test for libgcc_cv_powerpc_float128_hw): Add -mpower9-vector and -mfloat128-hardware to the CFLAGS. Fix syntax error in the C snippet. * configure: Regenerate. * config.in: Regenerate. From-SVN: r246043
Diffstat (limited to 'libgcc/configure')
-rw-r--r--libgcc/configure12
1 files changed, 7 insertions, 5 deletions
diff --git a/libgcc/configure b/libgcc/configure
index 5c900cc..45c4597 100644
--- a/libgcc/configure
+++ b/libgcc/configure
@@ -4779,6 +4779,8 @@ case ${host} in
# software libraries, and whether the assembler can handle xsaddqp
# for hardware support.
powerpc*-*-linux*)
+ saved_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5
$as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; }
if test "${libgcc_cv_powerpc_float128+set}" = set; then :
@@ -4786,8 +4788,7 @@ if test "${libgcc_cv_powerpc_float128+set}" = set; then :
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#pragma GCC target ("vsx")
- vector double dadd (vector double a, vector double b) { return a + b; }
+vector double dadd (vector double a, vector double b) { return a + b; }
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
libgcc_cv_powerpc_float128=yes
@@ -4799,6 +4800,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128" >&5
$as_echo "$libgcc_cv_powerpc_float128" >&6; }
+ CFLAGS="$CFLAGS -mpower9-vector -mfloat128-hardware"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 3.0 to build hardware __float128 libraries" >&5
$as_echo_n "checking for PowerPC ISA 3.0 to build hardware __float128 libraries... " >&6; }
if test "${libgcc_cv_powerpc_float128_hw+set}" = set; then :
@@ -4806,12 +4808,11 @@ if test "${libgcc_cv_powerpc_float128_hw+set}" = set; then :
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#pragma GCC target ("vsx,power9-vector")
- #include <sys/auxv.h>
+#include <sys/auxv.h>
#ifndef AT_PLATFORM
#error "AT_PLATFORM is not defined"
#endif
- vector unsigned char (vector unsigned char a, vector unsigned char b)
+ vector unsigned char add (vector unsigned char a, vector unsigned char b)
{
vector unsigned char ret;
__asm__ ("xsaddqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b));
@@ -4830,6 +4831,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128_hw" >&5
$as_echo "$libgcc_cv_powerpc_float128_hw" >&6; }
+ CFLAGS="$saved_CFLAGS"
esac
# Collect host-machine-specific information.