r600/sfn: don't track address registers in live ranges

There is only one address register, and for the index registers we
don't do a special register allocation, so no need to track these
either.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21347>
This commit is contained in:
Gert Wollny
2023-01-26 17:09:41 +01:00
committed by Marge Bot
parent bd9b653dbb
commit 077f7d25df
@@ -429,9 +429,14 @@ LiveRangeInstrVisitor::visit(UNUSED LDSReadInstr *instr)
void
LiveRangeInstrVisitor::record_write(const Register *reg)
{
if (reg->has_flag(Register::addr_or_idx))
return;
auto addr = reg->get_addr();
if (addr && addr->as_register()) {
record_read(addr->as_register(), LiveRangeEntry::use_unspecified);
if (addr) {
if (addr->as_register() && !addr->as_register()->has_flag(Register::addr_or_idx))
record_read(addr->as_register(), LiveRangeEntry::use_unspecified);
const auto av = static_cast<const LocalArrayValue *>(reg);
auto& array = av->array();
@@ -455,12 +460,15 @@ LiveRangeInstrVisitor::record_read(const Register *reg, LiveRangeEntry::EUse use
if (!reg)
return;
auto addr = reg->get_addr();
if (addr && addr->as_register()) {
sfn_log << SfnLog::merge << "Record reading address register " << *addr << "\n";
if (reg->has_flag(Register::addr_or_idx))
return;
auto& ra = m_register_access(*addr->as_register());
ra.record_read(m_line, m_current_scope, use);
auto addr = reg->get_addr();
if (addr) {
if (addr->as_register() && !addr->as_register()->has_flag(Register::addr_or_idx)) {
auto& ra = m_register_access(*addr->as_register());
ra.record_read(m_line, m_current_scope, use);
}
const auto av = static_cast<const LocalArrayValue *>(reg);
auto& array = av->array();