mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-13 04:38:24 +00:00
Change TargetInstrInfo::isMoveInstr to return source and destination sub-register indices as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62600 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -298,8 +298,8 @@ bool LiveIntervals::conflictsWithPhysRegDef(const LiveInterval &li,
|
||||
if (index == end) break;
|
||||
|
||||
MachineInstr *MI = getInstructionFromIndex(index);
|
||||
unsigned SrcReg, DstReg;
|
||||
if (tii_->isMoveInstr(*MI, SrcReg, DstReg))
|
||||
unsigned SrcReg, DstReg, SrcSubReg, DstSubReg;
|
||||
if (tii_->isMoveInstr(*MI, SrcReg, DstReg, SrcSubReg, DstSubReg))
|
||||
if (SrcReg == li.reg || DstReg == li.reg)
|
||||
continue;
|
||||
for (unsigned i = 0; i != MI->getNumOperands(); ++i) {
|
||||
@ -396,10 +396,10 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb,
|
||||
defIndex = getUseIndex(MIIdx);
|
||||
VNInfo *ValNo;
|
||||
MachineInstr *CopyMI = NULL;
|
||||
unsigned SrcReg, DstReg;
|
||||
unsigned SrcReg, DstReg, SrcSubReg, DstSubReg;
|
||||
if (mi->getOpcode() == TargetInstrInfo::EXTRACT_SUBREG ||
|
||||
mi->getOpcode() == TargetInstrInfo::INSERT_SUBREG ||
|
||||
tii_->isMoveInstr(*mi, SrcReg, DstReg))
|
||||
tii_->isMoveInstr(*mi, SrcReg, DstReg, SrcSubReg, DstSubReg))
|
||||
CopyMI = mi;
|
||||
// Earlyclobbers move back one.
|
||||
ValNo = interval.getNextValue(defIndex, CopyMI, VNInfoAllocator);
|
||||
@ -551,10 +551,10 @@ void LiveIntervals::handleVirtualRegisterDef(MachineBasicBlock *mbb,
|
||||
|
||||
VNInfo *ValNo;
|
||||
MachineInstr *CopyMI = NULL;
|
||||
unsigned SrcReg, DstReg;
|
||||
unsigned SrcReg, DstReg, SrcSubReg, DstSubReg;
|
||||
if (mi->getOpcode() == TargetInstrInfo::EXTRACT_SUBREG ||
|
||||
mi->getOpcode() == TargetInstrInfo::INSERT_SUBREG ||
|
||||
tii_->isMoveInstr(*mi, SrcReg, DstReg))
|
||||
tii_->isMoveInstr(*mi, SrcReg, DstReg, SrcSubReg, DstSubReg))
|
||||
CopyMI = mi;
|
||||
ValNo = interval.getNextValue(defIndex, CopyMI, VNInfoAllocator);
|
||||
|
||||
@ -653,10 +653,10 @@ void LiveIntervals::handleRegisterDef(MachineBasicBlock *MBB,
|
||||
getOrCreateInterval(MO.getReg()));
|
||||
else if (allocatableRegs_[MO.getReg()]) {
|
||||
MachineInstr *CopyMI = NULL;
|
||||
unsigned SrcReg, DstReg;
|
||||
unsigned SrcReg, DstReg, SrcSubReg, DstSubReg;
|
||||
if (MI->getOpcode() == TargetInstrInfo::EXTRACT_SUBREG ||
|
||||
MI->getOpcode() == TargetInstrInfo::INSERT_SUBREG ||
|
||||
tii_->isMoveInstr(*MI, SrcReg, DstReg))
|
||||
tii_->isMoveInstr(*MI, SrcReg, DstReg, SrcSubReg, DstSubReg))
|
||||
CopyMI = MI;
|
||||
handlePhysicalRegisterDef(MBB, MI, MIIdx, MO,
|
||||
getOrCreateInterval(MO.getReg()), CopyMI);
|
||||
@ -844,8 +844,8 @@ unsigned LiveIntervals::getVNInfoSourceReg(const VNInfo *VNI) const {
|
||||
} else if (VNI->copy->getOpcode() == TargetInstrInfo::INSERT_SUBREG)
|
||||
return VNI->copy->getOperand(2).getReg();
|
||||
|
||||
unsigned SrcReg, DstReg;
|
||||
if (tii_->isMoveInstr(*VNI->copy, SrcReg, DstReg))
|
||||
unsigned SrcReg, DstReg, SrcSubReg, DstSubReg;
|
||||
if (tii_->isMoveInstr(*VNI->copy, SrcReg, DstReg, SrcSubReg, DstSubReg))
|
||||
return SrcReg;
|
||||
assert(0 && "Unrecognized copy instruction!");
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user