replace {
mov %1,#(( %2 >> 8 ) ^ 0x80)
-} by {
+} by {
+ ; Peephole 213.a inserted fix
mov %1,#(%2 >> 8)
xrl %1,#0x80
} if portIsDS390
+replace {
+ mov %1,#(( %2 >> 16 ) ^ 0x80)
+} by {
+ ; Peephole 213.b inserted fix
+ mov %1,#(%2 >> 16)
+ xrl %1,#0x80
+} if portIsDS390
+
replace {
mov %1,#(( %2 + %3 >> 8 ) ^ 0x80)
} by {
+ ; Peephole 213.c inserted fix
mov %1,#((%2 + %3) >> 8)
xrl %1,#0x80
} if portIsDS390
mov r%4,a
movx @dptr,a
}
-
+
replace {
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%4,a
} by {
; Peehole 232.b simplified xch
- mov r%3,#%1
- mov r%4,#%2
-}
\ No newline at end of file
+ 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
+%1:
+ 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
+}