Mesa (master): i965/vec4: Make sure that imm writes are to registers in the same file.

Matt Turner mattst88 at kemper.freedesktop.org
Thu Jan 15 18:11:22 UTC 2015


Module: Mesa
Branch: master
Commit: 41d9f232b6a7f53086b9c428cca30e45905abd48
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=41d9f232b6a7f53086b9c428cca30e45905abd48

Author: Matt Turner <mattst88 at gmail.com>
Date:   Mon Jan 12 10:48:04 2015 -0800

i965/vec4: Make sure that imm writes are to registers in the same file.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87887

---

 src/mesa/drivers/dri/i965/brw_vec4.cpp |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
index 33d5fdc..0fac949 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
@@ -341,15 +341,21 @@ vec4_visitor::opt_vector_float()
 {
    bool progress = false;
 
-   int last_reg = -1;
+   int last_reg = -1, last_reg_offset = -1;
+   enum register_file last_reg_file = BAD_FILE;
+
    int remaining_channels;
    uint8_t imm[4];
    int inst_count;
    vec4_instruction *imm_inst[4];
 
    foreach_block_and_inst_safe(block, vec4_instruction, inst, cfg) {
-      if (last_reg != inst->dst.reg) {
+      if (last_reg != inst->dst.reg ||
+          last_reg_offset != inst->dst.reg_offset ||
+          last_reg_file != inst->dst.file) {
          last_reg = inst->dst.reg;
+         last_reg_offset = inst->dst.reg_offset;
+         last_reg_file = inst->dst.file;
          remaining_channels = WRITEMASK_XYZW;
 
          inst_count = 0;




More information about the mesa-commit mailing list