aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2008-06-23 23:25:37 +0000
committerOwen Anderson <resistor@mac.com>2008-06-23 23:25:37 +0000
commitc78efcc10a330d6cd417eb43453cf076967749bc (patch)
treee03e810aaab543669e0f64ae8de04b288f997555
parent265c21a1d79f99fe2c1ca2db59834e2541521b50 (diff)
downloadexternal_llvm-c78efcc10a330d6cd417eb43453cf076967749bc.zip
external_llvm-c78efcc10a330d6cd417eb43453cf076967749bc.tar.gz
external_llvm-c78efcc10a330d6cd417eb43453cf076967749bc.tar.bz2
Add getScaledIntervalSize, which gives a measure of the size of an interval that is independent of the scaling of
the function due to empty index slots. This is suitable for use in backend heuristics that need to reason about the density of an interval. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52652 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/CodeGen/LiveIntervalAnalysis.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h
index 473cc8e..92c3b84 100644
--- a/include/llvm/CodeGen/LiveIntervalAnalysis.h
+++ b/include/llvm/CodeGen/LiveIntervalAnalysis.h
@@ -169,6 +169,15 @@ namespace llvm {
return MBB2IdxMap[MBBNo].second;
}
+ /// getIntervalSize - get the size of an interval in "units,"
+ /// where every function is composed of one thousand units. This
+ /// measure scales properly with empty index slots in the function.
+ unsigned getScaledIntervalSize(LiveInterval& I) {
+ // Factor of 250 comes from 1000 units per function divided
+ // by four slots per instruction.
+ return (250 * I.getSize()) / i2miMap_.size();
+ }
+
/// getMBBFromIndex - given an index in any instruction of an
/// MBB return a pointer the MBB
MachineBasicBlock* getMBBFromIndex(unsigned index) const {