diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-12-23 13:19:18 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-12-23 13:19:18 +0000 |
commit | 417872ed08128e8885b4c7fbaeb2d735c150ea57 (patch) | |
tree | 077d951d7d9737108f1bf52ca1ed5399f9b16182 /lib/Transforms/Vectorize/LoopVectorize.cpp | |
parent | f85ec865f0f803273ab38e3b1a19fe185c7e88ac (diff) |
LoopVectorize: For scalars and void types there is no need to compute vector insert/extract costs.
Fixes an assert during the build of oggenc in the test suite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171000 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Vectorize/LoopVectorize.cpp')
-rw-r--r-- | lib/Transforms/Vectorize/LoopVectorize.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 5b1db0b9d1..ddb7f2607e 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -2181,18 +2181,16 @@ LoopVectorizationCostModel::getInstructionCost(Instruction *I, unsigned VF) { // elements, times the vector width. unsigned Cost = 0; - bool IsVoid = RetTy->isVoidTy(); - - unsigned InsCost = (IsVoid ? 0 : - VTTI->getVectorInstrCost(Instruction::InsertElement, - VectorTy)); - - unsigned ExtCost = VTTI->getVectorInstrCost(Instruction::ExtractElement, - VectorTy); - - // The cost of inserting the results plus extracting each one of the - // operands. - Cost += VF * (InsCost + ExtCost * I->getNumOperands()); + if (RetTy->isVoidTy() || VF != 1) { + unsigned InsCost = VTTI->getVectorInstrCost(Instruction::InsertElement, + VectorTy); + unsigned ExtCost = VTTI->getVectorInstrCost(Instruction::ExtractElement, + VectorTy); + + // The cost of inserting the results plus extracting each one of the + // operands. + Cost += VF * (InsCost + ExtCost * I->getNumOperands()); + } // The cost of executing VF copies of the scalar instruction. This opcode // is unknown. Assume that it is the same as 'mul'. |