mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
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:
parent
56c1e6cef2
commit
cbda74a625
9 changed files with 18 additions and 14 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue