nir: print 8 and 16 bit constants correctly

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Karol Herbst
2018-04-22 01:31:22 +02:00
parent 543a8c66a7
commit 14943add44

View File

@@ -27,6 +27,7 @@
#include "nir.h" #include "nir.h"
#include "compiler/shader_enums.h" #include "compiler/shader_enums.h"
#include "util/half_float.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <inttypes.h> /* for PRIx64 macro */ #include <inttypes.h> /* for PRIx64 macro */
@@ -846,11 +847,22 @@ print_load_const_instr(nir_load_const_instr *instr, print_state *state)
* and then print the float in a comment for readability. * and then print the float in a comment for readability.
*/ */
if (instr->def.bit_size == 64) switch (instr->def.bit_size) {
case 64:
fprintf(fp, "0x%16" PRIx64 " /* %f */", instr->value.u64[i], fprintf(fp, "0x%16" PRIx64 " /* %f */", instr->value.u64[i],
instr->value.f64[i]); instr->value.f64[i]);
else break;
case 32:
fprintf(fp, "0x%08x /* %f */", instr->value.u32[i], instr->value.f32[i]); fprintf(fp, "0x%08x /* %f */", instr->value.u32[i], instr->value.f32[i]);
break;
case 16:
fprintf(fp, "0x%04x /* %f */", instr->value.u16[i],
_mesa_half_to_float(instr->value.u16[i]));
break;
case 8:
fprintf(fp, "0x%02x", instr->value.u8[i]);
break;
}
} }
fprintf(fp, ")"); fprintf(fp, ")");