mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 22:23:10 +00:00
Add an ILP scheduler. This is a register pressure aware scheduler that's
appropriate for targets without detailed instruction iterineries. The scheduler schedules for increased instruction level parallelism in low register pressure situation; it schedules to reduce register pressure when the register pressure becomes high. On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2 by 16%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109300 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -78,12 +78,19 @@ ScheduleDAGSDNodes *createTDRRListDAGScheduler(SelectionDAGISel *IS,
|
||||
ScheduleDAGSDNodes *createSourceListDAGScheduler(SelectionDAGISel *IS,
|
||||
CodeGenOpt::Level OptLevel);
|
||||
|
||||
/// createHybridListDAGScheduler - This creates a bottom up hybrid register
|
||||
/// usage reduction list scheduler that make use of latency information to
|
||||
/// avoid stalls for long latency instructions.
|
||||
/// createHybridListDAGScheduler - This creates a bottom up register pressure
|
||||
/// aware list scheduler that make use of latency information to avoid stalls
|
||||
/// for long latency instructions in low register pressure mode. In high
|
||||
/// register pressure mode it schedules to reduce register pressure.
|
||||
ScheduleDAGSDNodes *createHybridListDAGScheduler(SelectionDAGISel *IS,
|
||||
CodeGenOpt::Level);
|
||||
|
||||
/// createILPListDAGScheduler - This creates a bottom up register pressure
|
||||
/// aware list scheduler that tries to increase instruction level parallelism
|
||||
/// in low register pressure mode. In high register pressure mode it schedules
|
||||
/// to reduce register pressure.
|
||||
ScheduleDAGSDNodes *createILPListDAGScheduler(SelectionDAGISel *IS,
|
||||
CodeGenOpt::Level);
|
||||
/// createTDListDAGScheduler - This creates a top-down list scheduler with
|
||||
/// a hazard recognizer.
|
||||
ScheduleDAGSDNodes *createTDListDAGScheduler(SelectionDAGISel *IS,
|
||||
|
||||
@@ -75,7 +75,8 @@ namespace Sched {
|
||||
None, // No preference
|
||||
Latency, // Scheduling for shortest total latency.
|
||||
RegPressure, // Scheduling for lowest register pressure.
|
||||
Hybrid // Scheduling for both latency and register pressure.
|
||||
Hybrid, // Scheduling for both latency and register pressure.
|
||||
ILP // Scheduling for ILP in low register pressure mode.
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user