From 3cd6540f13cfaa60b16805317bd5ed54028ccbb7 Mon Sep 17 00:00:00 2001 From: Karol Stasiak Date: Mon, 5 Mar 2018 19:13:20 +0100 Subject: [PATCH] Slightly faster variable to register optimization --- .../opt/VariableToRegisterOptimization.scala | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/scala/millfork/assembly/opt/VariableToRegisterOptimization.scala b/src/main/scala/millfork/assembly/opt/VariableToRegisterOptimization.scala index 9af70d52..e4e957a7 100644 --- a/src/main/scala/millfork/assembly/opt/VariableToRegisterOptimization.scala +++ b/src/main/scala/millfork/assembly/opt/VariableToRegisterOptimization.scala @@ -195,19 +195,23 @@ object VariableToRegisterOptimization extends AssemblyOptimization { val variants = for { vx <- xCandidateSets.par - vy <- yCandidateSets - vz <- zCandidateSets - va <- aCandidateSets - na = va.map(_._1) nx = vx.map(_._1) + + vy <- yCandidateSets ny = vy.map(_._1) + if (nx & ny).isEmpty + + vz <- zCandidateSets nz = vz.map(_._1) if (nx & nz).isEmpty - if (nz & ny).isEmpty - if (na & nz).isEmpty - if (nx & ny).isEmpty + if (ny & nz).isEmpty + + va <- aCandidateSets + na = va.map(_._1) + if (nz & na).isEmpty if (nx & na).isEmpty - if (na & ny).isEmpty + if (ny & na).isEmpty + score = vx.toSeq.map(_._3).sum + vy.toSeq.map(_._3).sum + va.toSeq.map(_._3).sum + vz.toSeq.map(_._3).sum } yield (score, vx, vy, vz, va)