mov a,%2
add a,#0xff - %1
mov %3,c
-}
+} if operandsLiteral(%1)
replace {
clr c
mov a,%2
add a,#0xff - %1
jnc %5
-}
+} if operandsLiteral(%1)
replace {
clr c
mov a,%2
add a,#0xff - %1
jc %5
-}
+} if operandsLiteral(%1)
replace {
clr c
mov a,#0x100 - %2
add a,%1
mov %3,c
-} if operandsNotRelated('0x00' %2)
+} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
replace {
clr c
mov a,#0x100 - %2
add a,%1
jc %5
-} if operandsNotRelated('0x00' %2)
+} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
replace {
clr c
mov a,#0x100 - %2
add a,%1
jnc %5
-} if operandsNotRelated('0x00' %2)
+} if operandsNotRelated('0x00' %2), operandsLiteral(%2)
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
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
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
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
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
+}
// char indexed access to: int code table[] = {4,3,2,1};
replace {
} if notVolatile %1
-
-
// rules 247.x apply to f.e. bitfields.c
replace {
mov r%5,#%1
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: