nir: Expose nir_print_instr() for debug prints
authorEric Anholt <eric@anholt.net>
Wed, 5 Nov 2014 23:10:37 +0000 (15:10 -0800)
committerEric Anholt <eric@anholt.net>
Sat, 24 Jan 2015 01:30:11 +0000 (17:30 -0800)
It's nice to have this present in your default cases so you can see what
instruction is triggering an abort.

v2: Just pass a NULL state, now that it won't crash when you do.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/glsl/nir/nir.h
src/glsl/nir/nir_print.c

index 41f7ae7550d44a7046a07346e5c42b0afd2fbd93..119ca01f99185f663d39de7200e2daadeafbd83c 100644 (file)
@@ -1485,6 +1485,7 @@ void nir_index_ssa_defs(nir_function_impl *impl);
 void nir_index_blocks(nir_function_impl *impl);
 
 void nir_print_shader(nir_shader *shader, FILE *fp);
+void nir_print_instr(nir_instr *instr, FILE *fp);
 
 #ifdef DEBUG
 void nir_validate_shader(nir_shader *shader);
index 2ef55ed36f30ed12820709f6a3dfb399a2c89e42..9c07950a67d0615f6aaa7e3937afcdd4251828e1 100644 (file)
@@ -621,8 +621,6 @@ print_instr(nir_instr *instr, print_var_state *state, unsigned tabs, FILE *fp)
       unreachable("Invalid instruction type");
       break;
    }
-
-   fprintf(fp, "\n");
 }
 
 static int
@@ -668,6 +666,7 @@ print_block(nir_block *block, print_var_state *state, unsigned tabs, FILE *fp)
 
    nir_foreach_instr(block, instr) {
       print_instr(instr, state, tabs, fp);
+      fprintf(fp, "\n");
    }
 
    print_tabs(tabs, fp);
@@ -881,3 +880,9 @@ nir_print_shader(nir_shader *shader, FILE *fp)
 
    destroy_print_state(&state);
 }
+
+void
+nir_print_instr(nir_instr *instr, FILE *fp)
+{
+   print_instr(instr, NULL, 0, fp);
+}