changes to handle multiple sends & receives
[fw/sdcc] / src / z80 / peeph.def
index 5090d4b8f45c3d20fd4b3461426eab013995c83c..ee3597876774958cbecbefd1aae2be36fa12f299 100644 (file)
@@ -3,7 +3,7 @@ replace {
 } by {
        ERROR - peephole - caught (hl),(hl)
 }
-replace {
+replace restart {
        ld %1,%1
 } by {
         ; Removed redundent load
@@ -96,15 +96,108 @@ replace restart {
 } by {
         xor     a,a
 }
-replace restart {
+replace {
         ld      e,#0x00
         ld      d,#0x00
 } by {
         ld      de,#0x0000
 }
+replace {
+       ld      l,#0x00
+       ld      h,#0x00
+} by {
+        ld      hl,#0x0000
+}
 replace restart {
        ld      %1,a
        ld      a,%1
 } by {
         ld     %1,a
 }
+replace restart {
+       jp      %1,%2
+       jr      %3
+%2:
+       jp      %4
+} by {
+       jp      %1,%4
+       jr      %3
+%2:
+       jp      %4
+}
+replace {
+       ld      l,e
+       ld      h,d
+       push    hl
+       ld      l,c
+       ld      h,b
+       push    hl
+} by {
+        push   de
+        push    bc
+}
+replace {
+       and     a,#%1
+       or      a,a
+} by {
+        and     a,#%1
+}
+replace {
+       ld      b,l
+       ld      a,b
+       pop     bc
+       ld      b,a
+} by {
+       ld      a,l
+       pop     bc
+       ld      b,a
+}
+replace {
+       ld      d,l
+       ld      a,d
+       pop     de
+       ld      d,a
+} by {
+       ld      a,l
+       pop     de
+       ld      d,a
+}
+replace {
+       ld      a,b
+       push    af
+       inc     sp
+} by {
+        push    bc
+        inc     sp
+}
+replace {
+       ld      a,d
+       push    af
+       inc     sp
+} by {
+        push    de
+        inc     sp
+}
+replace {
+       ld      a,%1
+       sub     a,#%2
+       jp      m,%3
+       ld      a,%1
+       sub     a,#%4
+       jp      p,%5
+} by {
+       ld      a,%1
+       cp      a,#%2
+       jp      m,%3
+       cp      a,#%4
+       jp      p,%5
+}
+replace {
+       ld      e,l
+       ld      d,h
+       ld      l,e
+       ld      h,d
+} by {
+       ld      e,l
+       ld      d,h
+}