diff options
author | Eric Anholt <[email protected]> | 2016-01-04 13:56:39 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2016-01-06 12:39:27 -0800 |
commit | 0a89f307f95de3a3357d834f36c60fe803895f8a (patch) | |
tree | 3b9e0923b53dfc7b4eb8ff052ecccd7ffe03026d /src/gallium/drivers/vc4 | |
parent | 1953cee6d7a9d0c948a05ffc7bbafff378cb1751 (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')
-rw-r--r-- | src/gallium/drivers/vc4/vc4_qir.c | 6 |
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; |