Carries interesting info for debugging / profiling of the graph coloring register allocator.
- data RegAllocStats instr
- = RegAllocStatsStart {
- raLiveCmm :: [LiveCmmTop instr]
- raGraph :: Graph VirtualReg RegClass RealReg
- raSpillCosts :: SpillCostInfo
- | RegAllocStatsSpill {
- raCode :: [LiveCmmTop instr]
- raGraph :: Graph VirtualReg RegClass RealReg
- raCoalesced :: UniqFM VirtualReg
- raSpillStats :: SpillStats
- raSpillCosts :: SpillCostInfo
- raSpilled :: [LiveCmmTop instr]
- | RegAllocStatsColored {
- raCode :: [LiveCmmTop instr]
- raGraph :: Graph VirtualReg RegClass RealReg
- raGraphColored :: Graph VirtualReg RegClass RealReg
- raCoalesced :: UniqFM VirtualReg
- raCodeCoalesced :: [LiveCmmTop instr]
- raPatched :: [LiveCmmTop instr]
- raSpillClean :: [LiveCmmTop instr]
- raFinal :: [NatCmmTop instr]
- raSRMs :: (Int, Int, Int)
- = RegAllocStatsStart {
- pprStats :: [RegAllocStats instr] -> Graph VirtualReg RegClass RealReg -> SDoc
- pprStatsSpills :: [RegAllocStats instr] -> SDoc
- pprStatsLifetimes :: [RegAllocStats instr] -> SDoc
- pprStatsConflict :: [RegAllocStats instr] -> SDoc
- pprStatsLifeConflict :: [RegAllocStats instr] -> Graph VirtualReg RegClass RealReg -> SDoc
- countSRMs :: Instruction instr => LiveCmmTop instr -> (Int, Int, Int)
- addSRM :: (Num t1, Num t2, Num t) => (t, t1, t2) -> (t, t1, t2) -> (t, t1, t2)
Documentation
data RegAllocStats instr Source
RegAllocStatsStart | information to help choose which regs to spill |
| |
RegAllocStatsSpill | code with spill instructions added |
| |
RegAllocStatsColored | spill/reload/reg-reg moves present in this code |
|
Outputable instr => Outputable (RegAllocStats instr) |
pprStats :: [RegAllocStats instr] -> Graph VirtualReg RegClass RealReg -> SDocSource
Do all the different analysis on this list of RegAllocStats
pprStatsSpills :: [RegAllocStats instr] -> SDocSource
Dump a table of how many spill loads / stores were inserted for each vreg.
pprStatsLifetimes :: [RegAllocStats instr] -> SDocSource
Dump a table of how long vregs tend to live for in the initial code.
pprStatsConflict :: [RegAllocStats instr] -> SDocSource
Dump a table of how many conflicts vregs tend to have in the initial code.
:: [RegAllocStats instr] | |
-> Graph VirtualReg RegClass RealReg | global register conflict graph |
-> SDoc |
For every vreg, dump it's how many conflicts it has and its lifetime good for making a scatter plot.
countSRMs :: Instruction instr => LiveCmmTop instr -> (Int, Int, Int)Source
Count spillreloadreg-reg moves. Lets us see how well the register allocator has done.