diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-05-20 06:13:19 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-05-20 06:13:19 +0000 |
commit | 15a16def6e70c8f7df1023da80ceb89887203b40 (patch) | |
tree | 8c2637a4d2816e5442916d246406ee41dfb3ced0 /include/llvm/CodeGen/SchedulerRegistry.h | |
parent | 761fd4c1d97977c16de9f0cf921056a37b906304 (diff) | |
download | llvm-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.h | 10 |
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, |