This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFC: Using (set (if_then_else ...)) on IA64 for division instructions


> On Wed, Sep 29, 2004 at 09:07:25AM -0700, Steve Ellcey wrote:
> > I have been looking at how we generate code to do division on IA64 to
> > see if I could get it to be scheduled better.  Currently IA64 generates
> > a sequence of instructions using cond_exec, the problem with this is
> > that cond_exec cannot be expanded until after reload and this results in
> > the division instruction sequence being poorly scheduled.
> 
> I'm surprised you aren't getting decent results with flag_rename_registers.

For '(a/b)+(c/d)' flag_rename_registers does rename a predicate register
but it doesn't rename any of the floating point registers so it wasn't
able to change the scheduling.

I think (but am not sure) that the use of cond_exec may be interfering
with regrename's ability to understand the real lifetimes of the
floating point registers.  It thinks that each use of a register could
be linked all previous definitions because intervening definitions are
conditional and thus may or may not happen.

Steve Ellcey
sje@cup.hp.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]