mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-30 20:24:32 +00:00
Code refactoring: pull SchedPreference enum from TargetLowering.h to TargetMachine.h and put it in its own namespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104147 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -97,11 +97,6 @@ public:
|
|||||||
ZeroOrNegativeOneBooleanContent // All bits equal to bit 0.
|
ZeroOrNegativeOneBooleanContent // All bits equal to bit 0.
|
||||||
};
|
};
|
||||||
|
|
||||||
enum SchedPreference {
|
|
||||||
SchedulingForLatency, // Scheduling for shortest total latency.
|
|
||||||
SchedulingForRegPressure // Scheduling for lowest register pressure.
|
|
||||||
};
|
|
||||||
|
|
||||||
/// NOTE: The constructor takes ownership of TLOF.
|
/// NOTE: The constructor takes ownership of TLOF.
|
||||||
explicit TargetLowering(const TargetMachine &TM,
|
explicit TargetLowering(const TargetMachine &TM,
|
||||||
const TargetLoweringObjectFile *TLOF);
|
const TargetLoweringObjectFile *TLOF);
|
||||||
@ -150,7 +145,7 @@ public:
|
|||||||
BooleanContent getBooleanContents() const { return BooleanContents;}
|
BooleanContent getBooleanContents() const { return BooleanContents;}
|
||||||
|
|
||||||
/// getSchedulingPreference - Return target scheduling preference.
|
/// getSchedulingPreference - Return target scheduling preference.
|
||||||
SchedPreference getSchedulingPreference() const {
|
Sched::Preference getSchedulingPreference() const {
|
||||||
return SchedPreferenceInfo;
|
return SchedPreferenceInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -906,7 +901,7 @@ protected:
|
|||||||
void setBooleanContents(BooleanContent Ty) { BooleanContents = Ty; }
|
void setBooleanContents(BooleanContent Ty) { BooleanContents = Ty; }
|
||||||
|
|
||||||
/// setSchedulingPreference - Specify the target scheduling preference.
|
/// setSchedulingPreference - Specify the target scheduling preference.
|
||||||
void setSchedulingPreference(SchedPreference Pref) {
|
void setSchedulingPreference(Sched::Preference Pref) {
|
||||||
SchedPreferenceInfo = Pref;
|
SchedPreferenceInfo = Pref;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1521,7 +1516,7 @@ private:
|
|||||||
|
|
||||||
/// SchedPreferenceInfo - The target scheduling preference: shortest possible
|
/// SchedPreferenceInfo - The target scheduling preference: shortest possible
|
||||||
/// total cycles or lowest register usage.
|
/// total cycles or lowest register usage.
|
||||||
SchedPreference SchedPreferenceInfo;
|
Sched::Preference SchedPreferenceInfo;
|
||||||
|
|
||||||
/// JumpBufSize - The size, in bytes, of the target's jmp_buf buffers
|
/// JumpBufSize - The size, in bytes, of the target's jmp_buf buffers
|
||||||
unsigned JumpBufSize;
|
unsigned JumpBufSize;
|
||||||
|
@ -70,6 +70,13 @@ namespace CodeGenOpt {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace Sched {
|
||||||
|
enum Preference {
|
||||||
|
Latency, // Scheduling for shortest total latency.
|
||||||
|
RegPressure // Scheduling for lowest register pressure.
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
///
|
///
|
||||||
/// TargetMachine - Primary interface to the complete machine description for
|
/// TargetMachine - Primary interface to the complete machine description for
|
||||||
|
@ -132,10 +132,10 @@ namespace llvm {
|
|||||||
|
|
||||||
if (OptLevel == CodeGenOpt::None)
|
if (OptLevel == CodeGenOpt::None)
|
||||||
return createFastDAGScheduler(IS, OptLevel);
|
return createFastDAGScheduler(IS, OptLevel);
|
||||||
if (TLI.getSchedulingPreference() == TargetLowering::SchedulingForLatency)
|
if (TLI.getSchedulingPreference() == Sched::Latency)
|
||||||
return createTDListDAGScheduler(IS, OptLevel);
|
return createTDListDAGScheduler(IS, OptLevel);
|
||||||
assert(TLI.getSchedulingPreference() ==
|
assert(TLI.getSchedulingPreference() == Sched::RegPressure &&
|
||||||
TargetLowering::SchedulingForRegPressure && "Unknown sched type!");
|
"Unknown sched type!");
|
||||||
return createBURRListDAGScheduler(IS, OptLevel);
|
return createBURRListDAGScheduler(IS, OptLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -543,7 +543,7 @@ TargetLowering::TargetLowering(const TargetMachine &tm,
|
|||||||
ExceptionPointerRegister = 0;
|
ExceptionPointerRegister = 0;
|
||||||
ExceptionSelectorRegister = 0;
|
ExceptionSelectorRegister = 0;
|
||||||
BooleanContents = UndefinedBooleanContent;
|
BooleanContents = UndefinedBooleanContent;
|
||||||
SchedPreferenceInfo = SchedulingForLatency;
|
SchedPreferenceInfo = Sched::Latency;
|
||||||
JumpBufSize = 0;
|
JumpBufSize = 0;
|
||||||
JumpBufAlignment = 0;
|
JumpBufAlignment = 0;
|
||||||
IfCvtBlockSizeLimit = 2;
|
IfCvtBlockSizeLimit = 2;
|
||||||
|
@ -466,7 +466,7 @@ ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
|
|||||||
setTargetDAGCombine(ISD::MUL);
|
setTargetDAGCombine(ISD::MUL);
|
||||||
|
|
||||||
setStackPointerRegisterToSaveRestore(ARM::SP);
|
setStackPointerRegisterToSaveRestore(ARM::SP);
|
||||||
setSchedulingPreference(SchedulingForRegPressure);
|
setSchedulingPreference(Sched::RegPressure);
|
||||||
|
|
||||||
// FIXME: If-converter should use instruction latency to determine
|
// FIXME: If-converter should use instruction latency to determine
|
||||||
// profitability rather than relying on fixed limits.
|
// profitability rather than relying on fixed limits.
|
||||||
|
@ -485,7 +485,7 @@ SPUTargetLowering::SPUTargetLowering(SPUTargetMachine &TM)
|
|||||||
// Set pre-RA register scheduler default to BURR, which produces slightly
|
// Set pre-RA register scheduler default to BURR, which produces slightly
|
||||||
// better code than the default (could also be TDRR, but TargetLowering.h
|
// better code than the default (could also be TDRR, but TargetLowering.h
|
||||||
// needs a mod to support that model):
|
// needs a mod to support that model):
|
||||||
setSchedulingPreference(SchedulingForRegPressure);
|
setSchedulingPreference(Sched::RegPressure);
|
||||||
}
|
}
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
|
@ -83,7 +83,7 @@ MSP430TargetLowering::MSP430TargetLowering(MSP430TargetMachine &tm) :
|
|||||||
|
|
||||||
setStackPointerRegisterToSaveRestore(MSP430::SPW);
|
setStackPointerRegisterToSaveRestore(MSP430::SPW);
|
||||||
setBooleanContents(ZeroOrOneBooleanContent);
|
setBooleanContents(ZeroOrOneBooleanContent);
|
||||||
setSchedulingPreference(SchedulingForLatency);
|
setSchedulingPreference(Sched::Latency);
|
||||||
|
|
||||||
// We have post-incremented loads / stores.
|
// We have post-incremented loads / stores.
|
||||||
setIndexedLoadAction(ISD::POST_INC, MVT::i8, Legal);
|
setIndexedLoadAction(ISD::POST_INC, MVT::i8, Legal);
|
||||||
|
@ -81,7 +81,7 @@ SystemZTargetLowering::SystemZTargetLowering(SystemZTargetMachine &tm) :
|
|||||||
// LLVM's current latency-oriented scheduler can't handle physreg definitions
|
// LLVM's current latency-oriented scheduler can't handle physreg definitions
|
||||||
// such as SystemZ has with PSW, so set this to the register-pressure
|
// such as SystemZ has with PSW, so set this to the register-pressure
|
||||||
// scheduler, because it can.
|
// scheduler, because it can.
|
||||||
setSchedulingPreference(SchedulingForRegPressure);
|
setSchedulingPreference(Sched::RegPressure);
|
||||||
|
|
||||||
setBooleanContents(ZeroOrOneBooleanContent);
|
setBooleanContents(ZeroOrOneBooleanContent);
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ X86TargetLowering::X86TargetLowering(X86TargetMachine &TM)
|
|||||||
// X86 is weird, it always uses i8 for shift amounts and setcc results.
|
// X86 is weird, it always uses i8 for shift amounts and setcc results.
|
||||||
setShiftAmountType(MVT::i8);
|
setShiftAmountType(MVT::i8);
|
||||||
setBooleanContents(ZeroOrOneBooleanContent);
|
setBooleanContents(ZeroOrOneBooleanContent);
|
||||||
setSchedulingPreference(SchedulingForRegPressure);
|
setSchedulingPreference(Sched::RegPressure);
|
||||||
setStackPointerRegisterToSaveRestore(X86StackPtr);
|
setStackPointerRegisterToSaveRestore(X86StackPtr);
|
||||||
|
|
||||||
if (Subtarget->isTargetDarwin()) {
|
if (Subtarget->isTargetDarwin()) {
|
||||||
|
@ -80,7 +80,7 @@ XCoreTargetLowering::XCoreTargetLowering(XCoreTargetMachine &XTM)
|
|||||||
setShiftAmountType(MVT::i32);
|
setShiftAmountType(MVT::i32);
|
||||||
setStackPointerRegisterToSaveRestore(XCore::SP);
|
setStackPointerRegisterToSaveRestore(XCore::SP);
|
||||||
|
|
||||||
setSchedulingPreference(SchedulingForRegPressure);
|
setSchedulingPreference(Sched::RegPressure);
|
||||||
|
|
||||||
// Use i32 for setcc operations results (slt, sgt, ...).
|
// Use i32 for setcc operations results (slt, sgt, ...).
|
||||||
setBooleanContents(ZeroOrOneBooleanContent);
|
setBooleanContents(ZeroOrOneBooleanContent);
|
||||||
|
Reference in New Issue
Block a user