summaryrefslogtreecommitdiff
path: root/include/llvm/CodeGen/SchedulerRegistry.h
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2010-05-20 06:13:19 +0000
committerEvan Cheng <evan.cheng@apple.com>2010-05-20 06:13:19 +0000
commit15a16def6e70c8f7df1023da80ceb89887203b40 (patch)
tree8c2637a4d2816e5442916d246406ee41dfb3ced0 /include/llvm/CodeGen/SchedulerRegistry.h
parent761fd4c1d97977c16de9f0cf921056a37b906304 (diff)
downloadllvm-15a16def6e70c8f7df1023da80ceb89887203b40.tar.gz
llvm-15a16def6e70c8f7df1023da80ceb89887203b40.tar.bz2
llvm-15a16def6e70c8f7df1023da80ceb89887203b40.tar.xz
Add a hybrid bottom up scheduler that reduce register usage while avoiding
pipeline stall. It's useful for targets like ARM cortex-a8. NEON has a lot of long latency instructions so a strict register pressure reduction scheduler does not work well. Early experiments show this speeds up some NEON loops by over 30%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104216 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/SchedulerRegistry.h')
-rw-r--r--include/llvm/CodeGen/SchedulerRegistry.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/SchedulerRegistry.h b/include/llvm/CodeGen/SchedulerRegistry.h
index cf3274f4a9..14c33e2187 100644
--- a/include/llvm/CodeGen/SchedulerRegistry.h
+++ b/include/llvm/CodeGen/SchedulerRegistry.h
@@ -73,11 +73,17 @@ ScheduleDAGSDNodes *createBURRListDAGScheduler(SelectionDAGISel *IS,
ScheduleDAGSDNodes *createTDRRListDAGScheduler(SelectionDAGISel *IS,
CodeGenOpt::Level OptLevel);
-/// createBURRListDAGScheduler - This creates a bottom up register usage
-/// reduction list scheduler that schedules in source code order when possible.
+/// createBURRListDAGScheduler - This creates a bottom up list scheduler that
+/// schedules nodes in source code order when possible.
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.
+ScheduleDAGSDNodes *createHybridListDAGScheduler(SelectionDAGISel *IS,
+ CodeGenOpt::Level);
+
/// createTDListDAGScheduler - This creates a top-down list scheduler with
/// a hazard recognizer.
ScheduleDAGSDNodes *createTDListDAGScheduler(SelectionDAGISel *IS,