Hubert Sack <sack AT digiplan.de>
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 20 Feb 2005 22:22:39 +0000 (22:22 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 20 Feb 2005 22:22:39 +0000 (22:22 +0000)
* src/mcs51/peeph.def: added peepholes 3.h-k and 132.a-f from patch #1121755

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

ChangeLog
src/mcs51/peeph.def

index 33584dd681641d5a395df50e54718610a9eb94ee..6062189a1b72508e05b5d856ab2f9a7a99c14305 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-20 Hubert Sack <sack AT digiplan.de>
+       committed by Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * src/mcs51/peeph.def: added peepholes 3.h-k and 132.a-f from
+       patch #1121755
+
 2004-02-20 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
 
        * src/SDCCpeeph.def: new keyword "labelRefCountChange" which allows peepholes
index 4b332b17bd7931988fba4604bc7907a25fe8c959..0cd59b8352b24f618ca53b9571d218e4b0c4d5be 100644 (file)
@@ -117,6 +117,70 @@ replace {
        ;       Peephole 3.g    removed redundant clr
 }
 
+replace {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       mov     %3,#0x00
+} by {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       ;       Peephole 3.h    changed mov %3,#0x00 to %3,a
+       mov     %3,a
+}
+
+replace {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       mov     %3,a
+       mov     %4,#0x00
+} by {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       mov     %3,a
+       ;       Peephole 3.i    changed mov %4,#0x00 to %4,a
+       mov     %4,a
+}
+
+replace {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       mov     %3,a
+       mov     %4,a
+       mov     %5,#0x00
+} by {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       mov     %3,a
+       mov     %4,a
+       ;       Peephole 3.j    changed mov %5,#0x00 to %5,a
+       mov     %5,a
+}
+
+replace {
+       clr     a
+       mov     %1,a
+       mov     %2,a
+       mov     %3,a
+       mov     %4,a
+       mov     %5,a
+       mov     %6,#0x00
+} by {
+       clr a
+       mov %1,a
+       mov %2,a
+       mov %3,a
+       mov %4,a
+       mov %5,a
+       ;       Peephole 3.k    changed mov %6,#0x00 to %6,a
+       mov %6,a
+}
+
 replace {
        mov     %1,a
        mov     dptr,#%2
@@ -566,6 +630,80 @@ replace {
        mov     %2,%1
 }
 
+// ideally the optimizations of rules 132.x should be done in genCmpXX
+replace {
+       clr     c
+       mov     a,#%1
+       subb    a,%2
+       mov     %3,c
+} by {
+       ;       Peephole 132.a  optimized genCmpGt by inverse logic (acc differs)
+       mov     a,%2
+       add     a,#0xff - %1
+       mov     %3,c
+}
+
+replace {
+       clr     c
+       mov     a,#%1
+       subb    a,%2
+       jnc     %5
+} by {
+       ;       Peephole 132.b  optimized genCmpGt by inverse logic (acc differs)
+       mov     a,%2
+       add     a,#0xff - %1
+       jnc     %5
+}
+
+replace {
+       clr     c
+       mov     a,#%1
+       subb    a,%2
+       jc      %5
+} by {
+       ;       Peephole 132.c  optimized genCmpGt by inverse logic (acc differs)
+       mov     a,%2
+       add     a,#0xff - %1
+       jc      %5
+}
+
+replace {
+       clr     c
+       mov     a,%1
+       subb    a,#%2
+       mov     %3,c
+} by {
+       ;       Peephole 132.d  optimized genCmpGt by inverse logic
+       mov     a,#0x100 - %2
+       add     a,%1
+       mov     %3,c
+} if operandsNotRelated('0x00' %2)
+
+replace {
+       clr     c
+       mov     a,%1
+       subb    a,#%2
+       jnc     %5
+} by {
+       ;       Peephole 132.e  optimized genCmpLt by inverse logic (carry differs)
+       mov     a,#0x100 - %2
+       add     a,%1
+       jc      %5
+} if operandsNotRelated('0x00' %2)
+
+replace {
+       clr     c
+       mov     a,%1
+       subb    a,#%2
+       jc      %5
+} by {
+       ;       Peephole 132.f  optimized genCmpLt by inverse logic (carry differs)
+       mov     a,#0x100 - %2
+       add     a,%1
+       jnc     %5
+} if operandsNotRelated('0x00' %2)
+
+
 replace {
        mov     r%1,%2
        mov     ar%3,@r%1