r600/sfn: Add old address to update_indirect_addr

v2: use UNUSED instead of adding (void)var; (Vitaly Kuzmin)

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25159>
This commit is contained in:
Gert Wollny 2023-09-15 21:02:10 +02:00 committed by Marge Bot
parent 56c1e6cef2
commit cbda74a625
9 changed files with 18 additions and 14 deletions

View file

@ -510,7 +510,7 @@ InstrWithVectorResult::InstrWithVectorResult(const InstrWithVectorResult& orig):
{
}
void InstrWithVectorResult::update_indirect_addr(PRegister addr)
void InstrWithVectorResult::update_indirect_addr(UNUSED PRegister old_reg, PRegister addr)
{
set_resource_offset(addr);
}

View file

@ -134,7 +134,8 @@ public:
virtual AluInstr *as_alu() { return nullptr; }
virtual uint8_t allowed_src_chan_mask() const { return 0; }
virtual void update_indirect_addr(PRegister addr) {
virtual void update_indirect_addr(PRegister old_reg, PRegister addr) {
(void)old_reg;
(void)addr;
unreachable("Instruction type has no indirect addess");
};
@ -352,7 +353,7 @@ public:
const RegisterVec4::Swizzle& all_dest_swizzle() const { return m_dest_swizzle; }
const RegisterVec4& dst() const { return m_dest; }
void update_indirect_addr(PRegister addr) override;
void update_indirect_addr(PRegister old_reg, PRegister addr) override;
protected:
InstrWithVectorResult(const InstrWithVectorResult& orig);

View file

@ -380,9 +380,10 @@ void ReplaceIndirectArrayAddr::visit(UniformValue& value)
}
}
void AluInstr::update_indirect_addr(PRegister reg)
void AluInstr::update_indirect_addr(UNUSED PRegister old_reg, PRegister reg)
{
ReplaceIndirectArrayAddr visitor;
visitor.new_addr = reg;
assert(reg->has_flag(Register::addr_or_idx));

View file

@ -177,7 +177,7 @@ public:
static const std::set<AluModifiers> last_write;
std::tuple<PRegister, bool, PRegister> indirect_addr() const;
void update_indirect_addr(PRegister reg) override;
void update_indirect_addr(PRegister old_reg, PRegister reg) override;
void add_extra_dependency(PVirtualValue reg);

View file

@ -373,8 +373,9 @@ GDSInstr::emit_atomic_pre_dec(nir_intrinsic_instr *instr, Shader& shader)
return true;
}
void GDSInstr::update_indirect_addr(PRegister addr)
void GDSInstr::update_indirect_addr(PRegister old_reg, PRegister addr)
{
(void)old_reg;
set_resource_offset(addr);
}
@ -447,7 +448,7 @@ RatInstr::do_print(std::ostream& os) const
os << " ACK";
}
void RatInstr::update_indirect_addr(PRegister addr)
void RatInstr::update_indirect_addr(UNUSED PRegister old_reg, PRegister addr)
{
set_resource_offset(addr);
}

View file

@ -59,7 +59,7 @@ public:
uint32_t slots() const override { return 1; };
uint8_t allowed_src_chan_mask() const override;
void update_indirect_addr(PRegister addr) override;
void update_indirect_addr(PRegister old_reg, PRegister addr) override;
private:
static bool emit_atomic_read(nir_intrinsic_instr *intr, Shader& shader);
@ -168,7 +168,7 @@ public:
static bool emit(nir_intrinsic_instr *intr, Shader& shader);
void update_indirect_addr(PRegister addr) override;
void update_indirect_addr(PRegister old_reg, PRegister addr) override;
private:
static bool emit_global_store(nir_intrinsic_instr *intr, Shader& shader);

View file

@ -428,11 +428,12 @@ TexInstr::replace_source(PRegister old_src, PVirtualValue new_src)
return success;
}
void TexInstr::update_indirect_addr(PRegister addr)
void TexInstr::update_indirect_addr(PRegister old_reg, PRegister addr)
{
set_resource_offset(addr);
for (auto& p : m_prepare_instr)
p->update_indirect_addr(addr);
p->update_indirect_addr(old_reg, addr);
}
uint8_t

View file

@ -152,7 +152,7 @@ public:
auto prepare_instr() const { return m_prepare_instr; }
bool replace_source(PRegister old_src, PVirtualValue new_src) override;
void update_indirect_addr(PRegister addr) override;
void update_indirect_addr(PRegister old_reg, PRegister addr) override;
uint8_t allowed_src_chan_mask() const override;

View file

@ -169,7 +169,7 @@ void AddressSplitVisitor::visit(AluInstr *instr)
s->accept(collector);
}
instr->update_indirect_addr(m_vf.addr());
instr->update_indirect_addr(addr, m_vf.addr());
addr->del_use(instr);
m_last_ar_load->inc_ar_uses();
m_last_ar_use.push_back(instr);
@ -188,7 +188,7 @@ auto AddressSplitVisitor::load_index_register(Instr *instr, PRegister index) ->
m_last_idx_use[idx_id].push_back(instr);
index->del_use(instr);
instr->update_indirect_addr(m_current_idx[idx_id]);
instr->update_indirect_addr(index, m_current_idx[idx_id]);
m_last_idx_load_index[idx_id] = (instr->block_id() << 16) | instr->index();
return idx_id == 0 ? bim_zero : bim_one;
}