To disable value numbering, optimizations and scheduling.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6470>
abort on some suboptimal code generation
``force-waitcnt``
force emitting waitcnt states if there is something to wait for
+ ``novn``
+ disable value numbering
+ ``noopt``
+ disable various optimizations
+ ``noscheduling``
+ disable instructions scheduling
radeonsi driver environment variables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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 */
{"validatera", DEBUG_VALIDATE_RA},
{"perfwarn", DEBUG_PERFWARN},
{"force-waitcnt", DEBUG_FORCE_WAITCNT},
+ {"novn", DEBUG_NO_VN},
+ {"noopt", DEBUG_NO_OPT},
+ {"nosched", DEBUG_NO_SCHED},
{NULL, 0}
};
DEBUG_VALIDATE_RA = 0x2,
DEBUG_PERFWARN = 0x4,
DEBUG_FORCE_WAITCNT = 0x8,
+ DEBUG_NO_VN = 0x10,
+ DEBUG_NO_OPT = 0x20,
+ DEBUG_NO_SCHED = 0x40,
};
/**