broadcom/compiler: don't move subgroup reduction instructions above setmsf

These use the sample mask to decide about active lanes, so we need
to make sure we don't move them above a previous setmsf instruction.

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27211>
This commit is contained in:
Iago Toral Quiroga 2024-01-30 08:10:56 +01:00 committed by Marge Bot
parent 9bbfbc2089
commit 295f906517

View file

@ -85,6 +85,7 @@ struct schedule_state {
struct schedule_node *last_unif;
struct schedule_node *last_rtop;
struct schedule_node *last_unifa;
struct schedule_node *last_setmsf;
enum direction dir;
/* Estimated cycle when the current instruction would start. */
uint32_t time;
@ -378,15 +379,24 @@ calculate_deps(struct schedule_state *state, struct schedule_node *n)
case V3D_QPU_A_MSF:
add_read_dep(state, state->last_tlb, n);
add_read_dep(state, state->last_setmsf, n);
break;
case V3D_QPU_A_SETMSF:
add_write_dep(state, &state->last_setmsf, n);
add_write_dep(state, &state->last_tmu_write, n);
FALLTHROUGH;
case V3D_QPU_A_SETREVF:
add_write_dep(state, &state->last_tlb, n);
break;
case V3D_QPU_A_BALLOT:
case V3D_QPU_A_BCASTF:
case V3D_QPU_A_ALLEQ:
case V3D_QPU_A_ALLFEQ:
add_read_dep(state, state->last_setmsf, n);
break;
default:
break;
}