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.
This commit is contained in:
Tom Stellard 2012-04-30 16:11:27 -04:00
parent 77d2780cbc
commit 4da1fcacf1
2 changed files with 3 additions and 1 deletions

View File

@ -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;
}

View File

@ -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: