]> git.gag.com Git - fw/sdcc/commitdiff
Right.
authormichaelh <michaelh@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 10 Feb 2000 05:46:45 +0000 (05:46 +0000)
committermichaelh <michaelh@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 10 Feb 2000 05:46:45 +0000 (05:46 +0000)
* Added t-state counter to crt0.s
* Shifted peephole rules into platform directories
* Turned on some of the reg packing under z80
* Added some dumb stdinclude files as a hack

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@95 4a8a32a2-be11-0410-ad9d-d568d2c75423

18 files changed:
device/include/z80/stdio.h [new file with mode: 0644]
device/include/z80/string.h [new file with mode: 0644]
device/include/z80/types.h [new file with mode: 0644]
device/lib/z80/crt0.s
src/Makefile.in
src/SDCCpeeph.c
src/SDCCpeeph.def [deleted file]
src/SDCCpeeph.rul [deleted file]
src/mcs51/Makefile
src/mcs51/main.c
src/mcs51/peeph.def [new file with mode: 0644]
src/port.h
src/z80/Makefile
src/z80/gen.c
src/z80/main.c
src/z80/peeph.def [new file with mode: 0644]
src/z80/ralloc.c
support/tests/dhrystone/dhry.c

diff --git a/device/include/z80/stdio.h b/device/include/z80/stdio.h
new file mode 100644 (file)
index 0000000..ff82022
--- /dev/null
@@ -0,0 +1,6 @@
+/** Dumb stdio.h
+    Z80 temp hack.
+*/
+
+void printf(const char *szFormat, ...);
+
diff --git a/device/include/z80/string.h b/device/include/z80/string.h
new file mode 100644 (file)
index 0000000..f87505b
--- /dev/null
@@ -0,0 +1,12 @@
+/* Silly string.h
+ * Z80 specific hack
+*/
+
+#include <types.h>
+
+char *strcpy(char *dest, const char *src);
+
+int strcmp(const char *s1, const char *s2);
+
+void *memcpy(void *dest, const void *src, WORD wLen);
+
diff --git a/device/include/z80/types.h b/device/include/z80/types.h
new file mode 100644 (file)
index 0000000..cf95608
--- /dev/null
@@ -0,0 +1,11 @@
+/** Silly types.h
+    Z80 specific hack
+*/
+
+#ifndef TYPES_INCLUDE
+#define TYPES_INCLUDE
+
+typedef unsigned char BYTE;
+typedef unsigned WORD;
+
+#endif
index 9e2a08c55ec4b6befc4e8e48843f94ac673aede4..ce0176f9c89b871c4c69471d867b2d03a8285f2e 100644 (file)
@@ -44,7 +44,12 @@ _getsp::
        ld      hl,#0
        add     hl,sp
        ret
-       
+
+__printTStates::       
+       ld      a,#3
+       out     (0xff),a
+       ret
+               
 _exit::
        ;; Exit - special code to the emulator
        ld      a,#1
index 302309cee864246d0ed3d1b952b00e71e057ca1e..eee05f8d6085aac95d1ff479cd3e1c0eedb18ce4 100644 (file)
@@ -91,9 +91,6 @@ SDCCy.c: SDCC.y
 SDCClex.c: SDCC.lex SDCCy.h
        $(LEX) -t $< >$@
 
-SDCCpeeph.rul: SDCCpeeph.def
-       $(AWK) -f SDCCpeeph.awk SDCCpeeph.def > SDCCpeeph.rul
-
 .y.c:
        rm -f $*.cc $*.h
        $(YACC) -d $<
index 6450d7acc847bdeec4b9c268d0dacade9aec1949..aa923fbbe1ef100bed2c1270c71e3df5527851e5 100644 (file)
 peepRule *rootRules = NULL;
 peepRule *currRule  = NULL;
 
-char *defaultRules =
-{
-#include "SDCCpeeph.rul"
-};
 static bool matchLine (char *, char *, hTab **);
 
 #define FBYNAME(x) int x (hTab *vars, lineNode *currPl, lineNode *head)
@@ -705,7 +700,7 @@ void initPeepHole ()
     char *s;
 
     /* read in the default rules */
