llvm-project/llvm/lib/Transforms
Sanjoy Das 664c925a57 [LoopUnrolling] Peel loops with invariant backedge Phi input
Summary:
If a loop contains a Phi node which has an invariant input from back
edge, it is profitable to peel such loops (rather than unroll them) to
use the advantage that this Phi is always invariant starting from 2nd
iteration. After the 1st iteration is peeled, other optimizations can
potentially simplify calculations with this invariant.

Patch by Max Kazantsev!

Reviewers: sanjoy, apilipenko, igor-laevsky, anna, mkuper, reames

Reviewed By: mkuper

Subscribers: mkuper, mzolotukhin, llvm-commits

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

llvm-svn: 296898
2017-03-03 18:19:15 +00:00
..
Coroutines [Coroutines] Add header guard to header that's missing one. 2017-01-30 16:32:20 +00:00
Hello Add auto-exporting of symbols from tools so that plugins work on Windows 2016-05-26 11:16:43 +00:00
IPO Revert "Re-apply "[GVNHoist] Move GVNHoist to function simplification part of pipeline."" 2017-03-03 14:27:53 +00:00
InstCombine Use APInt::getLowBitsSet instead of APInt::getBitsSet for lower bit mask creation 2017-03-03 16:56:33 +00:00
Instrumentation [msan] Handle x86_sse_stmxcsr and x86_sse_ldmxcsr. 2017-03-03 01:12:43 +00:00
ObjCARC Remove redundant code. NFC. 2017-02-25 00:59:49 +00:00
Scalar [LoopUnrolling] Re-prioritize Peeling and Partial unrolling 2017-03-03 18:19:10 +00:00
Utils [LoopUnrolling] Peel loops with invariant backedge Phi input 2017-03-03 18:19:15 +00:00
Vectorize [SLP] Fixes the bug due to absence of in order uses of scalars which needs to be available 2017-03-03 10:02:47 +00:00
CMakeLists.txt [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00
LLVMBuild.txt [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00