Add target hook to specify block size limit for if-conversion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37134 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Evan Cheng 2007-05-16 23:45:53 +00:00
parent b6ec3a933d
commit d60483ef99
3 changed files with 22 additions and 0 deletions

View File

@ -394,6 +394,11 @@ public:
virtual bool PredicateInstruction(MachineInstr *MI,
std::vector<MachineOperand> &Cond) const;
/// getBlockSize - Calculate the size of the specified MachineBasicBlock.
/// Note the result may not be 100% accurate especially if there are inline
/// asm's in the block.
virtual unsigned getBlockSize(MachineBasicBlock *MBB) const;
/// getPointerRegClass - Returns a TargetRegisterClass used for pointer
/// values.
virtual const TargetRegisterClass *getPointerRegClass() const {

View File

@ -434,6 +434,12 @@ public:
return JumpBufAlignment;
}
/// getIfCvtBlockLimit - returns the target specific if-conversion block size
/// limit. Any block whose size is greater should not be predicated.
virtual unsigned getIfCvtBlockSizeLimit() const {
return IfCvtBlockSizeLimit;
}
/// getPreIndexedAddressParts - returns true by value, base pointer and
/// offset pointer and addressing mode by reference if the node's address
/// can be legally represented as pre-indexed load / store address.
@ -750,6 +756,12 @@ protected:
void setJumpBufAlignment(unsigned Align) {
JumpBufAlignment = Align;
}
/// setIfCvtBlockSizeLimit - Set the target's if-conversion block size limit;
/// default is 2.
void setIfCvtBlockSizeLimit(unsigned Limit) {
IfCvtBlockSizeLimit = Limit;
}
public:
@ -982,6 +994,10 @@ private:
/// JumpBufAlignment - The alignment, in bytes, of the target's jmp_buf
/// buffers
unsigned JumpBufAlignment;
/// IfCvtBlockSizeLimit - The maximum allowed block size for if-conversion.
///
unsigned IfCvtBlockSizeLimit;
/// StackPointerRegisterToSaveRestore - If set to a physical register, this
/// specifies the register that llvm.savestack/llvm.restorestack should save

View File

@ -157,6 +157,7 @@ TargetLowering::TargetLowering(TargetMachine &tm)
SchedPreferenceInfo = SchedulingForLatency;
JumpBufSize = 0;
JumpBufAlignment = 0;
IfCvtBlockSizeLimit = 2;
InitLibcallNames(LibcallRoutineNames);
InitCmpLibcallCCs(CmpLibcallCCs);