From 1f975e7af730c77a8607a81ae63e7f8141e20920 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Thu, 29 Feb 2024 17:53:53 -0800 Subject: [PATCH] intel/brw: Use C++ for brw_disasm_info.c This code uses cfg_t which we are going to rework a bit as part of flattening the IR types. It is easier if it can see C++ types for now. At the end we can change this back if needed. To avoid casting and be consistent with existing structs, use int for some offset parameters in the functions. Reviewed-by: Kenneth Graunke Part-of: --- ...{brw_disasm_info.c => brw_disasm_info.cpp} | 21 ++++++++++--------- src/intel/compiler/brw_disasm_info.h | 8 +++---- src/intel/compiler/meson.build | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) rename src/intel/compiler/{brw_disasm_info.c => brw_disasm_info.cpp} (90%) diff --git a/src/intel/compiler/brw_disasm_info.c b/src/intel/compiler/brw_disasm_info.cpp similarity index 90% rename from src/intel/compiler/brw_disasm_info.c rename to src/intel/compiler/brw_disasm_info.cpp index a2c3c1e9f0c..48528a230ed 100644 --- a/src/intel/compiler/brw_disasm_info.c +++ b/src/intel/compiler/brw_disasm_info.cpp @@ -68,7 +68,7 @@ dump_assembly(void *assembly, int start_offset, int end_offset, last_annotation_ir = group->ir; if (last_annotation_ir) { fprintf(stderr, " "); - nir_print_instr(group->ir, stderr); + nir_print_instr((nir_instr *)group->ir, stderr); fprintf(stderr, "\n"); } } @@ -115,8 +115,9 @@ disasm_initialize(const struct brw_isa_info *isa, } struct inst_group * -disasm_new_inst_group(struct disasm_info *disasm, unsigned next_inst_offset) +disasm_new_inst_group(struct disasm_info *disasm, int next_inst_offset) { + assert(next_inst_offset >= 0); struct inst_group *tail = rzalloc(disasm, struct inst_group); tail->offset = next_inst_offset; exec_list_push_tail(&disasm->group_list, &tail->link); @@ -125,7 +126,7 @@ disasm_new_inst_group(struct disasm_info *disasm, unsigned next_inst_offset) void disasm_annotate(struct disasm_info *disasm, - struct backend_instruction *inst, unsigned offset) + struct backend_instruction *inst, int offset) { const struct cfg_t *cfg = disasm->cfg; @@ -166,8 +167,8 @@ disasm_annotate(struct disasm_info *disasm, } void -disasm_insert_error(struct disasm_info *disasm, unsigned offset, - unsigned inst_size, const char *error) +disasm_insert_error(struct disasm_info *disasm, int offset, + int inst_size, const char *error) { foreach_list_typed(struct inst_group, cur, link, &disasm->group_list) { struct exec_node *next_node = exec_node_get_next(&cur->link); @@ -181,17 +182,17 @@ disasm_insert_error(struct disasm_info *disasm, unsigned offset, continue; if (offset + inst_size != next->offset) { - struct inst_group *new = ralloc(disasm, struct inst_group); - memcpy(new, cur, sizeof(struct inst_group)); + struct inst_group *new_group = ralloc(disasm, struct inst_group); + memcpy(new_group, cur, sizeof(struct inst_group)); cur->error = NULL; cur->error_length = 0; cur->block_end = NULL; - new->offset = offset + inst_size; - new->block_start = NULL; + new_group->offset = offset + inst_size; + new_group->block_start = NULL; - exec_node_insert_after(&cur->link, &new->link); + exec_node_insert_after(&cur->link, &new_group->link); } if (cur->error) diff --git a/src/intel/compiler/brw_disasm_info.h b/src/intel/compiler/brw_disasm_info.h index 937180b7e2e..74d4397b6b5 100644 --- a/src/intel/compiler/brw_disasm_info.h +++ b/src/intel/compiler/brw_disasm_info.h @@ -73,15 +73,15 @@ disasm_initialize(const struct brw_isa_info *isa, const struct cfg_t *cfg); struct inst_group * -disasm_new_inst_group(struct disasm_info *disasm, unsigned offset); +disasm_new_inst_group(struct disasm_info *disasm, int offset); void disasm_annotate(struct disasm_info *disasm, - struct backend_instruction *inst, unsigned offset); + struct backend_instruction *inst, int offset); void -disasm_insert_error(struct disasm_info *disasm, unsigned offset, - unsigned inst_size, const char *error); +disasm_insert_error(struct disasm_info *disasm, int offset, + int inst_size, const char *error); #ifdef __cplusplus } /* extern "C" */ diff --git a/src/intel/compiler/meson.build b/src/intel/compiler/meson.build index 8e238d7b5df..17dc4146231 100644 --- a/src/intel/compiler/meson.build +++ b/src/intel/compiler/meson.build @@ -47,7 +47,7 @@ libintel_compiler_brw_files = files( 'brw_dead_control_flow.cpp', 'brw_debug_recompile.c', 'brw_disasm.c', - 'brw_disasm_info.c', + 'brw_disasm_info.cpp', 'brw_disasm_info.h', 'brw_eu.c', 'brw_eu_compact.c',