aco: add ACO_DEBUG=novn,noopt,nosched for debugging purposes
[mesa.git] / src / amd / compiler / aco_interface.cpp
index 5d402495ae545fa9ecbf79a5887c5eaad29f14d6..4b0ea2ff5d042c888415b9b6349dfbff28d7725c 100644 (file)
@@ -48,7 +48,7 @@ static void validate(aco::Program *program)
    if (!(aco::debug_flags & aco::DEBUG_VALIDATE_IR))
       return;
 
-   bool is_valid = aco::validate_ir(program);
+   ASSERTED bool is_valid = aco::validate_ir(program);
    assert(is_valid);
 }
 
@@ -72,6 +72,8 @@ void aco_compile_shader(unsigned shader_count,
    /* Instruction Selection */
    if (args->is_gs_copy_shader)
       aco::select_gs_copy_shader(program.get(), shaders[0], &config, args);
+   else if (args->is_trap_handler_shader)
+      aco::select_trap_handler_shader(program.get(), shaders[0], &config, args);
    else
       aco::select_program(program.get(), shader_count, shaders, &config, args);
    if (args->options->dump_preoptir) {
@@ -87,8 +89,10 @@ void aco_compile_shader(unsigned shader_count,
       validate(program.get());
 
       /* Optimization */
-      aco::value_numbering(program.get());
-      aco::optimize(program.get());
+      if (!(aco::debug_flags & aco::DEBUG_NO_VN))
+         aco::value_numbering(program.get());
+      if (!(aco::debug_flags & aco::DEBUG_NO_OPT))
+         aco::optimize(program.get());
 
       /* cleanup and exec mask handling */
       aco::setup_reduce_temp(program.get());
@@ -119,7 +123,8 @@ void aco_compile_shader(unsigned shader_count,
       aco::collect_presched_stats(program.get());
 
    if (!args->is_trap_handler_shader) {
-      aco::schedule_program(program.get(), live_vars);
+      if (!(aco::debug_flags & aco::DEBUG_NO_SCHED))
+         aco::schedule_program(program.get(), live_vars);
       validate(program.get());
 
       /* Register Allocation */