mov %1,@r%2
}
-replace {
- mov %1,%2
- mov %2,%1
-} by {
- ; Peephole 177 removed redundant mov
- mov %1,%2
-}
+// this one will screw assignes to volatile/sfr's
+//replace {
+// mov %1,%2
+// mov %2,%1
+//} by {
+// ; Peephole 177 removed redundant mov
+// mov %1,%2
+//}
replace {
mov a,%1
mov dptr,#0x0000
}
+replace {
+ mov dpl,#%1
+ mov dph,#(%1 >> 8)
+ mov dpx,#(%1 >> 16)
+} by {
+ ; Peephole 182b used 24 bit load of DPTR
+ mov dptr,#%1
+}
+
// saves 2 bytes, ?? cycles.
replace {
mov dpl,#%1
- mov dph,#(%1 >> 8)
- mov dpx,#(%1 >> 16)
+ mov dph,#%2
+ mov dpx,#%3
} by {
; Peephole 182a used 24 bit load of dptr
- mov dptr,#%1
-} if 24bitMode
+ mov dptr,#((%3 << 16) + (%2 << 8) + %1)
+} if 24bitModeAndPortDS390
// saving 3 byte, 2 cycles, return(float_constant) profits here
replace {
mov dptr,#%1
}
-replace {
- push %1
- pop %1
+replace restart {
+ push ar%1
+ pop ar%1
} by {
- ; Peephole 211 removed redundant push %1 pop %1
+ ; Peephole 211 removed redundant push r%1 pop r%1
}
replace {
} by {
mov %1,#(%2 >> 8)
xrl %1,#0x80
-}
+} if portIsDS390
replace {
mov %1,#(( %2 + %3 >> 8 ) ^ 0x80)
} by {
mov %1,#((%2 + %3) >> 8)
xrl %1,#0x80
-}
+} if portIsDS390
replace {
mov %1,a
replace {
mov dps, #0x00
- mov dp%1,a
+ mov %1,a
mov dps, #0x01
} by {
; Peephole 222 removed DPS abuse.
- mov dp%1,a
+ mov %1,a
mov dps, #0x01
}
+
+replace {
+ mov dps, #0x00
+ xch a, ap
+ mov %1, ap
+ mov dps, #0x01
+} by {
+ ; Peephole 222a removed DPS abuse.
+ xch a, ap
+ mov %1, ap
+ mov dps, #0x01
+}
+
+replace {
+ mov dps, #0x%1
+ inc dptr
+ movx a,@dptr
+ mov %2,a
+ mov dps, #0x%1
+} by {
+ mov dps, #0x%1
+ inc dptr
+ movx a,@dptr
+ mov %2,a
+; Peephole 223: yet more DPS abuse removed.
+}
+
+replace {
+ mov dps, #0x00
+ inc dps
+} by {
+ mov dps, #0x01
+}
+
+replace {
+ mov dps, #0x0%1
+ mov dptr, %2
+ mov dps, #0x0%1
+} by {
+ mov dps, #0x0%1
+ mov dptr, %2
+}
+
+replace {
+ mov dps, #0x01
+ mov dptr, %1
+ mov dps, #0x00
+ mov dptr, %2
+ inc dps
+} by {
+ mov dps, #0x00
+ mov dptr, %2
+ inc dps
+ mov dptr, %1
+; Peephole 224a: DPS usage re-arranged.
+}
+
+replace {
+ mov dps, #0x0%1
+ mov dptr, %2
+ mov dps, #0x0%3
+ mov dptr, %4
+ mov dps, #0x0%1
+} by {
+ mov dps, #0x0%3
+ mov dptr, %4
+ mov dps, #0x0%1
+ mov dptr, %2
+; Peephole 224: DPS usage re-arranged.
+}
+
+replace {
+ mov dps, #0x01
+ mov dptr, %1
+ mov dps, #0x00
+} by {
+ mov dps, #0x01
+ mov dptr, %1
+ dec dps
+}
+
+replace {
+ xch a, ap
+ add a, ap
+} by {
+ add a, ap
+}
+
+replace {
+ xch a, ap
+ addc a, ap
+} by {
+ addc a, ap
+}
+
+replace {
+ inc dps
+ mov dps, #0x%1
+} by {
+ mov dps, #0x%1
+}
+
+replace {
+ dec dps
+ mov dps, #0x%1
+} by {
+ mov dps, #0x%1
+}
+
+
+replace {
+ add a,#%2
+ mov dpl,a
+ clr a
+ addc a,#(%2 >> 8)
+ mov dph,a
+ clr a
+ addc a,#(%2 >> 16)
+ mov dpx,a
+ clr a
+ movc a,@a+dptr
+} by {
+ ; Peephole 227.a movc optimize
+ mov dptr,#%2
+ movc a,@a+dptr
+}