00db10
From 29f8926b153d59ba18f67ce5445dce66bacc0cbf Mon Sep 17 00:00:00 2001
00db10
From: Stefan Liebler <stli@linux.vnet.ibm.com>
00db10
Date: Mon, 7 Nov 2016 15:25:04 +0100
00db10
Subject: [PATCH 02/17] S390: Configure check for vector support in gcc.
00db10
00db10
Upstream commit 9b7f05599a92dead97d6683bc838a57bc63ac52b
00db10
00db10
The S390 specific test checks if the gcc has support for vector registers
00db10
by compiling an inline assembly which clobbers vector registers.
00db10
On success the macro HAVE_S390_VX_GCC_SUPPORT is defined.
00db10
This macro can be used to determine if e.g. clobbering vector registers
00db10
is allowed or not.
00db10
00db10
ChangeLog:
00db10
00db10
	* config.h.in (HAVE_S390_VX_GCC_SUPPORT): New macro undefine.
00db10
	* sysdeps/s390/configure.in: Add test for S390 vector register
00db10
	support in gcc.
00db10
	* sysdeps/s390/configure: Regenerated.
00db10
---
00db10
 config.h.in               |  4 ++++
00db10
 sysdeps/s390/configure    | 33 +++++++++++++++++++++++++++++++++
00db10
 sysdeps/s390/configure.in | 22 ++++++++++++++++++++++
00db10
 3 files changed, 59 insertions(+)
00db10
00db10
diff --git a/config.h.in b/config.h.in
00db10
index f7f2388..62e04c7 100644
00db10
--- a/config.h.in
00db10
+++ b/config.h.in
00db10
@@ -113,6 +113,10 @@
00db10
 /* Define if assembler supports vector instructions on S390.  */
00db10
 #undef  HAVE_S390_VX_ASM_SUPPORT
00db10
 
00db10
+/* Define if gcc supports vector registers as clobbers in inline assembly
00db10
+   on S390.  */
00db10
+#undef  HAVE_S390_VX_GCC_SUPPORT
00db10
+
00db10
 /* Define if gcc supports FMA4.  */
00db10
 #undef	HAVE_FMA4_SUPPORT
00db10
 
00db10
diff --git a/sysdeps/s390/configure b/sysdeps/s390/configure
00db10
index cc4c1e0..eb49a4c 100644
00db10
--- a/sysdeps/s390/configure
00db10
+++ b/sysdeps/s390/configure
00db10
@@ -42,3 +42,36 @@ else
00db10
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use binutils with vector-support in order to use optimized implementations." >&5
00db10
 $as_echo "$as_me: WARNING: Use binutils with vector-support in order to use optimized implementations." >&2;}
00db10
 fi
00db10
+
00db10
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for S390 vector support in gcc" >&5
00db10
+$as_echo_n "checking for S390 vector support in gcc... " >&6; }
00db10
+if ${libc_cv_gcc_s390_vx+:} false; then :
00db10
+  $as_echo_n "(cached) " >&6
00db10
+else
00db10
+  cat > conftest.c <<\EOF
00db10
+void testvecclobber ()
00db10
+{
00db10
+  __asm__ ("" : : : "v16");
00db10
+}
00db10
+EOF
00db10
+if { ac_try='${CC-cc} --shared conftest.c -o conftest.o &> /dev/null'
00db10
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
00db10
+  (eval $ac_try) 2>&5
00db10
+  ac_status=$?
00db10
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
00db10
+  test $ac_status = 0; }; } ;
00db10
+then
00db10
+  libc_cv_gcc_s390_vx=yes
00db10
+else
00db10
+  libc_cv_gcc_s390_vx=no
00db10
+fi
00db10
+rm -f conftest*
00db10
+fi
00db10
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_s390_vx" >&5
00db10
+$as_echo "$libc_cv_gcc_s390_vx" >&6; }
00db10
+
00db10
+if test "$libc_cv_gcc_s390_vx" = yes ;
00db10
+then
00db10
+  $as_echo "#define HAVE_S390_VX_GCC_SUPPORT 1" >>confdefs.h
00db10
+
00db10
+fi
00db10
diff --git a/sysdeps/s390/configure.in b/sysdeps/s390/configure.in
00db10
index 733e356..a3b1f25 100644
00db10
--- a/sysdeps/s390/configure.in
00db10
+++ b/sysdeps/s390/configure.in
00db10
@@ -31,3 +31,25 @@ then
00db10
 else
00db10
   AC_MSG_WARN([Use binutils with vector-support in order to use optimized implementations.])
00db10
 fi
00db10
+
00db10
+AC_CACHE_CHECK(for S390 vector support in gcc, libc_cv_gcc_s390_vx, [dnl
00db10
+cat > conftest.c <<\EOF
00db10
+void testvecclobber ()
00db10
+{
00db10
+  __asm__ ("" : : : "v16");
00db10
+}
00db10
+EOF
00db10
+dnl
00db10
+dnl test, if gcc supports S390 vector registers as clobber in inline assembly
00db10
+if AC_TRY_COMMAND([${CC-cc} --shared conftest.c -o conftest.o &> /dev/null]) ;
00db10
+then
00db10
+  libc_cv_gcc_s390_vx=yes
00db10
+else
00db10
+  libc_cv_gcc_s390_vx=no
00db10
+fi
00db10
+rm -f conftest* ])
00db10
+
00db10
+if test "$libc_cv_gcc_s390_vx" = yes ;
00db10
+then
00db10
+  AC_DEFINE(HAVE_S390_VX_GCC_SUPPORT)
00db10
+fi
00db10
-- 
00db10
1.8.3.1
00db10