[gcc(refs/vendors/ibm/heads/gcc-9-branch)] IBM Z: Fix testsuite useable_hw check

Peter Bergner bergner@gcc.gnu.org
Tue Feb 4 22:08:00 GMT 2020


https://gcc.gnu.org/g:21deaf29442d58ce65a9e29c1cb21beaebdb4d61

commit 21deaf29442d58ce65a9e29c1cb21beaebdb4d61
Author: Andreas Krebbel <krebbel@linux.ibm.com>
Date:   Tue Nov 5 15:25:26 2019 +0000

    IBM Z: Fix testsuite useable_hw check
    
    This fixes various issues with the useable_hw check in s390.exp.  The
    check is supposed to verify whether a testcase can be run on the
    current hardware.
    
    - the test never returned true for -m31 because vzero is not available
      in ESA mode and -m31 defaults to -mesa
    - the missing v0 clobber on the vzero instruction made the check fail
      if the stack pointer got saved in f0
    - the lcbb instruction used for checking whether we are on a z13
      also requires vx.  Replace it with an instruction from the generic
      instruction set extensions.
    - no support for z14 and z15 so far
    
    gcc/testsuite/ChangeLog:
    
    2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>
    
    	Backport from mainline
    	2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>
    
    	* gcc.target/s390/s390.exp
    	(check_effective_target_s390_useable_hw): Add inline asm for z14
    	and z15. Replace instruction for z13 with lochiz. Add register
    	clobbers. Check also for __zarch__ when doing the __VX__ test.
    
    From-SVN: r277842

Diff:
---
 gcc/testsuite/ChangeLog                | 10 ++++++++++
 gcc/testsuite/gcc.target/s390/s390.exp | 22 +++++++++++++---------
 2 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 17f417e..dde8e96 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	Backport from mainline
+	2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>
+
+	* gcc.target/s390/s390.exp
+	(check_effective_target_s390_useable_hw): Add inline asm for z14
+	and z15. Replace instruction for z13 with lochiz. Add register
+	clobbers. Check also for __zarch__ when doing the __VX__ test.
+
 2019-11-04  Iain Sandoe  <iain@sandoe.co.uk>
 
 	Backport from mainline.
diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp
index 86f7e43..ee94a80 100644
--- a/gcc/testsuite/gcc.target/s390/s390.exp
+++ b/gcc/testsuite/gcc.target/s390/s390.exp
@@ -86,18 +86,22 @@ proc check_effective_target_s390_useable_hw { } {
 	int main (void)
 	{
 	    asm (".machinemode zarch" : : );
-	#if __ARCH__ >= 11
-	    asm ("lcbb %%r2,0(%%r15),0" : : );
+	#if __ARCH__ >= 13
+	    asm ("ncrk %%r2,%%r2,%%r2" : : : "r2");
+	#elif __ARCH__ >= 12
+	    asm ("agh %%r2,0(%%r15)" : : : "r2");
+	#elif __ARCH__ >= 11
+	    asm ("lochiz %%r2,42" : : : "r2");
 	#elif __ARCH__ >= 10
-	    asm ("risbgn %%r2,%%r2,0,0,0" : : );
+	    asm ("risbgn %%r2,%%r2,0,0,0" : : : "r2");
 	#elif __ARCH__ >= 9
-	    asm ("sgrk %%r2,%%r2,%%r2" : : );
+	    asm ("sgrk %%r2,%%r2,%%r2" : : : "r2");
 	#elif __ARCH__ >= 8
-	    asm ("rosbg %%r2,%%r2,0,0,0" : : );
+	    asm ("rosbg %%r2,%%r2,0,0,0" : : : "r2");
 	#elif __ARCH__ >= 7
-	    asm ("nilf %%r2,0" : : );
+	    asm ("nilf %%r2,0" : : : "r2");
 	#elif __ARCH__ >= 6
-	    asm ("lay %%r2,0(%%r15)" : : );
+	    asm ("lay %%r2,0(%%r15)" : : : "r2");
 	#elif __ARCH__ >= 5
 	    asm ("tam" : : );
 	#endif
@@ -107,8 +111,8 @@ proc check_effective_target_s390_useable_hw { } {
 	    asm ("etnd %0" : "=d" (nd));
 	  }
 	#endif
-	#ifdef __VX__
-	    asm ("vzero %%v0" : : );
+	#if defined (__VX__) && defined (__zarch__)
+	    asm ("vzero %%v0" : : : "v0");
 	#endif
 	  return 0;
 	}



More information about the Gcc-cvs mailing list