mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 12:28:07 +02:00
broadcom/compiler: support global load/store intrinsics
It's the same as global_2x32 as there the 2nd component is ignored anyway Acked-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29711>
This commit is contained in:
parent
358e09f9ff
commit
66b58e8a0e
1 changed files with 17 additions and 1 deletions
|
|
@ -217,10 +217,13 @@ v3d_general_tmu_op(nir_intrinsic_instr *instr)
|
|||
case nir_intrinsic_load_uniform:
|
||||
case nir_intrinsic_load_shared:
|
||||
case nir_intrinsic_load_scratch:
|
||||
case nir_intrinsic_load_global:
|
||||
case nir_intrinsic_load_global_2x32:
|
||||
case nir_intrinsic_load_global_constant:
|
||||
case nir_intrinsic_store_ssbo:
|
||||
case nir_intrinsic_store_shared:
|
||||
case nir_intrinsic_store_scratch:
|
||||
case nir_intrinsic_store_global:
|
||||
case nir_intrinsic_store_global_2x32:
|
||||
return V3D_TMU_OP_REGULAR;
|
||||
|
||||
|
|
@ -228,7 +231,9 @@ v3d_general_tmu_op(nir_intrinsic_instr *instr)
|
|||
case nir_intrinsic_ssbo_atomic_swap:
|
||||
case nir_intrinsic_shared_atomic:
|
||||
case nir_intrinsic_shared_atomic_swap:
|
||||
case nir_intrinsic_global_atomic:
|
||||
case nir_intrinsic_global_atomic_2x32:
|
||||
case nir_intrinsic_global_atomic_swap:
|
||||
case nir_intrinsic_global_atomic_swap_2x32:
|
||||
return v3d_general_tmu_op_for_atomic(instr);
|
||||
|
||||
|
|
@ -510,6 +515,7 @@ ntq_emit_tmu_general(struct v3d_compile *c, nir_intrinsic_instr *instr,
|
|||
bool atomic_add_replaced =
|
||||
(instr->intrinsic == nir_intrinsic_ssbo_atomic ||
|
||||
instr->intrinsic == nir_intrinsic_shared_atomic ||
|
||||
instr->intrinsic == nir_intrinsic_global_atomic ||
|
||||
instr->intrinsic == nir_intrinsic_global_atomic_2x32) &&
|
||||
nir_intrinsic_atomic_op(instr) == nir_atomic_op_iadd &&
|
||||
(tmu_op == V3D_TMU_OP_WRITE_AND_READ_INC ||
|
||||
|
|
@ -518,6 +524,7 @@ ntq_emit_tmu_general(struct v3d_compile *c, nir_intrinsic_instr *instr,
|
|||
bool is_store = (instr->intrinsic == nir_intrinsic_store_ssbo ||
|
||||
instr->intrinsic == nir_intrinsic_store_scratch ||
|
||||
instr->intrinsic == nir_intrinsic_store_shared ||
|
||||
instr->intrinsic == nir_intrinsic_store_global ||
|
||||
instr->intrinsic == nir_intrinsic_store_global_2x32);
|
||||
|
||||
bool is_load = (instr->intrinsic == nir_intrinsic_load_uniform ||
|
||||
|
|
@ -525,7 +532,9 @@ ntq_emit_tmu_general(struct v3d_compile *c, nir_intrinsic_instr *instr,
|
|||
instr->intrinsic == nir_intrinsic_load_ssbo ||
|
||||
instr->intrinsic == nir_intrinsic_load_scratch ||
|
||||
instr->intrinsic == nir_intrinsic_load_shared ||
|
||||
instr->intrinsic == nir_intrinsic_load_global_2x32);
|
||||
instr->intrinsic == nir_intrinsic_load_global ||
|
||||
instr->intrinsic == nir_intrinsic_load_global_2x32 ||
|
||||
instr->intrinsic == nir_intrinsic_load_global_constant);
|
||||
|
||||
if (!is_load)
|
||||
c->tmu_dirty_rcl = true;
|
||||
|
|
@ -542,7 +551,9 @@ ntq_emit_tmu_general(struct v3d_compile *c, nir_intrinsic_instr *instr,
|
|||
instr->intrinsic == nir_intrinsic_load_ubo ||
|
||||
instr->intrinsic == nir_intrinsic_load_scratch ||
|
||||
instr->intrinsic == nir_intrinsic_load_shared ||
|
||||
instr->intrinsic == nir_intrinsic_load_global ||
|
||||
instr->intrinsic == nir_intrinsic_load_global_2x32 ||
|
||||
instr->intrinsic == nir_intrinsic_load_global_constant ||
|
||||
atomic_add_replaced) {
|
||||
offset_src = 0 + has_index;
|
||||
} else if (is_store) {
|
||||
|
|
@ -3390,6 +3401,8 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
|
|||
ntq_emit_load_uniform(c, instr);
|
||||
break;
|
||||
|
||||
case nir_intrinsic_load_global:
|
||||
case nir_intrinsic_load_global_constant:
|
||||
case nir_intrinsic_load_global_2x32:
|
||||
ntq_emit_tmu_general(c, instr, false, true);
|
||||
c->has_general_tmu_load = true;
|
||||
|
|
@ -3412,8 +3425,11 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr)
|
|||
ntq_emit_tmu_general(c, instr, false, false);
|
||||
break;
|
||||
|
||||
case nir_intrinsic_store_global:
|
||||
case nir_intrinsic_store_global_2x32:
|
||||
case nir_intrinsic_global_atomic:
|
||||
case nir_intrinsic_global_atomic_2x32:
|
||||
case nir_intrinsic_global_atomic_swap:
|
||||
case nir_intrinsic_global_atomic_swap_2x32:
|
||||
ntq_emit_tmu_general(c, instr, false, true);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue