mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-02 07:32:52 +00:00
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
This commit is contained in:
parent
f85ec865f0
commit
417872ed08
@ -2181,18 +2181,16 @@ LoopVectorizationCostModel::getInstructionCost(Instruction *I, unsigned VF) {
|
||||
// elements, times the vector width.
|
||||
unsigned Cost = 0;
|
||||
|
||||
bool IsVoid = RetTy->isVoidTy();
|
||||
if (RetTy->isVoidTy() || VF != 1) {
|
||||
unsigned InsCost = VTTI->getVectorInstrCost(Instruction::InsertElement,
|
||||
VectorTy);
|
||||
unsigned ExtCost = VTTI->getVectorInstrCost(Instruction::ExtractElement,
|
||||
VectorTy);
|
||||
|
||||
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());
|
||||
// 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'.
|
||||
|
Loading…
Reference in New Issue
Block a user