mirror of
git://projects.qi-hardware.com/wernermisc.git
synced 2024-11-15 10:36:17 +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
|
sub flush
|
||||||
{
|
{
|
||||||
|
if ($nregs) {
|
||||||
|
print 0+keys %reg, "/", (sort { $b cmp $a } keys %reg)[0],
|
||||||
|
"\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
for (sort keys %use) {
|
for (sort keys %use) {
|
||||||
print "$_ = ".$reg{$_}."\n";
|
print "$_ = ".$reg{$_}."\n";
|
||||||
}
|
}
|
||||||
@ -10,6 +15,12 @@ sub flush
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ($ARGV[0] eq "-r") {
|
||||||
|
shift @ARGV;
|
||||||
|
$nregs = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
while (<>) {
|
while (<>) {
|
||||||
if (/FPVM fragment:/) {
|
if (/FPVM fragment:/) {
|
||||||
&flush if $i;
|
&flush if $i;
|
||||||
@ -35,11 +46,15 @@ while (<>) {
|
|||||||
$e = $1 if /E=(\d+)>/;
|
$e = $1 if /E=(\d+)>/;
|
||||||
die "($i) $_" if $c != $i;
|
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};
|
$a = $reg{$a} if defined $reg{$a};
|
||||||
$b = $reg{$b} if defined $reg{$b};
|
$b = $reg{$b} if defined $reg{$b};
|
||||||
|
|
||||||
if ($op eq "IF<R2>") {
|
if ($op eq "IF<R2>") {
|
||||||
$expr = "(IF ".$reg{"R002"}." $a $b)";
|
$expr = "(IF ".$reg{"R002"}." $a $b)";
|
||||||
|
$reg{"R002"} = 1 if $nregs;
|
||||||
} elsif ($op eq "VECTOUT") {
|
} elsif ($op eq "VECTOUT") {
|
||||||
$res = "A = $a\nB = $b\n";
|
$res = "A = $a\nB = $b\n";
|
||||||
} elsif (defined $b) {
|
} elsif (defined $b) {
|
||||||
|
@ -24,7 +24,8 @@ eff()
|
|||||||
|
|
||||||
regs()
|
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 "Original New sched (no opt) New sched (LCPF) Equiv Name"
|
||||||
echo "Time Size Eff Time Size Eff Regs Time Size Eff Regs"
|
echo "Time Size Eff Regs Time Size Eff Regs Time Size Eff Regs"
|
||||||
|
|
||||||
for n in `ls -1 data/ref/out`; do
|
for n in `ls -1 data/ref/out`; do
|
||||||
ref=`sum ref $n`
|
ref=`sum ref $n`
|
||||||
new=`sum new $n`
|
new=`sum new $n`
|
||||||
opt=`sum opt $n`
|
opt=`sum opt $n`
|
||||||
printf "%5.1f %4d%3d%% %5.1f %4d%3d%% %4d %5.1f %4d%3d%% %4d %s " \
|
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` \
|
`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 new $n` `size new $n` `eff new $n` `regs new $n` \
|
||||||
`time opt $n` `size opt $n` `eff opt $n` `regs opt $n` \
|
`time opt $n` `size opt $n` `eff opt $n` `regs opt $n` \
|
||||||
`eq $ref $new`/`eq $ref $opt`/`eq $new $opt`
|
`eq $ref $new`/`eq $ref $opt`/`eq $new $opt`
|
||||||
|
Loading…
Reference in New Issue
Block a user