From c5ef35c4334d7a9e6fdc10cbf10d6f90b963e714 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 1 May 2020 14:54:40 -0400 Subject: [PATCH] pan/bi: Passthrough direct ld_var addresses Don't bother wasting a constant. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/bifrost/bi_pack.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/panfrost/bifrost/bi_pack.c b/src/panfrost/bifrost/bi_pack.c index 60e3ddeab67..95c2353389a 100644 --- a/src/panfrost/bifrost/bi_pack.c +++ b/src/panfrost/bifrost/bi_pack.c @@ -169,6 +169,10 @@ bi_assign_uniform_constant_single( if (s == 0 && (ins->type == BI_LOAD_VAR_ADDRESS || ins->type == BI_LOAD_ATTR)) continue; if (ins->src[s] & BIR_INDEX_CONSTANT) { + /* Let direct addresses through */ + if (ins->type == BI_LOAD_VAR) + continue; + bool hi = false; bool b64 = nir_alu_type_get_type_size(ins->src_types[s]) > 32; uint64_t cons = bi_get_immediate(ins, s); @@ -1199,7 +1203,6 @@ bi_pack_add_ld_vary(bi_clause *clause, bi_instruction *ins, struct bi_registers if (ins->src[0] & BIR_INDEX_CONSTANT) { /* Direct uses address field directly */ packed_addr = bi_get_immediate(ins, 0); - assert(packed_addr < 0b1000); } else { /* Indirect gets an extra source */ packed_addr = bi_get_src(ins, regs, 0, false) | 0b11000; -- 2.30.2