summaryrefslogtreecommitdiffstats
path: root/src/gallium
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-12-15 11:10:14 -0800
committerEric Anholt <[email protected]>2014-12-15 14:28:23 -0800
commit1fa1ee56a042a4a50bebf91cea476b7fea491649 (patch)
tree561601562fb5081386d42ac2619d3fa9a131be85 /src/gallium
parent8e678de761e755564ade2794dbf68280a4972b66 (diff)
vc4: Fix use of r3 as a temp in 8-bit unpacking.
We're actually allocating out of r3 now, and I missed it because I'd typed this one as qpu_rn(3) instead of qpu_r3().
Diffstat (limited to 'src/gallium')
-rw-r--r--src/gallium/drivers/vc4/vc4_qpu_emit.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/gallium/drivers/vc4/vc4_qpu_emit.c b/src/gallium/drivers/vc4/vc4_qpu_emit.c
index 8c58f1817a2..8b3a0010d33 100644
--- a/src/gallium/drivers/vc4/vc4_qpu_emit.c
+++ b/src/gallium/drivers/vc4/vc4_qpu_emit.c
@@ -471,26 +471,23 @@ vc4_generate_code(struct vc4_context *vc4, struct vc4_compile *c)
case QOP_UNPACK_8A_F:
case QOP_UNPACK_8B_F:
case QOP_UNPACK_8C_F:
- case QOP_UNPACK_8D_F: {
+ case QOP_UNPACK_8D_F:
assert(src[0].mux == QPU_MUX_A);
- /* And, since we're setting the pack bits, if the
+ /* Since we're setting the pack bits, if the
* destination is in A it would get re-packed.
*/
- struct qpu_reg orig_dst = dst;
- if (orig_dst.mux == QPU_MUX_A)
- dst = qpu_rn(3);
-
- queue(c, qpu_a_FMAX(dst, src[0], src[0]));
+ queue(c, qpu_a_FMAX((dst.mux == QPU_MUX_A ?
+ qpu_rb(31) : dst),
+ src[0], src[0]));
*last_inst(c) |= QPU_SET_FIELD(QPU_UNPACK_8A +
(qinst->op -
QOP_UNPACK_8A_F),
QPU_UNPACK);
- if (orig_dst.mux == QPU_MUX_A) {
- queue(c, qpu_a_MOV(orig_dst, dst));
+ if (dst.mux == QPU_MUX_A) {
+ queue(c, qpu_a_MOV(dst, qpu_rb(31)));
}
- }
break;
default: