summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <[email protected]>2014-04-15 22:46:55 -0700
committerMatt Turner <[email protected]>2014-04-18 09:16:19 -0700
commitf770123f58b46459e8dbd27525162ee8ba89f30b (patch)
tree47cbcf9f45679e8516ffae58d1a95316af303d9a
parent55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9 (diff)
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 <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp13
1 files changed, 0 insertions, 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 b2ab386ab66..13b678afdc4 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;