S/390: Move and rename vector check.
authorAndreas Krebbel <krebbel@linux.vnet.ibm.com>
Fri, 24 Mar 2017 13:57:58 +0000 (13:57 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Fri, 24 Mar 2017 13:57:58 +0000 (13:57 +0000)
Move the target support routine for the vector facility to the common
code file.  This is required to enable the generic vectorization tests
on S/390.  While doing this the too generic name for the check (vector)
is changed to s390_vx.  The renaming required to modify all the
testcases currently using that check.

gcc/testsuite/ChangeLog:

2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* gcc.target/s390/s390.exp (check_effective_target_vector):
Include target-supports.exp and move target_vector check routine
...
* lib/target-supports.exp (check_effective_target_s390_vx): ... to
here and rename it.
* gcc.target/s390/htm-builtins-z13-1.c: Rename effective target
check from vector to s390_vx.
* gcc.target/s390/target-attribute/tpragma-struct-vx-1.c: Likewise.
* gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: Likewise.
* gcc.target/s390/vector/stpcpy-1.c: Likewise.
* gcc.target/s390/vector/vec-abi-vararg-1.c: Likewise.
* gcc.target/s390/vector/vec-clobber-1.c: Likewise.
* gcc.target/s390/vector/vec-genbytemask-1.c: Likewise.
* gcc.target/s390/vector/vec-genmask-1.c: Likewise.
* gcc.target/s390/vector/vec-nopeel-1.c: Likewise.
* gcc.target/s390/vector/vec-vrepi-1.c: Likewise.

From-SVN: r246449

13 files changed:
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c
gcc/testsuite/gcc.target/s390/s390.exp
gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c
gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c
gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c
gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c
gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c
gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c
gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c
gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c
gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c
gcc/testsuite/lib/target-supports.exp

index 359673ff6e3ed0938436a1412b311d8e14f31e84..6cfa9f63313fd25c15d9afad27bdcd6d48c8087c 100644 (file)
@@ -1,3 +1,22 @@
+2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
+
+       * gcc.target/s390/s390.exp (check_effective_target_vector):
+       Include target-supports.exp and move target_vector check routine
+       ...
+       * lib/target-supports.exp (check_effective_target_s390_vx): ... to
+       here and rename it.
+       * gcc.target/s390/htm-builtins-z13-1.c: Rename effective target
+       check from vector to s390_vx.
+       * gcc.target/s390/target-attribute/tpragma-struct-vx-1.c: Likewise.
+       * gcc.target/s390/target-attribute/tpragma-struct-vx-2.c: Likewise.
+       * gcc.target/s390/vector/stpcpy-1.c: Likewise.
+       * gcc.target/s390/vector/vec-abi-vararg-1.c: Likewise.
+       * gcc.target/s390/vector/vec-clobber-1.c: Likewise.
+       * gcc.target/s390/vector/vec-genbytemask-1.c: Likewise.
+       * gcc.target/s390/vector/vec-genmask-1.c: Likewise.
+       * gcc.target/s390/vector/vec-nopeel-1.c: Likewise.
+       * gcc.target/s390/vector/vec-vrepi-1.c: Likewise.
+
 2017-03-24  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>
 
        * gcc.target/s390/vector/vec-init-2.c: New test.
index 7879c36aeab63fd3df71b80f0d508e82759de38d..aaca1f47518f5d050c979c9ed57240d409791160 100644 (file)
@@ -1,7 +1,7 @@
 /* Verify if VRs are saved and restored.  */
 
 /* { dg-do run } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-options "-O3 -march=z13 -mzarch" } */
 
 typedef int __attribute__((vector_size(16))) v4si;
index cab68e8b0024df758688ebc1d54d1c2730129f76..d7a61f4f510b982e45adeec1641fdaccf9366f3f 100644 (file)
@@ -26,6 +26,7 @@ if ![istarget s390*-*-*] then {
 
 # Load support procs.
 load_lib gcc-dg.exp
+load_lib target-supports.exp
 
 # Return 1 if the the assembler understands .machine and .machinemode.  The
 # target attribute needs that feature to work.
@@ -55,21 +56,6 @@ proc check_effective_target_htm { } {
     }] "-march=zEC12 -mzarch" ] } { return 0 } else { return 1 }
 }
 
