Prepared for diff.
[libfirm] / scripts / statev_examples / extractcachegrindresult.pl
1 #!/usr/bin/perl -w
2 #
3 # Takes the output of a cachegrind or countmem run and produces statev events
4
5 sub result {
6         my $name = shift;
7         my $value = shift;
8         print "E;$name;$value\n"
9 }
10
11 while( defined($line = <STDIN>) ) {
12         if($line =~ m/.* I\s+refs:\s+([0-9\,]+).*/) {
13                 $irefs = $1;
14                 $irefs =~ s/,//g;
15                 result("instructions", $irefs);
16         }
17         if($line =~ m/.* D\s+refs:\s+[0-9,]*\s+\(\s*([0-9,]+)\s+rd\s+\+\s+([0-9,]+).*/) {
18                 $reads = $1;
19                 $writes = $2;
20                 $reads =~ s/,//g;
21                 $writes =~ s/,//g;
22                 result("reads", $reads);
23                 result("writes", $writes);
24         }
25         if($line =~ m/.* D1\s+misses:\s+[0-9,]*\s+\(\s*([0-9,]+)\s+rd\s+\+\s+([0-9,]+).*/) {
26                 $reads = $1;
27                 $writes = $2;
28                 $reads =~ s/,//g;
29                 $writes =~ s/,//g;
30                 result("l1readmisses", $reads);
31                 result("l1writemisses", $writes);
32         }
33         if($line =~ m/.* L2d\s+misses:\s+[0-9,]*\s+\(\s*([0-9,]+)\s+rd\s+\+\s+([0-9,]+).*/)
34         {
35                 $reads = $1;
36                 $writes = $2;
37                 $reads =~ s/,//g;
38                 $writes =~ s/,//g;
39                 result("l2readmisses", $reads);
40                 result("l2writemisses", $writes);
41         }
42         # CountMem format
43         if($line =~ m/== ([a-zA-Z0-9\-]+)\s+([0-9,]+).*/) {
44                 $name = $1;
45                 $value = $2;
46                 $value =~ s/,//g;
47                 result($name, $value);
48         }
49 }