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);
}
/* 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) {
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());
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 */