1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-04-07 06:37:31 +00:00

Implemented potential register elimination based on clobber analysis of individual statements.

This commit is contained in:
jespergravgaard 2017-08-06 13:31:29 +02:00
parent 0e5bd97e21
commit 439a70e52a
35 changed files with 1348 additions and 73346 deletions

View File

@ -1,8 +1,5 @@
package dk.camelot64.kickc;
import dk.camelot64.kickc.asm.AsmFragment;
import dk.camelot64.kickc.asm.AsmProgram;
import dk.camelot64.kickc.asm.AsmSegment;
import dk.camelot64.kickc.icl.*;
import dk.camelot64.kickc.parser.KickCLexer;
import dk.camelot64.kickc.parser.KickCParser;
@ -66,6 +63,12 @@ public class Compiler {
}
private void pass4RegisterAllocation(Program program) {
// Find potential registers for each live range equivalence class - based on clobbering of fragments
new Pass3RegisterUpliftPotentialRegisterAnalysis(program).findPotentialRegisters();
program.getLog().append("REGISTER UPLIFT POTENTIAL REGISTERS");
program.getLog().append(program.getRegisterPotentials().toString());
// Find register uplift scopes
new Pass3RegisterUpliftScopeAnalysis(program).findScopes();
program.getLog().append("REGISTER UPLIFT SCOPES");
@ -74,8 +77,6 @@ public class Compiler {
// Attempt uplifting registers through a lot of combinations
new Pass3RegisterUpliftCombinations(program).performUplift();
// Final register coalesce and code generation
new Pass3ZeroPageCoalesce(program).allocate();
new Pass3RegistersFinalize(program).allocate(true);

View File

@ -419,7 +419,7 @@ public class AsmFragment {
Asm6502Parser.ParamModeContext paramModeCtx = ctx.paramMode();
AsmInstruction instruction;
if (paramModeCtx == null) {
AsmInstructionType type = AsmInstuctionSet.getInstructionType(ctx.MNEMONIC().getText(), AsmAddressingMode.NON, null);
AsmInstructionType type = AsmInstructionSet.getInstructionType(ctx.MNEMONIC().getText(), AsmAddressingMode.NON, null);
instruction = new AsmInstruction(type, null);
} else {
instruction = (AsmInstruction) this.visit(paramModeCtx);
@ -471,7 +471,7 @@ public class AsmFragment {
Asm6502Parser.InstructionContext instructionCtx = (Asm6502Parser.InstructionContext) ctx.getParent();
String mnemonic = instructionCtx.MNEMONIC().getSymbol().getText();
String parameter = (String) this.visit(exprCtx);
AsmInstructionType type = AsmInstuctionSet.getInstructionType(mnemonic, addressingMode, parameter);
AsmInstructionType type = AsmInstructionSet.getInstructionType(mnemonic, addressingMode, parameter);
if (type == null) {
throw new RuntimeException("Error in " + signature + ".asm line " + ctx.getStart().getLine() + " - Instruction type unknown " + mnemonic + " " + addressingMode + " " + parameter);
}

View File

@ -9,9 +9,9 @@ import java.util.List;
/**
* The set of all 6502 assembler instructions
*/
public class AsmInstuctionSet {
public class AsmInstructionSet {
private static AsmInstuctionSet set = new AsmInstuctionSet();
private static AsmInstructionSet set = new AsmInstructionSet();
public static AsmInstructionType getInstructionType(String mnemonic, AsmAddressingMode mode, String parameter) {
AsmInstructionType type = null;
@ -52,7 +52,7 @@ public class AsmInstuctionSet {
instructions.add(new AsmInstructionType(opcode, mnemonic, addressingmMode, cycles));
}
public AsmInstuctionSet() {
public AsmInstructionSet() {
this.instructions = new ArrayList<>();
AsmAddressingMode non = AsmAddressingMode.NON;
AsmAddressingMode zp = AsmAddressingMode.ZP;

View File

@ -60,7 +60,7 @@ public class AsmProgram {
}
public void addInstruction(String mnemonic, AsmAddressingMode addressingMode, String parameter) {
AsmInstructionType instructionType = AsmInstuctionSet.getInstructionType(mnemonic, addressingMode, parameter);
AsmInstructionType instructionType = AsmInstructionSet.getInstructionType(mnemonic, addressingMode, parameter);
addLine(new AsmInstruction(instructionType, parameter));
}

View File

@ -33,6 +33,9 @@ public class Program {
private LiveRangeEquivalenceClassSet liveRangeEquivalenceClassSet;
/** The register weight of all variables describing how much the variable would theoretically gain from being in a register */
private VariableRegisterWeights variableRegisterWeights;
/** Registers potentially usable as allocation for each live range equivalence class. */
private RegisterPotentials registerPotentials;
/** Separation of live range equivalence classes into scopes - used for register uplift */
private RegisterUpliftProgram registerUpliftProgram;
@JsonCreator
@ -130,6 +133,14 @@ public class Program {
return variableRegisterWeights;
}
public void setRegisterPotentials(RegisterPotentials registerPotentials) {
this.registerPotentials = registerPotentials;
}
public RegisterPotentials getRegisterPotentials() {
return registerPotentials;
}
public void setRegisterUpliftProgram(RegisterUpliftProgram registerUpliftProgram) {
this.registerUpliftProgram = registerUpliftProgram;
}

View File

@ -0,0 +1,55 @@
package dk.camelot64.kickc.icl;
import java.util.LinkedHashMap;
import java.util.Map;
/** A combination of register/ZP assignments for a set of equivalence classes */
public class RegisterCombination {
/**
* The registers allocated to each equivalence class.
*/
private Map<LiveRangeEquivalenceClass, RegisterAllocation.Register> allocation;
public RegisterCombination() {
this.allocation = new LinkedHashMap<>();
}
void setRegister(LiveRangeEquivalenceClass equivalenceClass, RegisterAllocation.Register register) {
allocation.put(equivalenceClass, register);
}
/**
* Allocate the registers of the combination into the programs register allocation
*/
public void allocate(RegisterAllocation registerAllocation) {
for (LiveRangeEquivalenceClass equivalenceClass : allocation.keySet()) {
RegisterAllocation.Register register = allocation.get(equivalenceClass);
for (VariableRef variable : equivalenceClass.getVariables()) {
registerAllocation.setRegister(variable, register);
}
}
}
/**
* Store the combination in the equivalence classes.
*/
public void store(LiveRangeEquivalenceClassSet equivalenceClassSet) {
for (LiveRangeEquivalenceClass equivalenceClass : allocation.keySet()) {
VariableRef variable = equivalenceClass.getVariables().get(0);
LiveRangeEquivalenceClass globalEquivalenceClass = equivalenceClassSet.getEquivalenceClass(variable);
RegisterAllocation.Register register = allocation.get(equivalenceClass);
globalEquivalenceClass.setRegister(register);
}
}
@Override
public String toString() {
StringBuilder out = new StringBuilder();
for (LiveRangeEquivalenceClass equivalenceClass : allocation.keySet()) {
RegisterAllocation.Register register = allocation.get(equivalenceClass);
out.append(register.toString()).append(" ").append(equivalenceClass.toString(false)).append(" ");
}
return out.toString();
}
}

View File

@ -0,0 +1,59 @@
package dk.camelot64.kickc.icl;
import java.util.Iterator;
import java.util.List;
/** Iterator for running through all possible combinations of register allocations for a set of live range equivalence classes */
public class RegisterCombinationIterator implements Iterator<RegisterCombination> {
/** The equivalence classes to create register combinations for. */
private List<LiveRangeEquivalenceClass> equivalenceClasses;
/** The potential registers usable for the equivalence classes. */
private RegisterPotentials registerPotentials;
/**
* The ID of the next iteration. Combinations are created from the index by using modulo.
*/
private int nextIterationId;
public RegisterCombinationIterator(List<LiveRangeEquivalenceClass> equivalenceClasses, RegisterPotentials registerPotentials) {
this.equivalenceClasses = equivalenceClasses;
this.registerPotentials = registerPotentials;
this.nextIterationId = 0;
}
@Override
public boolean hasNext() {
return nextIterationId < getNumIterations();
}
private int getNumIterations() {
int numIterations = 1;
for (LiveRangeEquivalenceClass equivalenceClass : equivalenceClasses) {
List<RegisterAllocation.Register> registers = registerPotentials.getPotentialRegisters(equivalenceClass);
numIterations = numIterations * registers.size();
}
return numIterations;
}
@Override
public RegisterCombination next() {
RegisterCombination combination = new RegisterCombination();
int combinationIdRest = nextIterationId;
for (LiveRangeEquivalenceClass equivalenceClass : equivalenceClasses) {
List<RegisterAllocation.Register> potentials = registerPotentials.getPotentialRegisters(equivalenceClass);
int registerIdx = (combinationIdRest % potentials.size());
RegisterAllocation.Register register = potentials.get(registerIdx);
combination.setRegister(equivalenceClass, register);
combinationIdRest = (int) Math.floor(combinationIdRest / potentials.size());
}
nextIterationId++;
return combination;
}
@Override
public void remove() {
throw new RuntimeException("Not supported");
}
}

View File

@ -0,0 +1,51 @@
package dk.camelot64.kickc.icl;
import java.util.*;
/**
* Holds potential registers for each live range equivalence class in the program.
*/
public class RegisterPotentials {
private Map<LiveRangeEquivalenceClass, List<RegisterAllocation.Register>> potentials;
public RegisterPotentials() {
this.potentials = new LinkedHashMap<>();
}
public List<RegisterAllocation.Register> getPotentialRegisters(LiveRangeEquivalenceClass equivalenceClass) {
return potentials.get(equivalenceClass);
}
public void setPotentialRegisters(LiveRangeEquivalenceClass equivalenceClass, List<RegisterAllocation.Register> registers) {
potentials.put(equivalenceClass, new ArrayList<>(registers));
}
public void removePotentialRegister(LiveRangeEquivalenceClass equivalenceClass, RegisterAllocation.Register register) {
List<RegisterAllocation.Register> registers = potentials.get(equivalenceClass);
registers.remove(register);
}
public RegisterCombinationIterator getAllCombinations(Collection<LiveRangeEquivalenceClass> equivalenceClasses) {
return new RegisterCombinationIterator(new ArrayList<>(equivalenceClasses), this);
}
@Override
public String toString() {
StringBuilder out = new StringBuilder();
for (LiveRangeEquivalenceClass liveRangeEquivalenceClass : potentials.keySet()) {
out.append("Potential registers ");
out.append(liveRangeEquivalenceClass.toString());
out.append(" : ");
List<RegisterAllocation.Register> registers = potentials.get(liveRangeEquivalenceClass);
for (RegisterAllocation.Register register : registers) {
out.append(register.toString());
out.append(" , ");
}
out.append("\n");
}
return out.toString();
}
}

View File

@ -4,14 +4,10 @@ import com.ibm.icu.text.NumberFormat;
import java.util.*;
/**
* Register Uplift information for a single scope.
*/
/** Register Uplift information for a single scope. */
public class RegisterUpliftScope {
/**
* The scope.
*/
/** The scope. */
private LabelRef scopeRef;
/**
@ -55,157 +51,13 @@ public class RegisterUpliftScope {
return toString(null);
}
public Iterator<Combination> geCombinationIterator() {
return new CombinationIterator(scopeRef, equivalenceClasses);
}
/**
* A combination of register/ZP assignments for the equivalence classes of the scope.
* Get all register allocation combinations using the passed potential registers
* @param registerPotentials The potential registers to use for each live range equivalence class
* @return Iterator of all combinations
*/
public static class Combination {
/**
* The scope.
*/
private LabelRef scopeRef;
/**
* The registers allocated to each equivalence class.
*/
private Map<LiveRangeEquivalenceClass, RegisterAllocation.Register> allocation;
public Combination(LabelRef scopeRef) {
this.scopeRef = scopeRef;
this.allocation = new LinkedHashMap<>();
}
void setRegister(LiveRangeEquivalenceClass equivalenceClass, RegisterAllocation.Register register) {
allocation.put(equivalenceClass, register);
}
/**
* Allocate the registers of the combination into the programs register allocation
*/
public void allocate(RegisterAllocation registerAllocation) {
for (LiveRangeEquivalenceClass equivalenceClass : allocation.keySet()) {
RegisterAllocation.Register register = allocation.get(equivalenceClass);
for (VariableRef variable : equivalenceClass.getVariables()) {
registerAllocation.setRegister(variable, register);
}
}
}
/**
* Store the best combination in the equivalence classes.
*/
public void store(LiveRangeEquivalenceClassSet equivalenceClassSet) {
for (LiveRangeEquivalenceClass equivalenceClass : allocation.keySet()) {
VariableRef variable = equivalenceClass.getVariables().get(0);
LiveRangeEquivalenceClass globalEquivalenceClass = equivalenceClassSet.getEquivalenceClass(variable);
RegisterAllocation.Register register = allocation.get(equivalenceClass);
globalEquivalenceClass.setRegister(register);
}
}
@Override
public String toString() {
StringBuilder out = new StringBuilder();
for (LiveRangeEquivalenceClass equivalenceClass : allocation.keySet()) {
RegisterAllocation.Register register = allocation.get(equivalenceClass);
out.append(register.toString()).append(" ").append(equivalenceClass.toString(false)).append(" ");
}
return out.toString();
}
public Iterator<RegisterCombination> geCombinationIterator(RegisterPotentials registerPotentials) {
return new RegisterCombinationIterator(equivalenceClasses, registerPotentials);
}
private static class CombinationIterator implements Iterator<Combination> {
/**
* The scope we are creating combinations for.
*/
private LabelRef scopeRef;
/**
* The equivalence classes to create register combinations for.
*/
private List<LiveRangeEquivalenceClass> equivalenceClasses;
/**
* The ID of the next iteration. Combinations are created from the index by using modulo.
*/
private int nextIterationId;
public CombinationIterator(LabelRef scopeRef, List<LiveRangeEquivalenceClass> equivalenceClasses) {
this.scopeRef = scopeRef;
this.equivalenceClasses = equivalenceClasses;
this.nextIterationId = 0;
}
/**
* Examine the control flow graph to determine which registers could be usable for
* optimizing the variables in a specific live range equivalence class.
*
* The optimizer will only test combinations with these registers
*
* @param equivalenceClass The equivalence class
* @return The registers to try to optimize the variables of the equivalence class into
*/
public List<RegisterAllocation.Register> getPotentialRegisters(LiveRangeEquivalenceClass equivalenceClass) {
// TODO!!
}
@Override
public boolean hasNext() {
return nextIterationId < getNumIterations();
}
private int getNumIterations() {
int numIterations = 1;
for (LiveRangeEquivalenceClass equivalenceClass : equivalenceClasses) {
RegisterAllocation.Register defaultReegister = equivalenceClass.getRegister();
if (defaultReegister.getType().equals(RegisterAllocation.RegisterType.ZP_BYTE)) {
numIterations = numIterations *5;
}
}
return numIterations;
}
@Override
public Combination next() {
Combination combination = new Combination(scopeRef);
int combinationIdRest = nextIterationId;
for (LiveRangeEquivalenceClass equivalenceClass : equivalenceClasses) {
RegisterAllocation.Register defaultReegister = equivalenceClass.getRegister();
if (defaultReegister.getType().equals(RegisterAllocation.RegisterType.ZP_BYTE)) {
int registerIdx = (combinationIdRest % 5);
List<RegisterAllocation.Register> potentialRegisters =
Arrays.asList(
defaultReegister,
RegisterAllocation.getRegisterA(),
RegisterAllocation.getRegisterX(),
RegisterAllocation.getRegisterY(),
RegisterAllocation.getRegisterALU());
RegisterAllocation.Register register = potentialRegisters.get(registerIdx);
combination.setRegister(equivalenceClass, register);
combinationIdRest = (int) Math.floor(combinationIdRest / 5);
} else {
combination.setRegister(equivalenceClass, defaultReegister);
}
}
nextIterationId++;
return combination;
}
@Override
public void remove() {
throw new RuntimeException("Not supported");
}
}
}

View File

@ -46,7 +46,7 @@ public class Pass3AssertNoCpuClobber extends Pass2Base {
// Find alive variables
List<VariableRef> aliveVars = new ArrayList<>(liveRangeVariables.getAlive(statement));
// Find vars assignedVars to
Collection<VariableRef> assignedVars = getAssignedVars(statement);
Collection<VariableRef> assignedVars = Pass3RegisterUpliftPotentialRegisterAnalysis.getAssignedVars(statement);
for (VariableRef aliveVar : aliveVars) {
RegisterAllocation.Register aliveVarRegister = allocation.getRegister(aliveVar);
if (aliveVarRegister.isZp()) {
@ -71,36 +71,13 @@ public class Pass3AssertNoCpuClobber extends Pass2Base {
return clobberProblem;
}
/**
* Get the variables assigned to by a specific statement
*
* @param statement The statement
* @return The variables assigned by the statement
*/
private Collection<VariableRef> getAssignedVars(Statement statement) {
List<VariableRef> assignedVars = new ArrayList<>();
if (statement instanceof StatementAssignment) {
StatementAssignment assignment = (StatementAssignment) statement;
if (assignment.getlValue() instanceof VariableRef) {
assignedVars.add((VariableRef) assignment.getlValue());
}
} else if (statement instanceof StatementPhiBlock) {
StatementPhiBlock phi = (StatementPhiBlock) statement;
for (StatementPhiBlock.PhiVariable phiVariable : phi.getPhiVariables()) {
assignedVars.add(phiVariable.getVariable());
}
}
return assignedVars;
}
/**
* Get all CPU registers clobbered by the ASM generated from a specific statement in the program
*
* @param asm The assembler to check
* @return The clobbered CPU registers
*/
private Collection<RegisterAllocation.Register> getClobberRegisters(AsmClobber clobber) {
public static Collection<RegisterAllocation.Register> getClobberRegisters(AsmClobber clobber) {
List<RegisterAllocation.Register> clobberRegisters = new ArrayList<>();
if (clobber.isClobberA()) {
clobberRegisters.add(RegisterAllocation.getRegisterA());

View File

@ -24,11 +24,11 @@ public class Pass3RegisterUpliftCombinations extends Pass2Base {
List<RegisterUpliftScope> registerUpliftScopes = getProgram().getRegisterUpliftProgram().getRegisterUpliftScopes();
for (RegisterUpliftScope upliftScope : registerUpliftScopes) {
int bestScore = Integer.MAX_VALUE;
RegisterUpliftScope.Combination bestCombination = null;
RegisterCombination bestCombination = null;
Iterator<RegisterUpliftScope.Combination> combinationIterator = upliftScope.geCombinationIterator();
Iterator<RegisterCombination> combinationIterator = upliftScope.geCombinationIterator(getProgram().getRegisterPotentials());
while (combinationIterator.hasNext()) {
RegisterUpliftScope.Combination combination = combinationIterator.next();
RegisterCombination combination = combinationIterator.next();
// Reset register allocation to original zero page allocation
new Pass3RegistersFinalize(getProgram()).allocate(false);
// Apply the uplift combination
@ -41,12 +41,14 @@ public class Pass3RegisterUpliftCombinations extends Pass2Base {
StringBuilder msg = new StringBuilder();
msg.append("Uplift attempt [" + upliftScope.getScopeRef() + "] ");
msg.append("missing fragment " + e.getFragmentSignature());
msg.append(" allocation: ").append(combination.toString());
getLog().append(msg.toString());
continue;
} catch (AsmFragment.AluNotApplicableException e) {
StringBuilder msg = new StringBuilder();
msg.append("Uplift attempt [" + upliftScope.getScopeRef() + "] ");
msg.append("alu not applicable");
msg.append(" allocation: ").append(combination.toString());
getLog().append(msg.toString());
continue;
}

View File

@ -0,0 +1,214 @@
package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.asm.AsmProgram;
import dk.camelot64.kickc.asm.parser.AsmClobber;
import dk.camelot64.kickc.icl.*;
import java.util.*;
/*** Find potential registers for each equivalence class - based on clobbering of all register combinations in each statement.
* <p>
* If all possible register combinations in a statement clobbers a register then that register cannot be used for any variable alive
* in the statement - except the variable assigned by the statement.
*
* */
public class Pass3RegisterUpliftPotentialRegisterAnalysis extends Pass2Base {
public Pass3RegisterUpliftPotentialRegisterAnalysis(Program program) {
super(program);
}
/*** For each statement - try out all potential register combinations and examine the clobber */
public void findPotentialRegisters() {
LiveRangeEquivalenceClassSet liveRangeEquivalenceClassSet = getProgram().getLiveRangeEquivalenceClassSet();
RegisterPotentials registerPotentials = getProgram().getRegisterPotentials();
// Initialize potential registers for all live range equilavence classes
if (registerPotentials == null) {
registerPotentials = new RegisterPotentials();
for (LiveRangeEquivalenceClass equivalenceClass : liveRangeEquivalenceClassSet.getEquivalenceClasses()) {
RegisterAllocation.Register defaultRegister = equivalenceClass.getRegister();
RegisterAllocation.RegisterType registerType = defaultRegister.getType();
if (registerType.equals(RegisterAllocation.RegisterType.ZP_BYTE)) {
List<RegisterAllocation.Register> potentials = Arrays.asList(
defaultRegister,
RegisterAllocation.getRegisterA(),
RegisterAllocation.getRegisterX(),
RegisterAllocation.getRegisterY());
registerPotentials.setPotentialRegisters(equivalenceClass, potentials);
} else {
registerPotentials.setPotentialRegisters(equivalenceClass, Arrays.asList(defaultRegister));
}
}
}
for (ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) {
for (Statement statement : block.getStatements()) {
// Find all variables referenced/assigned in the statement
Set<VariableRef> referencedVars = getReferencedVars(statement);
Set<VariableRef> assignedVars = getAssignedVars(statement);
// Find referenced/assigned live range equivalence classes
Set<LiveRangeEquivalenceClass> assignedClasses = new LinkedHashSet<>();
for (VariableRef var : assignedVars) {
assignedClasses.add(liveRangeEquivalenceClassSet.getEquivalenceClass(var));
}
Set<LiveRangeEquivalenceClass> referencedClasses = new LinkedHashSet<>();
for (VariableRef var : referencedVars) {
referencedClasses.add(liveRangeEquivalenceClassSet.getEquivalenceClass(var));
}
// Generate all combinations of potential register allocations for the referenced equivalence classes
// one statement has so few references that all combinations wont explode
RegisterCombinationIterator combinationIterator = registerPotentials.getAllCombinations(referencedClasses);
// For each combination generate the ASM and examine the clobber of all alive variables
// Find the registers clobbered by all combinations!
Set<RegisterAllocation.Register> alwaysClobbered = findAlwaysClobberedRegisters(block, statement, combinationIterator);
if (alwaysClobbered.isEmpty()) {
// No registers are always clobbered - move on to the next statement
continue;
} else {
StringBuilder msg = new StringBuilder();
msg.append("Statement ").append(statement.toString(getProgram()));
msg.append(" always clobbers ");
for (RegisterAllocation.Register register : alwaysClobbered) {
msg.append(register).append(" ");
}
getLog().append(msg.toString());
}
// For all non-assigned live variables: remove always clobbered registers from their potential allocation
List<VariableRef> aliveVars = getProgram().getLiveRangeVariables().getAlive(statement);
for (VariableRef aliveVar : aliveVars) {
LiveRangeEquivalenceClass aliveClass = liveRangeEquivalenceClassSet.getEquivalenceClass(aliveVar);
if (assignedClasses.contains(aliveClass)) {
// Assigned registers are allowed to be be clobbered
continue;
}
List<RegisterAllocation.Register> alivePotentialRegisters = registerPotentials.getPotentialRegisters(aliveClass);
for (RegisterAllocation.Register clobberedRegister : alwaysClobbered) {
if (alivePotentialRegisters.contains(clobberedRegister)) {
registerPotentials.removePotentialRegister(aliveClass, clobberedRegister);
StringBuilder msg = new StringBuilder();
msg.append("Removing always clobbered register " + clobberedRegister + " as potential for " + aliveClass);
getLog().append(msg.toString());
}
}
}
}
}
getProgram().setRegisterPotentials(registerPotentials);
}
/**
* Find the registers clobbered by all regsiter allocation combinations.
* For each combination generate the ASM and examine the clobber of all alive variables.
*
* @param block The block containins the statement
* @param statement The statement to examine
* @param combinations The regsiter combinations to test
* @return A set with registers that are clobbered by all different register assignments in the combination
*/
private Set<RegisterAllocation.Register> findAlwaysClobberedRegisters(ControlFlowBlock block, Statement statement, RegisterCombinationIterator combinations) {
Set<RegisterAllocation.Register> alwaysClobbered = new HashSet<>();
alwaysClobbered.add(RegisterAllocation.getRegisterA());
alwaysClobbered.add(RegisterAllocation.getRegisterX());
alwaysClobbered.add(RegisterAllocation.getRegisterY());
while (combinations.hasNext()) {
RegisterCombination combination = combinations.next();
// Reset register allocation to original zero page allocation
new Pass3RegistersFinalize(getProgram()).allocate(false);
// Apply the combination
combination.allocate(getProgram().getAllocation());
// Generate ASM
AsmProgram asm = new AsmProgram();
asm.startSegment(statement.getIndex(), statement.toString(getProgram()));
Pass3CodeGeneration.AsmCodegenAluState aluState = new Pass3CodeGeneration.AsmCodegenAluState();
(new Pass3CodeGeneration(getProgram())).generateStatementAsm(asm, block, statement, aluState);
AsmClobber clobber = asm.getClobber();
Collection<RegisterAllocation.Register> clobberRegisters = Pass3AssertNoCpuClobber.getClobberRegisters(clobber);
Iterator<RegisterAllocation.Register> alwaysClobberIt = alwaysClobbered.iterator();
while (alwaysClobberIt.hasNext()) {
RegisterAllocation.Register alwaysClobberRegister = alwaysClobberIt.next();
if (!clobberRegisters.contains(alwaysClobberRegister)) {
alwaysClobberIt.remove();
}
}
if (alwaysClobbered.isEmpty()) {
// No register is always clobbered - abort combination search
break;
}
}
return alwaysClobbered;
}
/**
* Get all variables referenced (or assigned) in a statement.
*
* @param statement The statement
* @return All variables referenced (or assigned) in the statement
*/
public static Set<VariableRef> getReferencedVars(Statement statement) {
Set<VariableRef> referenced = new LinkedHashSet<>();
if (statement instanceof StatementAssignment) {
addReferenced(referenced, ((StatementAssignment) statement).getlValue());
addReferenced(referenced, ((StatementAssignment) statement).getrValue1());
addReferenced(referenced, ((StatementAssignment) statement).getrValue2());
} else if (statement instanceof StatementPhiBlock) {
for (StatementPhiBlock.PhiVariable phiVariable : ((StatementPhiBlock) statement).getPhiVariables()) {
addReferenced(referenced, phiVariable.getVariable());
for (StatementPhiBlock.PhiRValue phiRValue : phiVariable.getValues()) {
addReferenced(referenced, phiRValue.getrValue());
}
}
} else if (statement instanceof StatementConditionalJump) {
addReferenced(referenced, ((StatementConditionalJump) statement).getrValue1());
addReferenced(referenced, ((StatementConditionalJump) statement).getrValue2());
}
return referenced;
}
private static void addReferenced(Set<VariableRef> referenced, RValue rValue) {
if (rValue instanceof VariableRef) {
referenced.add((VariableRef) rValue);
} else if (rValue instanceof PointerDereferenceSimple) {
addReferenced(referenced, ((PointerDereferenceSimple) rValue).getPointer());
} else if (rValue instanceof PointerDereferenceIndexed) {
addReferenced(referenced, ((PointerDereferenceIndexed) rValue).getPointer());
addReferenced(referenced, ((PointerDereferenceIndexed) rValue).getIndex());
}
}
/**
* Get all variables assigned a value in a statement
*
* @param statement The statement
* @return The variables assigned a value in the statement
*/
public static Set<VariableRef> getAssignedVars(Statement statement) {
LinkedHashSet<VariableRef> variableRefs = new LinkedHashSet<>();
if (statement instanceof StatementPhiBlock) {
List<StatementPhiBlock.PhiVariable> phiVariables = ((StatementPhiBlock) statement).getPhiVariables();
for (StatementPhiBlock.PhiVariable phiVariable : phiVariables) {
variableRefs.add(phiVariable.getVariable());
}
return variableRefs;
} else if (statement instanceof StatementAssignment) {
LValue lValue = ((StatementAssignment) statement).getlValue();
if (lValue instanceof VariableRef) {
variableRefs.add((VariableRef) lValue);
}
}
return variableRefs;
}
}

View File

@ -64,6 +64,10 @@ public class TestCompilationOutput extends TestCase {
compileAndCompare("ptrtest");
}
public void testPtrTestMin() throws IOException, URISyntaxException {
compileAndCompare("ptrtestmin");
}
public void testUseGlobal() throws IOException, URISyntaxException {
compileAndCompare("useglobal");
}

View File

@ -0,0 +1,18 @@
// Test all types of pointers
main();
void main() {
// A constant pointer
byte[1024] SCREEN = $0400;
byte b;
// RValue constant array variable index
byte i=2;
while(i<10) {
b = SCREEN[i++];
}
}

View File

@ -1171,134 +1171,33 @@ B3_from_B2:
//SEG31 [6] phi (byte*) cursor#5 = (byte*) cursor#2 -- register_copy
jmp B3
Statement [1] *((byte*) cursor#3) ← (byte) 81 [ cursor#3 x#2 e#3 y#2 ] always clobbers reg byte y reg byte a
Removing always clobbered register reg byte y as potential for zp byte:4 [ x#2 x#1 ]
Removing always clobbered register reg byte a as potential for zp byte:4 [ x#2 x#1 ]
Removing always clobbered register reg byte y as potential for zp byte:5 [ e#3 e#5 e#1 e#2 ]
Removing always clobbered register reg byte a as potential for zp byte:5 [ e#3 e#5 e#1 e#2 ]
Removing always clobbered register reg byte y as potential for zp byte:6 [ y#2 y#4 y#1 ]
Removing always clobbered register reg byte a as potential for zp byte:6 [ y#2 y#4 y#1 ]
Statement [4] (byte) e#1 ← (byte) e#3 + (byte) 24 [ x#1 e#1 cursor#1 y#2 ] always clobbers reg byte a
Statement [9] (byte*) cursor#2 ← (byte*) cursor#1 + (byte) 40 [ x#1 e#1 cursor#2 y#1 ] always clobbers reg byte a
Statement [10] (byte) e#2 ← (byte) e#1 - (byte) 39 [ x#1 cursor#2 e#2 y#1 ] always clobbers reg byte a
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] : zp ptr byte:2 ,
Potential registers zp byte:4 [ x#2 x#1 ] : zp byte:4 , reg byte x ,
Potential registers zp byte:5 [ e#3 e#5 e#1 e#2 ] : zp byte:5 , reg byte x ,
Potential registers zp byte:6 [ y#2 y#4 y#1 ] : zp byte:6 , reg byte x ,
REGISTER UPLIFT SCOPES
Uplift Scope [] 55: zp byte:5 [ e#3 e#5 e#1 e#2 ] 46.75: zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] 29.33: zp byte:6 [ y#2 y#4 y#1 ] 14.67: zp byte:4 [ x#2 x#1 ]
Uplift attempt [] 1280 allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] 1180 allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 1220 allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte a [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] 1190 allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte x [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte a [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte x [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:5 [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte a [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] clobber allocation: reg byte y [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] reg byte y [ y#2 y#4 y#1 ] reg byte y [ x#2 x#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplifting [] best 1180 combination reg byte x [ e#3 e#5 e#1 e#2 ] zp ptr byte:2 [ cursor#3 cursor#5 cursor#1 cursor#2 ] zp byte:6 [ y#2 y#4 y#1 ] zp byte:4 [ x#2 x#1 ]
Re-allocated ZP register from zp byte:6 to zp byte:5
Removing instruction jmp B1

View File

@ -8,8 +8,10 @@ B1_from_BBEGIN:
B1_from_B1:
B1:
lda 4352,x
sta 2
lda 4353,x
clc
adc 4353,x
adc 2
sta 4354,x
inx
cpx #15

View File

@ -487,6 +487,14 @@ B1:
//SEG14 @END
BEND:
Statement [0] *((word) 4352) ← (byte) 0 [ ] always clobbers reg byte a
Statement [1] *((word) 4353) ← (byte) 1 [ ] always clobbers reg byte a
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ i#2 i#1 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ $1 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:4 [ $3 ] : zp byte:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:5 [ $4 ] : zp byte:5 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [] 27.5: zp byte:2 [ i#2 i#1 ] 22: zp byte:4 [ $3 ] 22: zp byte:5 [ $4 ] 11: zp byte:3 [ $1 ]
@ -494,756 +502,260 @@ Uplift attempt [] 707 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 527 allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 527 allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 647 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 467 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 467 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 487 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 487 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment zpby1=zpby2_plus_cowo1_staridx_zpby3
Uplift attempt [] missing fragment zpby1=zpby2_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment zpby1=zpby2_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment zpby1=zpby2_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] 647 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 467 allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 467 allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 587 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 407 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 407 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 627 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 427 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 627 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 427 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment aby=zpby1_plus_cowo1_staridx_zpby2
Uplift attempt [] missing fragment aby=zpby1_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment aby=zpby1_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment aby=zpby1_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 507 allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 627 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 447 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 467 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment xby=zpby1_plus_cowo1_staridx_zpby2
Uplift attempt [] missing fragment xby=zpby1_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment xby=zpby1_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment xby=zpby1_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 507 allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 627 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 447 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] 467 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment yby=zpby1_plus_cowo1_staridx_zpby2
Uplift attempt [] missing fragment yby=zpby1_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment yby=zpby1_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment yby=zpby1_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=zpby2_plus_zpby3
Uplift attempt [] missing fragment cowo1_staridx_aby=zpby1_plus_zpby2
Uplift attempt [] missing fragment cowo1_staridx_xby=zpby1_plus_zpby2
Uplift attempt [] missing fragment cowo1_staridx_yby=zpby1_plus_zpby2
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=zpby2_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_aby=zpby1_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_xby=zpby1_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_yby=zpby1_plus_aby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=zpby2_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_aby=zpby1_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_xby=zpby1_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_yby=zpby1_plus_xby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=zpby2_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_aby=zpby1_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_xby=zpby1_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_yby=zpby1_plus_yby
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] 467 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] 467 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment zpby1=aby_plus_cowo1_staridx_zpby2
Uplift attempt [] missing fragment zpby1=aby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment zpby1=aby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment zpby1=aby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] 407 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] 407 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment aby=aby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment aby=aby_plus_cowo1_staridx_aby
Uplift attempt [] 347 allocation: reg byte x [ i#2 i#1 ] reg byte alu [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
Uplift attempt [] missing fragment aby=aby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] 447 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment xby=aby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment xby=aby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment xby=aby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment xby=aby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] 447 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment yby=aby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment yby=aby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment yby=aby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment yby=aby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=aby_plus_zpby2
Uplift attempt [] missing fragment cowo1_staridx_aby=aby_plus_zpby1
Uplift attempt [] missing fragment cowo1_staridx_xby=aby_plus_zpby1
Uplift attempt [] missing fragment cowo1_staridx_yby=aby_plus_zpby1
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=aby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_aby=aby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_xby=aby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_yby=aby_plus_aby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=aby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_aby=aby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_xby=aby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_yby=aby_plus_xby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=aby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_aby=aby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_xby=aby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_yby=aby_plus_yby
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] 487 allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] 467 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 707 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment zpby1=xby_plus_cowo1_staridx_zpby2
Uplift attempt [] missing fragment zpby1=xby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment zpby1=xby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment zpby1=xby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] 427 allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] 407 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 647 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment aby=xby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment aby=xby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment aby=xby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment aby=xby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] 467 allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] 447 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment xby=xby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment xby=xby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment xby=xby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment xby=xby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment yby=xby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment yby=xby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment yby=xby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment yby=xby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=xby_plus_zpby2
Uplift attempt [] missing fragment cowo1_staridx_aby=xby_plus_zpby1
Uplift attempt [] missing fragment cowo1_staridx_xby=xby_plus_zpby1
Uplift attempt [] missing fragment cowo1_staridx_yby=xby_plus_zpby1
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=xby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_aby=xby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_xby=xby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_yby=xby_plus_aby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=xby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_aby=xby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_xby=xby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_yby=xby_plus_xby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=xby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_aby=xby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_xby=xby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_yby=xby_plus_yby
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] 487 allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] 467 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 707 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] zp byte:5 [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment zpby1=yby_plus_cowo1_staridx_zpby2
Uplift attempt [] missing fragment zpby1=yby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment zpby1=yby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment zpby1=yby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] 627 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] 427 allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 607 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] 407 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 647 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte a [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment aby=yby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment aby=yby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment aby=yby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment aby=yby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 647 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte x [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment xby=yby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment xby=yby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment xby=yby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment xby=yby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] 667 allocation: zp byte:2 [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] 467 allocation: reg byte x [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] zp byte:4 [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 647 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] 447 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte a [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 687 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte x [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $3 ] reg byte y [ $4 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment yby=yby_plus_cowo1_staridx_zpby1
Uplift attempt [] missing fragment yby=yby_plus_cowo1_staridx_aby
Uplift attempt [] missing fragment yby=yby_plus_cowo1_staridx_xby
Uplift attempt [] missing fragment yby=yby_plus_cowo1_staridx_yby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=yby_plus_zpby2
Uplift attempt [] missing fragment cowo1_staridx_aby=yby_plus_zpby1
Uplift attempt [] missing fragment cowo1_staridx_xby=yby_plus_zpby1
Uplift attempt [] missing fragment cowo1_staridx_yby=yby_plus_zpby1
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=yby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_aby=yby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_xby=yby_plus_aby
Uplift attempt [] missing fragment cowo1_staridx_yby=yby_plus_aby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=yby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_aby=yby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_xby=yby_plus_xby
Uplift attempt [] missing fragment cowo1_staridx_yby=yby_plus_xby
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=yby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_aby=yby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_xby=yby_plus_yby
Uplift attempt [] missing fragment cowo1_staridx_yby=yby_plus_yby
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplifting [] best 347 combination reg byte x [ i#2 i#1 ] reg byte alu [ $3 ] reg byte a [ $4 ] reg byte a [ $1 ]
MISSING FRAGMENTS
zpby1=zpby2_plus_cowo1_staridx_zpby3
zpby1=zpby2_plus_cowo1_staridx_aby
zpby1=zpby2_plus_cowo1_staridx_xby
zpby1=zpby2_plus_cowo1_staridx_yby
aby=zpby1_plus_cowo1_staridx_zpby2
aby=zpby1_plus_cowo1_staridx_aby
aby=zpby1_plus_cowo1_staridx_xby
aby=zpby1_plus_cowo1_staridx_yby
xby=zpby1_plus_cowo1_staridx_zpby2
xby=zpby1_plus_cowo1_staridx_aby
xby=zpby1_plus_cowo1_staridx_xby
xby=zpby1_plus_cowo1_staridx_yby
yby=zpby1_plus_cowo1_staridx_zpby2
yby=zpby1_plus_cowo1_staridx_aby
yby=zpby1_plus_cowo1_staridx_xby
yby=zpby1_plus_cowo1_staridx_yby
cowo1_staridx_zpby1=zpby2_plus_zpby3
cowo1_staridx_aby=zpby1_plus_zpby2
cowo1_staridx_xby=zpby1_plus_zpby2
cowo1_staridx_yby=zpby1_plus_zpby2
cowo1_staridx_zpby1=zpby2_plus_aby
cowo1_staridx_aby=zpby1_plus_aby
cowo1_staridx_xby=zpby1_plus_aby
cowo1_staridx_yby=zpby1_plus_aby
cowo1_staridx_zpby1=zpby2_plus_xby
cowo1_staridx_aby=zpby1_plus_xby
cowo1_staridx_xby=zpby1_plus_xby
cowo1_staridx_yby=zpby1_plus_xby
cowo1_staridx_zpby1=zpby2_plus_yby
cowo1_staridx_aby=zpby1_plus_yby
cowo1_staridx_xby=zpby1_plus_yby
cowo1_staridx_yby=zpby1_plus_yby
zpby1=aby_plus_cowo1_staridx_zpby2
zpby1=aby_plus_cowo1_staridx_aby
zpby1=aby_plus_cowo1_staridx_xby
zpby1=aby_plus_cowo1_staridx_yby
aby=aby_plus_cowo1_staridx_zpby1
aby=aby_plus_cowo1_staridx_aby
aby=aby_plus_cowo1_staridx_yby
xby=aby_plus_cowo1_staridx_zpby1
xby=aby_plus_cowo1_staridx_aby
xby=aby_plus_cowo1_staridx_xby
xby=aby_plus_cowo1_staridx_yby
yby=aby_plus_cowo1_staridx_zpby1
yby=aby_plus_cowo1_staridx_aby
yby=aby_plus_cowo1_staridx_xby
yby=aby_plus_cowo1_staridx_yby
cowo1_staridx_zpby1=aby_plus_zpby2
cowo1_staridx_aby=aby_plus_zpby1
cowo1_staridx_xby=aby_plus_zpby1
cowo1_staridx_yby=aby_plus_zpby1
cowo1_staridx_zpby1=aby_plus_aby
cowo1_staridx_aby=aby_plus_aby
cowo1_staridx_xby=aby_plus_aby
cowo1_staridx_yby=aby_plus_aby
cowo1_staridx_zpby1=aby_plus_xby
cowo1_staridx_aby=aby_plus_xby
cowo1_staridx_xby=aby_plus_xby
cowo1_staridx_yby=aby_plus_xby
cowo1_staridx_zpby1=aby_plus_yby
cowo1_staridx_aby=aby_plus_yby
cowo1_staridx_xby=aby_plus_yby
cowo1_staridx_yby=aby_plus_yby
zpby1=xby_plus_cowo1_staridx_zpby2
zpby1=xby_plus_cowo1_staridx_aby
zpby1=xby_plus_cowo1_staridx_xby
zpby1=xby_plus_cowo1_staridx_yby
aby=xby_plus_cowo1_staridx_zpby1
aby=xby_plus_cowo1_staridx_aby
aby=xby_plus_cowo1_staridx_xby
aby=xby_plus_cowo1_staridx_yby
xby=xby_plus_cowo1_staridx_zpby1
xby=xby_plus_cowo1_staridx_aby
xby=xby_plus_cowo1_staridx_xby
xby=xby_plus_cowo1_staridx_yby
yby=xby_plus_cowo1_staridx_zpby1
yby=xby_plus_cowo1_staridx_aby
yby=xby_plus_cowo1_staridx_xby
yby=xby_plus_cowo1_staridx_yby
cowo1_staridx_zpby1=xby_plus_zpby2
cowo1_staridx_aby=xby_plus_zpby1
cowo1_staridx_xby=xby_plus_zpby1
cowo1_staridx_yby=xby_plus_zpby1
cowo1_staridx_zpby1=xby_plus_aby
cowo1_staridx_aby=xby_plus_aby
cowo1_staridx_xby=xby_plus_aby
cowo1_staridx_yby=xby_plus_aby
cowo1_staridx_zpby1=xby_plus_xby
cowo1_staridx_aby=xby_plus_xby
cowo1_staridx_xby=xby_plus_xby
cowo1_staridx_yby=xby_plus_xby
cowo1_staridx_zpby1=xby_plus_yby
cowo1_staridx_aby=xby_plus_yby
cowo1_staridx_xby=xby_plus_yby
cowo1_staridx_yby=xby_plus_yby
zpby1=yby_plus_cowo1_staridx_zpby2
zpby1=yby_plus_cowo1_staridx_aby
zpby1=yby_plus_cowo1_staridx_xby
zpby1=yby_plus_cowo1_staridx_yby
aby=yby_plus_cowo1_staridx_zpby1
aby=yby_plus_cowo1_staridx_aby
aby=yby_plus_cowo1_staridx_xby
aby=yby_plus_cowo1_staridx_yby
xby=yby_plus_cowo1_staridx_zpby1
xby=yby_plus_cowo1_staridx_aby
xby=yby_plus_cowo1_staridx_xby
xby=yby_plus_cowo1_staridx_yby
yby=yby_plus_cowo1_staridx_zpby1
yby=yby_plus_cowo1_staridx_aby
yby=yby_plus_cowo1_staridx_xby
yby=yby_plus_cowo1_staridx_yby
cowo1_staridx_zpby1=yby_plus_zpby2
cowo1_staridx_aby=yby_plus_zpby1
cowo1_staridx_xby=yby_plus_zpby1
cowo1_staridx_yby=yby_plus_zpby1
cowo1_staridx_zpby1=yby_plus_aby
cowo1_staridx_aby=yby_plus_aby
cowo1_staridx_xby=yby_plus_aby
cowo1_staridx_yby=yby_plus_aby
cowo1_staridx_zpby1=yby_plus_xby
cowo1_staridx_aby=yby_plus_xby
cowo1_staridx_xby=yby_plus_xby
cowo1_staridx_yby=yby_plus_xby
cowo1_staridx_zpby1=yby_plus_yby
cowo1_staridx_aby=yby_plus_yby
cowo1_staridx_xby=yby_plus_yby
cowo1_staridx_yby=yby_plus_yby
Uplifting [] best 407 combination reg byte x [ i#2 i#1 ] reg byte a [ $3 ] reg byte a [ $4 ] zp byte:3 [ $1 ]
Re-allocated ZP register from zp byte:3 to zp byte:2
Removing instruction jmp B1
Removing instruction jmp BEND
Succesful ASM optimization Pass5NextJumpElimination
@ -1266,13 +778,14 @@ B1_from_B1:
//SEG6 [2] phi (byte) i#2 = (byte) i#1 -- register_copy
//SEG7 @1
B1:
//SEG8 [3] (byte~) $1 ← (word) 4352 *idx (byte) i#2 [ i#2 $1 ] -- aby=cowo1_staridx_xby
//SEG8 [3] (byte~) $1 ← (word) 4352 *idx (byte) i#2 [ i#2 $1 ] -- zpby1=cowo1_staridx_xby
lda 4352,x
//SEG9 [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ]
// [4] $3 ← 4353 *idx i#2 // ALU
//SEG10 [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] -- aby=aby_plus_cowo1_staridx_xby
sta 2
//SEG9 [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] -- aby=cowo1_staridx_xby
lda 4353,x
//SEG10 [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] -- aby=zpby1_plus_aby
clc
adc 4353,x
adc 2
//SEG11 [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] -- cowo1_staridx_xby=aby
sta 4354,x
//SEG12 [7] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] -- xby=xby_plus_1
@ -1303,13 +816,14 @@ B1_from_B1:
//SEG6 [2] phi (byte) i#2 = (byte) i#1 -- register_copy
//SEG7 @1
B1:
//SEG8 [3] (byte~) $1 ← (word) 4352 *idx (byte) i#2 [ i#2 $1 ] -- aby=cowo1_staridx_xby
//SEG8 [3] (byte~) $1 ← (word) 4352 *idx (byte) i#2 [ i#2 $1 ] -- zpby1=cowo1_staridx_xby
lda 4352,x
//SEG9 [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ]
// [4] $3 ← 4353 *idx i#2 // ALU
//SEG10 [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] -- aby=aby_plus_cowo1_staridx_xby
sta 2
//SEG9 [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] -- aby=cowo1_staridx_xby
lda 4353,x
//SEG10 [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] -- aby=zpby1_plus_aby
clc
adc 4353,x
adc 2
//SEG11 [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] -- cowo1_staridx_xby=aby
sta 4354,x
//SEG12 [7] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] -- xby=xby_plus_1
@ -1321,8 +835,8 @@ B1:
BEND:
FINAL SYMBOL TABLE
(byte~) $1 reg byte a 11.0
(byte~) $3 reg byte alu 22.0
(byte~) $1 zp byte:2 11.0
(byte~) $3 reg byte a 22.0
(byte~) $4 reg byte a 22.0
(label) @1
(label) @BEGIN
@ -1333,8 +847,8 @@ FINAL SYMBOL TABLE
(byte) i#2 reg byte x 11.0
reg byte x [ i#2 i#1 ]
reg byte a [ $1 ]
reg byte alu [ $3 ]
zp byte:2 [ $1 ]
reg byte a [ $3 ]
reg byte a [ $4 ]
FINAL CODE
@ -1355,13 +869,14 @@ B1_from_B1:
//SEG6 [2] phi (byte) i#2 = (byte) i#1 -- register_copy
//SEG7 @1
B1:
//SEG8 [3] (byte~) $1 ← (word) 4352 *idx (byte) i#2 [ i#2 $1 ] -- aby=cowo1_staridx_xby
//SEG8 [3] (byte~) $1 ← (word) 4352 *idx (byte) i#2 [ i#2 $1 ] -- zpby1=cowo1_staridx_xby
lda 4352,x
//SEG9 [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ]
// [4] $3 ← 4353 *idx i#2 // ALU
//SEG10 [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] -- aby=aby_plus_cowo1_staridx_xby
sta 2
//SEG9 [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] -- aby=cowo1_staridx_xby
lda 4353,x
//SEG10 [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] -- aby=zpby1_plus_aby
clc
adc 4353,x
adc 2
//SEG11 [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] -- cowo1_staridx_xby=aby
sta 4354,x
//SEG12 [7] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] -- xby=xby_plus_1

View File

@ -1,5 +1,5 @@
(byte~) $1 reg byte a 11.0
(byte~) $3 reg byte alu 22.0
(byte~) $1 zp byte:2 11.0
(byte~) $3 reg byte a 22.0
(byte~) $4 reg byte a 22.0
(label) @1
(label) @BEGIN
@ -10,6 +10,6 @@
(byte) i#2 reg byte x 11.0
reg byte x [ i#2 i#1 ]
reg byte a [ $1 ]
reg byte alu [ $3 ]
zp byte:2 [ $1 ]
reg byte a [ $3 ]
reg byte a [ $4 ]

File diff suppressed because it is too large Load Diff

View File

@ -429,6 +429,10 @@ B3_from_B2:
//SEG18 [2] phi (byte) s#4 = (byte) s#1 -- register_copy
jmp B3
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ i#2 i#1 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ s#2 s#4 s#1 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [] 49.5: zp byte:3 [ s#2 s#4 s#1 ] 27.5: zp byte:2 [ i#2 i#1 ]
@ -436,27 +440,18 @@ Uplift attempt [] 565 allocation: zp byte:3 [ s#2 s#4 s#1 ] zp byte:2 [ i#2 i#1
Uplift attempt [] clobber allocation: reg byte a [ s#2 s#4 s#1 ] zp byte:2 [ i#2 i#1 ]
Uplift attempt [] 515 allocation: reg byte x [ s#2 s#4 s#1 ] zp byte:2 [ i#2 i#1 ]
Uplift attempt [] 515 allocation: reg byte y [ s#2 s#4 s#1 ] zp byte:2 [ i#2 i#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:3 [ s#2 s#4 s#1 ] reg byte a [ i#2 i#1 ]
Uplift attempt [] clobber allocation: reg byte a [ s#2 s#4 s#1 ] reg byte a [ i#2 i#1 ]
Uplift attempt [] clobber allocation: reg byte x [ s#2 s#4 s#1 ] reg byte a [ i#2 i#1 ]
Uplift attempt [] clobber allocation: reg byte y [ s#2 s#4 s#1 ] reg byte a [ i#2 i#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 455 allocation: zp byte:3 [ s#2 s#4 s#1 ] reg byte x [ i#2 i#1 ]
Uplift attempt [] 405 allocation: reg byte a [ s#2 s#4 s#1 ] reg byte x [ i#2 i#1 ]
Uplift attempt [] clobber allocation: reg byte x [ s#2 s#4 s#1 ] reg byte x [ i#2 i#1 ]
Uplift attempt [] 445 allocation: reg byte y [ s#2 s#4 s#1 ] reg byte x [ i#2 i#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 455 allocation: zp byte:3 [ s#2 s#4 s#1 ] reg byte y [ i#2 i#1 ]
Uplift attempt [] 405 allocation: reg byte a [ s#2 s#4 s#1 ] reg byte y [ i#2 i#1 ]
Uplift attempt [] 445 allocation: reg byte x [ s#2 s#4 s#1 ] reg byte y [ i#2 i#1 ]
Uplift attempt [] clobber allocation: reg byte y [ s#2 s#4 s#1 ] reg byte y [ i#2 i#1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplifting [] best 405 combination reg byte a [ s#2 s#4 s#1 ] reg byte x [ i#2 i#1 ]
Removing instruction jmp B1
Removing instruction jmp B3

View File

@ -793,6 +793,10 @@ nest__Breturn:
//SEG25 [10] return [ main::i#2 ]
rts
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ main::i#2 main::i#1 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ nest::j#2 nest::j#1 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [nest] 303: zp byte:3 [ nest::j#2 nest::j#1 ]
Uplift Scope [main] 19.64: zp byte:2 [ main::i#2 main::i#1 ]
@ -802,13 +806,11 @@ Uplift attempt [nest] 3506 allocation: zp byte:3 [ nest::j#2 nest::j#1 ]
Uplift attempt [nest] 2706 allocation: reg byte a [ nest::j#2 nest::j#1 ]
Uplift attempt [nest] 2506 allocation: reg byte x [ nest::j#2 nest::j#1 ]
Uplift attempt [nest] 2506 allocation: reg byte y [ nest::j#2 nest::j#1 ]
Uplift attempt [nest] alu not applicable
Uplifting [nest] best 2506 combination reg byte x [ nest::j#2 nest::j#1 ]
Uplift attempt [main] 2506 allocation: zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] 2456 allocation: reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] 2436 allocation: reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplifting [main] best 2436 combination reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [] 2436 allocation:
Uplifting [] best 2436 combination

View File

@ -1989,6 +1989,14 @@ nest2__Breturn:
//SEG61 [24] return [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 ]
rts
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ main::i#2 main::i#1 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ main::j#2 main::j#1 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:4 [ nest1::i#2 nest1::i#1 ] : zp byte:4 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:5 [ nest1::j#2 nest1::j#1 ] : zp byte:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:6 [ nest2::i#2 nest2::i#1 ] : zp byte:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:7 [ nest2::j#2 nest2::j#1 ] : zp byte:7 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [nest2] 3,000,003: zp byte:7 [ nest2::j#2 nest2::j#1 ] 190,001.9: zp byte:6 [ nest2::i#2 nest2::i#1 ]
Uplift Scope [nest1] 17,001.7: zp byte:5 [ nest1::j#2 nest1::j#1 ] 1,655.5: zp byte:4 [ nest1::i#2 nest1::i#1 ]
@ -1999,79 +2007,52 @@ Uplift attempt [nest2] 34313122 allocation: zp byte:7 [ nest2::j#2 nest2::j#1 ]
Uplift attempt [nest2] 26313122 allocation: reg byte a [ nest2::j#2 nest2::j#1 ] zp byte:6 [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 24313122 allocation: reg byte x [ nest2::j#2 nest2::j#1 ] zp byte:6 [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 24313122 allocation: reg byte y [ nest2::j#2 nest2::j#1 ] zp byte:6 [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] clobber allocation: zp byte:7 [ nest2::j#2 nest2::j#1 ] reg byte a [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] clobber allocation: reg byte a [ nest2::j#2 nest2::j#1 ] reg byte a [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 23813122 allocation: reg byte x [ nest2::j#2 nest2::j#1 ] reg byte a [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 23813122 allocation: reg byte y [ nest2::j#2 nest2::j#1 ] reg byte a [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] 33613122 allocation: zp byte:7 [ nest2::j#2 nest2::j#1 ] reg byte x [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 25613122 allocation: reg byte a [ nest2::j#2 nest2::j#1 ] reg byte x [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] clobber allocation: reg byte x [ nest2::j#2 nest2::j#1 ] reg byte x [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 23613122 allocation: reg byte y [ nest2::j#2 nest2::j#1 ] reg byte x [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] 33613122 allocation: zp byte:7 [ nest2::j#2 nest2::j#1 ] reg byte y [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 25613122 allocation: reg byte a [ nest2::j#2 nest2::j#1 ] reg byte y [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] 23613122 allocation: reg byte x [ nest2::j#2 nest2::j#1 ] reg byte y [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] clobber allocation: reg byte y [ nest2::j#2 nest2::j#1 ] reg byte y [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] alu not applicable
Uplift attempt [nest2] alu not applicable
Uplifting [nest2] best 23613122 combination reg byte y [ nest2::j#2 nest2::j#1 ] reg byte x [ nest2::i#2 nest2::i#1 ]
Uplift attempt [nest1] 23613122 allocation: zp byte:5 [ nest1::j#2 nest1::j#1 ] zp byte:4 [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] 23563122 allocation: reg byte a [ nest1::j#2 nest1::j#1 ] zp byte:4 [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte x [ nest1::j#2 nest1::j#1 ] zp byte:4 [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte y [ nest1::j#2 nest1::j#1 ] zp byte:4 [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] clobber allocation: zp byte:5 [ nest1::j#2 nest1::j#1 ] reg byte a [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte a [ nest1::j#2 nest1::j#1 ] reg byte a [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte x [ nest1::j#2 nest1::j#1 ] reg byte a [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte y [ nest1::j#2 nest1::j#1 ] reg byte a [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] clobber allocation: zp byte:5 [ nest1::j#2 nest1::j#1 ] reg byte x [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte a [ nest1::j#2 nest1::j#1 ] reg byte x [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte x [ nest1::j#2 nest1::j#1 ] reg byte x [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte y [ nest1::j#2 nest1::j#1 ] reg byte x [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] clobber allocation: zp byte:5 [ nest1::j#2 nest1::j#1 ] reg byte y [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte a [ nest1::j#2 nest1::j#1 ] reg byte y [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte x [ nest1::j#2 nest1::j#1 ] reg byte y [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] clobber allocation: reg byte y [ nest1::j#2 nest1::j#1 ] reg byte y [ nest1::i#2 nest1::i#1 ]
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] alu not applicable
Uplift attempt [nest1] alu not applicable
Uplifting [nest1] best 23563122 combination reg byte a [ nest1::j#2 nest1::j#1 ] zp byte:4 [ nest1::i#2 nest1::i#1 ]
Uplift attempt [main] 23563122 allocation: zp byte:3 [ main::j#2 main::j#1 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte a [ main::j#2 main::j#1 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::j#2 main::j#1 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::j#2 main::j#1 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] clobber allocation: zp byte:3 [ main::j#2 main::j#1 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte a [ main::j#2 main::j#1 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::j#2 main::j#1 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::j#2 main::j#1 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] clobber allocation: zp byte:3 [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte a [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] clobber allocation: zp byte:3 [ main::j#2 main::j#1 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte a [ main::j#2 main::j#1 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::j#2 main::j#1 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::j#2 main::j#1 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplifting [main] best 23563122 combination zp byte:3 [ main::j#2 main::j#1 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [] 23563122 allocation:
Uplifting [] best 23563122 combination

View File

@ -591,6 +591,10 @@ main__B1_from_B4:
//SEG23 [1] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy
jmp main__B1
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ main::i#2 main::i#1 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ main::s#3 main::s#1 main::s#2 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [main] 55: zp byte:3 [ main::s#3 main::s#1 main::s#2 ] 44: zp byte:2 [ main::i#2 main::i#1 ]
Uplift Scope []
@ -599,27 +603,18 @@ Uplift attempt [main] 570 allocation: zp byte:3 [ main::s#3 main::s#1 main::s#2
Uplift attempt [main] clobber allocation: reg byte a [ main::s#3 main::s#1 main::s#2 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] 480 allocation: reg byte x [ main::s#3 main::s#1 main::s#2 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] 480 allocation: reg byte y [ main::s#3 main::s#1 main::s#2 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] 490 allocation: zp byte:3 [ main::s#3 main::s#1 main::s#2 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte a [ main::s#3 main::s#1 main::s#2 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] 400 allocation: reg byte x [ main::s#3 main::s#1 main::s#2 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] 400 allocation: reg byte y [ main::s#3 main::s#1 main::s#2 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] 470 allocation: zp byte:3 [ main::s#3 main::s#1 main::s#2 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] 420 allocation: reg byte a [ main::s#3 main::s#1 main::s#2 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::s#3 main::s#1 main::s#2 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] 380 allocation: reg byte y [ main::s#3 main::s#1 main::s#2 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] 470 allocation: zp byte:3 [ main::s#3 main::s#1 main::s#2 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] 420 allocation: reg byte a [ main::s#3 main::s#1 main::s#2 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] 380 allocation: reg byte x [ main::s#3 main::s#1 main::s#2 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::s#3 main::s#1 main::s#2 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplift attempt [main] alu not applicable
Uplifting [main] best 380 combination reg byte y [ main::s#3 main::s#1 main::s#2 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [] 380 allocation:
Uplifting [] best 380 combination

View File

@ -340,40 +340,28 @@ B1:
//SEG10 @END
BEND:
Statement [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp byte:2 [ i#2 i#1 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ i#2 i#1 ] : zp byte:2 , reg byte x , reg byte y ,
Potential registers zp byte:3 [ $1 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [] 31.17: zp byte:2 [ i#2 i#1 ] 22: zp byte:3 [ $1 ]
Uplift attempt [] 475 allocation: zp byte:2 [ i#2 i#1 ] zp byte:3 [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] zp byte:3 [ $1 ]
Uplift attempt [] 345 allocation: reg byte x [ i#2 i#1 ] zp byte:3 [ $1 ]
Uplift attempt [] 345 allocation: reg byte y [ i#2 i#1 ] zp byte:3 [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 415 allocation: zp byte:2 [ i#2 i#1 ] reg byte a [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte a [ $1 ]
Uplift attempt [] 285 allocation: reg byte x [ i#2 i#1 ] reg byte a [ $1 ]
Uplift attempt [] 285 allocation: reg byte y [ i#2 i#1 ] reg byte a [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 455 allocation: zp byte:2 [ i#2 i#1 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte x [ $1 ]
Uplift attempt [] clobber allocation: reg byte x [ i#2 i#1 ] reg byte x [ $1 ]
Uplift attempt [] 325 allocation: reg byte y [ i#2 i#1 ] reg byte x [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 455 allocation: zp byte:2 [ i#2 i#1 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte a [ i#2 i#1 ] reg byte y [ $1 ]
Uplift attempt [] 325 allocation: reg byte x [ i#2 i#1 ] reg byte y [ $1 ]
Uplift attempt [] clobber allocation: reg byte y [ i#2 i#1 ] reg byte y [ $1 ]
Uplift attempt [] alu not applicable
Uplift attempt [] missing fragment cowo1_staridx_zpby1=zpby1_plus_coby2
Uplift attempt [] missing fragment cowo1_staridx_aby=aby_plus_coby2
Uplift attempt [] missing fragment cowo1_staridx_xby=xby_plus_coby2
Uplift attempt [] missing fragment cowo1_staridx_yby=yby_plus_coby2
Uplift attempt [] alu not applicable
Uplifting [] best 285 combination reg byte x [ i#2 i#1 ] reg byte a [ $1 ]
MISSING FRAGMENTS
cowo1_staridx_zpby1=zpby1_plus_coby2
cowo1_staridx_aby=aby_plus_coby2
cowo1_staridx_xby=xby_plus_coby2
cowo1_staridx_yby=yby_plus_coby2
Removing instruction jmp B1
Removing instruction jmp BEND
Succesful ASM optimization Pass5NextJumpElimination

View File

@ -58,6 +58,7 @@ rvaluevar__B1_from_B2:
jmp rvaluevar__B1
rvalue:
lda 1024
lda 1025
rvalue__B1_from_rvalue:
ldx #2
rvalue__B1:

View File

@ -2066,6 +2066,28 @@ lvalue__B1_from_B2:
//SEG70 [27] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 -- register_copy
jmp lvalue__B1
Statement [9] *((byte*) lvaluevar::screen#2) ← (byte) 4 [ lvaluevar::i#2 lvaluevar::screen#2 ] always clobbers reg byte y reg byte a
Removing always clobbered register reg byte y as potential for zp byte:2 [ lvaluevar::i#2 lvaluevar::i#1 ]
Removing always clobbered register reg byte a as potential for zp byte:2 [ lvaluevar::i#2 lvaluevar::i#1 ]
Statement [15] (byte) rvaluevar::b#0 ← * (byte*) rvaluevar::screen#2 [ rvaluevar::i#2 rvaluevar::screen#2 ] always clobbers reg byte a reg byte y
Removing always clobbered register reg byte a as potential for zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ]
Removing always clobbered register reg byte y as potential for zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ]
Statement [25] *((word) 1024) ← (byte) 1 [ ] always clobbers reg byte a
Statement [26] *((word) 1025) ← (byte) 2 [ ] always clobbers reg byte a
Statement [30] *((word) 1024 + (byte) lvalue::i#2) ← (byte) 3 [ lvalue::i#2 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp byte:9 [ lvalue::i#2 lvalue::i#1 ]
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ lvaluevar::i#2 lvaluevar::i#1 ] : zp byte:2 , reg byte x ,
Potential registers zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] : zp ptr byte:3 ,
Potential registers zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] : zp byte:5 , reg byte x ,
Potential registers zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] : zp ptr byte:6 ,
Potential registers zp byte:8 [ rvalue::i#2 rvalue::i#1 ] : zp byte:8 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:9 [ lvalue::i#2 lvalue::i#1 ] : zp byte:9 , reg byte x , reg byte y ,
Potential registers zp byte:10 [ rvaluevar::b#0 ] : zp byte:10 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:11 [ rvalue::b#0 ] : zp byte:11 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:12 [ rvalue::b#1 ] : zp byte:12 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:13 [ rvalue::b#2 ] : zp byte:13 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [rvalue] ∞: zp byte:11 [ rvalue::b#0 ] ∞: zp byte:12 [ rvalue::b#1 ] ∞: zp byte:13 [ rvalue::b#2 ] 36.67: zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift Scope [rvaluevar] ∞: zp byte:10 [ rvaluevar::b#0 ] 30.25: zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] 22: zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
@ -2078,670 +2100,279 @@ Uplift attempt [rvalue] 2061 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [
Uplift attempt [rvalue] 2058 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2058 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2058 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2058 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2058 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2058 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2055 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2054 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2051 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2051 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2051 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2031 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2028 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2028 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2028 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2028 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2028 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2028 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2025 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2024 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2021 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2021 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2021 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2051 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2048 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2048 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2048 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2048 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2048 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2048 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2044 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2041 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2041 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2041 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2051 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2048 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2048 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2048 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2048 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2048 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2048 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2045 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 2044 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2041 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2041 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 2041 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] zp byte:8 [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte a [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1941 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1938 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1938 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1938 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1938 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1938 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1938 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1934 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1931 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1931 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1931 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1911 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1904 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1911 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1904 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1941 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1938 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1938 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1938 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1938 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1938 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1938 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1935 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1934 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1931 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1931 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1931 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] zp byte:13 [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1911 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1904 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1911 allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1908 allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1908 allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1905 allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] 1904 allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] 1901 allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte x [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] zp byte:12 [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte x [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte y [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] clobber allocation: zp byte:11 [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte x [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] clobber allocation: reg byte y [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte y [ rvalue::b#2 ] reg byte y [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplift attempt [rvalue] alu not applicable
Uplifting [rvalue] best 1901 combination reg byte a [ rvalue::b#0 ] reg byte alu [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvaluevar] 1901 allocation: zp byte:10 [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1871 allocation: reg byte a [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1891 allocation: reg byte x [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1891 allocation: reg byte y [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] clobber allocation: zp byte:10 [ rvaluevar::b#0 ] reg byte a [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte a [ rvaluevar::b#0 ] reg byte a [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte x [ rvaluevar::b#0 ] reg byte a [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte y [ rvaluevar::b#0 ] reg byte a [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] 1811 allocation: zp byte:10 [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1781 allocation: reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplifting [rvalue] best 1905 combination reg byte a [ rvalue::b#0 ] reg byte a [ rvalue::b#1 ] reg byte a [ rvalue::b#2 ] reg byte x [ rvalue::i#2 rvalue::i#1 ]
Uplift attempt [rvaluevar] 1905 allocation: zp byte:10 [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1875 allocation: reg byte a [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1895 allocation: reg byte x [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1895 allocation: reg byte y [ rvaluevar::b#0 ] zp byte:5 [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1815 allocation: zp byte:10 [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1785 allocation: reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte x [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] 1801 allocation: reg byte y [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] clobber allocation: zp byte:10 [ rvaluevar::b#0 ] reg byte y [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte a [ rvaluevar::b#0 ] reg byte y [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte x [ rvaluevar::b#0 ] reg byte y [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] clobber allocation: reg byte y [ rvaluevar::b#0 ] reg byte y [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] alu not applicable
Uplift attempt [rvaluevar] alu not applicable
Uplifting [rvaluevar] best 1781 combination reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [lvaluevar] 1781 allocation: zp byte:2 [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvaluevar] clobber allocation: reg byte a [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvaluevar] 1691 allocation: reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvaluevar] clobber allocation: reg byte y [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvaluevar] alu not applicable
Uplifting [lvaluevar] best 1691 combination reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvalue] 1691 allocation: zp byte:9 [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [lvalue] clobber allocation: reg byte a [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [lvalue] 1571 allocation: reg byte x [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [lvalue] 1571 allocation: reg byte y [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [lvalue] alu not applicable
Uplifting [lvalue] best 1571 combination reg byte x [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [main] 1571 allocation:
Uplifting [main] best 1571 combination
Uplift attempt [] 1571 allocation:
Uplifting [] best 1571 combination
Uplift attempt [rvaluevar] 1805 allocation: reg byte y [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplifting [rvaluevar] best 1785 combination reg byte a [ rvaluevar::b#0 ] reg byte x [ rvaluevar::i#2 rvaluevar::i#1 ] zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ]
Uplift attempt [lvaluevar] 1785 allocation: zp byte:2 [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvaluevar] 1695 allocation: reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplifting [lvaluevar] best 1695 combination reg byte x [ lvaluevar::i#2 lvaluevar::i#1 ] zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ]
Uplift attempt [lvalue] 1695 allocation: zp byte:9 [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [lvalue] 1575 allocation: reg byte x [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [lvalue] 1575 allocation: reg byte y [ lvalue::i#2 lvalue::i#1 ]
Uplifting [lvalue] best 1575 combination reg byte x [ lvalue::i#2 lvalue::i#1 ]
Uplift attempt [main] 1575 allocation:
Uplifting [main] best 1575 combination
Uplift attempt [] 1575 allocation:
Uplifting [] best 1575 combination
Coalescing zero page register [ zp ptr byte:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] ] with [ zp ptr byte:6 [ rvaluevar::screen#2 rvaluevar::screen#1 ] ]
Re-allocated ZP register from zp ptr byte:3 to zp ptr byte:2
Removing instruction jmp BEND
@ -2864,8 +2495,8 @@ rvaluevar__B1_from_B2:
rvalue:
//SEG44 [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] -- aby=_star_cowo1
lda 1024
//SEG45 [19] (byte) rvalue::b#1 ← * (word) 1025 [ ]
// [19] rvalue::b#1 ← * 1025 // ALU
//SEG45 [19] (byte) rvalue::b#1 ← * (word) 1025 [ ] -- aby=_star_cowo1
lda 1025
//SEG46 [20] phi from rvalue to rvalue::@1
rvalue__B1_from_rvalue:
//SEG47 [20] phi (byte) rvalue::i#2 = (byte) 2 -- xby=coby1
@ -2956,7 +2587,7 @@ FINAL SYMBOL TABLE
(byte[1024]) rvalue::SCREEN
(byte) rvalue::b
(byte) rvalue::b#0 reg byte a Infinity
(byte) rvalue::b#1 reg byte alu Infinity
(byte) rvalue::b#1 reg byte a Infinity
(byte) rvalue::b#2 reg byte a Infinity
(byte) rvalue::i
(byte) rvalue::i#1 reg byte x 22.0
@ -2981,7 +2612,7 @@ reg byte x [ rvalue::i#2 rvalue::i#1 ]
reg byte x [ lvalue::i#2 lvalue::i#1 ]
reg byte a [ rvaluevar::b#0 ]
reg byte a [ rvalue::b#0 ]
reg byte alu [ rvalue::b#1 ]
reg byte a [ rvalue::b#1 ]
reg byte a [ rvalue::b#2 ]
FINAL CODE
@ -3090,8 +2721,8 @@ rvaluevar__B1_from_B2:
rvalue:
//SEG44 [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] -- aby=_star_cowo1
lda 1024
//SEG45 [19] (byte) rvalue::b#1 ← * (word) 1025 [ ]
// [19] rvalue::b#1 ← * 1025 // ALU
//SEG45 [19] (byte) rvalue::b#1 ← * (word) 1025 [ ] -- aby=_star_cowo1
lda 1025
//SEG46 [20] phi from rvalue to rvalue::@1
rvalue__B1_from_rvalue:
//SEG47 [20] phi (byte) rvalue::i#2 = (byte) 2 -- xby=coby1

View File

@ -31,7 +31,7 @@
(byte[1024]) rvalue::SCREEN
(byte) rvalue::b
(byte) rvalue::b#0 reg byte a Infinity
(byte) rvalue::b#1 reg byte alu Infinity
(byte) rvalue::b#1 reg byte a Infinity
(byte) rvalue::b#2 reg byte a Infinity
(byte) rvalue::i
(byte) rvalue::i#1 reg byte x 22.0
@ -56,5 +56,5 @@ reg byte x [ rvalue::i#2 rvalue::i#1 ]
reg byte x [ lvalue::i#2 lvalue::i#1 ]
reg byte a [ rvaluevar::b#0 ]
reg byte a [ rvalue::b#0 ]
reg byte alu [ rvalue::b#1 ]
reg byte a [ rvalue::b#1 ]
reg byte a [ rvalue::b#2 ]

View File

@ -0,0 +1,16 @@
BBEGIN:
jsr main
BEND:
main:
main__B1_from_main:
ldx #2
main__B1:
cpx #10
bcc main__B2
main__Breturn:
rts
main__B2:
lda 1024,x
inx
main__B1_from_B2:
jmp main__B1

View File

@ -0,0 +1,17 @@
@BEGIN: from
[0] call main param-assignment [ ]
to:@END
@END: from @BEGIN
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
[1] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ]
[2] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ]
to:main::@return
main::@return: from main::@1
[3] return [ ]
to:@RETURN
main::@2: from main::@1
[4] (byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2 [ main::i#2 ]
[5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ]
to:main::@1

View File

@ -0,0 +1,604 @@
// Test all types of pointers
main();
void main() {
// A constant pointer
byte[1024] SCREEN = $0400;
byte b;
// RValue constant array variable index
byte i=2;
while(i<10) {
b = SCREEN[i++];
}
}
Adding pre/post-modifier (byte) main::i ← ++ (byte) main::i
PROGRAM
(void~) $0 ← call main
proc (void()) main()
(byte[1024]) main::SCREEN ← (word) 1024
(byte) main::i ← (byte) 2
main::@1:
(boolean~) main::$0 ← (byte) main::i < (byte) 10
if((boolean~) main::$0) goto main::@2
goto main::@3
main::@2:
(byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i
(byte) main::b ← (byte~) main::$1
(byte) main::i ← ++ (byte) main::i
goto main::@1
main::@3:
main::@return:
return
endproc // main()
SYMBOLS
(void~) $0
(void()) main()
(boolean~) main::$0
(byte~) main::$1
(label) main::@1
(label) main::@2
(label) main::@3
(label) main::@return
(byte[1024]) main::SCREEN
(byte) main::b
(byte) main::i
INITIAL CONTROL FLOW GRAPH
@BEGIN: from
(void~) $0 ← call main
to:@1
main: from
(byte[1024]) main::SCREEN ← (word) 1024
(byte) main::i ← (byte) 2
to:main::@1
main::@1: from main main::@2
(boolean~) main::$0 ← (byte) main::i < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@4
main::@2: from main::@1 main::@5
(byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i
(byte) main::b ← (byte~) main::$1
(byte) main::i ← ++ (byte) main::i
to:main::@1
main::@4: from main::@1
to:main::@3
main::@3: from main::@4 main::@6
to:main::@return
main::@5: from
to:main::@2
main::@6: from
to:main::@3
main::@return: from main::@3
return
to:@RETURN
@1: from @BEGIN
to:@END
@END: from @1
Removing empty block main::@4
Removing empty block main::@3
Removing empty block main::@5
Removing empty block main::@6
Removing empty block @1
CONTROL FLOW GRAPH
@BEGIN: from
(void~) $0 ← call main
to:@END
main: from
(byte[1024]) main::SCREEN ← (word) 1024
(byte) main::i ← (byte) 2
to:main::@1
main::@1: from main main::@2
(boolean~) main::$0 ← (byte) main::i < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i
(byte) main::b ← (byte~) main::$1
(byte) main::i ← ++ (byte) main::i
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
@BEGIN: from
call main param-assignment
to:@2
@2: from @BEGIN
to:@END
main: from @BEGIN
(byte[1024]) main::SCREEN ← (word) 1024
(byte) main::i ← (byte) 2
to:main::@1
main::@1: from main main::@2
(boolean~) main::$0 ← (byte) main::i < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte~) main::$1 ← (byte[1024]) main::SCREEN *idx (byte) main::i
(byte) main::b ← (byte~) main::$1
(byte) main::i ← ++ (byte) main::i
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @2
Completing Phi functions...
Completing Phi functions...
CONTROL FLOW GRAPH SSA
@BEGIN: from
call main param-assignment
to:@2
@2: from @BEGIN
to:@END
main: from @BEGIN
(byte[1024]) main::SCREEN#0 ← (word) 1024
(byte) main::i#0 ← (byte) 2
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#2 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(boolean~) main::$0 ← (byte) main::i#2 < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[1024]) main::SCREEN#1 ← phi( main::@1/(byte[1024]) main::SCREEN#2 )
(byte~) main::$1 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#3
(byte) main::b#0 ← (byte~) main::$1
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @2
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
@BEGIN: from
call main param-assignment
to:@2
@2: from @BEGIN
to:@END
main: from @BEGIN
(byte[1024]) main::SCREEN#0 ← (word) 1024
(byte) main::i#0 ← (byte) 2
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#2 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(boolean~) main::$0 ← (byte) main::i#2 < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[1024]) main::SCREEN#1 ← phi( main::@1/(byte[1024]) main::SCREEN#2 )
(byte~) main::$1 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#3
(byte) main::b#0 ← (byte~) main::$1
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @2
Culled Empty Block (label) @2
Succesful SSA optimization Pass2CullEmptyBlocks
CONTROL FLOW GRAPH
@BEGIN: from
call main param-assignment
to:@END
main: from @BEGIN
(byte[1024]) main::SCREEN#0 ← (word) 1024
(byte) main::i#0 ← (byte) 2
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#2 ← phi( main/(byte[1024]) main::SCREEN#0 main::@2/(byte[1024]) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(boolean~) main::$0 ← (byte) main::i#2 < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[1024]) main::SCREEN#1 ← phi( main::@1/(byte[1024]) main::SCREEN#2 )
(byte~) main::$1 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#3
(byte) main::b#0 ← (byte~) main::$1
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
Constant (byte[1024]) main::SCREEN#0 (word) 1024
Constant (byte) main::i#0 (byte) 2
Succesful SSA optimization Pass2ConstantPropagation
CONTROL FLOW GRAPH
@BEGIN: from
call main param-assignment
to:@END
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#2 ← phi( main/(word) 1024 main::@2/(byte[1024]) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 )
(boolean~) main::$0 ← (byte) main::i#2 < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 )
(byte[1024]) main::SCREEN#1 ← phi( main::@1/(byte[1024]) main::SCREEN#2 )
(byte~) main::$1 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#3
(byte) main::b#0 ← (byte~) main::$1
(byte) main::i#1 ← ++ (byte) main::i#3
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
Alias (byte[1024]) main::SCREEN#1 = (byte[1024]) main::SCREEN#2
Alias (byte) main::i#2 = (byte) main::i#3
Alias (byte) main::b#0 = (byte~) main::$1
Succesful SSA optimization Pass2AliasElimination
CONTROL FLOW GRAPH
@BEGIN: from
call main param-assignment
to:@END
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#1 ← phi( main/(word) 1024 main::@2/(byte[1024]) main::SCREEN#1 )
(byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 )
(boolean~) main::$0 ← (byte) main::i#2 < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::b#0 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#2
(byte) main::i#1 ← ++ (byte) main::i#2
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
Self Phi Eliminated (byte[1024]) main::SCREEN#1
Succesful SSA optimization Pass2SelfPhiElimination
CONTROL FLOW GRAPH
@BEGIN: from
call main param-assignment
to:@END
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#1 ← phi( main/(word) 1024 )
(byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 )
(boolean~) main::$0 ← (byte) main::i#2 < (byte) 10
if((boolean~) main::$0) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::b#0 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#2
(byte) main::i#1 ← ++ (byte) main::i#2
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
Simple Condition (boolean~) main::$0 if((byte) main::i#2<(byte) 10) goto main::@2
Succesful SSA optimization Pass2ConditionalJumpSimplification
CONTROL FLOW GRAPH
@BEGIN: from
call main param-assignment
to:@END
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
(byte[1024]) main::SCREEN#1 ← phi( main/(word) 1024 )
(byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 )
if((byte) main::i#2<(byte) 10) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::b#0 ← (byte[1024]) main::SCREEN#1 *idx (byte) main::i#2
(byte) main::i#1 ← ++ (byte) main::i#2
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
Constant (byte[1024]) main::SCREEN#1 (word) 1024
Succesful SSA optimization Pass2ConstantPropagation
CONTROL FLOW GRAPH
@BEGIN: from
call main param-assignment
to:@END
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
(byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 )
if((byte) main::i#2<(byte) 10) goto main::@2
to:main::@return
main::@2: from main::@1
(byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2
(byte) main::i#1 ← ++ (byte) main::i#2
to:main::@1
main::@return: from main::@1
return
to:@RETURN
@END: from @BEGIN
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Multiple usages for variable. Not optimizing sub-constant (byte) main::i#2
Block Sequence Planned @BEGIN @END main main::@1 main::@return main::@2
Block Sequence Planned @BEGIN @END main main::@1 main::@return main::@2
CONTROL FLOW GRAPH - PHI LIFTED
@BEGIN: from
call main param-assignment
to:@END
@END: from @BEGIN
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
(byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte~) main::i#4 )
if((byte) main::i#2<(byte) 10) goto main::@2
to:main::@return
main::@return: from main::@1
return
to:@RETURN
main::@2: from main::@1
(byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2
(byte) main::i#1 ← ++ (byte) main::i#2
(byte~) main::i#4 ← (byte) main::i#1
to:main::@1
Adding empty live range for unused variable main::b#0
Propagating live ranges...
CONTROL FLOW GRAPH - LIVE RANGES
@BEGIN: from
[0] call main param-assignment [ ]
to:@END
@END: from @BEGIN
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
[1] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte~) main::i#4 ) [ main::i#2 ]
[2] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ]
to:main::@return
main::@return: from main::@1
[3] return [ ]
to:@RETURN
main::@2: from main::@1
[4] (byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2 [ main::i#2 ]
[5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ]
[6] (byte~) main::i#4 ← (byte) main::i#1 [ main::i#4 ]
to:main::@1
Created 1 initial phi equivalence classes
Coalesced [6] main::i#4 ← main::i#1
Coalesced down to 1 phi equivalence classes
Block Sequence Planned @BEGIN @END main main::@1 main::@return main::@2
Adding empty live range for unused variable main::b#0
Propagating live ranges...
CONTROL FLOW GRAPH - PHI MEM COALESCED
@BEGIN: from
[0] call main param-assignment [ ]
to:@END
@END: from @BEGIN
main: from @BEGIN
to:main::@1
main::@1: from main main::@2
[1] (byte) main::i#2 ← phi( main/(byte) 2 main::@2/(byte) main::i#1 ) [ main::i#2 ]
[2] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ]
to:main::@return
main::@return: from main::@1
[3] return [ ]
to:@RETURN
main::@2: from main::@1
[4] (byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2 [ main::i#2 ]
[5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ]
to:main::@1
CALL GRAPH
Calls in [] to 0:main
DOMINATORS
@BEGIN dominated by @BEGIN
@END dominated by @BEGIN @END
main dominated by @BEGIN main
main::@1 dominated by @BEGIN main::@1 main
main::@return dominated by @BEGIN main::@return main::@1 main
main::@2 dominated by @BEGIN main::@2 main::@1 main
Found back edge: Loop head: main::@1 tails: main::@2 blocks: null
Populated: Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
NATURAL LOOPS
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
Found 0 loops in scope []
Found 1 loops in scope [main]
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1
NATURAL LOOPS WITH DEPTH
Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 depth: 1
VARIABLE REGISTER WEIGHTS
(void()) main()
(byte[1024]) main::SCREEN
(byte) main::b
(byte) main::b#0 Infinity
(byte) main::i
(byte) main::i#1 22.0
(byte) main::i#2 14.666666666666666
Initial phi equivalence classes
[ main::i#2 main::i#1 ]
Added variable main::b#0 to zero page equivalence class [ main::b#0 ]
Complete equivalence classes
[ main::i#2 main::i#1 ]
[ main::b#0 ]
Allocated zp byte:2 to zp byte:2 [ main::i#2 main::i#1 ]
Allocated zp byte:3 to zp byte:3 [ main::b#0 ]
INITIAL ASM
//SEG0 @BEGIN
BBEGIN:
//SEG1 [0] call main param-assignment [ ]
jsr main
jmp BEND
//SEG2 @END
BEND:
//SEG3 main
main:
//SEG4 [1] phi from main to main::@1
main__B1_from_main:
//SEG5 [1] phi (byte) main::i#2 = (byte) 2 -- zpby1=coby1
lda #2
sta 2
jmp main__B1
//SEG6 main::@1
main__B1:
//SEG7 [2] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] -- zpby1_lt_coby1_then_la1
lda 2
cmp #10
bcc main__B2
jmp main__Breturn
//SEG8 main::@return
main__Breturn:
//SEG9 [3] return [ ]
rts
//SEG10 main::@2
main__B2:
//SEG11 [4] (byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2 [ main::i#2 ] -- zpby1=cowo1_staridx_zpby2
ldx 2
lda 1024,x
sta 3
//SEG12 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- zpby1=_inc_zpby1
inc 2
//SEG13 [1] phi from main::@2 to main::@1
main__B1_from_B2:
//SEG14 [1] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy
jmp main__B1
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ main::i#2 main::i#1 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ main::b#0 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [main] ∞: zp byte:3 [ main::b#0 ] 36.67: zp byte:2 [ main::i#2 main::i#1 ]
Uplift Scope []
Uplift attempt [main] 385 allocation: zp byte:3 [ main::b#0 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] 355 allocation: reg byte a [ main::b#0 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] 375 allocation: reg byte x [ main::b#0 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] 375 allocation: reg byte y [ main::b#0 ] zp byte:2 [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: zp byte:3 [ main::b#0 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte a [ main::b#0 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::b#0 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::b#0 ] reg byte a [ main::i#2 main::i#1 ]
Uplift attempt [main] 265 allocation: zp byte:3 [ main::b#0 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] 235 allocation: reg byte a [ main::b#0 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte x [ main::b#0 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] 235 allocation: reg byte y [ main::b#0 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [main] 265 allocation: zp byte:3 [ main::b#0 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] 235 allocation: reg byte a [ main::b#0 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] 235 allocation: reg byte x [ main::b#0 ] reg byte y [ main::i#2 main::i#1 ]
Uplift attempt [main] clobber allocation: reg byte y [ main::b#0 ] reg byte y [ main::i#2 main::i#1 ]
Uplifting [main] best 235 combination reg byte a [ main::b#0 ] reg byte x [ main::i#2 main::i#1 ]
Uplift attempt [] 235 allocation:
Uplifting [] best 235 combination
Removing instruction jmp BEND
Removing instruction jmp main__B1
Removing instruction jmp main__Breturn
Succesful ASM optimization Pass5NextJumpElimination
ASSEMBLER
//SEG0 @BEGIN
BBEGIN:
//SEG1 [0] call main param-assignment [ ]
jsr main
//SEG2 @END
BEND:
//SEG3 main
main:
//SEG4 [1] phi from main to main::@1
main__B1_from_main:
//SEG5 [1] phi (byte) main::i#2 = (byte) 2 -- xby=coby1
ldx #2
//SEG6 main::@1
main__B1:
//SEG7 [2] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] -- xby_lt_coby1_then_la1
cpx #10
bcc main__B2
//SEG8 main::@return
main__Breturn:
//SEG9 [3] return [ ]
rts
//SEG10 main::@2
main__B2:
//SEG11 [4] (byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2 [ main::i#2 ] -- aby=cowo1_staridx_xby
lda 1024,x
//SEG12 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- xby=_inc_xby
inx
//SEG13 [1] phi from main::@2 to main::@1
main__B1_from_B2:
//SEG14 [1] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy
jmp main__B1
FINAL SYMBOL TABLE
(label) @BEGIN
(label) @END
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
(byte[1024]) main::SCREEN
(byte) main::b
(byte) main::b#0 reg byte a Infinity
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 14.666666666666666
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::b#0 ]
FINAL CODE
//SEG0 @BEGIN
BBEGIN:
//SEG1 [0] call main param-assignment [ ]
jsr main
//SEG2 @END
BEND:
//SEG3 main
main:
//SEG4 [1] phi from main to main::@1
main__B1_from_main:
//SEG5 [1] phi (byte) main::i#2 = (byte) 2 -- xby=coby1
ldx #2
//SEG6 main::@1
main__B1:
//SEG7 [2] if((byte) main::i#2<(byte) 10) goto main::@2 [ main::i#2 ] -- xby_lt_coby1_then_la1
cpx #10
bcc main__B2
//SEG8 main::@return
main__Breturn:
//SEG9 [3] return [ ]
rts
//SEG10 main::@2
main__B2:
//SEG11 [4] (byte) main::b#0 ← (word) 1024 *idx (byte) main::i#2 [ main::i#2 ] -- aby=cowo1_staridx_xby
lda 1024,x
//SEG12 [5] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- xby=_inc_xby
inx
//SEG13 [1] phi from main::@2 to main::@1
main__B1_from_B2:
//SEG14 [1] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy
jmp main__B1

View File

@ -0,0 +1,15 @@
(label) @BEGIN
(label) @END
(void()) main()
(label) main::@1
(label) main::@2
(label) main::@return
(byte[1024]) main::SCREEN
(byte) main::b
(byte) main::b#0 reg byte a Infinity
(byte) main::i
(byte) main::i#1 reg byte x 22.0
(byte) main::i#2 reg byte x 14.666666666666666
reg byte x [ main::i#2 main::i#1 ]
reg byte a [ main::b#0 ]

View File

@ -4,16 +4,18 @@ sum_from_BBEGIN:
lda #1
jsr sum
B2:
ldx 2
stx 2
sum_from_B2:
lda #13
lda #9
jsr sum
B3:
lda 2
txa
clc
adc 2
BEND:
sum:
asl
sta 2
tax
sum__Breturn:
rts

View File

@ -442,6 +442,18 @@ sum__Breturn:
//SEG18 [7] return [ sum::return#0 s1#0 ]
rts
Statement [0] call sum param-assignment [ sum::return#0 s1#0 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp byte:7 [ sum::return#0 ]
Removing always clobbered register reg byte a as potential for zp byte:4 [ s1#0 ]
Statement [2] call sum param-assignment [ sum::return#0 s1#0 ] always clobbers reg byte a
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp byte:2 [ sum::a#2 ] : zp byte:2 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:3 [ sum::b#2 ] : zp byte:3 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:4 [ s1#0 ] : zp byte:4 , reg byte x , reg byte y ,
Potential registers zp byte:5 [ s2#0 ] : zp byte:5 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:6 [ s3#0 ] : zp byte:6 , reg byte a , reg byte x , reg byte y ,
Potential registers zp byte:7 [ sum::return#0 ] : zp byte:7 , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
Uplift Scope [] ∞: zp byte:6 [ s3#0 ] 4: zp byte:5 [ s2#0 ] 0.57: zp byte:4 [ s1#0 ]
Uplift Scope [sum] 2: zp byte:2 [ sum::a#2 ] 2: zp byte:3 [ sum::b#2 ] 1.2: zp byte:7 [ sum::return#0 ]
@ -450,258 +462,101 @@ Uplift attempt [] 84 allocation: zp byte:6 [ s3#0 ] zp byte:5 [ s2#0 ] zp byte:4
Uplift attempt [] 81 allocation: reg byte a [ s3#0 ] zp byte:5 [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 83 allocation: reg byte x [ s3#0 ] zp byte:5 [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 83 allocation: reg byte y [ s3#0 ] zp byte:5 [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 73 allocation: reg byte alu [ s3#0 ] zp byte:5 [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 78 allocation: zp byte:6 [ s3#0 ] reg byte a [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 75 allocation: reg byte a [ s3#0 ] reg byte a [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte x [ s3#0 ] reg byte a [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte y [ s3#0 ] reg byte a [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 70 allocation: reg byte alu [ s3#0 ] reg byte a [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 80 allocation: zp byte:6 [ s3#0 ] reg byte x [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte a [ s3#0 ] reg byte x [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte x [ s3#0 ] reg byte x [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte y [ s3#0 ] reg byte x [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 70 allocation: reg byte alu [ s3#0 ] reg byte x [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 80 allocation: zp byte:6 [ s3#0 ] reg byte y [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte a [ s3#0 ] reg byte y [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte x [ s3#0 ] reg byte y [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte y [ s3#0 ] reg byte y [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 70 allocation: reg byte alu [ s3#0 ] reg byte y [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 78 allocation: zp byte:6 [ s3#0 ] reg byte alu [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 75 allocation: reg byte a [ s3#0 ] reg byte alu [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte x [ s3#0 ] reg byte alu [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte y [ s3#0 ] reg byte alu [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [] alu not applicable
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] zp byte:5 [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] zp byte:5 [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] zp byte:5 [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] zp byte:5 [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte alu [ s3#0 ] zp byte:5 [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] reg byte a [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] reg byte a [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] reg byte a [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] reg byte a [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte alu [ s3#0 ] reg byte a [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] reg byte x [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] reg byte x [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] reg byte x [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] reg byte x [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte alu [ s3#0 ] reg byte x [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] reg byte y [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] reg byte y [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] reg byte y [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] reg byte y [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte alu [ s3#0 ] reg byte y [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] reg byte alu [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] reg byte alu [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] reg byte alu [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] reg byte alu [ s2#0 ] reg byte a [ s1#0 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 80 allocation: zp byte:6 [ s3#0 ] zp byte:5 [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte a [ s3#0 ] zp byte:5 [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte x [ s3#0 ] zp byte:5 [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte y [ s3#0 ] zp byte:5 [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 70 allocation: reg byte alu [ s3#0 ] zp byte:5 [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 78 allocation: zp byte:6 [ s3#0 ] reg byte a [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 75 allocation: reg byte a [ s3#0 ] reg byte a [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte x [ s3#0 ] reg byte a [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte y [ s3#0 ] reg byte a [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 67 allocation: reg byte alu [ s3#0 ] reg byte a [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] reg byte x [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] reg byte x [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] reg byte x [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] reg byte x [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte alu [ s3#0 ] reg byte x [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 80 allocation: zp byte:6 [ s3#0 ] reg byte y [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte a [ s3#0 ] reg byte y [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte x [ s3#0 ] reg byte y [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte y [ s3#0 ] reg byte y [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 67 allocation: reg byte alu [ s3#0 ] reg byte y [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 74 allocation: zp byte:6 [ s3#0 ] reg byte alu [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 71 allocation: reg byte a [ s3#0 ] reg byte alu [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 73 allocation: reg byte x [ s3#0 ] reg byte alu [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] 73 allocation: reg byte y [ s3#0 ] reg byte alu [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [] alu not applicable
Uplift attempt [] 80 allocation: zp byte:6 [ s3#0 ] zp byte:5 [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte a [ s3#0 ] zp byte:5 [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte x [ s3#0 ] zp byte:5 [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte y [ s3#0 ] zp byte:5 [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 70 allocation: reg byte alu [ s3#0 ] zp byte:5 [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 78 allocation: zp byte:6 [ s3#0 ] reg byte a [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 75 allocation: reg byte a [ s3#0 ] reg byte a [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte x [ s3#0 ] reg byte a [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte y [ s3#0 ] reg byte a [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 67 allocation: reg byte alu [ s3#0 ] reg byte a [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 80 allocation: zp byte:6 [ s3#0 ] reg byte x [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 77 allocation: reg byte a [ s3#0 ] reg byte x [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte x [ s3#0 ] reg byte x [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 79 allocation: reg byte y [ s3#0 ] reg byte x [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 67 allocation: reg byte alu [ s3#0 ] reg byte x [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] clobber allocation: zp byte:6 [ s3#0 ] reg byte y [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte a [ s3#0 ] reg byte y [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte x [ s3#0 ] reg byte y [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte y [ s3#0 ] reg byte y [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] clobber allocation: reg byte alu [ s3#0 ] reg byte y [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 74 allocation: zp byte:6 [ s3#0 ] reg byte alu [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 71 allocation: reg byte a [ s3#0 ] reg byte alu [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 73 allocation: reg byte x [ s3#0 ] reg byte alu [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] 73 allocation: reg byte y [ s3#0 ] reg byte alu [ s2#0 ] reg byte y [ s1#0 ]
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplift attempt [] alu not applicable
Uplifting [] best 67 combination reg byte alu [ s3#0 ] reg byte a [ s2#0 ] reg byte x [ s1#0 ]
Uplift attempt [sum] 67 allocation: zp byte:2 [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte a [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 60 allocation: reg byte y [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] 58 allocation: zp byte:2 [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 49 allocation: reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 55 allocation: reg byte y [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] clobber allocation: zp byte:2 [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte a [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte y [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] 60 allocation: zp byte:2 [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 55 allocation: reg byte a [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 51 allocation: reg byte y [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] missing fragment xby=aby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] clobber allocation: zp byte:2 [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte a [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte y [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] clobber allocation: zp byte:2 [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte y [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] clobber allocation: zp byte:2 [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte a [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte y [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] clobber allocation: zp byte:2 [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte a [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte x [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] clobber allocation: reg byte y [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] missing fragment xby=yby
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplift attempt [sum] alu not applicable
Uplifting [sum] best 49 combination reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
MISSING FRAGMENTS
xby=aby
xby=yby
Re-allocated ZP register from zp byte:7 to zp byte:2
Uplifting [] best 75 combination reg byte a [ s3#0 ] reg byte a [ s2#0 ] zp byte:4 [ s1#0 ]
Uplift attempt [sum] 75 allocation: zp byte:2 [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 66 allocation: reg byte a [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 68 allocation: reg byte x [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 68 allocation: reg byte y [ sum::a#2 ] zp byte:3 [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 66 allocation: zp byte:2 [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 57 allocation: reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte x [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte y [ sum::a#2 ] reg byte a [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 68 allocation: zp byte:2 [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte a [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 59 allocation: reg byte x [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 65 allocation: reg byte y [ sum::a#2 ] reg byte x [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 68 allocation: zp byte:2 [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte a [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 65 allocation: reg byte x [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 59 allocation: reg byte y [ sum::a#2 ] reg byte y [ sum::b#2 ] zp byte:7 [ sum::return#0 ]
Uplift attempt [sum] 70 allocation: zp byte:2 [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 61 allocation: reg byte a [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte x [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte y [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 61 allocation: zp byte:2 [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 52 allocation: reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte x [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte y [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: zp byte:2 [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte a [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 54 allocation: reg byte x [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 60 allocation: reg byte y [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: zp byte:2 [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte a [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 60 allocation: reg byte x [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 54 allocation: reg byte y [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte x [ sum::return#0 ]
Uplift attempt [sum] 70 allocation: zp byte:2 [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 61 allocation: reg byte a [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte x [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: reg byte y [ sum::a#2 ] zp byte:3 [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 61 allocation: zp byte:2 [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 52 allocation: reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte x [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte y [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: zp byte:2 [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte a [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 54 allocation: reg byte x [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 60 allocation: reg byte y [ sum::a#2 ] reg byte x [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 63 allocation: zp byte:2 [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 58 allocation: reg byte a [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 60 allocation: reg byte x [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplift attempt [sum] 54 allocation: reg byte y [ sum::a#2 ] reg byte y [ sum::b#2 ] reg byte y [ sum::return#0 ]
Uplifting [sum] best 52 combination reg byte a [ sum::a#2 ] reg byte a [ sum::b#2 ] reg byte x [ sum::return#0 ]
Re-allocated ZP register from zp byte:4 to zp byte:2
Removing instruction jmp B2
Removing instruction jmp B3
Removing instruction jmp BEND
@ -720,8 +575,8 @@ sum_from_BBEGIN:
jsr sum
//SEG5 @2
B2:
//SEG6 [1] (byte) s1#0 ← (byte) sum::return#0 [ sum::return#0 s1#0 ] -- xby=zpby1
ldx 2
//SEG6 [1] (byte) s1#0 ← (byte) sum::return#0 [ sum::return#0 s1#0 ] -- zpby1=xby
stx 2
//SEG7 [2] call sum param-assignment [ sum::return#0 s1#0 ]
//SEG8 [5] phi from @2 to sum
sum_from_B2:
@ -732,17 +587,18 @@ sum_from_B2:
jsr sum
//SEG11 @3
B3:
//SEG12 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- aby=zpby1
lda 2
//SEG13 [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ]
// [4] s3#0 ← s1#0 + s2#0 // ALU
//SEG12 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- aby=xby
txa
//SEG13 [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] -- aby=zpby1_plus_aby
clc
adc 2
//SEG14 @END
BEND:
//SEG15 sum
sum:
//SEG16 [6] (byte) sum::return#0 ← (byte) sum::a#2 + (byte) sum::b#2 [ sum::return#0 s1#0 ] -- zpby1=aby_plus_aby
//SEG16 [6] (byte) sum::return#0 ← (byte) sum::a#2 + (byte) sum::b#2 [ sum::return#0 s1#0 ] -- xby=aby_plus_aby
asl
sta 2
tax
//SEG17 sum::@return
sum__Breturn:
//SEG18 [7] return [ sum::return#0 s1#0 ]
@ -754,11 +610,11 @@ FINAL SYMBOL TABLE
(label) @BEGIN
(label) @END
(byte) s1
(byte) s1#0 reg byte x 0.5714285714285714
(byte) s1#0 zp byte:2 0.5714285714285714
(byte) s2
(byte) s2#0 reg byte a 4.0
(byte) s3
(byte) s3#0 reg byte alu Infinity
(byte) s3#0 reg byte a Infinity
(byte()) sum((byte) sum::a , (byte) sum::b)
(label) sum::@return
(byte) sum::a
@ -766,14 +622,14 @@ FINAL SYMBOL TABLE
(byte) sum::b
(byte) sum::b#2 reg byte a 2.0
(byte) sum::return
(byte) sum::return#0 zp byte:2 1.2000000000000002
(byte) sum::return#0 reg byte x 1.2000000000000002
reg byte a [ sum::a#2 ]
reg byte a [ sum::b#2 ]
reg byte x [ s1#0 ]
zp byte:2 [ s1#0 ]
reg byte a [ s2#0 ]
reg byte alu [ s3#0 ]
zp byte:2 [ sum::return#0 ]
reg byte a [ s3#0 ]
reg byte x [ sum::return#0 ]
FINAL CODE
//SEG0 @BEGIN
@ -788,8 +644,8 @@ sum_from_BBEGIN:
jsr sum
//SEG5 @2
B2:
//SEG6 [1] (byte) s1#0 ← (byte) sum::return#0 [ sum::return#0 s1#0 ] -- xby=zpby1
ldx 2
//SEG6 [1] (byte) s1#0 ← (byte) sum::return#0 [ sum::return#0 s1#0 ] -- zpby1=xby
stx 2
//SEG7 [2] call sum param-assignment [ sum::return#0 s1#0 ]
//SEG8 [5] phi from @2 to sum
sum_from_B2:
@ -800,17 +656,18 @@ sum_from_B2:
jsr sum
//SEG11 @3
B3:
//SEG12 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- aby=zpby1
lda 2
//SEG13 [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ]
// [4] s3#0 ← s1#0 + s2#0 // ALU
//SEG12 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- aby=xby
txa
//SEG13 [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] -- aby=zpby1_plus_aby
clc
adc 2
//SEG14 @END
BEND:
//SEG15 sum
sum:
//SEG16 [6] (byte) sum::return#0 ← (byte) sum::a#2 + (byte) sum::b#2 [ sum::return#0 s1#0 ] -- zpby1=aby_plus_aby
//SEG16 [6] (byte) sum::return#0 ← (byte) sum::a#2 + (byte) sum::b#2 [ sum::return#0 s1#0 ] -- xby=aby_plus_aby
asl
sta 2
tax
//SEG17 sum::@return
sum__Breturn:
//SEG18 [7] return [ sum::return#0 s1#0 ]

View File

@ -3,11 +3,11 @@
(label) @BEGIN
(label) @END
(byte) s1
(byte) s1#0 reg byte x 0.5714285714285714
(byte) s1#0 zp byte:2 0.5714285714285714
(byte) s2
(byte) s2#0 reg byte a 4.0
(byte) s3
(byte) s3#0 reg byte alu Infinity
(byte) s3#0 reg byte a Infinity
(byte()) sum((byte) sum::a , (byte) sum::b)
(label) sum::@return
(byte) sum::a
@ -15,11 +15,11 @@
(byte) sum::b
(byte) sum::b#2 reg byte a 2.0
(byte) sum::return
(byte) sum::return#0 zp byte:2 1.2000000000000002
(byte) sum::return#0 reg byte x 1.2000000000000002
reg byte a [ sum::a#2 ]
reg byte a [ sum::b#2 ]
reg byte x [ s1#0 ]
zp byte:2 [ s1#0 ]
reg byte a [ s2#0 ]
reg byte alu [ s3#0 ]
zp byte:2 [ sum::return#0 ]
reg byte a [ s3#0 ]
reg byte x [ sum::return#0 ]

View File

@ -225,6 +225,9 @@ main__Breturn:
//SEG6 [2] return [ ]
rts
Statement [1] *((word) 1024) ← (byte) 1 [ ] always clobbers reg byte a
REGISTER UPLIFT POTENTIAL REGISTERS
REGISTER UPLIFT SCOPES
Uplift Scope [main]
Uplift Scope []