Added some patterns
authorceriel <none@none>
Thu, 2 Feb 1989 16:01:13 +0000 (16:01 +0000)
committerceriel <none@none>
Thu, 2 Feb 1989 16:01:13 +0000 (16:01 +0000)
mach/m68020/top/table
mach/m68k2/top/table

index 86aed7d..6d8000f 100644 (file)
@@ -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 ;
index f0c440e..5529646 100644 (file)
@@ -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 ;