nouveau/compiler: Allow to omit line numbers when printing instructions

This comes in handy when checking "NV50_PROG_DEBUG=1" outputs with diff!

V2:
 - Use environmental variable (Karol Herbst)
V3:
 - Use the already populated nv50_ir_prog_info to forward information to the
   print pass (Pierre Moreau)
V4:
 - get rid of default value in PrintPass constructor

Signed-off-by: Tobias Klausmann <tobias.johannes.klausmann@mni.thm.de>
Reviewed-by: Pierre Moreau <pierre.morrow@free.fr>
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
Tobias Klausmann 2017-11-12 02:51:55 +01:00 committed by Ilia Mirkin
parent 0fed7f83ba
commit 068a72fbcb
5 changed files with 13 additions and 4 deletions

View file

@ -82,6 +82,7 @@ struct nv50_ir_prog_info
uint8_t optLevel; /* optimization level (0 to 3) */
uint8_t dbgFlags;
bool omitLineNum; /* only used for printing the prog when dbgFlags is set */
struct {
int16_t maxGPR; /* may be -1 if none used */

View file

@ -689,7 +689,7 @@ void Instruction::print() const
class PrintPass : public Pass
{
public:
PrintPass() : serial(0) { }
PrintPass(bool omitLineNum) : serial(0), omit_serial(omitLineNum) { }
virtual bool visit(Function *);
virtual bool visit(BasicBlock *);
@ -697,6 +697,7 @@ public:
private:
int serial;
bool omit_serial;
};
bool
@ -760,7 +761,11 @@ PrintPass::visit(BasicBlock *bb)
bool
PrintPass::visit(Instruction *insn)
{
INFO("%3i: ", serial++);
if (omit_serial)
INFO(" ");
else
INFO("%3i: ", serial);
serial++;
insn->print();
return true;
}
@ -768,14 +773,14 @@ PrintPass::visit(Instruction *insn)
void
Function::print()
{
PrintPass pass;
PrintPass pass(prog->driver->omitLineNum);
pass.run(this, true, false);
}
void
Program::print()
{
PrintPass pass;
PrintPass pass(driver->omitLineNum);
init_colours();
pass.run(this, true, false);
}

View file

@ -122,6 +122,7 @@ nouveau_codegen(int chipset, int type, struct tgsi_token tokens[],
info.optLevel = debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
info.dbgFlags = debug_get_num_option("NV50_PROG_DEBUG", 0);
info.omitLineNum = debug_get_num_option("NV50_PROG_DEBUG_OMIT_LINENUM", 0);
ret = nv50_ir_generate_code(&info);
if (ret) {

View file

@ -367,6 +367,7 @@ nv50_program_translate(struct nv50_program *prog, uint16_t chipset,
#ifdef DEBUG
info->optLevel = debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
info->dbgFlags = debug_get_num_option("NV50_PROG_DEBUG", 0);
info->omitLineNum = debug_get_num_option("NV50_PROG_DEBUG_OMIT_LINENUM", 0);
#else
info->optLevel = 3;
#endif

View file

@ -575,6 +575,7 @@ nvc0_program_translate(struct nvc0_program *prog, uint16_t chipset,
info->target = debug_get_num_option("NV50_PROG_CHIPSET", chipset);
info->optLevel = debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
info->dbgFlags = debug_get_num_option("NV50_PROG_DEBUG", 0);
info->omitLineNum = debug_get_num_option("NV50_PROG_DEBUG_OMIT_LINENUM", 0);
#else
info->optLevel = 3;
#endif