Safe Haskell | None |
---|
- type SpillCostRecord = (VirtualReg, Int, Int, Int)
- plusSpillCostRecord :: SpillCostRecord -> SpillCostRecord -> SpillCostRecord
- pprSpillCostRecord :: (VirtualReg -> RegClass) -> (Reg -> SDoc) -> Graph VirtualReg RegClass RealReg -> SpillCostRecord -> SDoc
- type SpillCostInfo = UniqFM SpillCostRecord
- zeroSpillCostInfo :: SpillCostInfo
- plusSpillCostInfo :: SpillCostInfo -> SpillCostInfo -> SpillCostInfo
- slurpSpillCostInfo :: (Outputable instr, Instruction instr) => Platform -> LiveCmmDecl statics instr -> SpillCostInfo
- chooseSpill :: SpillCostInfo -> Graph VirtualReg RegClass RealReg -> VirtualReg
- lifeMapFromSpillCostInfo :: SpillCostInfo -> UniqFM (VirtualReg, Int)
Documentation
type SpillCostRecord = (VirtualReg, Int, Int, Int)Source
Records the expected cost to spill some regster.
plusSpillCostRecord :: SpillCostRecord -> SpillCostRecord -> SpillCostRecordSource
Add two spill cost records.
pprSpillCostRecord :: (VirtualReg -> RegClass) -> (Reg -> SDoc) -> Graph VirtualReg RegClass RealReg -> SpillCostRecord -> SDocSource
Show a spill cost record, including the degree from the graph and final calulated spill cost.
type SpillCostInfo = UniqFM SpillCostRecordSource
Map of SpillCostRecord
zeroSpillCostInfo :: SpillCostInfoSource
An empty map of spill costs.
plusSpillCostInfo :: SpillCostInfo -> SpillCostInfo -> SpillCostInfoSource
Add two spill cost infos.
slurpSpillCostInfo :: (Outputable instr, Instruction instr) => Platform -> LiveCmmDecl statics instr -> SpillCostInfoSource
Slurp out information used for determining spill costs.
For each vreg, the number of times it was written to, read from, and the number of instructions it was live on entry to (lifetime)
chooseSpill :: SpillCostInfo -> Graph VirtualReg RegClass RealReg -> VirtualRegSource
Choose a node to spill from this graph
lifeMapFromSpillCostInfo :: SpillCostInfo -> UniqFM (VirtualReg, Int)Source
Extract a map of register lifetimes from a SpillCostInfo
.