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:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user