mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 13:58:04 +02:00
broadcom/compiler: prevent rf2-3 usage in thread end delay slots for v71
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25450>
This commit is contained in:
parent
28bb1b3ff6
commit
caf28e5681
1 changed files with 28 additions and 9 deletions
|
|
@ -1691,16 +1691,35 @@ qpu_inst_valid_in_thrend_slot(struct v3d_compile *c,
|
|||
if (c->devinfo->ver < 40 && inst->alu.add.op == V3D_QPU_A_SETMSF)
|
||||
return false;
|
||||
|
||||
/* RF0-2 might be overwritten during the delay slots by
|
||||
* fragment shader setup.
|
||||
*/
|
||||
if (inst->raddr_a < 3 && v3d_qpu_uses_mux(inst, V3D_QPU_MUX_A))
|
||||
return false;
|
||||
if (c->devinfo->ver <= 42) {
|
||||
/* RF0-2 might be overwritten during the delay slots by
|
||||
* fragment shader setup.
|
||||
*/
|
||||
if (inst->raddr_a < 3 && v3d_qpu_uses_mux(inst, V3D_QPU_MUX_A))
|
||||
return false;
|
||||
|
||||
if (inst->raddr_b < 3 &&
|
||||
!inst->sig.small_imm_b &&
|
||||
v3d_qpu_uses_mux(inst, V3D_QPU_MUX_B)) {
|
||||
return false;
|
||||
if (inst->raddr_b < 3 &&
|
||||
!inst->sig.small_imm_b &&
|
||||
v3d_qpu_uses_mux(inst, V3D_QPU_MUX_B)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (c->devinfo->ver >= 71) {
|
||||
/* RF2-3 might be overwritten during the delay slots by
|
||||
* fragment shader setup.
|
||||
*
|
||||
* FIXME: handle small immediate cases
|
||||
*/
|
||||
if (v3d71_qpu_reads_raddr(inst, 2) ||
|
||||
v3d71_qpu_reads_raddr(inst, 3)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (v3d71_qpu_writes_waddr_explicitly(c->devinfo, inst, 2) ||
|
||||
v3d71_qpu_writes_waddr_explicitly(c->devinfo, inst, 3)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue