HomePhabricator

[RuntimeUnrolling] Add logic for loops with multiple exit blocks

Description

[RuntimeUnrolling] Add logic for loops with multiple exit blocks

Summary:
Runtime unrolling is done for loops with a single exit block and a
single exiting block (and this exiting block should be the latch block).
This patch adds logic to support unrolling in the presence of multiple exit
blocks (which also means multiple exiting blocks).
Currently this is under an off-by-default option and is supported when
epilog code is generated. Support in presence of prolog code will be in
a future patch (we just need to add more tests, and update comments).

This patch is essentially an implementation patch. I have not added any
heuristic (in terms of branches added or code size) to decide when
this should be enabled.

Reviewers: mkuper, sanjoy, reames, evstupac

Reviewed by: reames

Subscribers: llvm-commits

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

Details

Committed
annatJun 30 2017, 10:57 AM
Reviewer
reames
Differential Revision
D33001: [RuntimeUnrolling] Add logic for loops with multiple exit blocks
Parents
rL306845: [LSan] Make LSan allocator allocator_may_return_null compliant
Branches
Unknown
Tags
Unknown