From 72e04099c6f3d365b36b48834c8cd2f87efc00c2 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Mon, 23 Jun 2008 23:25:37 +0000 Subject: [PATCH] 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 --- include/llvm/CodeGen/LiveIntervalAnalysis.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/llvm/CodeGen/LiveIntervalAnalysis.h b/include/llvm/CodeGen/LiveIntervalAnalysis.h index 473cc8e0996..92c3b844c9c 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 { -- 2.34.1