[LV] Interleave to expose ILP for small loops with scalar reductions.
authorAaron Liu <hualilia@ca.ibm.com>
Tue, 1 Sep 2020 19:42:08 +0000 (19:42 +0000)
committerAaron Liu <hualilia@ca.ibm.com>
Tue, 1 Sep 2020 19:47:32 +0000 (19:47 +0000)
commitd7e16ca28f48000d4fb3e3388d782cbd9ad02e62
tree9cbd0148e0b5feebe8b1c921ff3ff228cafb1874
parent4783e2c9c603ed6aeacc76bb1177056a9d307bd1
[LV] Interleave to expose ILP for small loops with scalar reductions.

Interleave for small loops that have reductions inside,
which breaks dependencies and expose.

This gives very significant performance improvements for some benchmarks.
Because small loops could be in very hot functions in real applications.

Differential Revision: https://reviews.llvm.org/D81416
llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/test/Transforms/LoopVectorize/PowerPC/interleave_IC.ll [new file with mode: 0644]