* src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc
[fw/sdcc] / src / mcs51 / peeph.def
index 6327c8b5a7f2e91977f993af6bc308d563e2e39d..b2c403356bcab90373a764fe97174880ec20de70 100644 (file)
@@ -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 {
@@ -1449,7 +1449,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 +1469,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 +1505,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 +1533,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};