From patchwork Mon Jul 30 11:53:07 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramana Radhakrishnan X-Patchwork-Id: 174005 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 182552C0088 for ; Mon, 30 Jul 2012 21:53:24 +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=1344254005; h=Comment: DomainKey-Signature:Received:Received:Received:Received: MIME-Version:Received:Received:In-Reply-To:References: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=uJUFNMJ6A+KhJyfs0EDzx/gc//U=; b=UnU5dwQ8W2LiuAEUblIakzviOJ99SuK1QTSK7DVLmVR+3zffn/CgKlRwTbEICj kpigWG84/c9rrEvAbFkif4C8P0wMDuMM7paoK7/Hu6io5v/WEcAOrYnXZLRfYpBd 96EgjVBPjulwlYBE9Rj72Iwb7a84BAU1gi7GP93r6UkzA= 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:In-Reply-To:References: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=uiZ4wIn+YZ13uVKq07JjSfqMmYxHgXC0iCkWrpJHq09rxUWzSlMb+8MT1kPec8 phpCHZ4FUkou5/JM3iX32hhFiZZF3gKUT4yIZpRW0/j5JigfXai0rNc6IqXobvUt YAXNxW0TVTxN4RhiGksE4pGl/fMOh+ZEcMHrSCPfnaL5c=; Received: (qmail 10549 invoked by alias); 30 Jul 2012 11:53:22 -0000 Received: (qmail 10541 invoked by uid 22791); 30 Jul 2012 11:53:21 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=AWL, BAYES_00, KHOP_RCVD_UNTRUST, KHOP_THREADED, 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:53:08 +0000 Received: by vbbfr13 with SMTP id fr13so4703522vbb.20 for ; Mon, 30 Jul 2012 04:53:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=7/pXvPMoLNwJS4J1O4DTuh6yWgx2MiDY4VCV5SRxEWM=; b=ejYmTZnO5l3p2XTsOFKHT20yI8uwFMtIpIaWI4jYvVuiigGjYnVvZW4COej7wAaGbr ZDuQe5NNXEY3vy68T6aacb8VSSdNUbXCDtMll0noc7YAhhGIhW8GT7jqnX0ODqD6P/Ta EcRQtJA2rJtXa9AYXE19KfSOAz3ktvSo0mvvu+jCpn+DknffPFqev17oQLQ3jdsUUhkA Z/c8SSOwfCv5oBQPynIpZcnaMGelNdn0eae3vxY1a0R0GzA1CCkiSp/2seoXGCC2gpal SQ/potN62QOXDfwHvmkQtYtpeA6AM6tNOw4CZ2VgY3MggsIiULIP/wigS9ZYZMtBw2tJ Oc3A== MIME-Version: 1.0 Received: by 10.220.141.203 with SMTP id n11mr10580273vcu.74.1343649188116; Mon, 30 Jul 2012 04:53:08 -0700 (PDT) Received: by 10.58.210.194 with HTTP; Mon, 30 Jul 2012 04:53:07 -0700 (PDT) In-Reply-To: References: Date: Mon, 30 Jul 2012 12:53:07 +0100 Message-ID: Subject: Re: [Patch 0/6] Improve Neon intrinsics a bit From: Ramana Radhakrishnan To: gcc-patches@gcc.gnu.org Cc: Patch Tracking , Richard Earnshaw X-Gm-Message-State: ALoCoQnbWToKc/g/FEnA2veRvdpV4fPl3jO+/MTsElMClvu4QUtr24sv+hv5MpDYKFii39Hl1YXV 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 On 30 July 2012 12:41, Ramana Radhakrishnan wrote: > Patch 5 - Bug fix that fixes up a set of ICEs because we were always > generating vec_duplicate of DImode values into other DImode values. > Possibly needs backporting to older versions. The recent changes to the vld1_dup intrinsics ended up generating (set reg:DI (vec_duplicate:DI (mem:DI ))). Instead of folding these out it was simpler just to fix this up in the backend. Fixes up the failures in vld1_dups/u64 in the new intrinsics tests. No need for a new test. Ramana 2012-07-27 Ramana Radhakrishnan * config/arm/neon.md (neon_vld1_dupdi): Split out from the other vld1_dup patterns. (neon_vld1_dup VDX): Change to iterate on VD iterator and simplify. (neon_vld1_dup VQ): Cleanup. --- gcc/config/arm/neon.md | 32 ++++++++++++++++---------------- 1 files changed, 16 insertions(+), 16 deletions(-) ) (define_insn_and_split "neon_vld1_dupv2di" diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index 7434625..843c907 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -4349,29 +4349,29 @@ ) (define_insn "neon_vld1_dup" - [(set (match_operand:VDX 0 "s_register_operand" "=w") - (vec_duplicate:VDX (match_operand: 1 "neon_struct_operand" "Um")))] + [(set (match_operand:VD 0 "s_register_operand" "=w") + (vec_duplicate:VD (match_operand: 1 "neon_struct_operand" "Um")))] "TARGET_NEON" -{ - if (GET_MODE_NUNITS (mode) > 1) - return "vld1.\t{%P0[]}, %A1"; - else - return "vld1.\t%h0, %A1"; -} - [(set (attr "neon_type") - (if_then_else (gt (const_string "") (const_string "1")) - (const_string "neon_vld2_2_regs_vld1_vld2_all_lanes") - (const_string "neon_vld1_1_2_regs")))] + "vld1.\t{%P0[]}, %A1"; + [(set_attr "neon_type" "neon_vld1_1_2_regs")] +) + +;; This has been split from the others because vld1_dupdi is the same +;; as a DImode move and it is meaningless to vec_duplicate a DImode value into +;; a DImode value. +(define_expand "neon_vld1_dupdi" + [(set (match_operand:DI 0 "s_register_operand" "") + (match_operand:DI 1 "neon_struct_operand" ""))] + "TARGET_NEON" + "" ) (define_insn "neon_vld1_dup" [(set (match_operand:VQ 0 "s_register_operand" "=w") (vec_duplicate:VQ (match_operand: 1 "neon_struct_operand" "Um")))] "TARGET_NEON" -{ - return "vld1.\t{%e0[], %f0[]}, %A1"; -} - [(set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")] + "vld1.\t{%e0[], %f0[]}, %A1" + [(set_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes")]