mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
aco: Separate options for printing IR and recording disassembly.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com> Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Acked-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32079>
This commit is contained in:
parent
ab89fdc3d4
commit
d94e65574f
6 changed files with 20 additions and 25 deletions
|
|
@ -142,7 +142,7 @@ aco_postprocess_shader(const struct aco_compiler_options* options,
|
|||
free(data);
|
||||
}
|
||||
|
||||
if ((debug_flags & DEBUG_LIVE_INFO) && options->dump_shader)
|
||||
if ((debug_flags & DEBUG_LIVE_INFO) && options->dump_ir)
|
||||
aco_print_program(program.get(), stderr, print_live_vars | print_kill);
|
||||
|
||||
if (!options->optimisations_disabled && !(debug_flags & DEBUG_NO_SCHED))
|
||||
|
|
@ -155,7 +155,7 @@ aco_postprocess_shader(const struct aco_compiler_options* options,
|
|||
if (validate_ra(program.get())) {
|
||||
aco_print_program(program.get(), stderr);
|
||||
abort();
|
||||
} else if (options->dump_shader) {
|
||||
} else if (options->dump_ir) {
|
||||
aco_print_program(program.get(), stderr);
|
||||
}
|
||||
|
||||
|
|
@ -235,10 +235,8 @@ aco_compile_shader_part(const struct aco_compiler_options* options,
|
|||
bool append_endpgm = !(options->is_opengl && is_prolog);
|
||||
unsigned exec_size = emit_program(program.get(), code, NULL, append_endpgm);
|
||||
|
||||
bool get_disasm = options->dump_shader || options->record_ir;
|
||||
|
||||
std::string disasm;
|
||||
if (get_disasm)
|
||||
if (options->record_asm)
|
||||
disasm = get_disasm_string(program.get(), code, exec_size);
|
||||
|
||||
(*build_binary)(binary, config.num_sgprs, config.num_vgprs, code.data(), code.size(),
|
||||
|
|
@ -281,10 +279,8 @@ aco_compile_shader(const struct aco_compiler_options* options, const struct aco_
|
|||
if (program->collect_statistics)
|
||||
collect_postasm_stats(program.get(), code);
|
||||
|
||||
bool get_disasm = options->dump_shader || options->record_ir;
|
||||
|
||||
std::string disasm;
|
||||
if (get_disasm)
|
||||
if (options->record_asm)
|
||||
disasm = get_disasm_string(program.get(), code, exec_size);
|
||||
|
||||
size_t stats_size = 0;
|
||||
|
|
@ -323,7 +319,7 @@ aco_compile_rt_prolog(const struct aco_compiler_options* options,
|
|||
if (program->gfx_level >= GFX11)
|
||||
combine_delay_alu(program.get());
|
||||
|
||||
if (options->dump_shader)
|
||||
if (options->dump_ir)
|
||||
aco_print_program(program.get(), stderr);
|
||||
|
||||
/* assembly */
|
||||
|
|
@ -331,10 +327,8 @@ aco_compile_rt_prolog(const struct aco_compiler_options* options,
|
|||
code.reserve(align(program->blocks[0].instructions.size() * 2, 16));
|
||||
unsigned exec_size = emit_program(program.get(), code);
|
||||
|
||||
bool get_disasm = options->dump_shader || options->record_ir;
|
||||
|
||||
std::string disasm;
|
||||
if (get_disasm)
|
||||
if (options->record_asm)
|
||||
disasm = get_disasm_string(program.get(), code, exec_size);
|
||||
|
||||
(*build_prolog)(binary, &config, NULL, 0, disasm.c_str(), disasm.size(), program->statistics, 0,
|
||||
|
|
@ -363,7 +357,7 @@ aco_compile_vs_prolog(const struct aco_compiler_options* options,
|
|||
if (program->gfx_level >= GFX10)
|
||||
form_hard_clauses(program.get());
|
||||
|
||||
if (options->dump_shader)
|
||||
if (options->dump_ir)
|
||||
aco_print_program(program.get(), stderr);
|
||||
|
||||
/* assembly */
|
||||
|
|
@ -371,10 +365,8 @@ aco_compile_vs_prolog(const struct aco_compiler_options* options,
|
|||
code.reserve(align(program->blocks[0].instructions.size() * 2, 16));
|
||||
unsigned exec_size = emit_program(program.get(), code);
|
||||
|
||||
bool get_disasm = options->dump_shader || options->record_ir;
|
||||
|
||||
std::string disasm;
|
||||
if (get_disasm)
|
||||
if (options->record_asm)
|
||||
disasm = get_disasm_string(program.get(), code, exec_size);
|
||||
|
||||
(*build_prolog)(binary, config.num_sgprs, config.num_vgprs, code.data(), code.size(),
|
||||
|
|
@ -434,10 +426,8 @@ aco_compile_trap_handler(const struct aco_compiler_options* options,
|
|||
code.reserve(align(program->blocks[0].instructions.size() * 2, 16));
|
||||
unsigned exec_size = emit_program(program.get(), code);
|
||||
|
||||
bool get_disasm = options->dump_shader || options->record_ir;
|
||||
|
||||
std::string disasm;
|
||||
if (get_disasm)
|
||||
if (options->record_asm)
|
||||
disasm = get_disasm_string(program.get(), code, exec_size);
|
||||
|
||||
(*build_binary)(binary, &config, NULL, 0, disasm.c_str(), disasm.size(), program->statistics, 0,
|
||||
|
|
|
|||
|
|
@ -138,8 +138,9 @@ enum aco_compiler_debug_level {
|
|||
};
|
||||
|
||||
struct aco_compiler_options {
|
||||
bool dump_shader;
|
||||
bool dump_ir;
|
||||
bool dump_preoptir;
|
||||
bool record_asm;
|
||||
bool record_ir;
|
||||
bool record_stats;
|
||||
bool has_ls_vgpr_init_bug;
|
||||
|
|
|
|||
|
|
@ -94,8 +94,9 @@ static inline void
|
|||
radv_aco_convert_opts(struct aco_compiler_options *aco_info, const struct radv_nir_compiler_options *radv,
|
||||
const struct radv_shader_args *radv_args, const struct radv_shader_stage_key *stage_key)
|
||||
{
|
||||
ASSIGN_FIELD(dump_shader);
|
||||
ASSIGN_FIELD(dump_ir);
|
||||
ASSIGN_FIELD(dump_preoptir);
|
||||
ASSIGN_FIELD(record_asm);
|
||||
ASSIGN_FIELD(record_ir);
|
||||
ASSIGN_FIELD(record_stats);
|
||||
ASSIGN_FIELD(enable_mrt_output_nan_fixup);
|
||||
|
|
|
|||
|
|
@ -3002,7 +3002,9 @@ radv_fill_nir_compiler_options(struct radv_nir_compiler_options *options, struct
|
|||
options->wgp_mode = should_use_wgp;
|
||||
options->info = &pdev->info;
|
||||
options->dump_shader = can_dump_shader;
|
||||
options->dump_ir = options->dump_shader;
|
||||
options->dump_preoptir = options->dump_shader && instance->debug_flags & RADV_DEBUG_PREOPTIR;
|
||||
options->record_asm = keep_shader_info || options->dump_shader;
|
||||
options->record_ir = keep_shader_info;
|
||||
options->record_stats = keep_statistic_info;
|
||||
options->check_ir = instance->debug_flags & RADV_DEBUG_CHECKIR;
|
||||
|
|
|
|||
|
|
@ -176,7 +176,9 @@ struct radv_graphics_pipeline_key {
|
|||
struct radv_nir_compiler_options {
|
||||
bool robust_buffer_access_llvm;
|
||||
bool dump_shader;
|
||||
bool dump_ir;
|
||||
bool dump_preoptir;
|
||||
bool record_asm;
|
||||
bool record_ir;
|
||||
bool record_stats;
|
||||
bool check_ir;
|
||||
|
|
|
|||
|
|
@ -41,11 +41,10 @@ si_fill_aco_options(struct si_screen *screen, gl_shader_stage stage,
|
|||
struct aco_compiler_options *options,
|
||||
struct util_debug_callback *debug)
|
||||
{
|
||||
options->dump_shader =
|
||||
si_can_dump_shader(screen, stage, SI_DUMP_ACO_IR) ||
|
||||
si_can_dump_shader(screen, stage, SI_DUMP_ASM) ||
|
||||
screen->options.debug_disassembly;
|
||||
options->dump_ir = si_can_dump_shader(screen, stage, SI_DUMP_ACO_IR);
|
||||
options->dump_preoptir = si_can_dump_shader(screen, stage, SI_DUMP_INIT_ACO_IR);
|
||||
options->record_asm = si_can_dump_shader(screen, stage, SI_DUMP_ASM) ||
|
||||
screen->options.debug_disassembly;
|
||||
options->record_ir = screen->record_llvm_ir;
|
||||
options->is_opengl = true;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue