From patchwork Tue Jun 28 14:20:53 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ramana Radhakrishnan X-Patchwork-Id: 2358 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 9C2A81A5A1C for ; Tue, 28 Jun 2011 14:21:00 +0000 (UTC) Received: from mail-qw0-f52.google.com (mail-qw0-f52.google.com [209.85.216.52]) by fiordland.canonical.com (Postfix) with ESMTP id 59697A183F9 for ; Tue, 28 Jun 2011 14:21:00 +0000 (UTC) Received: by qwb8 with SMTP id 8so175764qwb.11 for ; Tue, 28 Jun 2011 07:20:59 -0700 (PDT) Received: by 10.229.62.194 with SMTP id y2mr5791205qch.4.1309270859656; Tue, 28 Jun 2011 07:20:59 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.229.48.135 with SMTP id r7cs9497qcf; Tue, 28 Jun 2011 07:20:59 -0700 (PDT) Received: by 10.213.108.68 with SMTP id e4mr52077ebp.65.1309270858712; Tue, 28 Jun 2011 07:20:58 -0700 (PDT) Received: from e102483 (fw-lnat.cambridge.arm.com [217.140.96.63]) by mx.google.com with ESMTP id f54si487676eec.24.2011.06.28.07.20.57; Tue, 28 Jun 2011 07:20:58 -0700 (PDT) Received-SPF: neutral (google.com: 217.140.96.63 is neither permitted nor denied by best guess record for domain of ramrad01@e102483) client-ip=217.140.96.63; Authentication-Results: mx.google.com; spf=neutral (google.com: 217.140.96.63 is neither permitted nor denied by best guess record for domain of ramrad01@e102483) smtp.mail=ramrad01@e102483 Received: by e102483 (Postfix, from userid 1001) id BE7851040554; Tue, 28 Jun 2011 15:20:57 +0100 (BST) From: Ramana Radhakrishnan To: gcc-patches@gcc.gnu.org Cc: patches@linaro.org, rearnsha@arm.com, Ramana Radhakrishnan Subject: [PATCH] [ARM] Fix constraint modifiers for VFP patterns. Date: Tue, 28 Jun 2011 15:20:53 +0100 Message-Id: <1309270853-24353-1-git-send-email-ramana.radhakrishnan@linaro.org> X-Mailer: git-send-email 1.7.4.1 Hi, Sometime back Chung-Lin noticed that a few of the VFP patterns as below had the '+' constraint modifiers rather than the '=' constraint modifiers. I've now corrected this as follows and tested this on trunk with arm-linux-gnueabi and qemu for a v7-a neon test run. Committed. cheers Ramana 2011-06-28 Ramana Radhakrishnan * config/arm/vfp.md ("*divsf3_vfp"): Replace '+' constraint modifier with '=' constraint modifier. (*divdf3_vfp): Likewise. ("*mulsf3_vfp"): Likewise. ("*muldf3_vfp"): Likewise. ("*mulsf3negsf_vfp"): Likewise. ("*muldf3negdf_vfp"): Likewise. --- gcc/config/arm/arm.h | 2 +- gcc/config/arm/vfp.md | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index b0d2625..edd6afd 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1597,7 +1597,7 @@ typedef struct frame. */ #define EXIT_IGNORE_STACK 1 -#define EPILOGUE_USES(REGNO) ((REGNO) == LR_REGNUM) +#define EPILOGUE_USES(REGNO) (epilogue_completed && (REGNO) == LR_REGNUM) /* Determine if the epilogue should be output as RTL. You should override this if you define FUNCTION_EXTRA_EPILOGUE. */ diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 42be2ff..e2165a8 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -719,7 +719,7 @@ ;; Division insns (define_insn "*divsf3_vfp" - [(set (match_operand:SF 0 "s_register_operand" "+t") + [(set (match_operand:SF 0 "s_register_operand" "=t") (div:SF (match_operand:SF 1 "s_register_operand" "t") (match_operand:SF 2 "s_register_operand" "t")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" @@ -729,7 +729,7 @@ ) (define_insn "*divdf3_vfp" - [(set (match_operand:DF 0 "s_register_operand" "+w") + [(set (match_operand:DF 0 "s_register_operand" "=w") (div:DF (match_operand:DF 1 "s_register_operand" "w") (match_operand:DF 2 "s_register_operand" "w")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" @@ -742,7 +742,7 @@ ;; Multiplication insns (define_insn "*mulsf3_vfp" - [(set (match_operand:SF 0 "s_register_operand" "+t") + [(set (match_operand:SF 0 "s_register_operand" "=t") (mult:SF (match_operand:SF 1 "s_register_operand" "t") (match_operand:SF 2 "s_register_operand" "t")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" @@ -752,7 +752,7 @@ ) (define_insn "*muldf3_vfp" - [(set (match_operand:DF 0 "s_register_operand" "+w") + [(set (match_operand:DF 0 "s_register_operand" "=w") (mult:DF (match_operand:DF 1 "s_register_operand" "w") (match_operand:DF 2 "s_register_operand" "w")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE" @@ -761,9 +761,8 @@ (set_attr "type" "fmuld")] ) - (define_insn "*mulsf3negsf_vfp" - [(set (match_operand:SF 0 "s_register_operand" "+t") + [(set (match_operand:SF 0 "s_register_operand" "=t") (mult:SF (neg:SF (match_operand:SF 1 "s_register_operand" "t")) (match_operand:SF 2 "s_register_operand" "t")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP" @@ -773,7 +772,7 @@ ) (define_insn "*muldf3negdf_vfp" - [(set (match_operand:DF 0 "s_register_operand" "+w") + [(set (match_operand:DF 0 "s_register_operand" "=w") (mult:DF (neg:DF (match_operand:DF 1 "s_register_operand" "w")) (match_operand:DF 2 "s_register_operand" "w")))] "TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP_DOUBLE"