Skip to content

Commit 0c16555

Browse files
committed
[M68k] allow 16-bit registers for MOVE to/from CCR
1 parent fdf72c9 commit 0c16555

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

llvm/lib/Target/M68k/M68kInstrInfo.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -709,13 +709,19 @@ void M68kInstrInfo::copyPhysReg(MachineBasicBlock &MBB,
709709
bool ToSR = DstReg == M68k::SR;
710710

711711
if (FromCCR) {
712-
assert(M68k::DR8RegClass.contains(DstReg) &&
713-
"Need DR8 register to copy CCR");
714-
Opc = M68k::MOV8dc;
712+
if (M68k::DR8RegClass.contains(DstReg))
713+
Opc = M68k::MOV8dc;
714+
else if (M68k::DR16RegClass.contains(DstReg))
715+
Opc = M68k::MOV16dc;
716+
else
717+
llvm_unreachable("Invalid register for MOVE from CCR");
715718
} else if (ToCCR) {
716-
assert(M68k::DR8RegClass.contains(SrcReg) &&
717-
"Need DR8 register to copy CCR");
718-
Opc = M68k::MOV8cd;
719+
if (M68k::DR8RegClass.contains(SrcReg))
720+
Opc = M68k::MOV8cd;
721+
else if (M68k::DR16RegClass.contains(SrcReg))
722+
Opc = M68k::MOV16cd;
723+
else
724+
llvm_unreachable("Invalid register for MOVE to CCR");
719725
} else if (FromSR || ToSR)
720726
llvm_unreachable("Cannot emit SR copy instruction");
721727

0 commit comments

Comments
 (0)