diff options
author | Dan Gohman <gohman@apple.com> | 2008-09-18 16:26:26 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2008-09-18 16:26:26 +0000 |
commit | ee2e4035450a2d0d6159831e9b9cfa3ffd8da8bc (patch) | |
tree | d60a7b09fcdce911ed3b71b5fe150bfb4ee6c61e /include/llvm | |
parent | bc4707a2554ac04ba006bf70035e7bc7270236a9 (diff) | |
download | llvm-ee2e4035450a2d0d6159831e9b9cfa3ffd8da8bc.tar.gz llvm-ee2e4035450a2d0d6159831e9b9cfa3ffd8da8bc.tar.bz2 llvm-ee2e4035450a2d0d6159831e9b9cfa3ffd8da8bc.tar.xz |
Add a new "fast" scheduler. This is currently basically just a
copy of the BURRList scheduler, but with several parts ripped
out, such as backtracking, online topological sort maintenance
(needed by backtracking), the priority queue, and Sethi-Ullman
number computation and maintenance (needed by the priority
queue). As a result of all this, it generates somewhat lower
quality code, but that's its tradeoff for running about 30%
faster than list-burr in -fast mode in many cases.
This is somewhat experimental. Moving forward, major pieces of
this can be refactored with pieces in common with
ScheduleDAGRRList.cpp.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56307 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/CodeGen/LinkAllCodegenComponents.h | 1 | ||||
-rw-r--r-- | include/llvm/CodeGen/ScheduleDAG.h | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/LinkAllCodegenComponents.h b/include/llvm/CodeGen/LinkAllCodegenComponents.h index ac2e9a4b9a..02e6ae371f 100644 --- a/include/llvm/CodeGen/LinkAllCodegenComponents.h +++ b/include/llvm/CodeGen/LinkAllCodegenComponents.h @@ -44,6 +44,7 @@ namespace { (void) llvm::createBURRListDAGScheduler(NULL, NULL, NULL, false); (void) llvm::createTDRRListDAGScheduler(NULL, NULL, NULL, false); (void) llvm::createTDListDAGScheduler(NULL, NULL, NULL, false); + (void) llvm::createFastDAGScheduler(NULL, NULL, NULL, false); (void) llvm::createDefaultScheduler(NULL, NULL, NULL, false); } diff --git a/include/llvm/CodeGen/ScheduleDAG.h b/include/llvm/CodeGen/ScheduleDAG.h index 01218ac997..950d32ba61 100644 --- a/include/llvm/CodeGen/ScheduleDAG.h +++ b/include/llvm/CodeGen/ScheduleDAG.h @@ -414,6 +414,13 @@ namespace llvm { MachineBasicBlock *BB, bool Fast); + /// createFastDAGScheduler - This creates a "fast" scheduler. + /// + ScheduleDAG *createFastDAGScheduler(SelectionDAGISel *IS, + SelectionDAG *DAG, + MachineBasicBlock *BB, + bool Fast); + /// createDefaultScheduler - This creates an instruction scheduler appropriate /// for the target. ScheduleDAG* createDefaultScheduler(SelectionDAGISel *IS, |