mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-24 13:18:17 +00:00
[LoopVectorize] Add accessors for Num{Stores,Loads,PredStores} in AccessAnalysis
These members are moving to LoopAccessAnalysis. The accessors help to hide this. NFC. This is part of the patchset that splits out the memory dependence logic from LoopVectorizationLegality into a new class LoopAccessAnalysis. LoopAccessAnalysis will be used by the new Loop Distribution pass. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@227750 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -628,10 +628,6 @@ struct RuntimePointerCheck {
|
||||
/// induction variable and the different reduction variables.
|
||||
class LoopVectorizationLegality {
|
||||
public:
|
||||
unsigned NumLoads;
|
||||
unsigned NumStores;
|
||||
unsigned NumPredStores;
|
||||
|
||||
LoopVectorizationLegality(Loop *L, ScalarEvolution *SE, const DataLayout *DL,
|
||||
DominatorTree *DT, TargetLibraryInfo *TLI,
|
||||
AliasAnalysis *AA, Function *F,
|
||||
@@ -854,6 +850,15 @@ public:
|
||||
bool isMaskRequired(const Instruction* I) {
|
||||
return (MaskedOp.count(I) != 0);
|
||||
}
|
||||
unsigned getNumStores() const {
|
||||
return NumStores;
|
||||
}
|
||||
unsigned getNumLoads() const {
|
||||
return NumLoads;
|
||||
}
|
||||
unsigned getNumPredStores() const {
|
||||
return NumPredStores;
|
||||
}
|
||||
private:
|
||||
/// Check if a single basic block loop is vectorizable.
|
||||
/// At this point we know that this is a loop with a constant trip count
|
||||
@@ -908,6 +913,10 @@ private:
|
||||
VectorizationReport::emitAnalysis(Message, TheFunction, TheLoop);
|
||||
}
|
||||
|
||||
unsigned NumLoads;
|
||||
unsigned NumStores;
|
||||
unsigned NumPredStores;
|
||||
|
||||
/// The loop that we evaluate.
|
||||
Loop *TheLoop;
|
||||
/// Scev analysis.
|
||||
@@ -5449,7 +5458,7 @@ LoopVectorizationCostModel::selectVectorizationFactor(bool OptForSize) {
|
||||
return Factor;
|
||||
}
|
||||
|
||||
if (!EnableCondStoresVectorization && Legal->NumPredStores) {
|
||||
if (!EnableCondStoresVectorization && Legal->getNumPredStores()) {
|
||||
emitAnalysis(VectorizationReport() <<
|
||||
"store that is conditionally executed prevents vectorization");
|
||||
DEBUG(dbgs() << "LV: No vectorization. There are conditional stores.\n");
|
||||
@@ -5719,8 +5728,10 @@ LoopVectorizationCostModel::selectUnrollFactor(bool OptForSize,
|
||||
|
||||
// Unroll until store/load ports (estimated by max unroll factor) are
|
||||
// saturated.
|
||||
unsigned StoresUF = UF / (Legal->NumStores ? Legal->NumStores : 1);
|
||||
unsigned LoadsUF = UF / (Legal->NumLoads ? Legal->NumLoads : 1);
|
||||
unsigned NumStores = Legal->getNumStores();
|
||||
unsigned NumLoads = Legal->getNumLoads();
|
||||
unsigned StoresUF = UF / (NumStores ? NumStores : 1);
|
||||
unsigned LoadsUF = UF / (NumLoads ? NumLoads : 1);
|
||||
|
||||
// If we have a scalar reduction (vector reductions are already dealt with
|
||||
// by this point), we can increase the critical path length if the loop
|
||||
|
||||
Reference in New Issue
Block a user