forked from OSchip/llvm-project
29c997c1a1
This patch enables the vectorization of first-order recurrences. A first-order recurrence is a non-reduction recurrence relation in which the value of the recurrence in the current loop iteration equals a value defined in the previous iteration. The load PRE of the GVN pass often creates these recurrences by hoisting loads from within loops. In this patch, we add a new recurrence kind for first-order phi nodes and attempt to vectorize them if possible. Vectorization is performed by shuffling the values for the current and previous iterations. The vectorization cost estimate is updated to account for the added shuffle instruction. Contributed-by: Matthew Simpson and Chad Rosier <mcrosier@codeaurora.org> Differential Revision: http://reviews.llvm.org/D16197 llvm-svn: 261346 |
||
---|---|---|
.. | ||
aarch64-unroll.ll | ||
arbitrary-induction-step.ll | ||
arm64-unroll.ll | ||
deterministic-type-shrinkage.ll | ||
first-order-recurrence.ll | ||
gather-cost.ll | ||
interleaved_cost.ll | ||
lit.local.cfg | ||
loop-vectorization-factors.ll | ||
reduction-small-size.ll | ||
sdiv-pow2.ll | ||
type-shrinkage-insertelt.ll |