summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_qir.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2016-01-04 13:56:39 -0800
committerEric Anholt <[email protected]>2016-01-06 12:39:27 -0800
commit0a89f307f95de3a3357d834f36c60fe803895f8a (patch)
tree3b9e0923b53dfc7b4eb8ff052ecccd7ffe03026d /src/gallium/drivers/vc4/vc4_qir.c
parent1953cee6d7a9d0c948a05ffc7bbafff378cb1751 (diff)
vc4: Don't try the SF coalescing unless it's on a def.
If you want the SF of the value of a register produced from a series of packing MOVs or conditional MOVs, we can't just SF on the last MOV into the register.
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_qir.c')
-rw-r--r--src/gallium/drivers/vc4/vc4_qir.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/gallium/drivers/vc4/vc4_qir.c b/src/gallium/drivers/vc4/vc4_qir.c
index c6916c48e7e..a46fb4fd3b8 100644
--- a/src/gallium/drivers/vc4/vc4_qir.c
+++ b/src/gallium/drivers/vc4/vc4_qir.c
@@ -503,9 +503,9 @@ qir_SF(struct vc4_compile *c, struct qreg src)
if (!list_empty(&c->instructions))
last_inst = (struct qinst *)c->instructions.prev;
- if (!last_inst ||
- last_inst->dst.file != src.file ||
- last_inst->dst.index != src.index ||
+ if (src.file != QFILE_TEMP ||
+ !c->defs[src.index] ||
+ last_inst != c->defs[src.index] ||
qir_is_multi_instruction(last_inst)) {
src = qir_MOV(c, src);
last_inst = (struct qinst *)c->instructions.prev;