[LLVMdev] Whole-function isel

Dietmar Ebner ebner at complang.tuwien.ac.at
Tue Mar 25 09:40:29 PDT 2008


Chris Lattner wrote:
> I would love to see any progress in this area.  It is clearly an  
> important thing to tackle, and it is blocking other interesting  
> improvements in the code generator.  It would also allow us to  
> eliminate a significant amount of weirdness that exists to hack around  
> this (e.g. switch lowering).
we've been working on a whole-function instruction selector here at the 
vienna university of technology in the recent past. our approach
considers ssa graphs and is based on a problem transformation to a
specialized quadratic assignment problem (pbqp). in contrast to previous
work [1], the technique is flexible enough to cope with general DAG
patterns such as pre/postincrement or divmod patterns.

the instruction selector is a drop-in replacement for the original 
implementation (llvm 2.1). we've used the ARM backend for evaluation and 
obtained quite encouraging results: speedups are up to 10% for 
SPEC/Mibench and up to 57% for simple loop kernels. the compile time 
increase is about a factor of 2.

the paper has been accepted for this year's LCTES conference (june 
12-13, tucson, az). i'm afraid i cannot post it on the list but i'm 
happy to send a preliminary version to anybody who's interested.

the implementation is not yet as efficient as it could be (e.g., we 
maintain an additional datastructure for the ssa graph along with the 
selection DAG) and i'm afraid there are licensing issues that do not 
allow me to directly post or contribute the code. however, i'm happy to 
share further experimental results and discuss the approach in case 
somebody is interested.


[1] Erik Eckstein, Oliver K├Ânig and Bernhard Scholz
     Code Instruction Selection Based on SSA-Graphs
     SCOPES 2003

Dietmar Ebner
CD Laboratory - Compilation Techniques for Embedded Processors
Institut fuer Computersprachen  E: ebner at complang.tuwien.ac.at
Technische Universitaet Wien    F: (+431) 58801-18598
Argentinierstrasse 8 / E1851    T: (+431) 58801-58521
1040 Wien, Austria              W: www.complang.tuwien.ac.at/cd/ebner

More information about the llvm-dev mailing list