Replace copyRegToReg with copyPhysReg for CellSPU.
llvm-svn: 108084
This commit is contained in:
parent
0d611979a8
commit
1dba6814c9
|
|
@ -249,40 +249,18 @@ SPUInstrInfo::isStoreToStackSlot(const MachineInstr *MI,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SPUInstrInfo::copyRegToReg(MachineBasicBlock &MBB,
|
void SPUInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||||
MachineBasicBlock::iterator MI,
|
MachineBasicBlock::iterator I, DebugLoc DL,
|
||||||
unsigned DestReg, unsigned SrcReg,
|
unsigned DestReg, unsigned SrcReg,
|
||||||
const TargetRegisterClass *DestRC,
|
bool KillSrc) const
|
||||||
const TargetRegisterClass *SrcRC,
|
|
||||||
DebugLoc DL) const
|
|
||||||
{
|
{
|
||||||
// We support cross register class moves for our aliases, such as R3 in any
|
// We support cross register class moves for our aliases, such as R3 in any
|
||||||
// reg class to any other reg class containing R3. This is required because
|
// reg class to any other reg class containing R3. This is required because
|
||||||
// we instruction select bitconvert i64 -> f64 as a noop for example, so our
|
// we instruction select bitconvert i64 -> f64 as a noop for example, so our
|
||||||
// types have no specific meaning.
|
// types have no specific meaning.
|
||||||
|
|
||||||
if (DestRC == SPU::R8CRegisterClass) {
|
BuildMI(MBB, I, DL, get(SPU::LRr128), DestReg)
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRr8), DestReg).addReg(SrcReg);
|
.addReg(SrcReg, getKillRegState(KillSrc));
|
||||||
} else if (DestRC == SPU::R16CRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRr16), DestReg).addReg(SrcReg);
|
|
||||||
} else if (DestRC == SPU::R32CRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRr32), DestReg).addReg(SrcReg);
|
|
||||||
} else if (DestRC == SPU::R32FPRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRf32), DestReg).addReg(SrcReg);
|
|
||||||
} else if (DestRC == SPU::R64CRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRr64), DestReg).addReg(SrcReg);
|
|
||||||
} else if (DestRC == SPU::R64FPRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRf64), DestReg).addReg(SrcReg);
|
|
||||||
} else if (DestRC == SPU::GPRCRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRr128), DestReg).addReg(SrcReg);
|
|
||||||
} else if (DestRC == SPU::VECREGRegisterClass) {
|
|
||||||
BuildMI(MBB, MI, DL, get(SPU::LRv16i8), DestReg).addReg(SrcReg);
|
|
||||||
} else {
|
|
||||||
// Attempt to copy unknown/unsupported register class!
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
|
|
@ -56,12 +56,10 @@ namespace llvm {
|
||||||
unsigned isStoreToStackSlot(const MachineInstr *MI,
|
unsigned isStoreToStackSlot(const MachineInstr *MI,
|
||||||
int &FrameIndex) const;
|
int &FrameIndex) const;
|
||||||
|
|
||||||
virtual bool copyRegToReg(MachineBasicBlock &MBB,
|
virtual void copyPhysReg(MachineBasicBlock &MBB,
|
||||||
MachineBasicBlock::iterator MI,
|
MachineBasicBlock::iterator I, DebugLoc DL,
|
||||||
unsigned DestReg, unsigned SrcReg,
|
unsigned DestReg, unsigned SrcReg,
|
||||||
const TargetRegisterClass *DestRC,
|
bool KillSrc) const;
|
||||||
const TargetRegisterClass *SrcRC,
|
|
||||||
DebugLoc DL) const;
|
|
||||||
|
|
||||||
//! Store a register to a stack slot, based on its register class.
|
//! Store a register to a stack slot, based on its register class.
|
||||||
virtual void storeRegToStackSlot(MachineBasicBlock &MBB,
|
virtual void storeRegToStackSlot(MachineBasicBlock &MBB,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue