X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmcs51%2Fpeeph.def;h=e26372e8135f77f2f585f0af33c465453a4cbe4f;hb=a6d2c6dfdfa34794cd062d6b4cbd23a7869d5b35;hp=b089c32a901a31fa4cf78a21f8f94b44c3fb2170;hpb=e94d9ac435674d646bdc6aed4ceb65dd8ebd9ef7;p=fw%2Fsdcc diff --git a/src/mcs51/peeph.def b/src/mcs51/peeph.def index b089c32a..e26372e8 100644 --- a/src/mcs51/peeph.def +++ b/src/mcs51/peeph.def @@ -70,7 +70,6 @@ replace { mov dptr,#%2 movx @dptr,a } - replace { mov a,acc } by { @@ -539,20 +538,6 @@ replace { orl a,r%2 } -replace { - mov %1,a - mov dpl,%2 - mov dph,%3 - mov dpx,%4 - mov a,%1 -} by { - ; Peephole 136a removed redundant moves - mov %1,a - mov dpl,%2 - mov dph,%3 - mov dpx,%4 -} if 24bitMode - replace { mov %1,a mov dpl,%2 @@ -1004,13 +989,14 @@ replace { mov %1,@r%2 } -replace { - mov %1,%2 - mov %2,%1 -} by { - ; Peephole 177 removed redundant mov - mov %1,%2 -} +// this one will screw assignes to volatile/sfr's +//replace { +// mov %1,%2 +// mov %2,%1 +//} by { +// ; Peephole 177 removed redundant mov +// mov %1,%2 +//} replace { mov a,%1 @@ -1041,15 +1027,6 @@ replace { clr a } -replace { - mov dpl,#0x00 - mov dph,#0x00 - mov dpx,#0x00 -} by { - ; Peephole 181a used 24 bit load of dptr - mov dptr,#0x0000 -} if 24bitMode - // saving 3 byte, 2 cycles, return(NULL) profits here replace { mov dpl,#0x00 @@ -1059,15 +1036,15 @@ replace { mov dptr,#0x0000 } -// saves 2 bytes, ?? cycles. +// saving 3 bytes, 2 cycles +// provided by Bernhard Held replace { - mov dpl,#%1 - mov dph,#(%1 >> 8) - mov dpx,#(%1 >> 16) + mov dpl,#%1 + mov dph,#(%1 >> 8) } by { - ; Peephole 182a used 24 bit load of dptr - mov dptr,#%1 -} if 24bitMode + ; Peephole 182a use 16 bit load of DPTR + mov dptr,#%1 +} // saving 3 byte, 2 cycles, return(float_constant) profits here replace { @@ -1608,13 +1585,6 @@ replace { inc %1 } -replace { - mov dptr,#((((%1 >> 16)) <<16) + (((%1 >> 8)) <<8) + %1) -} by { - ; Peephole 210a simplified expression - mov dptr,#%1 -} if 24bitMode - replace { mov dptr,#((((%1 >> 8)) <<8) + %1) } by { @@ -1804,11 +1774,158 @@ replace { } replace { - mov dps, #0x00 - mov dp%1,a - mov dps, #0x01 + mov %1,dpl + mov %2,dph + mov dpl,%1 + mov dph,%2 } by { - ; Peephole 222 removed DPS abuse. - mov dp%1,a - mov dps, #0x01 + ; 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 +} + +