From patchwork Fri Nov 17 17:30:27 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: will schmidt X-Patchwork-Id: 839077 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-467178-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="Vk2CGrS/"; dkim-atps=neutral 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 3ydlWk4h8Vz9s0g for ; Sat, 18 Nov 2017 04:30:57 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :subject:from:reply-to:to:cc:content-type:date:mime-version :content-transfer-encoding:message-id; q=dns; s=default; b=nfSIO BmO1UYW98UuaIcdb/PWjytvzktdTslPiAb+5ubHqnopmq0hUu+HnxnRjd2MsGicm pkdMef79NH+wtmOP0APFM1MdKhC+7Z1/5YRNG77/y0cfYybHbNOY+HZy17jEsTF6 YMWGpaP18VE9ayFLUwUXcSxmNygbaQDWFlouA8= 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 :subject:from:reply-to:to:cc:content-type:date:mime-version :content-transfer-encoding:message-id; s=default; bh=SoTvmccZDpp DHXtkMh90fEqKhKw=; b=Vk2CGrS/BHm7ZUpdA9vGfb8VZh4xlonsnodpGQrgFRW E8FGfx19ZZkKg7309/SQWIkTD6KzgjDhvF9LdEJY1am9G8FQXU5da9eEwtK82y2U pkmh3ELSx8igOUekSvSIBR0oqSpWyHXApvHE9FxbwzwycvcTTPsMaFds6k1ocD08 = Received: (qmail 59051 invoked by alias); 17 Nov 2017 17:30:42 -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 58961 invoked by uid 89); 17 Nov 2017 17:30:42 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.7 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KB_WAM_FROM_NAME_SINGLEWORD, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.156.1) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 17 Nov 2017 17:30:38 +0000 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id vAHHTFwg091023 for ; Fri, 17 Nov 2017 12:30:34 -0500 Received: from e11.ny.us.ibm.com (e11.ny.us.ibm.com [129.33.205.201]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ea3ph1ggk-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Fri, 17 Nov 2017 12:30:33 -0500 Received: from localhost by e11.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 17 Nov 2017 12:30:30 -0500 Received: from b01cxnp23034.gho.pok.ibm.com (9.57.198.29) by e11.ny.us.ibm.com (146.89.104.198) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 17 Nov 2017 12:30:29 -0500 Received: from b01ledav005.gho.pok.ibm.com (b01ledav005.gho.pok.ibm.com [9.57.199.110]) by b01cxnp23034.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id vAHHUSrm38469706; Fri, 17 Nov 2017 17:30:28 GMT Received: from b01ledav005.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 49DF3AE051; Fri, 17 Nov 2017 12:31:20 -0500 (EST) Received: from [9.10.86.107] (unknown [9.10.86.107]) by b01ledav005.gho.pok.ibm.com (Postfix) with ESMTP id 0B9FDAE034; Fri, 17 Nov 2017 12:31:20 -0500 (EST) Subject: [PATCH, rs6000] Testcase updates for power9 codegen From: Will Schmidt Reply-To: will_schmidt@vnet.ibm.com To: GCC Patches Cc: Segher Boessenkool , Bill Schmidt , David Edelsohn Date: Fri, 17 Nov 2017 11:30:27 -0600 Mime-Version: 1.0 X-TM-AS-GCONF: 00 x-cbid: 17111717-2213-0000-0000-0000023DBAEF X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008083; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000240; SDB=6.00947266; UDB=6.00478234; IPR=6.00727557; BA=6.00005697; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00018066; XFM=3.00000015; UTC=2017-11-17 17:30:30 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 17111717-2214-0000-0000-000058304063 Message-Id: <1510939827.26707.305.camel@brimstone.rchland.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-11-17_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1709140000 definitions=main-1711170239 X-IsSubscribed: yes Hi Assorted testcase updates to reflect codegen differences on Power9 versus Power8 and earlier systems. Tested on P9, this is expected to clean up the majority of the currently failing tests on that system. OK for trunk? Thanks -Will 2017-11-17 Will Schmidt [testsuite] * fold-vec-neg-int.c: Specify -mcpu=power8 * fold-vec-neg-int.p9.c: New. * fold-vec-neg-longlong.c: Specify -mcpu=power8 * fold-vec-neg-longlong.p9.c: New. * fold-vec-splat-8.c: Add p9 instruction to expect list. * fold-vec-splats-int.c: Add p9 instruction to expect list. * fold-vec-splats-longlong.c: Add p9 instruction to expect list. * fold-vec-abs-char-fwrapv.c: Add xxspltib insn to expected output. * fold-vec-abs-char.c: Add xxspltib insn to expected output list. * fold-vec-abs-int-fwrapv.c: Specify -mcpu=power8. * fold-vec-abs-int.c: Specify -mcpu=power8. * fold-vec-abs-longlong-fwrapv.c: Specify -mcpu=power8. * fold-vec-abs-longlong.c: Specify -mcpu=power8 * fold-vec-abs-short-fwrapv.c: Specify -mcpu=power8 * fold-vec-abs-short.c: Specify -mcpu=power8 * fold-vec-cmp-char.c: Specify -mcpu=power8 * fold-vec-cmp-int.c: Specify -mcpu=power8 * fold-vec-cmp-longlong.c: Specify -mcpu=power8 * fold-vec-cmp-short.c: Specify -mcpu=power8 * fold-vec-ld-char.c: Add lxv insn to expected output. * fold-vec-ld-double.c: Add lxv insn to expected output. * fold-vec-ld-float.c: Add lxv insn to expected output. * fold-vec-ld-int.c: Add lxv insn to expected output. * fold-vec-ld-longlong.c: Add lxv insn to expected output. * fold-vec-ld-short.c: Add lxv insn to expected output. * fold-vec-mult-int128-p9.c: Add maddld insn to expected output. * fold-vec-neg-int.c: Specify -mcpu=power8 * fold-vec-neg-int.p9.c: New. * fold-vec-neg-longlong.c: Specify -mcpu=power8 * fold-vec-neg-longlong.p9.c: New. * fold-vec-splat-8.c : Add vspltisb to expected output. * fold-vec-splats-int.c : Add mtvsrws to expected output. * fold-vec-splats-longlong.c : Add mtvsrdd to expected output. diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c index 739f06e..29efd5e 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char-fwrapv.c @@ -11,8 +11,9 @@ vector signed char test2 (vector signed char x) { return vec_abs (x); } -/* { dg-final { scan-assembler-times "vspltisw|vxor" 1 } } */ +//# Power9 added xxspltib instruction. +/* { dg-final { scan-assembler-times "vspltisw|vxor|xxspltib" 1 } } */ /* { dg-final { scan-assembler-times "vsububm" 1 } } */ /* { dg-final { scan-assembler-times "vmaxsb" 1 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c index 239c919..3639617 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-char.c @@ -11,8 +11,9 @@ vector signed char test2 (vector signed char x) { return vec_abs (x); } -/* { dg-final { scan-assembler-times "vspltisw|vxor" 1 } } */ +//# Power9 added xxspltib instruction. +/* { dg-final { scan-assembler-times "vspltisw|vxor|xxspltib" 1 } } */ /* { dg-final { scan-assembler-times "vsububm" 1 } } */ /* { dg-final { scan-assembler-times "vmaxsb" 1 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.c index 34dead4..9dfc90b 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int-fwrapv.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_abs with int inputs produce the right results. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ -/* { dg-options "-maltivec -O2 -fwrapv" } */ +/* { dg-options "-maltivec -O2 -fwrapv -mcpu=power8" } */ #include vector signed int test1 (vector signed int x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.c index 77d9ca5..81b82d9 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-int.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_abs with int inputs produce the right results. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ -/* { dg-options "-maltivec -O2" } */ +/* { dg-options "-maltivec -O2 -mcpu=power8" } */ #include vector signed int test1 (vector signed int x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.c index 934618b..3b4107d 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong-fwrapv.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_abs with long long inputs produce the right results. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2 -fwrapv" } */ +/* { dg-options "-mpower8-vector -O2 -fwrapv -mcpu=power8" } */ #include vector signed long long test3 (vector signed long long x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.c index 5b59d19..fff0ea2 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-longlong.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_abs with long long inputs produce the right results. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2" } */ +/* { dg-options "-mpower8-vector -O2 -mcpu=power8" } */ #include vector signed long long test3 (vector signed long long x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short-fwrapv.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short-fwrapv.c index 2562179..eeaec77 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short-fwrapv.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short-fwrapv.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_abs with short inputs produce the right results. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ -/* { dg-options "-maltivec -O2 -fwrapv" } */ +/* { dg-options "-maltivec -O2 -fwrapv -mcpu=power8" } */ #include vector signed short test3 (vector signed short x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short.c index d312000..73cf1aa 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-abs-short.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_abs with short inputs produce the right results. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ -/* { dg-options "-maltivec -O2" } */ +/* { dg-options "-maltivec -O2 -mcpu=power8" } */ #include vector signed short test3 (vector signed short x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c index 3a1aa60..1c61df9 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_cmp{eq,ge,gt,le,lt,ne} with char inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2" } */ +/* { dg-options "-mpower8-vector -O2 -mcpu=power8" } */ #include vector bool char test3_eq (vector signed char x, vector signed char y) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c index d53994d..c7b7aea 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_cmp with int inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2" } */ +/* { dg-options "-mpower8-vector -O2 -mcpu=power8" } */ #include vector bool int test3_eq (vector signed int x, vector signed int y) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-longlong.c index 536ee75..de34b6b 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-longlong.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-longlong.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_cmp with long long inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2" } */ +/* { dg-options "-mpower8-vector -O2 -mcpu=power8" } */ #include vector bool long long test3_eq (vector signed long long x, vector signed long long y) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c index 6067669..5613382 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_cmp with short inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2" } */ +/* { dg-options "-maltivec -O2 -mcpu=power8" } */ #include vector bool short test3_eq (vector signed short x, vector signed short y) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c index f9ef3e0..07385dd 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-char.c @@ -65,7 +65,8 @@ vector bool char testld_cst_vbc (vector bool char vbc2) { return vec_ld (80, &vbc2); } -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxvw4x\M} 10 } } */ +/* # power9 added lxv. */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxvw4x\M|\mlxv\M} 10 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c index 9c6fbb2..e6266ec 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-double.c @@ -17,6 +17,7 @@ vector double testld_cst_vd (long long ll1, vector double vd) { return vec_ld (16, &vd); } -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M} 2 } } */ +/* # power9 added lxv. */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 2 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c index eca847a..2fc4457 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-float.c @@ -29,9 +29,10 @@ vector float testld_cst_f (float f2) { return vec_ld (16, &f2); } +/* # power9 added lxv. */ // lvx - generated by ll_vf and ll_f // lxvd2x - generated by cst_vf and cst_f -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M} 4 } } */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 4 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-int.c index 5dc6df6..872c02e 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-int.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-int.c @@ -65,7 +65,8 @@ vector bool int testld_cst_vbi (vector bool int vbi2) { return vec_ld (80, &vbi2); } -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxvw4x\M} 10 } } */ +/* # power9 added lxv. */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxvw4x\M|\mlxv\M} 10 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-longlong.c index db4a879..f9e5c6d 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-longlong.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-longlong.c @@ -41,7 +41,8 @@ vector bool long long testld_cst_vbl (vector bool long vbl2) { return vec_ld (48, &vbl2); } -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M} 6 } } */ +/* # power9 added lxv. */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxv\M} 6 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-short.c index 5e42844..1e93204 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-short.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-ld-short.c @@ -65,7 +65,8 @@ vector bool short testld_cst_vbs (vector bool short vbs2) { return vec_ld (80, &vbs2); } -/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxvw4x\M} 10 } } */ +/* # power9 added lxv. */ +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M|\mlxvw4x\M|\mlxv\M} 10 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c index 6571884..1c1acec 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-mult-int128-p9.c @@ -1,7 +1,7 @@ /* Verify that overloaded built-ins for vec_mul with __int128 - inputs produce the right results. */ + inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p9vector_ok } */ /* { dg-require-effective-target int128 } */ /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ @@ -20,7 +20,8 @@ vector unsigned __int128 test2 (vector unsigned __int128 x, vector unsigned __int128 y) { return vec_mul (x, y); } -/* { dg-final { scan-assembler-times {\mmulld\M} 4 } } */ +/* p9 adds maddld instruction */ +/* { dg-final { scan-assembler-times {\mmulld\M|\mmaddld\M} 6 } } */ /* { dg-final { scan-assembler-times {\mmulhdu\M} 2 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.c index d6ca128..d2db982 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_neg with int inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_altivec_ok } */ -/* { dg-options "-maltivec -O2" } */ +/* { dg-options "-maltivec -O2 -mcpu=power8" } */ #include vector signed int test1 (vector signed int x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.p9.c new file mode 100644 index 0000000..3b895cf --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-int.p9.c @@ -0,0 +1,16 @@ +/* Verify that overloaded built-ins for vec_neg with int + inputs produce the right code. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_altivec_ok } */ +/* { dg-options "-maltivec -O2 -mcpu=power9" } */ + +#include + +vector signed int +test1 (vector signed int x) +{ + return vec_neg (x); +} + +/* { dg-final { scan-assembler-times "vnegw" 1 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.c index 48f7178..e1b87df 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.c @@ -1,11 +1,11 @@ /* Verify that overloaded built-ins for vec_neg with long long inputs produce the right code. */ /* { dg-do compile } */ /* { dg-require-effective-target powerpc_p8vector_ok } */ -/* { dg-options "-mpower8-vector -O2" } */ +/* { dg-options "-mpower8-vector -O2 -mcpu=power8" } */ #include vector signed long long test3 (vector signed long long x) diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.p9.c new file mode 100644 index 0000000..b92f5ad --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-neg-longlong.p9.c @@ -0,0 +1,16 @@ +/* Verify that overloaded built-ins for vec_neg with long long + inputs produce the right code. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-mpower8-vector -O2 -mcpu=power9" } */ + +#include + +vector signed long long +test3 (vector signed long long x) +{ + return vec_neg (x); +} + +/* { dg-final { scan-assembler-times "vnegd" 1 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-8.c index 679fcb3..127b3c8 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-8.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splat-8.c @@ -41,6 +41,7 @@ vector unsigned char testuc_3 () { return vec_splat_u8 (15); } -/* { dg-final { scan-assembler-times "vspltisb" 6 } } */ +// power9 added xxspltib VSX Vector Splat Immediate Byte. +/* { dg-final { scan-assembler-times "xxspltib|vspltisb" 6 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c index 6671523..8cb689b 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-int.c @@ -17,6 +17,7 @@ vector unsigned int test3u (unsigned int x) { return vec_splats (x); } -/* { dg-final { scan-assembler-times {\mvspltw\M|\mxxspltw\M} 2 } } */ +// Power9 adds 'mtvsrws', Move to VSR Word & Splat +/* { dg-final { scan-assembler-times {\mvspltw\M|\mxxspltw\M|\mmtvsrws\M} 2 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c index c5884ba..b8467d3 100644 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-splats-longlong.c @@ -17,6 +17,7 @@ vector unsigned long long test3u (unsigned long long x) { return vec_splats (x); } -/* { dg-final { scan-assembler-times "xxpermdi" 2 } } */ +// power9 adds Move To VSR Double Dword +/* { dg-final { scan-assembler-times "xxpermdi|mtvsrdd" 2 } } */