##=== TEST.dsprecision.report - Report for precision tests -----*- perl -*-===##
#
# This file defines a report to be generated for the precision comparison
# test.
#
##===----------------------------------------------------------------------===##

# 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";
  }
}

$SortCol = 0;
#$SortNumeric = 1;
$TrimAllDirectories = 1;        # Trim off benchmark directories.
#$TrimRepeatedPrefix = 1;

# Sort in ascending order
$SortReverse = 0;

# For latex/csv output, limit benchmarks and rename as appropriate
@LatexRowMapOrder = (
            '-' => '-',

            '181.mcf'       => '181.mcf',
            '256.bzip2'     => '256.bzip2',
            '164.gzip'      => '164.gzip',
            '175.vpr'       => '175.vpr',
            '197.parser'    => '197.parser',
            '186.crafty'    => '186.crafty',
            '300.twolf'     => '300.twolf',
            '255.vortex'    => '255.vortex',
            '254.gap'       => '254.gap',
            '252.eon'       => '252.eon',
            '253.perlbmk'   => '253.perlbmk',
            '176.gcc'       => '176.gcc',
            '-' => '-',
            '179.art'       => '179.art',
            '183.equake'    => '183.equake',
            '171.swim'      => '171.swim',
            '172.mgrid'     => '172.mgrid',
            '168.wupwise'   => '168.wupwise',
            '173.applu'     => '173.applu',
            '188.ammp'      => '188.ammp',
            '177.mesa'      => '177.mesa',
            '-' => '-',
            '129.compress'  => '129.compress',
            '130.li'        => '130.li',
            '124.m88ksim'   => '124.m88ksim',
            '132.ijpeg'     => '132.ijpeg',
            '099.go'        => '099.go',
            '134.perl'      => '134.perl',
            '147.vortex'    => '147.vortex',
            '126.gcc'       => '126.gcc',
            '-' => '-',
            '102.swim'      => '102.swim',
            '101.tomcatv'   => '101.tomcatv',
            '107.mgrid'     => '107.mgrid',
            '145.fpppp'     => '145.fpppp',
            '104.hydro2d'   => '104.hydro2d',
            '110.applu'     => '110.applu',
            '103.su2cor'    => '103.su2cor',
            '146.wave5'     => '146.wave5',
            '-' => '-',
            'fpgrowth' => 'fpgrowth',
            'bsim'     => 'boxed-sim',
            'namd'     => 'NAMD',
            'povray'   => 'povray31',
           );


# 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'],
            [],
# AA MayAlias Query Percents
            ["basic",     'BASIC MA:.* \((.*)\)'],
            ["steens-fi", 'STEENS-FI MA:.* \((.*)\)'],
            ["steens-fs", 'STEENS-FS MA:.* \((.*)\)'],
            ["anders",    'ANDERS MA:.* \((.*)\)'],
            ["ds-aa",     'DS MA:.* \((.*)\)'],
            [],
# Mod&Ref percents
            ["basic",     'BASIC MR:.* \((.*)\)'],
            ["steens-fi", 'STEENS-FI MR:.* \((.*)\)'],
            ["steens-fs", 'STEENS-FS MR:.* \((.*)\)'],
            ["anders",    'ANDERS MR:.* \((.*)\)'],
            ["ds-aa",     'DS MR:.* \((.*)\)'],
            [],
# Mod Percents
            ["basic",     'BASIC JUSTMOD:.* \((.*)\)'],
            ["steens-fi", 'STEENS-FI JUSTMOD:.* \((.*)\)'],
            ["steens-fs", 'STEENS-FS JUSTMOD:.* \((.*)\)'],
            ["anders",    'ANDERS JUSTMOD:.* \((.*)\)'],
            ["ds-aa",     'DS JUSTMOD:.* \((.*)\)'],
            [],
# Ref Percents
            ["basic",     'BASIC JUSTREF:.* \((.*)\)'],
            ["steens-fi", 'STEENS-FI JUSTREF:.* \((.*)\)'],
            ["steens-fs", 'STEENS-FS JUSTREF:.* \((.*)\)'],
            ["anders",    'ANDERS JUSTREF:.* \((.*)\)'],
            ["ds-aa",     'DS JUSTREF:.* \((.*)\)'],
            [],
# No Mod/Ref Percents
            ["basic",     'BASIC NOMR:.* \((.*)\)'],
            ["steens-fi", 'STEENS-FI NOMR:.* \((.*)\)'],
            ["steens-fs", 'STEENS-FS NOMR:.* \((.*)\)'],
            ["anders",    'ANDERS NOMR:.* \((.*)\)'],
            ["ds-aa",     'DS NOMR:.* \((.*)\)'],
            [],
);
