mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-22 10:29:35 +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:
parent
8a1d3fe962
commit
bddcf8ba3a
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user