-    readRules(defaultRules);
+    readRules(port->peep.default_rules);
 
     /* if we have any additional file read it too */
     if (options.peep_file) {
diff --git a/src/SDCCpeeph.def b/src/SDCCpeeph.def
deleted file mode 100644 (file)
index 9ae5acf..0000000
+++ /dev/null
@@ -1,1629 +0,0 @@
-//replace restart {
-//        pop  %1
-//        push %1
-//} by {
-//        ; Peephole 1     removed pop %1 push %1 (not push pop)
-//}
-
-//replace restart {
-//        pop  %1
-//        mov  %2,%3
-//        push %1
-//} by {
-//        ; Peephole 2     removed pop %1 push %1 (not push pop)
-//        mov  %2,%3 
-//}
-
-//
-// added by Jean Louis VERN for
-// his shift stuff
-replace restart {
-        xch  a,%1
-        xch  a,%1
-} by {
-        ; Peephole 2.a   removed redundant xch xch
-}
-
-replace restart {
-// saving 2 byte
-        mov  %1,#0x00
-        mov  a,#0x00
-} by {
-        ; Peephole 3.a   changed mov to clr
-        clr  a
-        mov  %1,a
-}
-
-replace restart {
-// saving 1 byte
-        mov  %1,#0x00
-        clr  a
-} by {
-        ; Peephole 3.b   changed mov to clr
-        clr  a
-        mov  %1,a
-}
-
-replace restart {
-// saving 1 byte, loosing 1 cycle but maybe allowing peephole 3.b to start
-        mov  %1,#0x00
-        mov  %2,#0x00
-        mov  a,%3
-} by {
-        ; Peephole 3.c   changed mov to clr
-        clr  a
-        mov  %1,a
-        mov  %2,a
-        mov  a,%3
-}
-
-
-
-replace {
-        mov  %1,a
-        mov  dptr,#%2
-        mov  a,%1
-        movx @dptr,a
-} by {
-        ; Peephole 100   removed redundant mov
-        mov  %1,a
-        mov  dptr,#%2
-        movx @dptr,a
-}
-
-replace {
-       mov  a,acc
-} by {
-       ;  Peephole 100.a   removed redundant mov
-}
-
-replace {
-        mov  a,%1
-        movx @dptr,a
-        inc  dptr
-        mov  a,%1
-        movx @dptr,a
-} by {
-        ; Peephole 101   removed redundant mov
-        mov  a,%1
-        movx @dptr,a
-        inc  dptr
-        movx @dptr,a
-}
-
-replace {
-        mov  %1,%2
-        ljmp %3
-%4:
-        mov  %1,%5
-%3:
-        mov  dpl,%1
-%7:
-        mov  sp,bp
-        pop  bp
-} by {
-        ; Peephole 102   removed redundant mov
-        mov  dpl,%2
-        ljmp %3
-%4:
-        mov  dpl,%5
-%3:
-%7:
-        mov  sp,bp
-        pop  bp
-}
-
-replace {
-        mov  %1,%2
-        ljmp %3
-%4:
-        mov  a%1,%5
-%3:
-        mov  dpl,%1
-%7:
-        mov  sp,bp
-        pop  bp
-} by {
-        ; Peephole 103   removed redundant mov
-        mov  dpl,%2
-        ljmp %3
-%4:
-        mov  dpl,%5
-%3:
-%7:
-        mov  sp,bp
-        pop  bp
-}
-
-replace {
-        mov  a,bp
-        clr  c
-        add  a,#0x01
-        mov  r%1,a
-} by {
-        ; Peephole 104   optimized increment (acc not set to r%1, flags undefined)
-        mov  r%1,bp
-        inc  r%1
-}
-
-replace {
-        mov  %1,a
-        mov  a,%1
-} by {
-        ; Peephole 105   removed redundant mov
-        mov  %1,a
-}
-
-replace {
-        mov  %1,a
-        clr  c
-        mov  a,%1
-} by {
-        ; Peephole 106   removed redundant mov 
-        mov  %1,a
-        clr  c
-}
-
-replace {
-        ljmp %1
-%1:
-} by {
-        ; Peephole 107   removed redundant ljmp
-%1:
-}
-
-replace {
-        jc   %1
-        ljmp %5
-%1:
-} by {
-        ; Peephole 108   removed ljmp by inverse jump logic
-        jnc  %5
-%1:
-} if labelInRange
-
-replace {
-        jz   %1
-        ljmp %5
-%1:
-} by {
-        ; Peephole 109   removed ljmp by inverse jump logic
-        jnz  %5
-%1:
-} if labelInRange
-
-replace {
-        jnz  %1
-        ljmp %5
-%1:
-} by {
-        ; Peephole 110   removed ljmp by inverse jump logic
-        jz  %5
-%1:
-} if labelInRange
-
-replace {
-        jb   %1,%2
-        ljmp %5
-%2:
-} by {
-        ; Peephole 111   removed ljmp by inverse jump logic
-        jnb  %1,%5
-%2:
-} if labelInRange
-
-replace {
-        jnb  %1,%2
-        ljmp %5
-%2:
-} by {
-       ; Peephole 112   removed ljmp by inverse jump logic
-        jb   %1,%5
-%2:
-} if labelInRange
-
-replace {
-        ljmp %5
-%1:
-} by {
-        ; Peephole 132   changed ljmp to sjmp
-        sjmp %5
-%1:
-} if labelInRange
-
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cpl  a
-%3:
-        rrc  a
-        mov  %4,c
-} by {
-        ; Peephole 113   optimized misc sequence
-        clr  %4
-        cjne %1,%2,%3
-        setb %4
-%3:
-}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cpl  a
-%3:
-        rrc  a
-        mov  %4,c
-} by {
-        ; Peephole 114   optimized misc sequence
-        clr  %4
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        setb %4
-%3:
-}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cpl  a
-%3:
-        jnz  %4
-} by {
-        ; Peephole 115   jump optimization 
-        cjne %1,%2,%3
-        sjmp %4
-%3:
-}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cpl  a
-%3:
-        jnz  %4
-} by {
-        ; Peephole 116   jump optimization
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        sjmp %4
-%3:
-}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cjne %11,%12,%3
-        cpl  a
-%3:
-        jnz %4
-} by {
-        ; Peephole 117   jump optimization
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cjne %11,%12,%3
-        sjmp %4
-%3:
-}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cjne %11,%12,%3
-        cjne %13,%14,%3
-        cpl  a
-%3:
-        jnz %4
-} by {
-        ; Peephole 118   jump optimization
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cjne %11,%12,%3
-        cjne %13,%14,%3
-        sjmp %4
-%3:
-}
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        clr  a
-%3:
-        jnz  %4
-} by {
-        ; Peephole 119   jump optimization
-        cjne %1,%2,%4
-%3:
-}
-
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        clr  a
-%3:
-        jnz  %4
-} by {
-        ; Peephole 120   jump optimization
-        cjne %1,%2,%4
-        cjne %10,%11,%4
-%3:
-}
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cjne %12,%13,%3
-        clr  a
-%3:
-        jnz  %4
-} by {
-        ; Peephole 121   jump optimization
-        cjne %1,%2,%4
-        cjne %10,%11,%4
-        cjne %12,%13,%4
-%3:
-}
-
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cjne %12,%13,%3
-        cjne %14,%15,%3
-        clr  a
-%3:
-        jnz  %4
-} by {
-        ; Peephole 122   jump optimization
-        cjne %1,%2,%4
-        cjne %10,%11,%4
-        cjne %12,%13,%4
-        cjne %14,%15,%4
-%3:
-}
-
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        clr  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 123   jump optimization
-        cjne %1,%2,%3
-        smp  %4
-%3:
-}
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        clr  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 124   jump optimization
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        smp  %4
-%3:
-}
-
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cjne %12,%13,%3
-        clr  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 125   jump optimization
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cjne %12,%13,%3
-        sjmp %4
-%3:
-}
-
-replace {
-        mov  a,#0x01
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cjne %12,%13,%3
-        cjne %14,%15,%3
-        clr  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 126   jump optimization
-        cjne %1,%2,%3
-        cjne %10,%11,%3
-        cjne %12,%13,%3
-        cjne %14,%15,%3
-        sjmp %4
-%3:
-}
-
-replace {
-        push psw
-        mov  psw,%1
-        push bp
-        mov  bp,%2
-%3:
-        mov  %2,bp
-        pop  bp
-        pop  psw
-        ret
-} by {
-        ; Peephole 127   removed misc sequence
-        ret
-}
-
-replace {
-        clr  a
-        rlc  a
-        jz   %1
-} by {
-        ; Peephole 128   jump optimization
-        jnc  %1
-}
-
-replace {
-        clr  a
-        rlc  a
-        jnz  %1
-} by {
-        ; Peephole 129   jump optimization
-        jc   %1
-}
-
-replace { 
-        mov  r%1,@r%2
-} by {
-        ; Peephole 130   changed target address mode r%1 to ar%1
-        mov  ar%1,@r%2
-}
-
-replace { 
-        mov  a,%1
-        subb a,#0x01
-        mov  %2,a
-        mov  %1,%2
-} by {
-        ; Peephole 131   optimized decrement (not caring for c)
-        dec  %1         
-        mov  %2,%1      
-}
-
-replace {
-        mov  r%1,%2
-        mov  ar%3,@r%1
-        inc  r%3
-        mov  r%4,%2
-        mov  @r%4,ar%3
-} by {
-        ; Peephole 133   removed redundant moves
-        mov  r%1,%2
-        inc  @r%1
-        mov  ar%3,@r%1
-}
-
-replace {
-        mov  r%1,%2
-        mov  ar%3,@r%1
-        dec  r%3
-        mov  r%4,%2
-        mov  @r%4,ar%3
-} by {
-        ; Peephole 134   removed redundant moves
-        mov  r%1,%2
-        dec  @r%1
-        mov  ar%3,@r%1
-}
-
-replace {
-        mov  r%1,a
-        mov  a,r%2
-        orl  a,r%1
-} by {
-        ; Peephole 135   removed redundant mov
-        mov  r%1,a
-        orl  a,r%2
-}
-
-replace {
-        mov  %1,a
-        mov  dpl,%2
-        mov  dph,%3
-        mov  a,%1
-} by {
-        ; Peephole 136   removed redundant moves
-        mov  %1,a
-        mov  dpl,%2
-        mov  dph,%3
-}
-
-replace {
-        mov  b,#0x00
-        mov  a,%1
-        cjne %2,%3,%4
-        mov  b,#0x01
-%4:
-        mov  a,b
-        jz   %5
-} by {
-        ; Peephole 137   optimized misc jump sequence
-        mov  a,%1
-        cjne %2,%3,%5
-%4:
-}
-
-replace {
-        mov  b,#0x00
-        mov  a,%1
-        cjne %2,%3,%4
-        mov  b,#0x01
-%4:
-        mov  a,b
-        jnz  %5
-} by {
-        ; Peephole 138   optimized misc jump sequence
-        mov  a,%1
-        cjne %2,%3,%4
-        sjmp %5
-%4:
-}
-
-replace {
-        mov  r%1,a
-        anl  ar%1,%2
-        mov  a,r%1
-} by {
-        ; Peephole 139   removed redundant mov
-        anl  a,%2
-        mov  r%1,a
-}
-
-replace {
-        mov  r%1,a
-        orl  ar%1,%2
-        mov  a,r%1
-} by {
-        ; Peephole 140   removed redundant mov
-        orl  a,%2
-        mov  r%1,a }
-
-replace {
-        mov  r%1,a
-        xrl  ar%1,%2
-        mov  a,r%1
-} by {
-        ; Peephole 141   removed redundant mov
-        xrl  a,%2
-        mov  r%1,a
-}
-
-replace {
-        mov  r%1,a
-        mov  r%2,ar%1
-        mov  ar%1,@r%2
-} by {
-        ; Peephole 142   removed redundant moves
-        mov  r%2,a
-        mov  ar%1,@r%2
-}
-
-replace {
-        rlc  a
-        mov  acc.0,c
-} by {
-        ; Peephole 143   converted rlc to rl
-        rl   a
-}
-
-replace {
-        rrc  a
-        mov  acc.7,c
-} by {
-        ; Peephole 144   converted rrc to rc
-        rr   a
-}
-
-replace {
-        clr  c
-        addc a,%1
-} by {
-        ; Peephole 145   changed to add without carry  
-        add  a,%1
-}
-
-replace {
-        clr  c
-        mov  a,%1
-        addc a,%2
-} by {
-        ; Peephole 146   changed to add without carry
-        mov  a,%1
-        add  a,%2
-}
-
-replace {
-        orl  r%1,a
-} by {
-        ; Peephole 147   changed target address mode r%1 to ar%1
-        orl  ar%1,a
-}
-
-replace {
-        anl  r%1,a
-} by {
-        ; Peephole 148   changed target address mode r%1 to ar%1
-        anl  ar%1,a
-}
-
-replace {
-        xrl  r%1,a
-} by {
-        ; Peephole 149   changed target address mode r%1 to ar%1
-        xrl  ar%1,a
-}
-
-replace {
-        mov  %1,dpl
-        mov  dpl,%1
-%9:
-        ret
-} by {
-        ; Peephole 150   removed misc moves via dpl before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  dpl,%1
-        mov  dph,%2
-%9:
-        ret
-} by {
-        ; Peephole 151   removed misc moves via dph, dpl before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  dpl,%1
-%9:
-        ret
-} by {
-        ; Peephole 152   removed misc moves via dph, dpl before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  %3,b
-        mov  dpl,%1
-        mov  dph,%2
-        mov  b,%3
-%9:
-        ret
-} by {
-        ; Peephole 153   removed misc moves via dph, dpl, b before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  %3,b
-        mov  dpl,%1
-%9:
-        ret
-} by {
-        ; Peephole 154   removed misc moves via dph, dpl, b before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  %3,b
-        mov  dpl,%1
-        mov  dph,%2
-%9:
-        ret
-} by {
-        ; Peephole 155   removed misc moves via dph, dpl, b before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  %3,b
-        mov  %4,a
-        mov  dpl,%1
-        mov  dph,%2
-        mov  b,%3
-        mov  a,%4
-%9:
-        ret
-} by {
-        ; Peephole 156   removed misc moves via dph, dpl, b, a before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  %3,b
-        mov  %4,a
-        mov  dpl,%1
-        mov  dph,%2
-%9:
-        ret
-} by {
-        ; Peephole 157   removed misc moves via dph, dpl, b, a before return
-%9:
-        ret
-}
-
-replace {
-        mov  %1,dpl
-        mov  %2,dph
-        mov  %3,b
-        mov  %4,a
-        mov  dpl,%1
-%9:
-        ret } by {
-        ; Peephole 158   removed misc moves via dph, dpl, b, a before return
-%9:
-        ret }
-
-replace {
-        mov  %1,#%2
-        xrl  %1,#0x80
-} by {
-        ; Peephole 159   avoided xrl during execution
-        mov  %1,#(%2 ^ 0x80)
-}
-
-replace {
-        jnc  %1
-        sjmp %2
-%1:
-} by {
-        ; Peephole 160   removed sjmp by inverse jump logic
-        jc   %2
-%1:}
-
-replace {
-        jc   %1
-        sjmp %2
-%1:
-} by {
-        ; Peephole 161   removed sjmp by inverse jump logic
-        jnc  %2
-%1:}
-
-replace {
-        jnz  %1
-        sjmp %2
-%1:
-} by {
-        ; Peephole 162   removed sjmp by inverse jump logic
-        jz   %2
-%1:}
-
-replace {
-        jz   %1
-        sjmp %2
-%1:
-} by {
-        ; Peephole 163   removed sjmp by inverse jump logic
-        jnz  %2
-%1:}
-
-replace {
-        jnb  %3,%1
-        sjmp %2
-%1:
-} by {
-        ; Peephole 164   removed sjmp by inverse jump logic
-        jb   %3,%2
-%1:
-}
-
-replace {
-        jb   %3,%1
-        sjmp %2
-%1:
-} by {
-        ; Peephole 165   removed sjmp by inverse jump logic
-        jnb  %3,%2
-%1:
-}
-
-replace {
-        mov  %1,%2
-        mov  %3,%1
-        mov  %2,%1
-} by {
-        ; Peephole 166   removed redundant mov
-        mov  %1,%2
-        mov  %3,%1 }
-
-replace {
-        mov  c,%1
-        cpl  c
-        mov  %1,c
-} by {
-        ; Peephole 167   removed redundant bit moves (c not set to %1)
-        cpl  %1 }
-
-replace {
-        jnb  %1,%2
-        sjmp %3
-%2:} by {
-        ; Peephole 168   jump optimization
-        jb   %1,%3
-%2:}
-
-replace {
-        jb   %1,%2
-        sjmp %3
-%2:} by {
-        ; Peephole 169   jump optimization
-        jnb  %1,%3
-%2:}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cpl  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 170   jump optimization
-        cjne %1,%2,%4
-%3:}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cpl  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 171   jump optimization
-        cjne %1,%2,%4
-        cjne %9,%10,%4
-%3:}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cjne %11,%12,%3
-        cpl  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 172   jump optimization
-        cjne %1,%2,%4
-        cjne %9,%10,%4
-        cjne %11,%12,%4
-%3:}
-
-replace {
-        clr  a
-        cjne %1,%2,%3
-        cjne %9,%10,%3
-        cjne %11,%12,%3
-        cjne %13,%14,%3
-        cpl  a
-%3:
-        jz   %4
-} by {
-        ; Peephole 173   jump optimization
-        cjne %1,%2,%4
-        cjne %9,%10,%4
-        cjne %11,%12,%4
-        cjne %13,%14,%4
-%3:}
-
-replace {
-        mov  r%1,%2
-        clr  c
-        mov  a,r%1
-        subb a,#0x01
-        mov  %2,a
-} by {
-        ; Peephole 174   optimized decrement (acc not set to %2, flags undefined)
-        mov  r%1,%2
-        dec  %2
-}
-
-
-replace {
-        mov  r%1,%2
-        mov  a,r%1
-        add  a,#0x01
-        mov  %2,a
-} by {
-        ; Peephole 175   optimized increment (acc not set to %2, flags undefined)
-        mov  r%1,%2
-        inc  %2
-}
-
-replace {
-        mov  %1,@r%2
-        inc  %1
-        mov  @r%2,%1
-} by {
-        ; Peephole 176   optimized increment, removed redundant mov
-        inc  @r%2
-        mov  %1,@r%2
-}
-
-replace {
-        mov  %1,%2
-        mov  %2,%1
-} by {
-        ; Peephole 177   removed redundant mov
-        mov  %1,%2
-}
-
-replace {
-        mov  a,%1
-        mov  b,a
-        mov  a,%2
-} by {
-        ; Peephole 178   removed redundant mov
-        mov  b,%1
-        mov  a,%2
-}
-
-// rules 179-182 provided by : Frieder <fe@lake.iup.uni-heidelberg.de>
-// saving 2 byte, 1 cycle
-replace {
-        mov  b,#0x00
-        mov  a,#0x00
-} by {
-        ; Peephole 179   changed mov to clr
-        clr  a
-        mov  b,a
-}
-
-// saving 1 byte, 0 cycles
-replace {
-        mov  a,#0x00
-} by {
-        ; Peephole 180   changed mov to clr
-        clr  a
-}
-
-// saving 3 byte, 2 cycles, return(NULL) profits here
-replace {
-        mov  dpl,#0x00
-        mov  dph,#0x00
-} by {
-        ; Peephole 181   used 16 bit load of dptr
-        mov  dptr,#0x0000
-}
-
-// saving 3 byte, 2 cycles, return(float_constant) profits here
-replace {
-        mov  dpl,#%1
-        mov  dph,#%2
-} by {
-        ; Peephole 182   used 16 bit load of dptr
-        mov  dptr,#(((%2)<<8) + %1)
-}
-
-replace {
-        anl  %1,#%2
-        anl  %1,#%3
-} by {
-        ; Peephole 183   avoided anl during execution
-        anl  %1,#(%2 & %3)
-}
-
-replace {
-        mov  %1,a
-        cpl  a
-        mov  %1,a
-} by {
-        ; Peephole 184   removed redundant mov
-        cpl  a
-        mov  %1,a
-}
-
-replace {
-// acc being incremented might cause problems
-        mov  %1,a
-        inc  %1
-} by {
-        ; Peephole 185   changed order of increment (acc incremented also!)
-        inc  a
-        mov  %1,a
-}
-
-replace {
-        add  a,#%1
-        mov  dpl,a
-        clr  a
-        addc a,#(%1 >> 8)
-        mov  dph,a
-        clr  a
-        movc a,@a+dptr
-       mov  %2,a
-       inc  dptr
-       clr  a
-       movc a,@a+dptr
-       mov  %3,a
-       inc  dptr
-       clr  a
-       movc a,@a+dptr
-       mov  %4,a
-       inc  dptr
-       clr  a  
-} by {
-        ; Peephole 186.a   optimized movc sequence
-        mov  dptr,#%1
-       mov  b,acc
-        movc a,@a+dptr
-       mov  %2,a
-       mov  acc,b
-       inc  dptr       
-       movc a,@a+dptr
-       mov  %3,a
-       mov  acc,b
-       inc  dptr
-       mov  %4,a
-       mov  acc,b
-       inc  dptr
-}
-
-replace {
-        add  a,#%1
-        mov  dpl,a
-        clr  a
-        addc a,#(%1 >> 8)
-        mov  dph,a
-        clr  a
-        movc a,@a+dptr
-       mov  %2,a
-       inc  dptr
-       clr  a
-       movc a,@a+dptr
-       mov  %3,a
-       inc  dptr
-       clr  a
-} by {
-        ; Peephole 186.b   optimized movc sequence
-        mov  dptr,#%1
-       mov  b,acc
-        movc a,@a+dptr
-       mov  %2,a
-       mov  acc,b
-       inc  dptr       
-       movc a,@a+dptr
-       mov  %3,a
-       mov  acc,b
-       inc  dptr       
-}
-
-replace {
-        add  a,#%1
-        mov  dpl,a
-        clr  a
-        addc a,#(%1 >> 8)
-        mov  dph,a
-        clr  a
-        movc a,@a+dptr
-       mov  %2,a
-       inc  dptr
-       clr  a
-} by {
-        ; Peephole 186.c   optimized movc sequence
-        mov  dptr,#%1
-       mov  b,acc
-        movc a,@a+dptr
-       mov  %2,a
-       mov  acc,b
-       inc  dptr
-}
-
-replace {
-        add  a,#%1
-        mov  dpl,a
-        clr  a
-        addc a,#(%1 >> 8)
-        mov  dph,a
-        clr  a
-        movc a,@a+dptr
-} by {
-        ; Peephole 186   optimized movc sequence
-        mov  dptr,#%1
-        movc a,@a+dptr
-}
-
-replace {
-        mov  r%1,%2
-        anl  ar%1,#%3
-        mov  a,r%1
-} by {
-        ; Peephole 187   used a instead of ar%1 for anl
-        mov  a,%2
-        anl  a,#%3
-        mov  r%1,a
-}
-
-replace {
-        mov  %1,a
-        mov  dptr,%2
-        movc a,@a+dptr
-        mov  %1,a
-} by {
-        ; Peephole 188   removed redundant mov
-        mov  dptr,%2
-        movc a,@a+dptr
-        mov  %1,a
-}
-
-replace {
-        anl  a,#0x0f
-        mov  %1,a
-        mov  a,#0x0f
-        anl  a,%1
-} by {
-        ; Peephole 189   removed redundant mov and anl
-        anl  a,#0x0f
-        mov  %1,a
-}
-
-// rules 190 & 191 need to be in order
-replace {
-        mov  a,%1
-        lcall __gptrput
-        mov  a,%1
-} by {
-        ; Peephole 190   removed redundant mov
-        mov  a,%1
-        lcall __gptrput
-}
-
-replace {
-        mov  %1,a
-        mov  dpl,%2
-        mov  dph,%3
-        mov  b,%4
-        mov  a,%1
-} by {
-        ; Peephole 191   removed redundant mov
-        mov  %1,a
-        mov  dpl,%2
-        mov  dph,%3
-        mov  b,%4
-}
-
-replace {
-        mov  r%1,a
-        mov  @r%2,ar%1
-} by {
-        ; Peephole 192   used a instead of ar%1 as source
-        mov  r%1,a
-        mov  @r%2,a
-}
-
-replace {
-        jnz  %3
-        mov  a,%4
-        jnz  %3
-        mov  a,%9
-        jnz  %3
-        mov  a,%12
-        cjne %13,%14,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 193.a optimized misc jump sequence
-        jnz  %8
-        mov  a,%4
-        jnz  %8
-        mov  a,%9
-        jnz  %8
-        mov  a,%12
-        cjne %13,%14,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        cjne %1,%2,%3
-        mov  a,%4
-        cjne %5,%6,%3
-        mov  a,%9
-        cjne %10,%11,%3
-        mov  a,%12
-        cjne %13,%14,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 193   optimized misc jump sequence
-        cjne %1,%2,%8
-        mov  a,%4
-        cjne %5,%6,%8
-        mov  a,%9
-        cjne %10,%11,%8
-        mov  a,%12
-        cjne %13,%14,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        cjne %1,%2,%3
-        cjne %5,%6,%3
-        cjne %10,%11,%3
-        cjne %13,%14,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 194   optimized misc jump sequence
-        cjne %1,%2,%8
-        cjne %5,%6,%8
-        cjne %10,%11,%8
-        cjne %13,%14,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        jnz  %3
-        mov  a,%4
-        jnz  %3
-        mov  a,%9
-        cjne %10,%11,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 195.a optimized misc jump sequence
-        jnz  %8
-        mov  a,%4
-        jnz  %8
-        mov  a,%9
-        cjne %10,%11,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        cjne %1,%2,%3
-        mov  a,%4
-        cjne %5,%6,%3
-        mov  a,%9
-        cjne %10,%11,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 195   optimized misc jump sequence
-        cjne %1,%2,%8
-        mov  a,%4
-        cjne %5,%6,%8
-        mov  a,%9
-        cjne %10,%11,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        cjne %1,%2,%3
-        cjne %5,%6,%3
-        cjne %10,%11,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 196   optimized misc jump sequence
-        cjne %1,%2,%8
-        cjne %5,%6,%8
-        cjne %10,%11,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        jnz  %3
-        mov  a,%4
-        cjne %5,%6,%3
-        sjmp %7
-%3:
-        sjmp %8 
-} by {
-        ; Peephole 197.a optimized misc jump sequence
-        jnz  %8
-        mov  a,%4
-        cjne %5,%6,%8
-        sjmp %7
-%3:     
-}
-
-replace {
-        cjne %1,%2,%3
-        mov  a,%4
-        cjne %5,%6,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 197   optimized misc jump sequence
-        cjne %1,%2,%8
-        mov  a,%4
-        cjne %5,%6,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        cjne %1,%2,%3
-        cjne %5,%6,%3
-        sjmp %7
-%3:
-        sjmp %8
-} by {
-        ; Peephole 198   optimized misc jump sequence
-        cjne %1,%2,%8
-        cjne %5,%6,%8
-        sjmp %7
-%3:
-}
-
-replace {
-        cjne %1,%2,%3
-        sjmp %4
-%3:
-        sjmp %5
-} by {
-        ; Peephole 199   optimized misc jump sequence
-        cjne %1,%2,%5
-        sjmp %4
-%3:
-}
-
-replace {
-        sjmp %1
-%1:
-} by {
-        ; Peephole 200   removed redundant sjmp
-%1:
-}
-
-replace {
-        sjmp %1
-%2:
-%1:
-} by {
-        ; Peephole 201   removed redundant sjmp
-%2:
-%1:
-}
-
-replace {
-        push  acc
-        mov   dptr,%1
-        pop   acc
-} by {
-        ; Peephole 202   removed redundant push pop
-        mov   dptr,%1
-}
-
-replace {
-        mov  r%1,_spx
-        lcall %2
-        mov  r%1,_spx
-} by {
-        ; Peephole 203   removed mov  r%1,_spx
-        lcall %2
-}
-
-replace {
-        mov  %1,a
-        add  a,acc
-        mov  %1,a
-} by {
-        ; Peephole 204   removed redundant mov
-        add  a,acc
-        mov  %1,a
-}
-
-replace {
-        djnz %1,%2
-        sjmp  %3
-%2:
-        sjmp  %4
-%3:
-} by {
-        ; Peephole 205   optimized misc jump sequence
-        djnz %1,%4
-%2:
-%3:
-}
-
-replace {
-        mov  %1,%1
-} by {
-        ; Peephole 206   removed redundant mov %1,%1
-}
-
-replace {
-        mov  a,_bp
-        add  a,#0x00
-        mov  %1,a
-} by {
-        ; Peephole 207   removed zero add (acc not set to %1, flags undefined)
-        mov  %1,_bp
-}
-
-replace {
-        push  acc
-        mov   r%1,_bp
-        pop   acc
-} by {
-        ; Peephole 208   removed redundant push pop
-        mov   r%1,_bp
-}
-
-replace {
-        mov  a,_bp
-        add  a,#0x00
-        inc  a
-        mov  %1,a
-} by {
-        ; Peephole 209   optimized increment (acc not set to %1, flags undefined)
-        mov  %1,_bp
-        inc  %1
-}
-
-replace {
-        mov  dptr,#((((%1 >> 8)) <<8) + %1)
-} by {
-        ; Peephole 210   simplified expression
-        mov  dptr,#%1
-}
-
-replace {
-        push %1
-        pop  %1
-} by {
-        ; Peephole 211   removed redundant push %1 pop %1  
-} 
-
-replace {
-       mov  a,_bp
-       add  a,#0x01
-       mov  r%1,a
-} by {
-       ; Peephole 212  reduced add sequence to inc
-       mov  r%1,_bp
-       inc  r%1
-}
-
-replace {
-       mov  %1,#(( %2 >> 8 ) ^ 0x80)
-} by { 
-       mov  %1,#(%2 >> 8)
-       xrl  %1,#0x80
-}
-
-replace {
-       mov  %1,#(( %2 + %3 >> 8 ) ^ 0x80)
-} by { 
-       mov  %1,#((%2 + %3) >> 8)
-       xrl  %1,#0x80
-}
-
-replace  {
-       mov  %1,a
-       mov  a,%2
-       add  a,%1
-} by {
-       ; Peephole 214 reduced some extra movs
-       mov  %1,a
-       add  a,%2       
-} if operandsNotSame
-
-replace {
-       mov  %1,a
-       add  a,%2
-       mov  %1,a
-} by {
-       ; Peephole 215 removed some movs
-       add  a,%2
-       mov  %1,a
-} if operandsNotSame
-
-replace {
-       mov   r%1,%2
-       clr   a
-       inc   r%1
-       mov   @r%1,a
-       dec   r%1
-       mov   @r%1,a
-} by {
-       ; Peephole 216 simplified clear (2bytes)
-       mov   r%1,%2
-       clr   a
-       mov   @r%1,a
-       inc   r%1
-       mov   @r%1,a
-}
-
-replace {
-       mov   r%1,%2
-       clr   a
-       inc   r%1
-       inc   r%1
-       mov   @r%1,a
-       dec   r%1
-       mov   @r%1,a
-       dec   r%1
-       mov   @r%1,a
-} by {
-       ; Peephole 217 simplified clear (3bytes)
-       mov   r%1,%2
-       clr   a
-       mov   @r%1,a
-       inc   r%1
-       mov   @r%1,a
-       inc   r%1
-       mov   @r%1,a
-}
-
-replace {
-       mov   r%1,%2
-       clr   a
-       inc   r%1
-       inc   r%1
-       inc   r%1
-       mov   @r%1,a
-       dec   r%1
-       mov   @r%1,a
-       dec   r%1
-       mov   @r%1,a
-       dec   r%1
-       mov   @r%1,a
-} by {
-       ; Peephole 218 simplified clear (4bytes)
-       mov   r%1,%2
-       clr   a
-       mov   @r%1,a
-       inc   r%1
-       mov   @r%1,a
-       inc   r%1
-       mov   @r%1,a
-       inc   r%1
-       mov   @r%1,a
-}
\ No newline at end of file
diff --git a/src/SDCCpeeph.rul b/src/SDCCpeeph.rul
deleted file mode 100644 (file)
index 8ab8f61..0000000
+++ /dev/null
@@ -1,1605 +0,0 @@
-/* Generated file DO NOT Edit */
-/* To Make changes to rules   */
-/* edit file SDCCpeeph.def    */
-"\n"
-"\n"
-"replace restart {\n"
-"        xch  a,%1\n"
-"        xch  a,%1\n"
-"} by {\n"
-"        ; Peephole 2.a   removed redundant xch xch\n"
-"}\n"
-"\n"
-"replace restart {\n"
-"        mov  %1,#0x00\n"
-"        mov  a,#0x00\n"
-"} by {\n"
-"        ; Peephole 3.a   changed mov to clr\n"
-"        clr  a\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace restart {\n"
-"        mov  %1,#0x00\n"
-"        clr  a\n"
-"} by {\n"
-"        ; Peephole 3.b   changed mov to clr\n"
-"        clr  a\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace restart {\n"
-"        mov  %1,#0x00\n"
-"        mov  %2,#0x00\n"
-"        mov  a,%3\n"
-"} by {\n"
-"        ; Peephole 3.c   changed mov to clr\n"
-"        clr  a\n"
-"        mov  %1,a\n"
-"        mov  %2,a\n"
-"        mov  a,%3\n"
-"}\n"
-"\n"
-"\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        mov  dptr,#%2\n"
-"        mov  a,%1\n"
-"        movx @dptr,a\n"
-"} by {\n"
-"        ; Peephole 100   removed redundant mov\n"
-"        mov  %1,a\n"
-"        mov  dptr,#%2\n"
-"        movx @dptr,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"      mov  a,acc\n"
-"} by {\n"
-"      ;  Peephole 100.a   removed redundant mov\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,%1\n"
-"        movx @dptr,a\n"
-"        inc  dptr\n"
-"        mov  a,%1\n"
-"        movx @dptr,a\n"
-"} by {\n"
-"        ; Peephole 101   removed redundant mov\n"
-"        mov  a,%1\n"
-"        movx @dptr,a\n"
-"        inc  dptr\n"
-"        movx @dptr,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,%2\n"
-"        ljmp %3\n"
-"%4:\n"
-"        mov  %1,%5\n"
-"%3:\n"
-"        mov  dpl,%1\n"
-"%7:\n"
-"        mov  sp,bp\n"
-"        pop  bp\n"
-"} by {\n"
-"        ; Peephole 102   removed redundant mov\n"
-"        mov  dpl,%2\n"
-"        ljmp %3\n"
-"%4:\n"
-"        mov  dpl,%5\n"
-"%3:\n"
-"%7:\n"
-"        mov  sp,bp\n"
-"        pop  bp\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,%2\n"
-"        ljmp %3\n"
-"%4:\n"
-"        mov  a%1,%5\n"
-"%3:\n"
-"        mov  dpl,%1\n"
-"%7:\n"
-"        mov  sp,bp\n"
-"        pop  bp\n"
-"} by {\n"
-"        ; Peephole 103   removed redundant mov\n"
-"        mov  dpl,%2\n"
-"        ljmp %3\n"
-"%4:\n"
-"        mov  dpl,%5\n"
-"%3:\n"
-"%7:\n"
-"        mov  sp,bp\n"
-"        pop  bp\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,bp\n"
-"        clr  c\n"
-"        add  a,#0x01\n"
-"        mov  r%1,a\n"
-"} by {\n"
-"        ; Peephole 104   optimized increment (acc not set to r%1, flags undefined)\n"
-"        mov  r%1,bp\n"
-"        inc  r%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        mov  a,%1\n"
-"} by {\n"
-"        ; Peephole 105   removed redundant mov\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        clr  c\n"
-"        mov  a,%1\n"
-"} by {\n"
-"        ; Peephole 106   removed redundant mov \n"
-"        mov  %1,a\n"
-"        clr  c\n"
-"}\n"
-"\n"
-"replace {\n"
-"        ljmp %1\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 107   removed redundant ljmp\n"
-"%1:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        jc   %1\n"
-"        ljmp %5\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 108   removed ljmp by inverse jump logic\n"
-"        jnc  %5\n"
-"%1:\n"
-"} if labelInRange\n"
-"\n"
-"replace {\n"
-"        jz   %1\n"
-"        ljmp %5\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 109   removed ljmp by inverse jump logic\n"
-"        jnz  %5\n"
-"%1:\n"
-"} if labelInRange\n"
-"\n"
-"replace {\n"
-"        jnz  %1\n"
-"        ljmp %5\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 110   removed ljmp by inverse jump logic\n"
-"        jz  %5\n"
-"%1:\n"
-"} if labelInRange\n"
-"\n"
-"replace {\n"
-"        jb   %1,%2\n"
-"        ljmp %5\n"
-"%2:\n"
-"} by {\n"
-"        ; Peephole 111   removed ljmp by inverse jump logic\n"
-"        jnb  %1,%5\n"
-"%2:\n"
-"} if labelInRange\n"
-"\n"
-"replace {\n"
-"        jnb  %1,%2\n"
-"        ljmp %5\n"
-"%2:\n"
-"} by {\n"
-"       ; Peephole 112   removed ljmp by inverse jump logic\n"
-"        jb   %1,%5\n"
-"%2:\n"
-"} if labelInRange\n"
-"\n"
-"replace {\n"
-"        ljmp %5\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 132   changed ljmp to sjmp\n"
-"        sjmp %5\n"
-"%1:\n"
-"} if labelInRange\n"
-"\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        rrc  a\n"
-"        mov  %4,c\n"
-"} by {\n"
-"        ; Peephole 113   optimized misc sequence\n"
-"        clr  %4\n"
-"        cjne %1,%2,%3\n"
-"        setb %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        rrc  a\n"
-"        mov  %4,c\n"
-"} by {\n"
-"        ; Peephole 114   optimized misc sequence\n"
-"        clr  %4\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        setb %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jnz  %4\n"
-"} by {\n"
-"        ; Peephole 115   jump optimization \n"
-"        cjne %1,%2,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jnz  %4\n"
-"} by {\n"
-"        ; Peephole 116   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cjne %11,%12,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jnz %4\n"
-"} by {\n"
-"        ; Peephole 117   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cjne %11,%12,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cjne %11,%12,%3\n"
-"        cjne %13,%14,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jnz %4\n"
-"} by {\n"
-"        ; Peephole 118   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cjne %11,%12,%3\n"
-"        cjne %13,%14,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jnz  %4\n"
-"} by {\n"
-"        ; Peephole 119   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jnz  %4\n"
-"} by {\n"
-"        ; Peephole 120   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"        cjne %10,%11,%4\n"
-"%3:\n"
-"}\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %12,%13,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jnz  %4\n"
-"} by {\n"
-"        ; Peephole 121   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"        cjne %10,%11,%4\n"
-"        cjne %12,%13,%4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %12,%13,%3\n"
-"        cjne %14,%15,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jnz  %4\n"
-"} by {\n"
-"        ; Peephole 122   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"        cjne %10,%11,%4\n"
-"        cjne %12,%13,%4\n"
-"        cjne %14,%15,%4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 123   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        smp  %4\n"
-"%3:\n"
-"}\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 124   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        smp  %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %12,%13,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 125   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %12,%13,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,#0x01\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %12,%13,%3\n"
-"        cjne %14,%15,%3\n"
-"        clr  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 126   jump optimization\n"
-"        cjne %1,%2,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %12,%13,%3\n"
-"        cjne %14,%15,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        push psw\n"
-"        mov  psw,%1\n"
-"        push bp\n"
-"        mov  bp,%2\n"
-"%3:\n"
-"        mov  %2,bp\n"
-"        pop  bp\n"
-"        pop  psw\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 127   removed misc sequence\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        rlc  a\n"
-"        jz   %1\n"
-"} by {\n"
-"        ; Peephole 128   jump optimization\n"
-"        jnc  %1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        rlc  a\n"
-"        jnz  %1\n"
-"} by {\n"
-"        ; Peephole 129   jump optimization\n"
-"        jc   %1\n"
-"}\n"
-"\n"
-"replace { \n"
-"        mov  r%1,@r%2\n"
-"} by {\n"
-"        ; Peephole 130   changed target address mode r%1 to ar%1\n"
-"        mov  ar%1,@r%2\n"
-"}\n"
-"\n"
-"replace { \n"
-"        mov  a,%1\n"
-"        subb a,#0x01\n"
-"        mov  %2,a\n"
-"        mov  %1,%2\n"
-"} by {\n"
-"        ; Peephole 131   optimized decrement (not caring for c)\n"
-"        dec  %1         \n"
-"        mov  %2,%1      \n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,%2\n"
-"        mov  ar%3,@r%1\n"
-"        inc  r%3\n"
-"        mov  r%4,%2\n"
-"        mov  @r%4,ar%3\n"
-"} by {\n"
-"        ; Peephole 133   removed redundant moves\n"
-"        mov  r%1,%2\n"
-"        inc  @r%1\n"
-"        mov  ar%3,@r%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,%2\n"
-"        mov  ar%3,@r%1\n"
-"        dec  r%3\n"
-"        mov  r%4,%2\n"
-"        mov  @r%4,ar%3\n"
-"} by {\n"
-"        ; Peephole 134   removed redundant moves\n"
-"        mov  r%1,%2\n"
-"        dec  @r%1\n"
-"        mov  ar%3,@r%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,a\n"
-"        mov  a,r%2\n"
-"        orl  a,r%1\n"
-"} by {\n"
-"        ; Peephole 135   removed redundant mov\n"
-"        mov  r%1,a\n"
-"        orl  a,r%2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        mov  dpl,%2\n"
-"        mov  dph,%3\n"
-"        mov  a,%1\n"
-"} by {\n"
-"        ; Peephole 136   removed redundant moves\n"
-"        mov  %1,a\n"
-"        mov  dpl,%2\n"
-"        mov  dph,%3\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  b,#0x00\n"
-"        mov  a,%1\n"
-"        cjne %2,%3,%4\n"
-"        mov  b,#0x01\n"
-"%4:\n"
-"        mov  a,b\n"
-"        jz   %5\n"
-"} by {\n"
-"        ; Peephole 137   optimized misc jump sequence\n"
-"        mov  a,%1\n"
-"        cjne %2,%3,%5\n"
-"%4:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  b,#0x00\n"
-"        mov  a,%1\n"
-"        cjne %2,%3,%4\n"
-"        mov  b,#0x01\n"
-"%4:\n"
-"        mov  a,b\n"
-"        jnz  %5\n"
-"} by {\n"
-"        ; Peephole 138   optimized misc jump sequence\n"
-"        mov  a,%1\n"
-"        cjne %2,%3,%4\n"
-"        sjmp %5\n"
-"%4:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,a\n"
-"        anl  ar%1,%2\n"
-"        mov  a,r%1\n"
-"} by {\n"
-"        ; Peephole 139   removed redundant mov\n"
-"        anl  a,%2\n"
-"        mov  r%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,a\n"
-"        orl  ar%1,%2\n"
-"        mov  a,r%1\n"
-"} by {\n"
-"        ; Peephole 140   removed redundant mov\n"
-"        orl  a,%2\n"
-"        mov  r%1,a }\n"
-"\n"
-"replace {\n"
-"        mov  r%1,a\n"
-"        xrl  ar%1,%2\n"
-"        mov  a,r%1\n"
-"} by {\n"
-"        ; Peephole 141   removed redundant mov\n"
-"        xrl  a,%2\n"
-"        mov  r%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,a\n"
-"        mov  r%2,ar%1\n"
-"        mov  ar%1,@r%2\n"
-"} by {\n"
-"        ; Peephole 142   removed redundant moves\n"
-"        mov  r%2,a\n"
-"        mov  ar%1,@r%2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        rlc  a\n"
-"        mov  acc.0,c\n"
-"} by {\n"
-"        ; Peephole 143   converted rlc to rl\n"
-"        rl   a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        rrc  a\n"
-"        mov  acc.7,c\n"
-"} by {\n"
-"        ; Peephole 144   converted rrc to rc\n"
-"        rr   a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  c\n"
-"        addc a,%1\n"
-"} by {\n"
-"        ; Peephole 145   changed to add without carry  \n"
-"        add  a,%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        clr  c\n"
-"        mov  a,%1\n"
-"        addc a,%2\n"
-"} by {\n"
-"        ; Peephole 146   changed to add without carry\n"
-"        mov  a,%1\n"
-"        add  a,%2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        orl  r%1,a\n"
-"} by {\n"
-"        ; Peephole 147   changed target address mode r%1 to ar%1\n"
-"        orl  ar%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        anl  r%1,a\n"
-"} by {\n"
-"        ; Peephole 148   changed target address mode r%1 to ar%1\n"
-"        anl  ar%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        xrl  r%1,a\n"
-"} by {\n"
-"        ; Peephole 149   changed target address mode r%1 to ar%1\n"
-"        xrl  ar%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  dpl,%1\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 150   removed misc moves via dpl before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  dpl,%1\n"
-"        mov  dph,%2\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 151   removed misc moves via dph, dpl before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  dpl,%1\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 152   removed misc moves via dph, dpl before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  %3,b\n"
-"        mov  dpl,%1\n"
-"        mov  dph,%2\n"
-"        mov  b,%3\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 153   removed misc moves via dph, dpl, b before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  %3,b\n"
-"        mov  dpl,%1\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 154   removed misc moves via dph, dpl, b before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  %3,b\n"
-"        mov  dpl,%1\n"
-"        mov  dph,%2\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 155   removed misc moves via dph, dpl, b before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  %3,b\n"
-"        mov  %4,a\n"
-"        mov  dpl,%1\n"
-"        mov  dph,%2\n"
-"        mov  b,%3\n"
-"        mov  a,%4\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 156   removed misc moves via dph, dpl, b, a before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  %3,b\n"
-"        mov  %4,a\n"
-"        mov  dpl,%1\n"
-"        mov  dph,%2\n"
-"%9:\n"
-"        ret\n"
-"} by {\n"
-"        ; Peephole 157   removed misc moves via dph, dpl, b, a before return\n"
-"%9:\n"
-"        ret\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,dpl\n"
-"        mov  %2,dph\n"
-"        mov  %3,b\n"
-"        mov  %4,a\n"
-"        mov  dpl,%1\n"
-"%9:\n"
-"        ret } by {\n"
-"        ; Peephole 158   removed misc moves via dph, dpl, b, a before return\n"
-"%9:\n"
-"        ret }\n"
-"\n"
-"replace {\n"
-"        mov  %1,#%2\n"
-"        xrl  %1,#0x80\n"
-"} by {\n"
-"        ; Peephole 159   avoided xrl during execution\n"
-"        mov  %1,#(%2 ^ 0x80)\n"
-"}\n"
-"\n"
-"replace {\n"
-"        jnc  %1\n"
-"        sjmp %2\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 160   removed sjmp by inverse jump logic\n"
-"        jc   %2\n"
-"%1:}\n"
-"\n"
-"replace {\n"
-"        jc   %1\n"
-"        sjmp %2\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 161   removed sjmp by inverse jump logic\n"
-"        jnc  %2\n"
-"%1:}\n"
-"\n"
-"replace {\n"
-"        jnz  %1\n"
-"        sjmp %2\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 162   removed sjmp by inverse jump logic\n"
-"        jz   %2\n"
-"%1:}\n"
-"\n"
-"replace {\n"
-"        jz   %1\n"
-"        sjmp %2\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 163   removed sjmp by inverse jump logic\n"
-"        jnz  %2\n"
-"%1:}\n"
-"\n"
-"replace {\n"
-"        jnb  %3,%1\n"
-"        sjmp %2\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 164   removed sjmp by inverse jump logic\n"
-"        jb   %3,%2\n"
-"%1:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        jb   %3,%1\n"
-"        sjmp %2\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 165   removed sjmp by inverse jump logic\n"
-"        jnb  %3,%2\n"
-"%1:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,%2\n"
-"        mov  %3,%1\n"
-"        mov  %2,%1\n"
-"} by {\n"
-"        ; Peephole 166   removed redundant mov\n"
-"        mov  %1,%2\n"
-"        mov  %3,%1 }\n"
-"\n"
-"replace {\n"
-"        mov  c,%1\n"
-"        cpl  c\n"
-"        mov  %1,c\n"
-"} by {\n"
-"        ; Peephole 167   removed redundant bit moves (c not set to %1)\n"
-"        cpl  %1 }\n"
-"\n"
-"replace {\n"
-"        jnb  %1,%2\n"
-"        sjmp %3\n"
-"%2:} by {\n"
-"        ; Peephole 168   jump optimization\n"
-"        jb   %1,%3\n"
-"%2:}\n"
-"\n"
-"replace {\n"
-"        jb   %1,%2\n"
-"        sjmp %3\n"
-"%2:} by {\n"
-"        ; Peephole 169   jump optimization\n"
-"        jnb  %1,%3\n"
-"%2:}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 170   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"%3:}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 171   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"        cjne %9,%10,%4\n"
-"%3:}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cjne %11,%12,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 172   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"        cjne %9,%10,%4\n"
-"        cjne %11,%12,%4\n"
-"%3:}\n"
-"\n"
-"replace {\n"
-"        clr  a\n"
-"        cjne %1,%2,%3\n"
-"        cjne %9,%10,%3\n"
-"        cjne %11,%12,%3\n"
-"        cjne %13,%14,%3\n"
-"        cpl  a\n"
-"%3:\n"
-"        jz   %4\n"
-"} by {\n"
-"        ; Peephole 173   jump optimization\n"
-"        cjne %1,%2,%4\n"
-"        cjne %9,%10,%4\n"
-"        cjne %11,%12,%4\n"
-"        cjne %13,%14,%4\n"
-"%3:}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,%2\n"
-"        clr  c\n"
-"        mov  a,r%1\n"
-"        subb a,#0x01\n"
-"        mov  %2,a\n"
-"} by {\n"
-"        ; Peephole 174   optimized decrement (acc not set to %2, flags undefined)\n"
-"        mov  r%1,%2\n"
-"        dec  %2\n"
-"}\n"
-"\n"
-"\n"
-"replace {\n"
-"        mov  r%1,%2\n"
-"        mov  a,r%1\n"
-"        add  a,#0x01\n"
-"        mov  %2,a\n"
-"} by {\n"
-"        ; Peephole 175   optimized increment (acc not set to %2, flags undefined)\n"
-"        mov  r%1,%2\n"
-"        inc  %2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,@r%2\n"
-"        inc  %1\n"
-"        mov  @r%2,%1\n"
-"} by {\n"
-"        ; Peephole 176   optimized increment, removed redundant mov\n"
-"        inc  @r%2\n"
-"        mov  %1,@r%2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,%2\n"
-"        mov  %2,%1\n"
-"} by {\n"
-"        ; Peephole 177   removed redundant mov\n"
-"        mov  %1,%2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,%1\n"
-"        mov  b,a\n"
-"        mov  a,%2\n"
-"} by {\n"
-"        ; Peephole 178   removed redundant mov\n"
-"        mov  b,%1\n"
-"        mov  a,%2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  b,#0x00\n"
-"        mov  a,#0x00\n"
-"} by {\n"
-"        ; Peephole 179   changed mov to clr\n"
-"        clr  a\n"
-"        mov  b,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,#0x00\n"
-"} by {\n"
-"        ; Peephole 180   changed mov to clr\n"
-"        clr  a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  dpl,#0x00\n"
-"        mov  dph,#0x00\n"
-"} by {\n"
-"        ; Peephole 181   used 16 bit load of dptr\n"
-"        mov  dptr,#0x0000\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  dpl,#%1\n"
-"        mov  dph,#%2\n"
-"} by {\n"
-"        ; Peephole 182   used 16 bit load of dptr\n"
-"        mov  dptr,#(((%2)<<8) + %1)\n"
-"}\n"
-"\n"
-"replace {\n"
-"        anl  %1,#%2\n"
-"        anl  %1,#%3\n"
-"} by {\n"
-"        ; Peephole 183   avoided anl during execution\n"
-"        anl  %1,#(%2 & %3)\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        cpl  a\n"
-"        mov  %1,a\n"
-"} by {\n"
-"        ; Peephole 184   removed redundant mov\n"
-"        cpl  a\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        inc  %1\n"
-"} by {\n"
-"        ; Peephole 185   changed order of increment (acc incremented also!)\n"
-"        inc  a\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        add  a,#%1\n"
-"        mov  dpl,a\n"
-"        clr  a\n"
-"        addc a,#(%1 >> 8)\n"
-"        mov  dph,a\n"
-"        clr  a\n"
-"        movc a,@a+dptr\n"
-"      mov  %2,a\n"
-"      inc  dptr\n"
-"      clr  a\n"
-"      movc a,@a+dptr\n"
-"      mov  %3,a\n"
-"      inc  dptr\n"
-"      clr  a\n"
-"      movc a,@a+dptr\n"
-"      mov  %4,a\n"
-"      inc  dptr\n"
-"      clr  a  \n"
-"} by {\n"
-"        ; Peephole 186.a   optimized movc sequence\n"
-"        mov  dptr,#%1\n"
-"      mov  b,acc\n"
-"        movc a,@a+dptr\n"
-"      mov  %2,a\n"
-"      mov  acc,b\n"
-"      inc  dptr       \n"
-"      movc a,@a+dptr\n"
-"      mov  %3,a\n"
-"      mov  acc,b\n"
-"      inc  dptr\n"
-"      mov  %4,a\n"
-"      mov  acc,b\n"
-"      inc  dptr\n"
-"}\n"
-"\n"
-"replace {\n"
-"        add  a,#%1\n"
-"        mov  dpl,a\n"
-"        clr  a\n"
-"        addc a,#(%1 >> 8)\n"
-"        mov  dph,a\n"
-"        clr  a\n"
-"        movc a,@a+dptr\n"
-"      mov  %2,a\n"
-"      inc  dptr\n"
-"      clr  a\n"
-"      movc a,@a+dptr\n"
-"      mov  %3,a\n"
-"      inc  dptr\n"
-"      clr  a\n"
-"} by {\n"
-"        ; Peephole 186.b   optimized movc sequence\n"
-"        mov  dptr,#%1\n"
-"      mov  b,acc\n"
-"        movc a,@a+dptr\n"
-"      mov  %2,a\n"
-"      mov  acc,b\n"
-"      inc  dptr       \n"
-"      movc a,@a+dptr\n"
-"      mov  %3,a\n"
-"      mov  acc,b\n"
-"      inc  dptr       \n"
-"}\n"
-"\n"
-"replace {\n"
-"        add  a,#%1\n"
-"        mov  dpl,a\n"
-"        clr  a\n"
-"        addc a,#(%1 >> 8)\n"
-"        mov  dph,a\n"
-"        clr  a\n"
-"        movc a,@a+dptr\n"
-"      mov  %2,a\n"
-"      inc  dptr\n"
-"      clr  a\n"
-"} by {\n"
-"        ; Peephole 186.c   optimized movc sequence\n"
-"        mov  dptr,#%1\n"
-"      mov  b,acc\n"
-"        movc a,@a+dptr\n"
-"      mov  %2,a\n"
-"      mov  acc,b\n"
-"      inc  dptr\n"
-"}\n"
-"\n"
-"replace {\n"
-"        add  a,#%1\n"
-"        mov  dpl,a\n"
-"        clr  a\n"
-"        addc a,#(%1 >> 8)\n"
-"        mov  dph,a\n"
-"        clr  a\n"
-"        movc a,@a+dptr\n"
-"} by {\n"
-"        ; Peephole 186   optimized movc sequence\n"
-"        mov  dptr,#%1\n"
-"        movc a,@a+dptr\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,%2\n"
-"        anl  ar%1,#%3\n"
-"        mov  a,r%1\n"
-"} by {\n"
-"        ; Peephole 187   used a instead of ar%1 for anl\n"
-"        mov  a,%2\n"
-"        anl  a,#%3\n"
-"        mov  r%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        mov  dptr,%2\n"
-"        movc a,@a+dptr\n"
-"        mov  %1,a\n"
-"} by {\n"
-"        ; Peephole 188   removed redundant mov\n"
-"        mov  dptr,%2\n"
-"        movc a,@a+dptr\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        anl  a,#0x0f\n"
-"        mov  %1,a\n"
-"        mov  a,#0x0f\n"
-"        anl  a,%1\n"
-"} by {\n"
-"        ; Peephole 189   removed redundant mov and anl\n"
-"        anl  a,#0x0f\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,%1\n"
-"        lcall __gptrput\n"
-"        mov  a,%1\n"
-"} by {\n"
-"        ; Peephole 190   removed redundant mov\n"
-"        mov  a,%1\n"
-"        lcall __gptrput\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        mov  dpl,%2\n"
-"        mov  dph,%3\n"
-"        mov  b,%4\n"
-"        mov  a,%1\n"
-"} by {\n"
-"        ; Peephole 191   removed redundant mov\n"
-"        mov  %1,a\n"
-"        mov  dpl,%2\n"
-"        mov  dph,%3\n"
-"        mov  b,%4\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,a\n"
-"        mov  @r%2,ar%1\n"
-"} by {\n"
-"        ; Peephole 192   used a instead of ar%1 as source\n"
-"        mov  r%1,a\n"
-"        mov  @r%2,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        jnz  %3\n"
-"        mov  a,%4\n"
-"        jnz  %3\n"
-"        mov  a,%9\n"
-"        jnz  %3\n"
-"        mov  a,%12\n"
-"        cjne %13,%14,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 193.a optimized misc jump sequence\n"
-"        jnz  %8\n"
-"        mov  a,%4\n"
-"        jnz  %8\n"
-"        mov  a,%9\n"
-"        jnz  %8\n"
-"        mov  a,%12\n"
-"        cjne %13,%14,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%3\n"
-"        mov  a,%9\n"
-"        cjne %10,%11,%3\n"
-"        mov  a,%12\n"
-"        cjne %13,%14,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 193   optimized misc jump sequence\n"
-"        cjne %1,%2,%8\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%8\n"
-"        mov  a,%9\n"
-"        cjne %10,%11,%8\n"
-"        mov  a,%12\n"
-"        cjne %13,%14,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        cjne %5,%6,%3\n"
-"        cjne %10,%11,%3\n"
-"        cjne %13,%14,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 194   optimized misc jump sequence\n"
-"        cjne %1,%2,%8\n"
-"        cjne %5,%6,%8\n"
-"        cjne %10,%11,%8\n"
-"        cjne %13,%14,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        jnz  %3\n"
-"        mov  a,%4\n"
-"        jnz  %3\n"
-"        mov  a,%9\n"
-"        cjne %10,%11,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 195.a optimized misc jump sequence\n"
-"        jnz  %8\n"
-"        mov  a,%4\n"
-"        jnz  %8\n"
-"        mov  a,%9\n"
-"        cjne %10,%11,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%3\n"
-"        mov  a,%9\n"
-"        cjne %10,%11,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 195   optimized misc jump sequence\n"
-"        cjne %1,%2,%8\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%8\n"
-"        mov  a,%9\n"
-"        cjne %10,%11,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        cjne %5,%6,%3\n"
-"        cjne %10,%11,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 196   optimized misc jump sequence\n"
-"        cjne %1,%2,%8\n"
-"        cjne %5,%6,%8\n"
-"        cjne %10,%11,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        jnz  %3\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8 \n"
-"} by {\n"
-"        ; Peephole 197.a optimized misc jump sequence\n"
-"        jnz  %8\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%8\n"
-"        sjmp %7\n"
-"%3:     \n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 197   optimized misc jump sequence\n"
-"        cjne %1,%2,%8\n"
-"        mov  a,%4\n"
-"        cjne %5,%6,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        cjne %5,%6,%3\n"
-"        sjmp %7\n"
-"%3:\n"
-"        sjmp %8\n"
-"} by {\n"
-"        ; Peephole 198   optimized misc jump sequence\n"
-"        cjne %1,%2,%8\n"
-"        cjne %5,%6,%8\n"
-"        sjmp %7\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        cjne %1,%2,%3\n"
-"        sjmp %4\n"
-"%3:\n"
-"        sjmp %5\n"
-"} by {\n"
-"        ; Peephole 199   optimized misc jump sequence\n"
-"        cjne %1,%2,%5\n"
-"        sjmp %4\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        sjmp %1\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 200   removed redundant sjmp\n"
-"%1:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        sjmp %1\n"
-"%2:\n"
-"%1:\n"
-"} by {\n"
-"        ; Peephole 201   removed redundant sjmp\n"
-"%2:\n"
-"%1:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        push  acc\n"
-"        mov   dptr,%1\n"
-"        pop   acc\n"
-"} by {\n"
-"        ; Peephole 202   removed redundant push pop\n"
-"        mov   dptr,%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  r%1,_spx\n"
-"        lcall %2\n"
-"        mov  r%1,_spx\n"
-"} by {\n"
-"        ; Peephole 203   removed mov  r%1,_spx\n"
-"        lcall %2\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,a\n"
-"        add  a,acc\n"
-"        mov  %1,a\n"
-"} by {\n"
-"        ; Peephole 204   removed redundant mov\n"
-"        add  a,acc\n"
-"        mov  %1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"        djnz %1,%2\n"
-"        sjmp  %3\n"
-"%2:\n"
-"        sjmp  %4\n"
-"%3:\n"
-"} by {\n"
-"        ; Peephole 205   optimized misc jump sequence\n"
-"        djnz %1,%4\n"
-"%2:\n"
-"%3:\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  %1,%1\n"
-"} by {\n"
-"        ; Peephole 206   removed redundant mov %1,%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,_bp\n"
-"        add  a,#0x00\n"
-"        mov  %1,a\n"
-"} by {\n"
-"        ; Peephole 207   removed zero add (acc not set to %1, flags undefined)\n"
-"        mov  %1,_bp\n"
-"}\n"
-"\n"
-"replace {\n"
-"        push  acc\n"
-"        mov   r%1,_bp\n"
-"        pop   acc\n"
-"} by {\n"
-"        ; Peephole 208   removed redundant push pop\n"
-"        mov   r%1,_bp\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  a,_bp\n"
-"        add  a,#0x00\n"
-"        inc  a\n"
-"        mov  %1,a\n"
-"} by {\n"
-"        ; Peephole 209   optimized increment (acc not set to %1, flags undefined)\n"
-"        mov  %1,_bp\n"
-"        inc  %1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        mov  dptr,#((((%1 >> 8)) <<8) + %1)\n"
-"} by {\n"
-"        ; Peephole 210   simplified expression\n"
-"        mov  dptr,#%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"        push %1\n"
-"        pop  %1\n"
-"} by {\n"
-"        ; Peephole 211   removed redundant push %1 pop %1  \n"
-"} \n"
-"\n"
-"replace {\n"
-"      mov  a,_bp\n"
-"      add  a,#0x01\n"
-"      mov  r%1,a\n"
-"} by {\n"
-"      ; Peephole 212  reduced add sequence to inc\n"
-"      mov  r%1,_bp\n"
-"      inc  r%1\n"
-"}\n"
-"\n"
-"replace {\n"
-"      mov  %1,#(( %2 >> 8 ) ^ 0x80)\n"
-"} by {        \n"
-"      mov  %1,#(%2 >> 8)\n"
-"      xrl  %1,#0x80\n"
-"}\n"
-"\n"
-"replace {\n"
-"      mov  %1,#(( %2 + %3 >> 8 ) ^ 0x80)\n"
-"} by {        \n"
-"      mov  %1,#((%2 + %3) >> 8)\n"
-"      xrl  %1,#0x80\n"
-"}\n"
-"\n"
-"replace  {\n"
-"      mov  %1,a\n"
-"      mov  a,%2\n"
-"      add  a,%1\n"
-"} by {\n"
-"      ; Peephole 214 reduced some extra movs\n"
-"      mov  %1,a\n"
-"      add  a,%2       \n"
-"} if operandsNotSame\n"
-"\n"
-"replace {\n"
-"      mov  %1,a\n"
-"      add  a,%2\n"
-"      mov  %1,a\n"
-"} by {\n"
-"      ; Peephole 215 removed some movs\n"
-"      add  a,%2\n"
-"      mov  %1,a\n"
-"} if operandsNotSame\n"
-"\n"
-"replace {\n"
-"      mov   r%1,%2\n"
-"      clr   a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"      dec   r%1\n"
-"      mov   @r%1,a\n"
-"} by {\n"
-"      ; Peephole 216 simplified clear (2bytes)\n"
-"      mov   r%1,%2\n"
-"      clr   a\n"
-"      mov   @r%1,a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"      mov   r%1,%2\n"
-"      clr   a\n"
-"      inc   r%1\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"      dec   r%1\n"
-"      mov   @r%1,a\n"
-"      dec   r%1\n"
-"      mov   @r%1,a\n"
-"} by {\n"
-"      ; Peephole 217 simplified clear (3bytes)\n"
-"      mov   r%1,%2\n"
-"      clr   a\n"
-"      mov   @r%1,a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"}\n"
-"\n"
-"replace {\n"
-"      mov   r%1,%2\n"
-"      clr   a\n"
-"      inc   r%1\n"
-"      inc   r%1\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"      dec   r%1\n"
-"      mov   @r%1,a\n"
-"      dec   r%1\n"
-"      mov   @r%1,a\n"
-"      dec   r%1\n"
-"      mov   @r%1,a\n"
-"} by {\n"
-"      ; Peephole 218 simplified clear (4bytes)\n"
-"      mov   r%1,%2\n"
-"      clr   a\n"
-"      mov   @r%1,a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"      inc   r%1\n"
-"      mov   @r%1,a\n"
-"}\n"
index af2a30d80147d952207c05c605f74681b7d7abad..a248555c8f80fa13bd9f8d17ba25d2f9d7327e46 100644 (file)
@@ -10,9 +10,12 @@ CFLAGS += -I.. -I. -I../..
 
 all: $(LIB)
 
