From 81272650438b13939fbf995fbbca040f81ba1ca1 Mon Sep 17 00:00:00 2001 From: ceriel Date: Thu, 2 Feb 1989 16:01:13 +0000 Subject: [PATCH] Added some patterns --- mach/m68020/top/table | 31 +++++++++++++++++++++++++++++++ mach/m68k2/top/table | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/mach/m68020/top/table b/mach/m68020/top/table index 86aed7dd2..6d8000fdd 100644 --- a/mach/m68020/top/table +++ b/mach/m68020/top/table @@ -38,6 +38,8 @@ add.l #2,sp : tst.w X {no_part("sp",X)} -> move.w X,(sp)+ ; add.l #4,sp : tst.l D {no_part("sp",D)} -> move.l D,(sp)+ ; 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 #NUM,sp : unlk AREG -> unlk AREG ; move.w A,X : tst.w A -> move.w A,X ; move.w X,A : tst.w A -> move.w X,A ; move.l A,D : tst.l A {no_part(D,A)} -> move.l A,D ; @@ -63,6 +65,35 @@ move.l DREG,A : ANY A,X {reg_subs_allowed(ANY) && !is_dreg(A) } -> move.l DREG,A : ANY DREG,X ; +/* change some compares to tests */ +cmp.w #0,X : beq LAB -> tst.w X : beq LAB ; +cmp.w #0,X : bne LAB -> tst.w X : bne LAB ; +cmp.w #0,X : blt LAB -> tst.w X : bgt LAB ; +cmp.w #0,X : ble LAB -> tst.w X : bge LAB ; +cmp.w #0,X : bge LAB -> tst.w X : ble LAB ; +cmp.w #0,X : bgt LAB -> tst.w X : blt LAB ; + +cmp.l #0,X : beq LAB -> tst.l X : beq LAB ; +cmp.l #0,X : bne LAB -> tst.l X : bne LAB ; +cmp.l #0,X : blt LAB -> tst.l X : bgt LAB ; +cmp.l #0,X : ble LAB -> tst.l X : bge LAB ; +cmp.l #0,X : bge LAB -> tst.l X : ble LAB ; +cmp.l #0,X : bgt LAB -> tst.l X : blt LAB ; + +cmp.w X,#0 : beq LAB -> tst.w X : beq LAB ; +cmp.w X,#0 : bne LAB -> tst.w X : bne LAB ; +cmp.w X,#0 : blt LAB -> tst.w X : blt LAB ; +cmp.w X,#0 : ble LAB -> tst.w X : ble LAB ; +cmp.w X,#0 : bge LAB -> tst.w X : bge LAB ; +cmp.w X,#0 : bgt LAB -> tst.w X : bgt LAB ; + +cmp.l X,#0 : beq LAB -> tst.l X : beq LAB ; +cmp.l X,#0 : bne LAB -> tst.l X : bne LAB ; +cmp.l X,#0 : blt LAB -> tst.l X : blt LAB ; +cmp.l X,#0 : ble LAB -> tst.l X : ble LAB ; +cmp.l X,#0 : bge LAB -> tst.l X : bge LAB ; +cmp.l X,#0 : bgt LAB -> tst.l X : bgt LAB ; + /* change "cmp" into "add" or "sub" (possibly "addq" or "subq") */ cmp.w #-NUM,DSREG : beq LAB -> add.w #NUM,DSREG : beq LAB ; cmp.l #-NUM,DSREG : beq LAB -> add.l #NUM,DSREG : beq LAB ; diff --git a/mach/m68k2/top/table b/mach/m68k2/top/table index f0c440e90..552964610 100644 --- a/mach/m68k2/top/table +++ b/mach/m68k2/top/table @@ -38,6 +38,8 @@ add.l #2,sp : tst.w X {no_part("sp",X)} -> move.w X,(sp)+ ; add.l #4,sp : tst.l D {no_part("sp",D)} -> move.l D,(sp)+ ; 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 #NUM,sp : unlk AREG -> unlk AREG ; move.w A,X : tst.w A -> move.w A,X ; move.w X,A : tst.w A -> move.w X,A ; move.l A,D : tst.l A {no_part(D,A)} -> move.l A,D ; @@ -52,12 +54,45 @@ move.l X,AREG : move.l AREG,DREG : move.l DREG,AREG: bne LAB ; /* redundant move */ +move.l DREG,DREG2 : move.l DREG2,DREG -> move.l DREG,DREG2 ; move.w DREG,DREG2 : move.w DREG2,DREG -> move.w DREG,DREG2 ; /* register subsumption */ move.w DREG,A : ANY A,X {reg_subs_allowed(ANY) && !is_dreg(A) } -> move.w DREG,A : ANY DREG,X ; +move.l DREG,A : ANY A,X + {reg_subs_allowed(ANY) && + !is_dreg(A) } -> move.l DREG,A : ANY DREG,X ; + +/* change some compares to tests */ +cmp.w #0,X : beq LAB -> tst.w X : beq LAB ; +cmp.w #0,X : bne LAB -> tst.w X : bne LAB ; +cmp.w #0,X : blt LAB -> tst.w X : bgt LAB ; +cmp.w #0,X : ble LAB -> tst.w X : bge LAB ; +cmp.w #0,X : bge LAB -> tst.w X : ble LAB ; +cmp.w #0,X : bgt LAB -> tst.w X : blt LAB ; + +cmp.l #0,X : beq LAB -> tst.l X : beq LAB ; +cmp.l #0,X : bne LAB -> tst.l X : bne LAB ; +cmp.l #0,X : blt LAB -> tst.l X : bgt LAB ; +cmp.l #0,X : ble LAB -> tst.l X : bge LAB ; +cmp.l #0,X : bge LAB -> tst.l X : ble LAB ; +cmp.l #0,X : bgt LAB -> tst.l X : blt LAB ; + +cmp.w X,#0 : beq LAB -> tst.w X : beq LAB ; +cmp.w X,#0 : bne LAB -> tst.w X : bne LAB ; +cmp.w X,#0 : blt LAB -> tst.w X : blt LAB ; +cmp.w X,#0 : ble LAB -> tst.w X : ble LAB ; +cmp.w X,#0 : bge LAB -> tst.w X : bge LAB ; +cmp.w X,#0 : bgt LAB -> tst.w X : bgt LAB ; + +cmp.l X,#0 : beq LAB -> tst.l X : beq LAB ; +cmp.l X,#0 : bne LAB -> tst.l X : bne LAB ; +cmp.l X,#0 : blt LAB -> tst.l X : blt LAB ; +cmp.l X,#0 : ble LAB -> tst.l X : ble LAB ; +cmp.l X,#0 : bge LAB -> tst.l X : bge LAB ; +cmp.l X,#0 : bgt LAB -> tst.l X : bgt LAB ; /* change "cmp" into "add" or "sub" (possibly "addq" or "subq") */ cmp.w #-NUM,DSREG : beq LAB -> add.w #NUM,DSREG : beq LAB ; @@ -81,6 +116,9 @@ sub.l #-NUM,X -> add.l #NUM,X ; move.b X,DSREG : and.w #NUM,DSREG : tst.w DSREG : beq LAB { bitno(NUM,BITNO)} -> btst #BITNO,X ; +move.b X,DSREG : and.l #NUM,DSREG : + tst.l DSREG : beq LAB + { bitno(NUM,BITNO)} -> btst #BITNO,X ; /* skip over jump */ beq L1 : bra L2: labdef L1 -> bne L2 : labdef L1 ; -- 2.34.1