* src/ds390/peeph.def (186.x, 227.x): updated and reenabled to fix bugs
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 18 May 2006 11:19:21 +0000 (11:19 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 18 May 2006 11:19:21 +0000 (11:19 +0000)
  14890161434401 and 1490124

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4178 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/ds390/peeph.def

index 05c00c798c09e526d97a2a7923301e0ba3534cc4..c1623b2363ca795d6a5f2e1ffb4d2d95562841fc 100644 (file)
--- 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 <borut.razem AT siol.net>
 
index 5f14ad006c92d1a00548abb3d8576548798f15e8..06a0249d09c396b8806e2f95bf326295f07f0034 100644 (file)
@@ -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