git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4387 4a8a32a2...
[fw/sdcc] / src / z80 / peeph-z80.def
index 8b137891791fe96927ad78e64b0aad7bded08bdc..ee3f701b0a17e209fa91af39f4a35dce52c22186 100644 (file)
@@ -1 +1,126 @@
+replace restart {
+       ld      a,%1(%2)
+       bit     %3,a
+       jp      %4,%5
+} by {
+       bit     %3,%1(%2)
+       jp      %4,%5
+}
+replace {
+       ld      %1,%2
+       ld      a,%2
+} by {
+       ld      %1,%2
+       ld      a,%1
+}
+replace {
+       ld      %1,a
+       xor     a,a
+       or      a,%1
+} by {
+       ld      %1,a
+       or      a,a
+}
+replace {
+       rlca
+       ld      a,#0x00
+       rla
+} by {
+       rlca
+       and     a,#0x01
+}
+replace {
+       ld      %3,a
+       ld      l,%1
+       ld      h,%2
+       ld      l,(hl)
+       ld      a,%3
+} by {
+       ld      %3,a
+       ld      l,%1
+       ld      h,%2
+       ld      l,(hl)
+} if notVolatile %3
 
+;
+;--------------------------
+;
+replace restart {
+       pop     %1
+       push    %1
+       ld      %1,%2
+} by {
+       ;       z80 removed redundant pop/push
+       ld      %1,%2
+}
+
+replace restart {
+       ld      l,a
+       ld      c,%1
+       ld      a,l
+} by {
+       ld      l,a
+       ld      c,%1
+}
+
+replace restart {
+       ld      c,l
+       ld      a,c
+       and     a,#%1
+       ld      c,a
+       or      a,a
+} by {
+       ;       z80 stream lining 'and' logic
+       ld      a,#%1
+       and     a,l
+       ld      c,a
+}
+
+replace restart {
+       ld      a,c
+       and     a,#%1
+       ld      c,a
+       or      a,a
+} by {
+       ;       z80 stream lining 'and' logic
+       ld      a,#%1
+       and     a,c
+       ld      c,a
+}
+
+replace restart {
+       ld      a,c
+       or      a,#%1
+       ld      c,a
+} by {
+       ;       z80 stream lining 'or' logic
+       ld      a,#%1
+       or      a,c
+       ld      c,a
+}
+
+
+replace {
+%1:
+       in0     a,(%2)
+       and     a,#%3
+       jp      Z,%4
+%5:
+       jp      %6
+%4:
+       call    %7
+       jp      %1
+%6:
+       ret
+} by {
+%1:
+       in0     a,(%2)
+       and     a,#%3
+       jp      NZ,%5
+%4:
+       call    %7
+       jp      %1
+%5:
+%6:
+       ret
+}