add.l #2,sp : move.w X,-(sp) -> move.w X,(sp) ;
add.l #4,sp : move.l X,-(sp) -> move.l X,(sp) ;
add.l #4,sp : pea (NUM) -> move.l #NUM,(sp) ;
+add.l #4,sp : pea (AREG) -> move.l AREG,(sp) ;
add.l #NUM,sp : unlk AREG -> unlk AREG ;
add.l #NUM,sp : movem.l X,Y : unlk AREG
{no_part("sp",X) && no_part("sp",Y)} -> movem.l X,Y : unlk AREG ;
{reg_subs_allowed(ANY) &&
!is_dreg(A) } -> move.l DREG,A : ANY DREG,X ;
+move.w DREG,DREG2 : ANY A,DREG2 : move.w DREG2,DREG
+ {no_part(DREG2,A)} -> ANY A,DREG : move.w DREG,DREG2 ;
+move.l DREG,DREG2 : ANY A,DREG2 : move.l DREG2,DREG
+ {no_part(DREG2,A)} -> ANY A,DREG : move.l DREG,DREG2 ;
+
/* change some compares to tests */
cmp.w #0,D : beq LAB -> tst.w D : beq LAB ;
cmp.w #0,D : bne LAB -> tst.w D : bne LAB ;