From 2ba528b3a75955c960347e5b5b28ae74d5a81909 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 3 Feb 2007 01:34:13 +0000 Subject: [PATCH] switch the sched unit map over to use a DenseMap instead of std::map. This speeds up isel as a whole time by 2.6%. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33810 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/CodeGen/MachinePassRegistry.h | 1 - include/llvm/CodeGen/ScheduleDAG.h | 5 +++-- lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp | 2 +- lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 10 +++++----- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/llvm/CodeGen/MachinePassRegistry.h b/include/llvm/CodeGen/MachinePassRegistry.h index 64d364e224c..4bb34b02e57 100644 --- a/include/llvm/CodeGen/MachinePassRegistry.h +++ b/include/llvm/CodeGen/MachinePassRegistry.h @@ -19,7 +19,6 @@ #define LLVM_CODEGEN_MACHINEPASSREGISTRY_H #include "llvm/CodeGen/Passes.h" -#include "llvm/CodeGen/ScheduleDAG.h" #include "llvm/Support/CommandLine.h" namespace llvm { diff --git a/include/llvm/CodeGen/ScheduleDAG.h b/include/llvm/CodeGen/ScheduleDAG.h index 86e08fe9d9e..e205306fa7d 100644 --- a/include/llvm/CodeGen/ScheduleDAG.h +++ b/include/llvm/CodeGen/ScheduleDAG.h @@ -16,6 +16,7 @@ #define LLVM_CODEGEN_SCHEDULEDAG_H #include "llvm/CodeGen/SelectionDAG.h" +#include "llvm/ADT/DenseMap.h" #include "llvm/ADT/SmallSet.h" namespace llvm { @@ -153,7 +154,7 @@ namespace llvm { public: virtual ~SchedulingPriorityQueue() {} - virtual void initNodes(std::map &SUMap, + virtual void initNodes(DenseMap &SUMap, std::vector &SUnits) = 0; virtual void releaseState() = 0; @@ -180,7 +181,7 @@ namespace llvm { MachineConstantPool *ConstPool; // Target constant pool std::vector Sequence; // The schedule. Null SUnit*'s // represent noop instructions. - std::map SUnitMap; // SDNode to SUnit mapping (n -> 1). + DenseMap SUnitMap; // SDNode to SUnit mapping (n -> 1). std::vector SUnits; // The scheduling units. SmallSet CommuteSet; // Nodes the should be commuted. diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp index d21ef34c645..dbbf3f94fb7 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp @@ -328,7 +328,7 @@ public: LatencyPriorityQueue() : Queue(latency_sort(this)) { } - void initNodes(std::map &sumap, + void initNodes(DenseMap &sumap, std::vector &sunits) { SUnits = &sunits; // Calculate node priorities. diff --git a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index 2d1e6a3df92..66edfbce4e9 100644 --- a/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -430,7 +430,7 @@ namespace { RegReductionPriorityQueue() : Queue(SF(this)) {} - virtual void initNodes(std::map &sumap, + virtual void initNodes(DenseMap &sumap, std::vector &sunits) {} virtual void releaseState() {} @@ -464,7 +464,7 @@ namespace { class VISIBILITY_HIDDEN BURegReductionPriorityQueue : public RegReductionPriorityQueue { // SUnitMap SDNode to SUnit mapping (n -> 1). - std::map *SUnitMap; + DenseMap *SUnitMap; // SUnits - The SUnits for the current graph. const std::vector *SUnits; @@ -477,7 +477,7 @@ namespace { BURegReductionPriorityQueue(const TargetInstrInfo *tii) : TII(tii) {} - void initNodes(std::map &sumap, + void initNodes(DenseMap &sumap, std::vector &sunits) { SUnitMap = &sumap; SUnits = &sunits; @@ -541,7 +541,7 @@ namespace { template class TDRegReductionPriorityQueue : public RegReductionPriorityQueue { // SUnitMap SDNode to SUnit mapping (n -> 1). - std::map *SUnitMap; + DenseMap *SUnitMap; // SUnits - The SUnits for the current graph. const std::vector *SUnits; @@ -552,7 +552,7 @@ namespace { public: TDRegReductionPriorityQueue() {} - void initNodes(std::map &sumap, + void initNodes(DenseMap &sumap, std::vector &sunits) { SUnitMap = &sumap; SUnits = &sunits;