From patchwork Wed Aug 14 23:16:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Meissner X-Patchwork-Id: 1147282 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-507004-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="tAF+LxG8"; 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 46858B0S9Fz9sND for ; Thu, 15 Aug 2019 09:17:13 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:date :from:to:subject:message-id:references:mime-version:content-type :in-reply-to; q=dns; s=default; b=sO2/lVRZ/rxShyouLw1Y+0lmY925so 3Vp8CMMIdFPFYFrDkhO3JgurlFB8H31VhgfPzEW+ot++N7AXgEyVQ9S8uyaCqs8S 2i6AntA43DnOFVS/GN0veecr0rC6G0D6/SKd4B/ZiQr7S5dFLw3a8Aq4ryhjWFB3 J7A5LAwpfcsK4= 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:date :from:to:subject:message-id:references:mime-version:content-type :in-reply-to; s=default; bh=TR6/h9XT2J5aKQR1Q6opgGFqfzU=; b=tAF+ LxG8kE5iQY4svvk1ARSICM8+lGR1SnUIunOspM3NabtL0NARPJIqcMjUBfVGThct 2KGKdQ9kirPVONPYiVozWBFWgUFi2+pJOcRaheU/oX9Qkk50OxPrXnthzZjyY7tv 01pEjPVonMFX8DSAWmKmKUOvSmfiKLwd3jJo/z8= Received: (qmail 117748 invoked by alias); 14 Aug 2019 23:17:06 -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 117735 invoked by uid 89); 14 Aug 2019 23:17:06 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-10.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.1 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; Wed, 14 Aug 2019 23:17:04 +0000 Received: from pps.filterd (m0098396.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x7EN7JIl129102; Wed, 14 Aug 2019 19:17:02 -0400 Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ucu7ph2de-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 14 Aug 2019 19:17:02 -0400 Received: from m0098396.ppops.net (m0098396.ppops.net [127.0.0.1]) by pps.reinject (8.16.0.27/8.16.0.27) with SMTP id x7EN7qVC129981; Wed, 14 Aug 2019 19:17:02 -0400 Received: from ppma03dal.us.ibm.com (b.bd.3ea9.ip4.static.sl-reverse.com [169.62.189.11]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ucu7ph2d3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 14 Aug 2019 19:17:02 -0400 Received: from pps.filterd (ppma03dal.us.ibm.com [127.0.0.1]) by ppma03dal.us.ibm.com (8.16.0.27/8.16.0.27) with SMTP id x7EN524s005067; Wed, 14 Aug 2019 23:17:01 GMT Received: from b01cxnp23032.gho.pok.ibm.com (b01cxnp23032.gho.pok.ibm.com [9.57.198.27]) by ppma03dal.us.ibm.com with ESMTP id 2u9nj78nj4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 14 Aug 2019 23:17:01 +0000 Received: from b01ledav004.gho.pok.ibm.com (b01ledav004.gho.pok.ibm.com [9.57.199.109]) by b01cxnp23032.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x7ENH0LB49807868 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 14 Aug 2019 23:17:00 GMT Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 695A4112062; Wed, 14 Aug 2019 23:17:00 +0000 (GMT) Received: from b01ledav004.gho.pok.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 24B1C112061; Wed, 14 Aug 2019 23:17:00 +0000 (GMT) Received: from ibm-toto.the-meissners.org (unknown [9.32.77.177]) by b01ledav004.gho.pok.ibm.com (Postfix) with ESMTPS; Wed, 14 Aug 2019 23:17:00 +0000 (GMT) Date: Wed, 14 Aug 2019 19:16:58 -0400 From: Michael Meissner To: gcc-patches@gcc.gnu.org, Segher Boessenkool , David Edelsohn , Michael Meissner , Alan Modra Subject: [PATCH], Patch #10 of 10, Add pc-relative tests Message-ID: <20190814231658.GJ16578@ibm-toto.the-meissners.org> Mail-Followup-To: Michael Meissner , gcc-patches@gcc.gnu.org, Segher Boessenkool , David Edelsohn , Alan Modra References: <20190814205732.GA11956@ibm-toto.the-meissners.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190814205732.GA11956@ibm-toto.the-meissners.org> User-Agent: Mutt/1.5.21 (2010-09-15) This patch adds tests to make sure the appropriate pc-relative instructions are generated for -mcpu=future. The tests in this patch all pass with patches 1-7 applied on a little endian power8 system running Linux. Once patches 1-7 have been applied, can I check these patches into the trunk? 2019-08-14 Michael Meissner * gcc/testsuite/gcc.target/powerpc/prefix-large.h: New set of tests to test prefixed addressing on 'future' system with pc-relative addreses. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-dd.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-df.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-di.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-hi.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-kf.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-qi.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sd.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sf.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-si.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-udi.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uhi.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uqi.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-usi.c: New test. * gcc/testsuite/gcc.target/powerpc/prefix-pcrel-v2df.c: New test. Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-dd.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-dd.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-dd.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for SImode. */ + +#define TYPE _Decimal64 + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplfd\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstfd\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-df.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-df.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-df.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for DFmode. */ + +#define TYPE double + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplfd\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstfd\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-di.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-di.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-di.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for DImode. */ + +#define TYPE long + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mpld\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstd\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-hi.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-hi.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-hi.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for HImode. */ + +#define TYPE short + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplh[az]\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpsth\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-kf.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-kf.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-kf.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for KFmode. */ + +#define TYPE __float128 + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplxv\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstxv\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-qi.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-qi.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-qi.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for QImode. */ + +#define TYPE signed char + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplbz\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstb\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sd.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sd.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sd.c (working copy) @@ -0,0 +1,12 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for SImode. */ + +#define TYPE _Decimal32 + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mpaddi|\mpla\M} 3 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sf.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sf.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-sf.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for SFmode. */ + +#define TYPE float + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplfs\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstfs\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-si.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-si.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-si.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for SImode. */ + +#define TYPE int + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplw[az]\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstw\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-udi.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-udi.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-udi.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for unsigned DImode. */ + +#define TYPE unsigned long + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mpld\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstd\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uhi.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uhi.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uhi.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for unsigned HImode. */ + +#define TYPE unsigned short + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplhz\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpsth\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uqi.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uqi.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-uqi.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for unsigned QImode. */ + +#define TYPE unsigned char + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplbz\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstb\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-usi.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-usi.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-usi.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for unsigned SImode. */ + +#define TYPE unsigned int + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplwz\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstw\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel-v2df.c =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel-v2df.c (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel-v2df.c (working copy) @@ -0,0 +1,13 @@ +/* { dg-do compile { target { powerpc*-*-* } } } */ +/* { dg-require-effective-target powerpc_future_ok } */ +/* { dg-options "-O2 -mdejagnu-cpu=future" } */ + +/* Tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for V2DFmode. */ + +#define TYPE vector double + +#include "prefix-pcrel.h" + +/* { dg-final { scan-assembler-times {\mplxv\M} 2 } } */ +/* { dg-final { scan-assembler-times {\mpstxv\M} 2 } } */ Index: gcc/testsuite/gcc.target/powerpc/prefix-pcrel.h =================================================================== --- gcc/testsuite/gcc.target/powerpc/prefix-pcrel.h (revision 0) +++ gcc/testsuite/gcc.target/powerpc/prefix-pcrel.h (working copy) @@ -0,0 +1,58 @@ +/* Common tests for prefixed instructions testing whether pc-relative prefixed + instructions are generated for each type. */ + +typedef signed char schar; +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned int uint; +typedef unsigned long ulong; +typedef long double ldouble; +typedef vector double v2df; +typedef vector long v2di; +typedef vector float v4sf; +typedef vector int v4si; + +#ifndef TYPE +#define TYPE ulong +#endif + +#ifndef ITYPE +#define ITYPE TYPE +#endif + +#ifndef OTYPE +#define OTYPE TYPE +#endif + +static TYPE a; +TYPE *p = &a; + +#if !defined(DO_ADD) && !defined(DO_VALUE) && !defined(DO_SET) +#define DO_ADD 1 +#define DO_VALUE 1 +#define DO_SET 1 +#endif + +#if DO_ADD +void +add (TYPE b) +{ + a += b; +} +#endif + +#if DO_VALUE +OTYPE +value (void) +{ + return (OTYPE)a; +} +#endif + +#if DO_SET +void +set (ITYPE b) +{ + a = (TYPE)b; +} +#endif