##=== TEST.poolalloc.report - Report description for poolalloc -*- perl -*-===##
#
# This file defines a report to be generated for the pool allocator tests.
#
##===----------------------------------------------------------------------===##

# Sort by program name
$SortCol = 0;
$TrimRepeatedPrefix = 1;

sub Ratio {
  my ($Cols, $Col) = @_;
  if ($Cols->[$Col-1] ne "*" and $Cols->[$Col-4] ne "*" and
      $Cols->[$Col-1] != "0") {
    return sprintf "%1.3f", $Cols->[$Col-4]/$Cols->[$Col-1];
  } else {
    return "n/a";
  }
}

sub Sum {
  my ($Cols, $Col) = @_;
  if ($Cols->[$Col-1] ne "*" and $Cols->[$Col-2] ne "*") {
    return sprintf "%1.3f", $Cols->[$Col-2]+$Cols->[$Col-1];
  } else {
    return "n/a";
  }
}


sub FormatTime {
  my $Time = shift;
  if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) {
    $Time = sprintf("%7.3f", $1*60.0+$2);
  }
  return $Time;
}

@LatexColumns = (2, 3, 4, 5, 6, 7);

my $OLDEN     = 'MultiSource/Benchmarks/Olden';
my $FREEBENCH = 'MultiSource/Benchmarks/FreeBench';
my $PTRDIST   = 'MultiSource/Benchmarks/Ptrdist';

@LatexRowMapOrder = (
                     "$OLDEN/bh/bh"           => 'bh',
                     "$OLDEN/bisort/bisort"   => 'bisort',
                     "$OLDEN/em3d/em3d"       => 'em3d',
                     "$OLDEN/health/health"   => 'health',
                     "$OLDEN/mst/mst"         => 'mst',
                     "$OLDEN/perimeter/perimeter" => 'perimeter',
                     "$OLDEN/power/power"     => 'power',
                     "$OLDEN/treeadd/treeadd" => 'treeadd',
                     "$OLDEN/tsp/tsp"         => 'tsp',
                     "$OLDEN/voronoi/voronoi" => 'voronoi',
                     '-' => '-',
                     "$FREEBENCH/analyzer/analyzer"     => 'analyzer',
#                     "$FREEBENCH/distray/distray"       => 'distray',
#                     "$FREEBENCH/fourinarow/fourinarow" => 'fourinarow',
#                     "$FREEBENCH/mason/mason"           => 'mason',
                     "$FREEBENCH/neural/neural"         => 'neural',
                     "$FREEBENCH/pcompress2/pcompress2" => 'pcompress2',
                     "$FREEBENCH/pifft/pifft"           => 'pifft',
                     '-' => '-',
                     "$PTRDIST/anagram/anagram"       => 'anagram',
                     "$PTRDIST/bc/bc"                 => 'bc',
                     "$PTRDIST/ft/ft"                 => 'ft',
                     "$PTRDIST/ks/ks"                 => 'ks',
                     "$PTRDIST/yacr2/yacr2"           => 'yacr2',
                  );


# 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'],
 [],
# Times
 ["Time",           'CBE-RUN-TIME: program\s*([0-9.m]+)'],
 ["L1 Misses",      'CBE-L1-Cache-Misses: ([0-9]+)'],
 ["L2 Misses",      'CBE-L2-Cache-Misses: ([.0-9]+)'],
 ["TLBMisses",      'CBE-TLB-Misses: ([0-9]+)'],
 ["Misaligned",     'CBE-Misaligned: ([0-9]+)'],
 [],
 ["PA Time",        'CBE-PA-RUN-TIME: program\s*([0-9.m]+)'],
 ["PA L1 Misses",   'CBE-PA-L1-Cache-Misses: ([0-9]+)'],
 ["PA L2 Misses",   'CBE-PA-L2-Cache-Misses: ([.0-9]+)'],
 ["PA TLB Misses",  'CBE-PA-TLB-Misses: ([0-9]+)'],
 ["PA Misaligned",  'CBE-PA-Misaligned: ([0-9]+)'],
 []
);

