[Mesa-dev] [PATCH 5/6] i965/fs: Give up in interference check if we see a WHILE.

Matt Turner mattst88 at gmail.com
Wed Apr 16 11:07:23 PDT 2014


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%)
---
 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 58f6ca7..ca7a6a8 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
@@ -98,7 +98,7 @@ can_coalesce_vars(brw::fs_live_variables *live_intervals,
    for (scan_inst = (fs_inst *)inst->next;
         scan_inst->next != NULL && 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) ||
-- 
1.8.3.2



More information about the mesa-dev mailing list