From: frief Date: Sun, 22 Aug 2004 18:38:39 +0000 (+0000) Subject: src/mcs51/peeph.def: peepholes 248.i-m for xdata bitfields. See thread on [Sdcc-user... X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=bc481083bba228448457bb164b6d4fca96822b5e;p=fw%2Fsdcc src/mcs51/peeph.def: peepholes 248.i-m for xdata bitfields. See thread on [Sdcc-user] Using bit fields git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3448 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index c472b265..e614c53a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-08-22 Frieder Ferlemann + + * src/mcs51/peeph.def: peepholes 248.i-m for xdata bitfields + 2004-08-21 Erik Petrich * src/mcs51/ralloc.c (packRegsForOneuse): fixed bug #1012650 and some diff --git a/src/mcs51/peeph.def b/src/mcs51/peeph.def index e1a7bb8d..8eb9dd35 100644 --- a/src/mcs51/peeph.def +++ b/src/mcs51/peeph.def @@ -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: