Mesa (master): r600g/llvm: Fix handling of MASK_WRITE instructions
Tom Stellard
tstellar at kemper.freedesktop.org
Mon Apr 30 20:58:51 UTC 2012
Module: Mesa
Branch: master
Commit: 4da1fcacf1d78c5fcae9e81eaf2a9d7c8117af3e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4da1fcacf1d78c5fcae9e81eaf2a9d7c8117af3e
Author: Tom Stellard <thomas.stellard at amd.com>
Date: Mon Apr 30 16:11:27 2012 -0400
r600g/llvm: Fix handling of MASK_WRITE instructions
We can't delete MASK_WRITE instructions from the program, because this
will cause instructions being masked by MASK_WRITE to be marked dead and
then deleted in the dce pass.
---
src/gallium/drivers/radeon/AMDGPUUtil.cpp | 1 +
.../drivers/radeon/R600LowerInstructions.cpp | 3 ++-
2 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/src/gallium/drivers/radeon/AMDGPUUtil.cpp b/src/gallium/drivers/radeon/AMDGPUUtil.cpp
index a504543..6fb01b6 100644
--- a/src/gallium/drivers/radeon/AMDGPUUtil.cpp
+++ b/src/gallium/drivers/radeon/AMDGPUUtil.cpp
@@ -34,6 +34,7 @@ bool llvm::isPlaceHolderOpcode(unsigned opcode)
case AMDIL::RETURN:
case AMDIL::LOAD_INPUT:
case AMDIL::LAST:
+ case AMDIL::MASK_WRITE:
case AMDIL::RESERVE_REG:
return true;
}
diff --git a/src/gallium/drivers/radeon/R600LowerInstructions.cpp b/src/gallium/drivers/radeon/R600LowerInstructions.cpp
index fb5431d..8395d22 100644
--- a/src/gallium/drivers/radeon/R600LowerInstructions.cpp
+++ b/src/gallium/drivers/radeon/R600LowerInstructions.cpp
@@ -311,7 +311,8 @@ bool R600LowerInstructionsPass::runOnMachineFunction(MachineFunction &MF)
MachineInstr * defInstr = MRI->getVRegDef(maskedRegister);
MachineOperand * def = defInstr->findRegisterDefOperand(maskedRegister);
def->addTargetFlag(MO_FLAG_MASK);
- break;
+ /* Continue so the instruction is not erased */
+ continue;
}
case AMDIL::NEGATE_i32:
More information about the mesa-commit
mailing list