Mesa (master): i965/vec4: Add and use vec4_instruction::writes_flag().

Matt Turner mattst88 at kemper.freedesktop.org
Mon Mar 24 18:09:08 UTC 2014


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

Author: Matt Turner <mattst88 at gmail.com>
Date:   Wed Mar 12 00:14:07 2014 -0700

i965/vec4: Add and use vec4_instruction::writes_flag().

To be consistent with the fs backend. Also the instruction scheduler
incorrectly considered SEL with a conditional modifier to read the flag
register.

Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp |    4 ++--
 src/mesa/drivers/dri/i965/brw_vec4.h                    |    5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp b/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp
index 5449c1b..e86c258 100644
--- a/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp
+++ b/src/mesa/drivers/dri/i965/brw_schedule_instructions.cpp
@@ -1060,7 +1060,7 @@ vec4_instruction_scheduler::calculate_deps()
          }
       }
 
-      if (inst->conditional_mod) {
+      if (inst->writes_flag()) {
          add_dep(last_conditional_mod, n, 0);
          last_conditional_mod = n;
       }
@@ -1129,7 +1129,7 @@ vec4_instruction_scheduler::calculate_deps()
          }
       }
 
-      if (inst->conditional_mod) {
+      if (inst->writes_flag()) {
          last_conditional_mod = n;
       }
    }
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index 52cc058..6ea3ca4 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -271,6 +271,11 @@ public:
    {
       return predicate || opcode == VS_OPCODE_UNPACK_FLAGS_SIMD4X2;
    }
+
+   bool writes_flag()
+   {
+      return conditional_mod && opcode != BRW_OPCODE_SEL;
+   }
 };
 
 /**




More information about the mesa-commit mailing list