From 75cc34663cbb89e0acc7448e2ff42353b9727845 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Fri, 27 Jan 2023 18:15:10 +0100 Subject: [PATCH] Z80: fix an optimization --- .../millfork/assembly/z80/opt/ChangeRegisterPair.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/scala/millfork/assembly/z80/opt/ChangeRegisterPair.scala b/src/main/scala/millfork/assembly/z80/opt/ChangeRegisterPair.scala index f0a9f9d8..8904b2e2 100644 --- a/src/main/scala/millfork/assembly/z80/opt/ChangeRegisterPair.scala +++ b/src/main/scala/millfork/assembly/z80/opt/ChangeRegisterPair.scala @@ -174,6 +174,11 @@ class ChangeRegisterPair(preferBC2DE: Boolean) extends AssemblyOptimization[ZLin case (x@ZLine0(_, TwoRegisters(r, BC), _)) :: xs => x.copy(registers = TwoRegisters(r, DE)) :: switchBC2DE(xs) + case (x@ZLine0(_, TwoRegisters(MEM_BC, r), _)) :: xs => + x.copy(registers = TwoRegisters(MEM_DE, r)) :: switchBC2DE(xs) + case (x@ZLine0(_, TwoRegisters(r, MEM_BC), _)) :: xs => + x.copy(registers = TwoRegisters(r, MEM_DE)) :: switchBC2DE(xs) + case (x@ZLine0(_, TwoRegisters(B, r), _)) :: xs => x.copy(registers = TwoRegisters(D, r)) :: switchBC2DE(xs) case (x@ZLine0(_, TwoRegisters(r, B), _)) :: xs => @@ -222,6 +227,11 @@ class ChangeRegisterPair(preferBC2DE: Boolean) extends AssemblyOptimization[ZLin case (x@ZLine0(_, TwoRegisters(r, DE), _)) :: xs => x.copy(registers = TwoRegisters(r, BC)) :: switchDE2BC(xs) + case (x@ZLine0(_, TwoRegisters(MEM_DE, r), _)) :: xs => + x.copy(registers = TwoRegisters(MEM_BC, r)) :: switchDE2BC(xs) + case (x@ZLine0(_, TwoRegisters(r, MEM_DE), _)) :: xs => + x.copy(registers = TwoRegisters(r, MEM_BC)) :: switchDE2BC(xs) + case (x@ZLine0(_, TwoRegisters(D, r), _)) :: xs => x.copy(registers = TwoRegisters(B, r)) :: switchDE2BC(xs) case (x@ZLine0(_, TwoRegisters(r, D), _)) :: xs =>