X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fds390%2Fpeeph.def;h=f5f9261eac15887e13134cbc6eb181be7f6d8d28;hb=bb226788dab3832b0ec0cda70874ce3fce4eebc6;hp=5f14ad006c92d1a00548abb3d8576548798f15e8;hpb=2399629d5ea65f646d6c2011181b2166476df162;p=fw%2Fsdcc diff --git a/src/ds390/peeph.def b/src/ds390/peeph.def index 5f14ad00..f5f9261e 100644 --- a/src/ds390/peeph.def +++ b/src/ds390/peeph.def @@ -1082,7 +1082,7 @@ replace { } by { ; Peephole 182a used 24 bit load of dptr mov dptr,#0x%3%2%1 -} if 24bitModeAndPortDS390 +} if 24bitMode(), portIsDS390 // saves 2 bytes, ?? cycles. replace { @@ -1092,7 +1092,7 @@ replace { } by { ; Peephole 182b used 24 bit load of dptr mov dptr,#((%3 << 16) + (%2 << 8) + %1) -} if 24bitModeAndPortDS390 +} if 24bitMode(), portIsDS390 // saving 3 byte, 2 cycles, return(float_constant) profits here replace { @@ -1140,7 +1140,8 @@ replace { mov %1,a } -replace { +// char indexed access to: long code table[] = {4,3,2,1}; +replace restart { add a,#%1 mov dpl,a clr a @@ -1159,25 +1160,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 @@ -1192,21 +1196,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 @@ -1217,31 +1224,31 @@ 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 } -// disabled due to bug #1434401 -//// char indexed access to: char code table[] = {4,3,2,1}; -//replace { -// add a,#%1 -// mov dpl,a -// clr a -// addc a,#(%1 >> 8) -// mov dph,a -// clr a -// movc a,@a+dptr -//} by { -// ; Peephole 186.d optimized movc sequence -// mov dptr,#%1 -// movc a,@a+dptr -//} +// char indexed access to: char code table[] = {4,3,2,1}; +replace { + add a,#%1 + mov dpl,a + clr a + addc a,#(%1 >> 8) + mov dph,a + clr a + movc a,@a+dptr +} by { + ; Peephole 186.d optimized movc sequence + mov dptr,#%1 + movc a,@a+dptr +} replace { mov r%1,%2 @@ -1993,23 +2000,127 @@ replace { } -// disabled due to bug #1434401 -//replace { -// add a,#%2 -// mov dpl,a -// clr a -// addc a,#(%2 >> 8) -// mov dph,a -// clr a -// addc a,#(%2 >> 16) -// mov dpx,a -// clr a -// movc a,@a+dptr -//} by { -// ; Peephole 227.a movc optimize -// mov dptr,#%2 -// movc a,@a+dptr -//} +// char indexed access to: long code table[] = {4,3,2,1}; +replace restart { + add a,#%1 + mov dpl,a + clr a + addc a,#(%1 >> 8) + mov dph,a + clr a + addc a,#(%1 >> 16) + mov dpx,a + clr a + movc a,@a+dptr + inc dptr + mov %2,a + clr a + movc a,@a+dptr + inc dptr + mov %3,a + clr a + movc a,@a+dptr + inc dptr + mov %4,a + clr a + movc a,@a+dptr +} by { + ; Peephole 227.a movc optimize + mov b,a + mov dptr,#%1 + movc a,@a+dptr + inc dptr + mov %2,a + mov a,b + movc a,@a+dptr + inc dptr + mov %3,a + mov a,b + movc a,@a+dptr + inc dptr + mov %4,a + mov a,b + movc a,@a+dptr +} + +// char indexed access to: void* code table[] = {4,3,2,1}; +replace restart { + add a,#%1 + mov dpl,a + clr a + addc a,#(%1 >> 8) + mov dph,a + clr a + addc a,#(%1 >> 16) + mov dpx,a + clr a + movc a,@a+dptr + inc dptr + mov %2,a + clr a + movc a,@a+dptr + inc dptr + mov %3,a + clr a + movc a,@a+dptr +} by { + ; Peephole 227.b movc optimize + mov b,a + mov dptr,#%1 + movc a,@a+dptr + inc dptr + mov %2,a + mov a,b + movc a,@a+dptr + inc dptr + mov %3,a + mov a,b + movc a,@a+dptr +} + +// char indexed access to: int code table[] = {4,3,2,1}; +replace restart { + add a,#%1 + mov dpl,a + clr a + addc a,#(%1 >> 8) + mov dph,a + clr a + addc a,#(%1 >> 16) + mov dpx,a + clr a + movc a,@a+dptr + inc dptr + mov %2,a + clr a + movc a,@a+dptr +} by { + ; Peephole 227.c movc optimize + mov %2,a + mov dptr,#%1 + movc a,@a+dptr + inc dptr + xch a,%2 + movc a,@a+dptr +} + +// char indexed access to: char code table[] = {4,3,2,1}; +replace { + add a,#%1 + mov dpl,a + clr a + addc a,#(%1 >> 8) + mov dph,a + clr a + addc a,#(%1 >> 16) + mov dpx,a + clr a + movc a,@a+dptr +} by { + ; Peephole 227.d movc optimize + mov dptr,#%1 + movc a,@a+dptr +} replace { mov r%1,%2