[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