Date:2011-09-22 07:07:42 (12 years 6 months ago)
Author:Werner Almesberger
Commit:c5df76a7b988ca7337c2506ecf6ecdaf4314df85
Message:m1/perf/: calculate effective register allocation and how it in comparison table

Files: m1/perf/eval.pl (3 diffs)
m1/perf/tabulate (2 diffs)

Change Details

m1/perf/eval.pl
33
44sub flush
55{
6    if ($nregs) {
7        print 0+keys %reg, "/", (sort { $b cmp $a } keys %reg)[0],
8             "\n";
9        return;
10    }
611    for (sort keys %use) {
712        print "$_ = ".$reg{$_}."\n";
813    }
...... 
1015}
1116
1217
18if ($ARGV[0] eq "-r") {
19    shift @ARGV;
20    $nregs = 1;
21}
22
23
1324while (<>) {
1425    if (/FPVM fragment:/) {
1526        &flush if $i;
...... 
3546    $e = $1 if /E=(\d+)>/;
3647    die "($i) $_" if $c != $i;
3748
49    $reg{$a} = 1 if $nregs && defined $a;
50    $reg{$b} = 1 if $nregs && defined $b;
51
3852    $a = $reg{$a} if defined $reg{$a};
3953    $b = $reg{$b} if defined $reg{$b};
4054
4155    if ($op eq "IF<R2>") {
4256        $expr = "(IF ".$reg{"R002"}." $a $b)";
57        $reg{"R002"} = 1 if $nregs;
4358    } elsif ($op eq "VECTOUT") {
4459        $res = "A = $a\nB = $b\n";
4560    } elsif (defined $b) {
m1/perf/tabulate
2424
2525regs()
2626{
27    sed '/^regs: 0\//s///p;d' <data/$1/out/$2 | tail -n 1
27    ./eval.pl -r data/$1/out/$2 | sed '1d;s|/.*||'
28# sed '/^regs: 0\//s///p;d' <data/$1/out/$2 | tail -n 1
2829}
2930
3031
...... 
4445}
4546
4647
47echo "Original New sched (no opt) New sched (LCPF) Equiv Name"
48echo "Time Size Eff Time Size Eff Regs Time Size Eff Regs"
48echo "Original New sched (no opt) New sched (LCPF) Equiv Name"
49echo "Time Size Eff Regs Time Size Eff Regs Time Size Eff Regs"
4950
5051for n in `ls -1 data/ref/out`; do
5152    ref=`sum ref $n`
5253    new=`sum new $n`
5354    opt=`sum opt $n`
54    printf "%5.1f %4d%3d%% %5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %s " \
55      `time ref $n` `size ref $n` `eff ref $n` \
55    printf "%5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %s " \
56      `time ref $n` `size ref $n` `eff ref $n` `regs ref $n` \
5657      `time new $n` `size new $n` `eff new $n` `regs new $n` \
5758      `time opt $n` `size opt $n` `eff opt $n` `regs opt $n` \
5859      `eq $ref $new`/`eq $ref $opt`/`eq $new $opt`

Archive Download the corresponding diff file

Branches:
master



interactive