[LLVMdev] High-level software pipelining pass

Roel Jordans r.jordans at tue.nl
Thu Apr 23 05:21:48 PDT 2015


Hi all,

At the EuroLLVM conference last week, I presented my talk on 'A 
high-level implementation of software pipelining in LLVM'.

In this talk I presented a software-pipelining pass operation at the IR 
layer.  This pass is in a highly experimental state and quite buggy but 
some of the initial results have convinced me that it can be beneficial 
for some of our target architectures.  However, I haven't had much time 
to actually complete the code lately.

At the conference there were several people that expressed interest in 
my code and asked me to put it on GitHub, which I have now done.  I have 
added a short wiki page describing some of the things that need to be 
fixed before this can actually be used in a compiler.

https://github.com/rjordans/llvm/wiki

Next to these suggestions, I think that this code can also use some 
significant refactoring to improve its readability.  Especially the part 
that generates the transformed loop should probably be split into 
smaller and easier to understand bits.

There are also a few more general changes that I made in the existing 
LLVM tree.  The most useful one may be making the CostModelAnalysis pass 
into a pass that can be called from another pass.  In it's current 
version it was mostly intended as a debug interface and re-implemented 
by other passes (such as the auto-vectorizer and now the loop pipelining 
pass).

I'll still try to find some time to finish this myself but can't give 
any guarantees as to when that might happen.  But should still be able 
to give some support and/or supervision if there's anyone willing to 
work on this.

Cheers,
  Roel



More information about the llvm-dev mailing list