From d2bc1d9fb0818ff84a8c661ade8e5446ec96e32a Mon Sep 17 00:00:00 2001 From: MaartenBrock Date: Thu, 18 May 2006 11:19:21 +0000 Subject: [PATCH] * src/ds390/peeph.def (186.x, 227.x): updated and reenabled to fix bugs 1489016, 1434401 and 1490124 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4178 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 2 + src/ds390/peeph.def | 201 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 158 insertions(+), 45 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05c00c79..c1623b23 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ with offset * src/mcs51/peeph.def (186.x): updated and reenabled to fix bugs 1489016, 1434401 and 1490124 + * src/ds390/peeph.def (186.x, 227.x): updated and reenabled to fix bugs + 1489016, 1434401 and 1490124 2006-05-17 Borut Razem diff --git a/src/ds390/peeph.def b/src/ds390/peeph.def index 5f14ad00..06a0249d 100644 --- a/src/ds390/peeph.def +++ b/src/ds390/peeph.def @@ -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 -- 2.39.5