diff options
author | Matt Turner <mattst88@gmail.com> | 2014-04-15 18:59:24 -0700 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2014-04-18 09:16:19 -0700 |
commit | 55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9 (patch) | |
tree | fcbdef10abf55ba1c517ba7ba4584da432c35178 | |
parent | 5ff1e446d44bb9d50f84883c7058635cb070e069 (diff) | |
download | external_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.cpp | 2 |
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) || |