1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/include/llvm/Transforms
Michael Kuperstein c222d94c24 [LoopUnroll] Implement profile-based loop peeling
This implements PGO-driven loop peeling.

The basic idea is that when the average dynamic trip-count of a loop is known,
based on PGO, to be low, we can expect a performance win by peeling off the
first several iterations of that loop.
Unlike unrolling based on a known trip count, or a trip count multiple, this
doesn't save us the conditional check and branch on each iteration. However,
it does allow us to simplify the straight-line code we get (constant-folding,
etc.). This is important given that we know that we will usually only hit this
code, and not the actual loop.

This is currently disabled by default.

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

llvm-svn: 288274
2016-11-30 21:13:57 +00:00
..
InstCombine Do a sweep over move ctors and remove those that are identical to the default. 2016-10-20 12:20:28 +00:00
IPO [GlobalSplit] Port to the new pass manager. 2016-11-21 00:28:23 +00:00
Scalar Revert "[GVN] Basic optimization remark support" 2016-11-30 01:14:35 +00:00
Utils [LoopUnroll] Implement profile-based loop peeling 2016-11-30 21:13:57 +00:00
Vectorize [SLPVectorizer] Improved support of partial tree vectorization. 2016-11-29 08:21:14 +00:00
Coroutines.h [coroutines] Part 3 of N: Adding Boilerplate for Coroutine Passes 2016-07-28 21:04:31 +00:00
GCOVProfiler.h Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
InstrProfiling.h [InstrProfiling] Mark __llvm_profile_instrument_target last parameter as i32 zeroext if appropriate. 2016-11-21 11:57:19 +00:00
Instrumentation.h Use -fsanitize-recover instead of -mllvm -msan-keep-going. 2016-11-07 21:00:10 +00:00
IPO.h Introduce GlobalSplit pass. 2016-11-16 23:40:26 +00:00
ObjCARC.h Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
PGOInstrumentation.h Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
SampleProfile.h Consistently use ModuleAnalysisManager 2016-08-09 00:28:38 +00:00
Scalar.h Add Loop Sink pass to reverse the LICM based of basic block frequency. 2016-10-27 16:30:08 +00:00
Vectorize.h LoadStoreVectorizer: Check TTI for vec reg bit width 2016-07-01 02:07:22 +00:00