Optimizations for itanium

Vladimir N. Makarov vmakarov@redhat.com
Fri Jun 1 15:22:00 GMT 2007


Prasad, Kamal R wrote:

>Hello,
>
> Can someone tell me the back-end optimizations available for itanium
>(IA64)?
>We (HP) may be able to contribute to this from our side.
>
>  
>
Sorry, it is ambiguous question.  There are a lot of optimizations in 
GCC.  Most of them are available for Itanium.

If you are interesting in the state of optimizations specific and quite 
important for Itanium, then here is the list of a few of them:

o data dependence and alias analysis.  It is pretty good on tree-SSA 
level (you could ask Daniel Berlin dberlin@dberling.org and Diego 
Novillo dnovillo@google.org about details) but this information is not 
propagated to RTL.  ISP (institute for system programming) of  RAS 
(Russian Academy of Sciences) have been working on this but I don't know 
the current status of the work.  Please contact Andrew Belevantsev 
abel@ispras.ru if you want to know more.

o modulo scheduling.  GCC has swing modulo scheduling (please ask Ayal 
Zaks zaks@il.ibm.com about the details).  Imho, major problem with the 
implementation is absence a good data-dependency analysis on this level, 
difficulties to use DFA for pipelining, and modulo scheduling is done 
early (there are code changes after that).  A lot of thing can be done 
to improve it (including predicated prologue/epilogue loops).

o instruction scheduling.  GCC uses regional insn scheduler without insn 
cloning which is originated from Haifa scheduler and supports data and 
control speculation (that was implemented by ISP RAS).  There is ongoing 
work to implement more sophisticated insn-scheduler (including enhanced 
software pipelining).  This work is close to selective scheduling.  The 
work is done by ISP RAS, so please contact to them about the details.

o data prefetching.  It has been implemented on tree-SSA level by Zdenek 
Dvorak  (rakdver@kam.mff.cuni.cz).  Imho, this implementation is in a 
pretty good shape.

The major problem of the contribution of a code to GCC from other 
compilers is the different environment (IR, infrastructure, coding 
standards and so on).  For example, Haifa insn scheduler has been 
contributed almost 10 years ago and imho still not fully integrated 
yet.  There are also legal issue to bring the code.  So I think it is 
more productive to work on improvement of the current GCC 
implementation.  But may be I am wrong and your code has a very a good 
interface and can be easily integrated in any compiler.

Vlad



More information about the Gcc mailing list