diff options
Diffstat (limited to 'lib/Target/SystemZ/SystemZInstrInfo.cpp')
-rw-r--r-- | lib/Target/SystemZ/SystemZInstrInfo.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.cpp b/lib/Target/SystemZ/SystemZInstrInfo.cpp index 9734709..0348e1e 100644 --- a/lib/Target/SystemZ/SystemZInstrInfo.cpp +++ b/lib/Target/SystemZ/SystemZInstrInfo.cpp @@ -83,18 +83,20 @@ bool SystemZInstrInfo::copyRegToReg(MachineBasicBlock &MBB, CommonRC = 0; if (CommonRC) { - unsigned Opc; if (CommonRC == &SystemZ::GR64RegClass || CommonRC == &SystemZ::ADDR64RegClass) { - Opc = SystemZ::MOV64rr; + BuildMI(MBB, I, DL, get(SystemZ::MOV64rr), DestReg).addReg(SrcReg); } else if (CommonRC == &SystemZ::GR32RegClass || CommonRC == &SystemZ::ADDR32RegClass) { - Opc = SystemZ::MOV32rr; + BuildMI(MBB, I, DL, get(SystemZ::MOV32rr), DestReg).addReg(SrcReg); + } else if (CommonRC == &SystemZ::GR64PRegClass) { + BuildMI(MBB, I, DL, get(SystemZ::MOV64rrP), DestReg).addReg(SrcReg); + } else if (CommonRC == &SystemZ::GR128RegClass) { + BuildMI(MBB, I, DL, get(SystemZ::MOV128rr), DestReg).addReg(SrcReg); } else { return false; } - BuildMI(MBB, I, DL, get(Opc), DestReg).addReg(SrcReg); return true; } @@ -126,6 +128,8 @@ SystemZInstrInfo::isMoveInstr(const MachineInstr& MI, return false; case SystemZ::MOV32rr: case SystemZ::MOV64rr: + case SystemZ::MOV64rrP: + case SystemZ::MOV128rr: assert(MI.getNumOperands() >= 2 && MI.getOperand(0).isReg() && MI.getOperand(1).isReg() && |