summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-08-24 17:43:02 -0700
committerEric Anholt <[email protected]>2014-08-24 22:13:25 -0700
commit1a7035f386c4402b07e7a2073daf914f95bd0a02 (patch)
treebc99a2846adbe1a10db0a7799307abb8a136e644
parent3212bafc28ca3991a89e0554d1867eaa5fde6a0b (diff)
vc4: Ignore WADDRs from the other half of the instruction when merging.
This allows setting the opposite-side WADDR to NOP (a non-zero value) in qpu_* helpers, so that we don't need to qpu_inst() merge them with NOPs all the time just to get the waddr set.
-rw-r--r--src/gallium/drivers/vc4/vc4_qpu.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/drivers/vc4/vc4_qpu.c b/src/gallium/drivers/vc4/vc4_qpu.c
index d74dee5689e..35c65dc2eb3 100644
--- a/src/gallium/drivers/vc4/vc4_qpu.c
+++ b/src/gallium/drivers/vc4/vc4_qpu.c
@@ -192,7 +192,8 @@ qpu_m_alu2(enum qpu_op_mul op,
uint64_t
qpu_inst(uint64_t add, uint64_t mul)
{
- uint64_t merge = add | mul;
+ uint64_t merge = ((add & ~QPU_WADDR_MUL_MASK) |
+ (mul & ~QPU_WADDR_ADD_MASK));
/* If either one has no signal field, then use the other's signal field.
* (since QPU_SIG_NONE != 0).