From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31444 invoked by alias); 28 Jan 2011 15:20:53 -0000 Received: (qmail 31434 invoked by uid 22791); 28 Jan 2011 15:20:52 -0000 X-SWARE-Spam-Status: No, hits=-2.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW X-Spam-Check-By: sourceware.org Received: from service87.mimecast.com (HELO service87.mimecast.com) (94.185.240.25) by sourceware.org (qpsmtpd/0.43rc1) with SMTP; Fri, 28 Jan 2011 15:20:45 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Fri, 28 Jan 2011 15:20:42 +0000 Received: from [10.1.67.34] ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.0); Fri, 28 Jan 2011 15:20:38 +0000 Subject: Re: [patch][ARM] Fix 16-bit -> 64-bit multiply and accumulate From: Richard Earnshaw To: Andrew Stubbs Cc: gcc-patches@gcc.gnu.org In-Reply-To: <4D42DD32.7020404@codesourcery.com> References: <4D01018F.3020108@codesourcery.com> <1296153619.9738.16.camel@e102346-lin.cambridge.arm.com> <4D42955C.1060707@codesourcery.com> <1296223929.9738.30.camel@e102346-lin.cambridge.arm.com> <4D42DD32.7020404@codesourcery.com> Date: Fri, 28 Jan 2011 16:01:00 -0000 Message-Id: <1296228038.9738.48.camel@e102346-lin.cambridge.arm.com> Mime-Version: 1.0 X-MC-Unique: 111012815204200801 Content-Type: text/plain; charset=WINDOWS-1252 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org X-SW-Source: 2011-01/txt/msg02118.txt.bz2 On Fri, 2011-01-28 at 15:13 +0000, Andrew Stubbs wrote: > On 28/01/11 14:12, Richard Earnshaw wrote: > > So what happens to a variation of your testcase: > > > > long long foolong (long long x, short *a, short *b) > > { > > return x + (long long)*a * (long long)*b; > > } > > > > With your patch? This should generate identical code to your original > > test-case. > > >=20 > The patch has no effect on that testcase - it's broken in some other=20 > way, I think, and the same with and without my patch: >=20 > ldrsh r3, [r3, #0] > ldrsh r2, [r2, #0] > push {r4, r5} > asrs r4, r3, #31 > asrs r5, r2, #31 > mul r4, r2, r4 > mla r4, r3, r5, r4 > umull r2, r3, r2, r3 > adds r3, r4, r3 > adds r0, r0, r2 > adc r1, r1, r3 > pop {r4, r5} > bx lr >=20 > Hmmm, that probably doesn't add anything useful to the discussion. :( >=20 > I'll add that one to the todo list ... >=20 > Andrew >=20 Ouch! I though that used to work :-( R.