This is the mail archive of the
mailing list for the GCC project.
RE: Lousy scheduling decisions owing to bad interaction betweensched and greg :(
- From: "Dave Korn" <dk at artimi dot com>
- To: <law at redhat dot com>
- Cc: <gcc at gcc dot gnu dot org>
- Date: Fri, 3 Sep 2004 18:23:44 +0100
- Subject: RE: Lousy scheduling decisions owing to bad interaction betweensched and greg :(
> -----Original Message-----
> From: Jeffrey A Law
> Sent: 03 September 2004 17:35
> On Fri, 2004-09-03 at 06:49, Dave Korn wrote:
> > Morning all!
> > [ This is a rather long post, so I'll summarize very
> quickly at the top:
> > 1) I've got bad scheduling decisions being made, 2) I think
> I know why, 3)
> > Would anyone be so kind as to cast an eye over my
> > statement to sanity-check it for me, 4) Does an expander
> sound like the
> > right solution to the problem? ]
> Just to make sure I understand.
> Your port has r->m and m->r instructions, but no m->m instructions.
> Right? That's the core issue, you need to reflect that in your
> move patterns' predicates so that you do not get m->m insns.
Yep, spot on.
> This is pretty typical for many targets. You'll want an expander
> for your move patterns which breaks m->m moves into m->r, r->m
> You'll want a matching pattern which requires a register for
> either the source or destination operand.
> You can probably crib code from any of the riscy-like targets
> to do this.
Yep, that seems to be the consensus. Thanks, Jeff, Richard, and Joern,
for your helpful replies!
Can't think of a witty .sigline today....