#include "aco_ir.h"
#include "vulkan/radv_shader.h"
#include "vulkan/radv_shader_args.h"
-#include "c11/threads.h"
-#include "util/debug.h"
#include <iostream>
#include <sstream>
static void validate(aco::Program *program)
{
- if (!(aco::debug_flags & aco::DEBUG_VALIDATE))
+ if (!(aco::debug_flags & aco::DEBUG_VALIDATE_IR))
return;
- bool is_valid = aco::validate(program, stderr);
+ bool is_valid = aco::validate_ir(program);
assert(is_valid);
}
if (program->collect_statistics)
memset(program->statistics, 0, sizeof(program->statistics));
+ program->debug.func = args->options->debug.func;
+ program->debug.private_data = args->options->debug.private_data;
+
/* Instruction Selection */
if (args->is_gs_copy_shader)
aco::select_gs_copy_shader(program.get(), shaders[0], &config, args);
/* spilling and scheduling */
aco::live live_vars = aco::live_var_analysis(program.get(), args->options);
aco::spill(program.get(), live_vars, args->options);
- if (program->collect_statistics)
- aco::collect_presched_stats(program.get());
- aco::schedule_program(program.get(), live_vars);
- validate(program.get());
std::string llvm_ir;
if (args->options->record_ir) {
free(data);
}
+ if (program->collect_statistics)
+ aco::collect_presched_stats(program.get());
+ aco::schedule_program(program.get(), live_vars);
+ validate(program.get());
+
/* Register Allocation */
aco::register_allocation(program.get(), live_vars.live_out);
if (args->options->dump_shader) {
aco_print_program(program.get(), stderr);
}
- if (aco::validate_ra(program.get(), args->options, stderr)) {
+ if (aco::validate_ra(program.get(), args->options)) {
std::cerr << "Program after RA validation failure:\n";
aco_print_program(program.get(), stderr);
abort();