mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-19 20:34:38 +00:00
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:
parent
b6ec3a933d
commit
d60483ef99
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -157,6 +157,7 @@ TargetLowering::TargetLowering(TargetMachine &tm)
|
||||
SchedPreferenceInfo = SchedulingForLatency;
|
||||
JumpBufSize = 0;
|
||||
JumpBufAlignment = 0;
|
||||
IfCvtBlockSizeLimit = 2;
|
||||
|
||||
InitLibcallNames(LibcallRoutineNames);
|
||||
InitCmpLibcallCCs(CmpLibcallCCs);
|
||||
|
Loading…
x
Reference in New Issue
Block a user