Mesa (master): i965/fs: Reduce restrictions on interference in register coalescing.

Matt Turner mattst88 at kemper.freedesktop.org
Fri Apr 18 17:18:13 UTC 2014


Module: Mesa
Branch: master
Commit: f770123f58b46459e8dbd27525162ee8ba89f30b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f770123f58b46459e8dbd27525162ee8ba89f30b

Author: Matt Turner <mattst88 at gmail.com>
Date:   Tue Apr 15 22:46:55 2014 -0700

i965/fs: Reduce restrictions on interference in register coalescing.

We previously only allowed coalescing registers that interfere (i.e.,
whose live ranges overlap) if the destination register's live range was
entirely inside the source's live range. This is unnecessary -- we only
need to check for interfering writes in the intersection of their live
ranges.

total instructions in shared programs: 1639470 -> 1638453 (-0.06%)
instructions in affected programs:     84751 -> 83734 (-1.20%)

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp |   13 -------------
 1 file changed, 13 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
index b2ab386..13b678a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
@@ -83,19 +83,6 @@ can_coalesce_vars(brw::fs_live_variables *live_intervals,
    if (!live_intervals->vars_interfere(var_from, var_to))
       return true;
 
-   /* We know that the live ranges of A (var_from) and B (var_to)
-    * interfere because of the ->vars_interfere() call above. If the end
-    * of B's live range is after the end of A's range, then we know two
-    * things:
-    *  - the start of B's live range must be in A's live range (since we
-    *    already know the two ranges interfere, this is the only remaining
-    *    possibility)
-    *  - the interference isn't of the form we're looking for (where B is
-    *    entirely inside A)
-    */
-   if (live_intervals->end[var_to] > live_intervals->end[var_from])
-      return false;
-
    assert(ip >= live_intervals->start[var_to]);
 
    fs_inst *scan_inst;




More information about the mesa-commit mailing list