From patchwork Wed Jan 24 16:46:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: will schmidt X-Patchwork-Id: 865398 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-471970-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="nwOkb7iF"; 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 3zRWKF6Y7Mz9s9Y for ; Thu, 25 Jan 2018 03:46:41 +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=BgytD LpxJEqFKr1hyUj3qH0fnreTNqX7znvkz7NYjIOHTdzuoLgj3UG6wROaOHAvu2DOP VuNgoWM9JmWHbQ56xzI3zpX158JYpfHWF06tJaSy97nvadS6FOpdOAfb6vnVPoOu LQsp3+x4R0UhL48UKwWP/lSVptIwuT12T0DKiA= 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=kfNIXE5gZvr 71wzINRVAAFk8HXU=; b=nwOkb7iFuYmd9F0aZbnVCnSCl9BUcefD970cIi77S9X 4BoTDNpToH4BSBBGEbTJwZHo2YwxwmlV5Jq7yppuHGslFYG7S12drfwe/yQVSYak EpfWG9nAGts3yElv+0BpqOQDogwI9icH288FPMyRpdhhY7hgIqDCzuC1wzpFLBNk = Received: (qmail 74597 invoked by alias); 24 Jan 2018 16:46:23 -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 74494 invoked by uid 89); 24 Jan 2018 16:46:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy= 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; Wed, 24 Jan 2018 16:46:18 +0000 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w0OGigpT050374 for ; Wed, 24 Jan 2018 11:46:16 -0500 Received: from e31.co.us.ibm.com (e31.co.us.ibm.com [32.97.110.149]) by mx0a-001b2d01.pphosted.com with ESMTP id 2fpw8eaaer-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 24 Jan 2018 11:46:16 -0500 Received: from localhost by e31.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 24 Jan 2018 09:46:15 -0700 Received: from b03cxnp08025.gho.boulder.ibm.com (9.17.130.17) by e31.co.us.ibm.com (192.168.1.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Wed, 24 Jan 2018 09:46:13 -0700 Received: from b03ledav006.gho.boulder.ibm.com (b03ledav006.gho.boulder.ibm.com [9.17.130.237]) by b03cxnp08025.gho.boulder.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w0OGkDBC12059086; Wed, 24 Jan 2018 09:46:13 -0700 Received: from b03ledav006.gho.boulder.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F178BC6037; Wed, 24 Jan 2018 09:46:12 -0700 (MST) Received: from [9.10.86.107] (unknown [9.10.86.107]) by b03ledav006.gho.boulder.ibm.com (Postfix) with ESMTP id 99C28C603C; Wed, 24 Jan 2018 09:46:12 -0700 (MST) Subject: [PATCH, rs6000] Updates for vec_cmp_*() gimple-folding vector testcases From: Will Schmidt Reply-To: will_schmidt@vnet.ibm.com To: GCC Patches Cc: Segher Boessenkool , David Edelsohn , Bill Schmidt Date: Wed, 24 Jan 2018 10:46:11 -0600 Mime-Version: 1.0 X-TM-AS-GCONF: 00 x-cbid: 18012416-8235-0000-0000-00000CEB2308 X-IBM-SpamModules-Scores: X-IBM-SpamModules-Versions: BY=3.00008421; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000247; SDB=6.00979741; UDB=6.00496606; IPR=6.00759046; BA=6.00005794; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00019184; XFM=3.00000015; UTC=2018-01-24 16:46:14 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18012416-8236-0000-0000-00003F6370A3 Message-Id: <1516812371.11602.240.camel@brimstone.rchland.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2018-01-24_06:, , 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-1801240222 X-IsSubscribed: yes Hi, Assorted updates for the vector intrinsics / gimple folding vec_cmp() testcases to handle codegen variations as seen between P8,P9 targets. This breaks apart the testcases into a #included header that contains the testcase contents, and fold-vec-cmp-*.c tests that contain the target specific stanzas. sniff-tested across power systems. This cleans up a handful of errors seen on P9. OK for trunk? Thanks, -Will [testsuite] 2018-01-24 Will Schmidt * gcc.target/powerpc/fold-vec-cmp-int.c: Delete. * gcc.target/powerpc/fold-vec-cmp-int.h: New. * gcc.target/powerpc/fold-vec-cmp-int.p7.c: New. * gcc.target/powerpc/fold-vec-cmp-int.p8.c: New. * gcc.target/powerpc/fold-vec-cmp-int.p9.c: New. * gcc.target/powerpc/fold-vec-cmp-short.c: Delete. * gcc.target/powerpc/fold-vec-cmp-short.h: New. * gcc.target/powerpc/fold-vec-cmp-short.p8.c: New. * gcc.target/powerpc/fold-vec-cmp-short.p9.c: New. * gcc.target/powerpc/fold-vec-cmp-char.c: Delete. * gcc.target/powerpc/fold-vec-cmp-char.h: New. * gcc.target/powerpc/fold-vec-cmp-char.p8.c: New. * gcc.target/powerpc/fold-vec-cmp-char.p9.c: New. diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c deleted file mode 100644 index 3a1aa60..0000000 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.c +++ /dev/null @@ -1,86 +0,0 @@ -/* 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" } */ - -#include - -vector bool char -test3_eq (vector signed char x, vector signed char y) -{ - return vec_cmpeq (x, y); -} - -vector bool char -test6_eq (vector unsigned char x, vector unsigned char y) -{ - return vec_cmpeq (x, y); -} - -vector bool char -test3_ge (vector signed char x, vector signed char y) -{ - return vec_cmpge (x, y); -} - -vector bool char -test6_ge (vector unsigned char x, vector unsigned char y) -{ - return vec_cmpge (x, y); -} - -vector bool char -test3_gt (vector signed char x, vector signed char y) -{ - return vec_cmpgt (x, y); -} - -vector bool char -test6_gt (vector unsigned char x, vector unsigned char y) -{ - return vec_cmpgt (x, y); -} - -vector bool char -test3_le (vector signed char x, vector signed char y) -{ - return vec_cmple (x, y); -} - -vector bool char -test6_le (vector unsigned char x, vector unsigned char y) -{ - return vec_cmple (x, y); -} - -vector bool char -test3_lt (vector signed char x, vector signed char y) -{ - return vec_cmplt (x, y); -} - -vector bool char -test6_lt (vector unsigned char x, vector unsigned char y) -{ - return vec_cmplt (x, y); -} - -vector bool char -test3_ne (vector signed char x, vector signed char y) -{ - return vec_cmpne (x, y); -} - -vector bool char -test6_ne (vector unsigned char x, vector unsigned char y) -{ - return vec_cmpne (x, y); -} - -/* { dg-final { scan-assembler-times "vcmpequb" 4 } } */ -/* { dg-final { scan-assembler-times "vcmpgtsb" 4 } } */ -/* { dg-final { scan-assembler-times "vcmpgtub" 4 } } */ -/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ - diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.h b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.h new file mode 100644 index 0000000..5316121 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.h @@ -0,0 +1,77 @@ +/* Header file for fold-vec-cmp-char*.c tests. Used to verify codegen results + for vec_cmp{eq,ge,gt,le,lt,ne} builtins. */ + +#include + +vector bool char +test3_eq (vector signed char x, vector signed char y) +{ + return vec_cmpeq (x, y); +} + +vector bool char +test6_eq (vector unsigned char x, vector unsigned char y) +{ + return vec_cmpeq (x, y); +} + +vector bool char +test3_ge (vector signed char x, vector signed char y) +{ + return vec_cmpge (x, y); +} + +vector bool char +test6_ge (vector unsigned char x, vector unsigned char y) +{ + return vec_cmpge (x, y); +} + +vector bool char +test3_gt (vector signed char x, vector signed char y) +{ + return vec_cmpgt (x, y); +} + +vector bool char +test6_gt (vector unsigned char x, vector unsigned char y) +{ + return vec_cmpgt (x, y); +} + +vector bool char +test3_le (vector signed char x, vector signed char y) +{ + return vec_cmple (x, y); +} + +vector bool char +test6_le (vector unsigned char x, vector unsigned char y) +{ + return vec_cmple (x, y); +} + +vector bool char +test3_lt (vector signed char x, vector signed char y) +{ + return vec_cmplt (x, y); +} + +vector bool char +test6_lt (vector unsigned char x, vector unsigned char y) +{ + return vec_cmplt (x, y); +} + +vector bool char +test3_ne (vector signed char x, vector signed char y) +{ + return vec_cmpne (x, y); +} + +vector bool char +test6_ne (vector unsigned char x, vector unsigned char y) +{ + return vec_cmpne (x, y); +} + diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p8.c new file mode 100644 index 0000000..c14a98e --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p8.c @@ -0,0 +1,15 @@ +/* Verify that overloaded built-ins for vec_cmp{eq,ge,gt,le,lt,ne} with + char inputs produce the right code when -mcpu=power8 is specified. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-mpower8-vector -mcpu=power8 -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + +#include "fold-vec-cmp-char.h" + +/* { dg-final { scan-assembler-times "vcmpequb" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsb" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtub" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ + diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p9.c new file mode 100644 index 0000000..e3ff89c --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-char.p9.c @@ -0,0 +1,16 @@ +/* Verify that overloaded built-ins for vec_cmp{eq,ge,gt,le,lt,ne} with + char inputs produce the right code when -mcpu=power9 is specified. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-options "-mpower8-vector -mcpu=power9 -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + +#include "fold-vec-cmp-char.h" + +/* { dg-final { scan-assembler-times "vcmpneb" 2 } } */ +/* { dg-final { scan-assembler-times "vcmpequb" 2 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsb" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtub" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 4 } } */ + diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c deleted file mode 100644 index d53994d..0000000 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.c +++ /dev/null @@ -1,86 +0,0 @@ -/* 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" } */ - -#include - -vector bool int -test3_eq (vector signed int x, vector signed int y) -{ - return vec_cmpeq (x, y); -} - -vector bool int -test6_eq (vector unsigned int x, vector unsigned int y) -{ - return vec_cmpeq (x, y); -} - -vector bool int -test3_ge (vector signed int x, vector signed int y) -{ - return vec_cmpge (x, y); -} - -vector bool int -test6_ge (vector unsigned int x, vector unsigned int y) -{ - return vec_cmpge (x, y); -} - -vector bool int -test3_gt (vector signed int x, vector signed int y) -{ - return vec_cmpgt (x, y); -} - -vector bool int -test6_gt (vector unsigned int x, vector unsigned int y) -{ - return vec_cmpgt (x, y); -} - -vector bool int -test3_le (vector signed int x, vector signed int y) -{ - return vec_cmple (x, y); -} - -vector bool int -test6_le (vector unsigned int x, vector unsigned int y) -{ - return vec_cmple (x, y); -} - -vector bool int -test3_lt (vector signed int x, vector signed int y) -{ - return vec_cmplt (x, y); -} - -vector bool int -test6_lt (vector unsigned int x, vector unsigned int y) -{ - return vec_cmplt (x, y); -} - -vector bool int -test3_ne (vector signed int x, vector signed int y) -{ - return vec_cmpne (x, y); -} - -vector bool int -test6_ne (vector unsigned int x, vector unsigned int y) -{ - return vec_cmpne (x, y); -} - -/* { dg-final { scan-assembler-times "vcmpequw" 4 } } */ -/* { dg-final { scan-assembler-times "vcmpgtsw" 4 } } */ -/* { dg-final { scan-assembler-times "vcmpgtuw" 4 } } */ -/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ - diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.h b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.h new file mode 100644 index 0000000..0da58e0 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.h @@ -0,0 +1,81 @@ +/* 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" } */ + +#include + +vector bool int +test3_eq (vector signed int x, vector signed int y) +{ + return vec_cmpeq (x, y); +} + +vector bool int +test6_eq (vector unsigned int x, vector unsigned int y) +{ + return vec_cmpeq (x, y); +} + +vector bool int +test3_ge (vector signed int x, vector signed int y) +{ + return vec_cmpge (x, y); +} + +vector bool int +test6_ge (vector unsigned int x, vector unsigned int y) +{ + return vec_cmpge (x, y); +} + +vector bool int +test3_gt (vector signed int x, vector signed int y) +{ + return vec_cmpgt (x, y); +} + +vector bool int +test6_gt (vector unsigned int x, vector unsigned int y) +{ + return vec_cmpgt (x, y); +} + +vector bool int +test3_le (vector signed int x, vector signed int y) +{ + return vec_cmple (x, y); +} + +vector bool int +test6_le (vector unsigned int x, vector unsigned int y) +{ + return vec_cmple (x, y); +} + +vector bool int +test3_lt (vector signed int x, vector signed int y) +{ + return vec_cmplt (x, y); +} + +vector bool int +test6_lt (vector unsigned int x, vector unsigned int y) +{ + return vec_cmplt (x, y); +} + +vector bool int +test3_ne (vector signed int x, vector signed int y) +{ + return vec_cmpne (x, y); +} + +vector bool int +test6_ne (vector unsigned int x, vector unsigned int y) +{ + return vec_cmpne (x, y); +} + diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p7.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p7.c new file mode 100644 index 0000000..87038eb --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p7.c @@ -0,0 +1,14 @@ +/* Verify that overloaded built-ins for vec_cmp with int + inputs produce the right code. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_vsx_ok } */ +/* { dg-options "-mcpu=power7 -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power7" } } */ + +#include "fold-vec-cmp-int.h" + +/* { dg-final { scan-assembler-times "vcmpequw" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsw" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtuw" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p8.c new file mode 100644 index 0000000..023ea73 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p8.c @@ -0,0 +1,14 @@ +/* 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 -mcpu=power8 -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + +#include "fold-vec-cmp-int.h" + +/* { dg-final { scan-assembler-times "vcmpequw" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsw" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtuw" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p9.c new file mode 100644 index 0000000..ba6d788 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p9.c @@ -0,0 +1,15 @@ +/* Verify that overloaded built-ins for vec_cmp with int + inputs produce the right code. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p9vector_ok } */ +/* { dg-options "-mpower9-vector -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + +#include "fold-vec-cmp-int.h" + +/* { dg-final { scan-assembler-times "vcmpequw" 2 } } */ +/* { dg-final { scan-assembler-times "vcmpnew" 2 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsw" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtuw" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 4 } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c deleted file mode 100644 index 6067669..0000000 --- a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.c +++ /dev/null @@ -1,87 +0,0 @@ -/* 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" } */ - -#include - -vector bool short -test3_eq (vector signed short x, vector signed short y) -{ - return vec_cmpeq (x, y); -} - -vector bool short -test6_eq (vector unsigned short x, vector unsigned short y) -{ - return vec_cmpeq (x, y); -} - -vector bool short -test3_ge (vector signed short x, vector signed short y) -{ - return vec_cmpge (x, y); -} - -vector bool short -test6_ge (vector unsigned short x, vector unsigned short y) -{ - return vec_cmpge (x, y); -} - -vector bool short -test3_gt (vector signed short x, vector signed short y) -{ - return vec_cmpgt (x, y); -} - -vector bool short -test6_gt (vector unsigned short x, vector unsigned short y) -{ - return vec_cmpgt (x, y); -} - - -vector bool short -test3_le (vector signed short x, vector signed short y) -{ - return vec_cmple (x, y); -} - -vector bool short -test6_le (vector unsigned short x, vector unsigned short y) -{ - return vec_cmple (x, y); -} - -vector bool short -test3_lt (vector signed short x, vector signed short y) -{ - return vec_cmplt (x, y); -} - -vector bool short -test6_lt (vector unsigned short x, vector unsigned short y) -{ - return vec_cmplt (x, y); -} - -vector bool short -test3_ne (vector signed short x, vector signed short y) -{ - return vec_cmpne (x, y); -} - -vector bool short -test6_ne (vector unsigned short x, vector unsigned short y) -{ - return vec_cmpne (x, y); -} - -/* { dg-final { scan-assembler-times "vcmpequh" 4 } } */ -/* { dg-final { scan-assembler-times "vcmpgtsh" 4 } } */ -/* { dg-final { scan-assembler-times "vcmpgtuh" 4 } } */ -/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ - diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.h b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.h new file mode 100644 index 0000000..5729db4 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.h @@ -0,0 +1,82 @@ +/* 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" } */ + +#include + +vector bool short +test3_eq (vector signed short x, vector signed short y) +{ + return vec_cmpeq (x, y); +} + +vector bool short +test6_eq (vector unsigned short x, vector unsigned short y) +{ + return vec_cmpeq (x, y); +} + +vector bool short +test3_ge (vector signed short x, vector signed short y) +{ + return vec_cmpge (x, y); +} + +vector bool short +test6_ge (vector unsigned short x, vector unsigned short y) +{ + return vec_cmpge (x, y); +} + +vector bool short +test3_gt (vector signed short x, vector signed short y) +{ + return vec_cmpgt (x, y); +} + +vector bool short +test6_gt (vector unsigned short x, vector unsigned short y) +{ + return vec_cmpgt (x, y); +} + + +vector bool short +test3_le (vector signed short x, vector signed short y) +{ + return vec_cmple (x, y); +} + +vector bool short +test6_le (vector unsigned short x, vector unsigned short y) +{ + return vec_cmple (x, y); +} + +vector bool short +test3_lt (vector signed short x, vector signed short y) +{ + return vec_cmplt (x, y); +} + +vector bool short +test6_lt (vector unsigned short x, vector unsigned short y) +{ + return vec_cmplt (x, y); +} + +vector bool short +test3_ne (vector signed short x, vector signed short y) +{ + return vec_cmpne (x, y); +} + +vector bool short +test6_ne (vector unsigned short x, vector unsigned short y) +{ + return vec_cmpne (x, y); +} + diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p8.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p8.c new file mode 100644 index 0000000..d7dd06d --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p8.c @@ -0,0 +1,16 @@ +/* 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 -mcpu=power8 -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ + +#include "fold-vec-cmp-short.h" + +/* { dg-final { scan-assembler-times "vcmpequh" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpneh" 0 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsh" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtuh" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 6 } } */ + diff --git a/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p9.c b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p9.c new file mode 100644 index 0000000..1fc6858 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p9.c @@ -0,0 +1,16 @@ +/* Verify that overloaded built-ins for vec_cmp with short + inputs produce the right code. */ + +/* { dg-do compile } */ +/* { dg-require-effective-target powerpc_p9vector_ok } */ +/* { dg-options "-mpower9-vector -mcpu=power9 -O2" } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */ + +#include "fold-vec-cmp-short.h" + +/* { dg-final { scan-assembler-times "vcmpequh" 2 } } */ +/* { dg-final { scan-assembler-times "vcmpneh" 2 } } */ +/* { dg-final { scan-assembler-times "vcmpgtsh" 4 } } */ +/* { dg-final { scan-assembler-times "vcmpgtuh" 4 } } */ +/* { dg-final { scan-assembler-times "xxlnor" 4 } } */ +