From: Alyssa Rosenzweig Date: Sun, 5 Apr 2020 22:06:08 +0000 (-0400) Subject: pan/bi: Add helper to debug port assignment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9114ebbe798e101b6bb2b86219cfd3ba9793068f;p=mesa.git pan/bi: Add helper to debug port assignment Signed-off-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/bifrost/bi_pack.c b/src/panfrost/bifrost/bi_pack.c index f1eb3be52b0..8c91c0436d2 100644 --- a/src/panfrost/bifrost/bi_pack.c +++ b/src/panfrost/bifrost/bi_pack.c @@ -77,6 +77,27 @@ struct bi_registers { bool first_instruction; }; +static inline void +bi_print_ports(struct bi_registers *regs) +{ + for (unsigned i = 0; i < 2; ++i) { + if (regs->enabled[i]) + printf("port %u: %u\n", i, regs->port[i]); + } + + if (regs->write_fma || regs->write_add) { + printf("port 2 (%s): %u\n", + regs->write_fma ? "FMA" : "ADD", + regs->port[2]); + } + + if ((regs->write_fma && regs->write_add) || regs->read_port3) { + printf("port 3 (%s): %u\n", + regs->read_port3 ? "read" : "ADD", + regs->port[3]); + } +} + /* The uniform/constant slot allows loading a contiguous 64-bit immediate or * pushed uniform per bundle. Figure out which one we need in the bundle (the * scheduler needs to ensure we only have one type per bundle), validate @@ -216,7 +237,11 @@ bi_assign_port_read(struct bi_registers *regs, unsigned src) if (!regs->read_port3) { regs->port[3] = reg; regs->read_port3 = true; + return; } + + bi_print_ports(regs); + unreachable("Failed to find a free port for src"); } static struct bi_registers