mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-09 22:04:10 +00:00
[LoopUnroll] Enable advanced unrolling analysis by default.
Summary: This patch turns on LoopUnrollAnalyzer by default. To mitigate compile time regressions, I chose very conservative thresholds for now. Later we can make them more aggressive, but it might require being smarter in which loops we're optimizing. E.g. currently the biggest issue is that with more agressive thresholds we unroll many cold loops, which increases compile time for no performance benefit (performance of those loops is improved, but it doesn't matter since they are cold). Test results for compile time(using 4 samples to reduce noise): ``` MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes 5.19% SingleSource/Benchmarks/Polybench/medley/reg_detect/reg_detect 4.19% MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow 3.39% MultiSource/Applications/JM/lencod/lencod 1.47% MultiSource/Benchmarks/Fhourstones-3_1/fhourstones3_1 -6.06% ``` I didn't see any performance changes in the testsuite, but it improves some internal tests. Reviewers: hfinkel, chandlerc Subscribers: llvm-commits, mzolotukhin Differential Revision: http://reviews.llvm.org/D20482 llvm-svn: 270478
This commit is contained in:
parent
b72817c244
commit
aaf9408cae
@ -45,18 +45,18 @@ static cl::opt<unsigned>
|
||||
cl::desc("The baseline cost threshold for loop unrolling"));
|
||||
|
||||
static cl::opt<unsigned> UnrollPercentDynamicCostSavedThreshold(
|
||||
"unroll-percent-dynamic-cost-saved-threshold", cl::Hidden,
|
||||
"unroll-percent-dynamic-cost-saved-threshold", cl::init(50), cl::Hidden,
|
||||
cl::desc("The percentage of estimated dynamic cost which must be saved by "
|
||||
"unrolling to allow unrolling up to the max threshold."));
|
||||
|
||||
static cl::opt<unsigned> UnrollDynamicCostSavingsDiscount(
|
||||
"unroll-dynamic-cost-savings-discount", cl::Hidden,
|
||||
"unroll-dynamic-cost-savings-discount", cl::init(100), cl::Hidden,
|
||||
cl::desc("This is the amount discounted from the total unroll cost when "
|
||||
"the unrolled form has a high dynamic cost savings (triggered by "
|
||||
"the '-unroll-perecent-dynamic-cost-saved-threshold' flag)."));
|
||||
|
||||
static cl::opt<unsigned> UnrollMaxIterationsCountToAnalyze(
|
||||
"unroll-max-iteration-count-to-analyze", cl::init(0), cl::Hidden,
|
||||
"unroll-max-iteration-count-to-analyze", cl::init(10), cl::Hidden,
|
||||
cl::desc("Don't allow loop unrolling to simulate more than this number of"
|
||||
"iterations when checking full unroll profitability"));
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -S -unroll-threshold=20 -loop-unroll -unroll-allow-partial -unroll-runtime | FileCheck %s
|
||||
; RUN: opt < %s -S -unroll-threshold=20 -loop-unroll -unroll-allow-partial -unroll-runtime -unroll-dynamic-cost-savings-discount=0 | FileCheck %s
|
||||
|
||||
; The Loop TripCount is 9. However unroll factors 3 or 9 exceed given threshold.
|
||||
; The test checks that we choose a smaller, power-of-two, unroll count and do not give up on unrolling.
|
||||
|
Loading…
x
Reference in New Issue
Block a user