Add VectorTargetTransform::getNumberOfParts.

As discussed on IRC, add VectorTargetTransform::getNumberOfParts
to provide a stable interface to the vector legalization splitting factor.

llvm-svn: 166751
This commit is contained in:
Hal Finkel 2012-10-26 04:28:02 +00:00
parent 1a32954279
commit 9dd045f178
3 changed files with 15 additions and 0 deletions

View File

@ -68,6 +68,8 @@ public:
virtual unsigned getMemoryOpCost(unsigned Opcode, Type *Src,
unsigned Alignment,
unsigned AddressSpace) const;
virtual unsigned getNumberOfParts(Type *Tp) const;
};
} // end llvm namespace

View File

@ -156,6 +156,11 @@ public:
return 1;
}
/// Returns the number of pieces into which the provided type must be
/// split during legalization. Zero is returned when the answer is unknown.
virtual unsigned getNumberOfParts(Type *Tp) const {
return 0;
}
};
} // End llvm namespace

View File

@ -196,3 +196,11 @@ VectorTargetTransformImpl::getMemoryOpCost(unsigned Opcode, Type *Src,
// Assume that all loads of legal types cost 1.
return LT.first;
}
unsigned
VectorTargetTransformImpl::getNumberOfParts(Type *Tp) const {
std::pair<unsigned, EVT> LT =
getTypeLegalizationCost(Tp->getContext(), TLI->getValueType(Tp));
return LT.first;
}