-$(LIB): $(OBJ)
+$(LIB): peeph.rul $(OBJ)
        rm -f $(LIB)
        ar r $(LIB) $(OBJ)
        ranlib $(LIB)
 
+peeph.rul: peeph.def
+       $(AWK) -f ../SDCCpeeph.awk peeph.def > peeph.rul
+
 include clean.mk
index 2f22fd76d0c61fcaad3f69e0a8742bcf64a08513..7064aab9696d7b58be0832f58b6d3f43490e3e6f 100644 (file)
@@ -8,6 +8,11 @@
 #include "main.h"
 #include "ralloc.h"
 
+static char _defaultRules[] =
+{
+#include "peeph.rul"
+};
+
 /* list of key words used by msc51 */
 static char *_mcs51_keywords[] =     {
     "at",
@@ -134,6 +139,9 @@ PORT mcs51_port = {
     {
        _linkCmd
     },
+    {
+       _defaultRules
+    },
     {
        /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
        1, 1, 2, 4, 1, 2, 3, 1, 4, 4
diff --git a/src/mcs51/peeph.def b/src/mcs51/peeph.def
new file mode 100644 (file)
index 0000000..9ae5acf
--- /dev/null
@@ -0,0 +1,1629 @@
+//replace restart {
+//        pop  %1
+//        push %1
+//} by {
+//        ; Peephole 1     removed pop %1 push %1 (not push pop)
+//}
+
+//replace restart {
+//        pop  %1
+//        mov  %2,%3
+//        push %1
+//} by {
+//        ; Peephole 2     removed pop %1 push %1 (not push pop)
+//        mov  %2,%3 
+//}
+
+//
+// added by Jean Louis VERN for
+// his shift stuff
+replace restart {
+        xch  a,%1
+        xch  a,%1
+} by {
+        ; Peephole 2.a   removed redundant xch xch
+}
+
+replace restart {
+// saving 2 byte
+        mov  %1,#0x00
+        mov  a,#0x00
+} by {
+        ; Peephole 3.a   changed mov to clr
+        clr  a
+        mov  %1,a
+}
+
+replace restart {
+// saving 1 byte
+        mov  %1,#0x00
+        clr  a
+} by {
+        ; Peephole 3.b   changed mov to clr
+        clr  a
+        mov  %1,a
+}
+
+replace restart {
+// saving 1 byte, loosing 1 cycle but maybe allowing peephole 3.b to start
+        mov  %1,#0x00
+        mov  %2,#0x00
+        mov  a,%3
+} by {
+        ; Peephole 3.c   changed mov to clr
+        clr  a
+        mov  %1,a
+        mov  %2,a
+        mov  a,%3
+}
+
+
+
+replace {
+        mov  %1,a
+        mov  dptr,#%2
+        mov  a,%1
+        movx @dptr,a
+} by {
+        ; Peephole 100   removed redundant mov
+        mov  %1,a
+        mov  dptr,#%2
+        movx @dptr,a
+}
+
+replace {
+       mov  a,acc
+} by {
+       ;  Peephole 100.a   removed redundant mov
+}
+
+replace {
+        mov  a,%1
+        movx @dptr,a
+        inc  dptr
+        mov  a,%1
+        movx @dptr,a
+} by {
+        ; Peephole 101   removed redundant mov
+        mov  a,%1
+        movx @dptr,a
+        inc  dptr
+        movx @dptr,a
+}
+
+replace {
+        mov  %1,%2
+        ljmp %3
+%4:
+        mov  %1,%5
+%3:
+        mov  dpl,%1
+%7:
+        mov  sp,bp
+        pop  bp
+} by {
+        ; Peephole 102   removed redundant mov
+        mov  dpl,%2
+        ljmp %3
+%4:
+        mov  dpl,%5
+%3:
+%7:
+        mov  sp,bp
+        pop  bp
+}
+
+replace {
+        mov  %1,%2
+        ljmp %3
+%4:
+        mov  a%1,%5
+%3:
+        mov  dpl,%1
+%7:
+        mov  sp,bp
+        pop  bp
+} by {
+        ; Peephole 103   removed redundant mov
+        mov  dpl,%2
+        ljmp %3
+%4:
+        mov  dpl,%5
+%3:
+%7:
+        mov  sp,bp
+        pop  bp
+}
+
+replace {
+        mov  a,bp
+        clr  c
+        add  a,#0x01
+        mov  r%1,a
+} by {
+        ; Peephole 104   optimized increment (acc not set to r%1, flags undefined)
+        mov  r%1,bp
+        inc  r%1
+}
+
+replace {
+        mov  %1,a
+        mov  a,%1
+} by {
+        ; Peephole 105   removed redundant mov
+        mov  %1,a
+}
+
+replace {
+        mov  %1,a
+        clr  c
+        mov  a,%1
+} by {
+        ; Peephole 106   removed redundant mov 
+        mov  %1,a
+        clr  c
+}
+
+replace {
+        ljmp %1
+%1:
+} by {
+        ; Peephole 107   removed redundant ljmp
+%1:
+}
+
+replace {
+        jc   %1
+        ljmp %5
+%1:
+} by {
+        ; Peephole 108   removed ljmp by inverse jump logic
+        jnc  %5
+%1:
+} if labelInRange
+
+replace {
+        jz   %1
+        ljmp %5
+%1:
+} by {
+        ; Peephole 109   removed ljmp by inverse jump logic
+        jnz  %5
+%1:
+} if labelInRange
+
+replace {
+        jnz  %1
+        ljmp %5
+%1:
+} by {
+        ; Peephole 110   removed ljmp by inverse jump logic
+        jz  %5
+%1:
+} if labelInRange
+
+replace {
+        jb   %1,%2
+        ljmp %5
+%2:
+} by {
+        ; Peephole 111   removed ljmp by inverse jump logic
+        jnb  %1,%5
+%2:
+} if labelInRange
+
+replace {
+        jnb  %1,%2
+        ljmp %5
+%2:
+} by {
+       ; Peephole 112   removed ljmp by inverse jump logic
+        jb   %1,%5
+%2:
+} if labelInRange
+
+replace {
+        ljmp %5
+%1:
+} by {
+        ; Peephole 132   changed ljmp to sjmp
+        sjmp %5
+%1:
+} if labelInRange
+
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cpl  a
+%3:
+        rrc  a
+        mov  %4,c
+} by {
+        ; Peephole 113   optimized misc sequence
+        clr  %4
+        cjne %1,%2,%3
+        setb %4
+%3:
+}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cpl  a
+%3:
+        rrc  a
+        mov  %4,c
+} by {
+        ; Peephole 114   optimized misc sequence
+        clr  %4
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        setb %4
+%3:
+}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cpl  a
+%3:
+        jnz  %4
+} by {
+        ; Peephole 115   jump optimization 
+        cjne %1,%2,%3
+        sjmp %4
+%3:
+}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cpl  a
+%3:
+        jnz  %4
+} by {
+        ; Peephole 116   jump optimization
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        sjmp %4
+%3:
+}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cjne %11,%12,%3
+        cpl  a
+%3:
+        jnz %4
+} by {
+        ; Peephole 117   jump optimization
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cjne %11,%12,%3
+        sjmp %4
+%3:
+}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cjne %11,%12,%3
+        cjne %13,%14,%3
+        cpl  a
+%3:
+        jnz %4
+} by {
+        ; Peephole 118   jump optimization
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cjne %11,%12,%3
+        cjne %13,%14,%3
+        sjmp %4
+%3:
+}
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        clr  a
+%3:
+        jnz  %4
+} by {
+        ; Peephole 119   jump optimization
+        cjne %1,%2,%4
+%3:
+}
+
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        clr  a
+%3:
+        jnz  %4
+} by {
+        ; Peephole 120   jump optimization
+        cjne %1,%2,%4
+        cjne %10,%11,%4
+%3:
+}
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cjne %12,%13,%3
+        clr  a
+%3:
+        jnz  %4
+} by {
+        ; Peephole 121   jump optimization
+        cjne %1,%2,%4
+        cjne %10,%11,%4
+        cjne %12,%13,%4
+%3:
+}
+
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cjne %12,%13,%3
+        cjne %14,%15,%3
+        clr  a
+%3:
+        jnz  %4
+} by {
+        ; Peephole 122   jump optimization
+        cjne %1,%2,%4
+        cjne %10,%11,%4
+        cjne %12,%13,%4
+        cjne %14,%15,%4
+%3:
+}
+
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        clr  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 123   jump optimization
+        cjne %1,%2,%3
+        smp  %4
+%3:
+}
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        clr  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 124   jump optimization
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        smp  %4
+%3:
+}
+
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cjne %12,%13,%3
+        clr  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 125   jump optimization
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cjne %12,%13,%3
+        sjmp %4
+%3:
+}
+
+replace {
+        mov  a,#0x01
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cjne %12,%13,%3
+        cjne %14,%15,%3
+        clr  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 126   jump optimization
+        cjne %1,%2,%3
+        cjne %10,%11,%3
+        cjne %12,%13,%3
+        cjne %14,%15,%3
+        sjmp %4
+%3:
+}
+
+replace {
+        push psw
+        mov  psw,%1
+        push bp
+        mov  bp,%2
+%3:
+        mov  %2,bp
+        pop  bp
+        pop  psw
+        ret
+} by {
+        ; Peephole 127   removed misc sequence
+        ret
+}
+
+replace {
+        clr  a
+        rlc  a
+        jz   %1
+} by {
+        ; Peephole 128   jump optimization
+        jnc  %1
+}
+
+replace {
+        clr  a
+        rlc  a
+        jnz  %1
+} by {
+        ; Peephole 129   jump optimization
+        jc   %1
+}
+
+replace { 
+        mov  r%1,@r%2
+} by {
+        ; Peephole 130   changed target address mode r%1 to ar%1
+        mov  ar%1,@r%2
+}
+
+replace { 
+        mov  a,%1
+        subb a,#0x01
+        mov  %2,a
+        mov  %1,%2
+} by {
+        ; Peephole 131   optimized decrement (not caring for c)
+        dec  %1         
+        mov  %2,%1      
+}
+
+replace {
+        mov  r%1,%2
+        mov  ar%3,@r%1
+        inc  r%3
+        mov  r%4,%2
+        mov  @r%4,ar%3
+} by {
+        ; Peephole 133   removed redundant moves
+        mov  r%1,%2
+        inc  @r%1
+        mov  ar%3,@r%1
+}
+
+replace {
+        mov  r%1,%2
+        mov  ar%3,@r%1
+        dec  r%3
+        mov  r%4,%2
+        mov  @r%4,ar%3
+} by {
+        ; Peephole 134   removed redundant moves
+        mov  r%1,%2
+        dec  @r%1
+        mov  ar%3,@r%1
+}
+
+replace {
+        mov  r%1,a
+        mov  a,r%2
+        orl  a,r%1
+} by {
+        ; Peephole 135   removed redundant mov
+        mov  r%1,a
+        orl  a,r%2
+}
+
+replace {
+        mov  %1,a
+        mov  dpl,%2
+        mov  dph,%3
+        mov  a,%1
+} by {
+        ; Peephole 136   removed redundant moves
+        mov  %1,a
+        mov  dpl,%2
+        mov  dph,%3
+}
+
+replace {
+        mov  b,#0x00
+        mov  a,%1
+        cjne %2,%3,%4
+        mov  b,#0x01
+%4:
+        mov  a,b
+        jz   %5
+} by {
+        ; Peephole 137   optimized misc jump sequence
+        mov  a,%1
+        cjne %2,%3,%5
+%4:
+}
+
+replace {
+        mov  b,#0x00
+        mov  a,%1
+        cjne %2,%3,%4
+        mov  b,#0x01
+%4:
+        mov  a,b
+        jnz  %5
+} by {
+        ; Peephole 138   optimized misc jump sequence
+        mov  a,%1
+        cjne %2,%3,%4
+        sjmp %5
+%4:
+}
+
+replace {
+        mov  r%1,a
+        anl  ar%1,%2
+        mov  a,r%1
+} by {
+        ; Peephole 139   removed redundant mov
+        anl  a,%2
+        mov  r%1,a
+}
+
+replace {
+        mov  r%1,a
+        orl  ar%1,%2
+        mov  a,r%1
+} by {
+        ; Peephole 140   removed redundant mov
+        orl  a,%2
+        mov  r%1,a }
+
+replace {
+        mov  r%1,a
+        xrl  ar%1,%2
+        mov  a,r%1
+} by {
+        ; Peephole 141   removed redundant mov
+        xrl  a,%2
+        mov  r%1,a
+}
+
+replace {
+        mov  r%1,a
+        mov  r%2,ar%1
+        mov  ar%1,@r%2
+} by {
+        ; Peephole 142   removed redundant moves
+        mov  r%2,a
+        mov  ar%1,@r%2
+}
+
+replace {
+        rlc  a
+        mov  acc.0,c
+} by {
+        ; Peephole 143   converted rlc to rl
+        rl   a
+}
+
+replace {
+        rrc  a
+        mov  acc.7,c
+} by {
+        ; Peephole 144   converted rrc to rc
+        rr   a
+}
+
+replace {
+        clr  c
+        addc a,%1
+} by {
+        ; Peephole 145   changed to add without carry  
+        add  a,%1
+}
+
+replace {
+        clr  c
+        mov  a,%1
+        addc a,%2
+} by {
+        ; Peephole 146   changed to add without carry
+        mov  a,%1
+        add  a,%2
+}
+
+replace {
+        orl  r%1,a
+} by {
+        ; Peephole 147   changed target address mode r%1 to ar%1
+        orl  ar%1,a
+}
+
+replace {
+        anl  r%1,a
+} by {
+        ; Peephole 148   changed target address mode r%1 to ar%1
+        anl  ar%1,a
+}
+
+replace {
+        xrl  r%1,a
+} by {
+        ; Peephole 149   changed target address mode r%1 to ar%1
+        xrl  ar%1,a
+}
+
+replace {
+        mov  %1,dpl
+        mov  dpl,%1
+%9:
+        ret
+} by {
+        ; Peephole 150   removed misc moves via dpl before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  dpl,%1
+        mov  dph,%2
+%9:
+        ret
+} by {
+        ; Peephole 151   removed misc moves via dph, dpl before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  dpl,%1
+%9:
+        ret
+} by {
+        ; Peephole 152   removed misc moves via dph, dpl before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  %3,b
+        mov  dpl,%1
+        mov  dph,%2
+        mov  b,%3
+%9:
+        ret
+} by {
+        ; Peephole 153   removed misc moves via dph, dpl, b before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  %3,b
+        mov  dpl,%1
+%9:
+        ret
+} by {
+        ; Peephole 154   removed misc moves via dph, dpl, b before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  %3,b
+        mov  dpl,%1
+        mov  dph,%2
+%9:
+        ret
+} by {
+        ; Peephole 155   removed misc moves via dph, dpl, b before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  %3,b
+        mov  %4,a
+        mov  dpl,%1
+        mov  dph,%2
+        mov  b,%3
+        mov  a,%4
+%9:
+        ret
+} by {
+        ; Peephole 156   removed misc moves via dph, dpl, b, a before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  %3,b
+        mov  %4,a
+        mov  dpl,%1
+        mov  dph,%2
+%9:
+        ret
+} by {
+        ; Peephole 157   removed misc moves via dph, dpl, b, a before return
+%9:
+        ret
+}
+
+replace {
+        mov  %1,dpl
+        mov  %2,dph
+        mov  %3,b
+        mov  %4,a
+        mov  dpl,%1
+%9:
+        ret } by {
+        ; Peephole 158   removed misc moves via dph, dpl, b, a before return
+%9:
+        ret }
+
+replace {
+        mov  %1,#%2
+        xrl  %1,#0x80
+} by {
+        ; Peephole 159   avoided xrl during execution
+        mov  %1,#(%2 ^ 0x80)
+}
+
+replace {
+        jnc  %1
+        sjmp %2
+%1:
+} by {
+        ; Peephole 160   removed sjmp by inverse jump logic
+        jc   %2
+%1:}
+
+replace {
+        jc   %1
+        sjmp %2
+%1:
+} by {
+        ; Peephole 161   removed sjmp by inverse jump logic
+        jnc  %2
+%1:}
+
+replace {
+        jnz  %1
+        sjmp %2
+%1:
+} by {
+        ; Peephole 162   removed sjmp by inverse jump logic
+        jz   %2
+%1:}
+
+replace {
+        jz   %1
+        sjmp %2
+%1:
+} by {
+        ; Peephole 163   removed sjmp by inverse jump logic
+        jnz  %2
+%1:}
+
+replace {
+        jnb  %3,%1
+        sjmp %2
+%1:
+} by {
+        ; Peephole 164   removed sjmp by inverse jump logic
+        jb   %3,%2
+%1:
+}
+
+replace {
+        jb   %3,%1
+        sjmp %2
+%1:
+} by {
+        ; Peephole 165   removed sjmp by inverse jump logic
+        jnb  %3,%2
+%1:
+}
+
+replace {
+        mov  %1,%2
+        mov  %3,%1
+        mov  %2,%1
+} by {
+        ; Peephole 166   removed redundant mov
+        mov  %1,%2
+        mov  %3,%1 }
+
+replace {
+        mov  c,%1
+        cpl  c
+        mov  %1,c
+} by {
+        ; Peephole 167   removed redundant bit moves (c not set to %1)
+        cpl  %1 }
+
+replace {
+        jnb  %1,%2
+        sjmp %3
+%2:} by {
+        ; Peephole 168   jump optimization
+        jb   %1,%3
+%2:}
+
+replace {
+        jb   %1,%2
+        sjmp %3
+%2:} by {
+        ; Peephole 169   jump optimization
+        jnb  %1,%3
+%2:}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cpl  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 170   jump optimization
+        cjne %1,%2,%4
+%3:}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cpl  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 171   jump optimization
+        cjne %1,%2,%4
+        cjne %9,%10,%4
+%3:}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cjne %11,%12,%3
+        cpl  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 172   jump optimization
+        cjne %1,%2,%4
+        cjne %9,%10,%4
+        cjne %11,%12,%4
+%3:}
+
+replace {
+        clr  a
+        cjne %1,%2,%3
+        cjne %9,%10,%3
+        cjne %11,%12,%3
+        cjne %13,%14,%3
+        cpl  a
+%3:
+        jz   %4
+} by {
+        ; Peephole 173   jump optimization
+        cjne %1,%2,%4
+        cjne %9,%10,%4
+        cjne %11,%12,%4
+        cjne %13,%14,%4
+%3:}
+
+replace {
+        mov  r%1,%2
+        clr  c
+        mov  a,r%1
+        subb a,#0x01
+        mov  %2,a
+} by {
+        ; Peephole 174   optimized decrement (acc not set to %2, flags undefined)
+        mov  r%1,%2
+        dec  %2
+}
+
+
+replace {
+        mov  r%1,%2
+        mov  a,r%1
+        add  a,#0x01
+        mov  %2,a
+} by {
+        ; Peephole 175   optimized increment (acc not set to %2, flags undefined)
+        mov  r%1,%2
+        inc  %2
+}
+
+replace {
+        mov  %1,@r%2
+        inc  %1
+        mov  @r%2,%1
+} by {
+        ; Peephole 176   optimized increment, removed redundant mov
+        inc  @r%2
+        mov  %1,@r%2
+}
+
+replace {
+        mov  %1,%2
+        mov  %2,%1
+} by {
+        ; Peephole 177   removed redundant mov
+        mov  %1,%2
+}
+
+replace {
+        mov  a,%1
+        mov  b,a
+        mov  a,%2
+} by {
+        ; Peephole 178   removed redundant mov
+        mov  b,%1
+        mov  a,%2
+}
+
+// rules 179-182 provided by : Frieder <fe@lake.iup.uni-heidelberg.de>
+// saving 2 byte, 1 cycle
+replace {
+        mov  b,#0x00
+        mov  a,#0x00
+} by {
+        ; Peephole 179   changed mov to clr
+        clr  a
+        mov  b,a
+}
+
+// saving 1 byte, 0 cycles
+replace {
+        mov  a,#0x00
+} by {
+        ; Peephole 180   changed mov to clr
+        clr  a
+}
+
+// saving 3 byte, 2 cycles, return(NULL) profits here
+replace {
+        mov  dpl,#0x00
+        mov  dph,#0x00
+} by {
+        ; Peephole 181   used 16 bit load of dptr
+        mov  dptr,#0x0000
+}
+
+// saving 3 byte, 2 cycles, return(float_constant) profits here
+replace {
+        mov  dpl,#%1
+        mov  dph,#%2
+} by {
+        ; Peephole 182   used 16 bit load of dptr
+        mov  dptr,#(((%2)<<8) + %1)
+}
+
+replace {
+        anl  %1,#%2
+        anl  %1,#%3
+} by {
+        ; Peephole 183   avoided anl during execution
+        anl  %1,#(%2 & %3)
+}
+
+replace {
+        mov  %1,a
+        cpl  a
+        mov  %1,a
+} by {
+        ; Peephole 184   removed redundant mov
+        cpl  a
+        mov  %1,a
+}
+
+replace {
+// acc being incremented might cause problems
+        mov  %1,a
+        inc  %1
+} by {
+        ; Peephole 185   changed order of increment (acc incremented also!)
+        inc  a
+        mov  %1,a
+}
+
+replace {
+        add  a,#%1
+        mov  dpl,a
+        clr  a
+        addc a,#(%1 >> 8)
+        mov  dph,a
+        clr  a
+        movc a,@a+dptr
+       mov  %2,a
+       inc  dptr
+       clr  a
+       movc a,@a+dptr
+       mov  %3,a
+       inc  dptr
+       clr  a
+       movc a,@a+dptr
+       mov  %4,a
+       inc  dptr
+       clr  a  
+} by {
+        ; Peephole 186.a   optimized movc sequence
+        mov  dptr,#%1
+       mov  b,acc
+        movc a,@a+dptr
+       mov  %2,a
+       mov  acc,b
+       inc  dptr       
+       movc a,@a+dptr
+       mov  %3,a
+       mov  acc,b
+       inc  dptr
+       mov  %4,a
+       mov  acc,b
+       inc  dptr
+}
+
+replace {
+        add  a,#%1
+        mov  dpl,a
+        clr  a
+        addc a,#(%1 >> 8)
+        mov  dph,a
+        clr  a
+        movc a,@a+dptr
+       mov  %2,a
+       inc  dptr
+       clr  a
+       movc a,@a+dptr
+       mov  %3,a
+       inc  dptr
+       clr  a
+} by {
+        ; Peephole 186.b   optimized movc sequence
+        mov  dptr,#%1
+       mov  b,acc
+        movc a,@a+dptr
+       mov  %2,a
+       mov  acc,b
+       inc  dptr       
+       movc a,@a+dptr
+       mov  %3,a
+       mov  acc,b
+       inc  dptr       
+}
+
+replace {
+        add  a,#%1
+        mov  dpl,a
+        clr  a
+        addc a,#(%1 >> 8)
+        mov  dph,a
+        clr  a
+        movc a,@a+dptr
+       mov  %2,a
+       inc  dptr
+       clr  a
+} by {
+        ; Peephole 186.c   optimized movc sequence
+        mov  dptr,#%1
+       mov  b,acc
+        movc a,@a+dptr
+       mov  %2,a
+       mov  acc,b
+       inc  dptr
+}
+
+replace {
+        add  a,#%1
+        mov  dpl,a
+        clr  a
+        addc a,#(%1 >> 8)
+        mov  dph,a
+        clr  a
+        movc a,@a+dptr
+} by {
+        ; Peephole 186   optimized movc sequence
+        mov  dptr,#%1
+        movc a,@a+dptr
+}
+
+replace {
+        mov  r%1,%2
+        anl  ar%1,#%3
+        mov  a,r%1
+} by {
+        ; Peephole 187   used a instead of ar%1 for anl
+        mov  a,%2
+        anl  a,#%3
+        mov  r%1,a
+}
+
+replace {
+        mov  %1,a
+        mov  dptr,%2
+        movc a,@a+dptr
+        mov  %1,a
+} by {
+        ; Peephole 188   removed redundant mov
+        mov  dptr,%2
+        movc a,@a+dptr
+        mov  %1,a
+}
+
+replace {
+        anl  a,#0x0f
+        mov  %1,a
+        mov  a,#0x0f
+        anl  a,%1
+} by {
+        ; Peephole 189   removed redundant mov and anl
+        anl  a,#0x0f
+        mov  %1,a
+}
+
+// rules 190 & 191 need to be in order
+replace {
+        mov  a,%1
+        lcall __gptrput
+        mov  a,%1
+} by {
+        ; Peephole 190   removed redundant mov
+        mov  a,%1
+        lcall __gptrput
+}
+
+replace {
+        mov  %1,a
+        mov  dpl,%2
+        mov  dph,%3
+        mov  b,%4
+        mov  a,%1
+} by {
+        ; Peephole 191   removed redundant mov
+        mov  %1,a
+        mov  dpl,%2
+        mov  dph,%3
+        mov  b,%4
+}
+
+replace {
+        mov  r%1,a
+        mov  @r%2,ar%1
+} by {
+        ; Peephole 192   used a instead of ar%1 as source
+        mov  r%1,a
+        mov  @r%2,a
+}
+
+replace {
+        jnz  %3
+        mov  a,%4
+        jnz  %3
+        mov  a,%9
+        jnz  %3
+        mov  a,%12
+        cjne %13,%14,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 193.a optimized misc jump sequence
+        jnz  %8
+        mov  a,%4
+        jnz  %8
+        mov  a,%9
+        jnz  %8
+        mov  a,%12
+        cjne %13,%14,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        cjne %1,%2,%3
+        mov  a,%4
+        cjne %5,%6,%3
+        mov  a,%9
+        cjne %10,%11,%3
+        mov  a,%12
+        cjne %13,%14,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 193   optimized misc jump sequence
+        cjne %1,%2,%8
+        mov  a,%4
+        cjne %5,%6,%8
+        mov  a,%9
+        cjne %10,%11,%8
+        mov  a,%12
+        cjne %13,%14,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        cjne %1,%2,%3
+        cjne %5,%6,%3
+        cjne %10,%11,%3
+        cjne %13,%14,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 194   optimized misc jump sequence
+        cjne %1,%2,%8
+        cjne %5,%6,%8
+        cjne %10,%11,%8
+        cjne %13,%14,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        jnz  %3
+        mov  a,%4
+        jnz  %3
+        mov  a,%9
+        cjne %10,%11,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 195.a optimized misc jump sequence
+        jnz  %8
+        mov  a,%4
+        jnz  %8
+        mov  a,%9
+        cjne %10,%11,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        cjne %1,%2,%3
+        mov  a,%4
+        cjne %5,%6,%3
+        mov  a,%9
+        cjne %10,%11,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 195   optimized misc jump sequence
+        cjne %1,%2,%8
+        mov  a,%4
+        cjne %5,%6,%8
+        mov  a,%9
+        cjne %10,%11,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        cjne %1,%2,%3
+        cjne %5,%6,%3
+        cjne %10,%11,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 196   optimized misc jump sequence
+        cjne %1,%2,%8
+        cjne %5,%6,%8
+        cjne %10,%11,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        jnz  %3
+        mov  a,%4
+        cjne %5,%6,%3
+        sjmp %7
+%3:
+        sjmp %8 
+} by {
+        ; Peephole 197.a optimized misc jump sequence
+        jnz  %8
+        mov  a,%4
+        cjne %5,%6,%8
+        sjmp %7
+%3:     
+}
+
+replace {
+        cjne %1,%2,%3
+        mov  a,%4
+        cjne %5,%6,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 197   optimized misc jump sequence
+        cjne %1,%2,%8
+        mov  a,%4
+        cjne %5,%6,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        cjne %1,%2,%3
+        cjne %5,%6,%3
+        sjmp %7
+%3:
+        sjmp %8
+} by {
+        ; Peephole 198   optimized misc jump sequence
+        cjne %1,%2,%8
+        cjne %5,%6,%8
+        sjmp %7
+%3:
+}
+
+replace {
+        cjne %1,%2,%3
+        sjmp %4
+%3:
+        sjmp %5
+} by {
+        ; Peephole 199   optimized misc jump sequence
+        cjne %1,%2,%5
+        sjmp %4
+%3:
+}
+
+replace {
+        sjmp %1
+%1:
+} by {
+        ; Peephole 200   removed redundant sjmp
+%1:
+}
+
+replace {
+        sjmp %1
+%2:
+%1:
+} by {
+        ; Peephole 201   removed redundant sjmp
+%2:
+%1:
+}
+
+replace {
+        push  acc
+        mov   dptr,%1
+        pop   acc
+} by {
+        ; Peephole 202   removed redundant push pop
+        mov   dptr,%1
+}
+
+replace {
+        mov  r%1,_spx
+        lcall %2
+        mov  r%1,_spx
+} by {
+        ; Peephole 203   removed mov  r%1,_spx
+        lcall %2
+}
+
+replace {
+        mov  %1,a
+        add  a,acc
+        mov  %1,a
+} by {
+        ; Peephole 204   removed redundant mov
+        add  a,acc
+        mov  %1,a
+}
+
+replace {
+        djnz %1,%2
+        sjmp  %3
+%2:
+        sjmp  %4
+%3:
+} by {
+        ; Peephole 205   optimized misc jump sequence
+        djnz %1,%4
+%2:
+%3:
+}
+
+replace {
+        mov  %1,%1
+} by {
+        ; Peephole 206   removed redundant mov %1,%1
+}
+
+replace {
+        mov  a,_bp
+        add  a,#0x00
+        mov  %1,a
+} by {
+        ; Peephole 207   removed zero add (acc not set to %1, flags undefined)
+        mov  %1,_bp
+}
+
+replace {
+        push  acc
+        mov   r%1,_bp
+        pop   acc
+} by {
+        ; Peephole 208   removed redundant push pop
+        mov   r%1,_bp
+}
+
+replace {
+        mov  a,_bp
+        add  a,#0x00
+        inc  a
+        mov  %1,a
+} by {
+        ; Peephole 209   optimized increment (acc not set to %1, flags undefined)
+        mov  %1,_bp
+        inc  %1
+}
+
+replace {
+        mov  dptr,#((((%1 >> 8)) <<8) + %1)
+} by {
+        ; Peephole 210   simplified expression
+        mov  dptr,#%1
+}
+
+replace {
+        push %1
+        pop  %1
+} by {
+        ; Peephole 211   removed redundant push %1 pop %1  
+} 
+
+replace {
+       mov  a,_bp
+       add  a,#0x01
+       mov  r%1,a
+} by {
+       ; Peephole 212  reduced add sequence to inc
+       mov  r%1,_bp
+       inc  r%1
+}
+
+replace {
+       mov  %1,#(( %2 >> 8 ) ^ 0x80)
+} by { 
+       mov  %1,#(%2 >> 8)
+       xrl  %1,#0x80
+}
+
+replace {
+       mov  %1,#(( %2 + %3 >> 8 ) ^ 0x80)
+} by { 
+       mov  %1,#((%2 + %3) >> 8)
+       xrl  %1,#0x80
+}
+
+replace  {
+       mov  %1,a
+       mov  a,%2
+       add  a,%1
+} by {
+       ; Peephole 214 reduced some extra movs
+       mov  %1,a
+       add  a,%2       
+} if operandsNotSame
+
+replace {
+       mov  %1,a
+       add  a,%2
+       mov  %1,a
+} by {
+       ; Peephole 215 removed some movs
+       add  a,%2
+       mov  %1,a
+} if operandsNotSame
+
+replace {
+       mov   r%1,%2
+       clr   a
+       inc   r%1
+       mov   @r%1,a
+       dec   r%1
+       mov   @r%1,a
+} by {
+       ; Peephole 216 simplified clear (2bytes)
+       mov   r%1,%2
+       clr   a
+       mov   @r%1,a
+       inc   r%1
+       mov   @r%1,a
+}
+
+replace {
+       mov   r%1,%2
+       clr   a
+       inc   r%1
+       inc   r%1
+       mov   @r%1,a
+       dec   r%1
+       mov   @r%1,a
+       dec   r%1
+       mov   @r%1,a
+} by {
+       ; Peephole 217 simplified clear (3bytes)
+       mov   r%1,%2
+       clr   a
+       mov   @r%1,a
+       inc   r%1
+       mov   @r%1,a
+       inc   r%1
+       mov   @r%1,a
+}
+
+replace {
+       mov   r%1,%2
+       clr   a
+       inc   r%1
+       inc   r%1
+       inc   r%1
+       mov   @r%1,a
+       dec   r%1
+       mov   @r%1,a
+       dec   r%1
+       mov   @r%1,a
+       dec   r%1
+       mov   @r%1,a
+} by {
+       ; Peephole 218 simplified clear (4bytes)
+       mov   r%1,%2
+       clr   a
+       mov   @r%1,a
+       inc   r%1
+       mov   @r%1,a
+       inc   r%1
+       mov   @r%1,a
+       inc   r%1
+       mov   @r%1,a
+}
\ No newline at end of file
index 6c9983720dc69cb4f6d3bfca139a6855f8448d66..30c1e9e5c6a9a3a9958757b14c15c05107ca84ad 100644 (file)
@@ -29,6 +29,11 @@ typedef struct {
        const char **cmd;
     } linker;
 
+    struct {
+       /** Default peephole rules */
+       char *default_rules;
+    } peep;
+
     /** Basic type sizes */
     struct {
        int char_size;
index af2a30d80147d952207c05c605f74681b7d7abad..a248555c8f80fa13bd9f8d17ba25d2f9d7327e46 100644 (file)
@@ -10,9 +10,12 @@ CFLAGS += -I.. -I. -I../..
 
 all: $(LIB)
 
-$(LIB): $(OBJ)
+$(LIB): peeph.rul $(OBJ)
        rm -f $(LIB)
        ar r $(LIB) $(OBJ)
        ranlib $(LIB)
 
+peeph.rul: peeph.def
+       $(AWK) -f ../SDCCpeeph.awk peeph.def > peeph.rul
+
 include clean.mk
index 1a5169f6ebfdbe8daef3614b96b08eae4583bae9..4468ba784c1fd2cc14c4844932fce74d4ac2b1d6 100644 (file)
@@ -14,7 +14,7 @@
   With loopInduction on                                Breaks          198B
   With all working on                          20796   158     196C
   Slightly better genCmp(signed)               20597   159     195B
-
+  
   Michael Hope <michaelh@earthling.net>        2000
   Based on the mcs51 generator - Sandeep Dutta . sandeep.dutta@usa.net (1998)
                            and -  Jean-Louis VERN.jlvern@writeme.com (1999)
@@ -538,18 +538,19 @@ dealloc:
     }
 }
 
