]> git.gag.com Git - fw/sdcc/commitdiff
src/mcs51/peeph.def: peepholes 248.i-m for xdata bitfields. See thread on [Sdcc-user...
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 22 Aug 2004 18:38:39 +0000 (18:38 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sun, 22 Aug 2004 18:38:39 +0000 (18:38 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3448 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/mcs51/peeph.def

index c472b2650ac9e501fa6e7b33c19bed3e8ee9177f..e614c53a4cc3b05d981dfba974a6ddca18639268 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2004-08-22 Frieder Ferlemann <Frieder.Ferlemann AT web.de>
+
+       * src/mcs51/peeph.def: peepholes 248.i-m for xdata bitfields
+
 2004-08-21 Erik Petrich <epetrich AT ivorytower.norman.ok.us>
 
        * src/mcs51/ralloc.c (packRegsForOneuse): fixed bug #1012650 and some
index e1a7bb8dc20f619474f64a4728b714ac81522d58..8eb9dd35da4f6025da9ba44f66ce27d237258b76 100644 (file)
@@ -798,7 +798,7 @@ replace {
        xrl     %1,#0x80
 } by {
        ;       Peephole 159    avoided xrl during execution
-       mov  %1,#(%2 ^ 0x80)
+       mov     %1,#(%2 ^ 0x80)
 }
 
 replace {
@@ -3120,6 +3120,131 @@ replace {
        movx    @dptr,a
 }
 
+// Peeepholes 248.i to 248.m are like 248.d to 248.h except they apply to bitfields:
+// xdata struct { unsigned b0:1; unsigned b1:1; unsigned b2:1; } xport;
+// xport.b0=1; xport.b0=0; xport.b0=1;
+replace {
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%3
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%4
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%5
+       movx    @dptr,a
+} by {
+       ;       Peephole 248.i  optimized or/and/or to xdata bitfield
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%3
+       movx    @dptr,a
+       movx    a,@dptr
+       anl     a,%4
+       movx    @dptr,a
+       movx    a,@dptr
+       orl     a,%5
+       movx    @dptr,a
+}
+
+replace {
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%3
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%4
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%5
+       movx    @dptr,a
+} by {
+       ;       Peephole 248.j  optimized and/or/and to xdata bitfield
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%3
+       movx    @dptr,a
+       movx    a,@dptr
+       orl     a,%4
+       movx    @dptr,a
+       movx    a,@dptr
+       anl     a,%5
+       movx    @dptr,a
+}
+
+replace {
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%3
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%4
+       movx    @dptr,a
+} by {
+       ;       Peephole 248.k  optimized or/and to xdata bitfield
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%3
+       movx    @dptr,a
+       movx    a,@dptr
+       anl     a,%4
+       movx    @dptr,a
+}
+
+replace {
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%3
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       orl     a,%4
+       movx    @dptr,a
+} by {
+       ;       Peephole 248.l  optimized and/or to xdata bitfield
+       mov     dptr,%1
+       movx    a,@dptr
+       anl     a,%3
+       movx    @dptr,a
+       movx    a,@dptr
+       orl     a,%4
+       movx    @dptr,a
+}
+
+replace {
+       mov     dptr,%1
+       movx    a,@dptr
+       xrl     a,%3
+       movx    @dptr,a
+
+       mov     dptr,%1
+       movx    a,@dptr
+       xrl     a,%4
+       movx    @dptr,a
+} by {
+       ;       Peephole 248.m  optimized xor/xor to xdata bitfield
+       mov     dptr,%1
+       movx    a,@dptr
+       xrl     a,%3
+       movx    @dptr,a
+       movx    a,@dptr
+       xrl     a,%4
+       movx    @dptr,a
+}
+
+
 replace {
        jnz     %1
 %1: