[PATCH] D133386: [nfc] Refactor SlotIndex::getInstrDistance to better reflect actual functionality
Aiden Grossman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 7 02:21:02 PDT 2022
aidengrossman updated this revision to Diff 458391.
aidengrossman added a comment.
Make documentation message for `getApproxInstrDistance` more vague rather
than trying to list out exact conditions.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133386/new/
https://reviews.llvm.org/D133386
Files:
llvm/include/llvm/CodeGen/SlotIndexes.h
llvm/lib/CodeGen/RegAllocGreedy.cpp
Index: llvm/lib/CodeGen/RegAllocGreedy.cpp
===================================================================
--- llvm/lib/CodeGen/RegAllocGreedy.cpp
+++ llvm/lib/CodeGen/RegAllocGreedy.cpp
@@ -327,12 +327,12 @@
// are singly defined, this produces optimal coloring in the absence of
// global interference and other constraints.
if (!ReverseLocalAssignment)
- Prio = LI.beginIndex().getInstrDistance(Indexes->getLastIndex());
+ Prio = LI.beginIndex().getApproxInstrDistance(Indexes->getLastIndex());
else {
// Allocating bottom up may allow many short LRGs to be assigned first
// to one of the cheap registers. This could be much faster for very
// large blocks on targets with many physical registers.
- Prio = Indexes->getZeroIndex().getInstrDistance(LI.endIndex());
+ Prio = Indexes->getZeroIndex().getApproxInstrDistance(LI.endIndex());
}
} else {
// Allocate global and split ranges in long->short order. Long ranges that
Index: llvm/include/llvm/CodeGen/SlotIndexes.h
===================================================================
--- llvm/include/llvm/CodeGen/SlotIndexes.h
+++ llvm/include/llvm/CodeGen/SlotIndexes.h
@@ -215,8 +215,12 @@
}
/// 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 {
+ /// slots on the same instruction have zero distance, assuming that the slot
+ /// indices are packed as densely as possible. There are normally gaps
+ /// between instructions, so this assumption often doesn't hold. This
+ /// results in this function often returning a value greater than the actual
+ /// instruction distance.
+ int getApproxInstrDistance(SlotIndex other) const {
return (other.listEntry()->getIndex() - listEntry()->getIndex())
/ Slot_Count;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133386.458391.patch
Type: text/x-patch
Size: 1960 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220907/4f322ce3/attachment.bin>
More information about the llvm-commits
mailing list