diff options
author | Eric Anholt <[email protected]> | 2014-12-09 16:34:37 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2014-12-09 18:32:36 -0800 |
commit | cff8c96a0d418f41e00aa97a13dc55e3ed213eb7 (patch) | |
tree | 44008833a3405db32659e3be07220541c98a0dad | |
parent | 25db8729dc53b60ee0caade5e797e99d6ad13fa3 (diff) |
vc4: Refuse to merge instructions involving 32-bit immediate loads.
An immediate load overwrites the mul and add operations, so you can't
merge with them.
-rw-r--r-- | src/gallium/drivers/vc4/vc4_qpu.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_qpu.c b/src/gallium/drivers/vc4/vc4_qpu.c index 6daa07281f4..faf8790b572 100644 --- a/src/gallium/drivers/vc4/vc4_qpu.c +++ b/src/gallium/drivers/vc4/vc4_qpu.c @@ -356,6 +356,11 @@ qpu_merge_inst(uint64_t a, uint64_t b) if (qpu_num_sf_accesses(a) && qpu_num_sf_accesses(b)) return 0; + if (QPU_GET_FIELD(a, QPU_SIG) == QPU_SIG_LOAD_IMM || + QPU_GET_FIELD(b, QPU_SIG) == QPU_SIG_LOAD_IMM) { + return 0; + } + ok = ok && merge_fields(&merge, a, b, QPU_SIG_MASK, QPU_SET_FIELD(QPU_SIG_NONE, QPU_SIG)); |