[TargetTransformInfo][NFCI] Add TargetTransformInfo::isZExtFree.

Summary:
This function is not used in this change but will be used in a
subsequent change.

Reviewers: mcrosier, chandlerc

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D9180

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243347 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Sanjoy Das 2015-07-27 23:27:43 +00:00
parent 7483355e34
commit fc21a10522
4 changed files with 19 additions and 0 deletions

View File

@ -331,6 +331,11 @@ public:
/// by referencing its sub-register AX.
bool isTruncateFree(Type *Ty1, Type *Ty2) const;
/// \brief Return true if it's free to zero extend a value of type Ty1 to type
/// Ty2. e.g. on x86-64, all instructions that define 32-bit values implicit
/// zero-extend the result out to 64 bits.
bool isZExtFree(Type *Ty1, Type *Ty2) const;
/// \brief Return true if it is profitable to hoist instruction in the
/// then/else to before if.
bool isProfitableToHoist(Instruction *I) const;
@ -571,6 +576,7 @@ public:
int64_t BaseOffset, bool HasBaseReg,
int64_t Scale, unsigned AddrSpace) = 0;
virtual bool isTruncateFree(Type *Ty1, Type *Ty2) = 0;
virtual bool isZExtFree(Type *Ty1, Type *Ty2) = 0;
virtual bool isProfitableToHoist(Instruction *I) = 0;
virtual bool isTypeLegal(Type *Ty) = 0;
virtual unsigned getJumpBufAlignment() = 0;
@ -704,6 +710,9 @@ public:
bool isTruncateFree(Type *Ty1, Type *Ty2) override {
return Impl.isTruncateFree(Ty1, Ty2);
}
bool isZExtFree(Type *Ty1, Type *Ty2) override {
return Impl.isZExtFree(Ty1, Ty2);
}
bool isProfitableToHoist(Instruction *I) override {
return Impl.isProfitableToHoist(I);
}

View File

@ -216,6 +216,8 @@ public:
bool isTruncateFree(Type *Ty1, Type *Ty2) { return false; }
bool isZExtFree(Type *Ty1, Type *Ty2) { return false; }
bool isProfitableToHoist(Instruction *I) { return true; }
bool isTypeLegal(Type *Ty) { return false; }

View File

@ -143,6 +143,10 @@ public:
return getTLI()->isTruncateFree(Ty1, Ty2);
}
bool isZExtFree(Type *Ty1, Type *Ty2) const {
return getTLI()->isZExtFree(Ty1, Ty2);
}
bool isProfitableToHoist(Instruction *I) {
return getTLI()->isProfitableToHoist(I);
}

View File

@ -129,6 +129,10 @@ bool TargetTransformInfo::isTruncateFree(Type *Ty1, Type *Ty2) const {
return TTIImpl->isTruncateFree(Ty1, Ty2);
}
bool TargetTransformInfo::isZExtFree(Type *Ty1, Type *Ty2) const {
return TTIImpl->isZExtFree(Ty1, Ty2);
}
bool TargetTransformInfo::isProfitableToHoist(Instruction *I) const {
return TTIImpl->isProfitableToHoist(I);
}