HomePhabricator

[LoopUnroll] Enable option to peel remainder loop

Description

[LoopUnroll] Enable option to peel remainder loop

On some targets, the penalty of executing runtime unrolling checks
and then not the unrolled loop can be significantly detrimental to
performance. This results in the need to be more conservative with
the unroll count, keeping a trip count of 2 reduces the overhead as
well as increasing the chance of the unrolled body being executed. But
being conservative leaves performance gains on the table.

This patch enables the unrolling of the remainder loop introduced by
runtime unrolling. This can help reduce the overhead of misunrolled
loops because the cost of non-taken branches is much less than the
cost of the backedge that would normally be executed in the remainder
loop. This allows larger unroll factors to be used without suffering
performance loses with smaller iteration counts.

Differential Revision: https://reviews.llvm.org/D36309

Details

Committed
sam_parkerAug 14 2017, 2:25 AM
Differential Revision
D36309: [LoopUnroll] Enable option to unroll remainder loop
Parents
rL310823: [AArch64] Remove unused MC function
Branches
Unknown
Tags
Unknown