From patchwork Tue Feb 25 02:30:45 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bill Schmidt X-Patchwork-Id: 323817 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 363692C014B for ; Tue, 25 Feb 2014 13:30:44 +1100 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:subject:from:to:cc:date:content-type :content-transfer-encoding:mime-version; q=dns; s=default; b=xYg J1n929f7FnELPdLJZW5Qy/+scH9HPTFuoxUvr2Ri/F0coDYP3/eM0KkWOOmaU/YK swgrMWJM+QlQmPvrJAHgnEGt/pjMD+Vgz0fUISkz8cP/fN11a5w8YYKagMzpkM15 0mt06RCtyMrNF7yDECF0+7h0Hper4E1VWPTqDmO4= 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 :message-id:subject:from:to:cc:date:content-type :content-transfer-encoding:mime-version; s=default; bh=O6rIiyA3x MEhChMRIg8YFhi0R1o=; b=wjGKRHSpw8Hx7n5Qw9jRKlpGIl0gS6+rtU7j4GloK OP3urQUwJVAxztKavkjdMqn+oiKSPOJxvKJS+4gLy0YSBKxBpvubOkeEeYspjpHu SvfNuJD+oYg35usrGpE/iWBz8+GUGDpAlbXvdK6y+Xu0wNFdVpfjA10qgwAcomhm Rg= Received: (qmail 3677 invoked by alias); 25 Feb 2014 02:30:36 -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 3658 invoked by uid 89); 25 Feb 2014 02:30:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: e23smtp07.au.ibm.com Received: from e23smtp07.au.ibm.com (HELO e23smtp07.au.ibm.com) (202.81.31.140) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Tue, 25 Feb 2014 02:30:32 +0000 Received: from /spool/local by e23smtp07.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 25 Feb 2014 12:30:26 +1000 Received: from d23dlp03.au.ibm.com (202.81.31.214) by e23smtp07.au.ibm.com (202.81.31.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 25 Feb 2014 12:30:25 +1000 Received: from d23relay04.au.ibm.com (d23relay04.au.ibm.com [9.190.234.120]) by d23dlp03.au.ibm.com (Postfix) with ESMTP id A631E357803F for ; Tue, 25 Feb 2014 13:30:24 +1100 (EST) Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay04.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s1P2Ae7J55115784 for ; Tue, 25 Feb 2014 13:10:40 +1100 Received: from d23av04.au.ibm.com (localhost [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s1P2UNTO014046 for ; Tue, 25 Feb 2014 13:30:23 +1100 Received: from [9.77.131.26] (sig-9-77-131-26.mts.ibm.com [9.77.131.26]) by d23av04.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s1P2ULWY013921; Tue, 25 Feb 2014 13:30:22 +1100 Message-ID: <1393295445.20991.94.camel@gnopaine> Subject: [PATCH, rs6000] Don't use vec_all_eq for vector double in Altivec tests From: Bill Schmidt To: gcc-patches@gcc.gnu.org Cc: dje.gcc@gmail.com Date: Mon, 24 Feb 2014 20:30:45 -0600 Mime-Version: 1.0 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14022502-0260-0000-0000-00000469F6CF X-IsSubscribed: yes Hi, Some of the recently introduced Altivec tests pass for -mcpu=power8, but fail to compile for older processor models. This is because the vec_all_eq interface, when used with vector double arguments, maps to a built-in that is only available on Power8 and later hardware. This patch modifies the tests to avoid using vec_all_eq for vector double arguments. Bootstrapped and tested on powerpc64-unknown-linux-gnu with -mcpu=power7, and on powerpc64le-unknown-linux-gnu with -mcpu=power8, with no regressions. Is this ok for trunk? David, this should clear up the recent failures on AIX. Thanks, Bill gcc/testsuite: 2014-02-24 Bill Schmidt * gcc.dg/vmx/ld-vsx.c: Don't use vec_all_eq. * gcc.dg/vmx/ld-vsx-be-order.c: Likewise. * gcc.dg/vmx/ldl-vsx.c: Likewise. * gcc.dg/vmx/ldl-vsx-be-order.c: Likewise. * gcc.dg/vmx/merge-vsx.c: Likewise. * gcc.dg/vmx/merge-vsx-be-order.c: Likewise. Index: gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c (revision 208097) +++ gcc/testsuite/gcc.dg/vmx/ldl-vsx-be-order.c (working copy) @@ -29,12 +29,16 @@ static void test () vector unsigned long vul; vector double vd; + unsigned i; init (); vul = vec_ldl (0, (vector unsigned long *)svul); vd = vec_ldl (0, (vector double *)svd); - check (vec_all_eq (vul, evul), "vul"); - check (vec_all_eq (vd, evd ), "vd" ); + for (i = 0; i < 2; ++i) + { + check (vul[i] == evul[i], "vul"); + check (vd[i] == evd[i], "vd" ); + } } Index: gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c (revision 208097) +++ gcc/testsuite/gcc.dg/vmx/ld-vsx-be-order.c (working copy) @@ -29,12 +29,16 @@ static void test () vector unsigned long vul; vector double vd; + unsigned i; init (); vul = vec_ld (0, (vector unsigned long *)svul); vd = vec_ld (0, (vector double *)svd); - check (vec_all_eq (vul, evul), "vul"); - check (vec_all_eq (vd, evd ), "vd" ); + for (i = 0; i < 2; ++i) + { + check (vul[i] == evul[i], "vul"); + check (vd[i] == evd[i], "vd" ); + } } Index: gcc/testsuite/gcc.dg/vmx/ld-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ld-vsx.c (revision 208097) +++ gcc/testsuite/gcc.dg/vmx/ld-vsx.c (working copy) @@ -24,12 +24,16 @@ static void test () vector unsigned long vul; vector double vd; + unsigned i; init (); vul = vec_ld (0, (vector unsigned long *)svul); vd = vec_ld (0, (vector double *)svd); - check (vec_all_eq (vul, evul), "vul"); - check (vec_all_eq (vd, evd ), "vd" ); + for (i = 0; i < 2; ++i) + { + check (vul[i] == evul[i], "vul"); + check (vd[i] == evd[i], "vd" ); + } } Index: gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c (revision 208097) +++ gcc/testsuite/gcc.dg/vmx/merge-vsx-be-order.c (working copy) @@ -9,6 +9,11 @@ static int vec_long_eq (vector long x, vector long return (x[0] == y[0] && x[1] == y[1]); } +static int vec_double_eq (vector double x, vector double y) +{ + return (x[0] == y[0] && x[1] == y[1]); +} + static void test() { /* Input vectors. */ @@ -41,6 +46,6 @@ static void test() check (vec_long_eq (vlh, vlrh), "vlh"); check (vec_long_eq (vll, vlrl), "vll"); - check (vec_all_eq (vdh, vdrh), "vdh" ); - check (vec_all_eq (vdl, vdrl), "vdl" ); + check (vec_double_eq (vdh, vdrh), "vdh" ); + check (vec_double_eq (vdl, vdrl), "vdl" ); } Index: gcc/testsuite/gcc.dg/vmx/ldl-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/ldl-vsx.c (revision 208097) +++ gcc/testsuite/gcc.dg/vmx/ldl-vsx.c (working copy) @@ -24,12 +24,16 @@ static void test () vector unsigned long vul; vector double vd; + unsigned i; init (); vul = vec_ldl (0, (vector unsigned long *)svul); vd = vec_ldl (0, (vector double *)svd); - check (vec_all_eq (vul, evul), "vul"); - check (vec_all_eq (vd, evd ), "vd" ); + for (i = 0; i < 2; ++i) + { + check (vul[i] == evul[i], "vul"); + check (vd[i] == evd[i], "vd" ); + } } Index: gcc/testsuite/gcc.dg/vmx/merge-vsx.c =================================================================== --- gcc/testsuite/gcc.dg/vmx/merge-vsx.c (revision 208097) +++ gcc/testsuite/gcc.dg/vmx/merge-vsx.c (working copy) @@ -9,6 +9,11 @@ static int vec_long_eq (vector long x, vector long return (x[0] == y[0] && x[1] == y[1]); } +static int vec_double_eq (vector double x, vector double y) +{ + return (x[0] == y[0] && x[1] == y[1]); +} + static void test() { /* Input vectors. */ @@ -34,6 +39,6 @@ static void test() check (vec_long_eq (vlh, vlrh), "vlh"); check (vec_long_eq (vll, vlrl), "vll"); - check (vec_all_eq (vdh, vdrh), "vdh" ); - check (vec_all_eq (vdl, vdrl), "vdl" ); + check (vec_double_eq (vdh, vdrh), "vdh" ); + check (vec_double_eq (vdl, vdrl), "vdl" ); }