mov a,%3
}
-
+replace restart {
+ mov a,#0
+} by {
+ ; Peephole 3.d changed mov to clr
+ clr a
+}
replace {
mov %1,a
mov dptr,#%1
}
+// saves 2 bytes, ?? cycles.
+replace {
+ mov dpl,#0x%1
+ mov dph,#0x%2
+ mov dpx,#0x%3
+} by {
+ ; Peephole 182a used 24 bit load of dptr
+ mov dptr,#0x%3%2%1
+} if 24bitModeAndPortDS390
+
// saves 2 bytes, ?? cycles.
replace {
mov dpl,#%1
mov dph,#%2
mov dpx,#%3
} by {
- ; Peephole 182a used 24 bit load of dptr
+ ; Peephole 182b used 24 bit load of dptr
mov dptr,#((%3 << 16) + (%2 << 8) + %1)
} if 24bitModeAndPortDS390
+// saving 3 byte, 2 cycles, return(float_constant) profits here
+replace {
+ mov dpl,#0x%1
+ mov dph,#0x%2
+} by {
+ ; Peephole 182c used 16 bit load of dptr
+ mov dptr,#0x%2%1
+}
+
// saving 3 byte, 2 cycles, return(float_constant) profits here
replace {
mov dpl,#%1
}
replace {
- mov dps, #0x00
- mov dps, #0x01
+ mov dps, #0
+ mov dps, #1
} by {
; Peephole 220a removed bogus DPS set
- mov dps, #0x01
+ mov dps, #1
}
replace {
- mov dps, #0x01
- mov dps, #0x00
+ mov dps, #1
+ mov dps, #0
} by {
; Peephole 220b removed bogus DPS set
- mov dps, #0x00
+ mov dps, #0
+}
+
+replace {
+ mov dps, #0
+ mov dps, #0x01
+} by {
+ ; Peephole 220c removed bogus DPS set
+}
+
+replace {
+ mov dps,#1
+ inc dptr
+ mov dps,#1
+} by {
+ ; Peephole 220d removed bogus DPS set
+ mov dps,#1
+ inc dptr
}
replace {
}
replace {
- mov dps, #0x00
+ mov dps, #0
mov %1,a
- mov dps, #0x01
+ mov dps, #1
} by {
; Peephole 222 removed DPS abuse.
mov %1,a
- mov dps, #0x01
+ mov dps, #1
}
replace {
- mov dps, #0x00
+ mov dps, #0
xch a, ap
mov %1, ap
- mov dps, #0x01
+ mov dps, #1
} by {
; Peephole 222a removed DPS abuse.
xch a, ap
mov %1, ap
- mov dps, #0x01
+ mov dps, #1
}
replace {
- mov dps, #0x%1
+ mov dps, #%1
inc dptr
movx a,@dptr
mov %2,a
- mov dps, #0x%1
+ mov dps, #%1
} by {
- mov dps, #0x%1
+ mov dps, #%1
inc dptr
movx a,@dptr
mov %2,a
}
replace {
- mov dps, #0x00
+ mov dps, #0
inc dps
} by {
- mov dps, #0x01
+ mov dps, #1
}
replace {
- mov dps, #0x0%1
+ mov dps, #%1
mov dptr, %2
- mov dps, #0x0%1
+ mov dps, #%1
} by {
- mov dps, #0x0%1
+ mov dps, #%1
mov dptr, %2
}
replace {
- mov dps, #0x01
+ mov dps, #1
mov dptr, %1
- mov dps, #0x00
+ mov dps, #0
mov dptr, %2
inc dps
} by {
- mov dps, #0x00
+ mov dps, #0
mov dptr, %2
inc dps
mov dptr, %1
}
replace {
- mov dps, #0x0%1
+ mov dps, #%1
mov dptr, %2
- mov dps, #0x0%3
+ mov dps, #%3
mov dptr, %4
- mov dps, #0x0%1
+ mov dps, #%1
} by {
- mov dps, #0x0%3
+ mov dps, #%3
mov dptr, %4
- mov dps, #0x0%1
+ mov dps, #%1
mov dptr, %2
; Peephole 224: DPS usage re-arranged.
}
replace {
- mov dps, #0x01
+ mov dps, #1
mov dptr, %1
- mov dps, #0x00
+ mov dps, #0
} by {
- mov dps, #0x01
+ mov dps, #1
mov dptr, %1
dec dps
}
replace {
inc dps
- mov dps, #0x%1
+ mov dps, #%1
} by {
- mov dps, #0x%1
+ mov dps, #%1
}
replace {
dec dps
- mov dps, #0x%1
+ mov dps, #%1
} by {
- mov dps, #0x%1
+ mov dps, #%1
}
mov dptr,#%2
movc a,@a+dptr
}
+
+replace {
+ mov r%1,%2
+ mov ar%1,%3
+} by {
+ ; Peephole 228 redundant move
+ mov ar%1,%3
+}
+
+replace {
+ mov r%1,a
+ dec r%1
+ mov a,r%1
+} by {
+ ; Peephole 229.a redundant move
+ dec a
+ mov r%1,a
+}
+
+replace {
+ mov r%1,a
+ mov r%2,b
+ mov a,r%1
+} by {
+ ; Peephole 229.b redundant move
+ mov r%1,a
+ mov r%2,b
+}
+
+replace {
+ mov r%1,a
+ mov r%2,b
+ add a,#%3
+ mov r%1,a
+ mov a,r%2
+ addc a,#(%3 >> 8)
+ mov r%2,a
+} by {
+ ; Peephole 229.c redundant move
+ add a,#%3
+ mov r%1,a
+ mov a,b
+ addc a,#(%3 >> 8)
+ mov r%2,a
+}
+
+replace {
+ mov a,%1
+ mov b,a
+ movx a,%2
+} by {
+ ; Peephole 229.d redundant move
+ mov b,%1
+ movx a,%2
+}
+
+replace {
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ mov r%4,a
+ add a,#0x01
+ mov r%5,a
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx @dptr,a
+} by {
+ ; Peephole 230.a save reload dptr
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ mov r%4,a
+ add a,#0x01
+ mov r%5,a
+ movx @dptr,a
+}
+
+replace {
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ mov r%4,a
+ dec r%4
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ mov a,r%4
+ movx @dptr,a
+} by {
+ ; Peephole 230.b save reload dptr
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ dec a
+ mov r%4,a
+ movx @dptr,a
+}
+
+replace {
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ inc a
+ mov r%4,a
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ mov a,r%4
+ movx @dptr,a
+} by {
+ ; Peephole 230.c save reload dptr
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ inc a
+ mov r%4,a
+ movx @dptr,a
+}
+
+replace {
+ mov r%1,dpl
+ mov r%2,dph
+ mov r%3,dpx
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+} by {
+ ; Peephole 230.d save reload dptr
+ mov r%1,dpl
+ mov r%2,dph
+ mov r%3,dpx
+}
+
+replace {
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ mov r%4,a
+ orl ar%4,#%5
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ mov a,r1
+ movx @dptr,a
+} by {
+ ; Peephole 230.e save reload dptr
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ orl a,#%5
+ mov r%4,a
+ movx @dptr,a
+}
+
+replace {
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ mov r%4,a
+ anl ar%4,#%5
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ mov a,r1
+ movx @dptr,a
+} by {
+ ; Peephole 230.e save reload dptr
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+ movx a,@dptr
+ anl a,#%5
+ mov r%4,a
+ movx @dptr,a
+}
+
+replace {
+ mov r%1,dpl
+ mov r%2,dph
+ mov r%3,dpx
+ mov a,r%4
+ inc dps
+ movx @dptr,a
+ inc dptr
+ mov dps,#0
+ mov dpl,r%1
+ mov dph,r%2
+ mov dpx,r%3
+} by {
+ ; Peephole 230.f save reload dptr
+ mov r%1,dpl
+ mov r%2,dph
+ mov r%3,dpx
+ mov a,r%4
+ inc dps
+ movx @dptr,a
+ inc dptr
+ mov dps,#0
+}
+
+replace {
+ mov ar%1,r%2
+ mov ar%3,r%1
+ mov r%1,#0x00
+ mov ar%2,r%4
+ mov r3,#0x00
+} by {
+ ; Peephole 231.a simplified moves
+ mov ar%3,r%2
+ mov ar%2,r%4
+ mov r%4,#0
+ mov r%1,#0
+}
+
+replace {
+ mov r%1,#0
+ mov r%2,#0
+ mov a,r%2
+ orl a,r%3
+ mov %4,a
+ mov a,r%5
+ orl a,r%1
+ mov %6,a
+} by {
+ ; Peephole 231.b simplified or
+ mov r%1,#0
+ mov r%2,#0
+ mov a,r%3
+ mov %4,a
+ mov a,r%5
+ mov %6,a
+}
+
+replace {
+ mov a,r%1
+ mov b,r%2
+ mov r%1,b
+ mov r%2,a
+} by {
+ ; Peehole 232.a simplified xch
+ mov a,r%1
+ xch a,r%2
+ mov r%1,a
+}
+
+replace {
+ mov a,#%1
+ mov b,#%2
+ mov r%3,b
+ mov r%4,a
+} by {
+ ; Peehole 232.b simplified xch
+ mov r%3,#%2
+ mov r%4,#%1
+}
+
+replace {
+ mov dpl1,#%1
+ mov dph1,#(%1 >> 8)
+ mov dpx1,#(%1 >> 16)
+} by {
+ ; Peephole 233 24 bit load of dptr1
+ inc dps
+ mov dptr,#%1
+ dec dps
+}
+
+// 14 rules by Fiorenzo D. Ramaglia <fd.ramaglia@tin.it>
+
+replace {
+ add a,ar%1
+} by {
+ ; Peephole 236a
+ add a,r%1
+}
+
+replace {
+ addc a,ar%1
+} by {
+ ; Peephole 236b
+ addc a,r%1
+}
+
+replace {
+ anl a,ar%1
+} by {
+ ; Peephole 236c
+ anl a,r%1
+}
+
+replace {
+ dec ar%1
+} by {
+ ; Peephole 236d
+ dec r%1
+}
+
+replace {
+ djnz ar%1,%2
+} by {
+ ; Peephole 236e
+ djnz r%1,%2
+}
+
+replace {
+ inc ar%1
+} by {
+ ; Peephole 236f
+ inc r%1
+}
+
+replace {
+ mov a,ar%1
+} by {
+ ; Peephole 236g
+ mov a,r%1
+}
+
+replace {
+ mov ar%1,#%2
+} by {
+ ; Peephole 236h
+ mov r%1,#%2
+}
+
+replace {
+ mov ar%1,a
+} by {
+ ; Peephole 236i
+ mov r%1,a
+}
+
+replace {
+ mov ar%1,ar%2
+} by {
+ ; Peephole 236j
+ mov r%1,ar%2
+}
+
+replace {
+ orl a,ar%1
+} by {
+ ; Peephole 236k
+ orl a,r%1
+}
+
+replace {
+ subb a,ar%1
+} by {
+ ; Peephole 236l
+ subb a,r%1
+}
+
+replace {
+ xch a,ar%1
+} by {
+ ; Peephole 236m
+ xch a,r%1
+}
+
+replace {
+ xrl a,ar%1
+} by {
+ ; Peephole 236n
+ xrl a,r%1
+}
+
+replace {
+ sjmp %1
+%2:
+ mov %3,%4
+%5:
+ ret
+} by {
+ ; Peephole 237a removed sjmp to ret
+ ret
+%2:
+ mov %3,%4
+%1:
+ ret
+}
+
+replace {
+ sjmp %1
+%2:
+ mov %3,%4
+ mov dpl,%5
+ mov dph,%6
+%1:
+ ret
+} by {
+ ; Peephole 237b removed sjmp to ret
+ ret
+%2:
+ mov %3,%4
+ mov dpl,%5
+ mov dph,%6
+%1:
+ ret
+}