mov dptr,#0x0000
}
+// saving 3 bytes, 2 cycles
+// provided by Bernhard Held <bernhard.held@de.westinghouse.com>
+replace {
+ mov dpl,#%1
+ mov dph,#(%1 >> 8)
+} by {
+ ; Peephole 182a use 16 bit load of DPTR
+ mov dptr,#%1
+}
+
// saving 3 byte, 2 cycles, return(float_constant) profits here
replace {
mov dpl,#%1
}
replace {
- mov dps, #0x00
- mov dp%1,a
- mov dps, #0x01
+ mov %1,dpl
+ mov %2,dph
+ mov dpl,%1
+ mov dph,%2
} by {
- ; Peephole 222 removed DPS abuse.
- mov dp%1,a
- mov dps, #0x01
+ ; Peephole 223 removed redundant dph/dpl moves
+ mov %1,dpl
+ mov %2,dph
+}
+
+replace {
+ mov %1,dpl
+ mov (%1 + 1),dph
+ mov dpl,%1
+ mov dph,(%1 + 1)
+} by {
+ ; Peephole 224 removed redundant dph/dpl moves
+ mov %1,dpl
+ mov (%1 + 1),dph
+}
+
+replace {
+ mov a,%1
+ movx @dptr,a
+ mov dpl,%2
+ mov dph,%3
+ mov b,%4
+ mov a,%1
+} by {
+ ; Peephole 225 removed redundant move to acc
+ mov a,%1
+ movx @dptr,a
+ mov dpl,%2
+ mov dph,%3
+ mov b,%4
}
+
replace {
- mov (%1 + %2 + 3),((%2 + %1) + %3)
+ clr a
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ inc dptr
+ clr a
} by {
- ; Peephole 223 remove redundant move
-}
\ No newline at end of file
+ ; Peephole 226 removed unnecessary clr
+ clr a
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ inc dptr
+}
+
+replace {
+ mov dptr,#%1
+ clr a
+ inc dptr
+ inc dptr
+ inc dptr
+ movx @dptr,a
+ lcall __decdptr
+ movx @dptr,a
+ lcall __decdptr
+ movx @dptr,a
+ lcall __decdptr
+ movx @dptr,a
+} by {
+ ; Peephole 227 replaced inefficient 32 bit clear
+ mov dptr,#%1
+ clr a
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ mov dptr,#%1
+}
+
+replace {
+ mov dptr,#%1
+ clr a
+ inc dptr
+ inc dptr
+ inc dptr
+ movx @dptr,a
+ lcall __decdptr
+ movx @dptr,a
+ lcall __decdptr
+ movx @dptr,a
+ lcall __decdptr
+ mov a,#%2
+ movx @dptr,a
+} by {
+ ; Peephole 228 replaced inefficient 32 constant
+ mov dptr,#%1
+ mov a, #%2
+ movx @dptr,a
+ inc dptr
+ clr a
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ mov dptr,#%1
+}
+
+replace {
+ mov dptr,#%1
+ clr a
+ inc dptr
+ movx @dptr,a
+ lcall __decdptr
+ movx @dptr,a
+} by {
+ ; Peephole 229 replaced inefficient 16 bit clear
+ mov dptr,#%1
+ clr a
+ movx @dptr,a
+ inc dptr
+ movx @dptr,a
+ mov dptr,#%1
+}
+
+replace {
+ mov dptr,#%1
+ clr a
+ inc dptr
+ movx @dptr,a
+ lcall __decdptr
+ mov a,#%2
+ movx @dptr,a
+} by {
+ ; Peephole 230 replaced inefficient 16 constant
+ mov dptr,#%1
+ mov a,#%2
+ movx @dptr,a
+ inc dptr
+ clr a
+ movx @dptr,a
+ mov dptr,#%1
+}
+
+// this last peephole often removes the last mov from 227-230
+replace {
+ mov dptr,#%1
+ mov dptr,#%2
+} by {
+ ; Peephole 231 removed redundant mov to dptr
+ mov dptr,#%2
+}
+
+