From 1b32d4b7d446238e0c39758f0713204776b74a17 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Mon, 28 Feb 2022 22:25:52 -0800 Subject: [PATCH] nouveau/nv50: Print the number of loops in shader-db output. This is important so you don't go comparing the number of instructions emitted when you unrolled loops differently. Reviewed-by: Timothy Arceri Reviewed-by: Karol Herbst Part-of: --- src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h | 1 + src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 2 ++ src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 2 ++ src/gallium/drivers/nouveau/nv50/nv50_program.c | 4 ++-- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h index 2a81eceb2e5..0e350ce099b 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h @@ -160,6 +160,7 @@ struct nv50_ir_prog_info_out uint8_t numOutputs; uint8_t numPatchConstants; /* also included in numInputs/numOutputs */ uint8_t numSysVals; + uint32_t loops; union { struct { diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp index 192f2f59c1b..ac6f3a7726e 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -1534,6 +1534,8 @@ Converter::visit(nir_loop *loop) curLoopDepth -= 1; + info_out->loops++; + return true; } diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp index d843d676da0..a597e82255a 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp @@ -3674,6 +3674,8 @@ Converter::handleInstruction(const struct tgsi_full_instruction *insn) bb->cfg.attach(&lbgnBB->cfg, Graph::Edge::TREE); setPosition(lbgnBB, true); mkFlow(OP_PRECONT, lbgnBB, CC_ALWAYS, NULL); + + info_out->loops++; } break; case TGSI_OPCODE_ENDLOOP: diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.c b/src/gallium/drivers/nouveau/nv50/nv50_program.c index 60081c665fe..dd67a19d30c 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.c @@ -453,9 +453,9 @@ nv50_program_translate(struct nv50_program *prog, uint16_t chipset, &prog->pipe.stream_output); util_debug_message(debug, SHADER_INFO, - "type: %d, local: %d, shared: %d, gpr: %d, inst: %d, bytes: %d", + "type: %d, local: %d, shared: %d, gpr: %d, inst: %d, loops: %d, bytes: %d", prog->type, info_out.bin.tlsSpace, info_out.bin.smemSize, - prog->max_gpr, info_out.bin.instructions, + prog->max_gpr, info_out.bin.instructions, info_out.loops, info_out.bin.codeSize); out: