mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-09 12:40:23 +01:00
nir_lower_io_to_scalar: make use of nir_get_io_offset_src
Signed-off-by: Karol Herbst <kherbst@redhat.com> Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20106>
This commit is contained in:
parent
ce94d3e48d
commit
3cd641bebd
1 changed files with 4 additions and 6 deletions
|
|
@ -82,8 +82,7 @@ lower_load_to_scalar(nir_builder *b, nir_intrinsic_instr *intr)
|
|||
assert(intr->dest.is_ssa);
|
||||
|
||||
nir_ssa_def *loads[NIR_MAX_VEC_COMPONENTS];
|
||||
unsigned offset_idx = intr->intrinsic == nir_intrinsic_load_shared ? 0 : 1;
|
||||
nir_ssa_def *base_offset = intr->src[offset_idx].ssa;
|
||||
nir_ssa_def *base_offset = nir_get_io_offset_src(intr)->ssa;
|
||||
|
||||
for (unsigned i = 0; i < intr->num_components; i++) {
|
||||
nir_intrinsic_instr *chan_intr =
|
||||
|
|
@ -109,7 +108,7 @@ lower_load_to_scalar(nir_builder *b, nir_intrinsic_instr *intr)
|
|||
|
||||
/* increment offset per component */
|
||||
nir_ssa_def *offset = nir_iadd_imm(b, base_offset, i * (intr->dest.ssa.bit_size / 8));
|
||||
chan_intr->src[offset_idx] = nir_src_for_ssa(offset);
|
||||
*nir_get_io_offset_src(chan_intr) = nir_src_for_ssa(offset);
|
||||
|
||||
nir_builder_instr_insert(b, &chan_intr->instr);
|
||||
|
||||
|
|
@ -185,8 +184,7 @@ lower_store_to_scalar(nir_builder *b, nir_intrinsic_instr *intr)
|
|||
b->cursor = nir_before_instr(&intr->instr);
|
||||
|
||||
nir_ssa_def *value = nir_ssa_for_src(b, intr->src[0], intr->num_components);
|
||||
unsigned offset_idx = intr->intrinsic == nir_intrinsic_store_shared ? 1 : 2;
|
||||
nir_ssa_def *base_offset = intr->src[offset_idx].ssa;
|
||||
nir_ssa_def *base_offset = nir_get_io_offset_src(intr)->ssa;
|
||||
|
||||
/* iterate wrmask instead of num_components to handle split components */
|
||||
u_foreach_bit(i, nir_intrinsic_write_mask(intr)) {
|
||||
|
|
@ -211,7 +209,7 @@ lower_store_to_scalar(nir_builder *b, nir_intrinsic_instr *intr)
|
|||
|
||||
/* increment offset per component */
|
||||
nir_ssa_def *offset = nir_iadd_imm(b, base_offset, i * (value->bit_size / 8));
|
||||
chan_intr->src[offset_idx] = nir_src_for_ssa(offset);
|
||||
*nir_get_io_offset_src(chan_intr) = nir_src_for_ssa(offset);
|
||||
|
||||
nir_builder_instr_insert(b, &chan_intr->instr);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue