In disassemble, a float immediate value is printf with %g, it
outputs a wrong value with 8 bytes, change it to be %f with the
correct 4 bytes. At some cases, the real data type is not float,
so also print the value in hex format.

Signed-off-by: Guo Yejun <[email protected]>
---
 backend/src/backend/gen/gen_mesa_disasm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/backend/src/backend/gen/gen_mesa_disasm.c 
b/backend/src/backend/gen/gen_mesa_disasm.c
index df6156c..090143e 100644
--- a/backend/src/backend/gen/gen_mesa_disasm.c
+++ b/backend/src/backend/gen/gen_mesa_disasm.c
@@ -986,7 +986,7 @@ static int imm(FILE *file, uint32_t type, const void* inst)
       format(file, "0x%xV", GEN_BITS_FIELD(inst, bits3.ud));
       break;
     case GEN_TYPE_F:
-      format(file, "%-gF", GEN_BITS_FIELD(inst, bits3.f));
+      format(file, "%.*fF (0x%x)", GEN_BITS_FIELD(inst, bits3.f), 
GEN_BITS_FIELD(inst, bits3.ud));
       break;
     case GEN_TYPE_UL:
       assert(!(gen_version < 80));
-- 
1.9.1

_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to