More flexible TargetLowering LSR hooks for testing whether an immediate is a legal target address immediate or scale.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35076 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2007-03-12 23:37:10 +00:00
parent b01fad6d19
commit c289faf015

View File

@ -1931,15 +1931,25 @@ getRegForInlineAsmConstraint(const std::string &Constraint,
// Loop Strength Reduction hooks // Loop Strength Reduction hooks
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
/// isLegalAddressImmediate - Return true if the integer value or /// isLegalAddressImmediate - Return true if the integer value can be used as
/// GlobalValue can be used as the offset of the target addressing mode. /// the offset of the target addressing mode for load / store of the given
bool TargetLowering::isLegalAddressImmediate(int64_t V) const { /// type.
bool TargetLowering::isLegalAddressImmediate(int64_t V, const Type *Ty) const {
return false; return false;
} }
/// isLegalAddressImmediate - Return true if the GlobalValue can be used as
/// the offset of the target addressing mode.
bool TargetLowering::isLegalAddressImmediate(GlobalValue *GV) const { bool TargetLowering::isLegalAddressImmediate(GlobalValue *GV) const {
return false; return false;
} }
/// isLegalAddressScale - Return true if the integer value can be used as the
/// scale of the target addressing mode for load / store of the given type.
bool TargetLowering::isLegalAddressScale(int64_t S, const Type *Ty) const {
return false;
}
// Magic for divide replacement // Magic for divide replacement