[LoopVectorize] Add accessors for Num{Stores,Loads,PredStores} in AccessAnalysis
authorAdam Nemet <anemet@apple.com>
Sun, 1 Feb 2015 16:56:02 +0000 (16:56 +0000)
committerAdam Nemet <anemet@apple.com>
Sun, 1 Feb 2015 16:56:02 +0000 (16:56 +0000)
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

lib/Transforms/Vectorize/LoopVectorize.cpp

index 60dffd6a988d3314c74c48d239191a8be36c42a3..87d5a51079f5052ffef2e1e79868d9e8c3a0820e 100644 (file)
@@ -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