X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fmcs51%2Fpeeph.def;h=96db036d26177b4da9572f2964faf8db7d7dee3e;hb=d5427ad1f11f9e69b9f26a2184dd4ae5d285ec4b;hp=6327c8b5a7f2e91977f993af6bc308d563e2e39d;hpb=e158311ba848559f1b110ea51877f090fc87bb46;p=fw%2Fsdcc diff --git a/src/mcs51/peeph.def b/src/mcs51/peeph.def index 6327c8b5..96db036d 100644 --- a/src/mcs51/peeph.def +++ b/src/mcs51/peeph.def @@ -684,7 +684,7 @@ replace { mov a,%2 add a,#0xff - %1 mov %3,c -} +} if operandsLiteral(%1) replace { clr c @@ -696,7 +696,7 @@ replace { mov a,%2 add a,#0xff - %1 jnc %5 -} +} if operandsLiteral(%1) replace { clr c @@ -708,7 +708,7 @@ replace { mov a,%2 add a,#0xff - %1 jc %5 -} +} if operandsLiteral(%1) replace { clr c @@ -720,7 +720,7 @@ replace { mov a,#0x100 - %2 add a,%1 mov %3,c -} if operandsNotRelated('0x00' %2) +} if operandsNotRelated('0x00' %2), operandsLiteral(%2) replace { clr c @@ -732,7 +732,7 @@ replace { mov a,#0x100 - %2 add a,%1 jc %5 -} if operandsNotRelated('0x00' %2) +} if operandsNotRelated('0x00' %2), operandsLiteral(%2) replace { clr c @@ -744,7 +744,7 @@ replace { mov a,#0x100 - %2 add a,%1 jnc %5 -} if operandsNotRelated('0x00' %2) +} if operandsNotRelated('0x00' %2), operandsLiteral(%2) replace { @@ -856,6 +856,19 @@ replace { mov r%1,a } +// applies to genlshOne +replace { + mov ar%1,@%2 + mov a,r%1 + add a,acc + mov r%1,a +} by { + ; Peephole 140 removed redundant mov + mov a,@%2 + add a,@%2 + mov r%1,a +} + replace { mov r%1,a mov r%2,ar%1 @@ -1449,7 +1462,8 @@ replace { mov %1,a } if notVolatile %1 -replace { +// char indexed access to: long code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1468,25 +1482,28 @@ replace { mov %4,a inc dptr clr a + movc a,@a+dptr } by { ; Peephole 186.a optimized movc sequence + mov b,a mov dptr,#%1 - mov b,acc movc a,@a+dptr mov %2,a - mov acc,b inc dptr + mov a,b movc a,@a+dptr mov %3,a - mov acc,b inc dptr + mov a,b movc a,@a+dptr mov %4,a - mov acc,b inc dptr + mov a,b + movc a,@a+dptr } -replace { +// char indexed access to: void* code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1501,21 +1518,24 @@ replace { mov %3,a inc dptr clr a + movc a,@a+dptr } by { ; Peephole 186.b optimized movc sequence + mov b,a mov dptr,#%1 - mov b,acc movc a,@a+dptr mov %2,a - mov acc,b inc dptr + mov a,b movc a,@a+dptr mov %3,a - mov acc,b inc dptr + mov a,b + movc a,@a+dptr } -replace { +// char indexed access to: int code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1526,14 +1546,15 @@ replace { mov %2,a inc dptr clr a + movc a,@a+dptr } by { ; Peephole 186.c optimized movc sequence + mov %2,a mov dptr,#%1 - mov b,acc movc a,@a+dptr - mov %2,a - mov acc,b + xch a,%2 inc dptr + movc a,@a+dptr } // char indexed access to: char code table[] = {4,3,2,1}; @@ -3101,8 +3122,6 @@ replace { } if notVolatile %1 - - // rules 247.x apply to f.e. bitfields.c replace { mov r%5,#%1 @@ -4514,6 +4533,19 @@ replace { mov %1,#(%2 + 1) } + +replace { + clr a + cjne %1,%2,%3 + inc a +%3: + jz %4 +} by { + ; Peephole 264 jump optimization (acc not set) + cjne %1,%2,%4 +%3: +} if labelRefCount(%3 1), labelRefCountChange(%3 -1) + // should be one of the last peepholes replace{ %1: