broadcom/compiler: disallow reading two uniforms in the same instruction

The simulator asserts on this, which can happen if we merge a ldunif
(or any other instruction that reads a uniform implicitly) and
ldunifa in the same instruction.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8980>
This commit is contained in:
Iago Toral Quiroga
2021-02-11 12:16:10 +01:00
committed by Marge Bot
parent e8e4bdae8d
commit efc75e13ea
+16
View File
@@ -791,6 +791,22 @@ choose_instruction_to_schedule(const struct v3d_device_info *devinfo,
dag.link) {
const struct v3d_qpu_instr *inst = &n->inst->qpu;
/* Simulator complains if we have two uniforms loaded in the
* the same instruction, which could happen if we have a ldunif
* or sideband uniform and we pair that with ldunifa.
*/
if (prev_inst) {
if (vir_has_uniform(prev_inst->inst) &&
(inst->sig.ldunifa || inst->sig.ldunifarf)) {
continue;
}
if ((prev_inst->inst->qpu.sig.ldunifa ||
prev_inst->inst->qpu.sig.ldunifarf) &&
vir_has_uniform(n->inst)) {
continue;
}
}
/* Don't choose the branch instruction until it's the last one
* left. We'll move it up to fit its delay slots after we
* choose it.