From patchwork Fri Mar 24 14:10:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Krebbel X-Patchwork-Id: 743204 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3vqQQ03YzSz9s8Q for ; Sat, 25 Mar 2017 01:13:44 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="ESWhuz43"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:in-reply-to:references:message-id; q=dns; s= default; b=euPsY72tf3t8HxVXSirkQCmLYmnpXgK4r34DRE5cW84B+Qx/NUEDK Ifgpgjx1Oqn78f1uuMkVuG2YLU0KYpRmKNEIBASj7ajsJndUsgYJ/jth9EDe6Ea+ 6hREzfcjg6vmc+g9VObadFcMY8BswXE+AuM0onsFlMS5oGVLYtKHgk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:subject:date:in-reply-to:references:message-id; s=default; bh=aDRUGGuzhTXvVyTBwG8BnIiM5TY=; b=ESWhuz430jMtSLmPla5/ZZNmWw+K 7x46U606Iu1D7BVRTrw59m47uZBX3jg8rNlE8inzJ+QvqdAcDAO83iVufu1p7ec0 fWr9OE/b7FVOOoqgRTjECHQNN58yCLsc+2EN02zbpA5YPNUmtSgVkWUAETuJxjAh cAnhlQBwjxUAu5g= Received: (qmail 27723 invoked by alias); 24 Mar 2017 14:11:12 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 27700 invoked by uid 89); 24 Mar 2017 14:11:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=vrs X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0b-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.158.5) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 24 Mar 2017 14:11:07 +0000 Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.20/8.16.0.20) with SMTP id v2OE8dlN038532 for ; Fri, 24 Mar 2017 10:11:06 -0400 Received: from e06smtp11.uk.ibm.com (e06smtp11.uk.ibm.com [195.75.94.107]) by mx0a-001b2d01.pphosted.com with ESMTP id 29cnssrnja-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 24 Mar 2017 10:11:06 -0400 Received: from localhost by e06smtp11.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 24 Mar 2017 14:11:04 -0000 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp11.uk.ibm.com (192.168.101.141) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 24 Mar 2017 14:11:01 -0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id v2OEB0YK40304828 for ; Fri, 24 Mar 2017 14:11:00 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 24DDD4C089 for ; Fri, 24 Mar 2017 14:10:39 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0113B4C06A for ; Fri, 24 Mar 2017 14:10:39 +0000 (GMT) Received: from maggie.boeblingen.de.ibm.com (unknown [9.152.212.134]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTPS for ; Fri, 24 Mar 2017 14:10:38 +0000 (GMT) From: Andreas Krebbel To: gcc-patches@gcc.gnu.org Subject: [PATCH 06/16] S/390: Move and rename vector check. Date: Fri, 24 Mar 2017 15:10:43 +0100 In-Reply-To: <20170324141053.16840-1-krebbel@linux.vnet.ibm.com> References: <20170324141053.16840-1-krebbel@linux.vnet.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 17032414-0040-0000-0000-0000036EE96B X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17032414-0041-0000-0000-00001F688F8E Message-Id: <20170324141053.16840-7-krebbel@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-03-24_12:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=1 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1702020001 definitions=main-1703240123 X-IsSubscribed: yes 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 * 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. --- gcc/testsuite/ChangeLog | 19 +++++++++++++++++++ gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c | 2 +- gcc/testsuite/gcc.target/s390/s390.exp | 16 +--------------- .../s390/target-attribute/tpragma-struct-vx-1.c | 2 +- .../s390/target-attribute/tpragma-struct-vx-2.c | 2 +- gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c | 2 +- .../gcc.target/s390/vector/vec-abi-vararg-1.c | 2 +- gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c | 2 +- .../gcc.target/s390/vector/vec-genbytemask-1.c | 2 +- gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c | 2 +- gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c | 2 +- gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c | 2 +- gcc/testsuite/lib/target-supports.exp | 18 ++++++++++++++++++ 13 files changed, 48 insertions(+), 25 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 727bb45..0f0877c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,24 @@ 2017-03-24 Andreas Krebbel + * 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 + * gcc.target/s390/vector/vec-init-2.c: New test. 2017-03-24 Andreas Krebbel diff --git a/gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c b/gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c index 7879c36..aaca1f4 100644 --- a/gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c +++ b/gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c @@ -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; diff --git a/gcc/testsuite/gcc.target/s390/s390.exp b/gcc/testsuite/gcc.target/s390/s390.exp index cab68e8..d7a61f4 100644 --- a/gcc/testsuite/gcc.target/s390/s390.exp +++ b/gcc/testsuite/gcc.target/s390/s390.exp @@ -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 diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c index d471033..a0f4d1c 100644 --- a/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-1.c @@ -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))) diff --git a/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c index a238dce..652b122 100644 --- a/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c +++ b/gcc/testsuite/gcc.target/s390/target-attribute/tpragma-struct-vx-2.c @@ -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))) diff --git a/gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c b/gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c index 91c1f7c..aed20e5 100644 --- a/gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/stpcpy-1.c @@ -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 diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c index 59740c5..9d4d5bd 100644 --- a/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/vec-abi-vararg-1.c @@ -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. */ diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c index 413b6a0..c55cc68 100644 --- a/gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/vec-clobber-1.c @@ -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 diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c index 26c189a..30ef05e 100644 --- a/gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c @@ -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))); diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c index 6093422..f303087 100644 --- a/gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/vec-genmask-1.c @@ -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))); diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c index 581c371..6c9a2e1 100644 --- a/gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c @@ -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) diff --git a/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c b/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c index 27bf39e..bfb9974 100644 --- a/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c +++ b/gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c @@ -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))); diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 152b7d9..290c527 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -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