mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-27 14:24:40 +00:00
Replace copyRegToReg with copyPhysReg for PIC16.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108081 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -151,25 +151,20 @@ void PIC16InstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
|
|||||||
llvm_unreachable("Can't load this register from stack slot");
|
llvm_unreachable("Can't load this register from stack slot");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PIC16InstrInfo::copyRegToReg (MachineBasicBlock &MBB,
|
void PIC16InstrInfo::copyPhysReg(MachineBasicBlock &MBB,
|
||||||
MachineBasicBlock::iterator I,
|
MachineBasicBlock::iterator I, DebugLoc DL,
|
||||||
unsigned DestReg, unsigned SrcReg,
|
unsigned DestReg, unsigned SrcReg,
|
||||||
const TargetRegisterClass *DestRC,
|
bool KillSrc) const {
|
||||||
const TargetRegisterClass *SrcRC,
|
unsigned Opc;
|
||||||
DebugLoc DL) const {
|
if (PIC16::FSR16RegClass.contains(DestReg, SrcReg))
|
||||||
|
Opc = PIC16::copy_fsr;
|
||||||
|
else if (PIC16::GPRRegClass.contains(DestReg, SrcReg))
|
||||||
|
Opc = PIC16::copy_w;
|
||||||
|
else
|
||||||
|
llvm_unreachable("Impossible reg-to-reg copy");
|
||||||
|
|
||||||
if (DestRC == PIC16::FSR16RegisterClass) {
|
BuildMI(MBB, I, DL, get(Opc), DestReg)
|
||||||
BuildMI(MBB, I, DL, get(PIC16::copy_fsr), DestReg).addReg(SrcReg);
|
.addReg(SrcReg, getKillRegState(KillSrc));
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (DestRC == PIC16::GPRRegisterClass) {
|
|
||||||
BuildMI(MBB, I, DL, get(PIC16::copy_w), DestReg).addReg(SrcReg);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Not yet supported.
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PIC16InstrInfo::isMoveInstr(const MachineInstr &MI,
|
bool PIC16InstrInfo::isMoveInstr(const MachineInstr &MI,
|
||||||
|
@ -57,12 +57,10 @@ public:
|
|||||||
unsigned DestReg, int FrameIndex,
|
unsigned DestReg, int FrameIndex,
|
||||||
const TargetRegisterClass *RC,
|
const TargetRegisterClass *RC,
|
||||||
const TargetRegisterInfo *TRI) const;
|
const TargetRegisterInfo *TRI) const;
|
||||||
virtual bool copyRegToReg(MachineBasicBlock &MBB,
|
virtual void copyPhysReg(MachineBasicBlock &MBB,
|
||||||
MachineBasicBlock::iterator MBBI,
|
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;
|
|
||||||
virtual bool isMoveInstr(const MachineInstr &MI,
|
virtual bool isMoveInstr(const MachineInstr &MI,
|
||||||
unsigned &SrcReg, unsigned &DstReg,
|
unsigned &SrcReg, unsigned &DstReg,
|
||||||
unsigned &SrcSubIdx, unsigned &DstSubIdx) const;
|
unsigned &SrcSubIdx, unsigned &DstSubIdx) const;
|
||||||
|
Reference in New Issue
Block a user