ir3: Don't manually scalarize SSBO loads

We call nir_lower_io_to_scalar already, so this should be dead code.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28949>
This commit is contained in:
Connor Abbott 2024-04-25 15:15:52 -04:00 committed by Marge Bot
parent cd15dec66e
commit fe4ebace79
1 changed files with 0 additions and 36 deletions

View File

@ -144,36 +144,6 @@ ir3_nir_try_propagate_bit_shift(nir_builder *b, nir_def *offset,
return new_offset;
}
/* isam doesn't have an "untyped" field, so it can only load 1 component at a
* time because our storage buffer descriptors use a 1-component format.
* Therefore we need to scalarize any loads that would use isam.
*/
static void
scalarize_load(nir_intrinsic_instr *intrinsic, nir_builder *b)
{
struct nir_def *results[NIR_MAX_VEC_COMPONENTS];
nir_def *descriptor = intrinsic->src[0].ssa;
nir_def *offset = intrinsic->src[1].ssa;
nir_def *new_offset = intrinsic->src[2].ssa;
unsigned comp_size = intrinsic->def.bit_size / 8;
for (unsigned i = 0; i < intrinsic->def.num_components; i++) {
results[i] =
nir_load_ssbo_ir3(b, 1, intrinsic->def.bit_size, descriptor,
nir_iadd_imm(b, offset, i * comp_size),
nir_iadd_imm(b, new_offset, i),
.access = nir_intrinsic_access(intrinsic),
.align_mul = nir_intrinsic_align_mul(intrinsic),
.align_offset = nir_intrinsic_align_offset(intrinsic));
}
nir_def *result = nir_vec(b, results, intrinsic->def.num_components);
nir_def_rewrite_uses(&intrinsic->def, result);
nir_instr_remove(&intrinsic->instr);
}
static bool
lower_offset_for_ssbo(nir_intrinsic_instr *intrinsic, nir_builder *b,
unsigned ir3_ssbo_opcode, uint8_t offset_src_idx)
@ -258,12 +228,6 @@ lower_offset_for_ssbo(nir_intrinsic_instr *intrinsic, nir_builder *b,
/* Finally remove the original intrinsic. */
nir_instr_remove(&intrinsic->instr);
if (new_intrinsic->intrinsic == nir_intrinsic_load_ssbo_ir3 &&
(nir_intrinsic_access(new_intrinsic) & ACCESS_CAN_REORDER) &&
ir3_bindless_resource(new_intrinsic->src[0]) &&
new_intrinsic->num_components > 1)
scalarize_load(new_intrinsic, b);
return true;
}