mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 02:52:53 +02:00
When expanding NEON VST pseudo instructions, if the original super-register
operand is killed, add it to the expanded instruction as an implicit kill operand instead of marking the individual subregs with kill flags. This should work better in general and also handles the case for VST3 where one of the subregs was not referenced in the expanded instruction and so was not marked killed. llvm-svn: 112494
This commit is contained in:
parent
6c5076f317
commit
2b83684be8
@ -118,14 +118,16 @@ void ARMExpandPseudo::ExpandVST(MachineBasicBlock::iterator &MBBI,
|
||||
D3 = TRI->getSubReg(SrcReg, ARM::dsub_7);
|
||||
}
|
||||
|
||||
MIB.addReg(D0, getKillRegState(SrcIsKill))
|
||||
.addReg(D1, getKillRegState(SrcIsKill));
|
||||
MIB.addReg(D0).addReg(D1);
|
||||
if (NumRegs > 2)
|
||||
MIB.addReg(D2, getKillRegState(SrcIsKill));
|
||||
MIB.addReg(D2);
|
||||
if (NumRegs > 3)
|
||||
MIB.addReg(D3, getKillRegState(SrcIsKill));
|
||||
MIB.addReg(D3);
|
||||
MIB = AddDefaultPred(MIB);
|
||||
TransferImpOps(MI, MIB, MIB);
|
||||
if (SrcIsKill)
|
||||
// Add an implicit kill for the super-reg.
|
||||
(*MIB).addRegisterKilled(SrcReg, TRI, true);
|
||||
MI.eraseFromParent();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user