summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <[email protected]>2014-05-03 00:26:14 -0400
committerIlia Mirkin <[email protected]>2014-05-07 20:40:46 -0400
commit5a40fe03f7d7a32b1dce675e1d55f40f72090569 (patch)
tree4bbb205d7d074cefdf8a59d5fcf2053aa07a9de2
parent83b900fd0a2187fe70e553ac782660cd23c5041c (diff)
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 <[email protected]>
-rw-r--r--src/gallium/drivers/nouveau/codegen/nv50_ir_target_nv50.cpp7
1 files 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 0b2f27ad497..32ba5c82ceb 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;