mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 10:50:10 +01:00
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:
parent
9bbfbc2089
commit
295f906517
1 changed files with 10 additions and 0 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue