From 55de1c035cbca2b7087b3aa21a8c3dfc900a4ad9 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Tue, 15 Apr 2014 18:59:24 -0700 Subject: [PATCH] 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 --- src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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) || -- 2.7.4