nir/print: add support for printing doubles and bitsize
v2: - Squash the printing doubles related patches into one patch (Sam). v3: - Print using PRIx64 format: long is 32-bit on some 32-bit platforms but long long is basically always 64-bit (Jason). Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
f5551f8a8b
commit
41c2541fc7
|
@ -29,6 +29,7 @@
|
|||
#include "compiler/shader_enums.h"
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <inttypes.h> /* for PRIx64 macro */
|
||||
|
||||
static void
|
||||
print_tabs(unsigned num_tabs, FILE *fp)
|
||||
|
@ -68,7 +69,7 @@ static void
|
|||
print_register_decl(nir_register *reg, print_state *state)
|
||||
{
|
||||
FILE *fp = state->fp;
|
||||
fprintf(fp, "decl_reg %s ", sizes[reg->num_components]);
|
||||
fprintf(fp, "decl_reg %s %u ", sizes[reg->num_components], reg->bit_size);
|
||||
if (reg->is_packed)
|
||||
fprintf(fp, "(packed) ");
|
||||
print_register(reg, state);
|
||||
|
@ -83,7 +84,8 @@ print_ssa_def(nir_ssa_def *def, print_state *state)
|
|||
FILE *fp = state->fp;
|
||||
if (def->name != NULL)
|
||||
fprintf(fp, "/* %s */ ", def->name);
|
||||
fprintf(fp, "%s ssa_%u", sizes[def->num_components], def->index);
|
||||
fprintf(fp, "%s %u ssa_%u", sizes[def->num_components], def->bit_size,
|
||||
def->index);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -279,6 +281,13 @@ print_constant(nir_constant *c, const struct glsl_type *type, print_state *state
|
|||
}
|
||||
break;
|
||||
|
||||
case GLSL_TYPE_DOUBLE:
|
||||
for (i = 0; i < total_elems; i++) {
|
||||
if (i > 0) fprintf(fp, ", ");
|
||||
fprintf(fp, "%f", c->value.d[i]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GLSL_TYPE_STRUCT:
|
||||
for (i = 0; i < c->num_elements; i++) {
|
||||
if (i > 0) fprintf(fp, ", ");
|
||||
|
@ -713,7 +722,11 @@ print_load_const_instr(nir_load_const_instr *instr, print_state *state)
|
|||
* and then print the float in a comment for readability.
|
||||
*/
|
||||
|
||||
fprintf(fp, "0x%08x /* %f */", instr->value.u32[i], instr->value.f32[i]);
|
||||
if (instr->def.bit_size == 64)
|
||||
fprintf(fp, "0x%16" PRIx64 " /* %f */", instr->value.u64[i],
|
||||
instr->value.f64[i]);
|
||||
else
|
||||
fprintf(fp, "0x%08x /* %f */", instr->value.u32[i], instr->value.f32[i]);
|
||||
}
|
||||
|
||||
fprintf(fp, ")");
|
||||
|
|
Loading…
Reference in New Issue