[PATCH] D102002: [PassManager] unify vector passes between regular and LTO pipelines

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 6 14:39:57 PDT 2021


nikic added a comment.

> The difference for the regular pipeline is that we unroll directly after the loop vectorizer instead of waiting until after SLP/VectorCombine. That eliminates the need for one stage of instcombine. This reduced compile-time by about 2.7%:

This seems to be mostly due to less code size, which is most likely caused by less unrolling. It's not really obvious to me why this ordering change results in such a large difference. While I would love LLVM to be less gratuitous when it comes to runtime unrolling (especially of vectorized code), I strongly suspect that unrolling is being prevented here for the wrong reasons. Maybe the IR coming out of LoopVectorize is in some form that SCEV/LoopUnroll doesn't understand, and other passes are needed to clean it up first, or something along those lines.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D102002/new/

https://reviews.llvm.org/D102002



More information about the llvm-commits mailing list