summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSagar Ghuge <sagar.ghuge@intel.com>2020-02-07 14:36:12 -0800
committerMarge Bot <eric+marge@anholt.net>2020-02-25 22:23:38 +0000
commit2f83daedb19d25744b2b89939713c9ca9e7ad29f (patch)
tree23457bf5042e35fe2c4e4de05f7813c1e81ad3bc
parent0b0e958f4f096863fc29d8acd000caa0f0ff5bc2 (diff)
intel/tools: Print c_literals 4 byte wide
We already print hex value a byte wide, instead of printing c_literal byte wide, we can print it 4 byte wide, which gives us 2 different combinations. v2: Fix the aliasing issue (Matt Turner) Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3952>
-rw-r--r--src/intel/tools/i965_asm.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/intel/tools/i965_asm.c b/src/intel/tools/i965_asm.c
index 9479d6c2fbd..9fb0cdce0cc 100644
--- a/src/intel/tools/i965_asm.c
+++ b/src/intel/tools/i965_asm.c
@@ -56,6 +56,14 @@ print_help(const char *progname, FILE *file)
progname);
}
+static uint32_t
+get_dword(const brw_inst *inst, int idx)
+{
+ uint32_t dword;
+ memcpy(&dword, (char *)inst + 4 * idx, sizeof(dword));
+ return dword;
+}
+
static void
print_instruction(FILE *output, bool compact, const brw_inst *instruction)
{
@@ -73,11 +81,11 @@ print_instruction(FILE *output, bool compact, const brw_inst *instruction)
break;
}
case OPT_OUTPUT_C_LITERAL: {
- fprintf(output, "\t0x%02x,", ((unsigned char *)instruction)[0]);
+ fprintf(output, "\t0x%08x,", get_dword(instruction, 0));
+
+ for (unsigned i = 1; i < byte_limit / 4; i++)
+ fprintf(output, " 0x%08x,", get_dword(instruction, i));
- for (unsigned i = 1; i < byte_limit; i++) {
- fprintf(output, " 0x%02x,", ((unsigned char *)instruction)[i]);
- }
break;
}
case OPT_OUTPUT_BIN: