From fe4ebace7902e2686a9ab888725c9fa64e17ee3c Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Thu, 25 Apr 2024 15:15:52 -0400 Subject: [PATCH] ir3: Don't manually scalarize SSBO loads We call nir_lower_io_to_scalar already, so this should be dead code. Part-of: --- src/freedreno/ir3/ir3_nir_lower_io_offsets.c | 36 -------------------- 1 file changed, 36 deletions(-) diff --git a/src/freedreno/ir3/ir3_nir_lower_io_offsets.c b/src/freedreno/ir3/ir3_nir_lower_io_offsets.c index f23c93ac4b10a..04710be33f047 100644 --- a/src/freedreno/ir3/ir3_nir_lower_io_offsets.c +++ b/src/freedreno/ir3/ir3_nir_lower_io_offsets.c @@ -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; }