All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nigel Stephens <nigel@mips.com>
To: "Maciej W. Rozycki" <macro@linux-mips.org>
Cc: Ralf Baechle <ralf@linux-mips.org>,
	Richard Henderson <rth@redhat.com>,
	Richard Sandiford <rsandifo@redhat.com>,
	gcc-patches@gcc.gnu.org, linux-mips@linux-mips.org
Subject: Re: [patch] MIPS/gcc: Revert removal of DImode shifts for 32-bit targets
Date: Mon, 02 Aug 2004 21:03:49 +0100	[thread overview]
Message-ID: <410E9E25.7080104@mips.com> (raw)
In-Reply-To: <Pine.LNX.4.58L.0407261325470.3873@blysk.ds.pg.gda.pl>

Maciej W. Rozycki wrote:

>On Fri, 23 Jul 2004, Ralf Baechle wrote:
>
>  
>
>>With a bit of hand waiving because haven't done benchmarks I guess Richard
>>might be right.  The subroutine calling overhead on modern processors is
>>rather low and smaller code means better cache hit rates ...
>>    
>>
>
> Well, I just worry the call may itself include at least the same number
>of instructions as the callee if inlined.  There would be no way for it to
>be faster.
>
> That may happen for a leaf function -- the call itself, plus $ra
>saving/restoration is already four instructions.  Now it's sufficient for
>two statics to be needed to preserve temporaries across such a call and
>the size of the caller is already the same.  With three statics, you lose
>even for a non-leaf function.  That's for a function containing a single
>call to such a shift -- if there are more, then you may win (but is it
>common?).
>
> So not only it may not be faster, but the resulting code may be bigger as
>well.  That said, the current GCC's implementation of these operations is
>not exactly optimal for current MIPS processors.  That's trivial to deal
>with in Linux, but would it be possible to pick a different implementation
>from libgcc based on the "-march=" setting, too?
>
> 
>

I second Maciej. My own recent experience when tuning the hell out of a 
software floating-point emulator was that efficient 64-bit shifts were 
really critical. I have a patch against gcc-3.4 which makes the 64-bit 
inline shifts somewhat smaller on ISAs which include the conditional 
move (movz/movn) instructions, but more importantly removes all branches 
from the inline code - which can be very expensive on long pipeline 
CPUs, since in this sort of code they tend to cause many branch 
mispredicts. Let me know if you want me to extract the patch - here's a 
table of the number of instructions generated by the original md pattern 
and the patched version:

		Instructions
		Old	New
ashldi3		12	9
ashrdi3		12	12
lshrdi3		12	9


If people really don't like the inline expansion, then maybe it could be 
enabled or disabled by a new -m option.

Nigel

-- 
                         Nigel Stephens         Mailto:nigel@mips.com
    _    _ ____  ___     MIPS Technologies      Phone.: +44 1223 706200
    |\  /|||___)(___     The Fruit Farm         Direct: +44 1223 706207
    | \/ |||    ____)    Ely Road, Chittering   Fax...: +44 1223 706250
     TECHNOLOGIES UK     Cambridge CB5 9PH      Cell..: +44 7976 686470
                         England                http://www.mips.com

  reply	other threads:[~2004-08-02 20:04 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-07-19 15:35 [patch] MIPS/gcc: Revert removal of DImode shifts for 32-bit targets Maciej W. Rozycki
2004-07-19 16:59 ` Richard Sandiford
2004-07-19 17:32   ` [patch] MIPS/gcc: Revert removal of DImode shifts for 32-bittargets David Edelsohn
2004-07-19 17:33   ` [patch] MIPS/gcc: Revert removal of DImode shifts for 32-bit targets Maciej W. Rozycki
2004-07-19 17:37     ` Richard Sandiford
2004-07-19 21:38     ` Richard Henderson
2004-07-23 14:41       ` Maciej W. Rozycki
2004-07-23 20:27         ` Richard Henderson
2004-07-23 21:12           ` Ralf Baechle
2004-07-26 11:56             ` Maciej W. Rozycki
2004-08-02 20:03               ` Nigel Stephens [this message]
2004-08-03  5:30                 ` Richard Sandiford
2004-08-03  9:22                   ` Nigel Stephens
2004-08-03  9:36                     ` Richard Sandiford
2004-08-03  9:54                       ` Nigel Stephens
2004-08-04 19:57                         ` Maciej W. Rozycki
2004-08-04 20:37                           ` Nigel Stephens
2004-08-04 20:54                             ` Maciej W. Rozycki
2004-08-04 23:39                               ` Nigel Stephens
2004-08-07 19:01                           ` Richard Sandiford
2004-08-09 22:08                             ` Richard Henderson
2004-08-10  5:30                               ` Richard Sandiford
2004-08-10 23:20                                 ` Richard Henderson
2004-08-11  0:24                                   ` Andreas Schwab
2004-08-11  0:40                                   ` Paul Brook
2004-08-11  4:32                                     ` Richard Henderson
2004-08-31 19:51                                   ` Richard Sandiford
2004-09-03  6:53                                     ` Richard Henderson
2004-09-03  7:05                                       ` Richard Sandiford
2004-09-03  7:08                                         ` Richard Henderson
2004-09-03  7:11                                           ` Richard Sandiford
2004-09-03  7:20                                             ` Richard Henderson
2004-09-03  7:29                                               ` Richard Sandiford
2004-09-03 20:15                                                 ` Richard Henderson
2004-09-04  8:53                                                   ` Richard Sandiford
2004-09-05  0:03                                                     ` Richard Henderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=410E9E25.7080104@mips.com \
    --to=nigel@mips.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=linux-mips@linux-mips.org \
    --cc=macro@linux-mips.org \
    --cc=ralf@linux-mips.org \
    --cc=rsandifo@redhat.com \
    --cc=rth@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.