File tree Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Expand file tree Collapse file tree 1 file changed +12
-6
lines changed Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments