The “Program” class keeps a pointer to the “nv50_ir_prog_info” structure, so 
you could
just use that in the “Program::print()” function, rather than passing the flag 
as
an argument to “print”.

Pierre

On 2017-11-17 — 17:21, Tobias Klausmann wrote:
> This comes in handy when checking "NV50_PROG_DEBUG=1" outputs with diff!
> 
> V2:
>  - Use environmental variable (Karol Herbst)
> 
> Signed-off-by: Tobias Klausmann <tobias.johannes.klausm...@mni.thm.de>
> ---
>  src/gallium/drivers/nouveau/codegen/nv50_ir.cpp        |  6 +++---
>  src/gallium/drivers/nouveau/codegen/nv50_ir.h          |  2 +-
>  src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h   |  1 +
>  src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp  | 14 ++++++++++----
>  src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp |  2 +-
>  src/gallium/drivers/nouveau/nouveau_compiler.c         |  3 +++
>  src/gallium/drivers/nouveau/nv50/nv50_program.c        |  2 ++
>  src/gallium/drivers/nouveau/nvc0/nvc0_program.c        |  2 ++
>  8 files changed, 23 insertions(+), 9 deletions(-)
> 
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp 
> b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp
> index e9363101bf..4bf6c73837 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.cpp
> @@ -1249,7 +1249,7 @@ nv50_ir_generate_code(struct nv50_ir_prog_info *info)
>     if (ret < 0)
>        goto out;
>     if (prog->dbgFlags & NV50_IR_DEBUG_VERBOSE)
> -      prog->print();
> +      prog->print(info->omitLineNum);
>  
>     targ->parseDriverInfo(info);
>     prog->getTarget()->runLegalizePass(prog, nv50_ir::CG_STAGE_PRE_SSA);
> @@ -1257,13 +1257,13 @@ nv50_ir_generate_code(struct nv50_ir_prog_info *info)
>     prog->convertToSSA();
>  
>     if (prog->dbgFlags & NV50_IR_DEBUG_VERBOSE)
> -      prog->print();
> +      prog->print(info->omitLineNum);
>  
>     prog->optimizeSSA(info->optLevel);
>     prog->getTarget()->runLegalizePass(prog, nv50_ir::CG_STAGE_SSA);
>  
>     if (prog->dbgFlags & NV50_IR_DEBUG_BASIC)
> -      prog->print();
> +      prog->print(info->omitLineNum);
>  
>     if (!prog->registerAllocation()) {
>        ret = -4;
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir.h 
> b/src/gallium/drivers/nouveau/codegen/nv50_ir.h
> index f2ce16d882..a3c7fd2f94 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir.h
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir.h
> @@ -1249,7 +1249,7 @@ public:
>     Program(Type type, Target *targ);
>     ~Program();
>  
> -   void print();
> +   void print(bool omitLineNum);
>  
>     Type getType() const { return progType; }
>  
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h 
> b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h
> index ffd53c9cd3..604a22ba89 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_driver.h
> @@ -82,6 +82,7 @@ struct nv50_ir_prog_info
>  
>     uint8_t optLevel; /* optimization level (0 to 3) */
>     uint8_t dbgFlags;
> +   bool omitLineNum;
>  
>     struct {
>        int16_t maxGPR;     /* may be -1 if none used */
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp 
> b/src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp
> index 9145801b62..d6fe928af4 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_print.cpp
> @@ -691,7 +691,7 @@ void Instruction::print() const
>  class PrintPass : public Pass
>  {
>  public:
> -   PrintPass() : serial(0) { }
> +   PrintPass(bool omitLineNum = false) : serial(0), omit_serial(omitLineNum) 
> { }
>  
>     virtual bool visit(Function *);
>     virtual bool visit(BasicBlock *);
> @@ -699,6 +699,7 @@ public:
>  
>  private:
>     int serial;
> +   bool omit_serial;
>  };
>  
>  bool
> @@ -762,7 +763,12 @@ PrintPass::visit(BasicBlock *bb)
>  bool
>  PrintPass::visit(Instruction *insn)
>  {
> -   INFO("%3i: ", serial++);
> +   if (omit_serial) {
> +      INFO("     ");
> +      serial++;
> +   }
> +   else
> +      INFO("%3i: ", serial++);
>     insn->print();
>     return true;
>  }
> @@ -775,9 +781,9 @@ Function::print()
>  }
>  
>  void
> -Program::print()
> +Program::print(bool omitLineNum)
>  {
> -   PrintPass pass;
> +   PrintPass pass(omitLineNum);
>     init_colours();
>     pass.run(this, true, false);
>  }
> diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp 
> b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp
> index 298e7c6ef9..96ad70d28a 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target.cpp
> @@ -371,7 +371,7 @@ Program::emitBinary(struct nv50_ir_prog_info *info)
>     emit->prepareEmission(this);
>  
>     if (dbgFlags & NV50_IR_DEBUG_BASIC)
> -      this->print();
> +      this->print(info->omitLineNum);
>  
>     if (!binSize) {
>        code = NULL;
> diff --git a/src/gallium/drivers/nouveau/nouveau_compiler.c 
> b/src/gallium/drivers/nouveau/nouveau_compiler.c
> index 3151a6f420..20a4966433 100644
> --- a/src/gallium/drivers/nouveau/nouveau_compiler.c
> +++ b/src/gallium/drivers/nouveau/nouveau_compiler.c
> @@ -122,6 +122,8 @@ 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) ? true : 
> false;
>  
>     ret = nv50_ir_generate_code(&info);
>     if (ret) {
> @@ -143,6 +145,7 @@ main(int argc, char *argv[])
>     FILE *f;
>     char text[65536] = {0};
>     unsigned size = 0, *code = NULL;
> +   bool omitLineNum = false;
>  
>     for (i = 1; i < argc; i++) {
>        if (!strcmp(argv[i], "-a"))
> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.c 
> b/src/gallium/drivers/nouveau/nv50/nv50_program.c
> index 6e943a3d94..fb5c9ed777 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv50_program.c
> +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.c
> @@ -367,6 +367,8 @@ 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) ? true : 
> false;
>  #else
>     info->optLevel = 3;
>  #endif
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c 
> b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
> index c95a96c717..8dced66437 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_program.c
> @@ -575,6 +575,8 @@ 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) ? true : 
> false;
>  #else
>     info->optLevel = 3;
>  #endif
> -- 
> 2.15.0
> 
> _______________________________________________
> Nouveau mailing list
> Nouveau@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/nouveau

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/nouveau

Reply via email to