From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5492 invoked by alias); 13 Apr 2007 16:55:02 -0000 Received: (qmail 5472 invoked by uid 22791); 13 Apr 2007 16:55:01 -0000 X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 13 Apr 2007 17:54:56 +0100 Received: from zps75.corp.google.com (zps75.corp.google.com [172.25.146.75]) by smtp-out.google.com with ESMTP id l3DGslGp027490; Fri, 13 Apr 2007 09:54:47 -0700 Received: from smtp.corp.google.com (spacemonkey3.corp.google.com [192.168.120.116]) by zps75.corp.google.com with ESMTP id l3DGsdOJ001929 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 13 Apr 2007 09:54:39 -0700 Received: from localhost.localdomain.google.com (237.sub-75-210-93.myvzw.com [75.210.93.237]) (authenticated bits=0) by smtp.corp.google.com (8.13.8/8.13.8) with ESMTP id l3DGsYsJ014325 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 13 Apr 2007 09:54:37 -0700 To: bonzini@gnu.org Cc: "Fu, Chao-Ying" , Richard Sandiford , GCC Development Subject: Re: [MIPS] MADD issue References: <3CB54817FDF733459B230DD27C690CEC03EE8E3F@Exchange.mips.com> <461F6599.3060403@lu.unisi.ch> From: Ian Lance Taylor Date: Fri, 13 Apr 2007 17:05:00 -0000 In-Reply-To: <461F6599.3060403@lu.unisi.ch> Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-IsSubscribed: yes Mailing-List: contact gcc-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-owner@gcc.gnu.org X-SW-Source: 2007-04/txt/msg00468.txt.bz2 Paolo Bonzini writes: > > (define_insn "adddi3_internal_1" > > [(set (match_operand:DI 0 "register_operand" "=d,&d") > > (plus:DI (match_operand:DI 1 "register_operand" "0,d") > > (match_operand:DI 2 "register_operand" "d,d"))) > > (clobber (match_operand:SI 3 "register_operand" "=d,d"))] > > "!TARGET_64BIT && !TARGET_DEBUG_G_MODE && !TARGET_MIPS16" > > { > > return (REGNO (operands[0]) == REGNO (operands[1]) > > && REGNO (operands[0]) == REGNO (operands[2])) > > ? "srl\t%3,%L0,31\;sll\t%M0,%M0,1\;sll\t%L0,%L1,1\;addu\t%M0,%M0,%3" > > : "addu\t%L0,%L1,%L2\;sltu\t%3,%L0,%L2\;addu\t%M0,%M1,%M2\;addu\t%M0,%M0,%3"; > > } > > This should be a post-reload (i.e. predicated on reload_completed) > split, I think. Actually, with the relatively recent lower-subreg work, it is desirable to split this sort of instruction before reload. That is, do an unconditional split. Ian