refactor tryToVectorizePair to a new method that supports vectorization of lists.
authorNadav Rotem <nrotem@apple.com>
Sat, 20 Apr 2013 07:22:58 +0000 (07:22 +0000)
committerNadav Rotem <nrotem@apple.com>
Sat, 20 Apr 2013 07:22:58 +0000 (07:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179932 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Vectorize/SLPVectorizer.cpp

index 40875c305b580b65a38014607117346e376cbd1e..6f4d69e3424081d0f950d6eac8f5c80d7c6763d7 100644 (file)
@@ -127,6 +127,9 @@ private:
   /// \brief Try to vectorize a chain that starts at two arithmetic instrs.
   bool tryToVectorizePair(Value *A, Value *B,  BoUpSLP &R);
 
+  /// \brief Try to vectorize a list of operands.
+  bool tryToVectorizeList(BoUpSLP::ValueList &VL, BoUpSLP &R);
+
   /// \brief Try to vectorize a chain that may start at the operands of \V;
   bool tryToVectorize(BinaryOperator *V,  BoUpSLP &R);
 
@@ -174,6 +177,11 @@ bool SLPVectorizer::tryToVectorizePair(Value *A, Value *B,  BoUpSLP &R) {
   BoUpSLP::ValueList VL;
   VL.push_back(A);
   VL.push_back(B);
+  return tryToVectorizeList(VL, R);
+}
+
+bool SLPVectorizer::tryToVectorizeList(BoUpSLP::ValueList &VL,  BoUpSLP &R) {
+  DEBUG(dbgs()<<"SLP: Vectorizing a list of length = " << VL.size() << ".\n");
   int Cost = R.getTreeCost(VL);
   int ExtrCost = R.getScalarizationCost(VL);
   DEBUG(dbgs()<<"SLP: Cost of pair:" << Cost <<