From patchwork Sun Nov 8 00:26:44 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charles Baylis X-Patchwork-Id: 541420 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 BA4E51402D0 for ; Sun, 8 Nov 2015 11:28:08 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b=VW6SaUSn; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references; q=dns; s= default; b=DmsuVWQyJpCkOdOwPVM2oPzPETQ8SPakrijtmTkPzJ5LPVEe2fbsT VIVM4/4VQDBAcdhrFuVQy9oCF7SvcXnD5M+KXpS7AUaO+OfTrPyxDBvEGQb0SZR9 4Hu8tUSQc7fEmK4AVFo3uc9UqvohqbL9ITcEr9h0Nuea9a3yL5G7B4= 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:from :to:cc:subject:date:message-id:in-reply-to:references; s= default; bh=ePET+k0taY2rrFJqqnPceTjIb7A=; b=VW6SaUSnegaKpc15B9YY 0TMnitLgySaSwfMJA89/y+kSqq7zwPhtaQS+xE3rVm4Og5yfB465md6739Ko2Kix PYxu8S7XaNlkbuc0J4RFizQilE9+RIIDTcV9N6eDf7gnq0nuwd/QE9xvo877WT+c VpKDIoU9g5uOXLfwd1ooG3Q= Received: (qmail 1684 invoked by alias); 8 Nov 2015 00:27:13 -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 1597 invoked by uid 89); 8 Nov 2015 00:27:12 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-wi0-f176.google.com Received: from mail-wi0-f176.google.com (HELO mail-wi0-f176.google.com) (209.85.212.176) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 08 Nov 2015 00:27:09 +0000 Received: by wicll6 with SMTP id ll6so47795886wic.1 for ; Sat, 07 Nov 2015 16:27:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/zpvpIb34M9p6xQNk5BEmFvHKRcjFZ+s8mQ4bMFgLLA=; b=Yeu8V5zrpxHJLkQ9sUBTdMiAlCLWg7OAkwJSvyB+i/+yQtIHE0gVO5Xo1cyNCYdlrw fcgBsaXF+IEQrnvQvJil1lZP1bZIGSbljpH0RPSepeEKF6WrKaBQhqRq0kzMLPb/EEM9 ES2ERUVGLwKVmYaKkwOlCDQVPzkdlb9q+eSWcoe18/Q6r2POVn0f/jdTkwNY1YjhONhP e6ZzykNnd2ByVPX0Roj+UmCehVB2V7OEUndeKk4fVn7neX+OvR52jRjhnxsqzxGO38pe 1QZ3nMBwIY+rOe0ukcpAFCKLdg4DCMPQyLxDHDAkeea3lAML5T61tAPczsmVLtkxwP0x uhCQ== X-Gm-Message-State: ALoCoQmR2VbzVa5ant/p9xT16Wkeu2rvW+aIdUSQkdo3fKyi1P6/uBfmBtsDaYEfYz/cQr63vacm X-Received: by 10.194.235.101 with SMTP id ul5mr22659159wjc.107.1446942426495; Sat, 07 Nov 2015 16:27:06 -0800 (PST) Received: from localhost.localdomain (cpc10-cmbg17-2-0-cust610.5-4.cable.virginm.net. [86.30.42.99]) by smtp.gmail.com with ESMTPSA id e9sm7480979wjw.8.2015.11.07.16.27.05 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 07 Nov 2015 16:27:06 -0800 (PST) From: charles.baylis@linaro.org To: Ramana.Radhakrishnan@arm.com, kyrylo.tkachov@arm.com, alan.lawrence@arm.com Cc: rearnsha@arm.com, gcc-patches@gcc.gnu.org Subject: [PATCH 4b/4] [ARM] PR63870 Remove error for invalid lane numbers Date: Sun, 8 Nov 2015 00:26:44 +0000 Message-Id: <1446942404-11561-6-git-send-email-charles.baylis@linaro.org> In-Reply-To: <1446942404-11561-1-git-send-email-charles.baylis@linaro.org> References: <1446942404-11561-1-git-send-email-charles.baylis@linaro.org> X-IsSubscribed: yes 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 = ENDIAN_LANE_N(mode, INTVAL (operands[3])); HOST_WIDE_INT max = GET_MODE_NUNITS (mode); operands[3] = GEN_INT (lane); - if (lane < 0 || lane >= max) - error ("lane out of range"); if (max == 1) return "vld1.\t%P0, %A1"; else @@ -4286,9 +4284,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); operands[3] = GEN_INT (lane); int regno = REGNO (operands[0]); - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -4372,8 +4368,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT lane = ENDIAN_LANE_N(mode, INTVAL (operands[2])); HOST_WIDE_INT max = GET_MODE_NUNITS (mode); operands[2] = GEN_INT (lane); - if (lane < 0 || lane >= max) - error ("lane out of range"); if (max == 1) return "vst1.\t{%P1}, %A0"; else @@ -4393,9 +4387,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT lane = ENDIAN_LANE_N(mode, INTVAL (operands[2])); HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -4464,8 +4456,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[0]); rtx ops[4]; - if (lane < 0 || lane >= max) - error ("lane out of range"); ops[0] = gen_rtx_REG (DImode, regno); ops[1] = gen_rtx_REG (DImode, regno + 2); ops[2] = operands[1]; @@ -4489,9 +4479,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[0]); rtx ops[4]; - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -4579,8 +4567,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); rtx ops[4]; - if (lane < 0 || lane >= max) - error ("lane out of range"); ops[0] = operands[0]; ops[1] = gen_rtx_REG (DImode, regno); ops[2] = gen_rtx_REG (DImode, regno + 2); @@ -4604,9 +4590,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); rtx ops[4]; - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -4723,8 +4707,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[0]); rtx ops[5]; - if (lane < 0 || lane >= max) - error ("lane out of range"); ops[0] = gen_rtx_REG (DImode, regno); ops[1] = gen_rtx_REG (DImode, regno + 2); ops[2] = gen_rtx_REG (DImode, regno + 4); @@ -4750,9 +4732,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[0]); rtx ops[5]; - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -4895,8 +4875,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); rtx ops[5]; - if (lane < 0 || lane >= max) - error ("lane out of range"); ops[0] = operands[0]; ops[1] = gen_rtx_REG (DImode, regno); ops[2] = gen_rtx_REG (DImode, regno + 2); @@ -4922,9 +4900,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); rtx ops[5]; - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -5045,8 +5021,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[0]); rtx ops[6]; - if (lane < 0 || lane >= max) - error ("lane out of range"); ops[0] = gen_rtx_REG (DImode, regno); ops[1] = gen_rtx_REG (DImode, regno + 2); ops[2] = gen_rtx_REG (DImode, regno + 4); @@ -5073,9 +5047,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[0]); rtx ops[6]; - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2; @@ -5225,8 +5197,6 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); rtx ops[6]; - if (lane < 0 || lane >= max) - error ("lane out of range"); ops[0] = operands[0]; ops[1] = gen_rtx_REG (DImode, regno); ops[2] = gen_rtx_REG (DImode, regno + 2); @@ -5253,9 +5223,7 @@ if (BYTES_BIG_ENDIAN) HOST_WIDE_INT max = GET_MODE_NUNITS (mode); int regno = REGNO (operands[1]); rtx ops[6]; - if (lane < 0 || lane >= max) - error ("lane out of range"); - else if (lane >= max / 2) + if (lane >= max / 2) { lane -= max / 2; regno += 2;