Mesa (main): r600/sfn: Never consider an op with register dest as dead

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 13 13:31:37 UTC 2022


Module: Mesa
Branch: main
Commit: 0b0a04635b764b972262466f81042b839bd1b198
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=0b0a04635b764b972262466f81042b839bd1b198

Author: Gert Wollny <gert.wollny at collabora.com>
Date:   Mon Jul 11 20:09:59 2022 +0200

r600/sfn: Never consider an op with register dest as dead

Another hot-fix: when a local register is written to, it is
actually unlikely that the value is never used, so just make
sure that this is never done.

Signed-off-by: Gert Wollny <gert.wollny at collabora.com>
Reviewed-by: Filip Gawin <filip at gawin.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17484>

---

 src/gallium/drivers/r600/sfn/sfn_optimizer.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp
index f20ea1e052c..18fb4e4f2d8 100644
--- a/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_optimizer.cpp
@@ -128,7 +128,8 @@ void DCEVisitor::visit(AluInstr *instr)
    if (instr->has_instr_flag(Instr::dead))
       return;
 
-   if (instr->dest() && instr->dest()->has_uses()) {
+   if (instr->dest() &&
+       (instr->dest()->has_uses() || !instr->dest()->is_ssa()) ) {
       sfn_log << SfnLog::opt << " dest used\n";
       return;
    }



More information about the mesa-commit mailing list