From patchwork Mon Jul 30 11:54:53 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramana Radhakrishnan X-Patchwork-Id: 174006 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]) by ozlabs.org (Postfix) with SMTP id 901772C0087 for ; Mon, 30 Jul 2012 21:55:11 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=gcc.gnu.org; s=default; x=1344254112; h=Comment: DomainKey-Signature:Received:Received:Received:Received: MIME-Version:Received:Received:Date:Message-ID:Subject:From:To: Cc:Content-Type:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:Sender:Delivered-To; bh=M6dnZjE G3m4LQiq3FGCYcIL0Pow=; b=v/02drTVJI5tFyFe3Ebtg02P7h7YfTt509QLEss 3mW2IyGxAF3fMmo9WGgJgj2H1t7SX7cEGcUSQoWoe3Arpgoexgn8uTVGc1o/H4f3 Mn9ptjAxlcebAwvndnGSgz4KKUz9ym63bpXD1eBT1OdgnC8W2gEVnS1o5KBI1Nz1 s4bk= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=gcc.gnu.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-Google-DKIM-Signature:MIME-Version:Received:Received:Date:Message-ID:Subject:From:To:Cc:Content-Type:X-Gm-Message-State:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=waKPaRTU6LOD7F/F7gtsNPfMG/JsQ24vYu3clqPFwCdkpDK94swWgiZXhoBNai WmOsOfGT5HhMssWA5kfeMv2+VoslEn8m3HwfWlYl9pA4vm96gb1GZP8CZY4l6qVO PPSol8j68wdWsDdihE3J92HB6Qh8fESWBepZPHekbieBI=; Received: (qmail 11487 invoked by alias); 30 Jul 2012 11:55:07 -0000 Received: (qmail 11479 invoked by uid 22791); 30 Jul 2012 11:55:07 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from mail-vb0-f47.google.com (HELO mail-vb0-f47.google.com) (209.85.212.47) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 30 Jul 2012 11:54:54 +0000 Received: by vbbfr13 with SMTP id fr13so4705036vbb.20 for ; Mon, 30 Jul 2012 04:54:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:cc:content-type :x-gm-message-state; bh=HWTNXSmPGa4oRT5YFXCQY+uQBEVTAoGaQVfc9xmSOos=; b=Jgn6Rfg9pGWUQT8+ckxxav9xPa+aOzjm+pBJqPJOe3Q2uFvVpR2Gpqpi8OmqXcx/c7 2tVjfjSltN1FVMs8ZFCYatlVdKFzrZE8C9fKCUDiEWdOv0CPiixNs1A0V4TyA/JRCQg8 9PKxLzjxgs2aRf8ImFwmpMRWwCpcAq8RCXjXYpilZGAGVyMB5W9vE2rFcej49BD9VCRF gYae6GbYi0Se5UMPADlmlNzP+OZhLPhiBUOTIbMcssPhiWX7Oc/SXmfa0Gj27BCiQWC7 0MXmdLNIDlpO+1JXoqoPsKMres8O6F53n3at2CxAoPxhsSZ3Zq+1UFLXFWpcNYCXy4ws vuCg== MIME-Version: 1.0 Received: by 10.52.176.195 with SMTP id ck3mr9362271vdc.92.1343649293905; Mon, 30 Jul 2012 04:54:53 -0700 (PDT) Received: by 10.58.210.194 with HTTP; Mon, 30 Jul 2012 04:54:53 -0700 (PDT) Date: Mon, 30 Jul 2012 12:54:53 +0100 Message-ID: Subject: [Patch ARM 6/6] Fix ICE with vst1_lanedi type intrinsics. From: Ramana Radhakrishnan To: gcc-patches@gcc.gnu.org Cc: Patch Tracking , Richard Earnshaw X-Gm-Message-State: ALoCoQmXChBxll5j3dsNeUzbuJoNzn1E5jKw60M1bXvwy1zFJVsQWmnpfBSsMl235r9CvCWU3dBE X-IsSubscribed: yes 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 Hi, This is similar to the previous patch except that it prevents (vec_select:DI (operand:DI)) type operations. Exposed by the vst*_lane*.c tests in the new testsuite. regards, Ramana 2012-07-27 Ramana Radhakrishnan * config/arm/neon.md (neon_vst1_lanedi): Split from .. (neon_vst1 VDX): this, iterate over VD and cleanup. --- gcc/config/arm/neon.md | 26 +++++++++++++++++--------- 1 files changed, 17 insertions(+), 9 deletions(-) diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 843c907..ec35d69 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -4405,10 +4405,23 @@ "vst1.\t%h1, %A0" [(set_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs")]) +(define_expand "neon_vst1_lanedi" + [(match_operand:DI 0 "neon_struct_operand") + (match_operand:DI 1 "s_register_operand") + (match_operand:SI 2 "neon_lane_number")] + "TARGET_NEON" + { + if (INTVAL (operands[2]) == 1) + error ("lane out of range for vst1_lanedi intrinsic"); + emit_move_insn (operands[0], operands[1]); + DONE; + } +) + (define_insn "neon_vst1_lane" [(set (match_operand: 0 "neon_struct_operand" "=Um") (vec_select: - (match_operand:VDX 1 "s_register_operand" "w") + (match_operand:VD 1 "s_register_operand" "w") (parallel [(match_operand:SI 2 "neon_lane_number" "i")])))] "TARGET_NEON" { @@ -4416,15 +4429,10 @@ HOST_WIDE_INT max = GET_MODE_NUNITS (mode); if (lane < 0 || lane >= max) error ("lane out of range"); - if (max == 1) - return "vst1.\t{%P1}, %A0"; - else - return "vst1.\t{%P1[%c2]}, %A0"; + + return "vst1.\t{%P1[%c2]}, %A0"; } - [(set (attr "neon_type") - (if_then_else (eq (const_string "") (const_int 1)) - (const_string "neon_vst1_1_2_regs_vst2_2_regs") - (const_string "neon_vst1_vst2_lane")))]) + [(set_attr "neon_type" "neon_vst1_vst2_lane")]) (define_insn "neon_vst1_lane" [(set (match_operand: 0 "neon_struct_operand" "=Um")