Add a subtype parameter to VTTI::getShuffleCost

In order to cost subvector insertion and extraction, we need to know
the type of the subvector being extracted.

No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171453 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Hal Finkel 2013-01-03 02:34:09 +00:00
parent e5ab1bee8c
commit 82860f63e1
5 changed files with 10 additions and 9 deletions

View File

@ -72,7 +72,7 @@ public:
virtual unsigned getArithmeticInstrCost(unsigned Opcode, Type *Ty) const;
virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp,
int Index) const;
int Index, Type *SubTp) const;
virtual unsigned getCastInstrCost(unsigned Opcode, Type *Dst,
Type *Src) const;

View File

@ -170,10 +170,10 @@ public:
}
/// Returns the cost of a shuffle instruction of kind Kind and of type Tp.
/// The index parameter is used by some of the shuffle kinds to add
/// additional information.
/// The index and subtype parameters are used by some of the shuffle kinds
/// to add additional information.
virtual unsigned getShuffleCost(ShuffleKind Kind, Type *Tp,
int Index = 0) const {
int Index = 0, Type *SubTp = 0) const {
return 1;
}

View File

@ -209,8 +209,7 @@ unsigned VectorTargetTransformImpl::getArithmeticInstrCost(unsigned Opcode,
}
unsigned VectorTargetTransformImpl::getShuffleCost(ShuffleKind Kind,
Type *Tp,
int Index) const {
Type *Tp, int Index, Type *SubTp) const {
return 1;
}

View File

@ -18303,10 +18303,11 @@ unsigned X86VectorTargetTransformInfo::getCastInstrCost(unsigned Opcode,
unsigned X86VectorTargetTransformInfo::getShuffleCost(ShuffleKind Kind, Type *Tp,
int Index) const {
int Index,
Type *SubTp) const {
// We only estimate the cost of reverse shuffles.
if (Kind != Reverse)
return VectorTargetTransformImpl::getShuffleCost(Kind, Tp, Index);
return VectorTargetTransformImpl::getShuffleCost(Kind, Tp, Index, SubTp);
std::pair<unsigned, MVT> LT = getTypeLegalizationCost(Tp);
unsigned Cost = 1;

View File

@ -974,7 +974,8 @@ namespace llvm {
virtual unsigned getCastInstrCost(unsigned Opcode, Type *Dst,
Type *Src) const;
unsigned getShuffleCost(ShuffleKind Kind, Type *Tp, int Index) const;
unsigned getShuffleCost(ShuffleKind Kind,
Type *Tp, int Index, Type *SubTp) const;
};
}