diff options
Diffstat (limited to 'llvm/lib/Transforms/Vectorize')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 64 | 
1 files changed, 32 insertions, 32 deletions
| diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index ae5b3e9dfad..62a9c2ad45f 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -2162,9 +2162,9 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,    // the same block.    // Don't vectorize ephemeral values. -  for (unsigned i = 0, e = VL.size(); i != e; ++i) { -    if (EphValues.count(VL[i])) { -      LLVM_DEBUG(dbgs() << "SLP: The instruction (" << *VL[i] +  for (Value *V : VL) { +    if (EphValues.count(V)) { +      LLVM_DEBUG(dbgs() << "SLP: The instruction (" << *V                          << ") is ephemeral.\n");        newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);        return; @@ -2188,12 +2188,12 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,    }    // Check that none of the instructions in the bundle are already in the tree. -  for (unsigned i = 0, e = VL.size(); i != e; ++i) { -    auto *I = dyn_cast<Instruction>(VL[i]); +  for (Value *V : VL) { +    auto *I = dyn_cast<Instruction>(V);      if (!I)        continue;      if (getTreeEntry(I)) { -      LLVM_DEBUG(dbgs() << "SLP: The instruction (" << *VL[i] +      LLVM_DEBUG(dbgs() << "SLP: The instruction (" << *V                          << ") is already in tree.\n");        newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);        return; @@ -2203,8 +2203,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,    // If any of the scalars is marked as a value that needs to stay scalar, then    // we need to gather the scalars.    // The reduction nodes (stored in UserIgnoreList) also should stay scalar. -  for (unsigned i = 0, e = VL.size(); i != e; ++i) { -    if (MustGather.count(VL[i]) || is_contained(UserIgnoreList, VL[i])) { +  for (Value *V : VL) { +    if (MustGather.count(V) || is_contained(UserIgnoreList, V)) {        LLVM_DEBUG(dbgs() << "SLP: Gathering due to gathered scalar.\n");        newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx);        return; @@ -2446,8 +2446,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,      case Instruction::FPTrunc:      case Instruction::BitCast: {        Type *SrcTy = VL0->getOperand(0)->getType(); -      for (unsigned i = 0; i < VL.size(); ++i) { -        Type *Ty = cast<Instruction>(VL[i])->getOperand(0)->getType(); +      for (Value *V : VL) { +        Type *Ty = cast<Instruction>(V)->getOperand(0)->getType();          if (Ty != SrcTy || !isValidElementType(Ty)) {            BS.cancelScheduling(VL, VL0);            newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx, @@ -2465,8 +2465,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        for (unsigned i = 0, e = VL0->getNumOperands(); i < e; ++i) {          ValueList Operands;          // Prepare the operand vector. -        for (Value *j : VL) -          Operands.push_back(cast<Instruction>(j)->getOperand(i)); +        for (Value *V : VL) +          Operands.push_back(cast<Instruction>(V)->getOperand(i));          buildTree_rec(Operands, Depth + 1, {TE, i});        } @@ -2478,8 +2478,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        CmpInst::Predicate P0 = cast<CmpInst>(VL0)->getPredicate();        CmpInst::Predicate SwapP0 = CmpInst::getSwappedPredicate(P0);        Type *ComparedTy = VL0->getOperand(0)->getType(); -      for (unsigned i = 1, e = VL.size(); i < e; ++i) { -        CmpInst *Cmp = cast<CmpInst>(VL[i]); +      for (Value *V : VL) { +        CmpInst *Cmp = cast<CmpInst>(V);          if ((Cmp->getPredicate() != P0 && Cmp->getPredicate() != SwapP0) ||              Cmp->getOperand(0)->getType() != ComparedTy) {            BS.cancelScheduling(VL, VL0); @@ -2568,8 +2568,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,      }      case Instruction::GetElementPtr: {        // We don't combine GEPs with complicated (nested) indexing. -      for (unsigned j = 0; j < VL.size(); ++j) { -        if (cast<Instruction>(VL[j])->getNumOperands() != 2) { +      for (Value *V : VL) { +        if (cast<Instruction>(V)->getNumOperands() != 2) {            LLVM_DEBUG(dbgs() << "SLP: not-vectorizable GEP (nested indexes).\n");            BS.cancelScheduling(VL, VL0);            newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx, @@ -2581,8 +2581,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        // We can't combine several GEPs into one vector if they operate on        // different types.        Type *Ty0 = VL0->getOperand(0)->getType(); -      for (unsigned j = 0; j < VL.size(); ++j) { -        Type *CurTy = cast<Instruction>(VL[j])->getOperand(0)->getType(); +      for (Value *V : VL) { +        Type *CurTy = cast<Instruction>(V)->getOperand(0)->getType();          if (Ty0 != CurTy) {            LLVM_DEBUG(dbgs()                       << "SLP: not-vectorizable GEP (different types).\n"); @@ -2594,8 +2594,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        }        // We don't combine GEPs with non-constant indexes. -      for (unsigned j = 0; j < VL.size(); ++j) { -        auto Op = cast<Instruction>(VL[j])->getOperand(1); +      for (Value *V : VL) { +        auto Op = cast<Instruction>(V)->getOperand(1);          if (!isa<ConstantInt>(Op)) {            LLVM_DEBUG(dbgs()                       << "SLP: not-vectorizable GEP (non-constant indexes).\n"); @@ -2613,8 +2613,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        for (unsigned i = 0, e = 2; i < e; ++i) {          ValueList Operands;          // Prepare the operand vector. -        for (Value *j : VL) -          Operands.push_back(cast<Instruction>(j)->getOperand(i)); +        for (Value *V : VL) +          Operands.push_back(cast<Instruction>(V)->getOperand(i));          buildTree_rec(Operands, Depth + 1, {TE, i});        } @@ -2636,8 +2636,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        LLVM_DEBUG(dbgs() << "SLP: added a vector of stores.\n");        ValueList Operands; -      for (Value *j : VL) -        Operands.push_back(cast<Instruction>(j)->getOperand(0)); +      for (Value *V : VL) +        Operands.push_back(cast<Instruction>(V)->getOperand(0));        TE->setOperandsInOrder();        buildTree_rec(Operands, Depth + 1, {TE, 0});        return; @@ -2661,15 +2661,15 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        for (unsigned j = 0; j != NumArgs; ++j)          if (hasVectorInstrinsicScalarOpd(ID, j))            ScalarArgs[j] = CI->getArgOperand(j); -      for (unsigned i = 1, e = VL.size(); i != e; ++i) { -        CallInst *CI2 = dyn_cast<CallInst>(VL[i]); +      for (Value *V : VL) { +        CallInst *CI2 = dyn_cast<CallInst>(V);          if (!CI2 || CI2->getCalledFunction() != Int ||              getVectorIntrinsicIDForCall(CI2, TLI) != ID ||              !CI->hasIdenticalOperandBundleSchema(*CI2)) {            BS.cancelScheduling(VL, VL0);            newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,                         ReuseShuffleIndicies); -          LLVM_DEBUG(dbgs() << "SLP: mismatched calls:" << *CI << "!=" << *VL[i] +          LLVM_DEBUG(dbgs() << "SLP: mismatched calls:" << *CI << "!=" << *V                              << "\n");            return;          } @@ -2698,7 +2698,7 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,            newTreeEntry(VL, None /*not vectorized*/, S, UserTreeIdx,                         ReuseShuffleIndicies);            LLVM_DEBUG(dbgs() << "SLP: mismatched bundle operands in calls:" -                            << *CI << "!=" << *VL[i] << '\n'); +                            << *CI << "!=" << *V << '\n');            return;          }        } @@ -2709,8 +2709,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        for (unsigned i = 0, e = CI->getNumArgOperands(); i != e; ++i) {          ValueList Operands;          // Prepare the operand vector. -        for (Value *j : VL) { -          CallInst *CI2 = dyn_cast<CallInst>(j); +        for (Value *V : VL) { +          CallInst *CI2 = dyn_cast<CallInst>(V);            Operands.push_back(CI2->getArgOperand(i));          }          buildTree_rec(Operands, Depth + 1, {TE, i}); @@ -2746,8 +2746,8 @@ void BoUpSLP::buildTree_rec(ArrayRef<Value *> VL, unsigned Depth,        for (unsigned i = 0, e = VL0->getNumOperands(); i < e; ++i) {          ValueList Operands;          // Prepare the operand vector. -        for (Value *j : VL) -          Operands.push_back(cast<Instruction>(j)->getOperand(i)); +        for (Value *V : VL) +          Operands.push_back(cast<Instruction>(V)->getOperand(i));          buildTree_rec(Operands, Depth + 1, {TE, i});        } | 

