From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15506 invoked by alias); 11 Nov 2015 11:23:06 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 15493 invoked by uid 89); 11 Nov 2015 11:23:04 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: eu-smtp-delivery-143.mimecast.com Received: from eu-smtp-delivery-143.mimecast.com (HELO eu-smtp-delivery-143.mimecast.com) (207.82.80.143) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 11 Nov 2015 11:23:02 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by eu-smtp-1.mimecast.com with ESMTP id uk-mta-22-HuLVvVuWQnKiBEoPw_3k_Q-1; Wed, 11 Nov 2015 11:22:56 +0000 Received: from [10.2.206.200] ([10.1.2.79]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Wed, 11 Nov 2015 11:22:54 +0000 Message-ID: <5643250F.9000000@arm.com> Date: Wed, 11 Nov 2015 11:23:00 -0000 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: charles.baylis@linaro.org, Ramana.Radhakrishnan@arm.com, alan.lawrence@arm.com CC: rearnsha@arm.com, gcc-patches@gcc.gnu.org Subject: Re: [PATCH 4b/4] [ARM] PR63870 Remove error for invalid lane numbers References: <1446942404-11561-1-git-send-email-charles.baylis@linaro.org> <1446942404-11561-6-git-send-email-charles.baylis@linaro.org> In-Reply-To: <1446942404-11561-6-git-send-email-charles.baylis@linaro.org> X-MC-Unique: HuLVvVuWQnKiBEoPw_3k_Q-1 Content-Type: text/plain; charset=WINDOWS-1252; format=flowed Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2015-11/txt/msg01341.txt.bz2 Hi Charles, On 08/11/15 00:26, charles.baylis@linaro.org wrote: > From: Charles Baylis > > Charles Baylis > > * config/arm/neon.md (neon_vld1_lane): Remove error for invalid > lane number. > (neon_vst1_lane): Likewise. > (neon_vld2_lane): Likewise. > (neon_vst2_lane): Likewise. > (neon_vld3_lane): Likewise. > (neon_vst3_lane): Likewise. > (neon_vld4_lane): Likewise. > (neon_vst4_lane): Likewise. > > Change-Id: Id7b4b6fa7320157e62e5bae574b4c4688d921774 > --- > gcc/config/arm/neon.md | 48 ++++++++-----------------------------------= ----- > 1 file changed, 8 insertions(+), 40 deletions(-) > > diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md > index e8db020..6574e6e 100644 > --- a/gcc/config/arm/neon.md > +++ b/gcc/config/arm/neon.md > @@ -4264,8 +4264,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT lane =3D ENDIAN_LANE_N(mode, INTVAL (operands[3])= ); > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > operands[3] =3D GEN_INT (lane); > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > if (max =3D=3D 1) > return "vld1.\t%P0, %A1"; > else > @@ -4286,9 +4284,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > operands[3] =3D GEN_INT (lane); > int regno =3D REGNO (operands[0]); > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -4372,8 +4368,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT lane =3D ENDIAN_LANE_N(mode, INTVAL (operands[2])= ); > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > operands[2] =3D GEN_INT (lane); > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > if (max =3D=3D 1) > return "vst1.\t{%P1}, %A0"; > else > @@ -4393,9 +4387,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT lane =3D ENDIAN_LANE_N(mode, INTVAL (operands[2])= ); > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -4464,8 +4456,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[0]); > rtx ops[4]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); In this pattern the 'max' variable is now unused, causing a bootstrap -Werr= or failure on arm. I'll test a patch to fix it unless you beat me to it... Thanks, Kyrill > ops[0] =3D gen_rtx_REG (DImode, regno); > ops[1] =3D gen_rtx_REG (DImode, regno + 2); > ops[2] =3D operands[1]; > @@ -4489,9 +4479,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[0]); > rtx ops[4]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -4579,8 +4567,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > rtx ops[4]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > ops[0] =3D operands[0]; > ops[1] =3D gen_rtx_REG (DImode, regno); > ops[2] =3D gen_rtx_REG (DImode, regno + 2); > @@ -4604,9 +4590,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > rtx ops[4]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -4723,8 +4707,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[0]); > rtx ops[5]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > ops[0] =3D gen_rtx_REG (DImode, regno); > ops[1] =3D gen_rtx_REG (DImode, regno + 2); > ops[2] =3D gen_rtx_REG (DImode, regno + 4); > @@ -4750,9 +4732,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[0]); > rtx ops[5]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -4895,8 +4875,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > rtx ops[5]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > ops[0] =3D operands[0]; > ops[1] =3D gen_rtx_REG (DImode, regno); > ops[2] =3D gen_rtx_REG (DImode, regno + 2); > @@ -4922,9 +4900,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > rtx ops[5]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -5045,8 +5021,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[0]); > rtx ops[6]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > ops[0] =3D gen_rtx_REG (DImode, regno); > ops[1] =3D gen_rtx_REG (DImode, regno + 2); > ops[2] =3D gen_rtx_REG (DImode, regno + 4); > @@ -5073,9 +5047,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[0]); > rtx ops[6]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2; > @@ -5225,8 +5197,6 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > rtx ops[6]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > ops[0] =3D operands[0]; > ops[1] =3D gen_rtx_REG (DImode, regno); > ops[2] =3D gen_rtx_REG (DImode, regno + 2); > @@ -5253,9 +5223,7 @@ if (BYTES_BIG_ENDIAN) > HOST_WIDE_INT max =3D GET_MODE_NUNITS (mode); > int regno =3D REGNO (operands[1]); > rtx ops[6]; > - if (lane < 0 || lane >=3D max) > - error ("lane out of range"); > - else if (lane >=3D max / 2) > + if (lane >=3D max / 2) > { > lane -=3D max / 2; > regno +=3D 2;