From patchwork Mon Oct 11 16:44:26 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tejas Belagod X-Patchwork-Id: 67445 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 A2699B70A3 for ; Tue, 12 Oct 2010 03:44:49 +1100 (EST) Received: (qmail 1824 invoked by alias); 11 Oct 2010 16:44:40 -0000 Received: (qmail 1768 invoked by uid 22791); 11 Oct 2010 16:44:33 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL, BAYES_00, T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from cam-admin0.cambridge.arm.com (HELO cam-admin0.cambridge.arm.com) (217.140.96.50) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 11 Oct 2010 16:44:29 +0000 Received: from cam-owa2.Emea.Arm.com (cam-owa2.emea.arm.com [10.1.105.18]) by cam-admin0.cambridge.arm.com (8.12.6/8.12.6) with ESMTP id o9BGefF9018466 for ; Mon, 11 Oct 2010 17:40:41 +0100 (BST) Received: from [10.1.67.25] ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 11 Oct 2010 17:44:25 +0100 Subject: [Patch, ARM] Fix regression. From: Tejas Belagod To: gcc-patches@gcc.gnu.org Date: Mon, 11 Oct 2010 17:44:26 +0100 Message-Id: <1286815466.6030.20.camel@e102484-lin.cambridge.arm.com> Mime-Version: 1.0 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, A bug was introduced in neon_move_hi_quad_ pattern refactoring the neon_move_(hi,lo)_ patterns in neon.md as a part of the vmovn patch. This caused some regressions, namely gcc.c-torture/990811-1.c etc. to fail. The bug relates to incorrectly ordering the operands of vec_concat when implementing moving to the high part of a register (pattern neon_move_hi_quad_). Regression tested for arm-linux-gnueabi. OK? --- Tejas Belagod ARM. gcc/ 2010-10-11 Tejas Belagod * config/arm/neon.md (neon_move_hi_quad_): Fix the order of operands to vec_concat. diff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md index cd91573..ec05e17 100644 --- a/gcc/config/arm/neon.md +++ b/gcc/config/arm/neon.md @@ -1187,10 +1187,11 @@ (define_insn "neon_move_hi_quad_" [(set (match_operand:ANY128 0 "s_register_operand" "+w") (vec_concat:ANY128 - (match_operand: 1 "s_register_operand" "w") (vec_select: (match_dup 0) - (match_operand:ANY128 2 "vect_par_constant_low" ""))))] + (match_operand:ANY128 2 "vect_par_constant_low" "")) + (match_operand: 1 "s_register_operand" "w")))] + "TARGET_NEON" { int dest = REGNO (operands[0]);