mirror of
git://projects.qi-hardware.com/wernermisc.git
synced 2024-11-15 08:19:41 +02:00
m1/perf/: calculate effective register allocation and how it in comparison table
This commit is contained in:
parent
b3796c855f
commit
c5df76a7b9
@ -3,6 +3,11 @@
|
||||
|
||||
sub flush
|
||||
{
|
||||
if ($nregs) {
|
||||
print 0+keys %reg, "/", (sort { $b cmp $a } keys %reg)[0],
|
||||
"\n";
|
||||
return;
|
||||
}
|
||||
for (sort keys %use) {
|
||||
print "$_ = ".$reg{$_}."\n";
|
||||
}
|
||||
@ -10,6 +15,12 @@ sub flush
|
||||
}
|
||||
|
||||
|
||||
if ($ARGV[0] eq "-r") {
|
||||
shift @ARGV;
|
||||
$nregs = 1;
|
||||
}
|
||||
|
||||
|
||||
while (<>) {
|
||||
if (/FPVM fragment:/) {
|
||||
&flush if $i;
|
||||
@ -35,11 +46,15 @@ while (<>) {
|
||||
$e = $1 if /E=(\d+)>/;
|
||||
die "($i) $_" if $c != $i;
|
||||
|
||||
$reg{$a} = 1 if $nregs && defined $a;
|
||||
$reg{$b} = 1 if $nregs && defined $b;
|
||||
|
||||
$a = $reg{$a} if defined $reg{$a};
|
||||
$b = $reg{$b} if defined $reg{$b};
|
||||
|
||||
if ($op eq "IF<R2>") {
|
||||
$expr = "(IF ".$reg{"R002"}." $a $b)";
|
||||
$reg{"R002"} = 1 if $nregs;
|
||||
} elsif ($op eq "VECTOUT") {
|
||||
$res = "A = $a\nB = $b\n";
|
||||
} elsif (defined $b) {
|
||||
|
@ -24,7 +24,8 @@ eff()
|
||||
|
||||
regs()
|
||||
{
|
||||
sed '/^regs: 0\//s///p;d' <data/$1/out/$2 | tail -n 1
|
||||
./eval.pl -r data/$1/out/$2 | sed '1d;s|/.*||'
|
||||
# sed '/^regs: 0\//s///p;d' <data/$1/out/$2 | tail -n 1
|
||||
}
|
||||
|
||||
|
||||
@ -44,15 +45,15 @@ eq()
|
||||
}
|
||||
|
||||
|
||||
echo "Original New sched (no opt) New sched (LCPF) Equiv Name"
|
||||
echo "Time Size Eff Time Size Eff Regs Time Size Eff Regs"
|
||||
echo "Original New sched (no opt) New sched (LCPF) Equiv Name"
|
||||
echo "Time Size Eff Regs Time Size Eff Regs Time Size Eff Regs"
|
||||
|
||||
for n in `ls -1 data/ref/out`; do
|
||||
ref=`sum ref $n`
|
||||
new=`sum new $n`
|
||||
opt=`sum opt $n`
|
||||
printf "%5.1f %4d%3d%% %5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %s " \
|
||||
`time ref $n` `size ref $n` `eff ref $n` \
|
||||
printf "%5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %s " \
|
||||
`time ref $n` `size ref $n` `eff ref $n` `regs ref $n` \
|
||||
`time new $n` `size new $n` `eff new $n` `regs new $n` \
|
||||
`time opt $n` `size opt $n` `eff opt $n` `regs opt $n` \
|
||||
`eq $ref $new`/`eq $ref $opt`/`eq $new $opt`
|
||||
|
Loading…
Reference in New Issue
Block a user