/// \name Vector Target Information
/// @{
+ /// \brief The various kinds of shuffle patterns for vector queries.
enum ShuffleKind {
- Broadcast, // Broadcast element 0 to all other elements.
- Reverse, // Reverse the order of the vector.
- InsertSubvector, // InsertSubvector. Index indicates start offset.
- ExtractSubvector // ExtractSubvector Index indicates start offset.
+ SK_Broadcast, ///< Broadcast element 0 to all other elements.
+ SK_Reverse, ///< Reverse the order of the vector.
+ SK_InsertSubvector, ///< InsertSubvector. Index indicates start offset.
+ SK_ExtractSubvector ///< ExtractSubvector Index indicates start offset.
};
/// \return The number of scalar or vector registers that the target has.
unsigned X86TTI::getShuffleCost(ShuffleKind Kind, Type *Tp, int Index,
Type *SubTp) const {
// We only estimate the cost of reverse shuffles.
- if (Kind != Reverse)
+ if (Kind != SK_Reverse)
return TargetTransformInfo::getShuffleCost(Kind, Tp, Index, SubTp);
std::pair<unsigned, MVT> LT = TLI->getTypeLegalizationCost(Tp);
SI->getAlignment(),
SI->getPointerAddressSpace());
if (Reverse)
- Cost += TTI->getShuffleCost(TargetTransformInfo::Reverse,
+ Cost += TTI->getShuffleCost(TargetTransformInfo::SK_Reverse,
VectorTy, 0);
return Cost;
}
LI->getAlignment(),
LI->getPointerAddressSpace());
if (Reverse)
- Cost += TTI->getShuffleCost(TargetTransformInfo::Reverse,
+ Cost += TTI->getShuffleCost(TargetTransformInfo::SK_Reverse,
VectorTy, 0);
return Cost;
}