[LLVMdev] Slow jitter.

Dan Gohman gohman at apple.com
Wed Aug 26 08:51:49 PDT 2009



On Aug 26, 2009, at 8:32 AM, Chris Lattner <clattner at apple.com> wrote:

> On Aug 26, 2009, at 7:47 AM, Óscar Fuentes wrote:
>>> Also if you use -time-passes with llc it should show which pass in
>>> llc
>>> takes so much time.
>>
>> These are the three main culprits for llc -O0
>>
>>  ---User Time---   --System Time--   --User+System--   ---Wall
>> Time---  --- Name ---
>> 10.9531 ( 30.0%)   0.4687 ( 58.8%)  11.4218 ( 30.6%)  11.5468
>> ( 30.6%)  X86 DAG->DAG Instruction Selection
>> 10.2500 ( 28.0%)   0.0156 (  1.9%)  10.2656 ( 27.5%)  10.2500
>> ( 27.2%)  Live Variable Analysis
>>  4.8593 ( 13.3%)   0.0000 (  0.0%)   4.8593 ( 13.0%)   4.8593
>> ( 12.9%)  Linear Scan Register Allocator
>>
>> And there for -pre-RA-sched=fast -regalloc=simple -O0 code.bc
>>
>> 10.7187 ( 45.4%)   0.4375 ( 60.8%)  11.1562 ( 45.8%)  11.1718
>> ( 45.4%)  X86 DAG->DAG Instruction Selection
>>  7.4687 ( 31.6%)   0.0156 (  2.1%)   7.4843 ( 30.7%)   7.5312
>> ( 30.6%)  Simple Register Allocator
>>  1.9531 (  8.2%)   0.1406 ( 19.5%)   2.0937 (  8.6%)   2.1093
>> (  8.5%)  X86 Intel-Style Assembly Printer
>>
>> I suppose we can't get rid of instruction selection :-)
>
> Pass -fast-isel to speed up instruction selection.
>
> Dan, I think that this should be made "non hidden" and updated (from
> llc --help):
>
>   -fast-isel                              - Enable the experimental
> "fast" instruction selector

It's turned on by -O0.  And I guess it's not so "experimental" at this  
point :).  It hasn't been tuned for a wide variety of applications yet  
though.

An interesting option to add is -fast-isel-verbose, which prints out  
LLVM instructions that aren't going down the fast path.  If there's  
something that shows up a lot, it may be worthwhile looking into why  
the front-end is using it, or looking into adding support for that  
instruction to the fast path.

LLVM has made progress in this area, but there's more to be done.

Dan





More information about the llvm-dev mailing list