Changes in directory llvm/include/llvm/Target:
TargetLowering.h updated: 1.117 -> 1.118 --- Log message: add one addressing mode description hook to rule them all. --- Diffs of the changes: (+21 -1) TargetLowering.h | 22 +++++++++++++++++++++- 1 files changed, 21 insertions(+), 1 deletion(-) Index: llvm/include/llvm/Target/TargetLowering.h diff -u llvm/include/llvm/Target/TargetLowering.h:1.117 llvm/include/llvm/Target/TargetLowering.h:1.118 --- llvm/include/llvm/Target/TargetLowering.h:1.117 Tue Mar 27 20:51:02 2007 +++ llvm/include/llvm/Target/TargetLowering.h Fri Mar 30 18:14:50 2007 @@ -853,9 +853,29 @@ MachineBasicBlock *MBB); //===--------------------------------------------------------------------===// - // Loop Strength Reduction hooks + // Addressing mode description hooks (used by LSR etc). // + /// AddrMode - This represents an addressing mode of: + /// BaseGV + BaseOffs + BaseReg + Scale*ScaleReg + /// If BaseGV is null, there is no BaseGV. + /// If BaseOffs is zero, there is no base offset. + /// If HasBaseReg is false, there is no base register. + /// If Scale is zero, there is no ScaleReg. Scale of 1 indicates a reg with + /// no scale. + /// + struct AddrMode { + GlobalValue *BaseGV; + int64_t BaseOffs; + bool HasBaseReg; + int64_t Scale; + }; + + /// isLegalAddressingMode - Return true if the addressing mode represented by + /// AM is legal for this target, for a load/store of the specified type. + /// TODO: Handle pre/postinc as well. + virtual bool isLegalAddressingMode(const AddrMode &AM, const Type *Ty) const; + /// isLegalAddressImmediate - Return true if the integer value can be used as /// the offset of the target addressing mode for load / store of the given /// type. _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits