From 638802d68f709674ba46e10812e87149ac7af786 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Wed, 4 Dec 2024 09:12:23 -0800 Subject: [PATCH] intel/brw: Dump errors when brw_assemble() fails EU validation This will allow executor to show proper inline errors. Reviewed-by: Ian Romanick Part-of: --- src/intel/compiler/brw_asm.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/intel/compiler/brw_asm.c b/src/intel/compiler/brw_asm.c index fa1ced6c174..0eb0d4a5987 100644 --- a/src/intel/compiler/brw_asm.c +++ b/src/intel/compiler/brw_asm.c @@ -121,10 +121,15 @@ brw_assemble(void *mem_ctx, const struct intel_device_info *devinfo, goto end; } + /* Add "inst groups" so validation errors can be recorded. */ + for (int i = 0; i <= p->next_insn_offset; i += 16) + disasm_new_inst_group(disasm_info, i); + if (!brw_validate_instructions(p->isa, p->store, 0, p->next_insn_offset, disasm_info)) { + dump_assembly(p->store, 0, p->next_insn_offset, disasm_info, NULL); ralloc_free(disasm_info); - fprintf(stderr, "Invalid instructions\n"); + fprintf(stderr, "Invalid instructions.\n"); goto end; } @@ -145,11 +150,8 @@ brw_assemble(void *mem_ctx, const struct intel_device_info *devinfo, result.bin_size -= compacted * 8; } - if ((flags & BRW_ASSEMBLE_DUMP) != 0) { - disasm_new_inst_group(disasm_info, 0); - disasm_new_inst_group(disasm_info, p->next_insn_offset); + if ((flags & BRW_ASSEMBLE_DUMP) != 0) dump_assembly(p->store, 0, p->next_insn_offset, disasm_info, NULL); - } ralloc_free(disasm_info);