[LLVMdev] Instruction Scheduling

Evan Cheng evan.cheng at apple.com
Mon Mar 3 00:15:18 PST 2008

You must be using an older release of llvm. There are only three  
variants left: list-tdrr, list-burr, and list-td. These are all fairly  
basic: list scheduling for minimum latency (top down only, bottom up  
isn't implemented due to lack of time), list scheduling for minimum  
register pressure (both top down and bottom up, but in fact only the  
bu variant has been actively maintained).

x86 and arm defaults to list-burr, it does a reasonable job of  
minimize register pressure. Recently I haven't noticed many cases  
where it break down. ppc defaults to list-td, it uses a fairly simple  
hazard recognizer to form good dispatch groups.

There hasn't been any real scheduling study done using llvm as far as  
I am aware.


On Feb 29, 2008, at 8:31 PM, Fernando Magno Quintao Pereira wrote:

> Dear LLVM'ers,
>     I am browsing the instruction schedulers available in llc, and
> there are many:
>   -pre-RA-sched = {default, none, simple, simple-noitin, list-burr,
> list-tdrr, list-td}
>     I looked into the sources in lib/CodeGen/SelectionDAG, and I could
> find implementation of Sethi-Ullman numbering, list scheduling, etc.
>     Now, I wish I could find some comparison between the schedulers. I
> guess you guys probably have some tests somewhere. Basically, I wish I
> could know when it is better to use a scheduler, and when it is  
> better to
> use another. Even if someone could point me a paper/report discussing
> these issues, it would be great.
> best,
> Fernando
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

More information about the llvm-dev mailing list