| ##=== TEST.micro.report - Report for the MICRO'03 paper --------*- perl -*-===## |
| # |
| # This file defines a report to be generated for the micro paper. |
| # |
| # This report should be generated with the following command: |
| # gmake ENABLE_OPTIMIZED=1 TEST=micro RUNTIMELIMIT=120 LARGE_PROBLEM_SIZE=1 CFLAGS=-O3 |
| # |
| ##===----------------------------------------------------------------------===## |
| |
| # Sort by name |
| $SortCol = 4; |
| |
| ## Sort in descending order |
| $SortReverse = 1; |
| $SortNumeric = 1; |
| |
| # Helper function |
| sub Ratio { |
| my ($Cols, $Col) = @_; |
| if ($Cols->[$Col-1] ne "*" and |
| $Cols->[$Col-1] != "0") { |
| return 0 if ($Cols->[$Col-2] eq "*"); |
| return $Cols->[$Col-2]/$Cols->[$Col-1]; |
| } else { |
| return "n/a"; |
| } |
| } |
| sub InvRatio { |
| 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 LLVMRatio { |
| my ($Cols, $Col) = @_; |
| if ($Cols->[5] ne "*") { |
| return $Cols->[5]*1733333333/$Cols->[10]; |
| } else { |
| return "n/a"; |
| } |
| } |
| |
| sub FormatSize { |
| my $Size = shift; |
| return "*" if ($Size eq "*"); |
| if ($Size > 10*1024*1024) { |
| return (int $Size*10 / (1024*1024))/10 . "MB"; |
| } elsif ($Size > 10*1024) { |
| return sprintf("%2.1f", $Size / 1024) . "KB"; |
| } else { |
| return $Size . "B"; |
| } |
| } |
| |
| sub FormatSizeKB { |
| my $Size = shift; |
| return "*" if ($Size eq "*"); |
| return sprintf("%2.1f", $Size / 1024); |
| } |
| |
| sub FormatRatio { |
| return sprintf("%0.2f", shift); |
| } |
| sub FormatRatio2 { |
| return sprintf("%0.3f", shift); |
| } |
| |
| # 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; |
| } |
| |
| |
| @LatexColumns = (1, 15, 12, # LOC, LLC Size, BytecodeSize |
| 10, 9, 11, # #LLVM Insts, # MachineInsts, Ratio |
| 5, 4, 6); # JIT Time, Nat Run Time, Ratio |
| |
| # Specify how to format columns nicely for printing... |
| %LatexColumnFormat = ( |
| 6 => \&FormatRatio2, |
| 11 => \&FormatRatio, |
| 12 => \&FormatSizeKB, |
| 15 => \&FormatSizeKB, |
| ); |
| |
| # For latex output, limit benchmarks and rename as appropriate |
| @LatexRowMapOrder = ( |
| 'treeadd' => 'Olden-treeadd', |
| 'bisort' => 'Olden-bisort', |
| 'mst' => 'Olden-mst', |
| 'perimeter' => 'Olden-perimeter', |
| 'health' => 'Olden-health', |
| 'tsp' => 'Olden-tsp', |
| 'power' => 'Olden-power', |
| 'em3d' => 'Olden-em3d', |
| 'voronoi' => 'Olden-voronoi', |
| 'bh' => 'Olden-bh', |
| '-' => '-', |
| 'anagram' => 'ptrdist-anagram', |
| 'ks' => 'ptrdist-ks', |
| 'ft' => 'ptrdist-ft', |
| 'yacr2' => 'ptrdist-yacr2', |
| 'bc' => 'ptrdist-bc', |
| '-' => '-', |
| '179.art' => '179.art', |
| '183.equake' => '183.equake', |
| '181.mcf' => '181.mcf', |
| '256.bzip2' => '256.bzip2', |
| '164.gzip' => '164.gzip', |
| '197.parser' => '197.parser', |
| '188.ammp' => '188.ammp', |
| '175.vpr' => '175.vpr', |
| '300.twolf' => '300.twolf', |
| '186.crafty' => '186.crafty', |
| '255.vortex' => '255.vortex', |
| '254.gap' => '254.gap', |
| # '-' => '-', |
| # 'sgefa' => 'sgefa', |
| # 'sim' => 'sim', |
| # 'burg' => 'burg', |
| # 'fhourstones' => 'fhourstones', |
| # 'optimizer-eval' => 'optimizer-eval', |
| # 'flops' => 'flops', |
| # 'llu' => 'llubenchmark' |
| ); |
| |
| |
| # 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 |
| ["Total" , 'JIT TIME: real\s*([.0-9m:]+)', \&FormatTime], |
| ["NatTotal", 'NAT TIME: real\s*([.0-9m:]+)', \&FormatTime], |
| ["CodeGen", 'Total Execution Time: ([0-9.]+)'], |
| ["CodeGenRatio", \&InvRatio], |
| [], |
| # Sizes |
| ["MCSize" , '([0-9]+).*Number of bytes of machine code compiled'], |
| ["#MCInsts" , '([0-9]+).*Number of machine instructions emitted'], |
| ["LLVMInsts", '([0-9]+).*Number of instructions'], |
| ["mc/LLVM ratio", \&Ratio], |
| ["BytcdSize", '([0-9]+).*Number of bytecode bytes written'], |
| [], |
| ["Cycle/LLVM", \&LLVMRatio], |
| ["LLC Size", 'LLC SIZE: *([0-9]+)'], |
| # Number of transformations |
| [] |
| ); |