-# Return 1 if vector (va - vector add) instructions are understood by
-# the assembler and can be executed.  This also covers checking for
-# the VX kernel feature.  A kernel without that feature does not
-# enable the vector facility and the following check will die with a
-# signal.
-proc check_effective_target_vector { } {
-    if { ![check_runtime s390_check_vector [subst {
-       int main (void)
-       {
-           asm ("va %%v24, %%v26, %%v28, 3" : : : "v24", "v26", "v28");
-           return 0;
-       }
-    }] "-march=z13 -mzarch" ] } { return 0 } else { return 1 }
-}
-
 global s390_cached_flags
 set s390_cached_flags ""
 global s390_cached_value
index d471033a5847221c8f2188e3b08b5d5ab186fd8b..a0f4d1c3f47fbc0858b3c94b36d4bf91fa233767 100644 (file)
@@ -2,7 +2,7 @@
 
 /* { dg-do run } */
 /* { dg-require-effective-target target_attribute } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-options "-march=z900 -mno-vx -mzarch" } */
 
 #define V16 __attribute__ ((vector_size(16)))
index a238dce1c2ff02d033341e357a5b845145224f04..652b122aefddf4139a264b6305e21cd805fbf706 100644 (file)
@@ -2,7 +2,7 @@
 
 /* { dg-do run } */
 /* { dg-require-effective-target target_attribute } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-options "-march=z13 -mvx -mzarch" } */
 
 #define V16 __attribute__ ((vector_size(16)))
index 91c1f7c0198a7e3f8ecd1b0badc139a614b63669..aed20e5b4019efc7b866e9dd4c862a60e74185eb 100644 (file)
@@ -4,7 +4,7 @@
    strings.  */
 
 /* { dg-do run } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-options "-O3 -mzarch -march=z13" } */
 
 #include <stdio.h>
index 59740c5ab27a3ecdab122be7f86f20607ce567db..9d4d5bda8eab6173448891b0c06cbe0b66fdafe9 100644 (file)
@@ -2,7 +2,7 @@
    ABI.  */
 
 /* { dg-do run { target { s390*-*-* } } } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
 
 /* Make sure arguments are fetched from the argument overflow area.  */
index 413b6a00f2176adf08f06e69e3dd7ab3d3b86395..c55cc68390e5b36e5338880ccdbe3e4ccee82514 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do run { target { s390*-*-* } } } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-options "-O3 -mzarch -march=z13" } */
 
 /* For FP zero checks we use the ltdbr instruction.  Since this is an
index 26c189af15d0df6aa25caa9e54c1ab93ba100442..30ef05eb3f77f34fcf6dd56ae4c5225c10dc3d64 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 /* { dg-require-effective-target int128 } */
 
 typedef unsigned char     uv16qi __attribute__((vector_size(16)));
index 6093422fd0d7ca5a496e70a12989d25fa461d188..f3030877ca5d370db0c083e3f2662eadab70bdb9 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 
 typedef unsigned char     uv16qi __attribute__((vector_size(16)));
 typedef unsigned short     uv8hi __attribute__((vector_size(16)));
index 581c3712772535121264c74d7e6378ecbdd8261b..6c9a2e18b56905930d8ba078d155676255d5ed73 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-O3 -mzarch -march=z13" } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 
 int
 foo (int * restrict a, int n)
index 27bf39e09638221904ecdc8fc5f17e4bd7f3dd5d..bfb9974342f90f7c0b9762abcc3dd065bcfad841 100644 (file)
@@ -1,6 +1,6 @@
 /* { dg-do run } */
 /* { dg-options "-O3 -mzarch -march=z13 --save-temps" } */
-/* { dg-require-effective-target vector } */
+/* { dg-require-effective-target s390_vx } */
 
 typedef unsigned char     uv16qi __attribute__((vector_size(16)));
 typedef unsigned short     uv8hi __attribute__((vector_size(16)));
index 152b7d981d87f88ea970e918215108f6329442aa..290c527be095062fb980eb0288ae6d5c77486ed5 100644 (file)
@@ -8209,6 +8209,24 @@ proc check_effective_target_profile_update_atomic {} {
     } "-fprofile-update=atomic -fprofile-generate"]
 }
 
+# Return 1 if vector (va - vector add) instructions are understood by
+# the assembler and can be executed.  This also covers checking for
+# the VX kernel feature.  A kernel without that feature does not
+# enable the vector facility and the following check will die with a
+# signal.
+proc check_effective_target_s390_vx { } {
+    if ![istarget s390*-*-*] then {
+       return 0;
+    }
+
+    return [check_runtime s390_check_vx {
+       int main (void)
+       {
+           asm ("va %%v24, %%v26, %%v28, 3" : : : "v24", "v26", "v28");
+           return 0;
+       }
+    } "-march=z13 -mzarch" ]
+}
 #For versions of ARM architectures that have hardware div insn,
 #disable the divmod transform