From 906c5efc37ac6afa96354df17b071f8523d6c8c2 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Tue, 6 Dec 2022 10:09:19 +0100 Subject: [PATCH] r600/sfn: Don't require assignemnt in same block to copy-propagate Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_optimizer.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp index 1f89649..6bf5aff 100644 --- a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp @@ -261,7 +261,7 @@ public: void visit(LDSReadInstr *instr) override { (void)instr; }; void propagate_to(RegisterVec4& src, Instr *instr); - bool assigned_in_block_and_direct(PRegister reg, int block_id); + bool assigned_register_direct(PRegister reg); ValueFactory& value_factory; bool progress; @@ -477,7 +477,7 @@ CopyPropFwdVisitor::propagate_to(RegisterVec4& src, Instr *instr) if (src->pin() == pin_array) return; if (!src->has_flag(Register::ssa) && - !assigned_in_block_and_direct(src, instr->block_id())) { + !assigned_register_direct(src)) { return; } if (register_chan_is_pinned(src->pin())) { @@ -537,20 +537,16 @@ CopyPropFwdVisitor::propagate_to(RegisterVec4& src, Instr *instr) src.validate(); } -bool CopyPropFwdVisitor::assigned_in_block_and_direct(PRegister reg, int block_id) +bool CopyPropFwdVisitor::assigned_register_direct(PRegister reg) { for (auto p: reg->parents()) { if (p->as_alu()) { auto [addr, is_regoffs, is_index] = p->as_alu()->indirect_addr(); - if (addr) { + if (addr) return false; - } } - - if (p->block_id() == block_id) - return true; } - return false; + return true; } void -- 2.7.4