summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2014-04-15 18:59:24 -0700
committerMatt Turner <mattst88@gmail.com>2014-04-18 09:16:19 -0700
commit55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9 (patch)
treefcbdef10abf55ba1c517ba7ba4584da432c35178
parent5ff1e446d44bb9d50f84883c7058635cb070e069 (diff)
downloadexternal_mesa3d-55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9.zip
external_mesa3d-55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9.tar.gz
external_mesa3d-55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9.tar.bz2
i965/fs: Give up in interference check if we see a WHILE.
Rather than any old control flow. Muchnick's algorithm just checks for interfering writes between the MOV and the end of the program. Handling this when you have backward branches is hard, so don't, but there's no reason to bail if you see forward branches. instructions in affected programs: 4270 -> 4248 (-0.52%) Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp2
1 files changed, 1 insertions, 1 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 020d992..b2ab386 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
@@ -102,7 +102,7 @@ can_coalesce_vars(brw::fs_live_variables *live_intervals,
for (scan_inst = (fs_inst *)inst->next;
!scan_inst->is_tail_sentinel() && ip <= live_intervals->end[var_to];
scan_inst = (fs_inst *)scan_inst->next, ip++) {
- if (scan_inst->is_control_flow())
+ if (scan_inst->opcode == BRW_OPCODE_WHILE)
return false;
if (scan_inst->dst.equals(inst->dst) ||