From: Jonathan Marek Date: Wed, 5 Aug 2020 02:19:03 +0000 (-0400) Subject: freedreno/ir3: remove indirect input load X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=acb6163d5e683087bbfdea93ec13d02bd1a4ed59;p=mesa.git freedreno/ir3: remove indirect input load nir_intrinsic_load_input should only be used with VS and FS, indirect input shouldn't be possible for those. Signed-off-by: Jonathan Marek Part-of: --- diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 8172e113c1a..d7999ec2831 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -50,27 +50,6 @@ ir3_handle_bindless_cat6(struct ir3_instruction *instr, nir_src rsrc) instr->cat6.base = nir_intrinsic_desc_set(intrin); } -static struct ir3_instruction * -create_indirect_load(struct ir3_context *ctx, unsigned arrsz, int n, - struct ir3_instruction *address, struct ir3_instruction *collect) -{ - struct ir3_block *block = ctx->block; - struct ir3_instruction *mov; - struct ir3_register *src; - - mov = ir3_instr_create(block, OPC_MOV); - mov->cat1.src_type = TYPE_U32; - mov->cat1.dst_type = TYPE_U32; - __ssa_dst(mov); - src = __ssa_src(mov, collect, IR3_REG_RELATIV); - src->size = arrsz; - src->array.offset = n; - - ir3_instr_set_address(mov, address); - - return mov; -} - static struct ir3_instruction * create_input(struct ir3_context *ctx, unsigned compmask) { @@ -1714,15 +1693,7 @@ emit_intrinsic(struct ir3_context *ctx, nir_intrinsic_instr *intr) compile_assert(ctx, ctx->inputs[n]); } } else { - src = ir3_get_src(ctx, &intr->src[0]); - struct ir3_instruction *collect = - ir3_create_collect(ctx, ctx->ir->inputs, ctx->ninputs); - struct ir3_instruction *addr = ir3_get_addr0(ctx, src[0], 4); - for (int i = 0; i < dest_components; i++) { - unsigned n = idx * 4 + i + comp; - dst[i] = create_indirect_load(ctx, ctx->ninputs, - n, addr, collect); - } + ir3_context_error(ctx, "unhandled"); } break; /* All SSBO intrinsics should have been lowered by 'lower_io_offsets'