From 44e84d6f161e95d44d847440b3bc6d670c242cd7 Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Thu, 22 Mar 2012 11:51:52 +0100 Subject: [PATCH] nv50/ir/opt: don't copy-propagate cond MOVs or MOVs to other reg files We've never encountered the latter on nvc0, but on nv50 we have moves between GPRs and address regs. --- src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp index 5f974436e94..35ddca34b19 100644 --- a/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp +++ b/src/gallium/drivers/nv50/codegen/nv50_ir_peephole.cpp @@ -97,6 +97,10 @@ CopyPropagation::visit(BasicBlock *bb) next = mov->next; if (mov->op != OP_MOV || mov->fixed || !mov->getSrc(0)->asLValue()) continue; + if (mov->getPredicate()) + continue; + if (mov->def(0).getFile() != mov->src(0).getFile()) + continue; si = mov->getSrc(0)->getInsn(); if (mov->getDef(0)->reg.data.id < 0 && si && si->op != OP_PHI) { // propagate -- 2.30.2