diff options
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index b4137dfe908..f69f18db8c5 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -2375,14 +2375,13 @@ int BoUpSLP::getEntryCost(TreeEntry *E) { Instruction *I = cast<Instruction>(i); if (!I) break; + assert(S.isOpcodeOrAlt(I) && "Unexpected main/alternate opcode"); ScalarCost += TTI->getArithmeticInstrCost(I->getOpcode(), ScalarTy); } // VecCost is equal to sum of the cost of creating 2 vectors // and the cost of creating shuffle. - Instruction *I0 = cast<Instruction>(VL[0]); - VecCost = TTI->getArithmeticInstrCost(I0->getOpcode(), VecTy); - Instruction *I1 = cast<Instruction>(VL[1]); - VecCost += TTI->getArithmeticInstrCost(I1->getOpcode(), VecTy); + VecCost = TTI->getArithmeticInstrCost(S.Opcode, VecTy); + VecCost += TTI->getArithmeticInstrCost(S.AltOpcode, VecTy); VecCost += TTI->getShuffleCost(TargetTransformInfo::SK_Select, VecTy, 0); return ReuseShuffleCost + VecCost - ScalarCost; } |