mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-04 22:28:27 +00:00
- Allow target to specify when is register pressure "too high". In most cases,
it's too late to start backing off aggressive latency scheduling when most of the registers are in use so the threshold should be a bit tighter. - Correctly handle live out's and extract_subreg etc. - Enable register pressure aware scheduling by default for hybrid scheduler. For ARM, this is almost always a win on # of instructions. It's runtime neutral for most of the tests. But for some kernels with high register pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by 54 and sped up by 20%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109279 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -186,6 +186,14 @@ public:
|
||||
return RepRegClassCostForVT[VT.getSimpleVT().SimpleTy];
|
||||
}
|
||||
|
||||
/// getRegPressureLimit - Return the register pressure "high water mark" for
|
||||
/// the specific register class. The scheduler is in high register pressure
|
||||
/// mode (for the specific register class) if it goes over the limit.
|
||||
virtual unsigned getRegPressureLimit(const TargetRegisterClass *RC,
|
||||
MachineFunction &MF) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// isTypeLegal - Return true if the target has native support for the
|
||||
/// specified value type. This means that it has a register that directly
|
||||
/// holds it without promotions or expansions.
|
||||
|
Reference in New Issue
Block a user