##=== TEST.pacompiletime.report - Report for PA Compile Time ---*- perl -*-===##
#
# This file defines a report to be generated for the pool allocator compile-time
# tests.
#
##===----------------------------------------------------------------------===##

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

@LatexColumns = (1, 8, 10);

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

@LatexRowMapOrder = (
                     "anagram/anagram"       => 'anagram',
                     "bc/bc"                 => 'bc',
                     "ft/ft"                 => 'ft',
                     "ks/ks"                 => 'ks',
                     "yacr2/yacr2"           => 'yacr2',
                     '-' => '-',
                     '164.gzip/164.gzip' => '164.gzip',
                     '175.vpr/175.vpr' => '175.vpr',
                     '181.mcf/181.mcf' => '181.mcf',
                     '186.crafty/186.crafty' => '186.crafty',
                     '197.parser/197.parser' => '197.parser',
                     '197.parser.hacked/197.parser.hacked' => '197.parser(b)',
                     '255.vortex/255.vortex' => '255.vortex',
                     '256.bzip2/256.bzip2' => '256.bzip2',
                     '300.twolf/300.twolf' => '300.twolf',
                     '-' => '-',
                     "analyzer"     => 'analyzer',
                     "llu"          => 'llu-bench',
                  );


# 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.
my $USERSYSTTIME = '([0-9.]+)[ 0-9.]+\([^)]+\)[ 0-9.]+\([^)]+\) +';
(
# Name
 ["Name:" , '\'([^\']+)\' Program'],
 ["LOC"   , 'LOC:\s*([0-9]+)'],
 [],
# DSA Times
 ["LOC",            "${USERSYSTTIME}Local"],
 ["BU",             "${USERSYSTTIME}Bottom-up"],
 ["TD",             "${USERSYSTTIME}Top-down"],
 ["DSASUM",         sub { return SumCols(@_, 3); }],
 [],
 ["COM",            "${USERSYSTTIME}'Complete'"],
 ["EQ",             "${USERSYSTTIME}Equivalence"],
 ["EBUSUM",         sub { return SumCols(@_, 2); }],
 [],
 ["PA Time",        "${USERSYSTTIME}Pool allocate"],
 []
);

