hameeza ahmed via llvm-dev
2018-Jul-16 18:32 UTC
[llvm-dev] difference between polly stripmine, vector and unroll flags
Hello I m using following polly flags, clang -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine clang -O3 -mllvm -polly -mllvm -polly-vectorizer=polly clang -O3 -mllvm -polly -mllvm -force-vector-interleave=32 I am getting different execution times for each 3. Can you please tell me the difference between the optimizations performed by these 3 flags? Please help Thank You -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180716/842fc19c/attachment.html>
Michael Kruse via llvm-dev
2018-Jul-17 07:05 UTC
[llvm-dev] difference between polly stripmine, vector and unroll flags
2018-07-16 11:32 GMT-07:00 hameeza ahmed <hahmed2305 at gmail.com>:> Hello I m using following polly flags, > > clang -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmineThis prepares instructions into vector-sized chunks (-polly-prevect-width, 4 by default), but does not generate vector instructions itself. The LoopVectorizer can generate vector instructions from it.> clang -O3 -mllvm -polly -mllvm -polly-vectorizer=pollyLike -polly-vectorizer=stripmine, but generates vector instructions itself.> clang -O3 -mllvm -polly -mllvm -force-vector-interleave=32This is a LoopVectorizer option. It does not vectorize, but interleave (a special kind of unrolling). Michael