From 6b4a3a348a30132a5f3121aad22573499499a396 Mon Sep 17 00:00:00 2001 From: pjs Date: Fri, 31 Aug 2001 06:04:38 +0000 Subject: [PATCH] Added peepholes 223 to 231 to mcs51 port. These improve code when using large model. git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@1200 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 4 ++ src/mcs51/peeph.def | 157 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 161 insertions(+) diff --git a/ChangeLog b/ChangeLog index d898cf48..33e9a38b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2001-08-30 Paul Stoffregen + + * added peepholes 223 to 231 to mcs51 port. These improve code when using large model. + 2001-08-30 Michael Hope * device/lib/gbz80/crt0.s (init): Fixed up support for the gbz80 such that it will at least run (and fail badly) the regression tests. diff --git a/src/mcs51/peeph.def b/src/mcs51/peeph.def index 64bf597e..e26372e8 100644 --- a/src/mcs51/peeph.def +++ b/src/mcs51/peeph.def @@ -1772,3 +1772,160 @@ replace { } by { ; removed dec/inc pair } + +replace { + mov %1,dpl + mov %2,dph + mov dpl,%1 + mov dph,%2 +} by { + ; Peephole 223 removed redundant dph/dpl moves + mov %1,dpl + mov %2,dph +} + +replace { + mov %1,dpl + mov (%1 + 1),dph + mov dpl,%1 + mov dph,(%1 + 1) +} by { + ; Peephole 224 removed redundant dph/dpl moves + mov %1,dpl + mov (%1 + 1),dph +} + +replace { + mov a,%1 + movx @dptr,a + mov dpl,%2 + mov dph,%3 + mov b,%4 + mov a,%1 +} by { + ; Peephole 225 removed redundant move to acc + mov a,%1 + movx @dptr,a + mov dpl,%2 + mov dph,%3 + mov b,%4 +} + +replace { + clr a + movx @dptr,a + inc dptr + movx @dptr,a + inc dptr + clr a +} by { + ; Peephole 226 removed unnecessary clr + clr a + movx @dptr,a + inc dptr + movx @dptr,a + inc dptr +} + +replace { + mov dptr,#%1 + clr a + inc dptr + inc dptr + inc dptr + movx @dptr,a + lcall __decdptr + movx @dptr,a + lcall __decdptr + movx @dptr,a + lcall __decdptr + movx @dptr,a +} by { + ; Peephole 227 replaced inefficient 32 bit clear + mov dptr,#%1 + clr a + movx @dptr,a + inc dptr + movx @dptr,a + inc dptr + movx @dptr,a + inc dptr + movx @dptr,a + mov dptr,#%1 +} + +replace { + mov dptr,#%1 + clr a + inc dptr + inc dptr + inc dptr + movx @dptr,a + lcall __decdptr + movx @dptr,a + lcall __decdptr + movx @dptr,a + lcall __decdptr + mov a,#%2 + movx @dptr,a +} by { + ; Peephole 228 replaced inefficient 32 constant + mov dptr,#%1 + mov a, #%2 + movx @dptr,a + inc dptr + clr a + movx @dptr,a + inc dptr + movx @dptr,a + inc dptr + movx @dptr,a + mov dptr,#%1 +} + +replace { + mov dptr,#%1 + clr a + inc dptr + movx @dptr,a + lcall __decdptr + movx @dptr,a +} by { + ; Peephole 229 replaced inefficient 16 bit clear + mov dptr,#%1 + clr a + movx @dptr,a + inc dptr + movx @dptr,a + mov dptr,#%1 +} + +replace { + mov dptr,#%1 + clr a + inc dptr + movx @dptr,a + lcall __decdptr + mov a,#%2 + movx @dptr,a +} by { + ; Peephole 230 replaced inefficient 16 constant + mov dptr,#%1 + mov a,#%2 + movx @dptr,a + inc dptr + clr a + movx @dptr,a + mov dptr,#%1 +} + +// this last peephole often removes the last mov from 227-230 +replace { + mov dptr,#%1 + mov dptr,#%2 +} by { + ; Peephole 231 removed redundant mov to dptr + mov dptr,#%2 +} + + -- 2.47.2