diff options
| author | Andrew Trick <atrick@apple.com> | 2013-07-30 19:59:19 +0000 |
|---|---|---|
| committer | Andrew Trick <atrick@apple.com> | 2013-07-30 19:59:19 +0000 |
| commit | c7934b3e37bbe353579987407c7cd7b5f4d38787 (patch) | |
| tree | b12a6be3ef6ef3adf2f297e8c40733eb15582031 /llvm | |
| parent | 9b866051e5bee2aa8e6b65392bc58f0311c3b377 (diff) | |
| download | bcm5719-llvm-c7934b3e37bbe353579987407c7cd7b5f4d38787.tar.gz bcm5719-llvm-c7934b3e37bbe353579987407c7cd7b5f4d38787.zip | |
Down-scale slot index distance to save bits.
llvm-svn: 187438
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/CodeGen/SlotIndexes.h | 7 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/RegAllocGreedy.cpp | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/llvm/include/llvm/CodeGen/SlotIndexes.h b/llvm/include/llvm/CodeGen/SlotIndexes.h index 1c7bdb2e586..984796af864 100644 --- a/llvm/include/llvm/CodeGen/SlotIndexes.h +++ b/llvm/include/llvm/CodeGen/SlotIndexes.h @@ -218,6 +218,13 @@ namespace llvm { return other.getIndex() - getIndex(); } + /// Return the scaled distance from this index to the given one, where all + /// slots on the same instruction have zero distance. + int getInstrDistance(SlotIndex other) const { + return (other.listEntry()->getIndex() - listEntry()->getIndex()) + / Slot_Count; + } + /// isBlock - Returns true if this is a block boundary slot. bool isBlock() const { return getSlot() == Slot_Block; } diff --git a/llvm/lib/CodeGen/RegAllocGreedy.cpp b/llvm/lib/CodeGen/RegAllocGreedy.cpp index 87b11a5f51c..f9e363b9f3a 100644 --- a/llvm/lib/CodeGen/RegAllocGreedy.cpp +++ b/llvm/lib/CodeGen/RegAllocGreedy.cpp @@ -419,7 +419,7 @@ void RAGreedy::enqueue(LiveInterval *LI) { // Allocate original local ranges in linear instruction order. Since they // are singly defined, this produces optimal coloring in the absence of // global interference and other constraints. - Prio = LI->beginIndex().distance(Indexes->getLastIndex()); + Prio = LI->beginIndex().getInstrDistance(Indexes->getLastIndex()); } else { // Allocate global and split ranges in long->short order. Long ranges that |

