mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-30 17:33:24 +00:00
LoopVectorizer: Don't count the induction variable multiple times
When estimating register pressure, don't count the induction variable mulitple times. It is unlikely to be unrolled. This is currently disabled and hidden behind a flag ("enable-ind-var-reg-heur"). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200371 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c86f56a506
commit
8dc253e97b
@ -188,6 +188,10 @@ static cl::opt<unsigned> NumberOfStoresToPredicate(
|
||||
"vectorize-num-stores-pred", cl::init(0), cl::Hidden,
|
||||
cl::desc("Max number of stores to be predicated behind an if."));
|
||||
|
||||
static cl::opt<bool> EnableIndVarRegisterHeur(
|
||||
"enable-ind-var-reg-heur", cl::init(false), cl::Hidden,
|
||||
cl::desc("Count the induction variable only once when unrolling"));
|
||||
|
||||
static cl::opt<bool> EnableCondStoresVectorization(
|
||||
"enable-cond-stores-vec", cl::init(false), cl::Hidden,
|
||||
cl::desc("Enable if predication of stores during vectorization."));
|
||||
@ -5155,6 +5159,11 @@ LoopVectorizationCostModel::selectUnrollFactor(bool OptForSize,
|
||||
unsigned UF = PowerOf2Floor((TargetNumRegisters - R.LoopInvariantRegs) /
|
||||
R.MaxLocalUsers);
|
||||
|
||||
// Don't count the induction variable as unrolled.
|
||||
if (EnableIndVarRegisterHeur)
|
||||
UF = PowerOf2Floor((TargetNumRegisters - R.LoopInvariantRegs - 1) /
|
||||
std::max(1U, (R.MaxLocalUsers - 1)));
|
||||
|
||||
// Clamp the unroll factor ranges to reasonable factors.
|
||||
unsigned MaxUnrollSize = TTI.getMaximumUnrollFactor();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user