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

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

my $WallTimeRE = "[A-Za-z0-9.: ]+\\(([0-9.]+) wall clock";

# FormatTime - Convert a time from 1m23.45 into 83.45
sub FormatTime {
  my $Time = shift;
  if ($Time =~ m/([0-9]+)[m:]([0-9.]+)/) {
    $Time = sprintf("%7.3f", $1*60.0+$2);
  }
  return $Time;
}

sub GCCCBERatio {
  my ($Cols, $Col) = @_;
  my $GCC = $Cols->[$Col-6];
  my $CBE = $Cols->[$Col-5];
  if ($GCC ne "*" and $CBE ne "*" and $CBE != "0") {
    return sprintf("%3.2f", $GCC/$CBE);
  } else {
    return "n/a";
  }
}

sub GCCLLCRatio {
  my ($Cols, $Col) = @_;
  my $GCC = $Cols->[$Col-7];
  my $LLC = $Cols->[$Col-5];
  if ($GCC ne "*" and $LLC ne "*" and $LLC != "0") {
    return sprintf("%3.2f", $GCC/$LLC);
  } else {
    return "n/a";
  }
}

sub GCCLLC_BETARatio {
  my ($Cols, $Col) = @_;
  my $GCC = $Cols->[$Col-8];
  my $LLC_BETA = $Cols->[$Col-5];
  if ($GCC ne "*" and $LLC_BETA ne "*" and $LLC_BETA != "0") {
    return sprintf("%3.2f", $GCC/$LLC_BETA);
  } else {
    return "n/a";
  }
}

# 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
# separators, and closures may be put in for custom processing.
(
# Name
 ["Program"  , '\'([^\']+)\' Program'],
 [],
# Times
 ["GCCAS"    , "TEST-RESULT-compile: $WallTimeRE"],
 ["Bytecode" , 'TEST-RESULT-compile: *([0-9]+)'],
 ["LLC<br>compile" , "TEST-RESULT-llc: $WallTimeRE"],
 ["LLC-BETA<br>compile" , "TEST-RESULT-llc-ls: $WallTimeRE"],
 ["JIT<br>codegen" , "TEST-RESULT-jit-comptime: $WallTimeRE"],
 ["Machine<br>code", 'TEST-RESULT-jit-machcode: *([0-9]+).*bytes of machine code'],
 [],
 ["GCC"      , 'TEST-RESULT-nat-time: real\s*([.0-9m:]+)', \&FormatTime],
 ["CBE"      , 'TEST-RESULT-cbe-time: real\s*([.0-9m:]+)', \&FormatTime],
 ["LLC"      , 'TEST-RESULT-llc-time: real\s*([.0-9m:]+)', \&FormatTime],
 ["LLC-BETA" , 'TEST-RESULT-llc-ls-time: real\s*([.0-9m:]+)', \&FormatTime],
 ["JIT"      , 'TEST-RESULT-jit-time: real\s*([.0-9m:]+)', \&FormatTime],
 ["JIT-BETA" , 'TEST-RESULT-jit-ls-time: real\s*([.0-9m:]+)', \&FormatTime],
 ["GCC/CBE"  , \&GCCCBERatio],
 ["GCC/LLC"  , \&GCCLLCRatio],
 ["GCC/LLC-Beta"  , \&GCCLLC_BETARatio]
);
