Mesa (master): nv50/ir: allow load propagation when flags are defined

Ilia Mirkin imirkin at kemper.freedesktop.org
Thu May 8 00:44:24 UTC 2014


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

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Sat May  3 00:26:14 2014 -0400

nv50/ir: allow load propagation when flags are defined

The old condition disallowed load propagation any time flags were
defined, even with e.g. set and a constbuf reference. The new condition
disallows it only with immediate propagation. (There are no opcodes that
set the condition flag and have an immediate argument.)

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp
index 0b2f27a..32ba5c8 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp
@@ -275,9 +275,10 @@ TargetNV50::insnCanLoad(const Instruction *i, int s,
       return false;
 
    // NOTE: don't rely on flagsDef
-   for (int d = 0; i->defExists(d); ++d)
-      if (i->def(d).getFile() == FILE_FLAGS)
-         return false;
+   if (sf == FILE_IMMEDIATE)
+      for (int d = 0; i->defExists(d); ++d)
+         if (i->def(d).getFile() == FILE_FLAGS)
+            return false;
 
    unsigned mode = 0;
 




More information about the mesa-commit mailing list