[Mesa-dev] [PATCH 14/32] i965/fs: Fix register coalesce not to lose track of the second half of 16-wide moves.

Francisco Jerez currojerez at riseup.net
Fri Feb 6 06:42:54 PST 2015


Fixes rewrite by the register coalesce pass of references to
individual halves of 16-wide coalesced registers.
---
 src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 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 09f0fad..2a26a46 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
@@ -211,9 +211,13 @@ fs_visitor::register_coalesce()
             continue;
          }
          reg_to_offset[offset] = inst->dst.reg_offset;
-         if (inst->src[0].width == 16)
-            reg_to_offset[offset + 1] = inst->dst.reg_offset + 1;
          mov[offset] = inst;
+
+         if (inst->exec_size * type_sz(inst->src[0].type) > REG_SIZE) {
+            reg_to_offset[offset + 1] = inst->dst.reg_offset + 1;
+            mov[offset + 1] = inst;
+         }
+
          channels_remaining -= inst->regs_written;
       }
 
-- 
2.1.3



More information about the mesa-dev mailing list