-char *aopGetWord(asmop *aop, int offset)
+char *aopGetWordLong(asmop *aop, int offset, bool with_hash)
 {
     char *s = buffer ;
     char *rs;
 
-    assert(aop->size == 2);
+    if (aop->size != 2)
+       return NULL;
     assert(offset == 0);
 
     /* depending on type */
     switch (aop->type) {
     case AOP_IMMD:
-       sprintf (s,"#%s",aop->aopu.aop_immd);
+       sprintf (s,"%s%s",with_hash ? "#" : "", aop->aopu.aop_immd);
        ALLOC_ATOMIC(rs,strlen(s)+1);
        strcpy(rs,s);   
        return rs;
@@ -561,7 +562,7 @@ char *aopGetWord(asmop *aop, int offset)
        if (!IS_FLOAT(val->type)) {
            unsigned long v = floatFromVal(val);
 
-           sprintf(buffer,"#0x%04lx", v);
+           sprintf(buffer,"%s0x%04lx", with_hash ? "#" : "", v);
            ALLOC_ATOMIC(rs,strlen(buffer)+1);
            return strcpy (rs,buffer);
        }
@@ -572,6 +573,11 @@ char *aopGetWord(asmop *aop, int offset)
     return NULL;
 }
 
+char *aopGetWord(asmop *aop, int offset)
+{
+    return aopGetWordLong(aop, offset, TRUE);
+}
+
 /*-----------------------------------------------------------------*/
 /* aopGet - for fetching value of the aop                          */
 /*-----------------------------------------------------------------*/
@@ -1376,16 +1382,30 @@ static bool genPlusIncr (iCode *ic)
     if (AOP_TYPE(IC_RIGHT(ic)) != AOP_LIT)
         return FALSE;
     
+    emitcode("", "; genPlusIncr");
+
+    icount = floatFromVal(AOP(IC_RIGHT(ic))->aopu.aop_lit);
+
+    /* If result is a pair */
+    if (isPair(AOP(IC_RESULT(ic)))) {
+       char *left = aopGetWordLong(AOP(IC_LEFT(ic)), 0, FALSE);
+       if (left) {
+           /* Both a lit on the right and a true symbol on the left */
+           emitcode("ld", "%s,#%s + %d", getPairName(AOP(IC_RESULT(ic))), left, icount);
+           return TRUE;
+       }
+    }
+
     /* if the literal value of the right hand side
        is greater than 4 then it is not worth it */
-    if ((icount =  floatFromVal (AOP(IC_RIGHT(ic))->aopu.aop_lit)) > 4)
+    if (icount > 4)
         return FALSE ;
 
     /* Inc a pair */
     if (sameRegs(AOP(IC_LEFT(ic)), AOP(IC_RESULT(ic))) &&
        isPair(AOP(IC_RESULT(ic)))) {
        while (icount--) {
-           emitcode("inc", "%s", getPairName(AOP(IC_RESULT(ic))));
+           emitcode("inc", "%s ; 1", getPairName(AOP(IC_RESULT(ic))));
        }
        return TRUE;
     }
@@ -1499,6 +1519,22 @@ static void genPlus (iCode *ic)
 
     size = getDataSize(IC_RESULT(ic));
 
+    /* Special case when left and right are constant */
+    if (isPair(AOP(IC_RESULT(ic)))) {
+       char *left, *right;
+       
+       left = aopGetWordLong(AOP(IC_LEFT(ic)), 0, FALSE);
+       right = aopGetWordLong(AOP(IC_RIGHT(ic)), 0, FALSE);
+       if (left && right) {
+           /* It's a pair */
+           /* PENDING: fix */
+           char buffer[100];
+           sprintf(buffer, "#(%s + %s)", left, right);
+           emitcode("ld", "%s,%s", getPairName(AOP(IC_RESULT(ic))), buffer);
+           goto release;
+       }
+    }
+
     while(size--) {
        if (AOP_TYPE(IC_LEFT(ic)) == AOP_ACC) {
            MOVA(aopGet(AOP(IC_LEFT(ic)),offset,FALSE));
@@ -1758,10 +1794,15 @@ static void genCmp (operand *left,operand *right,
         size = max(AOP_SIZE(left),AOP_SIZE(right));
 
         /* if unsigned char cmp with lit, just compare */
-        if((size == 1) && !sign &&
+        if((size == 1) && 
            (AOP_TYPE(right) == AOP_LIT && AOP_TYPE(left) != AOP_DIR )){
            emitcode("ld", "a,%s", aopGet(AOP(left), offset, FALSE));
-           emitcode("cp", "%s", aopGet(AOP(right), offset, FALSE));
+           if (sign) {
+               emitcode("xor", "a,#0x80");
+               emitcode("cp", "%s^0x80", aopGet(AOP(right), offset, FALSE));
+           }
+           else 
+               emitcode("cp", "%s", aopGet(AOP(right), offset, FALSE));
         } 
        else {
             if(AOP_TYPE(right) == AOP_LIT) {
@@ -1785,30 +1826,46 @@ static void genCmp (operand *left,operand *right,
                     goto release;
                 }
             }
-           CLRC;
+           if (sign) {
+               /* First setup h and l contaning the top most bytes XORed */
+               bool fDidXor = FALSE;
+               if (AOP_TYPE(left) == AOP_LIT){
+                   unsigned long lit = (unsigned long)
+                       floatFromVal(AOP(left)->aopu.aop_lit);
+                   emitcode("ld", "l,#0x%02x",
+                            0x80 ^ (unsigned int)((lit >> ((size-1)*8)) & 0x0FFL));
+               }
+               else {
+                   emitcode("ld", "a,%s", aopGet(AOP(left), size-1, FALSE));
+                   emitcode("xor", "a,#0x80");
+                   emitcode("ld", "l,a");
+                   fDidXor = TRUE;
+               }
+               if (AOP_TYPE(right) == AOP_LIT) {
+                   unsigned long lit = (unsigned long)
+                       floatFromVal(AOP(right)->aopu.aop_lit);
+                   emitcode("ld", "h,#0x%02x",
+                            0x80 ^ (unsigned int)((lit >> ((size-1)*8)) & 0x0FFL));
+               }
+               else {
+                   emitcode("ld", "a,%s", aopGet(AOP(right), size-1, FALSE));
+                   emitcode("xor", "a,#0x80");
+                   emitcode("ld", "h,a");
+                   fDidXor = TRUE;
+               }
+               if (!fDidXor)
+                   CLRC;
+           }
+           else {
+               CLRC;
+           }
             while (size--) {
                /* Do a long subtract */
-                MOVA(aopGet(AOP(left),offset,FALSE));
+               if (!sign || size) 
+                   MOVA(aopGet(AOP(left),offset,FALSE));
                 if (sign && size == 0) {
-                   /* Ugly but hey */
-                   emitcode("push", "af");
-                   emitcode("xor", "a,#0x80");
-                   emitcode("ld", "l,a");
-                    if (AOP_TYPE(right) == AOP_LIT){
-                        unsigned long lit = (unsigned long)
-                           floatFromVal(AOP(right)->aopu.aop_lit);
-                       emitcode("pop", "af");
-                       emitcode("ld", "a,l");
-                       emitcode("sbc","a,#0x%02x",
-                                0x80 ^ (unsigned int)((lit >> (offset*8)) & 0x0FFL));                       
-                    } else {
-                       emitcode("ld", "a,%s",aopGet(AOP(right),offset++,FALSE));
-                       emitcode("xor", "a,#0x80");
-                       emitcode("ld", "h,a");
-                       emitcode("pop", "af");
-                       emitcode("ld", "a,l");
-                        emitcode("sbc", "a,h");
-                    }
+                   emitcode("ld", "a,l");
+                   emitcode("sbc", "a,h");
                }
                else {
                    /* Subtract through, propagating the carry */
@@ -3147,6 +3204,7 @@ static void genGenPointerGet (operand *left,
     if (AOP_TYPE(left) == AOP_IMMD)
        emitcode("ld","hl,%s",aopGet(AOP(left),0,TRUE));
     else { /* we need to get it byte by byte */
+       
        emitcode("ld", "l,%s", aopGet(AOP(left), 0, FALSE));
        emitcode("ld", "h,%s", aopGet(AOP(left), 1, FALSE));
     }
@@ -3401,18 +3459,30 @@ static void genAssign (iCode *ic)
        (AOP_TYPE(result) != AOP_REG) &&
        (AOP_TYPE(right) == AOP_LIT) &&
        !IS_FLOAT(operandType(right)) &&
-       (lit < 256L)){
-       emitcode("xor","a,a");
+       (lit < 256L)) {
+       bool fXored = FALSE;
+       offset = 0;
        /* Work from the top down.
           Done this way so that we can use the cached copy of 0
           in A for a fast clear */
        while (size--) {
-           if((unsigned int)((lit >> (size*8)) & 0x0FFL)== 0)
-               aopPut(AOP(result),"a",size);
+           if((unsigned int)((lit >> (offset*8)) & 0x0FFL)== 0) {
+               if (!fXored && size>1) {
+                   emitcode("xor", "a,a");
+                   fXored = TRUE;
+               }
+               if (fXored) {
+                   aopPut(AOP(result),"a",offset);
+               }
+               else {
+                   aopPut(AOP(result), "#0", offset);
+               }
+           }
            else
                aopPut(AOP(result),
-                      aopGet(AOP(right),size,FALSE),
-                      size);
+                      aopGet(AOP(right),offset,FALSE),
+                      offset);
+           offset++;
        }
     } else {
        while (size--) {
@@ -3838,8 +3908,8 @@ void genZ80Code (iCode *lic)
 
     /* now we are ready to call the 
        peep hole optimizer */
-    /*    if (!options.nopeep)
-         peepHole (&lineHead); */
+    if (!options.nopeep)
+       peepHole (&lineHead);
 
     /* now do the actual printing */
     printLine (lineHead,codeOutFile);
index c508a6baf3811d0cf6ff17686a491fea6c308bed..27026e499c5646c4edf9243145b4069ff409730a 100644 (file)
@@ -1,6 +1,11 @@
 #include "common.h"
 #include "ralloc.h"
 
+static char _defaultRules[] =
+{
+#include "peeph.rul"
+};
+
 static char *_z80_keywords[] = { NULL };
 
 void z80_assignRegisters (eBBlock **ebbs, int count);
@@ -17,7 +22,7 @@ static void _z80_finaliseOptions(void)
 static void _z80_setDefaultOptions(void)
 {    
     options.genericPtr = 1;   /* default on */
-    options.nopeep    = 1;
+    options.nopeep    = 0;
     options.stackAuto = 1;
     options.mainreturn = 1;
     options.noregparms = 1;
@@ -67,6 +72,9 @@ PORT z80_port = {
     {
        _linkCmd
     },
+    {
+       _defaultRules
+    },
     {
        /* Sizes: char, short, int, long, ptr, fptr, gptr, bit, float, max */
        1, 1, 2, 4, 2, 2, 2, 1, 4, 4
diff --git a/src/z80/peeph.def b/src/z80/peeph.def
new file mode 100644 (file)
index 0000000..9fd073d
--- /dev/null
@@ -0,0 +1,5 @@
+replace restart {
+       ld %1,%1
+} by {
+       ; Removed redundent load
+}
index 62d3349441981b82e711341b571145a3fe74f170..b79fbfe1f333d66f47cd92025eedac45c46181b6 100644 (file)
@@ -1661,6 +1661,18 @@ static bool isBitwiseOptimizable (iCode *ic)
     return FALSE; 
 }
 
+/** Optimisations:
+    Certian assignments involving pointers can be temporarly stored
+    in HL.  Esp.
+genAssign
+    ld iy,#_Blah
+    ld bc,(iy)
+genAssign (ptr)
+    ld hl,bc
+    ld iy,#_Blah2
+    ld (iy),(hl)
+*/
+
 /** Pack registers for acc use.
     When the result of this operation is small and short lived it may
     be able to be stored in the accumelator.
@@ -1871,28 +1883,25 @@ void packRegisters (eBBlock *ebp)
            packRegsForOneuse (ic,IC_LEFT(ic),ebp);     
 #endif
 
-#if 0
        /* if pointer set & left has a size more than
           one and right is not in far space */
        if (POINTER_SET(ic)                    &&
-           !isOperandInFarSpace(IC_RIGHT(ic)) &&
+           /* MLH: no such thing.
+              !isOperandInFarSpace(IC_RIGHT(ic)) && */
            !OP_SYMBOL(IC_RESULT(ic))->remat   &&
            !IS_OP_RUONLY(IC_RIGHT(ic))        &&
            getSize(aggrToPtr(operandType(IC_RESULT(ic)),FALSE)) > 1 )
 
            packRegsForOneuse (ic,IC_RESULT(ic),ebp);
-#endif
 
-#if 0
        /* if pointer get */
        if (POINTER_GET(ic)                    &&
-           !isOperandInFarSpace(IC_RESULT(ic))&&
+           /* MLH: dont have far space
+              !isOperandInFarSpace(IC_RESULT(ic))&& */
            !OP_SYMBOL(IC_LEFT(ic))->remat     &&
            !IS_OP_RUONLY(IC_RESULT(ic))         &&
            getSize(aggrToPtr(operandType(IC_LEFT(ic)),FALSE)) > 1 )
-
            packRegsForOneuse (ic,IC_LEFT(ic),ebp);
-#endif
 
        /* pack registers for accumulator use, when the result of an
           arithmetic or bit wise operation has only one use, that use is
index 9b44ddd969d1a4dcbe69759e780b466da0d369ef..d970ffbacb1d25822d7d7b1697109fb2d3c1c316 100644 (file)
 */
 unsigned _clock(void);
 
+/** Print the number of t-states this program has been executing for.
+    Optional :)
+*/
+void _printTStates(void);
+
 /** Set to one to print more messages about expected values etc. 
  */
 #define DEBUG  0
@@ -124,7 +129,7 @@ int main(void)
     /* overflow may occur for this array element.                   */
 
     /* 32766 is the highest value for a 16 bitter */
-    Number_Of_Runs = 20000;
+    Number_Of_Runs = 32766;
 
     runTime = _clock();
 
@@ -256,6 +261,7 @@ int main(void)
     printf("Time: %u ticks\n", runTime);
     printf("Dhrystones/s = %u\n", Number_Of_Runs / (runTime/HZ));
     printf("MIPS = d/s/1757 = (sigh, need floats...)\n");
+    _printTStates();
 }
 
 void Proc_1 (REG Rec_Pointer Ptr_Val_Par)
@@ -454,7 +460,7 @@ void Proc_8 (int *Arr_1_Par_Ref, int *Arr_2_Par_Ref,
     DPRINTF(("-> Proc_8\n"));
     Int_Loc = Int_1_Par_Val + 5;
     Arr_1_Par_Ref [Int_Loc] = Int_2_Par_Val;
-    DPRINTF(("Int_Loc %d == 8\n", Int_Loc));
+    DPRINTF(("Int_Loc %d == 8 Int_2_Par_Val %d == 7\n", Int_Loc, Int_2_Par_Val));
 
     Arr_1_Par_Ref [Int_Loc+1] = Arr_1_Par_Ref [Int_Loc];
     Arr_1_Par_Ref [Int_Loc+30] = Int_Loc;
@@ -463,6 +469,7 @@ void Proc_8 (int *Arr_1_Par_Ref, int *Arr_2_Par_Ref,
     Arr_2_Par_Ref [Int_Loc * 50 + Int_Loc-1] += 1;
     Arr_2_Par_Ref [(Int_Loc+20 *50) + Int_Loc] = Arr_1_Par_Ref [Int_Loc];
     Int_Glob = 5;
+    DPRINTF(("Arr_1_Glob[8] %d == 7\n", Arr_1_Par_Ref[8]));
 }
 
 /*********************************************************************/