This is the mail archive of the 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: PATCH: implement XScale scheduling

> The following patch adds XScale-specific scheduling, particularly for
> the XScale multiplier pipeline.  Benchmarks demonstated that
> scheduling the multiplication instructions can have an adverse effect
> on performance due to increased register pressure in the first
> scheduling pass.  We opted to control multiplication instruction
> scheduling with a switch, -mxscale-schedule-mult.
> Tested on a NetBSD-x-xscale-elf cross-compiler, no regressions with or
> without the switch in use.

This is largely fine except for the issue of the extra flag.  

I'm really not keen on adding a plethora of tuning flags -- my feeling is 
that this feature should be either always on or always off.  Whether or 
not it is right to apply this flag will depend on subtle changes to the 
compiler and to the user's source code.  It's also the case that if a file 
has two functions with a multiply one might benefit from having the flag 
on while the other would benefit from it being off.  That's certainly 
likely to be true if you look at all the files in an application (which 
will normally all be compiled with the same flags).

Register pressure created by the first scheduling pass is a serious 
problem on the ARM due to the fairly limited number of registers, but I 
don't really think this is the way to address the problem.  It might be 
worth looking at some of the work that has been done recently for SH 
pre-register-allocation scheduling if you want to persue this problem 
further.  In the mean time I think you should pick one setting for the 
compiler, stick with it and get rid of the flag.

On the patch itself, note that GCC now uses full ANSI function 
declarations.  You need to update your patch accordingly.


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