Previously, if the number of loops changed (and the instruction count
changed wildly) we'd happily consider those differences in the totals,
even though they're not meaningful.

Based on code by Abdiel Janulgue <abdiel.janul...@linux.intel.com>.
---
 report.py | 43 ++++++++++++++++++++++++++++++++-----------
 1 file changed, 32 insertions(+), 11 deletions(-)

diff --git a/report.py b/report.py
index 1c1e5ac..4c06714 100755
--- a/report.py
+++ b/report.py
@@ -10,7 +10,7 @@ def get_results(filename):
 
     results = {}
 
-    re_match = re.compile(r"(\S+) - (.S \S+) shader: (\S*)")
+    re_match = re.compile(r"(\S+) - (.S \S+) shader: (\S*) inst, (\S*) loops")
     for line in lines:
         match = re.search(re_match, line)
         if match is None:
@@ -18,8 +18,9 @@ def get_results(filename):
 
         groups = match.groups()
         count = int(groups[2])
+        loop = int(groups[3])
         if count != 0:
-            results[(groups[0], groups[1])] = count
+            results[(groups[0], groups[1])] = count, loop
 
     return results
 
@@ -51,6 +52,8 @@ def main():
 
     total_before = 0
     total_after = 0
+    total_before_loop = 0
+    total_after_loop = 0
     affected_before = 0
     affected_after = 0
 
@@ -58,22 +61,31 @@ def main():
     hurt = []
     lost = []
     gained = []
+    loop_change = []
     for p in args.before:
         (name, type) = p
         namestr = name + " " + type
-        before_count = args.before[p]
+        before_count = args.before[p][0]
+        before_loop = args.before[p][1]
 
         if args.after.get(p) is not None:
-            after_count = args.after[p]
+            after_count = args.after[p][0]
+            after_loop = args.after[p][1]
 
-            total_before += before_count
-            total_after += after_count
+            total_before_loop += before_loop
+            total_after_loop += after_loop
+
+            if before_loop == after_loop:
+                total_before += before_count
+                total_after += after_count
 
             if before_count != after_count:
                 affected_before += before_count
                 affected_after += after_count
 
-                if after_count > before_count:
+                if after_loop != before_loop:
+                    loop_change.append(p);
+                elif after_count > before_count:
                     hurt.append(p)
                 else:
                     helped.append(p)
@@ -85,23 +97,30 @@ def main():
             gained.append(p[0] + " " + p[1])
 
     helped.sort(
-        key=lambda k: float(args.before[k] - args.after[k]) / args.before[k])
+        key=lambda k: float(args.before[k][0] - args.after[k][0]) / 
args.before[k][0])
     for p in helped:
         namestr = p[0] + " " + p[1]
         print("helped:   " + get_result_string(
-            namestr, args.before[p], args.after[p]))
+            namestr, args.before[p][0], args.after[p][0]))
     if len(helped) > 0:
         print("")
 
     hurt.sort(
-        key=lambda k: float(args.after[k] - args.before[k]) / args.before[k])
+        key=lambda k: float(args.after[k][0] - args.before[k][0]) / 
args.before[k][0])
     for p in hurt:
         namestr = p[0] + " " + p[1]
         print("HURT:   " + get_result_string(
-            namestr, args.before[p], args.after[p]))
+            namestr, args.before[p][0], args.after[p][0]))
     if len(hurt) > 0:
         print("")
 
+    for p in loop_change:
+        namestr = p[0] + " " + p[1]
+        print("LOOP CHANGE (" + str(args.before[p][1]) + " -> " + 
str(args.after[p][1]) +
+        "): " + get_result_string(namestr, args.before[p][0], 
args.after[p][0]))
+    if len(loop_change) > 0:
+        print("")
+
     lost.sort()
     for p in lost:
         print("LOST:   " + p)
@@ -116,12 +135,14 @@ def main():
 
     print("total instructions in shared programs: {}\n"
           "instructions in affected programs:     {}\n"
+          "total loops in shared programs:        {}\n"
           "helped:                                {}\n"
           "HURT:                                  {}\n"
           "GAINED:                                {}\n"
           "LOST:                                  {}".format(
               change(total_before, total_after),
               change(affected_before, affected_after),
+              change(total_before_loop, total_after_loop),
               len(helped),
               len(hurt),
               len(gained),
-- 
2.4.6

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to