| ##=== TEST.dsgraph.report - Report description for dsgraph -----*- perl -*-===## |
| # |
| # This file defines a report to be generated for the dsgraph test. |
| # |
| ##===----------------------------------------------------------------------===## |
| |
| # Sort numerically, not textually... |
| $SortNumeric = 1; |
| |
| # Helper function |
| sub Ratio { |
| my ($Cols, $Col) = @_; |
| if ($Cols->[$Col-2] ne "*" and |
| $Cols->[$Col-2] != "0") { |
| return $Cols->[$Col-1]/$Cols->[$Col-2]; |
| } else { |
| return "n/a"; |
| } |
| } |
| |
| sub FormatSize { |
| my $Size = shift; |
| if ($Size > 10*1024*1024) { |
| return (int $Size*10 / (1024*1024))/10 . "MB"; |
| } elsif ($Size > 10*1024) { |
| return (int $Size / 1024); |
| } else { |
| return $Size . "B"; |
| } |
| } |
| |
| sub NoStar { |
| return "0" if ($_[0] eq '*'); |
| return $_[0]; |
| } |
| |
| sub NoCallNodes { |
| $_[0] =~ m/([0-9]+)\+/; |
| return $1; |
| } |
| |
| # Sort by total analyze time |
| $SortCol = 7; |
| |
| # Sort in descending order |
| $SortReverse = 1; |
| |
| # For latex output, limit benchmarks and rename as appropriate |
| @LatexRowMapOrder = ( |
| 'MultiSource/Olden/treeadd/treeadd' => 'Olden-treeadd', |
| 'MultiSource/Olden/bisort/bisort' => 'Olden-bisort', |
| 'MultiSource/Olden/mst/mst' => 'Olden-mst', |
| 'MultiSource/Olden/perimeter/perimeter' => 'Olden-perimeter', |
| 'MultiSource/Olden/health/health' => 'Olden-health', |
| 'MultiSource/Olden/tsp/tsp' => 'Olden-tsp', |
| 'MultiSource/Olden/power/power' => 'Olden-power', |
| 'MultiSource/Olden/em3d/em3d' => 'Olden-em3d', |
| 'MultiSource/Olden/voronoi/voronoi' => 'Olden-voronoi', |
| 'MultiSource/Olden/bh/bh' => 'Olden-bh', |
| '-' => '-', |
| 'MultiSource/Ptrdist/anagram/anagram' => 'ptrdist-anagram', |
| 'MultiSource/Ptrdist/ks/ks' => 'ptrdist-ks', |
| 'MultiSource/Ptrdist/ft/ft' => 'ptrdist-ft', |
| 'MultiSource/Ptrdist/yacr2/yacr2' => 'ptrdist-yacr2', |
| 'MultiSource/Ptrdist/bc/bc' => 'ptrdist-bc', |
| '-' => '-', |
| 'External/SPEC/CFP2000/179.art/179.art' => '179.art', |
| 'External/SPEC/CFP2000/183.equake/183.equake' => '183.equake', |
| 'External/SPEC/CINT2000/181.mcf/181.mcf' => '181.mcf', |
| 'External/SPEC/CINT2000/256.bzip2/256.bzip2' => '256.bzip2', |
| 'External/SPEC/CINT2000/164.gzip/164.gzip' => '164.gzip', |
| 'External/SPEC/CINT2000/197.parser/197.parser' => '197.parser', |
| 'External/SPEC/CFP2000/188.ammp/188.ammp' => '188.ammp', |
| 'External/SPEC/CINT2000/175.vpr/175.vpr' => '175.vpr', |
| 'External/SPEC/CINT2000/300.twolf/300.twolf' => '300.twolf', |
| 'External/SPEC/CINT2000/186.crafty/186.crafty' => '186.crafty', |
| 'External/SPEC/CINT2000/255.vortex/255.vortex' => '255.vortex', |
| 'External/SPEC/CINT2000/254.gap/254.gap' => '254.gap', |
| '-' => '-', |
| 'MultiSource/sgefa/sgefa' => 'sgefa', |
| 'MultiSource/sim/sim' => 'sim', |
| 'MultiSource/Burg/burg' => 'burg', |
| 'MultiSource/gnuchess/gnuchess' => 'gnuchess', |
| 'MultiSource/larn/larn' => 'larn', |
| 'MultiSource/flex/flex' => 'flex', |
| 'MultiSource/moria/moria' => 'moria', |
| 'MultiSource/povray31/povray31' => 'povray31' |
| ); |
| |
| @LatexColumns = (1, 27, 19, # LOC, #MemInstrs, MaxSCC |
| 4, 5, 6, 7, # Execution times |
| 11, # Memory BU |
| 12, # Memory TD |
| 16, 17, # Total, Max Nodes |
| 15); # NumFolded |
| |
| # Specify how to format columns nicely for printing... |
| %LatexColumnFormat = ( |
| 11 => \&FormatSize, |
| 12 => \&FormatSize, |
| 15 => \&NoStar, |
| 16 => \&NoCallNodes |
| ); |
| |
| @Graphs = (["scatter", "timeVmem.txt", 27, 7], |
| ["scatter", "timeVloc.txt", 1, 7]); |
| |
| |
| # These are the columns for the report. The first entry is the header for the |
| # column, the second is the regex to use to match the value. Empty list create |
| # seperators, and closures may be put in for custom processing. |
| ( |
| # Name |
| ["Name:" , '\'([^\']+)\' Program'], |
| ["LOC:" , 'LOC: *([0-9]+)'], |
| [], |
| # Times |
| ["Anlyz:", '([0-9.]+) \([^)]+\)[ 0-9]+TOTAL'], |
| ["LocTm:", '([0-9.]+) \([^)]+\)[ 0-9]+Local'], |
| ["BUTim:", '([0-9.]+) \([^)]+\)[ 0-9]+Bottom'], |
| ["TDTim:", '([0-9.]+) \([^)]+\)[ 0-9]+Top'], |
| ["SumTm:", sub { return SumCols(@_, 3); }], |
| ["SteTm:", '([0-9.]+) \([^)]+\)[ 0-9]+Steensgaard'], |
| [], |
| # Sizes |
| ["LcSize:" , '([0-9]+) Local'], |
| ["BUSize:" , '([0-9]+) Bottom-up'], |
| ["TDSize:" , '([0-9]+) Top-down'], |
| ["BUTDSz:" , sub { return SumCols(@_, 2); }], |
| [], |
| # Misc stuff |
| ["NumFold" , '([0-9]+).*Number of folded nodes '], |
| ["NumNodes", 'Graphs contain \\[([0-9+]+)\\] nodes total'], |
| ["MaxSz" , '([0-9]+).*Maximum graph size'], |
| ["GlobGr" , '\\.GlobalsGraph\\.dot\'... \\[([0-9+]+)\\]'], |
| ["MaxSCC" , '([0-9]+).*Maximum SCC Size in Call Graph'], |
| [], |
| ["Loads" , '([0-9]+).*Number of Load insts'], |
| ["Store" , '([0-9]+).*Number of Store insts'], |
| ["Calls" , '([0-9]+).*Number of Call insts'], |
| ["Allca" , '([0-9]+).*Number of Alloca insts'], |
| ["Mallc" , '([0-9]+).*Number of Malloc insts'], |
| ["GEP" , '([0-9]+).*Number of GetElementPtr insts'], |
| ["Sum" , sub { return SumCols(@_, 6); }], |
| [], |
| ["num/ind" , '([0-9]+).*number of indirect call sites'], |
| ["indcallee",'([0-9]+).*number of callee functions at'], |
| ["ratio" , \&Ratio], # indcallee / num/ind |
| [] |
| ); |