Safe Haskell | Safe-Infered |
---|
Carries interesting info for debugging / profiling of the graph coloring register allocator.
- data RegAllocStats statics instr
- = RegAllocStatsStart {
- raLiveCmm :: [LiveCmmDecl statics instr]
- raGraph :: Graph VirtualReg RegClass RealReg
- raSpillCosts :: SpillCostInfo
- | RegAllocStatsSpill {
- raCode :: [LiveCmmDecl statics instr]
- raGraph :: Graph VirtualReg RegClass RealReg
- raCoalesced :: UniqFM VirtualReg
- raSpillStats :: SpillStats
- raSpillCosts :: SpillCostInfo
- raSpilled :: [LiveCmmDecl statics instr]
- | RegAllocStatsColored {
- raCode :: [LiveCmmDecl statics instr]
- raGraph :: Graph VirtualReg RegClass RealReg
- raGraphColored :: Graph VirtualReg RegClass RealReg
- raCoalesced :: UniqFM VirtualReg
- raCodeCoalesced :: [LiveCmmDecl statics instr]
- raPatched :: [LiveCmmDecl statics instr]
- raSpillClean :: [LiveCmmDecl statics instr]
- raFinal :: [NatCmmDecl statics instr]
- raSRMs :: (Int, Int, Int)
- = RegAllocStatsStart {
- pprStats :: [RegAllocStats statics instr] -> Graph VirtualReg RegClass RealReg -> SDoc
- pprStatsSpills :: [RegAllocStats statics instr] -> SDoc
- pprStatsLifetimes :: [RegAllocStats statics instr] -> SDoc
- pprStatsConflict :: [RegAllocStats statics instr] -> SDoc
- pprStatsLifeConflict :: [RegAllocStats statics instr] -> Graph VirtualReg RegClass RealReg -> SDoc
- countSRMs :: Instruction instr => LiveCmmDecl statics instr -> (Int, Int, Int)
- addSRM :: (Num t2, Num t1, Num t) => (t, t1, t2) -> (t, t1, t2) -> (t, t1, t2)
Documentation
data RegAllocStats statics 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 |
|
(PlatformOutputable statics, PlatformOutputable instr) => PlatformOutputable (RegAllocStats statics instr) |
pprStats :: [RegAllocStats statics instr] -> Graph VirtualReg RegClass RealReg -> SDocSource
Do all the different analysis on this list of RegAllocStats
pprStatsSpills :: [RegAllocStats statics instr] -> SDocSource
Dump a table of how many spill loads / stores were inserted for each vreg.
pprStatsLifetimes :: [RegAllocStats statics instr] -> SDocSource
Dump a table of how long vregs tend to live for in the initial code.
pprStatsConflict :: [RegAllocStats statics instr] -> SDocSource
Dump a table of how many conflicts vregs tend to have in the initial code.
:: [RegAllocStats statics 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 => LiveCmmDecl statics instr -> (Int, Int, Int)Source
Count spillreloadreg-reg moves. Lets us see how well the register allocator has done.