mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-19 12:37:54 +00:00
Implemented early constant identification to avoid unnecessary variable versioning. Closes #53
This commit is contained in:
parent
c280a3b14a
commit
022d77fc56
src
main/java/dk/camelot64/kickc
test
java/dk/camelot64/kickc/test
kc
ref
array-length-symbolic-min.logarray-length-symbolic.logarrays-init.logassignment-chained.logassignment-compound.logbitmap-plotter.logbitwise-not.logbool-const.logbool-function.logbresenham.asmbresenham.cfgbresenham.logbresenham.symbresenhamarr.asmbresenhamarr.cfgbresenhamarr.logbresenhamarr.symc64dtv-8bppcharstretch.logc64dtv-8bppchunkystretch.logc64dtv-blittermin.logc64dtv-color.logc64dtv-gfxexplorer.logc64dtv-gfxmodes.asmc64dtv-gfxmodes.cfgc64dtv-gfxmodes.logc64dtv-gfxmodes.symcast-deref.logcast-not-needed.logcast-precedence-problem.logcasting.logchargen.logclobber-a-problem.logfillscreen.logflipper-rex2.logforincrementassign.logforrangedwords.logforrangemin.logfragment-synth.loghalfscii.loghelloworld2-inline.asmhelloworld2-inline.cfghelloworld2-inline.loghelloworld2-inline.symhelloworld2.logifmin.logimporting.logincd020.loginfloop-error.loginline-asm-clobber-none.loginline-asm-clobber.loginline-asm-jsr-clobber.loginline-function-if.loginline-function-min.loginline-function-print.asminline-function-print.cfg
complex/tetris
concat-char.logconsolidate-array-index-problem.logconst-early-identification.asmconst-early-identification.cfgconst-early-identification.logconst-early-identification.symconst-if-problem.logconst-mult-div.logconst-param.logconst-pointer.logconst-signed-promotion.logconst-word-pointer.logconstant-string-concat.logconstantmin.logconstants.logdouble-assignment.logdouble-indexing-arrays.logdword.logemptyblock-error.logexamples
3d
bresenham
chargen
fastmultiply
multiplexer
rotate
scroll
scrollbig
scrolllogo
showlogo
sinplotter
sinsprites
@ -158,8 +158,11 @@ public class Compiler {
|
||||
|
||||
new Pass1FixLValuesLoHi(program).execute();
|
||||
new Pass1AssertNoLValueIntermediate(program).execute();
|
||||
|
||||
new Pass1AddTypePromotions(program).execute();
|
||||
|
||||
new Pass1EarlyConstantIdentification(program).execute();
|
||||
|
||||
new PassNStatementIndices(program).step();
|
||||
new PassNCallGraphAnalysis(program).step();
|
||||
|
||||
|
@ -2,6 +2,7 @@ package dk.camelot64.kickc.model;
|
||||
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.statements.StatementLValue;
|
||||
import dk.camelot64.kickc.model.statements.StatementPhiBlock;
|
||||
import dk.camelot64.kickc.model.symbols.Label;
|
||||
import dk.camelot64.kickc.model.symbols.Procedure;
|
||||
@ -69,12 +70,12 @@ public class ControlFlowGraph {
|
||||
* @param variable The variable to find the assignment for
|
||||
* @return The assignment. null if the variable is not assigned. The variable is assigned by a Phi-statement instead.
|
||||
*/
|
||||
public StatementAssignment getAssignment(VariableRef variable) {
|
||||
public StatementLValue getAssignment(VariableRef variable) {
|
||||
for(ControlFlowBlock block : getAllBlocks()) {
|
||||
for(Statement statement : block.getStatements()) {
|
||||
if(statement instanceof StatementAssignment) {
|
||||
StatementAssignment assignment = (StatementAssignment) statement;
|
||||
if(assignment.getlValue().equals(variable)) {
|
||||
if(statement instanceof StatementLValue) {
|
||||
StatementLValue assignment = (StatementLValue) statement;
|
||||
if(variable.equals(assignment.getlValue())) {
|
||||
return assignment;
|
||||
}
|
||||
}
|
||||
|
@ -4,9 +4,11 @@ import dk.camelot64.kickc.CompileLog;
|
||||
import dk.camelot64.kickc.asm.AsmProgram;
|
||||
import dk.camelot64.kickc.model.statements.StatementInfos;
|
||||
import dk.camelot64.kickc.model.symbols.ProgramScope;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/** A KickC Intermediate Compiler Language (ICL) Program */
|
||||
@ -62,6 +64,9 @@ public class Program {
|
||||
/** Separation of live range equivalence classes into scopes - used for register uplift */
|
||||
private RegisterUpliftProgram registerUpliftProgram;
|
||||
|
||||
/** Constants identified during pass 1. */
|
||||
private Collection<VariableRef> earlyIdentifiedConstants;
|
||||
|
||||
public Program() {
|
||||
this.scope = new ProgramScope();
|
||||
this.log = new CompileLog();
|
||||
@ -230,6 +235,14 @@ public class Program {
|
||||
this.registerUpliftProgram = registerUpliftProgram;
|
||||
}
|
||||
|
||||
public Collection<VariableRef> getEarlyIdentifiedConstants() {
|
||||
return earlyIdentifiedConstants;
|
||||
}
|
||||
|
||||
public void setEarlyIdentifiedConstants(Collection<VariableRef> earlyIdentifiedConstants) {
|
||||
this.earlyIdentifiedConstants = earlyIdentifiedConstants;
|
||||
}
|
||||
|
||||
public CompileLog getLog() {
|
||||
return log;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package dk.camelot64.kickc.model.statements;
|
||||
import dk.camelot64.kickc.model.values.LValue;
|
||||
|
||||
/**
|
||||
* Single Static Assignment Form Statement with an LValuie - that is a statement assigning a value to a variable.
|
||||
* Single Static Assignment Form Statement with an LValue - that is a statement assigning a value to a variable.
|
||||
*/
|
||||
public interface StatementLValue extends Statement {
|
||||
|
||||
|
@ -25,7 +25,7 @@ public class Pass1AssertNoLValueIntermediate extends Pass1Base {
|
||||
LValue lValue = ((StatementLValue) statement).getlValue();
|
||||
if(lValue instanceof LvalueIntermediate) {
|
||||
VariableRef intermediateVar = ((LvalueIntermediate) lValue).getVariable();
|
||||
StatementAssignment assignment = getGraph().getAssignment(intermediateVar);
|
||||
StatementLValue assignment = getGraph().getAssignment(intermediateVar);
|
||||
throw new CompileError("Error! LValue is illegal. " + statement + " - definition of lValue " + assignment, assignment.getSource());
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,71 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.ControlFlowBlock;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.operators.OperatorCastPtr;
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.statements.StatementLValue;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.values.ConstantValue;
|
||||
import dk.camelot64.kickc.model.values.VariableRef;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
/** Identify any variable that are clearly constant. */
|
||||
public class Pass1EarlyConstantIdentification extends Pass1Base {
|
||||
|
||||
public Pass1EarlyConstantIdentification(Program program) {
|
||||
super(program);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean step() {
|
||||
Collection<VariableRef> earlyConstants = new ArrayList<>();
|
||||
for(Variable variable : getProgram().getScope().getAllVariables(true)) {
|
||||
VariableRef variableRef = variable.getRef();
|
||||
if(!variable.isDeclaredConstant() && !variable.isDeclaredVolatile() && !variableRef.isIntermediate()) {
|
||||
Collection<StatementLValue> assignments = getAssignments(variable);
|
||||
if(assignments.size() == 1) {
|
||||
if(!Pass2ConstantIdentification.isAddressOfUsed(variableRef, getProgram())) {
|
||||
StatementLValue assignment = assignments.iterator().next();
|
||||
if(assignment instanceof StatementAssignment) {
|
||||
StatementAssignment assign = (StatementAssignment) assignment;
|
||||
if(assign.getrValue1() == null && assign.getOperator() == null && assign.getrValue2() instanceof ConstantValue) {
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
earlyConstants.add(variableRef);
|
||||
} else if(assign.getrValue1() == null && assign.getOperator() instanceof OperatorCastPtr && assign.getrValue2() instanceof ConstantValue) {
|
||||
getLog().append("Identified constant variable " + variable.toString(getProgram()));
|
||||
earlyConstants.add(variableRef);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
getProgram().setEarlyIdentifiedConstants(earlyConstants);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find all assignments of a variable.
|
||||
*
|
||||
* @param variable The variable
|
||||
* @return all assignments
|
||||
*/
|
||||
private Collection<StatementLValue> getAssignments(Variable variable) {
|
||||
Collection<StatementLValue> assignments = new ArrayList<>();
|
||||
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
|
||||
for(Statement statement : block.getStatements()) {
|
||||
if(statement instanceof StatementLValue) {
|
||||
StatementLValue assignment = (StatementLValue) statement;
|
||||
if(variable.getRef().equals(assignment.getlValue())) {
|
||||
assignments.add(assignment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return assignments;
|
||||
}
|
||||
}
|
@ -42,15 +42,18 @@ public class Pass1FixLValuesLoHi extends Pass1Base {
|
||||
if(statement instanceof StatementLValue && ((StatementLValue) statement).getlValue() instanceof LvalueIntermediate) {
|
||||
StatementLValue statementLValue = (StatementLValue) statement;
|
||||
LvalueIntermediate intermediate = (LvalueIntermediate) statementLValue.getlValue();
|
||||
StatementAssignment intermediateAssignment = getProgram().getGraph().getAssignment(intermediate.getVariable());
|
||||
if(Operators.LOWBYTE.equals(intermediateAssignment.getOperator()) && intermediateAssignment.getrValue1() == null) {
|
||||
// Found assignment to an intermediate low byte lValue <x = ...
|
||||
fixLoHiLValue(programScope, statementsIt, statementLValue, intermediate, intermediateAssignment, Operators.SET_LOWBYTE);
|
||||
intermediates.add(intermediate.getVariable());
|
||||
} else if(Operators.HIBYTE.equals(intermediateAssignment.getOperator()) && intermediateAssignment.getrValue1() == null) {
|
||||
// Found assignment to an intermediate low byte lValue >x = ...
|
||||
fixLoHiLValue(programScope, statementsIt, statementLValue, intermediate, intermediateAssignment, Operators.SET_HIBYTE);
|
||||
intermediates.add(intermediate.getVariable());
|
||||
StatementLValue intermediateStmtLValue = getProgram().getGraph().getAssignment(intermediate.getVariable());
|
||||
if(intermediateStmtLValue instanceof StatementAssignment) {
|
||||
StatementAssignment intermediateAssignment = (StatementAssignment) intermediateStmtLValue;
|
||||
if(Operators.LOWBYTE.equals(intermediateAssignment.getOperator()) && intermediateAssignment.getrValue1() == null) {
|
||||
// Found assignment to an intermediate low byte lValue <x = ...
|
||||
fixLoHiLValue(programScope, statementsIt, statementLValue, intermediate, intermediateAssignment, Operators.SET_LOWBYTE);
|
||||
intermediates.add(intermediate.getVariable());
|
||||
} else if(Operators.HIBYTE.equals(intermediateAssignment.getOperator()) && intermediateAssignment.getrValue1() == null) {
|
||||
// Found assignment to an intermediate low byte lValue >x = ...
|
||||
fixLoHiLValue(programScope, statementsIt, statementLValue, intermediate, intermediateAssignment, Operators.SET_HIBYTE);
|
||||
intermediates.add(intermediate.getVariable());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,7 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base {
|
||||
* Version all non-versioned non-intermediary being assigned a value.
|
||||
*/
|
||||
private void versionAllAssignments() {
|
||||
Collection<VariableRef> earlyIdentifiedConstants = getProgram().getEarlyIdentifiedConstants();
|
||||
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
|
||||
for(Statement statement : block.getStatements()) {
|
||||
if(statement instanceof StatementLValue) {
|
||||
@ -61,7 +62,7 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base {
|
||||
// Assignment to a non-versioned non-intermediary variable
|
||||
VariableUnversioned assignedSymbol = (VariableUnversioned) assignedVar;
|
||||
VariableVersion version;
|
||||
if(assignedSymbol.isDeclaredConstant()) {
|
||||
if(assignedSymbol.isDeclaredConstant() || earlyIdentifiedConstants.contains(assignedSymbol.getRef())) {
|
||||
Collection<VariableVersion> versions = assignedVar.getScope().getVersions(assignedSymbol);
|
||||
if(versions.size() != 0) {
|
||||
throw new CompileError("Error! Constants can not be modified " + statement, statement.getSource());
|
||||
@ -144,13 +145,14 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base {
|
||||
RValue rValue,
|
||||
Map<VariableUnversioned, VariableVersion> blockVersions,
|
||||
Map<VariableUnversioned, VariableVersion> blockNewPhis) {
|
||||
Collection<VariableRef> earlyIdentifiedConstants = getProgram().getEarlyIdentifiedConstants();
|
||||
VariableVersion version = null;
|
||||
if(rValue instanceof VariableRef) {
|
||||
Variable rValueVar = getScope().getVariable((VariableRef) rValue);
|
||||
if(rValueVar instanceof VariableUnversioned) {
|
||||
// rValue needs versioning - look for version in statements
|
||||
VariableUnversioned rSymbol = (VariableUnversioned) rValueVar;
|
||||
if(rSymbol.isDeclaredConstant()) {
|
||||
if(rSymbol.isDeclaredConstant() || earlyIdentifiedConstants.contains(rSymbol.getRef())) {
|
||||
// A constant - find the single created version
|
||||
Scope scope = rSymbol.getScope();
|
||||
Collection<VariableVersion> versions = scope.getVersions(rSymbol);
|
||||
|
@ -9,7 +9,7 @@ import dk.camelot64.kickc.model.operators.Operator;
|
||||
import dk.camelot64.kickc.model.operators.Operators;
|
||||
import dk.camelot64.kickc.model.statements.Statement;
|
||||
import dk.camelot64.kickc.model.statements.StatementAssignment;
|
||||
import dk.camelot64.kickc.model.statements.StatementConditionalJump;
|
||||
import dk.camelot64.kickc.model.statements.StatementLValue;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -41,7 +41,7 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization {
|
||||
public boolean step() {
|
||||
final boolean[] optimized = {false};
|
||||
|
||||
this.variableReferenceInfos = getProgram().getVariableReferenceInfos();
|
||||
this.variableReferenceInfos = getProgram().getVariableReferenceInfos();
|
||||
|
||||
ProgramValueIterator.execute(getProgram(), (programValue, currentStmt, stmtIt, currentBlock) -> {
|
||||
if(programValue.get() instanceof PointerDereferenceIndexed) {
|
||||
@ -156,66 +156,69 @@ public class Pass2ConstantAdditionElimination extends Pass2SsaOptimization {
|
||||
//getLog().append("Multiple usages for variable. Not optimizing sub-constant " + variable.toString(getProgram()));
|
||||
return null;
|
||||
}
|
||||
StatementAssignment assignment = getGraph().getAssignment(variable);
|
||||
if(assignment != null && assignment.getOperator() != null && "+".equals(assignment.getOperator().getOperator())) {
|
||||
if(assignment.getrValue1() instanceof ConstantValue) {
|
||||
ConstantValue constant = (ConstantValue) assignment.getrValue1();
|
||||
assignment.setrValue1(null);
|
||||
assignment.setOperator(null);
|
||||
return constant;
|
||||
} else if(assignment.getrValue2() instanceof ConstantValue) {
|
||||
ConstantValue constant = (ConstantValue) assignment.getrValue2();
|
||||
assignment.setrValue2(assignment.getrValue1());
|
||||
assignment.setOperator(null);
|
||||
assignment.setrValue1(null);
|
||||
return constant;
|
||||
} else {
|
||||
ConstantValue const1 = null;
|
||||
if(assignment.getrValue1() instanceof VariableRef) {
|
||||
const1 = consolidateSubConstants((VariableRef) assignment.getrValue1());
|
||||
}
|
||||
ConstantValue const2 = null;
|
||||
if(assignment.getrValue2() instanceof VariableRef) {
|
||||
const2 = consolidateSubConstants((VariableRef) assignment.getrValue2());
|
||||
}
|
||||
ConstantValue result = null;
|
||||
if(const1 != null) {
|
||||
result = const1;
|
||||
if(const2 != null) {
|
||||
result = new ConstantBinary(const1, Operators.PLUS, const2);
|
||||
StatementLValue statementLValue = getGraph().getAssignment(variable);
|
||||
if(statementLValue instanceof StatementAssignment) {
|
||||
StatementAssignment assignment = (StatementAssignment) statementLValue;
|
||||
if(assignment.getOperator() != null && "+".equals(assignment.getOperator().getOperator())) {
|
||||
if(assignment.getrValue1() instanceof ConstantValue) {
|
||||
ConstantValue constant = (ConstantValue) assignment.getrValue1();
|
||||
assignment.setrValue1(null);
|
||||
assignment.setOperator(null);
|
||||
return constant;
|
||||
} else if(assignment.getrValue2() instanceof ConstantValue) {
|
||||
ConstantValue constant = (ConstantValue) assignment.getrValue2();
|
||||
assignment.setrValue2(assignment.getrValue1());
|
||||
assignment.setOperator(null);
|
||||
assignment.setrValue1(null);
|
||||
return constant;
|
||||
} else {
|
||||
ConstantValue const1 = null;
|
||||
if(assignment.getrValue1() instanceof VariableRef) {
|
||||
const1 = consolidateSubConstants((VariableRef) assignment.getrValue1());
|
||||
}
|
||||
} else if(const2 != null) {
|
||||
result = const2;
|
||||
ConstantValue const2 = null;
|
||||
if(assignment.getrValue2() instanceof VariableRef) {
|
||||
const2 = consolidateSubConstants((VariableRef) assignment.getrValue2());
|
||||
}
|
||||
ConstantValue result = null;
|
||||
if(const1 != null) {
|
||||
result = const1;
|
||||
if(const2 != null) {
|
||||
result = new ConstantBinary(const1, Operators.PLUS, const2);
|
||||
}
|
||||
} else if(const2 != null) {
|
||||
result = const2;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
if(assignment != null && assignment.getOperator() != null && "-".equals(assignment.getOperator().getOperator())) {
|
||||
if(assignment.getrValue2() instanceof ConstantValue) {
|
||||
ConstantValue constant = (ConstantValue) assignment.getrValue2();
|
||||
assignment.setrValue2(assignment.getrValue1());
|
||||
assignment.setOperator(null);
|
||||
assignment.setrValue1(null);
|
||||
return new ConstantUnary(Operators.NEG, constant);
|
||||
} else {
|
||||
ConstantValue const1 = null;
|
||||
if(assignment.getrValue1() instanceof VariableRef) {
|
||||
const1 = consolidateSubConstants((VariableRef) assignment.getrValue1());
|
||||
}
|
||||
ConstantValue const2 = null;
|
||||
if(assignment.getrValue2() instanceof VariableRef) {
|
||||
const2 = consolidateSubConstants((VariableRef) assignment.getrValue2());
|
||||
}
|
||||
ConstantValue result = null;
|
||||
if(const1 != null) {
|
||||
result = const1;
|
||||
if(const2 != null) {
|
||||
result = new ConstantBinary(const1, Operators.MINUS, const2);
|
||||
if(assignment != null && assignment.getOperator() != null && "-".equals(assignment.getOperator().getOperator())) {
|
||||
if(assignment.getrValue2() instanceof ConstantValue) {
|
||||
ConstantValue constant = (ConstantValue) assignment.getrValue2();
|
||||
assignment.setrValue2(assignment.getrValue1());
|
||||
assignment.setOperator(null);
|
||||
assignment.setrValue1(null);
|
||||
return new ConstantUnary(Operators.NEG, constant);
|
||||
} else {
|
||||
ConstantValue const1 = null;
|
||||
if(assignment.getrValue1() instanceof VariableRef) {
|
||||
const1 = consolidateSubConstants((VariableRef) assignment.getrValue1());
|
||||
}
|
||||
} else if(const2 != null) {
|
||||
result = const2;
|
||||
ConstantValue const2 = null;
|
||||
if(assignment.getrValue2() instanceof VariableRef) {
|
||||
const2 = consolidateSubConstants((VariableRef) assignment.getrValue2());
|
||||
}
|
||||
ConstantValue result = null;
|
||||
if(const1 != null) {
|
||||
result = const1;
|
||||
if(const2 != null) {
|
||||
result = new ConstantBinary(const1, Operators.MINUS, const2);
|
||||
}
|
||||
} else if(const2 != null) {
|
||||
result = const2;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
@ -32,6 +32,11 @@ public class TestPrograms {
|
||||
public TestPrograms() {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstEarlyIdentification() throws IOException, URISyntaxException {
|
||||
compileAndCompare("const-early-identification");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBoolNullPointerException() throws IOException, URISyntaxException {
|
||||
compileAndCompare("bool-nullpointer-exception");
|
||||
|
23
src/test/kc/const-early-identification.kc
Normal file
23
src/test/kc/const-early-identification.kc
Normal file
@ -0,0 +1,23 @@
|
||||
// Tests that constants are identified early
|
||||
|
||||
byte* SCREEN = $400;
|
||||
// Not an early constant (address-of is used)
|
||||
byte A = 'a';
|
||||
|
||||
void main(){
|
||||
SCREEN[0] = A;
|
||||
byte B = 'b';
|
||||
SCREEN[1] = B;
|
||||
byte* addrA = &A;
|
||||
SCREEN[2] = *addrA;
|
||||
sub();
|
||||
|
||||
}
|
||||
|
||||
void sub() {
|
||||
byte C = 'c';
|
||||
SCREEN[3] = C;
|
||||
// Not an early constant (expression)
|
||||
byte D = A+1;
|
||||
SCREEN[4] = D;
|
||||
}
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte) SZ
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -5,24 +6,21 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte[SZ#0]) items#0 ← { fill( SZ#0, 0) }
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte) SZ#2 ← phi( @1/(byte) SZ#3 )
|
||||
(byte*) main::cur_item#0 ← (byte[SZ#0]) items#0
|
||||
(byte) main::sub#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte) SZ#1 ← phi( main/(byte) SZ#2 main::@1/(byte) SZ#1 )
|
||||
(byte*) main::cur_item#1 ← phi( main/(byte*) main::cur_item#0 main::@1/(byte*) main::cur_item#1 )
|
||||
(byte) main::sub#2 ← phi( main/(byte) main::sub#0 main::@1/(byte) main::sub#1 )
|
||||
*((byte*) main::cur_item#1 + (byte) main::sub#2) ← (byte) main::sub#2
|
||||
(byte) main::sub#1 ← (byte) main::sub#2 + rangenext(0,SZ#1)
|
||||
(bool~) main::$0 ← (byte) main::sub#1 != rangelast(0,SZ#1)
|
||||
(byte) main::sub#1 ← (byte) main::sub#2 + rangenext(0,SZ#0)
|
||||
(bool~) main::$0 ← (byte) main::sub#1 != rangelast(0,SZ#0)
|
||||
if((bool~) main::$0) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte) SZ#3 ← phi( @begin/(byte) SZ#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -36,9 +34,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte) SZ
|
||||
(byte) SZ#0
|
||||
(byte) SZ#1
|
||||
(byte) SZ#2
|
||||
(byte) SZ#3
|
||||
(byte[SZ#0]) items
|
||||
(byte[SZ#0]) items#0
|
||||
(void()) main()
|
||||
@ -55,16 +50,11 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) SZ#0 = (byte) SZ#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::cur_item#1
|
||||
Self Phi Eliminated (byte) SZ#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) SZ#2 (byte) SZ#0
|
||||
Redundant Phi (byte*) main::cur_item#1 (byte*) main::cur_item#0
|
||||
Redundant Phi (byte) SZ#1 (byte) SZ#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$0 [9] if((byte) main::sub#1!=rangelast(0,SZ#0)) goto main::@1
|
||||
Simple Condition (bool~) main::$0 [8] if((byte) main::sub#1!=rangelast(0,SZ#0)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) SZ#0 = $f
|
||||
Constant (const byte) main::sub#0 = 0
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte) ITEM_COUNT
|
||||
Identified constant variable (byte) ITEM_SIZE
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -7,21 +9,17 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte[$0]) items#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte) ITEM_SIZE#3 ← phi( @1/(byte) ITEM_SIZE#5 )
|
||||
(byte) ITEM_COUNT#1 ← phi( @1/(byte) ITEM_COUNT#2 )
|
||||
(byte*) main::cur_item#0 ← (byte[$0]) items#0
|
||||
(byte/signed word/word/dword/signed dword~) main::$0 ← (byte) ITEM_COUNT#1 - (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/signed word/word/dword/signed dword~) main::$0 ← (byte) ITEM_COUNT#0 - (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::item#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
(byte*) main::cur_item#4 ← phi( main/(byte*) main::cur_item#0 main::@3/(byte*) main::cur_item#1 )
|
||||
(byte) main::item#4 ← phi( main/(byte) main::item#0 main::@3/(byte) main::item#1 )
|
||||
(byte) ITEM_SIZE#1 ← phi( main/(byte) ITEM_SIZE#3 main::@3/(byte) ITEM_SIZE#2 )
|
||||
(byte/signed word/word/dword/signed dword~) main::$1 ← (byte) ITEM_SIZE#1 - (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/signed word/word/dword/signed dword~) main::$1 ← (byte) ITEM_SIZE#0 - (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::sub#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
(byte) ITEM_SIZE#4 ← phi( main::@1/(byte) ITEM_SIZE#1 main::@2/(byte) ITEM_SIZE#4 )
|
||||
(byte*) main::cur_item#2 ← phi( main::@1/(byte*) main::cur_item#4 main::@2/(byte*) main::cur_item#2 )
|
||||
(byte) main::sub#2 ← phi( main::@1/(byte) main::sub#0 main::@2/(byte) main::sub#1 )
|
||||
(byte) main::item#2 ← phi( main::@1/(byte) main::item#4 main::@2/(byte) main::item#2 )
|
||||
@ -34,9 +32,8 @@ main::@2: scope:[main] from main::@1 main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte) main::item#3 ← phi( main::@2/(byte) main::item#2 )
|
||||
(byte) ITEM_SIZE#2 ← phi( main::@2/(byte) ITEM_SIZE#4 )
|
||||
(byte*) main::cur_item#3 ← phi( main::@2/(byte*) main::cur_item#2 )
|
||||
(byte*) main::cur_item#1 ← (byte*) main::cur_item#3 + (byte) ITEM_SIZE#2
|
||||
(byte*) main::cur_item#1 ← (byte*) main::cur_item#3 + (byte) ITEM_SIZE#0
|
||||
(byte) main::item#1 ← (byte) main::item#3 + rangenext(0,main::$0)
|
||||
(bool~) main::$5 ← (byte) main::item#1 != rangelast(0,main::$0)
|
||||
if((bool~) main::$5) goto main::@1
|
||||
@ -45,8 +42,6 @@ main::@return: scope:[main] from main::@3
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte) ITEM_SIZE#5 ← phi( @begin/(byte) ITEM_SIZE#0 )
|
||||
(byte) ITEM_COUNT#2 ← phi( @begin/(byte) ITEM_COUNT#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -61,15 +56,8 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte) ITEM_COUNT
|
||||
(byte) ITEM_COUNT#0
|
||||
(byte) ITEM_COUNT#1
|
||||
(byte) ITEM_COUNT#2
|
||||
(byte) ITEM_SIZE
|
||||
(byte) ITEM_SIZE#0
|
||||
(byte) ITEM_SIZE#1
|
||||
(byte) ITEM_SIZE#2
|
||||
(byte) ITEM_SIZE#3
|
||||
(byte) ITEM_SIZE#4
|
||||
(byte) ITEM_SIZE#5
|
||||
(byte[$0]) items
|
||||
(byte[$0]) items#0
|
||||
(void()) main()
|
||||
@ -103,23 +91,16 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::cur_item#2 = (byte*) main::cur_item#3
|
||||
Alias (byte) ITEM_SIZE#2 = (byte) ITEM_SIZE#4
|
||||
Alias (byte) main::item#2 = (byte) main::item#3
|
||||
Alias (byte) ITEM_COUNT#0 = (byte) ITEM_COUNT#2
|
||||
Alias (byte) ITEM_SIZE#0 = (byte) ITEM_SIZE#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) main::item#2
|
||||
Self Phi Eliminated (byte*) main::cur_item#2
|
||||
Self Phi Eliminated (byte) ITEM_SIZE#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) ITEM_COUNT#1 (byte) ITEM_COUNT#0
|
||||
Redundant Phi (byte) ITEM_SIZE#3 (byte) ITEM_SIZE#0
|
||||
Redundant Phi (byte) main::item#2 (byte) main::item#4
|
||||
Redundant Phi (byte*) main::cur_item#2 (byte*) main::cur_item#4
|
||||
Redundant Phi (byte) ITEM_SIZE#2 (byte) ITEM_SIZE#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$4 [17] if((byte) main::sub#1!=rangelast(0,main::$1)) goto main::@2
|
||||
Simple Condition (bool~) main::$5 [22] if((byte) main::item#1!=rangelast(0,main::$0)) goto main::@1
|
||||
Simple Condition (bool~) main::$4 [16] if((byte) main::sub#1!=rangelast(0,main::$1)) goto main::@2
|
||||
Simple Condition (bool~) main::$5 [21] if((byte) main::item#1!=rangelast(0,main::$0)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) ITEM_COUNT#0 = 3
|
||||
Constant (const byte) ITEM_SIZE#0 = 5
|
||||
@ -130,17 +111,12 @@ Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) $0 = ITEM_COUNT#0*ITEM_SIZE#0
|
||||
Constant (const byte*) main::cur_item#0 = items#0
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$0 = ITEM_COUNT#0-1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Resolved ranged next value main::item#1 ← ++ main::item#4 to ++
|
||||
Resolved ranged comparison value if(main::item#1!=rangelast(0,main::$0)) goto main::@1 to (const byte/signed word/word/dword/signed dword) main::$0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Self Phi Eliminated (byte) ITEM_SIZE#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) ITEM_SIZE#1 (const byte) ITEM_SIZE#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$1 = ITEM_SIZE#0-1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Resolved ranged next value main::sub#1 ← ++ main::sub#2 to ++
|
||||
Resolved ranged comparison value if(main::sub#1!=rangelast(0,main::$1)) goto main::@2 to (const byte/signed word/word/dword/signed dword) main::$1+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Resolved ranged next value main::item#1 ← ++ main::item#4 to ++
|
||||
Resolved ranged comparison value if(main::item#1!=rangelast(0,main::$0)) goto main::@1 to (const byte/signed word/word/dword/signed dword) main::$0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Inlining constant with var siblings (const byte) main::item#0
|
||||
Inlining constant with var siblings (const byte) main::sub#0
|
||||
Inlining constant with var siblings (const byte*) main::cur_item#0
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -7,19 +8,17 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
|
||||
*((byte[3]) b#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 'c'
|
||||
*((byte*) SCREEN#1) ← *((byte[3]) b#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)
|
||||
(byte*~) main::$0 ← (byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*) SCREEN#0) ← *((byte[3]) b#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)
|
||||
(byte*~) main::$0 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) main::$0) ← *((byte[]) c#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
|
||||
(byte*~) main::$1 ← (byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*~) main::$1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
*((byte*~) main::$1) ← *((byte[]) d#0 + (byte/signed byte/word/signed word/dword/signed dword) 2)
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#2 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -34,8 +33,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte[3]) b
|
||||
(byte[3]) b#0
|
||||
(byte[]) c
|
||||
@ -49,10 +46,6 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte[3]) b#0 = { fill( 3, 0) }
|
||||
Constant (const byte[]) c#0 = { 'c', 'm', 'l' }
|
||||
Constant (const byte[]) d#0 = $0
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,7 @@
|
||||
Identified constant variable (byte*) screen1
|
||||
Identified constant variable (byte*) cols
|
||||
Identified constant variable (byte) GREEN
|
||||
Identified constant variable (byte) RED
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -10,11 +14,7 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte) RED#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte) RED#3 ← phi( @2/(byte) RED#14 )
|
||||
(byte*) cols#4 ← phi( @2/(byte*) cols#15 )
|
||||
(byte) GREEN#3 ← phi( @2/(byte) GREEN#14 )
|
||||
(byte*) screen2#2 ← phi( @2/(byte*) screen2#13 )
|
||||
(byte*) screen1#2 ← phi( @2/(byte*) screen1#13 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::a#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte) test::i#0 ← (byte) main::i#0
|
||||
@ -22,11 +22,7 @@ main: scope:[main] from @2
|
||||
call test
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte) RED#4 ← phi( main/(byte) RED#3 )
|
||||
(byte*) cols#5 ← phi( main/(byte*) cols#4 )
|
||||
(byte) GREEN#4 ← phi( main/(byte) GREEN#3 )
|
||||
(byte*) screen2#3 ← phi( main/(byte*) screen2#2 )
|
||||
(byte*) screen1#3 ← phi( main/(byte*) screen1#2 )
|
||||
(byte) main::a#11 ← phi( main/(byte) main::a#0 )
|
||||
(byte) main::i#12 ← phi( main/(byte) main::i#0 )
|
||||
(byte) main::i#1 ← ++ (byte) main::i#12
|
||||
@ -36,11 +32,7 @@ main::@1: scope:[main] from main
|
||||
call test
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte) RED#6 ← phi( main::@1/(byte) RED#4 )
|
||||
(byte*) cols#7 ← phi( main::@1/(byte*) cols#5 )
|
||||
(byte) GREEN#6 ← phi( main::@1/(byte) GREEN#4 )
|
||||
(byte*) screen2#5 ← phi( main::@1/(byte*) screen2#3 )
|
||||
(byte*) screen1#5 ← phi( main::@1/(byte*) screen1#3 )
|
||||
(byte) main::a#12 ← phi( main::@1/(byte) main::a#1 )
|
||||
(byte) main::i#13 ← phi( main::@1/(byte) main::i#1 )
|
||||
(byte) main::i#2 ← ++ (byte) main::i#13
|
||||
@ -50,11 +42,7 @@ main::@2: scope:[main] from main::@1
|
||||
call test
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte) RED#7 ← phi( main::@2/(byte) RED#6 )
|
||||
(byte*) cols#8 ← phi( main::@2/(byte*) cols#7 )
|
||||
(byte) GREEN#7 ← phi( main::@2/(byte) GREEN#6 )
|
||||
(byte*) screen2#6 ← phi( main::@2/(byte*) screen2#5 )
|
||||
(byte*) screen1#6 ← phi( main::@2/(byte*) screen1#5 )
|
||||
(byte) main::a#13 ← phi( main::@2/(byte) main::a#2 )
|
||||
(byte) main::i#14 ← phi( main::@2/(byte) main::i#2 )
|
||||
(byte) main::i#3 ← ++ (byte) main::i#14
|
||||
@ -64,11 +52,7 @@ main::@3: scope:[main] from main::@2
|
||||
call test
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
(byte) RED#8 ← phi( main::@3/(byte) RED#7 )
|
||||
(byte*) cols#9 ← phi( main::@3/(byte*) cols#8 )
|
||||
(byte) GREEN#8 ← phi( main::@3/(byte) GREEN#7 )
|
||||
(byte*) screen2#7 ← phi( main::@3/(byte*) screen2#6 )
|
||||
(byte*) screen1#7 ← phi( main::@3/(byte*) screen1#6 )
|
||||
(byte) main::a#14 ← phi( main::@3/(byte) main::a#3 )
|
||||
(byte) main::i#15 ← phi( main::@3/(byte) main::i#3 )
|
||||
(byte) main::i#4 ← ++ (byte) main::i#15
|
||||
@ -78,11 +62,7 @@ main::@4: scope:[main] from main::@3
|
||||
call test
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
(byte) RED#9 ← phi( main::@4/(byte) RED#8 )
|
||||
(byte*) cols#10 ← phi( main::@4/(byte*) cols#9 )
|
||||
(byte) GREEN#9 ← phi( main::@4/(byte) GREEN#8 )
|
||||
(byte*) screen2#8 ← phi( main::@4/(byte*) screen2#7 )
|
||||
(byte*) screen1#8 ← phi( main::@4/(byte*) screen1#7 )
|
||||
(byte) main::a#15 ← phi( main::@4/(byte) main::a#4 )
|
||||
(byte) main::i#16 ← phi( main::@4/(byte) main::i#4 )
|
||||
(byte) main::i#5 ← ++ (byte) main::i#16
|
||||
@ -92,11 +72,7 @@ main::@5: scope:[main] from main::@4
|
||||
call test
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
(byte) RED#10 ← phi( main::@5/(byte) RED#9 )
|
||||
(byte*) cols#11 ← phi( main::@5/(byte*) cols#10 )
|
||||
(byte) GREEN#10 ← phi( main::@5/(byte) GREEN#9 )
|
||||
(byte*) screen2#9 ← phi( main::@5/(byte*) screen2#8 )
|
||||
(byte*) screen1#9 ← phi( main::@5/(byte*) screen1#8 )
|
||||
(byte) main::a#16 ← phi( main::@5/(byte) main::a#5 )
|
||||
(byte) main::i#17 ← phi( main::@5/(byte) main::i#5 )
|
||||
(byte) main::i#6 ← ++ (byte) main::i#17
|
||||
@ -106,11 +82,7 @@ main::@6: scope:[main] from main::@5
|
||||
call test
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
(byte) RED#11 ← phi( main::@6/(byte) RED#10 )
|
||||
(byte*) cols#12 ← phi( main::@6/(byte*) cols#11 )
|
||||
(byte) GREEN#11 ← phi( main::@6/(byte) GREEN#10 )
|
||||
(byte*) screen2#10 ← phi( main::@6/(byte*) screen2#9 )
|
||||
(byte*) screen1#10 ← phi( main::@6/(byte*) screen1#9 )
|
||||
(byte) main::a#17 ← phi( main::@6/(byte) main::a#6 )
|
||||
(byte) main::i#18 ← phi( main::@6/(byte) main::i#6 )
|
||||
(byte) main::i#7 ← ++ (byte) main::i#18
|
||||
@ -120,11 +92,7 @@ main::@7: scope:[main] from main::@6
|
||||
call test
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
(byte) RED#12 ← phi( main::@7/(byte) RED#11 )
|
||||
(byte*) cols#13 ← phi( main::@7/(byte*) cols#12 )
|
||||
(byte) GREEN#12 ← phi( main::@7/(byte) GREEN#11 )
|
||||
(byte*) screen2#11 ← phi( main::@7/(byte*) screen2#10 )
|
||||
(byte*) screen1#11 ← phi( main::@7/(byte*) screen1#10 )
|
||||
(byte) main::a#18 ← phi( main::@7/(byte) main::a#7 )
|
||||
(byte) main::i#19 ← phi( main::@7/(byte) main::i#7 )
|
||||
(byte) main::i#8 ← ++ (byte) main::i#19
|
||||
@ -134,11 +102,7 @@ main::@8: scope:[main] from main::@7
|
||||
call test
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
(byte) RED#13 ← phi( main::@8/(byte) RED#12 )
|
||||
(byte*) cols#14 ← phi( main::@8/(byte*) cols#13 )
|
||||
(byte) GREEN#13 ← phi( main::@8/(byte) GREEN#12 )
|
||||
(byte*) screen2#12 ← phi( main::@8/(byte*) screen2#11 )
|
||||
(byte*) screen1#12 ← phi( main::@8/(byte*) screen1#11 )
|
||||
(byte) main::a#19 ← phi( main::@8/(byte) main::a#8 )
|
||||
(byte) main::i#20 ← phi( main::@8/(byte) main::i#8 )
|
||||
(byte) main::i#9 ← ++ (byte) main::i#20
|
||||
@ -148,11 +112,7 @@ main::@9: scope:[main] from main::@8
|
||||
call test
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
(byte) RED#5 ← phi( main::@9/(byte) RED#13 )
|
||||
(byte*) cols#6 ← phi( main::@9/(byte*) cols#14 )
|
||||
(byte) GREEN#5 ← phi( main::@9/(byte) GREEN#13 )
|
||||
(byte*) screen2#4 ← phi( main::@9/(byte*) screen2#12 )
|
||||
(byte*) screen1#4 ← phi( main::@9/(byte*) screen1#12 )
|
||||
(byte) main::a#20 ← phi( main::@9/(byte) main::a#9 )
|
||||
(byte) main::i#21 ← phi( main::@9/(byte) main::i#9 )
|
||||
(byte) main::i#10 ← ++ (byte) main::i#21
|
||||
@ -169,39 +129,27 @@ main::@return: scope:[main] from main::@11
|
||||
return
|
||||
to:@return
|
||||
test: scope:[test] from main main::@1 main::@10 main::@2 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9
|
||||
(byte) RED#2 ← phi( main/(byte) RED#3 main::@1/(byte) RED#4 main::@10/(byte) RED#5 main::@2/(byte) RED#6 main::@3/(byte) RED#7 main::@4/(byte) RED#8 main::@5/(byte) RED#9 main::@6/(byte) RED#10 main::@7/(byte) RED#11 main::@8/(byte) RED#12 main::@9/(byte) RED#13 )
|
||||
(byte*) cols#3 ← phi( main/(byte*) cols#4 main::@1/(byte*) cols#5 main::@10/(byte*) cols#6 main::@2/(byte*) cols#7 main::@3/(byte*) cols#8 main::@4/(byte*) cols#9 main::@5/(byte*) cols#10 main::@6/(byte*) cols#11 main::@7/(byte*) cols#12 main::@8/(byte*) cols#13 main::@9/(byte*) cols#14 )
|
||||
(byte) GREEN#2 ← phi( main/(byte) GREEN#3 main::@1/(byte) GREEN#4 main::@10/(byte) GREEN#5 main::@2/(byte) GREEN#6 main::@3/(byte) GREEN#7 main::@4/(byte) GREEN#8 main::@5/(byte) GREEN#9 main::@6/(byte) GREEN#10 main::@7/(byte) GREEN#11 main::@8/(byte) GREEN#12 main::@9/(byte) GREEN#13 )
|
||||
(byte*) screen2#1 ← phi( main/(byte*) screen2#2 main::@1/(byte*) screen2#3 main::@10/(byte*) screen2#4 main::@2/(byte*) screen2#5 main::@3/(byte*) screen2#6 main::@4/(byte*) screen2#7 main::@5/(byte*) screen2#8 main::@6/(byte*) screen2#9 main::@7/(byte*) screen2#10 main::@8/(byte*) screen2#11 main::@9/(byte*) screen2#12 )
|
||||
(byte) test::i#11 ← phi( main/(byte) test::i#0 main::@1/(byte) test::i#1 main::@10/(byte) test::i#10 main::@2/(byte) test::i#2 main::@3/(byte) test::i#3 main::@4/(byte) test::i#4 main::@5/(byte) test::i#5 main::@6/(byte) test::i#6 main::@7/(byte) test::i#7 main::@8/(byte) test::i#8 main::@9/(byte) test::i#9 )
|
||||
(byte*) screen1#1 ← phi( main/(byte*) screen1#2 main::@1/(byte*) screen1#3 main::@10/(byte*) screen1#4 main::@2/(byte*) screen1#5 main::@3/(byte*) screen1#6 main::@4/(byte*) screen1#7 main::@5/(byte*) screen1#8 main::@6/(byte*) screen1#9 main::@7/(byte*) screen1#10 main::@8/(byte*) screen1#11 main::@9/(byte*) screen1#12 )
|
||||
(byte) test::a#11 ← phi( main/(byte) test::a#0 main::@1/(byte) test::a#1 main::@10/(byte) test::a#10 main::@2/(byte) test::a#2 main::@3/(byte) test::a#3 main::@4/(byte) test::a#4 main::@5/(byte) test::a#5 main::@6/(byte) test::a#6 main::@7/(byte) test::a#7 main::@8/(byte) test::a#8 main::@9/(byte) test::a#9 )
|
||||
*((byte*) screen1#1 + (byte) test::i#11) ← (byte) test::a#11
|
||||
*((byte*) screen1#0 + (byte) test::i#11) ← (byte) test::a#11
|
||||
*((byte*) screen2#1 + (byte) test::i#11) ← *((byte[]) ref#0 + (byte) test::i#11)
|
||||
(bool~) test::$0 ← *((byte[]) ref#0 + (byte) test::i#11) == (byte) test::a#11
|
||||
if((bool~) test::$0) goto test::@1
|
||||
to:test::@3
|
||||
test::@1: scope:[test] from test
|
||||
(byte) test::i#12 ← phi( test/(byte) test::i#11 )
|
||||
(byte*) cols#1 ← phi( test/(byte*) cols#3 )
|
||||
(byte) GREEN#1 ← phi( test/(byte) GREEN#2 )
|
||||
*((byte*) cols#1 + (byte) test::i#12) ← (byte) GREEN#1
|
||||
*((byte*) cols#0 + (byte) test::i#12) ← (byte) GREEN#0
|
||||
to:test::@return
|
||||
test::@3: scope:[test] from test
|
||||
(byte) test::i#13 ← phi( test/(byte) test::i#11 )
|
||||
(byte*) cols#2 ← phi( test/(byte*) cols#3 )
|
||||
(byte) RED#1 ← phi( test/(byte) RED#2 )
|
||||
*((byte*) cols#2 + (byte) test::i#13) ← (byte) RED#1
|
||||
*((byte*) cols#0 + (byte) test::i#13) ← (byte) RED#0
|
||||
to:test::@return
|
||||
test::@return: scope:[test] from test::@1 test::@3
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte) RED#14 ← phi( @begin/(byte) RED#0 )
|
||||
(byte*) cols#15 ← phi( @begin/(byte*) cols#0 )
|
||||
(byte) GREEN#14 ← phi( @begin/(byte) GREEN#0 )
|
||||
(byte*) screen2#13 ← phi( @begin/(byte*) screen2#0 )
|
||||
(byte*) screen1#13 ← phi( @begin/(byte*) screen1#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -216,53 +164,10 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte) GREEN
|
||||
(byte) GREEN#0
|
||||
(byte) GREEN#1
|
||||
(byte) GREEN#10
|
||||
(byte) GREEN#11
|
||||
(byte) GREEN#12
|
||||
(byte) GREEN#13
|
||||
(byte) GREEN#14
|
||||
(byte) GREEN#2
|
||||
(byte) GREEN#3
|
||||
(byte) GREEN#4
|
||||
(byte) GREEN#5
|
||||
(byte) GREEN#6
|
||||
(byte) GREEN#7
|
||||
(byte) GREEN#8
|
||||
(byte) GREEN#9
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte) RED#1
|
||||
(byte) RED#10
|
||||
(byte) RED#11
|
||||
(byte) RED#12
|
||||
(byte) RED#13
|
||||
(byte) RED#14
|
||||
(byte) RED#2
|
||||
(byte) RED#3
|
||||
(byte) RED#4
|
||||
(byte) RED#5
|
||||
(byte) RED#6
|
||||
(byte) RED#7
|
||||
(byte) RED#8
|
||||
(byte) RED#9
|
||||
(byte*) cols
|
||||
(byte*) cols#0
|
||||
(byte*) cols#1
|
||||
(byte*) cols#10
|
||||
(byte*) cols#11
|
||||
(byte*) cols#12
|
||||
(byte*) cols#13
|
||||
(byte*) cols#14
|
||||
(byte*) cols#15
|
||||
(byte*) cols#2
|
||||
(byte*) cols#3
|
||||
(byte*) cols#4
|
||||
(byte*) cols#5
|
||||
(byte*) cols#6
|
||||
(byte*) cols#7
|
||||
(byte*) cols#8
|
||||
(byte*) cols#9
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
@ -326,19 +231,6 @@ SYMBOL TABLE SSA
|
||||
(byte[]) ref#0
|
||||
(byte*) screen1
|
||||
(byte*) screen1#0
|
||||
(byte*) screen1#1
|
||||
(byte*) screen1#10
|
||||
(byte*) screen1#11
|
||||
(byte*) screen1#12
|
||||
(byte*) screen1#13
|
||||
(byte*) screen1#2
|
||||
(byte*) screen1#3
|
||||
(byte*) screen1#4
|
||||
(byte*) screen1#5
|
||||
(byte*) screen1#6
|
||||
(byte*) screen1#7
|
||||
(byte*) screen1#8
|
||||
(byte*) screen1#9
|
||||
(byte*) screen2
|
||||
(byte*) screen2#0
|
||||
(byte*) screen2#1
|
||||
@ -393,11 +285,7 @@ Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) screen2#0 = (byte*~) $0 (byte*) screen2#13
|
||||
Alias (byte) main::i#0 = (byte) main::i#12
|
||||
Alias (byte) main::a#0 = (byte) main::a#11
|
||||
Alias (byte*) screen1#10 = (byte*) screen1#3 (byte*) screen1#2 (byte*) screen1#5 (byte*) screen1#6 (byte*) screen1#7 (byte*) screen1#8 (byte*) screen1#9 (byte*) screen1#11 (byte*) screen1#12 (byte*) screen1#4
|
||||
Alias (byte*) screen2#10 = (byte*) screen2#3 (byte*) screen2#2 (byte*) screen2#5 (byte*) screen2#6 (byte*) screen2#7 (byte*) screen2#8 (byte*) screen2#9 (byte*) screen2#11 (byte*) screen2#12 (byte*) screen2#4
|
||||
Alias (byte) GREEN#10 = (byte) GREEN#4 (byte) GREEN#3 (byte) GREEN#6 (byte) GREEN#7 (byte) GREEN#8 (byte) GREEN#9 (byte) GREEN#11 (byte) GREEN#12 (byte) GREEN#13 (byte) GREEN#5
|
||||
Alias (byte*) cols#10 = (byte*) cols#5 (byte*) cols#4 (byte*) cols#7 (byte*) cols#8 (byte*) cols#9 (byte*) cols#11 (byte*) cols#12 (byte*) cols#13 (byte*) cols#14 (byte*) cols#6
|
||||
Alias (byte) RED#10 = (byte) RED#4 (byte) RED#3 (byte) RED#6 (byte) RED#7 (byte) RED#8 (byte) RED#9 (byte) RED#11 (byte) RED#12 (byte) RED#13 (byte) RED#5
|
||||
Alias (byte) main::i#1 = (byte) main::i#13
|
||||
Alias (byte) main::a#1 = (byte) main::a#12
|
||||
Alias (byte) main::i#14 = (byte) main::i#2
|
||||
@ -417,25 +305,10 @@ Alias (byte) main::a#19 = (byte) main::a#8
|
||||
Alias (byte) main::i#21 = (byte) main::i#9
|
||||
Alias (byte) main::a#20 = (byte) main::a#9
|
||||
Alias (byte) main::i#10 = (byte) main::i#22
|
||||
Alias (byte) GREEN#1 = (byte) GREEN#2
|
||||
Alias (byte*) cols#1 = (byte*) cols#3 (byte*) cols#2
|
||||
Alias (byte) test::i#11 = (byte) test::i#12 (byte) test::i#13
|
||||
Alias (byte) RED#1 = (byte) RED#2
|
||||
Alias (byte*) screen1#0 = (byte*) screen1#13
|
||||
Alias (byte) GREEN#0 = (byte) GREEN#14
|
||||
Alias (byte*) cols#0 = (byte*) cols#15
|
||||
Alias (byte) RED#0 = (byte) RED#14
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte*) screen1#10 (byte*) screen1#0
|
||||
Redundant Phi (byte*) screen2#10 (byte*) screen2#0
|
||||
Redundant Phi (byte) GREEN#10 (byte) GREEN#0
|
||||
Redundant Phi (byte*) cols#10 (byte*) cols#0
|
||||
Redundant Phi (byte) RED#10 (byte) RED#0
|
||||
Redundant Phi (byte*) screen1#1 (byte*) screen1#10
|
||||
Redundant Phi (byte*) screen2#1 (byte*) screen2#10
|
||||
Redundant Phi (byte) GREEN#1 (byte) GREEN#10
|
||||
Redundant Phi (byte*) cols#1 (byte*) cols#10
|
||||
Redundant Phi (byte) RED#1 (byte) RED#10
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) test::$0 [80] if(*((byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
|
@ -1,3 +1,19 @@
|
||||
Identified constant variable (byte*) D011
|
||||
Identified constant variable (byte) RST8
|
||||
Identified constant variable (byte) ECM
|
||||
Identified constant variable (byte) BMM
|
||||
Identified constant variable (byte) DEN
|
||||
Identified constant variable (byte) RSEL
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte*) D016
|
||||
Identified constant variable (byte) MCM
|
||||
Identified constant variable (byte) CSEL
|
||||
Identified constant variable (byte*) D018
|
||||
Identified constant variable (byte*) BGCOL
|
||||
Identified constant variable (byte*) FGCOL
|
||||
Identified constant variable (byte*) COLS
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte) plots_cnt
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -19,117 +35,67 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) BITMAP#0 ← ((byte*)) (word/signed word/dword/signed dword) $2000
|
||||
to:@1
|
||||
main: scope:[main] from @5
|
||||
(byte) plots_cnt#10 ← phi( @5/(byte) plots_cnt#11 )
|
||||
(byte*) RASTER#6 ← phi( @5/(byte*) RASTER#8 )
|
||||
(byte*) D018#1 ← phi( @5/(byte*) D018#2 )
|
||||
(byte*) SCREEN#1 ← phi( @5/(byte*) SCREEN#4 )
|
||||
(byte*) D011#1 ← phi( @5/(byte*) D011#2 )
|
||||
(byte) RSEL#1 ← phi( @5/(byte) RSEL#2 )
|
||||
(byte) DEN#1 ← phi( @5/(byte) DEN#2 )
|
||||
(byte) BMM#1 ← phi( @5/(byte) BMM#2 )
|
||||
(byte*) FGCOL#1 ← phi( @5/(byte*) FGCOL#2 )
|
||||
(byte*) BGCOL#1 ← phi( @5/(byte*) BGCOL#4 )
|
||||
*((byte*) BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
*((byte*) FGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte~) main::$0 ← (byte) BMM#1 | (byte) DEN#1
|
||||
(byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#1
|
||||
*((byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
*((byte*) FGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte~) main::$0 ← (byte) BMM#0 | (byte) DEN#0
|
||||
(byte~) main::$1 ← (byte~) main::$0 | (byte) RSEL#0
|
||||
(byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
*((byte*) D011#1) ← (byte/word/dword~) main::$2
|
||||
(word~) main::$3 ← ((word)) (byte*) SCREEN#1
|
||||
*((byte*) D011#0) ← (byte/word/dword~) main::$2
|
||||
(word~) main::$3 ← ((word)) (byte*) SCREEN#0
|
||||
(word/signed dword/dword~) main::$4 ← (word~) main::$3 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(word~) main::$5 ← ((word)) (byte*) BITMAP#0
|
||||
(word/signed dword/dword~) main::$6 ← (word~) main::$5 / (word/signed word/dword/signed dword) $400
|
||||
(word/dword~) main::$7 ← (word/signed dword/dword~) main::$4 | (word/signed dword/dword~) main::$6
|
||||
(byte~) main::$8 ← ((byte)) (word/dword~) main::$7
|
||||
*((byte*) D018#1) ← (byte~) main::$8
|
||||
*((byte*) D018#0) ← (byte~) main::$8
|
||||
call init_screen
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main
|
||||
(byte) plots_cnt#8 ← phi( main/(byte) plots_cnt#10 )
|
||||
(byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#1 )
|
||||
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#6 )
|
||||
call init_plot_tables
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
(byte) plots_cnt#7 ← phi( main::@5/(byte) plots_cnt#8 )
|
||||
(byte*) BGCOL#7 ← phi( main::@5/(byte*) BGCOL#9 )
|
||||
(byte*) RASTER#3 ← phi( main::@5/(byte*) RASTER#4 )
|
||||
to:main::@2
|
||||
main::@1: scope:[main] from main::@7
|
||||
(byte) plots_cnt#6 ← phi( main::@7/(byte) plots_cnt#9 )
|
||||
(byte*) BGCOL#6 ← phi( main::@7/(byte*) BGCOL#3 )
|
||||
(byte*) RASTER#2 ← phi( main::@7/(byte*) RASTER#5 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2 main::@6
|
||||
(byte) plots_cnt#5 ← phi( main::@1/(byte) plots_cnt#6 main::@2/(byte) plots_cnt#5 main::@6/(byte) plots_cnt#7 )
|
||||
(byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#6 main::@2/(byte*) BGCOL#5 main::@6/(byte*) BGCOL#7 )
|
||||
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#2 main::@2/(byte*) RASTER#1 main::@6/(byte*) RASTER#3 )
|
||||
(bool~) main::$11 ← *((byte*) RASTER#1) != (byte/word/signed word/dword/signed dword) $ff
|
||||
(bool~) main::$11 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) main::$11) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte) plots_cnt#4 ← phi( main::@2/(byte) plots_cnt#5 )
|
||||
(byte*) RASTER#7 ← phi( main::@2/(byte*) RASTER#1 )
|
||||
(byte*) BGCOL#2 ← phi( main::@2/(byte*) BGCOL#5 )
|
||||
*((byte*) BGCOL#2) ← ++ *((byte*) BGCOL#2)
|
||||
*((byte*) BGCOL#0) ← ++ *((byte*) BGCOL#0)
|
||||
call plots
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@3
|
||||
(byte) plots_cnt#9 ← phi( main::@3/(byte) plots_cnt#4 )
|
||||
(byte*) RASTER#5 ← phi( main::@3/(byte*) RASTER#7 )
|
||||
(byte*) BGCOL#3 ← phi( main::@3/(byte*) BGCOL#2 )
|
||||
*((byte*) BGCOL#3) ← -- *((byte*) BGCOL#3)
|
||||
*((byte*) BGCOL#0) ← -- *((byte*) BGCOL#0)
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@7
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) RASTER#10 ← phi( @begin/(byte*) RASTER#0 )
|
||||
(byte*) D018#4 ← phi( @begin/(byte*) D018#0 )
|
||||
(byte*) SCREEN#8 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
(byte*) D011#4 ← phi( @begin/(byte*) D011#0 )
|
||||
(byte) RSEL#4 ← phi( @begin/(byte) RSEL#0 )
|
||||
(byte) DEN#4 ← phi( @begin/(byte) DEN#0 )
|
||||
(byte) BMM#4 ← phi( @begin/(byte) BMM#0 )
|
||||
(byte*) FGCOL#4 ← phi( @begin/(byte*) FGCOL#0 )
|
||||
(byte*) BGCOL#10 ← phi( @begin/(byte*) BGCOL#0 )
|
||||
(byte[]) plots_x#0 ← { (byte/signed byte/word/signed word/dword/signed dword) $3c, (byte/signed byte/word/signed word/dword/signed dword) $50, (byte/signed byte/word/signed word/dword/signed dword) $6e, (byte/signed byte/word/signed word/dword/signed dword) $50, (byte/signed byte/word/signed word/dword/signed dword) $3c, (byte/signed byte/word/signed word/dword/signed dword) $28, (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $28 }
|
||||
(byte[]) plots_y#0 ← { (byte/signed byte/word/signed word/dword/signed dword) $a, (byte/signed byte/word/signed word/dword/signed dword) $28, (byte/signed byte/word/signed word/dword/signed dword) $3c, (byte/signed byte/word/signed word/dword/signed dword) $50, (byte/signed byte/word/signed word/dword/signed dword) $6e, (byte/signed byte/word/signed word/dword/signed dword) $50, (byte/signed byte/word/signed word/dword/signed dword) $3c, (byte/signed byte/word/signed word/dword/signed dword) $28 }
|
||||
(byte) plots_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:@2
|
||||
plots: scope:[plots] from main::@3
|
||||
(byte) plots_cnt#3 ← phi( main::@3/(byte) plots_cnt#4 )
|
||||
(byte) plots::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:plots::@1
|
||||
plots::@1: scope:[plots] from plots plots::@3
|
||||
(byte) plots_cnt#2 ← phi( plots/(byte) plots_cnt#3 plots::@3/(byte) plots_cnt#1 )
|
||||
(byte) plots::i#2 ← phi( plots/(byte) plots::i#0 plots::@3/(byte) plots::i#1 )
|
||||
(byte) plot::x#0 ← *((byte[]) plots_x#0 + (byte) plots::i#2)
|
||||
(byte) plot::y#0 ← *((byte[]) plots_y#0 + (byte) plots::i#2)
|
||||
call plot
|
||||
to:plots::@3
|
||||
plots::@3: scope:[plots] from plots::@1
|
||||
(byte) plots_cnt#1 ← phi( plots::@1/(byte) plots_cnt#2 )
|
||||
(byte) plots::i#3 ← phi( plots::@1/(byte) plots::i#2 )
|
||||
(byte) plots::i#1 ← ++ (byte) plots::i#3
|
||||
(bool~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#1
|
||||
(bool~) plots::$1 ← (byte) plots::i#1 < (byte) plots_cnt#0
|
||||
if((bool~) plots::$1) goto plots::@1
|
||||
to:plots::@return
|
||||
plots::@return: scope:[plots] from plots::@3
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @1
|
||||
(byte) plots_cnt#12 ← phi( @1/(byte) plots_cnt#0 )
|
||||
(byte*) RASTER#9 ← phi( @1/(byte*) RASTER#10 )
|
||||
(byte*) D018#3 ← phi( @1/(byte*) D018#4 )
|
||||
(byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
|
||||
(byte*) D011#3 ← phi( @1/(byte*) D011#4 )
|
||||
(byte) RSEL#3 ← phi( @1/(byte) RSEL#4 )
|
||||
(byte) DEN#3 ← phi( @1/(byte) DEN#4 )
|
||||
(byte) BMM#3 ← phi( @1/(byte) BMM#4 )
|
||||
(byte*) FGCOL#3 ← phi( @1/(byte*) FGCOL#4 )
|
||||
(byte*) BGCOL#8 ← phi( @1/(byte*) BGCOL#10 )
|
||||
(byte[$100]) plot_xlo#0 ← { fill( $100, 0) }
|
||||
(byte[$100]) plot_xhi#0 ← { fill( $100, 0) }
|
||||
(byte[$100]) plot_ylo#0 ← { fill( $100, 0) }
|
||||
@ -222,11 +188,9 @@ init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||
return
|
||||
to:@return
|
||||
init_screen: scope:[init_screen] from main
|
||||
(byte*) SCREEN#6 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte*) init_screen::b#0 ← (byte*) BITMAP#0
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
(byte*) SCREEN#5 ← phi( init_screen/(byte*) SCREEN#6 init_screen::@1/(byte*) SCREEN#5 )
|
||||
(byte*) init_screen::b#2 ← phi( init_screen/(byte*) init_screen::b#0 init_screen::@1/(byte*) init_screen::b#1 )
|
||||
*((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2
|
||||
@ -235,15 +199,13 @@ init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
if((bool~) init_screen::$1) goto init_screen::@1
|
||||
to:init_screen::@3
|
||||
init_screen::@3: scope:[init_screen] from init_screen::@1
|
||||
(byte*) SCREEN#2 ← phi( init_screen::@1/(byte*) SCREEN#5 )
|
||||
(byte*) init_screen::c#0 ← (byte*) SCREEN#2
|
||||
(byte*) init_screen::c#0 ← (byte*) SCREEN#0
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
(byte*) SCREEN#3 ← phi( init_screen::@2/(byte*) SCREEN#3 init_screen::@3/(byte*) SCREEN#2 )
|
||||
(byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@3/(byte*) init_screen::c#0 )
|
||||
*((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) $14
|
||||
(byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2
|
||||
(byte*~) init_screen::$2 ← (byte*) SCREEN#3 + (word/signed word/dword/signed dword) $400
|
||||
(byte*~) init_screen::$2 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $400
|
||||
(bool~) init_screen::$3 ← (byte*) init_screen::c#1 != (byte*~) init_screen::$2
|
||||
if((bool~) init_screen::$3) goto init_screen::@2
|
||||
to:init_screen::@return
|
||||
@ -251,16 +213,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
return
|
||||
to:@return
|
||||
@5: scope:[] from @2
|
||||
(byte) plots_cnt#11 ← phi( @2/(byte) plots_cnt#12 )
|
||||
(byte*) RASTER#8 ← phi( @2/(byte*) RASTER#9 )
|
||||
(byte*) D018#2 ← phi( @2/(byte*) D018#3 )
|
||||
(byte*) SCREEN#4 ← phi( @2/(byte*) SCREEN#7 )
|
||||
(byte*) D011#2 ← phi( @2/(byte*) D011#3 )
|
||||
(byte) RSEL#2 ← phi( @2/(byte) RSEL#3 )
|
||||
(byte) DEN#2 ← phi( @2/(byte) DEN#3 )
|
||||
(byte) BMM#2 ← phi( @2/(byte) BMM#3 )
|
||||
(byte*) FGCOL#2 ← phi( @2/(byte*) FGCOL#3 )
|
||||
(byte*) BGCOL#4 ← phi( @2/(byte*) BGCOL#8 )
|
||||
call main
|
||||
to:@6
|
||||
@6: scope:[] from @5
|
||||
@ -276,88 +228,36 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL#1
|
||||
(byte*) BGCOL#10
|
||||
(byte*) BGCOL#2
|
||||
(byte*) BGCOL#3
|
||||
(byte*) BGCOL#4
|
||||
(byte*) BGCOL#5
|
||||
(byte*) BGCOL#6
|
||||
(byte*) BGCOL#7
|
||||
(byte*) BGCOL#8
|
||||
(byte*) BGCOL#9
|
||||
(byte*) BITMAP
|
||||
(byte*) BITMAP#0
|
||||
(byte) BMM
|
||||
(byte) BMM#0
|
||||
(byte) BMM#1
|
||||
(byte) BMM#2
|
||||
(byte) BMM#3
|
||||
(byte) BMM#4
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte) CSEL
|
||||
(byte) CSEL#0
|
||||
(byte*) D011
|
||||
(byte*) D011#0
|
||||
(byte*) D011#1
|
||||
(byte*) D011#2
|
||||
(byte*) D011#3
|
||||
(byte*) D011#4
|
||||
(byte*) D016
|
||||
(byte*) D016#0
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte*) D018#1
|
||||
(byte*) D018#2
|
||||
(byte*) D018#3
|
||||
(byte*) D018#4
|
||||
(byte) DEN
|
||||
(byte) DEN#0
|
||||
(byte) DEN#1
|
||||
(byte) DEN#2
|
||||
(byte) DEN#3
|
||||
(byte) DEN#4
|
||||
(byte) ECM
|
||||
(byte) ECM#0
|
||||
(byte*) FGCOL
|
||||
(byte*) FGCOL#0
|
||||
(byte*) FGCOL#1
|
||||
(byte*) FGCOL#2
|
||||
(byte*) FGCOL#3
|
||||
(byte*) FGCOL#4
|
||||
(byte) MCM
|
||||
(byte) MCM#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte*) RASTER#1
|
||||
(byte*) RASTER#10
|
||||
(byte*) RASTER#2
|
||||
(byte*) RASTER#3
|
||||
(byte*) RASTER#4
|
||||
(byte*) RASTER#5
|
||||
(byte*) RASTER#6
|
||||
(byte*) RASTER#7
|
||||
(byte*) RASTER#8
|
||||
(byte*) RASTER#9
|
||||
(byte) RSEL
|
||||
(byte) RSEL#0
|
||||
(byte) RSEL#1
|
||||
(byte) RSEL#2
|
||||
(byte) RSEL#3
|
||||
(byte) RSEL#4
|
||||
(byte) RST8
|
||||
(byte) RST8#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(void()) init_plot_tables()
|
||||
(byte~) init_plot_tables::$0
|
||||
(byte~) init_plot_tables::$1
|
||||
@ -488,96 +388,40 @@ SYMBOL TABLE SSA
|
||||
(byte) plots::i#3
|
||||
(byte) plots_cnt
|
||||
(byte) plots_cnt#0
|
||||
(byte) plots_cnt#1
|
||||
(byte) plots_cnt#10
|
||||
(byte) plots_cnt#11
|
||||
(byte) plots_cnt#12
|
||||
(byte) plots_cnt#2
|
||||
(byte) plots_cnt#3
|
||||
(byte) plots_cnt#4
|
||||
(byte) plots_cnt#5
|
||||
(byte) plots_cnt#6
|
||||
(byte) plots_cnt#7
|
||||
(byte) plots_cnt#8
|
||||
(byte) plots_cnt#9
|
||||
(byte[]) plots_x
|
||||
(byte[]) plots_x#0
|
||||
(byte[]) plots_y
|
||||
(byte[]) plots_y#0
|
||||
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [93] (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [92] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [112] (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [111] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Inversing boolean not [83] (bool~) init_plot_tables::$4 ← (byte) init_plot_tables::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [82] (bool~) init_plot_tables::$3 ← (byte) init_plot_tables::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [102] (bool~) init_plot_tables::$12 ← (byte~) init_plot_tables::$10 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [101] (bool~) init_plot_tables::$11 ← (byte~) init_plot_tables::$10 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) RASTER#3 = (byte*) RASTER#4 (byte*) RASTER#6
|
||||
Alias (byte*) BGCOL#1 = (byte*) BGCOL#9 (byte*) BGCOL#7
|
||||
Alias (byte) plots_cnt#10 = (byte) plots_cnt#8 (byte) plots_cnt#7
|
||||
Alias (byte*) RASTER#1 = (byte*) RASTER#2 (byte*) RASTER#5 (byte*) RASTER#7
|
||||
Alias (byte*) BGCOL#2 = (byte*) BGCOL#6 (byte*) BGCOL#3 (byte*) BGCOL#5
|
||||
Alias (byte) plots_cnt#4 = (byte) plots_cnt#6 (byte) plots_cnt#9 (byte) plots_cnt#5
|
||||
Alias (byte*) BGCOL#0 = (byte*) BGCOL#10 (byte*) BGCOL#8 (byte*) BGCOL#4
|
||||
Alias (byte*) FGCOL#0 = (byte*) FGCOL#4 (byte*) FGCOL#3 (byte*) FGCOL#2
|
||||
Alias (byte) BMM#0 = (byte) BMM#4 (byte) BMM#3 (byte) BMM#2
|
||||
Alias (byte) DEN#0 = (byte) DEN#4 (byte) DEN#3 (byte) DEN#2
|
||||
Alias (byte) RSEL#0 = (byte) RSEL#4 (byte) RSEL#3 (byte) RSEL#2
|
||||
Alias (byte*) D011#0 = (byte*) D011#4 (byte*) D011#3 (byte*) D011#2
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#8 (byte*) SCREEN#7 (byte*) SCREEN#4
|
||||
Alias (byte*) D018#0 = (byte*) D018#4 (byte*) D018#3 (byte*) D018#2
|
||||
Alias (byte*) RASTER#0 = (byte*) RASTER#10 (byte*) RASTER#9 (byte*) RASTER#8
|
||||
Alias (byte) plots::i#2 = (byte) plots::i#3
|
||||
Alias (byte) plots_cnt#1 = (byte) plots_cnt#2
|
||||
Alias (byte) plots_cnt#0 = (byte) plots_cnt#12 (byte) plots_cnt#11
|
||||
Alias (byte*) plot::plotter#0 = (byte*~) plot::$4
|
||||
Alias (byte) init_plot_tables::bits#1 = (byte~) init_plot_tables::$2
|
||||
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#4
|
||||
Alias (byte*) init_plot_tables::yoffs#2 = (byte*) init_plot_tables::yoffs#3
|
||||
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#4
|
||||
Alias (byte*) init_plot_tables::yoffs#1 = (byte*~) init_plot_tables::$14
|
||||
Alias (byte*) SCREEN#2 = (byte*) SCREEN#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) init_plot_tables::x#2 = (byte) init_plot_tables::x#3
|
||||
Alias (byte) init_plot_tables::y#2 = (byte) init_plot_tables::y#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) BGCOL#2
|
||||
Self Phi Eliminated (byte*) BGCOL#2
|
||||
Self Phi Eliminated (byte) plots_cnt#4
|
||||
Self Phi Eliminated (byte) plots_cnt#4
|
||||
Self Phi Eliminated (byte) plots_cnt#1
|
||||
Self Phi Eliminated (byte*) SCREEN#2
|
||||
Self Phi Eliminated (byte*) SCREEN#3
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
|
||||
Redundant Phi (byte*) FGCOL#1 (byte*) FGCOL#0
|
||||
Redundant Phi (byte) BMM#1 (byte) BMM#0
|
||||
Redundant Phi (byte) DEN#1 (byte) DEN#0
|
||||
Redundant Phi (byte) RSEL#1 (byte) RSEL#0
|
||||
Redundant Phi (byte*) D011#1 (byte*) D011#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) D018#1 (byte*) D018#0
|
||||
Redundant Phi (byte*) RASTER#3 (byte*) RASTER#0
|
||||
Redundant Phi (byte) plots_cnt#10 (byte) plots_cnt#0
|
||||
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
|
||||
Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#1
|
||||
Redundant Phi (byte) plots_cnt#4 (byte) plots_cnt#10
|
||||
Redundant Phi (byte) plots_cnt#3 (byte) plots_cnt#4
|
||||
Redundant Phi (byte) plots_cnt#1 (byte) plots_cnt#3
|
||||
Redundant Phi (byte) plot::x#1 (byte) plot::x#0
|
||||
Redundant Phi (byte) plot::y#1 (byte) plot::y#0
|
||||
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#1
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#6
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$11 [37] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2
|
||||
Simple Condition (bool~) plots::$1 [58] if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1
|
||||
Simple Condition (bool~) init_plot_tables::$4 [94] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2
|
||||
Simple Condition (bool~) init_plot_tables::$5 [98] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1
|
||||
Simple Condition (bool~) init_plot_tables::$12 [113] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
|
||||
Simple Condition (bool~) init_plot_tables::$15 [117] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@3
|
||||
Simple Condition (bool~) init_screen::$1 [130] if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$3 [138] if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2
|
||||
Simple Condition (bool~) main::$11 [32] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@2
|
||||
Simple Condition (bool~) plots::$1 [49] if((byte) plots::i#1<(byte) plots_cnt#0) goto plots::@1
|
||||
Simple Condition (bool~) init_plot_tables::$4 [84] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@2
|
||||
Simple Condition (bool~) init_plot_tables::$5 [88] if((byte) init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1
|
||||
Simple Condition (bool~) init_plot_tables::$12 [103] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
|
||||
Simple Condition (bool~) init_plot_tables::$15 [107] if((byte) init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@3
|
||||
Simple Condition (bool~) init_screen::$1 [119] if((byte*) init_screen::b#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Simple Condition (bool~) init_screen::$3 [126] if((byte*) init_screen::c#1!=(byte*~) init_screen::$2) goto init_screen::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) D011#0 = ((byte*))$d011
|
||||
Constant (const byte) RST8#0 = $80
|
||||
@ -631,7 +475,7 @@ Constant (const word/dword) main::$7 = main::$4|main::$6
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::$8 = ((byte))main::$7
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [10] if(true) goto main::@1
|
||||
if() condition always true - replacing block destination [10] if(true) goto main::@2
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
Removing unused block main::@return
|
||||
@ -640,8 +484,6 @@ Resolved ranged next value init_plot_tables::x#1 ← ++ init_plot_tables::x#2 to
|
||||
Resolved ranged comparison value if(init_plot_tables::x#1!=rangelast(0,$ff)) goto init_plot_tables::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Resolved ranged next value init_plot_tables::y#1 ← ++ init_plot_tables::y#2 to ++
|
||||
Resolved ranged comparison value if(init_plot_tables::y#1!=rangelast(0,$ff)) goto init_plot_tables::@3 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Culled Empty Block (label) main::@6
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) init_plot_tables::@6
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -9,10 +10,9 @@ main: scope:[main] from @1
|
||||
(byte) main::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
|
||||
(byte) main::c#2 ← phi( main/(byte) main::c#0 main::@1/(byte) main::c#1 )
|
||||
(byte~) main::$1 ← ~ (byte) main::c#2
|
||||
*((byte*) main::SCREEN#1 + (byte) main::c#2) ← (byte~) main::$1
|
||||
*((byte*) main::SCREEN#0 + (byte) main::c#2) ← (byte~) main::$1
|
||||
(byte) main::c#1 ← (byte) main::c#2 + rangenext(1,$1a)
|
||||
(bool~) main::$2 ← (byte) main::c#1 != rangelast(1,$1a)
|
||||
if((bool~) main::$2) goto main::@1
|
||||
@ -40,7 +40,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte*) main::SCREEN#1
|
||||
(byte) main::c
|
||||
(byte) main::c#0
|
||||
(byte) main::c#1
|
||||
@ -48,10 +47,6 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (byte*) main::SCREEN#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$2 [9] if((byte) main::c#1!=rangelast(1,$1a)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))$400
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (bool) bool_const_if::b
|
||||
Identified constant variable (byte) bool_const_vars::a
|
||||
Identified constant variable (byte) bool_const_inline::a
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -7,7 +8,6 @@ main: scope:[main] from @2
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@3
|
||||
(byte*) main::screen#4 ← phi( main/(byte*) main::screen#0 main::@3/(byte*) main::screen#5 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@3/(byte) main::i#1 )
|
||||
(byte~) main::$0 ← (byte) main::i#2 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(bool~) main::$1 ← (byte~) main::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -18,23 +18,19 @@ main::@1: scope:[main] from main main::@3
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@1
|
||||
(byte) main::i#6 ← phi( main::@1/(byte) main::i#2 )
|
||||
(byte*) main::screen#3 ← phi( main::@1/(byte*) main::screen#4 )
|
||||
(bool) isSet::return#3 ← phi( main::@1/(bool) isSet::return#0 )
|
||||
(bool~) main::$2 ← (bool) isSet::return#3
|
||||
if((bool~) main::$2) goto main::@2
|
||||
to:main::@4
|
||||
main::@2: scope:[main] from main::@7
|
||||
(byte) main::i#3 ← phi( main::@7/(byte) main::i#6 )
|
||||
(byte*) main::screen#1 ← phi( main::@7/(byte*) main::screen#3 )
|
||||
*((byte*) main::screen#1 + (byte) main::i#3) ← (byte) '*'
|
||||
*((byte*) main::screen#0 + (byte) main::i#3) ← (byte) '*'
|
||||
to:main::@3
|
||||
main::@4: scope:[main] from main::@7
|
||||
(byte) main::i#4 ← phi( main::@7/(byte) main::i#6 )
|
||||
(byte*) main::screen#2 ← phi( main::@7/(byte*) main::screen#3 )
|
||||
*((byte*) main::screen#2 + (byte) main::i#4) ← (byte) ' '
|
||||
*((byte*) main::screen#0 + (byte) main::i#4) ← (byte) ' '
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@4
|
||||
(byte*) main::screen#5 ← phi( main::@2/(byte*) main::screen#1 main::@4/(byte*) main::screen#2 )
|
||||
(byte) main::i#5 ← phi( main::@2/(byte) main::i#3 main::@4/(byte) main::i#4 )
|
||||
(byte) main::i#1 ← (byte) main::i#5 + rangenext(0,$64)
|
||||
(bool~) main::$3 ← (byte) main::i#1 != rangelast(0,$64)
|
||||
@ -106,26 +102,16 @@ SYMBOL TABLE SSA
|
||||
(byte) main::i#6
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
(byte*) main::screen#1
|
||||
(byte*) main::screen#2
|
||||
(byte*) main::screen#3
|
||||
(byte*) main::screen#4
|
||||
(byte*) main::screen#5
|
||||
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (bool) isSet::b#0 = (bool~) main::$1
|
||||
Alias (bool) isSet::return#0 = (bool) isSet::return#3
|
||||
Alias (byte*) main::screen#1 = (byte*) main::screen#3 (byte*) main::screen#4 (byte*) main::screen#2
|
||||
Alias (byte) main::i#2 = (byte) main::i#6 (byte) main::i#3 (byte) main::i#4
|
||||
Alias (bool) isSet::return#1 = (bool~) isSet::$2 (bool) isSet::return#4 (bool) isSet::return#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::i#2 = (byte) main::i#5
|
||||
Alias (byte*) main::screen#1 = (byte*) main::screen#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::screen#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
|
||||
Redundant Phi (byte) isSet::i#1 (byte) isSet::i#0
|
||||
Redundant Phi (bool) isSet::b#1 (bool) isSet::b#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
|
@ -4,20 +4,23 @@
|
||||
.const STAR = $51
|
||||
.label SCREEN = $400
|
||||
main: {
|
||||
.const x0 = 4
|
||||
.const y0 = 4
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-4
|
||||
.const yd = y1-4
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label cursor = 2
|
||||
.label y = 5
|
||||
lda #4
|
||||
lda #y0
|
||||
sta y
|
||||
ldx #yd/2
|
||||
lda #x0
|
||||
sta x
|
||||
lda #<SCREEN+4*$28+4
|
||||
lda #<SCREEN+y0*$28+x0
|
||||
sta cursor
|
||||
lda #>SCREEN+4*$28+4
|
||||
lda #>SCREEN+y0*$28+x0
|
||||
sta cursor+1
|
||||
b1:
|
||||
lda #STAR
|
||||
|
@ -11,10 +11,10 @@ main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 4 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::y#2 ← phi( main/(const byte) main::y0#0 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@2/(byte) main::e#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 4 main::@2/(byte) main::x#1 )
|
||||
[5] (byte*) main::cursor#3 ← phi( main/(const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 4 main::@2/(byte*) main::cursor#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(const byte) main::x0#0 main::@2/(byte) main::x#1 )
|
||||
[5] (byte*) main::cursor#3 ← phi( main/(const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) main::x0#0 main::@2/(byte*) main::cursor#5 )
|
||||
[6] *((byte*) main::cursor#3) ← (const byte) STAR#0
|
||||
[7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
|
@ -1,3 +1,8 @@
|
||||
Identified constant variable (byte) STAR
|
||||
Identified constant variable (byte) main::x0
|
||||
Identified constant variable (byte) main::y0
|
||||
Identified constant variable (byte) main::x1
|
||||
Identified constant variable (byte) main::y1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -6,7 +11,6 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte[$0]) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte) STAR#2 ← phi( @1/(byte) STAR#4 )
|
||||
(byte) main::x0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::y0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::x1#0 ← (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
@ -26,14 +30,12 @@ main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
(byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
|
||||
(byte) main::x1#2 ← phi( main/(byte) main::x1#0 main::@2/(byte) main::x1#1 )
|
||||
(byte) main::xd#1 ← phi( main/(byte) main::xd#0 main::@2/(byte) main::xd#3 )
|
||||
(byte) main::yd#1 ← phi( main/(byte) main::yd#0 main::@2/(byte) main::yd#2 )
|
||||
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
|
||||
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
|
||||
(byte*) main::cursor#3 ← phi( main/(byte*) main::cursor#0 main::@2/(byte*) main::cursor#5 )
|
||||
(byte) STAR#1 ← phi( main/(byte) STAR#2 main::@2/(byte) STAR#3 )
|
||||
*((byte*) main::cursor#3) ← (byte) STAR#1
|
||||
*((byte*) main::cursor#3) ← (byte) STAR#0
|
||||
(byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::x#1 ← (byte/signed word/word/dword/signed dword~) main::$6
|
||||
(byte*~) main::$7 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -50,18 +52,14 @@ main::@2: scope:[main] from main::@1 main::@3
|
||||
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#3 )
|
||||
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
|
||||
(byte*) main::cursor#5 ← phi( main::@1/(byte*) main::cursor#1 main::@3/(byte*) main::cursor#2 )
|
||||
(byte) STAR#3 ← phi( main::@1/(byte) STAR#1 main::@3/(byte) STAR#5 )
|
||||
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 )
|
||||
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 )
|
||||
(byte/signed word/word/dword/signed dword~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/signed word/word/dword/signed dword~) main::$14 ← (byte) main::x1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(bool~) main::$15 ← (byte) main::x#3 < (byte/signed word/word/dword/signed dword~) main::$14
|
||||
if((bool~) main::$15) goto main::@1
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 )
|
||||
(byte) STAR#5 ← phi( main::@1/(byte) STAR#1 )
|
||||
(byte) main::x#4 ← phi( main::@1/(byte) main::x#1 )
|
||||
(byte) main::x1#3 ← phi( main::@1/(byte) main::x1#2 )
|
||||
(byte) main::xd#2 ← phi( main::@1/(byte) main::xd#1 )
|
||||
(byte) main::e#4 ← phi( main::@1/(byte) main::e#1 )
|
||||
(byte*) main::cursor#4 ← phi( main::@1/(byte*) main::cursor#1 )
|
||||
@ -77,7 +75,6 @@ main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte) STAR#4 ← phi( @begin/(byte) STAR#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -94,11 +91,6 @@ SYMBOL TABLE SSA
|
||||
(byte[$0]) SCREEN#0
|
||||
(byte) STAR
|
||||
(byte) STAR#0
|
||||
(byte) STAR#1
|
||||
(byte) STAR#2
|
||||
(byte) STAR#3
|
||||
(byte) STAR#4
|
||||
(byte) STAR#5
|
||||
(void()) main()
|
||||
(byte~) main::$0
|
||||
(byte~) main::$1
|
||||
@ -144,9 +136,6 @@ SYMBOL TABLE SSA
|
||||
(byte) main::x0#0
|
||||
(byte) main::x1
|
||||
(byte) main::x1#0
|
||||
(byte) main::x1#1
|
||||
(byte) main::x1#2
|
||||
(byte) main::x1#3
|
||||
(byte) main::xd
|
||||
(byte) main::xd#0
|
||||
(byte) main::xd#1
|
||||
@ -170,12 +159,12 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [29] (bool~) main::$10 ← (byte) main::xd#1 > (byte) main::e#1 from [28] (bool~) main::$9 ← (byte) main::xd#1 <= (byte) main::e#1
|
||||
Inversing boolean not [28] (bool~) main::$10 ← (byte) main::xd#1 > (byte) main::e#1 from [27] (bool~) main::$9 ← (byte) main::xd#1 <= (byte) main::e#1
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) main::xd#0 = (byte~) main::$0
|
||||
Alias (byte) main::yd#0 = (byte~) main::$1
|
||||
Alias (byte) main::x#0 = (byte) main::x0#0
|
||||
Alias (byte) main::y#0 = (byte) main::y0#0
|
||||
Alias (byte) main::x0#0 = (byte) main::x#0
|
||||
Alias (byte) main::y0#0 = (byte) main::y#0
|
||||
Alias (byte) main::e#0 = (byte/signed word/word/dword/signed dword~) main::$2
|
||||
Alias (byte*) main::cursor#0 = (byte*~) main::$5
|
||||
Alias (byte) main::x#1 = (byte/signed word/word/dword/signed dword~) main::$6 (byte) main::x#4
|
||||
@ -183,64 +172,50 @@ Alias (byte*) main::cursor#1 = (byte*~) main::$7 (byte*) main::cursor#4
|
||||
Alias (byte) main::e#1 = (byte~) main::$8 (byte) main::e#4
|
||||
Alias (byte) main::y#2 = (byte) main::y#3
|
||||
Alias (byte) main::xd#1 = (byte) main::xd#2
|
||||
Alias (byte) main::x1#2 = (byte) main::x1#3
|
||||
Alias (byte) STAR#1 = (byte) STAR#5
|
||||
Alias (byte) main::yd#1 = (byte) main::yd#3
|
||||
Alias (byte) main::y#1 = (byte/signed word/word/dword/signed dword~) main::$11
|
||||
Alias (byte*) main::cursor#2 = (byte*~) main::$12
|
||||
Alias (byte) main::e#2 = (byte~) main::$13
|
||||
Alias (byte) STAR#0 = (byte) STAR#4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::x1#1 = (byte) main::x1#2
|
||||
Alias (byte) main::x#1 = (byte) main::x#3
|
||||
Alias (byte) STAR#1 = (byte) STAR#3
|
||||
Alias (byte) main::yd#1 = (byte) main::yd#2
|
||||
Alias (byte) main::xd#1 = (byte) main::xd#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) STAR#1
|
||||
Self Phi Eliminated (byte) main::yd#1
|
||||
Self Phi Eliminated (byte) main::xd#1
|
||||
Self Phi Eliminated (byte) main::x1#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) STAR#2 (byte) STAR#0
|
||||
Redundant Phi (byte) STAR#1 (byte) STAR#2
|
||||
Redundant Phi (byte) main::yd#1 (byte) main::yd#0
|
||||
Redundant Phi (byte) main::xd#1 (byte) main::xd#0
|
||||
Redundant Phi (byte) main::x1#1 (byte) main::x1#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$10 [30] if((byte) main::xd#0>(byte) main::e#1) goto main::@2
|
||||
Simple Condition (bool~) main::$15 [34] if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$14) goto main::@1
|
||||
Simple Condition (bool~) main::$10 [29] if((byte) main::xd#0>(byte) main::e#1) goto main::@2
|
||||
Simple Condition (bool~) main::$15 [33] if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$14) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) STAR#0 = $51
|
||||
Constant (const word/signed word/dword/signed dword) $0 = $28*$19
|
||||
Constant (const byte[$0]) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::x#0 = 4
|
||||
Constant (const byte) main::y#0 = 4
|
||||
Constant (const byte) main::x0#0 = 4
|
||||
Constant (const byte) main::y0#0 = 4
|
||||
Constant (const byte) main::x1#0 = $27
|
||||
Constant (const byte) main::y1#0 = $18
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::xd#0 = main::x1#0-main::x#0
|
||||
Constant (const byte) main::yd#0 = main::y1#0-main::y#0
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$3 = main::y#0*$28
|
||||
Constant (const byte) main::xd#0 = main::x1#0-main::x0#0
|
||||
Constant (const byte) main::yd#0 = main::y1#0-main::y0#0
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$3 = main::y0#0*$28
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$14 = main::x1#0+1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::e#0 = main::yd#0/2
|
||||
Constant (const byte*) main::$4 = SCREEN#0+main::$3
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) main::cursor#0 = main::$4+main::x#0
|
||||
Constant (const byte*) main::cursor#0 = main::$4+main::x0#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
Inlining constant with var siblings (const byte) main::y#0
|
||||
Inlining constant with var siblings (const byte) main::e#0
|
||||
Inlining constant with var siblings (const byte*) main::cursor#0
|
||||
Constant inlined main::cursor#0 = (const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
Constant inlined main::$3 = (byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::$3 = (const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::$14 = (const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined main::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
Constant inlined main::$4 = (const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
Constant inlined main::$4 = (const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined $0 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Constant inlined main::cursor#0 = (const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) main::x0#0
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@1 and main::@2)
|
||||
@ -284,10 +259,10 @@ main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 4 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::y#2 ← phi( main/(const byte) main::y0#0 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@2/(byte) main::e#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 4 main::@2/(byte) main::x#1 )
|
||||
[5] (byte*) main::cursor#3 ← phi( main/(const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 4 main::@2/(byte*) main::cursor#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(const byte) main::x0#0 main::@2/(byte) main::x#1 )
|
||||
[5] (byte*) main::cursor#3 ← phi( main/(const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) main::x0#0 main::@2/(byte*) main::cursor#5 )
|
||||
[6] *((byte*) main::cursor#3) ← (const byte) STAR#0
|
||||
[7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[8] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -380,29 +355,31 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.const x0 = 4
|
||||
.const y0 = 4
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-4
|
||||
.const yd = y1-4
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label cursor = 2
|
||||
.label e = 5
|
||||
.label y = 6
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuz1=vbuc1
|
||||
lda #yd/2
|
||||
sta e
|
||||
//SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #x0
|
||||
sta x
|
||||
//SEG15 [5] phi (byte*) main::cursor#3 = (const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1
|
||||
lda #<SCREEN+4*$28+4
|
||||
//SEG15 [5] phi (byte*) main::cursor#3 = (const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) main::x0#0 [phi:main->main::@1#3] -- pbuz1=pbuc1
|
||||
lda #<SCREEN+y0*$28+x0
|
||||
sta cursor
|
||||
lda #>SCREEN+4*$28+4
|
||||
lda #>SCREEN+y0*$28+x0
|
||||
sta cursor+1
|
||||
jmp b1
|
||||
//SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
@ -531,27 +508,29 @@ bend_from_b1:
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.const x0 = 4
|
||||
.const y0 = 4
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-4
|
||||
.const yd = y1-4
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label cursor = 2
|
||||
.label y = 5
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1
|
||||
ldx #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #x0
|
||||
sta x
|
||||
//SEG15 [5] phi (byte*) main::cursor#3 = (const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1
|
||||
lda #<SCREEN+4*$28+4
|
||||
//SEG15 [5] phi (byte*) main::cursor#3 = (const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) main::x0#0 [phi:main->main::@1#3] -- pbuz1=pbuc1
|
||||
lda #<SCREEN+y0*$28+x0
|
||||
sta cursor
|
||||
lda #>SCREEN+4*$28+4
|
||||
lda #>SCREEN+y0*$28+x0
|
||||
sta cursor+1
|
||||
jmp b1
|
||||
//SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
@ -628,8 +607,6 @@ Removing instruction jmp b3
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda #4
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Replacing label b2_from_b1 with b2
|
||||
Replacing label b1_from_b2 with b1
|
||||
Removing instruction b1_from_bbegin:
|
||||
@ -680,19 +657,21 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::x#1 x zp ZP_BYTE:4 3.666666666666667
|
||||
(byte) main::x#2 x zp ZP_BYTE:4 11.0
|
||||
(byte) main::x0
|
||||
(const byte) main::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::x1
|
||||
(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte) main::xd
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(const byte) main::x0#0
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp ZP_BYTE:5 7.333333333333333
|
||||
(byte) main::y#2 y zp ZP_BYTE:5 5.5
|
||||
(byte) main::y#4 y zp ZP_BYTE:5 16.5
|
||||
(byte) main::y0
|
||||
(const byte) main::y0#0 y0 = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::y1
|
||||
(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) main::yd
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(const byte) main::y0#0
|
||||
|
||||
zp ZP_WORD:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
@ -701,7 +680,7 @@ zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 986
|
||||
Score: 1006
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -720,25 +699,28 @@ Score: 986
|
||||
//SEG9 @end
|
||||
//SEG10 main
|
||||
main: {
|
||||
.const x0 = 4
|
||||
.const y0 = 4
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-4
|
||||
.const yd = y1-4
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label cursor = 2
|
||||
.label y = 5
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #4
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuxx=vbuc1
|
||||
ldx #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #x0
|
||||
sta x
|
||||
//SEG15 [5] phi (byte*) main::cursor#3 = (const byte[$28*$19]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 4 [phi:main->main::@1#3] -- pbuz1=pbuc1
|
||||
lda #<SCREEN+4*$28+4
|
||||
//SEG15 [5] phi (byte*) main::cursor#3 = (const byte[$28*$19]) SCREEN#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28+(const byte) main::x0#0 [phi:main->main::@1#3] -- pbuz1=pbuc1
|
||||
lda #<SCREEN+y0*$28+x0
|
||||
sta cursor
|
||||
lda #>SCREEN+4*$28+4
|
||||
lda #>SCREEN+y0*$28+x0
|
||||
sta cursor+1
|
||||
//SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
//SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy
|
||||
|
@ -24,19 +24,21 @@
|
||||
(byte) main::x#1 x zp ZP_BYTE:4 3.666666666666667
|
||||
(byte) main::x#2 x zp ZP_BYTE:4 11.0
|
||||
(byte) main::x0
|
||||
(const byte) main::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::x1
|
||||
(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte) main::xd
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(const byte) main::x0#0
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp ZP_BYTE:5 7.333333333333333
|
||||
(byte) main::y#2 y zp ZP_BYTE:5 5.5
|
||||
(byte) main::y#4 y zp ZP_BYTE:5 16.5
|
||||
(byte) main::y0
|
||||
(const byte) main::y0#0 y0 = (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::y1
|
||||
(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) main::yd
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(const byte) main::y0#0
|
||||
|
||||
zp ZP_WORD:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
|
||||
|
@ -4,17 +4,21 @@
|
||||
main: {
|
||||
.const STAR = $51
|
||||
.label screen = $400
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-0
|
||||
.const yd = y1-0
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label idx = 2
|
||||
.label y = 4
|
||||
lda #0
|
||||
lda #y0
|
||||
sta y
|
||||
ldy #yd/2
|
||||
tax
|
||||
ldx #x0
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
sta idx+1
|
||||
b1:
|
||||
lda #<screen
|
||||
|
@ -11,10 +11,10 @@ main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::y#2 ← phi( main/(const byte) main::y0#0 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@2/(byte) main::e#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::x#1 )
|
||||
[5] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(word) main::idx#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(const byte) main::x0#0 main::@2/(byte) main::x#1 )
|
||||
[5] (word) main::idx#3 ← phi( main/(const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 main::@2/(word) main::idx#5 )
|
||||
[6] *((const byte[$28*$19]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0
|
||||
[7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[8] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
|
@ -1,3 +1,8 @@
|
||||
Identified constant variable (byte) main::STAR
|
||||
Identified constant variable (byte) main::x0
|
||||
Identified constant variable (byte) main::y0
|
||||
Identified constant variable (byte) main::x1
|
||||
Identified constant variable (byte) main::y1
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -24,14 +29,12 @@ main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
(byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 )
|
||||
(byte) main::x1#2 ← phi( main/(byte) main::x1#0 main::@2/(byte) main::x1#1 )
|
||||
(byte) main::xd#1 ← phi( main/(byte) main::xd#0 main::@2/(byte) main::xd#3 )
|
||||
(byte) main::yd#1 ← phi( main/(byte) main::yd#0 main::@2/(byte) main::yd#2 )
|
||||
(byte) main::e#3 ← phi( main/(byte) main::e#0 main::@2/(byte) main::e#5 )
|
||||
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 )
|
||||
(word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 )
|
||||
(byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 )
|
||||
*((byte[main::$0]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1
|
||||
*((byte[main::$0]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#0
|
||||
(byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) main::x#1 ← (byte/signed word/word/dword/signed dword~) main::$6
|
||||
(word/signed dword/dword~) main::$7 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -48,18 +51,14 @@ main::@2: scope:[main] from main::@1 main::@3
|
||||
(byte) main::yd#2 ← phi( main::@1/(byte) main::yd#1 main::@3/(byte) main::yd#3 )
|
||||
(byte) main::e#5 ← phi( main::@1/(byte) main::e#1 main::@3/(byte) main::e#2 )
|
||||
(word) main::idx#5 ← phi( main::@1/(word) main::idx#1 main::@3/(word) main::idx#2 )
|
||||
(byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 )
|
||||
(byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 )
|
||||
(byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 )
|
||||
(byte/signed word/word/dword/signed dword~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/signed word/word/dword/signed dword~) main::$14 ← (byte) main::x1#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(bool~) main::$15 ← (byte) main::x#3 < (byte/signed word/word/dword/signed dword~) main::$14
|
||||
if((bool~) main::$15) goto main::@1
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 )
|
||||
(byte) main::STAR#3 ← phi( main::@1/(byte) main::STAR#1 )
|
||||
(byte) main::x#4 ← phi( main::@1/(byte) main::x#1 )
|
||||
(byte) main::x1#3 ← phi( main::@1/(byte) main::x1#2 )
|
||||
(byte) main::xd#2 ← phi( main::@1/(byte) main::xd#1 )
|
||||
(byte) main::e#4 ← phi( main::@1/(byte) main::e#1 )
|
||||
(word) main::idx#4 ← phi( main::@1/(word) main::idx#1 )
|
||||
@ -109,9 +108,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte) main::STAR
|
||||
(byte) main::STAR#0
|
||||
(byte) main::STAR#1
|
||||
(byte) main::STAR#2
|
||||
(byte) main::STAR#3
|
||||
(byte) main::e
|
||||
(byte) main::e#0
|
||||
(byte) main::e#1
|
||||
@ -138,9 +134,6 @@ SYMBOL TABLE SSA
|
||||
(byte) main::x0#0
|
||||
(byte) main::x1
|
||||
(byte) main::x1#0
|
||||
(byte) main::x1#1
|
||||
(byte) main::x1#2
|
||||
(byte) main::x1#3
|
||||
(byte) main::xd
|
||||
(byte) main::xd#0
|
||||
(byte) main::xd#1
|
||||
@ -168,8 +161,8 @@ Inversing boolean not [27] (bool~) main::$10 ← (byte) main::xd#1 >= (byte) mai
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) main::xd#0 = (byte~) main::$1
|
||||
Alias (byte) main::yd#0 = (byte~) main::$2
|
||||
Alias (byte) main::x#0 = (byte) main::x0#0
|
||||
Alias (byte) main::y#0 = (byte) main::y0#0
|
||||
Alias (byte) main::x0#0 = (byte) main::x#0
|
||||
Alias (byte) main::y0#0 = (byte) main::y#0
|
||||
Alias (byte) main::e#0 = (byte/signed word/word/dword/signed dword~) main::$3
|
||||
Alias (word) main::idx#0 = (byte/signed word/word/dword/signed dword~) main::$5
|
||||
Alias (byte) main::x#1 = (byte/signed word/word/dword/signed dword~) main::$6 (byte) main::x#4
|
||||
@ -177,28 +170,20 @@ Alias (word) main::idx#1 = (word/signed dword/dword~) main::$7 (word) main::idx#
|
||||
Alias (byte) main::e#1 = (byte~) main::$8 (byte) main::e#4
|
||||
Alias (byte) main::y#2 = (byte) main::y#3
|
||||
Alias (byte) main::xd#1 = (byte) main::xd#2
|
||||
Alias (byte) main::x1#2 = (byte) main::x1#3
|
||||
Alias (byte) main::STAR#1 = (byte) main::STAR#3
|
||||
Alias (byte) main::yd#1 = (byte) main::yd#3
|
||||
Alias (byte) main::y#1 = (byte/signed word/word/dword/signed dword~) main::$11
|
||||
Alias (word) main::idx#2 = (word/signed dword/dword~) main::$12
|
||||
Alias (byte) main::e#2 = (byte~) main::$13
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::x1#1 = (byte) main::x1#2
|
||||
Alias (byte) main::x#1 = (byte) main::x#3
|
||||
Alias (byte) main::STAR#1 = (byte) main::STAR#2
|
||||
Alias (byte) main::yd#1 = (byte) main::yd#2
|
||||
Alias (byte) main::xd#1 = (byte) main::xd#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) main::STAR#1
|
||||
Self Phi Eliminated (byte) main::yd#1
|
||||
Self Phi Eliminated (byte) main::xd#1
|
||||
Self Phi Eliminated (byte) main::x1#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) main::STAR#1 (byte) main::STAR#0
|
||||
Redundant Phi (byte) main::yd#1 (byte) main::yd#0
|
||||
Redundant Phi (byte) main::xd#1 (byte) main::xd#0
|
||||
Redundant Phi (byte) main::x1#1 (byte) main::x1#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$10 [28] if((byte) main::xd#0>=(byte) main::e#1) goto main::@2
|
||||
Simple Condition (bool~) main::$15 [32] if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$14) goto main::@1
|
||||
@ -206,33 +191,27 @@ Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) main::STAR#0 = $51
|
||||
Constant (const word/signed word/dword/signed dword) main::$0 = $28*$19
|
||||
Constant (const byte[main::$0]) main::screen#0 = ((byte*))$400
|
||||
Constant (const byte) main::x#0 = 0
|
||||
Constant (const byte) main::y#0 = 0
|
||||
Constant (const byte) main::x0#0 = 0
|
||||
Constant (const byte) main::y0#0 = 0
|
||||
Constant (const byte) main::x1#0 = $27
|
||||
Constant (const byte) main::y1#0 = $18
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::xd#0 = main::x1#0-main::x#0
|
||||
Constant (const byte) main::yd#0 = main::y1#0-main::y#0
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$4 = main::y#0*$28
|
||||
Constant (const byte) main::xd#0 = main::x1#0-main::x0#0
|
||||
Constant (const byte) main::yd#0 = main::y1#0-main::y0#0
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$4 = main::y0#0*$28
|
||||
Constant (const byte/signed word/word/dword/signed dword) main::$14 = main::x1#0+1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte) main::e#0 = main::yd#0/2
|
||||
Constant (const word) main::idx#0 = main::x#0+main::$4
|
||||
Constant (const word) main::idx#0 = main::x0#0+main::$4
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
Inlining constant with var siblings (const byte) main::y#0
|
||||
Inlining constant with var siblings (const byte) main::e#0
|
||||
Inlining constant with var siblings (const word) main::idx#0
|
||||
Constant inlined main::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0+(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::$0 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
Constant inlined main::idx#0 = (const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::$14 = (const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined main::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined main::$4 = (byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined main::$4 = (const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Constant inlined main::$0 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
Successful SSA optimization Pass2ConstantInlining
|
||||
Simplifying constant plus zero 0+0*$28
|
||||
Simplifying constant multiply by zero 0*$28
|
||||
Added new block during phi lifting main::@5(between main::@2 and main::@1)
|
||||
Added new block during phi lifting main::@6(between main::@1 and main::@2)
|
||||
Adding NOP phi() at start of @begin
|
||||
@ -275,10 +254,10 @@ main: scope:[main] from @1
|
||||
[4] phi()
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
[5] (byte) main::y#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::y#2 ← phi( main/(const byte) main::y0#0 main::@2/(byte) main::y#4 )
|
||||
[5] (byte) main::e#3 ← phi( main/(const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@2/(byte) main::e#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::x#1 )
|
||||
[5] (word) main::idx#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(word) main::idx#5 )
|
||||
[5] (byte) main::x#2 ← phi( main/(const byte) main::x0#0 main::@2/(byte) main::x#1 )
|
||||
[5] (word) main::idx#3 ← phi( main/(const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 main::@2/(word) main::idx#5 )
|
||||
[6] *((const byte[$28*$19]) main::screen#0 + (word) main::idx#3) ← (const byte) main::STAR#0
|
||||
[7] (byte) main::x#1 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[8] (word) main::idx#1 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -371,27 +350,29 @@ bend:
|
||||
main: {
|
||||
.const STAR = $51
|
||||
.label screen = $400
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-0
|
||||
.const yd = y1-0
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label idx = 2
|
||||
.label e = 5
|
||||
.label y = 6
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuz1=vbuc1
|
||||
lda #yd/2
|
||||
sta e
|
||||
//SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuz1=vbuc1
|
||||
lda #x0
|
||||
sta x
|
||||
//SEG15 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
//SEG15 [5] phi (word) main::idx#3 = (const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
sta idx+1
|
||||
@ -524,23 +505,25 @@ bend:
|
||||
main: {
|
||||
.const STAR = $51
|
||||
.label screen = $400
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-0
|
||||
.const yd = y1-0
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label idx = 2
|
||||
.label y = 4
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
b1_from_main:
|
||||
//SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1
|
||||
ldy #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
//SEG15 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #0
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
ldx #x0
|
||||
//SEG15 [5] phi (word) main::idx#3 = (const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
sta idx+1
|
||||
@ -626,10 +609,6 @@ Removing instruction jmp b3
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Replacing instruction ldx #0 with TAX
|
||||
Removing instruction lda #0
|
||||
Removing instruction lda #0
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Replacing label b2_from_b1 with b2
|
||||
Replacing label b2_from_b1 with b2
|
||||
Replacing label b1_from_b2 with b1
|
||||
@ -681,19 +660,21 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::x#1 reg byte x 3.666666666666667
|
||||
(byte) main::x#2 reg byte x 11.0
|
||||
(byte) main::x0
|
||||
(const byte) main::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::x1
|
||||
(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte) main::xd
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(const byte) main::x0#0
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp ZP_BYTE:4 7.333333333333333
|
||||
(byte) main::y#2 y zp ZP_BYTE:4 5.5
|
||||
(byte) main::y#4 y zp ZP_BYTE:4 16.5
|
||||
(byte) main::y0
|
||||
(const byte) main::y0#0 y0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::y1
|
||||
(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) main::yd
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(const byte) main::y0#0
|
||||
|
||||
zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
reg byte x [ main::x#2 main::x#1 ]
|
||||
@ -702,7 +683,7 @@ zp ZP_BYTE:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 1061
|
||||
Score: 1101
|
||||
|
||||
//SEG0 File Comments
|
||||
//SEG1 Basic Upstart
|
||||
@ -721,22 +702,26 @@ Score: 1061
|
||||
main: {
|
||||
.const STAR = $51
|
||||
.label screen = $400
|
||||
.const x0 = 0
|
||||
.const y0 = 0
|
||||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.const xd = x1-0
|
||||
.const yd = y1-0
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label idx = 2
|
||||
.label y = 4
|
||||
//SEG11 [5] phi from main to main::@1 [phi:main->main::@1]
|
||||
//SEG12 [5] phi (byte) main::y#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
//SEG12 [5] phi (byte) main::y#2 = (const byte) main::y0#0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
sta y
|
||||
//SEG13 [5] phi (byte) main::e#3 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 [phi:main->main::@1#1] -- vbuyy=vbuc1
|
||||
ldy #yd/2
|
||||
//SEG14 [5] phi (byte) main::x#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
tax
|
||||
//SEG15 [5] phi (word) main::idx#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
//SEG14 [5] phi (byte) main::x#2 = (const byte) main::x0#0 [phi:main->main::@1#2] -- vbuxx=vbuc1
|
||||
ldx #x0
|
||||
//SEG15 [5] phi (word) main::idx#3 = (const byte) main::x0#0+(const byte) main::y0#0*(byte/signed byte/word/signed word/dword/signed dword) $28 [phi:main->main::@1#3] -- vwuz1=vbuc1
|
||||
lda #x0+y0*$28
|
||||
sta idx
|
||||
lda #0
|
||||
sta idx+1
|
||||
//SEG16 [5] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||
//SEG17 [5] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy
|
||||
|
@ -24,19 +24,21 @@
|
||||
(byte) main::x#1 reg byte x 3.666666666666667
|
||||
(byte) main::x#2 reg byte x 11.0
|
||||
(byte) main::x0
|
||||
(const byte) main::x0#0 x0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::x1
|
||||
(const byte) main::x1#0 x1 = (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte) main::xd
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(const byte) main::xd#0 xd = (const byte) main::x1#0-(const byte) main::x0#0
|
||||
(byte) main::y
|
||||
(byte) main::y#1 y zp ZP_BYTE:4 7.333333333333333
|
||||
(byte) main::y#2 y zp ZP_BYTE:4 5.5
|
||||
(byte) main::y#4 y zp ZP_BYTE:4 16.5
|
||||
(byte) main::y0
|
||||
(const byte) main::y0#0 y0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::y1
|
||||
(const byte) main::y1#0 y1 = (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) main::yd
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(const byte) main::yd#0 yd = (const byte) main::y1#0-(const byte) main::y0#0
|
||||
|
||||
zp ZP_WORD:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
reg byte x [ main::x#2 main::x#1 ]
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -186,7 +188,6 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte[]) SRCB#0 ← { (byte/word/signed word/dword/signed dword) $80 }
|
||||
to:@6
|
||||
main: scope:[main] from @6
|
||||
(byte*) DTV_BLITTER_ALU#1 ← phi( @6/(byte*) DTV_BLITTER_ALU#2 )
|
||||
*((byte*) DTV_FEATURE#0) ← (byte) DTV_FEATURE_ENABLE#0
|
||||
*((byte*) DTV_BLITTER_CONTROL2#0) ← (byte) DTV_BLIT_CLEAR_IRQ#0
|
||||
(byte~) main::$0 ← < (byte[]) SRCA#0
|
||||
@ -227,7 +228,7 @@ main: scope:[main] from @6
|
||||
*((byte*) DTV_BLITTER_DEST_STEP#0) ← (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
*((byte*) DTV_BLITTER_LEN_LO#0) ← (byte) SRCA_LEN#0
|
||||
*((byte*) DTV_BLITTER_LEN_HI#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
*((byte*) DTV_BLITTER_ALU#1) ← (byte) DTV_BLIT_ADD#0
|
||||
*((byte*) DTV_BLITTER_ALU#0) ← (byte) DTV_BLIT_ADD#0
|
||||
*((byte*) DTV_BLITTER_TRANSPARANCY#0) ← (byte) DTV_BLIT_TRANSPARANCY_NONE#0
|
||||
(byte~) main::$12 ← (byte) DTV_BLIT_FORCE_START#0 | (byte) DTV_BLIT_SRCA_FWD#0
|
||||
(byte~) main::$13 ← (byte~) main::$12 | (byte) DTV_BLIT_SRCB_FWD#0
|
||||
@ -259,7 +260,6 @@ main::@return: scope:[main] from main::@3
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @5
|
||||
(byte*) DTV_BLITTER_ALU#2 ← phi( @5/(byte*) DTV_BLITTER_ALU#0 )
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
@ -331,8 +331,6 @@ SYMBOL TABLE SSA
|
||||
(byte) DTV_BADLINE_OFF#0
|
||||
(byte*) DTV_BLITTER_ALU
|
||||
(byte*) DTV_BLITTER_ALU#0
|
||||
(byte*) DTV_BLITTER_ALU#1
|
||||
(byte*) DTV_BLITTER_ALU#2
|
||||
(byte*) DTV_BLITTER_CONTROL
|
||||
(byte*) DTV_BLITTER_CONTROL#0
|
||||
(byte*) DTV_BLITTER_CONTROL2
|
||||
@ -668,14 +666,11 @@ Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::r#1 = (byte) main::r#4
|
||||
Alias (byte) main::r#2 = (byte) main::r#3
|
||||
Alias (byte*) DTV_BLITTER_ALU#0 = (byte*) DTV_BLITTER_ALU#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) main::r#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) DTV_BLITTER_ALU#1 (byte*) DTV_BLITTER_ALU#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$16 [231] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$20 [239] if((byte) main::r#1!=rangelast(0,7)) goto main::@1
|
||||
Simple Condition (bool~) main::$16 [230] if((byte~) main::$15!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@2
|
||||
Simple Condition (bool~) main::$20 [238] if((byte) main::r#1!=rangelast(0,7)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -508,6 +508,7 @@ mode_8bpppixelcell: {
|
||||
.label PLANEA = $3c00
|
||||
// 8BPP Pixel Cell Charset (contains 256 64 byte chars)
|
||||
.label PLANEB = $4000
|
||||
.label CHARGEN = $d000
|
||||
.label _14 = 7
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
@ -598,9 +599,9 @@ mode_8bpppixelcell: {
|
||||
sta gfxb
|
||||
lda #>PLANEB
|
||||
sta gfxb+1
|
||||
lda #<$d000
|
||||
lda #<CHARGEN
|
||||
sta chargen
|
||||
lda #>$d000
|
||||
lda #>CHARGEN
|
||||
sta chargen+1
|
||||
b4:
|
||||
lda #0
|
||||
|
@ -472,7 +472,7 @@ mode_8bpppixelcell::@4: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@10
|
||||
[260] (byte) mode_8bpppixelcell::ch#8 ← phi( mode_8bpppixelcell::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 mode_8bpppixelcell::@13/(byte) mode_8bpppixelcell::ch#1 )
|
||||
[260] (byte) mode_8bpppixelcell::col#7 ← phi( mode_8bpppixelcell::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 mode_8bpppixelcell::@13/(byte) mode_8bpppixelcell::col#1 )
|
||||
[260] (byte*) mode_8bpppixelcell::gfxb#7 ← phi( mode_8bpppixelcell::@10/(const byte*) mode_8bpppixelcell::PLANEB#0 mode_8bpppixelcell::@13/(byte*) mode_8bpppixelcell::gfxb#1 )
|
||||
[260] (byte*) mode_8bpppixelcell::chargen#4 ← phi( mode_8bpppixelcell::@10/((byte*))(word/dword/signed dword) $d000 mode_8bpppixelcell::@13/(byte*) mode_8bpppixelcell::chargen#1 )
|
||||
[260] (byte*) mode_8bpppixelcell::chargen#4 ← phi( mode_8bpppixelcell::@10/(const byte*) mode_8bpppixelcell::CHARGEN#0 mode_8bpppixelcell::@13/(byte*) mode_8bpppixelcell::chargen#1 )
|
||||
to:mode_8bpppixelcell::@5
|
||||
mode_8bpppixelcell::@5: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@12 mode_8bpppixelcell::@4
|
||||
[261] (byte) mode_8bpppixelcell::cr#6 ← phi( mode_8bpppixelcell::@12/(byte) mode_8bpppixelcell::cr#1 mode_8bpppixelcell::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
|
@ -1,3 +1,7 @@
|
||||
Identified constant variable (byte*) dtvSetCpuBankSegment1::cpuBank
|
||||
Identified constant variable (byte*) DTV_BLITTER_ALU
|
||||
Identified constant variable (byte) mode_stdbitmap::lines_cnt
|
||||
Identified constant variable (byte*) mode_8bpppixelcell::CHARGEN
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -2239,7 +2243,6 @@ mode_stdbitmap::@10: scope:[mode_stdbitmap] from mode_stdbitmap::@9
|
||||
to:mode_stdbitmap::@4
|
||||
mode_stdbitmap::@4: scope:[mode_stdbitmap] from mode_stdbitmap::@10 mode_stdbitmap::@11
|
||||
(byte) dtv_control#180 ← phi( mode_stdbitmap::@10/(byte) dtv_control#196 mode_stdbitmap::@11/(byte) dtv_control#152 )
|
||||
(byte) mode_stdbitmap::lines_cnt#2 ← phi( mode_stdbitmap::@10/(byte) mode_stdbitmap::lines_cnt#0 mode_stdbitmap::@11/(byte) mode_stdbitmap::lines_cnt#1 )
|
||||
(byte) mode_stdbitmap::l#2 ← phi( mode_stdbitmap::@10/(byte) mode_stdbitmap::l#0 mode_stdbitmap::@11/(byte) mode_stdbitmap::l#1 )
|
||||
(byte/signed word/word/dword/signed dword~) mode_stdbitmap::$28 ← (byte) mode_stdbitmap::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/signed word/word/dword/signed dword~) mode_stdbitmap::$29 ← (byte) mode_stdbitmap::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -2251,10 +2254,9 @@ mode_stdbitmap::@4: scope:[mode_stdbitmap] from mode_stdbitmap::@10 mode_stdbit
|
||||
to:mode_stdbitmap::@11
|
||||
mode_stdbitmap::@11: scope:[mode_stdbitmap] from mode_stdbitmap::@4
|
||||
(byte) dtv_control#152 ← phi( mode_stdbitmap::@4/(byte) dtv_control#180 )
|
||||
(byte) mode_stdbitmap::lines_cnt#1 ← phi( mode_stdbitmap::@4/(byte) mode_stdbitmap::lines_cnt#2 )
|
||||
(byte) mode_stdbitmap::l#3 ← phi( mode_stdbitmap::@4/(byte) mode_stdbitmap::l#2 )
|
||||
(byte) mode_stdbitmap::l#1 ← ++ (byte) mode_stdbitmap::l#3
|
||||
(bool~) mode_stdbitmap::$31 ← (byte) mode_stdbitmap::l#1 < (byte) mode_stdbitmap::lines_cnt#1
|
||||
(bool~) mode_stdbitmap::$31 ← (byte) mode_stdbitmap::l#1 < (byte) mode_stdbitmap::lines_cnt#0
|
||||
if((bool~) mode_stdbitmap::$31) goto mode_stdbitmap::@4
|
||||
to:mode_stdbitmap::@8
|
||||
mode_stdbitmap::@8: scope:[mode_stdbitmap] from mode_stdbitmap::@11
|
||||
@ -5964,8 +5966,6 @@ SYMBOL TABLE SSA
|
||||
(byte) mode_stdbitmap::l#3
|
||||
(byte) mode_stdbitmap::lines_cnt
|
||||
(byte) mode_stdbitmap::lines_cnt#0
|
||||
(byte) mode_stdbitmap::lines_cnt#1
|
||||
(byte) mode_stdbitmap::lines_cnt#2
|
||||
(byte[]) mode_stdbitmap::lines_x
|
||||
(byte[]) mode_stdbitmap::lines_x#0
|
||||
(byte[]) mode_stdbitmap::lines_y
|
||||
@ -6744,7 +6744,6 @@ Alias (byte) mode_stdbitmap::cy#2 = (byte) mode_stdbitmap::cy#3
|
||||
Alias (byte*) mode_stdbitmap::ch#1 = (byte*) mode_stdbitmap::ch#4
|
||||
Alias (byte) dtv_control#196 = (byte) dtv_control#240 (byte) dtv_control#248 (byte) dtv_control#227 (byte) dtv_control#211
|
||||
Alias (byte) mode_stdbitmap::l#2 = (byte) mode_stdbitmap::l#3
|
||||
Alias (byte) mode_stdbitmap::lines_cnt#1 = (byte) mode_stdbitmap::lines_cnt#2
|
||||
Alias (byte) dtv_control#120 = (byte) dtv_control#152 (byte) dtv_control#180
|
||||
Alias (byte) dtv_control#28 = (byte) dtv_control#79 (byte) dtv_control#80 (byte) dtv_control#29
|
||||
Alias (byte) dtv_control#212 = (byte) dtv_control#228
|
||||
@ -6831,7 +6830,7 @@ Alias (byte) mode_8bpppixelcell::ay#2 = (byte) mode_8bpppixelcell::ay#3
|
||||
Alias (byte*) mode_8bpppixelcell::gfxa#1 = (byte*) mode_8bpppixelcell::gfxa#4
|
||||
Alias (byte) dtv_control#253 = (byte) dtv_control#262 (byte) dtv_control#269
|
||||
Alias (byte*) mode_8bpppixelcell::PLANEB#0 = (byte*) mode_8bpppixelcell::gfxb#0
|
||||
Alias (byte*) mode_8bpppixelcell::chargen#0 = (byte*) mode_8bpppixelcell::CHARGEN#0
|
||||
Alias (byte*) mode_8bpppixelcell::CHARGEN#0 = (byte*) mode_8bpppixelcell::chargen#0
|
||||
Alias (byte) mode_8bpppixelcell::bits#1 = (byte~) mode_8bpppixelcell::$22
|
||||
Alias (byte) mode_8bpppixelcell::col#3 = (byte) mode_8bpppixelcell::col#4 (byte) mode_8bpppixelcell::c#1
|
||||
Alias (byte*) mode_8bpppixelcell::gfxb#3 = (byte*) mode_8bpppixelcell::gfxb#4
|
||||
@ -6951,7 +6950,6 @@ Self Phi Eliminated (byte) dtv_control#119
|
||||
Self Phi Eliminated (byte) dtv_control#265
|
||||
Self Phi Eliminated (byte) mode_stdbitmap::cy#2
|
||||
Self Phi Eliminated (byte) dtv_control#196
|
||||
Self Phi Eliminated (byte) mode_stdbitmap::lines_cnt#1
|
||||
Self Phi Eliminated (byte) dtv_control#120
|
||||
Self Phi Eliminated (byte) dtv_control#212
|
||||
Self Phi Eliminated (byte) mode_hicolstdchar::cy#2
|
||||
@ -7085,7 +7083,6 @@ Redundant Phi (byte) dtv_control#25 (byte) dtv_control#16
|
||||
Redundant Phi (byte) dtv_control#265 (byte) dtv_control#27
|
||||
Redundant Phi (byte) mode_stdbitmap::cy#2 (byte) mode_stdbitmap::cy#4
|
||||
Redundant Phi (byte) dtv_control#196 (byte) dtv_control#258
|
||||
Redundant Phi (byte) mode_stdbitmap::lines_cnt#1 (byte) mode_stdbitmap::lines_cnt#0
|
||||
Redundant Phi (byte) dtv_control#120 (byte) dtv_control#196
|
||||
Redundant Phi (byte) dtv_control#28 (byte) dtv_control#16
|
||||
Redundant Phi (byte) dtv_control#212 (byte) dtv_control#30
|
||||
@ -7607,7 +7604,7 @@ Constant (const byte*) mode_8bpppixelcell::PLANEB#0 = ((byte*))$4000
|
||||
Constant (const byte) mode_8bpppixelcell::i#0 = 0
|
||||
Constant (const byte) mode_8bpppixelcell::ay#0 = 0
|
||||
Constant (const byte) mode_8bpppixelcell::ax#0 = 0
|
||||
Constant (const byte*) mode_8bpppixelcell::chargen#0 = ((byte*))$d000
|
||||
Constant (const byte*) mode_8bpppixelcell::CHARGEN#0 = ((byte*))$d000
|
||||
Constant (const byte) mode_8bpppixelcell::col#0 = 0
|
||||
Constant (const byte) mode_8bpppixelcell::ch#0 = 0
|
||||
Constant (const byte) mode_8bpppixelcell::cr#0 = 0
|
||||
@ -8278,7 +8275,6 @@ Inlining constant with var siblings (const byte) mode_sixsfred2::bx#0
|
||||
Inlining constant with var siblings (const byte) mode_8bpppixelcell::i#0
|
||||
Inlining constant with var siblings (const byte) mode_8bpppixelcell::ay#0
|
||||
Inlining constant with var siblings (const byte) mode_8bpppixelcell::ax#0
|
||||
Inlining constant with var siblings (const byte*) mode_8bpppixelcell::chargen#0
|
||||
Inlining constant with var siblings (const byte) mode_8bpppixelcell::col#0
|
||||
Inlining constant with var siblings (const byte) mode_8bpppixelcell::ch#0
|
||||
Inlining constant with var siblings (const byte) mode_8bpppixelcell::cr#0
|
||||
@ -8346,7 +8342,6 @@ Constant inlined mode_mcchar::$0 = ((dword))(const byte*) mode_mcchar::CHARSET#0
|
||||
Constant inlined mode_mcchar::$1 = ((dword))(const byte*) mode_mcchar::CHARSET#0/(dword/signed dword) $10000
|
||||
Constant inlined mode_hicolmcchar::$8 = >((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) $400
|
||||
Constant inlined mode_hicolmcchar::$7 = ((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) $400
|
||||
Constant inlined mode_8bpppixelcell::chargen#0 = ((byte*))(word/dword/signed dword) $d000
|
||||
Constant inlined mode_hicolmcchar::$6 = (const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) $400
|
||||
Constant inlined mode_hicolmcchar::$5 = <((word))(const byte*) mode_hicolmcchar::COLORS#0/(word/signed word/dword/signed dword) $400
|
||||
Constant inlined mode_hicolmcchar::$9 = ((word))(const byte*) mode_hicolmcchar::CHARSET#0
|
||||
@ -9719,7 +9714,7 @@ mode_8bpppixelcell::@4: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@10
|
||||
[260] (byte) mode_8bpppixelcell::ch#8 ← phi( mode_8bpppixelcell::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 mode_8bpppixelcell::@13/(byte) mode_8bpppixelcell::ch#1 )
|
||||
[260] (byte) mode_8bpppixelcell::col#7 ← phi( mode_8bpppixelcell::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 mode_8bpppixelcell::@13/(byte) mode_8bpppixelcell::col#1 )
|
||||
[260] (byte*) mode_8bpppixelcell::gfxb#7 ← phi( mode_8bpppixelcell::@10/(const byte*) mode_8bpppixelcell::PLANEB#0 mode_8bpppixelcell::@13/(byte*) mode_8bpppixelcell::gfxb#1 )
|
||||
[260] (byte*) mode_8bpppixelcell::chargen#4 ← phi( mode_8bpppixelcell::@10/((byte*))(word/dword/signed dword) $d000 mode_8bpppixelcell::@13/(byte*) mode_8bpppixelcell::chargen#1 )
|
||||
[260] (byte*) mode_8bpppixelcell::chargen#4 ← phi( mode_8bpppixelcell::@10/(const byte*) mode_8bpppixelcell::CHARGEN#0 mode_8bpppixelcell::@13/(byte*) mode_8bpppixelcell::chargen#1 )
|
||||
to:mode_8bpppixelcell::@5
|
||||
mode_8bpppixelcell::@5: scope:[mode_8bpppixelcell] from mode_8bpppixelcell::@12 mode_8bpppixelcell::@4
|
||||
[261] (byte) mode_8bpppixelcell::cr#6 ← phi( mode_8bpppixelcell::@12/(byte) mode_8bpppixelcell::cr#1 mode_8bpppixelcell::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
@ -13959,6 +13954,7 @@ mode_8bpppixelcell: {
|
||||
.label PLANEA = $3c00
|
||||
// 8BPP Pixel Cell Charset (contains 256 64 byte chars)
|
||||
.label PLANEB = $4000
|
||||
.label CHARGEN = $d000
|
||||
.label _13 = $d3
|
||||
.label _14 = $d4
|
||||
.label _15 = $d5
|
||||
@ -14146,10 +14142,10 @@ mode_8bpppixelcell: {
|
||||
sta gfxb
|
||||
lda #>PLANEB
|
||||
sta gfxb+1
|
||||
//SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) $d000 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1
|
||||
lda #<$d000
|
||||
//SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (const byte*) mode_8bpppixelcell::CHARGEN#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1
|
||||
lda #<CHARGEN
|
||||
sta chargen
|
||||
lda #>$d000
|
||||
lda #>CHARGEN
|
||||
sta chargen+1
|
||||
jmp b4
|
||||
//SEG469 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4]
|
||||
@ -20677,6 +20673,7 @@ mode_8bpppixelcell: {
|
||||
.label PLANEA = $3c00
|
||||
// 8BPP Pixel Cell Charset (contains 256 64 byte chars)
|
||||
.label PLANEB = $4000
|
||||
.label CHARGEN = $d000
|
||||
.label _14 = 7
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
@ -20845,10 +20842,10 @@ mode_8bpppixelcell: {
|
||||
sta gfxb
|
||||
lda #>PLANEB
|
||||
sta gfxb+1
|
||||
//SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) $d000 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1
|
||||
lda #<$d000
|
||||
//SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (const byte*) mode_8bpppixelcell::CHARGEN#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1
|
||||
lda #<CHARGEN
|
||||
sta chargen
|
||||
lda #>$d000
|
||||
lda #>CHARGEN
|
||||
sta chargen+1
|
||||
jmp b4
|
||||
//SEG469 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4]
|
||||
@ -25918,6 +25915,7 @@ FINAL SYMBOL TABLE
|
||||
(label) mode_8bpppixelcell::@9
|
||||
(label) mode_8bpppixelcell::@return
|
||||
(byte*) mode_8bpppixelcell::CHARGEN
|
||||
(const byte*) mode_8bpppixelcell::CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) mode_8bpppixelcell::PLANEA
|
||||
(const byte*) mode_8bpppixelcell::PLANEA#0 PLANEA = ((byte*))(word/signed word/dword/signed dword) $3c00
|
||||
(byte*) mode_8bpppixelcell::PLANEB
|
||||
@ -27594,6 +27592,7 @@ mode_8bpppixelcell: {
|
||||
.label PLANEA = $3c00
|
||||
// 8BPP Pixel Cell Charset (contains 256 64 byte chars)
|
||||
.label PLANEB = $4000
|
||||
.label CHARGEN = $d000
|
||||
.label _14 = 7
|
||||
.label gfxa = 2
|
||||
.label ay = 4
|
||||
@ -27739,10 +27738,10 @@ mode_8bpppixelcell: {
|
||||
sta gfxb
|
||||
lda #>PLANEB
|
||||
sta gfxb+1
|
||||
//SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = ((byte*))(word/dword/signed dword) $d000 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1
|
||||
lda #<$d000
|
||||
//SEG468 [260] phi (byte*) mode_8bpppixelcell::chargen#4 = (const byte*) mode_8bpppixelcell::CHARGEN#0 [phi:mode_8bpppixelcell::@10->mode_8bpppixelcell::@4#3] -- pbuz1=pbuc1
|
||||
lda #<CHARGEN
|
||||
sta chargen
|
||||
lda #>$d000
|
||||
lda #>CHARGEN
|
||||
sta chargen+1
|
||||
//SEG469 [260] phi from mode_8bpppixelcell::@13 to mode_8bpppixelcell::@4 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4]
|
||||
//SEG470 [260] phi (byte) mode_8bpppixelcell::ch#8 = (byte) mode_8bpppixelcell::ch#1 [phi:mode_8bpppixelcell::@13->mode_8bpppixelcell::@4#0] -- register_copy
|
||||
|
@ -766,6 +766,7 @@
|
||||
(label) mode_8bpppixelcell::@9
|
||||
(label) mode_8bpppixelcell::@return
|
||||
(byte*) mode_8bpppixelcell::CHARGEN
|
||||
(const byte*) mode_8bpppixelcell::CHARGEN#0 CHARGEN = ((byte*))(word/dword/signed dword) $d000
|
||||
(byte*) mode_8bpppixelcell::PLANEA
|
||||
(const byte*) mode_8bpppixelcell::PLANEA#0 PLANEA = ((byte*))(word/signed word/dword/signed dword) $3c00
|
||||
(byte*) mode_8bpppixelcell::PLANEB
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -12,10 +13,9 @@ main: scope:[main] from @1
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
(byte~) main::$4 ← ((byte)) *((signed byte[]) main::sbs#0 + (byte) main::i#2)
|
||||
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← (byte~) main::$4
|
||||
*((byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte~) main::$4
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,3)
|
||||
(bool~) main::$5 ← (byte) main::i#1 != rangelast(0,3)
|
||||
if((bool~) main::$5) goto main::@1
|
||||
@ -46,7 +46,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte*) main::SCREEN#1
|
||||
(byte) main::i
|
||||
(byte) main::i#0
|
||||
(byte) main::i#1
|
||||
@ -56,10 +55,6 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (byte*) main::SCREEN#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$5 [12] if((byte) main::i#1!=rangelast(0,3)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const signed byte/signed word/signed dword) main::$0 = -1
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) sprite
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -5,11 +7,9 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $4400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) sprite#1 ← phi( @1/(byte*) sprite#2 )
|
||||
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
|
||||
(byte*~) main::$0 ← (byte*) SCREEN#1 + (word/signed word/dword/signed dword) $378
|
||||
(byte*~) main::$0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $378
|
||||
(byte*) main::sprite_ptr#0 ← (byte*~) main::$0
|
||||
(byte*~) main::$1 ← (byte*) sprite#1 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte*~) main::$1 ← (byte*) sprite#0 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte~) main::$2 ← ((byte)) (byte*~) main::$1
|
||||
*((byte*) main::sprite_ptr#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$2
|
||||
to:main::@return
|
||||
@ -17,8 +17,6 @@ main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) sprite#2 ← phi( @begin/(byte*) sprite#0 )
|
||||
(byte*) SCREEN#2 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -32,8 +30,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(void()) main()
|
||||
(byte*~) main::$0
|
||||
(byte*~) main::$1
|
||||
@ -43,18 +39,11 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::sprite_ptr#0
|
||||
(byte*) sprite
|
||||
(byte*) sprite#0
|
||||
(byte*) sprite#1
|
||||
(byte*) sprite#2
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::sprite_ptr#0 = (byte*~) main::$0
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#2
|
||||
Alias (byte*) sprite#0 = (byte*) sprite#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) sprite#1 (byte*) sprite#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) sprite#0 = ((byte*))$5000
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$4400
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
|
@ -1,3 +1,7 @@
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
Identified constant variable (byte) main::min
|
||||
Identified constant variable (byte) main::max
|
||||
Identified constant variable (byte*) main::BGCOL
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -24,12 +28,10 @@ main: scope:[main] from @1
|
||||
if((bool~) main::$7) goto main::@1
|
||||
to:main::@3
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::BGCOL#1 ← phi( main/(byte*) main::BGCOL#0 )
|
||||
*((byte*) main::BGCOL#1) ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
*((byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main
|
||||
(byte*) main::BGCOL#2 ← phi( main/(byte*) main::BGCOL#0 )
|
||||
*((byte*) main::BGCOL#2) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
*((byte*) main::BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1 main::@3
|
||||
return
|
||||
@ -60,8 +62,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::BGCOL
|
||||
(byte*) main::BGCOL#0
|
||||
(byte*) main::BGCOL#1
|
||||
(byte*) main::BGCOL#2
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte) main::max
|
||||
@ -82,7 +82,6 @@ Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::midw#0 = (byte/signed word/word/dword/signed dword~) main::$3
|
||||
Alias (byte) main::sumb#0 = (byte~) main::$4
|
||||
Alias (byte) main::midb#0 = (byte/signed word/word/dword/signed dword~) main::$6
|
||||
Alias (byte*) main::BGCOL#0 = (byte*) main::BGCOL#1 (byte*) main::BGCOL#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$7 [18] if(*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0)==*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (word) w::w1
|
||||
Identified constant variable (word) w::w2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -16,18 +19,16 @@ main: scope:[main] from @2
|
||||
(byte*) SCREEN4#5 ← phi( @2/(byte*) SCREEN4#6 )
|
||||
(byte*) SCREEN3#5 ← phi( @2/(byte*) SCREEN3#6 )
|
||||
(byte*) SCREEN2#2 ← phi( @2/(byte*) SCREEN2#3 )
|
||||
(byte*) SCREEN#2 ← phi( @2/(byte*) SCREEN#3 )
|
||||
(byte) main::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) SCREEN4#4 ← phi( main/(byte*) SCREEN4#5 main::@1/(byte*) SCREEN4#4 )
|
||||
(byte*) SCREEN3#4 ← phi( main/(byte*) SCREEN3#5 main::@1/(byte*) SCREEN3#4 )
|
||||
(byte*) SCREEN2#1 ← phi( main/(byte*) SCREEN2#2 main::@1/(byte*) SCREEN2#1 )
|
||||
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
|
||||
(byte) main::b#2 ← phi( main/(byte) main::b#0 main::@1/(byte) main::b#1 )
|
||||
(byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) $c8 - (byte) main::b#2
|
||||
(byte) main::b2#0 ← (byte/word/signed word/dword/signed dword~) main::$0
|
||||
*((byte*) SCREEN#1 + (byte) main::b#2) ← (byte) main::b2#0
|
||||
*((byte*) SCREEN#0 + (byte) main::b#2) ← (byte) main::b2#0
|
||||
(signed byte~) main::$1 ← ((signed byte)) (byte) main::b#2
|
||||
(signed byte~) main::$2 ← - (signed byte~) main::$1
|
||||
(signed byte) main::sb#0 ← (signed byte~) main::$2
|
||||
@ -77,7 +78,6 @@ w::@return: scope:[w] from w::@1
|
||||
(byte*) SCREEN4#6 ← phi( @begin/(byte*) SCREEN4#0 )
|
||||
(byte*) SCREEN3#6 ← phi( @begin/(byte*) SCREEN3#0 )
|
||||
(byte*) SCREEN2#3 ← phi( @begin/(byte*) SCREEN2#0 )
|
||||
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -97,9 +97,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN2
|
||||
(byte*) SCREEN2#0
|
||||
(byte*) SCREEN2#1
|
||||
@ -172,20 +169,16 @@ Alias (byte*) SCREEN3#3 = (byte*) SCREEN3#4
|
||||
Alias (byte*) SCREEN4#3 = (byte*) SCREEN4#4
|
||||
Alias (byte) w::b#0 = (byte~) w::$1
|
||||
Alias (byte) w::b2#0 = (byte/signed word/word/dword/signed dword~) w::$3
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Self Phi Eliminated (byte*) SCREEN2#1
|
||||
Self Phi Eliminated (byte*) SCREEN3#3
|
||||
Self Phi Eliminated (byte*) SCREEN4#3
|
||||
Self Phi Eliminated (byte*) SCREEN3#1
|
||||
Self Phi Eliminated (byte*) SCREEN4#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN2#2 (byte*) SCREEN2#0
|
||||
Redundant Phi (byte*) SCREEN3#5 (byte*) SCREEN3#0
|
||||
Redundant Phi (byte*) SCREEN4#5 (byte*) SCREEN4#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
|
||||
Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2
|
||||
Redundant Phi (byte*) SCREEN3#3 (byte*) SCREEN3#5
|
||||
Redundant Phi (byte*) SCREEN4#3 (byte*) SCREEN4#5
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (byte*) PROCPORT
|
||||
Identified constant variable (byte*) CHARGEN
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -6,18 +9,14 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN#1 ← phi( @1/(byte*) SCREEN#2 )
|
||||
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
|
||||
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#2 )
|
||||
asm { sei }
|
||||
(byte*~) main::$0 ← (byte*) CHARGEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*~) main::$0 ← (byte*) CHARGEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) main::CHAR_A#0 ← (byte*~) main::$0
|
||||
*((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*) main::sc#0 ← (byte*) SCREEN#1
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*) main::sc#0 ← (byte*) SCREEN#0
|
||||
(byte) main::y#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
(byte*) PROCPORT#8 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 )
|
||||
(byte*) main::sc#7 ← phi( main/(byte*) main::sc#0 main::@5/(byte*) main::sc#2 )
|
||||
(byte) main::y#2 ← phi( main/(byte) main::y#0 main::@5/(byte) main::y#1 )
|
||||
(byte*) main::CHAR_A#1 ← phi( main/(byte*) main::CHAR_A#0 main::@5/(byte*) main::CHAR_A#2 )
|
||||
@ -25,7 +24,6 @@ main::@1: scope:[main] from main main::@5
|
||||
(byte) main::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
(byte*) PROCPORT#6 ← phi( main::@1/(byte*) PROCPORT#8 main::@3/(byte*) PROCPORT#5 )
|
||||
(byte*) main::CHAR_A#4 ← phi( main::@1/(byte*) main::CHAR_A#1 main::@3/(byte*) main::CHAR_A#3 )
|
||||
(byte) main::y#5 ← phi( main::@1/(byte) main::y#2 main::@3/(byte) main::y#4 )
|
||||
(byte) main::x#3 ← phi( main::@1/(byte) main::x#0 main::@3/(byte) main::x#1 )
|
||||
@ -38,7 +36,6 @@ main::@2: scope:[main] from main::@1 main::@3
|
||||
if((bool~) main::$3) goto main::@3
|
||||
to:main::@4
|
||||
main::@3: scope:[main] from main::@2 main::@4
|
||||
(byte*) PROCPORT#5 ← phi( main::@2/(byte*) PROCPORT#6 main::@4/(byte*) PROCPORT#7 )
|
||||
(byte*) main::CHAR_A#3 ← phi( main::@2/(byte*) main::CHAR_A#4 main::@4/(byte*) main::CHAR_A#5 )
|
||||
(byte) main::y#4 ← phi( main::@2/(byte) main::y#5 main::@4/(byte) main::y#6 )
|
||||
(byte) main::x#2 ← phi( main::@2/(byte) main::x#3 main::@4/(byte) main::x#4 )
|
||||
@ -54,7 +51,6 @@ main::@3: scope:[main] from main::@2 main::@4
|
||||
if((bool~) main::$5) goto main::@2
|
||||
to:main::@5
|
||||
main::@4: scope:[main] from main::@2
|
||||
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#6 )
|
||||
(byte*) main::CHAR_A#5 ← phi( main::@2/(byte*) main::CHAR_A#4 )
|
||||
(byte) main::y#6 ← phi( main::@2/(byte) main::y#5 )
|
||||
(byte) main::x#4 ← phi( main::@2/(byte) main::x#3 )
|
||||
@ -63,7 +59,6 @@ main::@4: scope:[main] from main::@2
|
||||
(byte) main::c#1 ← (byte) '*'
|
||||
to:main::@3
|
||||
main::@5: scope:[main] from main::@3
|
||||
(byte*) PROCPORT#4 ← phi( main::@3/(byte*) PROCPORT#5 )
|
||||
(byte*) main::CHAR_A#2 ← phi( main::@3/(byte*) main::CHAR_A#3 )
|
||||
(byte) main::y#3 ← phi( main::@3/(byte) main::y#4 )
|
||||
(byte*) main::sc#4 ← phi( main::@3/(byte*) main::sc#1 )
|
||||
@ -74,17 +69,13 @@ main::@5: scope:[main] from main::@3
|
||||
if((bool~) main::$7) goto main::@1
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
(byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 )
|
||||
*((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
asm { cli }
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@6
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#2 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
(byte*) PROCPORT#3 ← phi( @begin/(byte*) PROCPORT#0 )
|
||||
(byte*) CHARGEN#2 ← phi( @begin/(byte*) CHARGEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -98,22 +89,10 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CHARGEN#1
|
||||
(byte*) CHARGEN#2
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte*) PROCPORT#1
|
||||
(byte*) PROCPORT#2
|
||||
(byte*) PROCPORT#3
|
||||
(byte*) PROCPORT#4
|
||||
(byte*) PROCPORT#5
|
||||
(byte*) PROCPORT#6
|
||||
(byte*) PROCPORT#7
|
||||
(byte*) PROCPORT#8
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(void()) main()
|
||||
(byte*~) main::$0
|
||||
(byte~) main::$1
|
||||
@ -173,7 +152,7 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [17] (bool~) main::$3 ← (byte~) main::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [16] (bool~) main::$2 ← (byte~) main::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [16] (bool~) main::$3 ← (byte~) main::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [15] (bool~) main::$2 ← (byte~) main::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) main::CHAR_A#0 = (byte*~) main::$0
|
||||
Alias (byte) main::bits#1 = (byte~) main::$4
|
||||
@ -182,37 +161,26 @@ Alias (byte) main::bits#2 = (byte) main::bits#4
|
||||
Alias (byte) main::x#3 = (byte) main::x#4
|
||||
Alias (byte) main::y#5 = (byte) main::y#6
|
||||
Alias (byte*) main::CHAR_A#4 = (byte*) main::CHAR_A#5
|
||||
Alias (byte*) PROCPORT#6 = (byte*) PROCPORT#7
|
||||
Alias (byte*) main::sc#1 = (byte*) main::sc#4
|
||||
Alias (byte) main::y#3 = (byte) main::y#4
|
||||
Alias (byte*) main::CHAR_A#2 = (byte*) main::CHAR_A#3
|
||||
Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#4 (byte*) PROCPORT#5
|
||||
Alias (byte*) main::sc#2 = (byte*~) main::$6
|
||||
Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#2
|
||||
Alias (byte*) PROCPORT#0 = (byte*) PROCPORT#3
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) main::sc#3 = (byte*) main::sc#5
|
||||
Alias (byte) main::bits#2 = (byte) main::bits#3
|
||||
Alias (byte) main::x#2 = (byte) main::x#3
|
||||
Alias (byte) main::y#3 = (byte) main::y#5
|
||||
Alias (byte*) main::CHAR_A#2 = (byte*) main::CHAR_A#4
|
||||
Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#6
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte) main::y#3
|
||||
Self Phi Eliminated (byte*) main::CHAR_A#2
|
||||
Self Phi Eliminated (byte*) PROCPORT#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) CHARGEN#1 (byte*) CHARGEN#0
|
||||
Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte) main::y#3 (byte) main::y#2
|
||||
Redundant Phi (byte*) main::CHAR_A#2 (byte*) main::CHAR_A#1
|
||||
Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#8
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$3 [18] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
|
||||
Simple Condition (bool~) main::$5 [26] if((byte) main::x#1!=rangelast(0,7)) goto main::@2
|
||||
Simple Condition (bool~) main::$7 [34] if((byte) main::y#1!=rangelast(0,7)) goto main::@1
|
||||
Simple Condition (bool~) main::$3 [17] if((byte~) main::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@3
|
||||
Simple Condition (bool~) main::$5 [25] if((byte) main::x#1!=rangelast(0,7)) goto main::@2
|
||||
Simple Condition (bool~) main::$7 [33] if((byte) main::y#1!=rangelast(0,7)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
@ -230,10 +198,8 @@ Resolved ranged comparison value if(main::x#1!=rangelast(0,7)) goto main::@2 to
|
||||
Resolved ranged next value main::y#1 ← ++ main::y#2 to ++
|
||||
Resolved ranged comparison value if(main::y#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Self Phi Eliminated (byte*) main::CHAR_A#1
|
||||
Self Phi Eliminated (byte*) PROCPORT#8
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::CHAR_A#1 (const byte*) main::CHAR_A#0
|
||||
Redundant Phi (byte*) PROCPORT#8 (const byte*) PROCPORT#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const byte) main::y#0
|
||||
Inlining constant with var siblings (const byte) main::x#0
|
||||
|
@ -1,4 +1,8 @@
|
||||
Resolved forward reference irq to interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
Identified constant variable (byte*) BORDERCOL
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte) DARK_GREY
|
||||
Identified constant variable (byte) BLACK
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -16,19 +20,11 @@ main::@return: scope:[main] from main
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte) BLACK#5 ← phi( @begin/(byte) BLACK#0 )
|
||||
(byte*) RASTER#5 ← phi( @begin/(byte*) RASTER#0 )
|
||||
(byte*) BORDERCOL#5 ← phi( @begin/(byte*) BORDERCOL#0 )
|
||||
(byte) DARK_GREY#3 ← phi( @begin/(byte) DARK_GREY#0 )
|
||||
(byte) irq_raster_next#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@2
|
||||
irq: scope:[irq] from
|
||||
(byte) BLACK#2 ← phi( @2/(byte) BLACK#4 )
|
||||
(byte*) RASTER#2 ← phi( @2/(byte*) RASTER#4 )
|
||||
(byte) irq_raster_next#3 ← phi( @2/(byte) irq_raster_next#5 )
|
||||
(byte*) BORDERCOL#1 ← phi( @2/(byte*) BORDERCOL#3 )
|
||||
(byte) DARK_GREY#1 ← phi( @2/(byte) DARK_GREY#2 )
|
||||
*((byte*) BORDERCOL#1) ← (byte) DARK_GREY#1
|
||||
*((byte*) BORDERCOL#0) ← (byte) DARK_GREY#0
|
||||
(byte) irq_raster_next#1 ← (byte) irq_raster_next#3 + (byte/signed byte/word/signed word/dword/signed dword) $15
|
||||
(byte) irq::raster_next#0 ← (byte) irq_raster_next#1
|
||||
(byte~) irq::$0 ← (byte) irq::raster_next#0 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
@ -38,18 +34,12 @@ irq: scope:[irq] from
|
||||
to:irq::@2
|
||||
irq::@1: scope:[irq] from irq irq::@2
|
||||
(byte) irq_raster_next#6 ← phi( irq/(byte) irq_raster_next#1 irq::@2/(byte) irq_raster_next#7 )
|
||||
(byte*) BORDERCOL#2 ← phi( irq/(byte*) BORDERCOL#1 irq::@2/(byte*) BORDERCOL#4 )
|
||||
(byte) BLACK#1 ← phi( irq/(byte) BLACK#2 irq::@2/(byte) BLACK#3 )
|
||||
(byte*) RASTER#1 ← phi( irq/(byte*) RASTER#2 irq::@2/(byte*) RASTER#3 )
|
||||
(byte) irq::raster_next#2 ← phi( irq/(byte) irq::raster_next#0 irq::@2/(byte) irq::raster_next#1 )
|
||||
*((byte*) RASTER#1) ← (byte) irq::raster_next#2
|
||||
*((byte*) BORDERCOL#2) ← (byte) BLACK#1
|
||||
*((byte*) RASTER#0) ← (byte) irq::raster_next#2
|
||||
*((byte*) BORDERCOL#0) ← (byte) BLACK#0
|
||||
to:irq::@return
|
||||
irq::@2: scope:[irq] from irq
|
||||
(byte) irq_raster_next#7 ← phi( irq/(byte) irq_raster_next#1 )
|
||||
(byte*) BORDERCOL#4 ← phi( irq/(byte*) BORDERCOL#1 )
|
||||
(byte) BLACK#3 ← phi( irq/(byte) BLACK#2 )
|
||||
(byte*) RASTER#3 ← phi( irq/(byte*) RASTER#2 )
|
||||
(byte) irq::raster_next#3 ← phi( irq/(byte) irq::raster_next#0 )
|
||||
(byte) irq::raster_next#1 ← (byte) irq::raster_next#3 - (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:irq::@1
|
||||
@ -59,11 +49,7 @@ irq::@return: scope:[irq] from irq::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @1
|
||||
(byte) BLACK#4 ← phi( @1/(byte) BLACK#5 )
|
||||
(byte*) RASTER#4 ← phi( @1/(byte*) RASTER#5 )
|
||||
(byte) irq_raster_next#5 ← phi( @1/(byte) irq_raster_next#0 )
|
||||
(byte*) BORDERCOL#3 ← phi( @1/(byte*) BORDERCOL#5 )
|
||||
(byte) DARK_GREY#2 ← phi( @1/(byte) DARK_GREY#3 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -78,32 +64,14 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLACK#1
|
||||
(byte) BLACK#2
|
||||
(byte) BLACK#3
|
||||
(byte) BLACK#4
|
||||
(byte) BLACK#5
|
||||
(byte*) BORDERCOL
|
||||
(byte*) BORDERCOL#0
|
||||
(byte*) BORDERCOL#1
|
||||
(byte*) BORDERCOL#2
|
||||
(byte*) BORDERCOL#3
|
||||
(byte*) BORDERCOL#4
|
||||
(byte*) BORDERCOL#5
|
||||
(byte) DARK_GREY
|
||||
(byte) DARK_GREY#0
|
||||
(byte) DARK_GREY#1
|
||||
(byte) DARK_GREY#2
|
||||
(byte) DARK_GREY#3
|
||||
(void()**) KERNEL_IRQ
|
||||
(void()**) KERNEL_IRQ#0
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte*) RASTER#1
|
||||
(byte*) RASTER#2
|
||||
(byte*) RASTER#3
|
||||
(byte*) RASTER#4
|
||||
(byte*) RASTER#5
|
||||
interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
(byte~) irq::$0
|
||||
(bool~) irq::$1
|
||||
@ -131,32 +99,18 @@ interrupt(HARDWARE_CLOBBER)(void()) irq()
|
||||
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [16] (bool~) irq::$2 ← (byte~) irq::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [15] (bool~) irq::$1 ← (byte~) irq::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [15] (bool~) irq::$2 ← (byte~) irq::$0 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [14] (bool~) irq::$1 ← (byte~) irq::$0 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) DARK_GREY#0 = (byte) DARK_GREY#3 (byte) DARK_GREY#2
|
||||
Alias (byte*) BORDERCOL#0 = (byte*) BORDERCOL#5 (byte*) BORDERCOL#3
|
||||
Alias (byte*) RASTER#0 = (byte*) RASTER#5 (byte*) RASTER#4
|
||||
Alias (byte) BLACK#0 = (byte) BLACK#5 (byte) BLACK#4
|
||||
Alias (byte) irq::raster_next#0 = (byte) irq::raster_next#3
|
||||
Alias (byte*) RASTER#2 = (byte*) RASTER#3
|
||||
Alias (byte) BLACK#2 = (byte) BLACK#3
|
||||
Alias (byte*) BORDERCOL#1 = (byte*) BORDERCOL#4
|
||||
Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#7
|
||||
Alias (byte) irq_raster_next#2 = (byte) irq_raster_next#4 (byte) irq_raster_next#6
|
||||
Alias (byte) irq_raster_next#0 = (byte) irq_raster_next#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) RASTER#1 = (byte*) RASTER#2
|
||||
Alias (byte) BLACK#1 = (byte) BLACK#2
|
||||
Alias (byte*) BORDERCOL#1 = (byte*) BORDERCOL#2
|
||||
Alias (byte) irq_raster_next#1 = (byte) irq_raster_next#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte) DARK_GREY#1 (byte) DARK_GREY#0
|
||||
Redundant Phi (byte*) BORDERCOL#1 (byte*) BORDERCOL#0
|
||||
Redundant Phi (byte) irq_raster_next#3 (byte) irq_raster_next#0
|
||||
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#0
|
||||
Redundant Phi (byte) BLACK#1 (byte) BLACK#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) irq::$2 [17] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1
|
||||
Simple Condition (bool~) irq::$2 [16] if((byte~) irq::$0!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto irq::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) BORDERCOL#0 = ((byte*))$d020
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
|
@ -1,4 +1,17 @@
|
||||
Resolved forward reference sprites_irq to interrupt(HARDWARE_CLOBBER)(void()) sprites_irq()
|
||||
Identified constant variable (byte*) current_piece_gfx
|
||||
Identified constant variable (byte) current_piece_char
|
||||
Identified constant variable (byte) current_xpos
|
||||
Identified constant variable (byte) current_ypos
|
||||
Identified constant variable (byte) render_screen_render
|
||||
Identified constant variable (byte) render_screen_show
|
||||
Identified constant variable (dword) score_bcd
|
||||
Identified constant variable (word) lines_bcd
|
||||
Identified constant variable (byte) level_bcd
|
||||
Identified constant variable (byte) level
|
||||
Identified constant variable (byte) game_over
|
||||
Identified constant variable (byte*) SIN
|
||||
Identified constant variable (byte*) SIN_SPRITE
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call (byte~) $5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES
|
||||
Inlined call (byte~) sprites_irq::$5 ← call toSpritePtr (byte*) PLAYFIELD_SPRITES
|
||||
@ -375,23 +388,17 @@ sprites_irq::@return: scope:[sprites_irq] from sprites_irq::@7
|
||||
(byte) sin_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@9
|
||||
main: scope:[main] from @9
|
||||
(byte*) SIN#23 ← phi( @9/(byte*) SIN#24 )
|
||||
(byte) sin_idx#33 ← phi( @9/(byte) sin_idx#16 )
|
||||
(byte*) SIN_SPRITE#14 ← phi( @9/(byte*) SIN_SPRITE#15 )
|
||||
(byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) PLAYFIELD_SCREEN_1#0
|
||||
to:main::vicSelectGfxBank1
|
||||
main::vicSelectGfxBank1: scope:[main] from main
|
||||
(byte*) SIN#22 ← phi( main/(byte*) SIN#23 )
|
||||
(byte) sin_idx#32 ← phi( main/(byte) sin_idx#33 )
|
||||
(byte*) SIN_SPRITE#13 ← phi( main/(byte*) SIN_SPRITE#14 )
|
||||
(byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 )
|
||||
*((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1
|
||||
to:main::vicSelectGfxBank1_toDd001
|
||||
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||
(byte*) SIN#21 ← phi( main::vicSelectGfxBank1/(byte*) SIN#22 )
|
||||
(byte) sin_idx#31 ← phi( main::vicSelectGfxBank1/(byte) sin_idx#32 )
|
||||
(byte*) SIN_SPRITE#12 ← phi( main::vicSelectGfxBank1/(byte*) SIN_SPRITE#13 )
|
||||
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 )
|
||||
(word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
||||
(byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0
|
||||
@ -400,31 +407,23 @@ main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
|
||||
to:main::vicSelectGfxBank1_toDd001_@return
|
||||
main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001
|
||||
(byte*) SIN#20 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SIN#21 )
|
||||
(byte) sin_idx#30 ← phi( main::vicSelectGfxBank1_toDd001/(byte) sin_idx#31 )
|
||||
(byte*) SIN_SPRITE#11 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SIN_SPRITE#12 )
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 )
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2
|
||||
to:main::vicSelectGfxBank1_@1
|
||||
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return
|
||||
(byte*) SIN#19 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SIN#20 )
|
||||
(byte) sin_idx#29 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) sin_idx#30 )
|
||||
(byte*) SIN_SPRITE#10 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SIN_SPRITE#11 )
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 )
|
||||
(byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3
|
||||
*((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::vicSelectGfxBank1_@1
|
||||
(byte*) SIN#18 ← phi( main::vicSelectGfxBank1_@1/(byte*) SIN#19 )
|
||||
(byte) sin_idx#28 ← phi( main::vicSelectGfxBank1_@1/(byte) sin_idx#29 )
|
||||
(byte*) SIN_SPRITE#9 ← phi( main::vicSelectGfxBank1_@1/(byte*) SIN_SPRITE#10 )
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) PLAYFIELD_SCREEN_1#0
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) PLAYFIELD_CHARSET#0
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main::@3
|
||||
(byte*) SIN#17 ← phi( main::@3/(byte*) SIN#18 )
|
||||
(byte) sin_idx#27 ← phi( main::@3/(byte) sin_idx#28 )
|
||||
(byte*) SIN_SPRITE#8 ← phi( main::@3/(byte*) SIN_SPRITE#9 )
|
||||
(byte*) main::toD0181_gfx#1 ← phi( main::@3/(byte*) main::toD0181_gfx#0 )
|
||||
(byte*) main::toD0181_screen#1 ← phi( main::@3/(byte*) main::toD0181_screen#0 )
|
||||
(word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
|
||||
@ -439,34 +438,26 @@ main::toD0181: scope:[main] from main::@3
|
||||
(byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0
|
||||
to:main::toD0181_@return
|
||||
main::toD0181_@return: scope:[main] from main::toD0181
|
||||
(byte*) SIN#16 ← phi( main::toD0181/(byte*) SIN#17 )
|
||||
(byte) sin_idx#26 ← phi( main::toD0181/(byte) sin_idx#27 )
|
||||
(byte*) SIN_SPRITE#6 ← phi( main::toD0181/(byte*) SIN_SPRITE#8 )
|
||||
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
||||
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::toD0181_@return
|
||||
(byte*) SIN#15 ← phi( main::toD0181_@return/(byte*) SIN#16 )
|
||||
(byte) sin_idx#25 ← phi( main::toD0181_@return/(byte) sin_idx#26 )
|
||||
(byte*) SIN_SPRITE#4 ← phi( main::toD0181_@return/(byte*) SIN_SPRITE#6 )
|
||||
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
||||
(byte~) main::$1 ← (byte) main::toD0181_return#3
|
||||
*((byte*) D018#0) ← (byte~) main::$1
|
||||
call sprites_init
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@4
|
||||
(byte*) SIN#14 ← phi( main::@4/(byte*) SIN#15 )
|
||||
(byte) sin_idx#24 ← phi( main::@4/(byte) sin_idx#25 )
|
||||
(byte*) SIN_SPRITE#3 ← phi( main::@4/(byte*) SIN_SPRITE#4 )
|
||||
*((byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff
|
||||
(byte) main::xpos#0 ← (byte/signed byte/word/signed word/dword/signed dword) $18
|
||||
(byte) main::ypos#0 ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte) main::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@5 main::@6
|
||||
(byte*) SIN#13 ← phi( main::@5/(byte*) SIN#10 main::@6/(byte*) SIN#14 )
|
||||
(byte) sin_idx#23 ← phi( main::@5/(byte) sin_idx#20 main::@6/(byte) sin_idx#24 )
|
||||
(byte*) SIN_SPRITE#1 ← phi( main::@5/(byte*) SIN_SPRITE#2 main::@6/(byte*) SIN_SPRITE#3 )
|
||||
(byte) main::ypos#2 ← phi( main::@5/(byte) main::ypos#1 main::@6/(byte) main::ypos#0 )
|
||||
(byte) main::xpos#2 ← phi( main::@5/(byte) main::xpos#1 main::@6/(byte) main::xpos#0 )
|
||||
(byte) main::s#2 ← phi( main::@5/(byte) main::s#1 main::@6/(byte) main::s#0 )
|
||||
@ -476,12 +467,10 @@ main::@1: scope:[main] from main::@5 main::@6
|
||||
*((byte*) SPRITES_YPOS#0 + (byte) main::s2#0) ← (byte) main::ypos#2
|
||||
(byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::s#2 - (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
*((byte*) SPRITES_COLS#0 + (byte) main::s#2) ← (byte/signed word/word/dword/signed dword~) main::$4
|
||||
(byte*) main::toSpritePtr2_sprite#0 ← (byte*) SIN_SPRITE#1
|
||||
(byte*) main::toSpritePtr2_sprite#0 ← (byte*) SIN_SPRITE#0
|
||||
to:main::toSpritePtr2
|
||||
main::toSpritePtr2: scope:[main] from main::@1
|
||||
(byte*) SIN#12 ← phi( main::@1/(byte*) SIN#13 )
|
||||
(byte) sin_idx#22 ← phi( main::@1/(byte) sin_idx#23 )
|
||||
(byte*) SIN_SPRITE#7 ← phi( main::@1/(byte*) SIN_SPRITE#1 )
|
||||
(byte) main::ypos#5 ← phi( main::@1/(byte) main::ypos#2 )
|
||||
(byte) main::xpos#5 ← phi( main::@1/(byte) main::xpos#2 )
|
||||
(byte) main::s#5 ← phi( main::@1/(byte) main::s#2 )
|
||||
@ -492,9 +481,7 @@ main::toSpritePtr2: scope:[main] from main::@1
|
||||
(byte) main::toSpritePtr2_return#0 ← (byte) main::toSpritePtr2_$2#0
|
||||
to:main::toSpritePtr2_@return
|
||||
main::toSpritePtr2_@return: scope:[main] from main::toSpritePtr2
|
||||
(byte*) SIN#11 ← phi( main::toSpritePtr2/(byte*) SIN#12 )
|
||||
(byte) sin_idx#21 ← phi( main::toSpritePtr2/(byte) sin_idx#22 )
|
||||
(byte*) SIN_SPRITE#5 ← phi( main::toSpritePtr2/(byte*) SIN_SPRITE#7 )
|
||||
(byte) main::ypos#4 ← phi( main::toSpritePtr2/(byte) main::ypos#5 )
|
||||
(byte) main::xpos#4 ← phi( main::toSpritePtr2/(byte) main::xpos#5 )
|
||||
(byte) main::s#4 ← phi( main::toSpritePtr2/(byte) main::s#5 )
|
||||
@ -502,9 +489,7 @@ main::toSpritePtr2_@return: scope:[main] from main::toSpritePtr2
|
||||
(byte) main::toSpritePtr2_return#1 ← (byte) main::toSpritePtr2_return#2
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::toSpritePtr2_@return
|
||||
(byte*) SIN#10 ← phi( main::toSpritePtr2_@return/(byte*) SIN#11 )
|
||||
(byte) sin_idx#20 ← phi( main::toSpritePtr2_@return/(byte) sin_idx#21 )
|
||||
(byte*) SIN_SPRITE#2 ← phi( main::toSpritePtr2_@return/(byte*) SIN_SPRITE#5 )
|
||||
(byte) main::ypos#3 ← phi( main::toSpritePtr2_@return/(byte) main::ypos#4 )
|
||||
(byte) main::xpos#3 ← phi( main::toSpritePtr2_@return/(byte) main::xpos#4 )
|
||||
(byte) main::s#3 ← phi( main::toSpritePtr2_@return/(byte) main::s#4 )
|
||||
@ -518,12 +503,10 @@ main::@5: scope:[main] from main::toSpritePtr2_@return
|
||||
if((bool~) main::$6) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@5
|
||||
(byte*) SIN#9 ← phi( main::@5/(byte*) SIN#10 )
|
||||
(byte) sin_idx#17 ← phi( main::@5/(byte) sin_idx#20 )
|
||||
call sprites_irq_init
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
(byte*) SIN#8 ← phi( main::@2/(byte*) SIN#9 )
|
||||
(byte) sin_idx#12 ← phi( main::@2/(byte) sin_idx#17 )
|
||||
call loop
|
||||
to:main::@8
|
||||
@ -537,26 +520,21 @@ main::@return: scope:[main] from main::@8
|
||||
return
|
||||
to:@return
|
||||
loop: scope:[loop] from main::@7
|
||||
(byte*) SIN#6 ← phi( main::@7/(byte*) SIN#8 )
|
||||
(byte) sin_idx#18 ← phi( main::@7/(byte) sin_idx#12 )
|
||||
to:loop::@1
|
||||
loop::@1: scope:[loop] from loop loop::@9
|
||||
(byte*) SIN#5 ← phi( loop/(byte*) SIN#6 loop::@9/(byte*) SIN#7 )
|
||||
(byte) sin_idx#15 ← phi( loop/(byte) sin_idx#18 loop::@9/(byte) sin_idx#3 )
|
||||
if(true) goto loop::@2
|
||||
to:loop::@return
|
||||
loop::@2: scope:[loop] from loop::@1
|
||||
(byte*) SIN#4 ← phi( loop::@1/(byte*) SIN#5 )
|
||||
(byte) sin_idx#19 ← phi( loop::@1/(byte) sin_idx#15 )
|
||||
to:loop::@4
|
||||
loop::@4: scope:[loop] from loop::@2 loop::@4
|
||||
(byte*) SIN#3 ← phi( loop::@2/(byte*) SIN#4 loop::@4/(byte*) SIN#3 )
|
||||
(byte) sin_idx#13 ← phi( loop::@2/(byte) sin_idx#19 loop::@4/(byte) sin_idx#13 )
|
||||
(bool~) loop::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) loop::$0) goto loop::@4
|
||||
to:loop::@8
|
||||
loop::@8: scope:[loop] from loop::@4
|
||||
(byte*) SIN#2 ← phi( loop::@4/(byte*) SIN#3 )
|
||||
(byte) sin_idx#8 ← phi( loop::@4/(byte) sin_idx#13 )
|
||||
(byte) loop::idx#0 ← (byte) sin_idx#8
|
||||
(byte) loop::s#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -564,17 +542,15 @@ loop::@8: scope:[loop] from loop::@4
|
||||
loop::@5: scope:[loop] from loop::@5 loop::@8
|
||||
(byte) sin_idx#14 ← phi( loop::@5/(byte) sin_idx#14 loop::@8/(byte) sin_idx#8 )
|
||||
(byte) loop::idx#2 ← phi( loop::@5/(byte) loop::idx#1 loop::@8/(byte) loop::idx#0 )
|
||||
(byte*) SIN#1 ← phi( loop::@5/(byte*) SIN#1 loop::@8/(byte*) SIN#2 )
|
||||
(byte) loop::s#2 ← phi( loop::@5/(byte) loop::s#1 loop::@8/(byte) loop::s#0 )
|
||||
(byte~) loop::$1 ← (byte) loop::s#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((byte*) SIN#1 + (byte) loop::idx#2)
|
||||
*((byte*) SPRITES_YPOS#0 + (byte~) loop::$1) ← *((byte*) SIN#0 + (byte) loop::idx#2)
|
||||
(byte) loop::idx#1 ← (byte) loop::idx#2 + (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) loop::s#1 ← (byte) loop::s#2 + rangenext(4,7)
|
||||
(bool~) loop::$2 ← (byte) loop::s#1 != rangelast(4,7)
|
||||
if((bool~) loop::$2) goto loop::@5
|
||||
to:loop::@9
|
||||
loop::@9: scope:[loop] from loop::@5
|
||||
(byte*) SIN#7 ← phi( loop::@5/(byte*) SIN#1 )
|
||||
(byte) sin_idx#9 ← phi( loop::@5/(byte) sin_idx#14 )
|
||||
(byte) sin_idx#3 ← ++ (byte) sin_idx#9
|
||||
to:loop::@1
|
||||
@ -584,8 +560,6 @@ loop::@return: scope:[loop] from loop::@1
|
||||
return
|
||||
to:@return
|
||||
@9: scope:[] from @7
|
||||
(byte*) SIN#24 ← phi( @7/(byte*) SIN#0 )
|
||||
(byte*) SIN_SPRITE#15 ← phi( @7/(byte*) SIN_SPRITE#0 )
|
||||
(byte) irq_cnt#17 ← phi( @7/(byte) irq_cnt#19 )
|
||||
(byte) render_screen_showing#4 ← phi( @7/(byte) render_screen_showing#5 )
|
||||
(byte) irq_sprite_ptr#14 ← phi( @7/(byte) irq_sprite_ptr#17 )
|
||||
@ -750,47 +724,8 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SIN
|
||||
(byte*) SIN#0
|
||||
(byte*) SIN#1
|
||||
(byte*) SIN#10
|
||||
(byte*) SIN#11
|
||||
(byte*) SIN#12
|
||||
(byte*) SIN#13
|
||||
(byte*) SIN#14
|
||||
(byte*) SIN#15
|
||||
(byte*) SIN#16
|
||||
(byte*) SIN#17
|
||||
(byte*) SIN#18
|
||||
(byte*) SIN#19
|
||||
(byte*) SIN#2
|
||||
(byte*) SIN#20
|
||||
(byte*) SIN#21
|
||||
(byte*) SIN#22
|
||||
(byte*) SIN#23
|
||||
(byte*) SIN#24
|
||||
(byte*) SIN#3
|
||||
(byte*) SIN#4
|
||||
(byte*) SIN#5
|
||||
(byte*) SIN#6
|
||||
(byte*) SIN#7
|
||||
(byte*) SIN#8
|
||||
(byte*) SIN#9
|
||||
(byte*) SIN_SPRITE
|
||||
(byte*) SIN_SPRITE#0
|
||||
(byte*) SIN_SPRITE#1
|
||||
(byte*) SIN_SPRITE#10
|
||||
(byte*) SIN_SPRITE#11
|
||||
(byte*) SIN_SPRITE#12
|
||||
(byte*) SIN_SPRITE#13
|
||||
(byte*) SIN_SPRITE#14
|
||||
(byte*) SIN_SPRITE#15
|
||||
(byte*) SIN_SPRITE#2
|
||||
(byte*) SIN_SPRITE#3
|
||||
(byte*) SIN_SPRITE#4
|
||||
(byte*) SIN_SPRITE#5
|
||||
(byte*) SIN_SPRITE#6
|
||||
(byte*) SIN_SPRITE#7
|
||||
(byte*) SIN_SPRITE#8
|
||||
(byte*) SIN_SPRITE#9
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
@ -1248,9 +1183,7 @@ Alias (byte) irq_sprite_ypos#11 = (byte) irq_sprite_ypos#8 (byte) irq_sprite_ypo
|
||||
Alias (byte) irq_sprite_ptr#11 = (byte) irq_sprite_ptr#8 (byte) irq_sprite_ptr#4
|
||||
Alias (byte) irq_cnt#0 = (byte) irq_cnt#19 (byte) irq_cnt#17
|
||||
Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
||||
Alias (byte*) SIN_SPRITE#10 = (byte*) SIN_SPRITE#13 (byte*) SIN_SPRITE#14 (byte*) SIN_SPRITE#12 (byte*) SIN_SPRITE#11 (byte*) SIN_SPRITE#9 (byte*) SIN_SPRITE#8 (byte*) SIN_SPRITE#6 (byte*) SIN_SPRITE#4 (byte*) SIN_SPRITE#3
|
||||
Alias (byte) sin_idx#24 = (byte) sin_idx#32 (byte) sin_idx#33 (byte) sin_idx#31 (byte) sin_idx#30 (byte) sin_idx#29 (byte) sin_idx#28 (byte) sin_idx#27 (byte) sin_idx#26 (byte) sin_idx#25
|
||||
Alias (byte*) SIN#14 = (byte*) SIN#22 (byte*) SIN#23 (byte*) SIN#21 (byte*) SIN#20 (byte*) SIN#19 (byte*) SIN#18 (byte*) SIN#17 (byte*) SIN#16 (byte*) SIN#15
|
||||
Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
@ -1260,20 +1193,13 @@ Alias (byte*) main::toSpritePtr2_sprite#0 = (byte*) main::toSpritePtr2_sprite#1
|
||||
Alias (byte) main::s#2 = (byte) main::s#5 (byte) main::s#4 (byte) main::s#3
|
||||
Alias (byte) main::xpos#2 = (byte) main::xpos#5 (byte) main::xpos#4 (byte) main::xpos#3
|
||||
Alias (byte) main::ypos#2 = (byte) main::ypos#5 (byte) main::ypos#4 (byte) main::ypos#3
|
||||
Alias (byte*) SIN_SPRITE#1 = (byte*) SIN_SPRITE#7 (byte*) SIN_SPRITE#5 (byte*) SIN_SPRITE#2
|
||||
Alias (byte) sin_idx#12 = (byte) sin_idx#22 (byte) sin_idx#23 (byte) sin_idx#21 (byte) sin_idx#20 (byte) sin_idx#17
|
||||
Alias (byte*) SIN#10 = (byte*) SIN#12 (byte*) SIN#13 (byte*) SIN#11 (byte*) SIN#9 (byte*) SIN#8
|
||||
Alias (byte) main::toSpritePtr2_return#0 = (byte) main::toSpritePtr2_$2#0 (byte) main::toSpritePtr2_return#2 (byte) main::toSpritePtr2_return#1 (byte) main::toSpritePtr2_return#3 (byte~) main::$5
|
||||
Alias (byte) sin_idx#1 = (byte) sin_idx#6 (byte) sin_idx#7 (byte) sin_idx#2
|
||||
Alias (byte) sin_idx#10 = (byte) sin_idx#19 (byte) sin_idx#15 (byte) sin_idx#4
|
||||
Alias (byte*) SIN#4 = (byte*) SIN#5
|
||||
Alias (byte) sin_idx#13 = (byte) sin_idx#8
|
||||
Alias (byte*) SIN#2 = (byte*) SIN#3
|
||||
Alias (byte) sin_idx#14 = (byte) sin_idx#9
|
||||
Alias (byte*) SIN#1 = (byte*) SIN#7
|
||||
Alias (byte) sin_idx#0 = (byte) sin_idx#16
|
||||
Alias (byte*) SIN_SPRITE#0 = (byte*) SIN_SPRITE#15
|
||||
Alias (byte*) SIN#0 = (byte*) SIN#24
|
||||
Alias (byte) sin_idx#11 = (byte) sin_idx#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias candidate removed (volatile)(byte) IRQ_RASTER_FIRST#0 = (byte/signed word/word/dword/signed dword~) $3 (byte) irq_raster_next#0 (byte) irq_raster_next#23 (byte) irq_raster_next#21 (byte) irq_raster_next#20 (byte) irq_raster_next#17 (byte) irq_raster_next#10
|
||||
@ -1297,12 +1223,8 @@ Self Phi Eliminated (byte) render_screen_showing#1
|
||||
Self Phi Eliminated (byte) irq_cnt#10
|
||||
Self Phi Eliminated (byte) irq_raster_next#11
|
||||
Self Phi Eliminated (byte) irq_sprite_ypos#10
|
||||
Self Phi Eliminated (byte*) SIN_SPRITE#1
|
||||
Self Phi Eliminated (byte) sin_idx#12
|
||||
Self Phi Eliminated (byte*) SIN#10
|
||||
Self Phi Eliminated (byte) sin_idx#13
|
||||
Self Phi Eliminated (byte*) SIN#2
|
||||
Self Phi Eliminated (byte*) SIN#1
|
||||
Self Phi Eliminated (byte) sin_idx#14
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) irq_sprite_ypos#22 (byte) irq_sprite_ypos#0
|
||||
@ -1327,18 +1249,11 @@ Redundant Phi (byte) sprites_irq::toSpritePtr2_return#3 (byte) sprites_irq::toSp
|
||||
Redundant Phi (byte) irq_sprite_ypos#14 (byte) irq_sprite_ypos#18
|
||||
Redundant Phi (byte) irq_raster_next#17 (byte) irq_raster_next#20
|
||||
Redundant Phi (byte) irq_sprite_ptr#17 (byte) irq_sprite_ptr#0
|
||||
Redundant Phi (byte*) SIN_SPRITE#10 (byte*) SIN_SPRITE#0
|
||||
Redundant Phi (byte) sin_idx#24 (byte) sin_idx#0
|
||||
Redundant Phi (byte*) SIN#14 (byte*) SIN#0
|
||||
Redundant Phi (byte*) SIN_SPRITE#1 (byte*) SIN_SPRITE#10
|
||||
Redundant Phi (byte) sin_idx#12 (byte) sin_idx#24
|
||||
Redundant Phi (byte*) SIN#10 (byte*) SIN#14
|
||||
Redundant Phi (byte) sin_idx#1 (byte) sin_idx#10
|
||||
Redundant Phi (byte) sin_idx#18 (byte) sin_idx#12
|
||||
Redundant Phi (byte*) SIN#6 (byte*) SIN#10
|
||||
Redundant Phi (byte) sin_idx#13 (byte) sin_idx#10
|
||||
Redundant Phi (byte*) SIN#2 (byte*) SIN#4
|
||||
Redundant Phi (byte*) SIN#1 (byte*) SIN#2
|
||||
Redundant Phi (byte) sin_idx#14 (byte) sin_idx#13
|
||||
Redundant Phi (byte) irq_sprite_ypos#9 (byte) irq_sprite_ypos#14
|
||||
Redundant Phi (byte) irq_raster_next#10 (byte) irq_raster_next#17
|
||||
@ -1545,10 +1460,6 @@ Culled Empty Block (label) loop::@2
|
||||
Culled Empty Block (label) @11
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0
|
||||
Self Phi Eliminated (byte*) SIN#4
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SIN#4 (const byte*) SIN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0
|
||||
Inlining constant with var siblings (const byte) sprites_init::s#0
|
||||
Inlining constant with var siblings (const byte) sprites_init::xpos#0
|
||||
|
@ -7,6 +7,7 @@ Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE
|
||||
Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE
|
||||
Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE
|
||||
Resolved forward reference COLLISION_NONE to (byte) COLLISION_NONE
|
||||
Identified constant variable (byte) render_screen_original::SPACE
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call call vicSelectGfxBank (byte*) PLAYFIELD_CHARSET
|
||||
Inlined call (byte~) render_show::$2 ← call toD018 (byte*) PLAYFIELD_SCREEN_1 (byte*) PLAYFIELD_CHARSET
|
||||
@ -865,7 +866,6 @@ render_screen_original::@1: scope:[render_screen_original] from render_screen_o
|
||||
(byte*) render_screen_original::oscr#4 ← phi( render_screen_original/(byte*) render_screen_original::oscr#0 render_screen_original::@7/(byte*) render_screen_original::oscr#5 )
|
||||
(byte*) render_screen_original::cols#7 ← phi( render_screen_original/(byte*) render_screen_original::cols#0 render_screen_original::@7/(byte*) render_screen_original::cols#8 )
|
||||
(byte*) render_screen_original::screen#8 ← phi( render_screen_original/(byte*) render_screen_original::screen#9 render_screen_original::@7/(byte*) render_screen_original::screen#10 )
|
||||
(byte) render_screen_original::SPACE#3 ← phi( render_screen_original/(byte) render_screen_original::SPACE#0 render_screen_original::@7/(byte) render_screen_original::SPACE#5 )
|
||||
(byte) render_screen_original::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_screen_original::@2
|
||||
render_screen_original::@2: scope:[render_screen_original] from render_screen_original::@1 render_screen_original::@2
|
||||
@ -875,8 +875,7 @@ render_screen_original::@2: scope:[render_screen_original] from render_screen_o
|
||||
(byte) render_screen_original::x#4 ← phi( render_screen_original::@1/(byte) render_screen_original::x#0 render_screen_original::@2/(byte) render_screen_original::x#1 )
|
||||
(byte*) render_screen_original::cols#4 ← phi( render_screen_original::@1/(byte*) render_screen_original::cols#7 render_screen_original::@2/(byte*) render_screen_original::cols#1 )
|
||||
(byte*) render_screen_original::screen#5 ← phi( render_screen_original::@1/(byte*) render_screen_original::screen#8 render_screen_original::@2/(byte*) render_screen_original::screen#2 )
|
||||
(byte) render_screen_original::SPACE#1 ← phi( render_screen_original::@1/(byte) render_screen_original::SPACE#3 render_screen_original::@2/(byte) render_screen_original::SPACE#1 )
|
||||
*((byte*) render_screen_original::screen#5) ← (byte) render_screen_original::SPACE#1
|
||||
*((byte*) render_screen_original::screen#5) ← (byte) render_screen_original::SPACE#0
|
||||
(byte*) render_screen_original::screen#2 ← ++ (byte*) render_screen_original::screen#5
|
||||
*((byte*) render_screen_original::cols#4) ← (byte) BLACK#0
|
||||
(byte*) render_screen_original::cols#1 ← ++ (byte*) render_screen_original::cols#4
|
||||
@ -886,7 +885,6 @@ render_screen_original::@2: scope:[render_screen_original] from render_screen_o
|
||||
to:render_screen_original::@3
|
||||
render_screen_original::@3: scope:[render_screen_original] from render_screen_original::@2 render_screen_original::@3
|
||||
(byte) render_screen_original::y#4 ← phi( render_screen_original::@2/(byte) render_screen_original::y#5 render_screen_original::@3/(byte) render_screen_original::y#4 )
|
||||
(byte) render_screen_original::SPACE#4 ← phi( render_screen_original::@2/(byte) render_screen_original::SPACE#1 render_screen_original::@3/(byte) render_screen_original::SPACE#4 )
|
||||
(byte) render_screen_original::x#5 ← phi( render_screen_original::@2/(byte) render_screen_original::x#1 render_screen_original::@3/(byte) render_screen_original::x#2 )
|
||||
(byte*) render_screen_original::cols#5 ← phi( render_screen_original::@2/(byte*) render_screen_original::cols#1 render_screen_original::@3/(byte*) render_screen_original::cols#2 )
|
||||
(byte*) render_screen_original::ocols#2 ← phi( render_screen_original::@2/(byte*) render_screen_original::ocols#3 render_screen_original::@3/(byte*) render_screen_original::ocols#1 )
|
||||
@ -909,8 +907,7 @@ render_screen_original::@4: scope:[render_screen_original] from render_screen_o
|
||||
(byte) render_screen_original::x#6 ← phi( render_screen_original::@3/(byte) render_screen_original::x#2 render_screen_original::@4/(byte) render_screen_original::x#3 )
|
||||
(byte*) render_screen_original::cols#6 ← phi( render_screen_original::@3/(byte*) render_screen_original::cols#2 render_screen_original::@4/(byte*) render_screen_original::cols#3 )
|
||||
(byte*) render_screen_original::screen#7 ← phi( render_screen_original::@3/(byte*) render_screen_original::screen#3 render_screen_original::@4/(byte*) render_screen_original::screen#4 )
|
||||
(byte) render_screen_original::SPACE#2 ← phi( render_screen_original::@3/(byte) render_screen_original::SPACE#4 render_screen_original::@4/(byte) render_screen_original::SPACE#2 )
|
||||
*((byte*) render_screen_original::screen#7) ← (byte) render_screen_original::SPACE#2
|
||||
*((byte*) render_screen_original::screen#7) ← (byte) render_screen_original::SPACE#0
|
||||
(byte*) render_screen_original::screen#4 ← ++ (byte*) render_screen_original::screen#7
|
||||
*((byte*) render_screen_original::cols#6) ← (byte) BLACK#0
|
||||
(byte*) render_screen_original::cols#3 ← ++ (byte*) render_screen_original::cols#6
|
||||
@ -923,7 +920,6 @@ render_screen_original::@7: scope:[render_screen_original] from render_screen_o
|
||||
(byte*) render_screen_original::oscr#5 ← phi( render_screen_original::@4/(byte*) render_screen_original::oscr#6 )
|
||||
(byte*) render_screen_original::cols#8 ← phi( render_screen_original::@4/(byte*) render_screen_original::cols#3 )
|
||||
(byte*) render_screen_original::screen#10 ← phi( render_screen_original::@4/(byte*) render_screen_original::screen#4 )
|
||||
(byte) render_screen_original::SPACE#5 ← phi( render_screen_original::@4/(byte) render_screen_original::SPACE#2 )
|
||||
(byte) render_screen_original::y#2 ← phi( render_screen_original::@4/(byte) render_screen_original::y#3 )
|
||||
(byte) render_screen_original::y#1 ← (byte) render_screen_original::y#2 + rangenext(0,$18)
|
||||
(bool~) render_screen_original::$7 ← (byte) render_screen_original::y#1 != rangelast(0,$18)
|
||||
@ -6950,11 +6946,6 @@ SYMBOL TABLE SSA
|
||||
(label) render_screen_original::@return
|
||||
(byte) render_screen_original::SPACE
|
||||
(byte) render_screen_original::SPACE#0
|
||||
(byte) render_screen_original::SPACE#1
|
||||
(byte) render_screen_original::SPACE#2
|
||||
(byte) render_screen_original::SPACE#3
|
||||
(byte) render_screen_original::SPACE#4
|
||||
(byte) render_screen_original::SPACE#5
|
||||
(byte*) render_screen_original::cols
|
||||
(byte*) render_screen_original::cols#0
|
||||
(byte*) render_screen_original::cols#1
|
||||
@ -7586,7 +7577,6 @@ Alias (byte) render_bcd::bcd#7 = (byte) render_bcd::bcd#8
|
||||
Alias (byte*) render_screen_original::oscr#0 = (byte*~) render_screen_original::$1
|
||||
Alias (byte*) render_screen_original::ocols#0 = (byte*~) render_screen_original::$3
|
||||
Alias (byte) render_screen_original::y#2 = (byte) render_screen_original::y#3
|
||||
Alias (byte) render_screen_original::SPACE#2 = (byte) render_screen_original::SPACE#5
|
||||
Alias (byte*) render_screen_original::screen#10 = (byte*) render_screen_original::screen#4
|
||||
Alias (byte*) render_screen_original::cols#3 = (byte*) render_screen_original::cols#8
|
||||
Alias (byte*) render_screen_original::oscr#5 = (byte*) render_screen_original::oscr#6
|
||||
@ -8191,13 +8181,10 @@ Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0
|
||||
Alias candidate removed (volatile)(byte) sprites_irq::toSpritePtr2_return#0 = (byte) sprites_irq::toSpritePtr2_$2#0 (byte) sprites_irq::toSpritePtr2_return#2 (byte) sprites_irq::toSpritePtr2_return#1 (byte) sprites_irq::toSpritePtr2_return#3 (byte~) sprites_irq::$5 (byte) irq_sprite_ptr#1
|
||||
Self Phi Eliminated (byte) keyboard_event_scan::row_scan#1
|
||||
Self Phi Eliminated (byte) keyboard_event_scan::row#10
|
||||
Self Phi Eliminated (byte) render_screen_original::SPACE#1
|
||||
Self Phi Eliminated (byte*) render_screen_original::oscr#3
|
||||
Self Phi Eliminated (byte*) render_screen_original::ocols#3
|
||||
Self Phi Eliminated (byte) render_screen_original::y#5
|
||||
Self Phi Eliminated (byte) render_screen_original::SPACE#4
|
||||
Self Phi Eliminated (byte) render_screen_original::y#4
|
||||
Self Phi Eliminated (byte) render_screen_original::SPACE#2
|
||||
Self Phi Eliminated (byte) render_screen_original::y#2
|
||||
Self Phi Eliminated (byte*) render_screen_original::oscr#5
|
||||
Self Phi Eliminated (byte*) render_screen_original::ocols#5
|
||||
@ -8299,13 +8286,10 @@ Redundant Phi (byte) render_screen_render#12 (byte) render_screen_render#20
|
||||
Redundant Phi (dword) score_bcd#10 (dword) score_bcd#42
|
||||
Redundant Phi (word) lines_bcd#10 (word) lines_bcd#42
|
||||
Redundant Phi (byte) level_bcd#13 (byte) level_bcd#100
|
||||
Redundant Phi (byte) render_screen_original::SPACE#1 (byte) render_screen_original::SPACE#3
|
||||
Redundant Phi (byte*) render_screen_original::oscr#3 (byte*) render_screen_original::oscr#4
|
||||
Redundant Phi (byte*) render_screen_original::ocols#3 (byte*) render_screen_original::ocols#4
|
||||
Redundant Phi (byte) render_screen_original::y#5 (byte) render_screen_original::y#6
|
||||
Redundant Phi (byte) render_screen_original::SPACE#4 (byte) render_screen_original::SPACE#1
|
||||
Redundant Phi (byte) render_screen_original::y#4 (byte) render_screen_original::y#5
|
||||
Redundant Phi (byte) render_screen_original::SPACE#2 (byte) render_screen_original::SPACE#4
|
||||
Redundant Phi (byte) render_screen_original::y#2 (byte) render_screen_original::y#4
|
||||
Redundant Phi (byte*) render_screen_original::oscr#5 (byte*) render_screen_original::oscr#1
|
||||
Redundant Phi (byte*) render_screen_original::ocols#5 (byte*) render_screen_original::ocols#1
|
||||
@ -9232,7 +9216,6 @@ Alias (byte) render_screen_showing#1 = (byte) render_screen_showing#2
|
||||
Alias (byte) main::render#1 = (byte) main::render#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias candidate removed (volatile)(byte) sprites_irq::raster_sprite_gfx_modify#0 = (byte/signed word/word/dword/signed dword~) sprites_irq::$0
|
||||
Self Phi Eliminated (byte) render_screen_original::SPACE#3
|
||||
Self Phi Eliminated (byte) render_screen_render#13
|
||||
Self Phi Eliminated (byte) render_screen_render#14
|
||||
Self Phi Eliminated (byte) current_xpos#16
|
||||
@ -9247,7 +9230,6 @@ Self Phi Eliminated (byte) current_piece_char#43
|
||||
Self Phi Eliminated (byte) render_screen_show#16
|
||||
Self Phi Eliminated (byte) render_screen_render#18
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) render_screen_original::SPACE#3 (const byte) render_screen_original::SPACE#0
|
||||
Redundant Phi (byte) render_screen_render#13 (byte) render_screen_render#22
|
||||
Redundant Phi (byte) render_screen_render#14 (byte) render_screen_render#33
|
||||
Redundant Phi (byte) current_xpos#16 (byte) current_xpos#59
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
Identified constant variable (byte) main::l
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -10,9 +12,8 @@ main: scope:[main] from @1
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@1/(byte*) main::screen#1 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
*((byte*) main::screen#1 + (byte) main::i#2) ← *((byte[]) main::msg#0 + (byte) main::i#2)
|
||||
*((byte*) main::screen#0 + (byte) main::i#2) ← *((byte[]) main::msg#0 + (byte) main::i#2)
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,2)
|
||||
(bool~) main::$1 ← (byte) main::i#1 != rangelast(0,2)
|
||||
if((bool~) main::$1) goto main::@1
|
||||
@ -48,16 +49,11 @@ SYMBOL TABLE SSA
|
||||
(byte[]) main::msg#0
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
(byte*) main::screen#1
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte[]) main::msg#0 = (string~) main::$0
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::screen#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [9] if((byte) main::i#1!=rangelast(0,2)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::screen#0 = ((byte*))$400
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (byte) main::BLACK
|
||||
Identified constant variable (byte*) main::screen
|
||||
Identified constant variable (byte*) main::cols
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -9,14 +12,11 @@ main: scope:[main] from @1
|
||||
(byte) main::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) main::cols#1 ← phi( main/(byte*) main::cols#0 main::@1/(byte*) main::cols#1 )
|
||||
(byte) main::BLACK#1 ← phi( main/(byte) main::BLACK#0 main::@1/(byte) main::BLACK#1 )
|
||||
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 main::@1/(byte*) main::screen#1 )
|
||||
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@1/(byte) main::x#1 )
|
||||
(byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte) main::y#0 ← (byte/signed word/word/dword/signed dword~) main::$0
|
||||
*((byte*) main::screen#1 + (byte) main::y#0) ← (byte) 'a'
|
||||
*((byte*) main::cols#1 + (byte) main::y#0) ← (byte) main::BLACK#1
|
||||
*((byte*) main::screen#0 + (byte) main::y#0) ← (byte) 'a'
|
||||
*((byte*) main::cols#0 + (byte) main::y#0) ← (byte) main::BLACK#0
|
||||
(byte) main::x#1 ← (byte) main::x#2 + rangenext(0,$a)
|
||||
(bool~) main::$1 ← (byte) main::x#1 != rangelast(0,$a)
|
||||
if((bool~) main::$1) goto main::@1
|
||||
@ -43,13 +43,10 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte) main::BLACK
|
||||
(byte) main::BLACK#0
|
||||
(byte) main::BLACK#1
|
||||
(byte*) main::cols
|
||||
(byte*) main::cols#0
|
||||
(byte*) main::cols#1
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
(byte*) main::screen#1
|
||||
(byte) main::x
|
||||
(byte) main::x#0
|
||||
(byte) main::x#1
|
||||
@ -61,14 +58,6 @@ Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::y#0 = (byte/signed word/word/dword/signed dword~) main::$0
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::screen#1
|
||||
Self Phi Eliminated (byte) main::BLACK#1
|
||||
Self Phi Eliminated (byte*) main::cols#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::screen#1 (byte*) main::screen#0
|
||||
Redundant Phi (byte) main::BLACK#1 (byte) main::BLACK#0
|
||||
Redundant Phi (byte*) main::cols#1 (byte*) main::cols#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [11] if((byte) main::x#1!=rangelast(0,$a)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte) main::BLACK#0 = 0
|
||||
|
32
src/test/ref/const-early-identification.asm
Normal file
32
src/test/ref/const-early-identification.asm
Normal file
@ -0,0 +1,32 @@
|
||||
// Tests that constants are identified early
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
.label SCREEN = $400
|
||||
.label A = 2
|
||||
bbegin:
|
||||
// Not an early constant (address-of is used)
|
||||
lda #'a'
|
||||
sta A
|
||||
jsr main
|
||||
main: {
|
||||
.const B = 'b'
|
||||
.label addrA = A
|
||||
lda A
|
||||
sta SCREEN
|
||||
lda #B
|
||||
sta SCREEN+1
|
||||
lda addrA
|
||||
sta SCREEN+2
|
||||
jsr sub
|
||||
rts
|
||||
}
|
||||
sub: {
|
||||
.const C = 'c'
|
||||
lda #C
|
||||
sta SCREEN+3
|
||||
ldx A
|
||||
inx
|
||||
stx SCREEN+4
|
||||
rts
|
||||
}
|
26
src/test/ref/const-early-identification.cfg
Normal file
26
src/test/ref/const-early-identification.cfg
Normal file
@ -0,0 +1,26 @@
|
||||
@begin: scope:[] from
|
||||
[0] (byte) A#0 ← (byte) 'a'
|
||||
to:@2
|
||||
@2: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
[3] phi()
|
||||
main: scope:[main] from @2
|
||||
[4] *((const byte*) SCREEN#0) ← (byte) A#0
|
||||
[5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::B#0
|
||||
[6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte*) main::addrA#0)
|
||||
[7] call sub
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[8] return
|
||||
to:@return
|
||||
sub: scope:[sub] from main
|
||||
[9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) sub::C#0
|
||||
[10] (byte) sub::D#0 ← (byte) A#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[11] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sub::D#0
|
||||
to:sub::@return
|
||||
sub::@return: scope:[sub] from sub
|
||||
[12] return
|
||||
to:@return
|
410
src/test/ref/const-early-identification.log
Normal file
410
src/test/ref/const-early-identification.log
Normal file
@ -0,0 +1,410 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte) main::B
|
||||
Identified constant variable (byte) sub::C
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
(byte) A#0 ← (byte) 'a'
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte) A#1 ← phi( @2/(byte) A#3 )
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) A#1
|
||||
(byte) main::B#0 ← (byte) 'b'
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::B#0
|
||||
(byte*~) main::$0 ← & (byte) A#1
|
||||
(byte*) main::addrA#0 ← (byte*~) main::$0
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← *((byte*) main::addrA#0)
|
||||
call sub
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
sub: scope:[sub] from main
|
||||
(byte) A#2 ← phi( main/(byte) A#1 )
|
||||
(byte) sub::C#0 ← (byte) 'c'
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) sub::C#0
|
||||
(byte/signed word/word/dword/signed dword~) sub::$0 ← (byte) A#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) sub::D#0 ← (byte/signed word/word/dword/signed dword~) sub::$0
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sub::D#0
|
||||
to:sub::@return
|
||||
sub::@return: scope:[sub] from sub
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte) A#3 ← phi( @begin/(byte) A#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
to:@end
|
||||
@end: scope:[] from @3
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
(label) @2
|
||||
(label) @3
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) A
|
||||
(byte) A#0
|
||||
(byte) A#1
|
||||
(byte) A#2
|
||||
(byte) A#3
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(void()) main()
|
||||
(byte*~) main::$0
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(byte) main::B
|
||||
(byte) main::B#0
|
||||
(byte*) main::addrA
|
||||
(byte*) main::addrA#0
|
||||
(void()) sub()
|
||||
(byte/signed word/word/dword/signed dword~) sub::$0
|
||||
(label) sub::@return
|
||||
(byte) sub::C
|
||||
(byte) sub::C#0
|
||||
(byte) sub::D
|
||||
(byte) sub::D#0
|
||||
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::addrA#0 = (byte*~) main::$0
|
||||
Alias (byte) sub::D#0 = (byte/signed word/word/dword/signed dword~) sub::$0
|
||||
Alias (byte) A#0 = (byte) A#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte) A#1 (byte) A#0
|
||||
Redundant Phi (byte) A#2 (byte) A#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::B#0 = 'b'
|
||||
Constant (const byte*) main::addrA#0 = &A#0
|
||||
Constant (const byte) sub::C#0 = 'c'
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in *(SCREEN#0+0)
|
||||
Consolidated array index constant in *(SCREEN#0+1)
|
||||
Consolidated array index constant in *(SCREEN#0+2)
|
||||
Consolidated array index constant in *(SCREEN#0+3)
|
||||
Consolidated array index constant in *(SCREEN#0+4)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Simplifying constant plus zero SCREEN#0+0
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
CALL GRAPH
|
||||
Calls in [] to main:2
|
||||
Calls in [main] to sub:7
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Adding NOP phi() at start of @2
|
||||
Adding NOP phi() at start of @end
|
||||
|
||||
FINAL CONTROL FLOW GRAPH
|
||||
@begin: scope:[] from
|
||||
[0] (byte) A#0 ← (byte) 'a'
|
||||
to:@2
|
||||
@2: scope:[] from @begin
|
||||
[1] phi()
|
||||
[2] call main
|
||||
to:@end
|
||||
@end: scope:[] from @2
|
||||
[3] phi()
|
||||
main: scope:[main] from @2
|
||||
[4] *((const byte*) SCREEN#0) ← (byte) A#0
|
||||
[5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::B#0
|
||||
[6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte*) main::addrA#0)
|
||||
[7] call sub
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main
|
||||
[8] return
|
||||
to:@return
|
||||
sub: scope:[sub] from main
|
||||
[9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) sub::C#0
|
||||
[10] (byte) sub::D#0 ← (byte) A#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[11] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sub::D#0
|
||||
to:sub::@return
|
||||
sub::@return: scope:[sub] from sub
|
||||
[12] return
|
||||
to:@return
|
||||
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte) A
|
||||
(byte) A#0 1.0
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
(byte) main::B
|
||||
(byte*) main::addrA
|
||||
(void()) sub()
|
||||
(byte) sub::C
|
||||
(byte) sub::D
|
||||
(byte) sub::D#0 4.0
|
||||
|
||||
Initial phi equivalence classes
|
||||
Added variable A#0 to zero page equivalence class [ A#0 ]
|
||||
Added variable sub::D#0 to zero page equivalence class [ sub::D#0 ]
|
||||
Complete equivalence classes
|
||||
[ A#0 ]
|
||||
[ sub::D#0 ]
|
||||
Allocated zp ZP_BYTE:2 [ A#0 ]
|
||||
Allocated zp ZP_BYTE:3 [ sub::D#0 ]
|
||||
|
||||
INITIAL ASM
|
||||
//SEG0 File Comments
|
||||
// Tests that constants are identified early
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.label A = 2
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [0] (byte) A#0 ← (byte) 'a' -- vbuz1=vbuc1
|
||||
// Not an early constant (address-of is used)
|
||||
lda #'a'
|
||||
sta A
|
||||
//SEG5 [1] phi from @begin to @2 [phi:@begin->@2]
|
||||
b2_from_bbegin:
|
||||
jmp b2
|
||||
//SEG6 @2
|
||||
b2:
|
||||
//SEG7 [2] call main
|
||||
jsr main
|
||||
//SEG8 [3] phi from @2 to @end [phi:@2->@end]
|
||||
bend_from_b2:
|
||||
jmp bend
|
||||
//SEG9 @end
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.const B = 'b'
|
||||
.label addrA = A
|
||||
//SEG11 [4] *((const byte*) SCREEN#0) ← (byte) A#0 -- _deref_pbuc1=vbuz1
|
||||
lda A
|
||||
sta SCREEN
|
||||
//SEG12 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::B#0 -- _deref_pbuc1=vbuc2
|
||||
lda #B
|
||||
sta SCREEN+1
|
||||
//SEG13 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte*) main::addrA#0) -- _deref_pbuc1=_deref_pbuc2
|
||||
lda addrA
|
||||
sta SCREEN+2
|
||||
//SEG14 [7] call sub
|
||||
jsr sub
|
||||
jmp breturn
|
||||
//SEG15 main::@return
|
||||
breturn:
|
||||
//SEG16 [8] return
|
||||
rts
|
||||
}
|
||||
//SEG17 sub
|
||||
sub: {
|
||||
.const C = 'c'
|
||||
.label D = 3
|
||||
//SEG18 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) sub::C#0 -- _deref_pbuc1=vbuc2
|
||||
lda #C
|
||||
sta SCREEN+3
|
||||
//SEG19 [10] (byte) sub::D#0 ← (byte) A#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_plus_1
|
||||
ldy A
|
||||
iny
|
||||
sty D
|
||||
//SEG20 [11] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sub::D#0 -- _deref_pbuc1=vbuz1
|
||||
lda D
|
||||
sta SCREEN+4
|
||||
jmp breturn
|
||||
//SEG21 sub::@return
|
||||
breturn:
|
||||
//SEG22 [12] return
|
||||
rts
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] (byte) A#0 ← (byte) 'a' [ A#0 ] ( ) always clobbers reg byte a
|
||||
Statement [4] *((const byte*) SCREEN#0) ← (byte) A#0 [ A#0 ] ( main:2 [ A#0 ] ) always clobbers reg byte a
|
||||
Statement [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::B#0 [ A#0 ] ( main:2 [ A#0 ] ) always clobbers reg byte a
|
||||
Statement [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte*) main::addrA#0) [ A#0 ] ( main:2 [ A#0 ] ) always clobbers reg byte a
|
||||
Statement [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) sub::C#0 [ A#0 ] ( main:2::sub:7 [ A#0 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ A#0 ] : zp ZP_BYTE:2 ,
|
||||
Potential registers zp ZP_BYTE:3 [ sub::D#0 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [sub] 4: zp ZP_BYTE:3 [ sub::D#0 ]
|
||||
Uplift Scope [] 1: zp ZP_BYTE:2 [ A#0 ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [sub] best 77 combination reg byte x [ sub::D#0 ]
|
||||
Uplifting [] best 77 combination zp ZP_BYTE:2 [ A#0 ]
|
||||
Uplifting [main] best 77 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ A#0 ]
|
||||
Uplifting [] best 77 combination zp ZP_BYTE:2 [ A#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
//SEG0 File Comments
|
||||
// Tests that constants are identified early
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.label A = 2
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [0] (byte) A#0 ← (byte) 'a' -- vbuz1=vbuc1
|
||||
// Not an early constant (address-of is used)
|
||||
lda #'a'
|
||||
sta A
|
||||
//SEG5 [1] phi from @begin to @2 [phi:@begin->@2]
|
||||
b2_from_bbegin:
|
||||
jmp b2
|
||||
//SEG6 @2
|
||||
b2:
|
||||
//SEG7 [2] call main
|
||||
jsr main
|
||||
//SEG8 [3] phi from @2 to @end [phi:@2->@end]
|
||||
bend_from_b2:
|
||||
jmp bend
|
||||
//SEG9 @end
|
||||
bend:
|
||||
//SEG10 main
|
||||
main: {
|
||||
.const B = 'b'
|
||||
.label addrA = A
|
||||
//SEG11 [4] *((const byte*) SCREEN#0) ← (byte) A#0 -- _deref_pbuc1=vbuz1
|
||||
lda A
|
||||
sta SCREEN
|
||||
//SEG12 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::B#0 -- _deref_pbuc1=vbuc2
|
||||
lda #B
|
||||
sta SCREEN+1
|
||||
//SEG13 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte*) main::addrA#0) -- _deref_pbuc1=_deref_pbuc2
|
||||
lda addrA
|
||||
sta SCREEN+2
|
||||
//SEG14 [7] call sub
|
||||
jsr sub
|
||||
jmp breturn
|
||||
//SEG15 main::@return
|
||||
breturn:
|
||||
//SEG16 [8] return
|
||||
rts
|
||||
}
|
||||
//SEG17 sub
|
||||
sub: {
|
||||
.const C = 'c'
|
||||
//SEG18 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) sub::C#0 -- _deref_pbuc1=vbuc2
|
||||
lda #C
|
||||
sta SCREEN+3
|
||||
//SEG19 [10] (byte) sub::D#0 ← (byte) A#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1
|
||||
ldx A
|
||||
inx
|
||||
//SEG20 [11] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sub::D#0 -- _deref_pbuc1=vbuxx
|
||||
stx SCREEN+4
|
||||
jmp breturn
|
||||
//SEG21 sub::@return
|
||||
breturn:
|
||||
//SEG22 [12] return
|
||||
rts
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
Removing instruction jmp b2
|
||||
Removing instruction jmp bend
|
||||
Removing instruction jmp breturn
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction b2_from_bbegin:
|
||||
Removing instruction bend_from_b2:
|
||||
Succesful ASM optimization Pass5RedundantLabelElimination
|
||||
Removing instruction b2:
|
||||
Removing instruction bend:
|
||||
Removing instruction breturn:
|
||||
Removing instruction breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) A
|
||||
(byte) A#0 A zp ZP_BYTE:2 1.0
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte) main::B
|
||||
(const byte) main::B#0 B = (byte) 'b'
|
||||
(byte*) main::addrA
|
||||
(const byte*) main::addrA#0 addrA = &(byte) A#0
|
||||
(void()) sub()
|
||||
(label) sub::@return
|
||||
(byte) sub::C
|
||||
(const byte) sub::C#0 C = (byte) 'c'
|
||||
(byte) sub::D
|
||||
(byte) sub::D#0 reg byte x 4.0
|
||||
|
||||
zp ZP_BYTE:2 [ A#0 ]
|
||||
reg byte x [ sub::D#0 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
Score: 65
|
||||
|
||||
//SEG0 File Comments
|
||||
// Tests that constants are identified early
|
||||
//SEG1 Basic Upstart
|
||||
.pc = $801 "Basic"
|
||||
:BasicUpstart(bbegin)
|
||||
.pc = $80d "Program"
|
||||
//SEG2 Global Constants & labels
|
||||
.label SCREEN = $400
|
||||
.label A = 2
|
||||
//SEG3 @begin
|
||||
bbegin:
|
||||
//SEG4 [0] (byte) A#0 ← (byte) 'a' -- vbuz1=vbuc1
|
||||
// Not an early constant (address-of is used)
|
||||
lda #'a'
|
||||
sta A
|
||||
//SEG5 [1] phi from @begin to @2 [phi:@begin->@2]
|
||||
//SEG6 @2
|
||||
//SEG7 [2] call main
|
||||
jsr main
|
||||
//SEG8 [3] phi from @2 to @end [phi:@2->@end]
|
||||
//SEG9 @end
|
||||
//SEG10 main
|
||||
main: {
|
||||
.const B = 'b'
|
||||
.label addrA = A
|
||||
//SEG11 [4] *((const byte*) SCREEN#0) ← (byte) A#0 -- _deref_pbuc1=vbuz1
|
||||
lda A
|
||||
sta SCREEN
|
||||
//SEG12 [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (const byte) main::B#0 -- _deref_pbuc1=vbuc2
|
||||
lda #B
|
||||
sta SCREEN+1
|
||||
//SEG13 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte*) main::addrA#0) -- _deref_pbuc1=_deref_pbuc2
|
||||
lda addrA
|
||||
sta SCREEN+2
|
||||
//SEG14 [7] call sub
|
||||
jsr sub
|
||||
//SEG15 main::@return
|
||||
//SEG16 [8] return
|
||||
rts
|
||||
}
|
||||
//SEG17 sub
|
||||
sub: {
|
||||
.const C = 'c'
|
||||
//SEG18 [9] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (const byte) sub::C#0 -- _deref_pbuc1=vbuc2
|
||||
lda #C
|
||||
sta SCREEN+3
|
||||
//SEG19 [10] (byte) sub::D#0 ← (byte) A#0 + (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuxx=vbuz1_plus_1
|
||||
ldx A
|
||||
inx
|
||||
//SEG20 [11] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte) sub::D#0 -- _deref_pbuc1=vbuxx
|
||||
stx SCREEN+4
|
||||
//SEG21 sub::@return
|
||||
//SEG22 [12] return
|
||||
rts
|
||||
}
|
||||
|
22
src/test/ref/const-early-identification.sym
Normal file
22
src/test/ref/const-early-identification.sym
Normal file
@ -0,0 +1,22 @@
|
||||
(label) @2
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(byte) A
|
||||
(byte) A#0 A zp ZP_BYTE:2 1.0
|
||||
(byte*) SCREEN
|
||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte) main::B
|
||||
(const byte) main::B#0 B = (byte) 'b'
|
||||
(byte*) main::addrA
|
||||
(const byte*) main::addrA#0 addrA = &(byte) A#0
|
||||
(void()) sub()
|
||||
(label) sub::@return
|
||||
(byte) sub::C
|
||||
(const byte) sub::C#0 C = (byte) 'c'
|
||||
(byte) sub::D
|
||||
(byte) sub::D#0 reg byte x 4.0
|
||||
|
||||
zp ZP_BYTE:2 [ A#0 ]
|
||||
reg byte x [ sub::D#0 ]
|
@ -1,21 +1,18 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte) cc
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @3
|
||||
(byte) cc#4 ← phi( @3/(byte) cc#5 )
|
||||
(byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#6 )
|
||||
(bool~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 1 == (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
if((bool~) main::$0) goto main::@1
|
||||
to:main::@3
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#4 )
|
||||
*((byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 'a'
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 'a'
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main
|
||||
(byte*) SCREEN#5 ← phi( main/(byte*) SCREEN#4 )
|
||||
(byte) cc#3 ← phi( main/(byte) cc#4 )
|
||||
call doit
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@3
|
||||
@ -24,13 +21,10 @@ main::@return: scope:[main] from main::@1 main::@5
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#7 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
(byte) cc#0 ← (byte) 'b'
|
||||
to:@3
|
||||
doit: scope:[doit] from main::@3
|
||||
(byte*) SCREEN#2 ← phi( main::@3/(byte*) SCREEN#5 )
|
||||
(byte) cc#1 ← phi( main::@3/(byte) cc#3 )
|
||||
*((byte*) SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cc#1
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cc#0
|
||||
call doit2
|
||||
to:doit::@1
|
||||
doit::@1: scope:[doit] from doit
|
||||
@ -39,16 +33,12 @@ doit::@return: scope:[doit] from doit::@1
|
||||
return
|
||||
to:@return
|
||||
doit2: scope:[doit2] from doit
|
||||
(byte*) SCREEN#3 ← phi( doit/(byte*) SCREEN#2 )
|
||||
(byte) cc#2 ← phi( doit/(byte) cc#1 )
|
||||
*((byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) cc#2
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) cc#0
|
||||
to:doit2::@return
|
||||
doit2::@return: scope:[doit2] from doit2
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @1
|
||||
(byte) cc#5 ← phi( @1/(byte) cc#0 )
|
||||
(byte*) SCREEN#6 ← phi( @1/(byte*) SCREEN#7 )
|
||||
call main
|
||||
to:@4
|
||||
@4: scope:[] from @3
|
||||
@ -63,20 +53,8 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte) cc
|
||||
(byte) cc#0
|
||||
(byte) cc#1
|
||||
(byte) cc#2
|
||||
(byte) cc#3
|
||||
(byte) cc#4
|
||||
(byte) cc#5
|
||||
(void()) doit()
|
||||
(label) doit::@1
|
||||
(label) doit::@return
|
||||
@ -93,19 +71,7 @@ Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) doit::@1
|
||||
Culled Empty Block (label) @4
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#4 (byte*) SCREEN#5
|
||||
Alias (byte) cc#3 = (byte) cc#4
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#7 (byte*) SCREEN#6
|
||||
Alias (byte) cc#0 = (byte) cc#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte) cc#3 (byte) cc#0
|
||||
Redundant Phi (byte) cc#1 (byte) cc#3
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#1
|
||||
Redundant Phi (byte) cc#2 (byte) cc#1
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$0 [3] if((byte/signed byte/word/signed word/dword/signed dword) 1==(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1
|
||||
Simple Condition (bool~) main::$0 [2] if((byte/signed byte/word/signed word/dword/signed dword) 1==(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) cc#0 = 'b'
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -11,30 +12,27 @@ main: scope:[main] from @2
|
||||
(byte) sum::return#0 ← (byte) sum::return#4
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 )
|
||||
(byte) sum::return#5 ← phi( main/(byte) sum::return#0 )
|
||||
(byte~) main::$0 ← (byte) sum::return#5
|
||||
*((byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
(byte) sum::a#1 ← (byte) main::reverse#0
|
||||
(byte) sum::b#1 ← (byte) 'm'
|
||||
call sum
|
||||
(byte) sum::return#1 ← (byte) sum::return#4
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 )
|
||||
(byte) sum::return#6 ← phi( main::@1/(byte) sum::return#1 )
|
||||
(byte~) main::$1 ← (byte) sum::return#6
|
||||
*((byte*) main::screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
(byte) sum::a#2 ← (byte) main::reverse#0
|
||||
(byte) sum::b#2 ← (byte) 'l'
|
||||
call sum
|
||||
(byte) sum::return#2 ← (byte) sum::return#4
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte*) main::screen#3 ← phi( main::@2/(byte*) main::screen#2 )
|
||||
(byte) sum::return#7 ← phi( main::@2/(byte) sum::return#2 )
|
||||
(byte~) main::$2 ← (byte) sum::return#7
|
||||
*((byte*) main::screen#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
return
|
||||
@ -74,9 +72,6 @@ SYMBOL TABLE SSA
|
||||
(byte) main::reverse#0
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
(byte*) main::screen#1
|
||||
(byte*) main::screen#2
|
||||
(byte*) main::screen#3
|
||||
(byte()) sum((byte) sum::a , (byte) sum::b)
|
||||
(byte~) sum::$0
|
||||
(label) sum::@return
|
||||
@ -104,7 +99,6 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) sum::return#0 = (byte) sum::return#5
|
||||
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2 (byte*) main::screen#3
|
||||
Alias (byte) sum::return#1 = (byte) sum::return#6
|
||||
Alias (byte) sum::return#2 = (byte) sum::return#7
|
||||
Alias (byte) sum::return#3 = (byte~) sum::$0 (byte) sum::return#8 (byte) sum::return#4
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
Identified constant variable (byte*) main::NULL
|
||||
Identified constant variable (byte*) main::rem
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -10,12 +13,10 @@ main: scope:[main] from @1
|
||||
if((bool~) main::$0) goto main::@1
|
||||
to:main::@3
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 )
|
||||
*((byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) '*'
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) '*'
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main
|
||||
(byte*) main::screen#2 ← phi( main/(byte*) main::screen#0 )
|
||||
*((byte*) main::screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) '.'
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) '.'
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1 main::@3
|
||||
return
|
||||
@ -43,13 +44,9 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::rem#0
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
(byte*) main::screen#1
|
||||
(byte*) main::screen#2
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Simple Condition (bool~) main::$0 [4] if((byte*) main::rem#0!=(byte*) main::NULL#0) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::screen#0 = ((byte*))$400
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (signed word*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte) main::e
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -19,9 +21,8 @@ main: scope:[main] from @1
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
*((byte*) main::SCREEN#1 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
|
||||
*((byte*) main::SCREEN#0 + (byte) main::i#2) ← *((byte[]) main::s5#0 + (byte) main::i#2)
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,7)
|
||||
(bool~) main::$6 ← (byte) main::i#1 != rangelast(0,7)
|
||||
if((bool~) main::$6) goto main::@1
|
||||
@ -57,7 +58,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte*) main::SCREEN#1
|
||||
(byte) main::e
|
||||
(byte) main::e#0
|
||||
(byte) main::i
|
||||
@ -83,10 +83,6 @@ Alias (byte[]) main::s3#0 = (string~) main::$2
|
||||
Alias (byte[]) main::s4#0 = (string~) main::$4
|
||||
Alias (byte[]) main::s5#0 = (byte[]~) main::$5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::SCREEN#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$6 [18] if((byte) main::i#1!=rangelast(0,7)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte[]) main::s#0 = "e"+"l"
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) VIC
|
||||
Identified constant variable (byte) RED
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -12,9 +14,8 @@ CONTROL FLOW GRAPH SSA
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) BGCOL#1 ← phi( @1/(byte*) BGCOL#2 )
|
||||
(byte) RED#1 ← phi( @1/(byte) RED#2 )
|
||||
*((byte*) SCREEN#0) ← (byte) STAR#0
|
||||
*((byte*) BGCOL#1) ← (byte) RED#1
|
||||
*((byte*) BGCOL#1) ← (byte) RED#0
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
@ -30,7 +31,6 @@ main::@return: scope:[main] from main::@1
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) BGCOL#2 ← phi( @begin/(byte*) BGCOL#0 )
|
||||
(byte) RED#2 ← phi( @begin/(byte) RED#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -51,8 +51,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) BGCOL#2
|
||||
(byte) RED
|
||||
(byte) RED#0
|
||||
(byte) RED#1
|
||||
(byte) RED#2
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte) STAR
|
||||
@ -72,9 +70,7 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) BGCOL#0 = (byte*~) $2 (byte*) BGCOL#2
|
||||
Alias (byte) RED#0 = (byte) RED#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte) RED#1 (byte) RED#0
|
||||
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [17] if((byte) main::i#1!=rangelast($28,$4f)) goto main::@1
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte) test_bytes::bb
|
||||
Identified constant variable (signed byte) test_sbytes::bb
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -133,12 +135,11 @@ test_bytes: scope:[test_bytes] from main::@1
|
||||
call assert_byte
|
||||
to:test_bytes::@1
|
||||
test_bytes::@1: scope:[test_bytes] from test_bytes
|
||||
(byte) test_bytes::bb#1 ← phi( test_bytes/(byte) test_bytes::bb#0 )
|
||||
(byte*) print_line_cursor#32 ← phi( test_bytes/(byte*) print_line_cursor#14 )
|
||||
(byte*) print_char_cursor#43 ← phi( test_bytes/(byte*) print_char_cursor#20 )
|
||||
(byte*) print_char_cursor#11 ← (byte*) print_char_cursor#43
|
||||
(byte*) print_line_cursor#9 ← (byte*) print_line_cursor#32
|
||||
(byte/signed word/word/dword/signed dword~) test_bytes::$1 ← (byte) test_bytes::bb#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte/signed word/word/dword/signed dword~) test_bytes::$1 ← (byte) test_bytes::bb#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) test_bytes::bc#0 ← (byte/signed word/word/dword/signed dword~) test_bytes::$1
|
||||
(byte*) assert_byte::msg#1 ← (const string) test_bytes::msg1
|
||||
(byte) assert_byte::b#1 ← (byte) test_bytes::bc#0
|
||||
@ -251,12 +252,11 @@ test_sbytes: scope:[test_sbytes] from main::@2
|
||||
call assert_sbyte
|
||||
to:test_sbytes::@1
|
||||
test_sbytes::@1: scope:[test_sbytes] from test_sbytes
|
||||
(signed byte) test_sbytes::bb#1 ← phi( test_sbytes/(signed byte) test_sbytes::bb#0 )
|
||||
(byte*) print_line_cursor#38 ← phi( test_sbytes/(byte*) print_line_cursor#22 )
|
||||
(byte*) print_char_cursor#53 ← phi( test_sbytes/(byte*) print_char_cursor#32 )
|
||||
(byte*) print_char_cursor#21 ← (byte*) print_char_cursor#53
|
||||
(byte*) print_line_cursor#15 ← (byte*) print_line_cursor#38
|
||||
(signed word/signed byte/signed dword~) test_sbytes::$1 ← (signed byte) test_sbytes::bb#1 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(signed word/signed byte/signed dword~) test_sbytes::$1 ← (signed byte) test_sbytes::bb#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(signed byte) test_sbytes::bc#0 ← (signed word/signed byte/signed dword~) test_sbytes::$1
|
||||
(byte*) assert_sbyte::msg#1 ← (const string) test_sbytes::msg1
|
||||
(signed byte) assert_sbyte::b#1 ← (signed byte) test_sbytes::bc#0
|
||||
@ -701,7 +701,6 @@ SYMBOL TABLE SSA
|
||||
(label) test_bytes::@return
|
||||
(byte) test_bytes::bb
|
||||
(byte) test_bytes::bb#0
|
||||
(byte) test_bytes::bb#1
|
||||
(byte) test_bytes::bc
|
||||
(byte) test_bytes::bc#0
|
||||
(byte) test_bytes::bc#1
|
||||
@ -726,7 +725,6 @@ SYMBOL TABLE SSA
|
||||
(label) test_sbytes::@return
|
||||
(signed byte) test_sbytes::bb
|
||||
(signed byte) test_sbytes::bb#0
|
||||
(signed byte) test_sbytes::bb#1
|
||||
(signed byte) test_sbytes::bc
|
||||
(signed byte) test_sbytes::bc#0
|
||||
(signed byte) test_sbytes::bc#1
|
||||
@ -754,7 +752,6 @@ Alias (byte*) print_char_cursor#40 = (byte*) print_char_cursor#8
|
||||
Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#6
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#9 (byte*) print_char_cursor#41 (byte*) print_char_cursor#42
|
||||
Alias (byte*) print_line_cursor#30 = (byte*) print_line_cursor#7 (byte*) print_line_cursor#31 (byte*) print_line_cursor#8
|
||||
Alias (byte) test_bytes::bb#0 = (byte) test_bytes::bb#1
|
||||
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#43
|
||||
Alias (byte*) print_line_cursor#32 = (byte*) print_line_cursor#9
|
||||
Alias (byte) test_bytes::bc#0 = (byte/signed word/word/dword/signed dword~) test_bytes::$1 (byte) test_bytes::bc#1
|
||||
@ -772,7 +769,6 @@ Alias (byte*) print_char_cursor#17 = (byte*) print_char_cursor#49
|
||||
Alias (byte*) print_char_cursor#18 = (byte*) print_char_cursor#50
|
||||
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#36 (byte*) print_line_cursor#37 (byte*) print_line_cursor#14
|
||||
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#51 (byte*) print_char_cursor#52 (byte*) print_char_cursor#20
|
||||
Alias (signed byte) test_sbytes::bb#0 = (signed byte) test_sbytes::bb#1
|
||||
Alias (byte*) print_char_cursor#21 = (byte*) print_char_cursor#53
|
||||
Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#38
|
||||
Alias (signed byte) test_sbytes::bc#0 = (signed word/signed byte/signed dword~) test_sbytes::$1 (signed byte) test_sbytes::bc#1
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) COLS
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -8,40 +10,36 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) COLS#0 ← ((byte*)) (word/dword/signed dword) $d800
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) COLS#2 ← phi( @1/(byte*) COLS#3 )
|
||||
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
|
||||
(byte) main::x#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) COLS#1 ← phi( main/(byte*) COLS#2 main::@1/(byte*) COLS#1 )
|
||||
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
|
||||
(byte) main::x#2 ← phi( main/(byte) main::x#0 main::@1/(byte) main::x#1 )
|
||||
*((byte*) SCREEN#1 + (byte) main::x#2) ← *((byte[$3e8]) MAPDATA#0 + (byte) main::x#2)
|
||||
*((byte*) COLS#1 + (byte) main::x#2) ← *((byte[$100]) COLORMAP1#0 + *((byte[$3e8]) MAPDATA#0 + (byte) main::x#2))
|
||||
*((byte*) SCREEN#0 + (byte) main::x#2) ← *((byte[$3e8]) MAPDATA#0 + (byte) main::x#2)
|
||||
*((byte*) COLS#0 + (byte) main::x#2) ← *((byte[$100]) COLORMAP1#0 + *((byte[$3e8]) MAPDATA#0 + (byte) main::x#2))
|
||||
(byte/word/signed word/dword/signed dword~) main::$0 ← (byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2
|
||||
(byte/word/signed word/dword/signed dword~) main::$1 ← (byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2
|
||||
*((byte*) SCREEN#1 + (byte/word/signed word/dword/signed dword~) main::$0) ← *((byte[$3e8]) MAPDATA#0 + (byte/word/signed word/dword/signed dword~) main::$1)
|
||||
*((byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) main::$0) ← *((byte[$3e8]) MAPDATA#0 + (byte/word/signed word/dword/signed dword~) main::$1)
|
||||
(byte/word/signed word/dword/signed dword~) main::$2 ← (byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2
|
||||
(byte/word/signed word/dword/signed dword~) main::$3 ← (byte/word/signed word/dword/signed dword) $c8 + (byte) main::x#2
|
||||
*((byte*) COLS#1 + (byte/word/signed word/dword/signed dword~) main::$2) ← *((byte[$100]) COLORMAP1#0 + *((byte[$3e8]) MAPDATA#0 + (byte/word/signed word/dword/signed dword~) main::$3))
|
||||
*((byte*) COLS#0 + (byte/word/signed word/dword/signed dword~) main::$2) ← *((byte[$100]) COLORMAP1#0 + *((byte[$3e8]) MAPDATA#0 + (byte/word/signed word/dword/signed dword~) main::$3))
|
||||
(word/signed word/dword/signed dword~) main::$4 ← (word/signed word/dword/signed dword) $190 + (byte) main::x#2
|
||||
(word/signed word/dword/signed dword~) main::$5 ← (word/signed word/dword/signed dword) $190 + (byte) main::x#2
|
||||
*((byte*) SCREEN#1 + (word/signed word/dword/signed dword~) main::$4) ← *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$5)
|
||||
*((byte*) SCREEN#0 + (word/signed word/dword/signed dword~) main::$4) ← *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$5)
|
||||
(word/signed word/dword/signed dword~) main::$6 ← (word/signed word/dword/signed dword) $190 + (byte) main::x#2
|
||||
(word/signed word/dword/signed dword~) main::$7 ← (word/signed word/dword/signed dword) $190 + (byte) main::x#2
|
||||
*((byte*) COLS#1 + (word/signed word/dword/signed dword~) main::$6) ← *((byte[$100]) COLORMAP1#0 + *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$7))
|
||||
*((byte*) COLS#0 + (word/signed word/dword/signed dword~) main::$6) ← *((byte[$100]) COLORMAP1#0 + *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$7))
|
||||
(word/signed word/dword/signed dword~) main::$8 ← (word/signed word/dword/signed dword) $258 + (byte) main::x#2
|
||||
(word/signed word/dword/signed dword~) main::$9 ← (word/signed word/dword/signed dword) $258 + (byte) main::x#2
|
||||
*((byte*) SCREEN#1 + (word/signed word/dword/signed dword~) main::$8) ← *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$9)
|
||||
*((byte*) SCREEN#0 + (word/signed word/dword/signed dword~) main::$8) ← *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$9)
|
||||
(word/signed word/dword/signed dword~) main::$10 ← (word/signed word/dword/signed dword) $258 + (byte) main::x#2
|
||||
(word/signed word/dword/signed dword~) main::$11 ← (word/signed word/dword/signed dword) $258 + (byte) main::x#2
|
||||
*((byte*) COLS#1 + (word/signed word/dword/signed dword~) main::$10) ← *((byte[$100]) COLORMAP2#0 + *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$11))
|
||||
*((byte*) COLS#0 + (word/signed word/dword/signed dword~) main::$10) ← *((byte[$100]) COLORMAP2#0 + *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$11))
|
||||
(word/signed word/dword/signed dword~) main::$12 ← (word/signed word/dword/signed dword) $320 + (byte) main::x#2
|
||||
(word/signed word/dword/signed dword~) main::$13 ← (word/signed word/dword/signed dword) $320 + (byte) main::x#2
|
||||
*((byte*) SCREEN#1 + (word/signed word/dword/signed dword~) main::$12) ← *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$13)
|
||||
*((byte*) SCREEN#0 + (word/signed word/dword/signed dword~) main::$12) ← *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$13)
|
||||
(word/signed word/dword/signed dword~) main::$14 ← (word/signed word/dword/signed dword) $320 + (byte) main::x#2
|
||||
(word/signed word/dword/signed dword~) main::$15 ← (word/signed word/dword/signed dword) $320 + (byte) main::x#2
|
||||
*((byte*) COLS#1 + (word/signed word/dword/signed dword~) main::$14) ← *((byte[$100]) COLORMAP2#0 + *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$15))
|
||||
*((byte*) COLS#0 + (word/signed word/dword/signed dword~) main::$14) ← *((byte[$100]) COLORMAP2#0 + *((byte[$3e8]) MAPDATA#0 + (word/signed word/dword/signed dword~) main::$15))
|
||||
(byte) main::x#1 ← (byte) main::x#2 + rangenext(0,$c8)
|
||||
(bool~) main::$16 ← (byte) main::x#1 != rangelast(0,$c8)
|
||||
if((bool~) main::$16) goto main::@1
|
||||
@ -50,8 +48,6 @@ main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) COLS#3 ← phi( @begin/(byte*) COLS#0 )
|
||||
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -69,16 +65,10 @@ SYMBOL TABLE SSA
|
||||
(byte[$100]) COLORMAP2#0
|
||||
(byte*) COLS
|
||||
(byte*) COLS#0
|
||||
(byte*) COLS#1
|
||||
(byte*) COLS#2
|
||||
(byte*) COLS#3
|
||||
(byte[$3e8]) MAPDATA
|
||||
(byte[$3e8]) MAPDATA#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(void()) main()
|
||||
(byte/word/signed word/dword/signed dword~) main::$0
|
||||
(byte/word/signed word/dword/signed dword~) main::$1
|
||||
@ -106,18 +96,7 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
|
||||
Alias (byte*) COLS#0 = (byte*) COLS#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Self Phi Eliminated (byte*) COLS#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) COLS#2 (byte*) COLS#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
|
||||
Redundant Phi (byte*) COLS#1 (byte*) COLS#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$16 [36] if((byte) main::x#1!=rangelast(0,$c8)) goto main::@1
|
||||
Simple Condition (bool~) main::$16 [35] if((byte) main::x#1!=rangelast(0,$c8)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte[$3e8]) MAPDATA#0 = { fill( $3e8, 0) }
|
||||
Constant (const byte[$100]) COLORMAP1#0 = { fill( $100, 0) }
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (dword) main::a
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -8,8 +9,7 @@ main: scope:[main] from @1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
(dword) main::a#1 ← phi( main/(dword) main::a#0 main::@1/(dword) main::a#1 )
|
||||
(dword~) main::$0 ← (dword) main::a#1 + (byte) main::i#2
|
||||
(dword~) main::$0 ← (dword) main::a#0 + (byte) main::i#2
|
||||
(dword) main::b#0 ← (dword~) main::$0
|
||||
(byte~) main::$1 ← ((byte)) (dword) main::b#0
|
||||
(byte) main::c#0 ← (byte~) main::$1
|
||||
@ -44,7 +44,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::SCREEN#0
|
||||
(dword) main::a
|
||||
(dword) main::a#0
|
||||
(dword) main::a#1
|
||||
(dword) main::b
|
||||
(dword) main::b#0
|
||||
(byte) main::c
|
||||
@ -59,10 +58,6 @@ Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (dword) main::b#0 = (dword~) main::$0
|
||||
Alias (byte) main::c#0 = (byte~) main::$1
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (dword) main::a#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (dword) main::a#1 (dword) main::a#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$2 [11] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const dword) main::a#0 = $ee6b2800
|
||||
|
@ -1,23 +1,20 @@
|
||||
Identified constant variable (byte*) B
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
to:@2
|
||||
main: scope:[main] from @3
|
||||
(byte*) B#11 ← phi( @3/(byte*) B#13 )
|
||||
(byte) a#20 ← phi( @3/(byte) a#19 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@7
|
||||
(byte*) B#10 ← phi( main/(byte*) B#11 main::@7/(byte*) B#12 )
|
||||
(byte) a#15 ← phi( main/(byte) a#20 main::@7/(byte) a#0 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) B#9 ← phi( main::@1/(byte*) B#10 )
|
||||
(byte) a#14 ← phi( main::@1/(byte) a#15 )
|
||||
call menu
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@2
|
||||
(byte*) B#12 ← phi( main::@2/(byte*) B#9 )
|
||||
(byte) a#8 ← phi( main::@2/(byte) a#3 )
|
||||
(byte) a#0 ← (byte) a#8
|
||||
to:main::@1
|
||||
@ -27,16 +24,13 @@ main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
menu: scope:[menu] from main::@2
|
||||
(byte*) B#8 ← phi( main::@2/(byte*) B#9 )
|
||||
(byte) a#21 ← phi( main::@2/(byte) a#14 )
|
||||
to:menu::@1
|
||||
menu::@1: scope:[menu] from menu
|
||||
(byte*) B#7 ← phi( menu/(byte*) B#8 )
|
||||
(byte) a#17 ← phi( menu/(byte) a#21 )
|
||||
if(true) goto menu::@2
|
||||
to:menu::@return
|
||||
menu::@2: scope:[menu] from menu::@1
|
||||
(byte*) B#6 ← phi( menu::@1/(byte*) B#7 )
|
||||
(byte) a#16 ← phi( menu::@1/(byte) a#17 )
|
||||
call mode
|
||||
to:menu::@8
|
||||
@ -55,27 +49,22 @@ menu::@return: scope:[menu] from menu::@1 menu::@8
|
||||
to:@3
|
||||
mode: scope:[mode] from menu::@2
|
||||
(byte) a#22 ← phi( menu::@2/(byte) a#16 )
|
||||
(byte*) B#4 ← phi( menu::@2/(byte*) B#6 )
|
||||
to:mode::@1
|
||||
mode::@1: scope:[mode] from mode mode::@4 mode::@7
|
||||
(byte) a#18 ← phi( mode/(byte) a#22 mode::@4/(byte) a#23 mode::@7/(byte) a#5 )
|
||||
(byte*) B#3 ← phi( mode/(byte*) B#4 mode::@4/(byte*) B#5 mode::@7/(byte*) B#2 )
|
||||
if(true) goto mode::@2
|
||||
to:mode::@return
|
||||
mode::@2: scope:[mode] from mode::@1
|
||||
(byte) a#24 ← phi( mode::@1/(byte) a#18 )
|
||||
(byte*) B#1 ← phi( mode::@1/(byte*) B#3 )
|
||||
(bool~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(bool~) mode::$0 ← *((byte*) B#0) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(bool~) mode::$1 ← ! (bool~) mode::$0
|
||||
if((bool~) mode::$1) goto mode::@4
|
||||
to:mode::@7
|
||||
mode::@4: scope:[mode] from mode::@2
|
||||
(byte) a#23 ← phi( mode::@2/(byte) a#24 )
|
||||
(byte*) B#5 ← phi( mode::@2/(byte*) B#1 )
|
||||
to:mode::@1
|
||||
mode::@7: scope:[mode] from mode::@2
|
||||
(byte*) B#2 ← phi( mode::@2/(byte*) B#1 )
|
||||
(byte) a#5 ← *((byte*) B#2)
|
||||
(byte) a#5 ← *((byte*) B#0)
|
||||
to:mode::@1
|
||||
mode::@return: scope:[mode] from mode::@1
|
||||
(byte) a#12 ← phi( mode::@1/(byte) a#18 )
|
||||
@ -83,7 +72,6 @@ mode::@return: scope:[mode] from mode::@1
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @2
|
||||
(byte*) B#13 ← phi( @2/(byte*) B#0 )
|
||||
(byte) a#19 ← phi( @2/(byte) a#4 )
|
||||
call main
|
||||
to:@4
|
||||
@ -101,19 +89,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) B
|
||||
(byte*) B#0
|
||||
(byte*) B#1
|
||||
(byte*) B#10
|
||||
(byte*) B#11
|
||||
(byte*) B#12
|
||||
(byte*) B#13
|
||||
(byte*) B#2
|
||||
(byte*) B#3
|
||||
(byte*) B#4
|
||||
(byte*) B#5
|
||||
(byte*) B#6
|
||||
(byte*) B#7
|
||||
(byte*) B#8
|
||||
(byte*) B#9
|
||||
(byte) a
|
||||
(byte) a#0
|
||||
(byte) a#1
|
||||
@ -159,36 +134,24 @@ SYMBOL TABLE SSA
|
||||
(label) mode::@7
|
||||
(label) mode::@return
|
||||
|
||||
Inversing boolean not [27] (bool~) mode::$1 ← *((byte*) B#1) != (byte/signed byte/word/signed word/dword/signed dword) 0 from [26] (bool~) mode::$0 ← *((byte*) B#1) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [27] (bool~) mode::$1 ← *((byte*) B#0) != (byte/signed byte/word/signed word/dword/signed dword) 0 from [26] (bool~) mode::$0 ← *((byte*) B#0) == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) a#1 = (byte) a#14 (byte) a#15 (byte) a#9
|
||||
Alias (byte*) B#10 = (byte*) B#9 (byte*) B#12
|
||||
Alias (byte) a#0 = (byte) a#8
|
||||
Alias (byte) a#16 = (byte) a#17 (byte) a#21
|
||||
Alias (byte*) B#6 = (byte*) B#7 (byte*) B#8
|
||||
Alias (byte) a#10 = (byte) a#2
|
||||
Alias (byte) a#11 = (byte) a#3
|
||||
Alias (byte*) B#1 = (byte*) B#3 (byte*) B#5 (byte*) B#2
|
||||
Alias (byte) a#12 = (byte) a#24 (byte) a#18 (byte) a#23 (byte) a#6
|
||||
Alias (byte) a#19 = (byte) a#4
|
||||
Alias (byte*) B#0 = (byte*) B#13
|
||||
Alias (byte) a#13 = (byte) a#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) B#10
|
||||
Self Phi Eliminated (byte*) B#1
|
||||
Self Phi Eliminated (byte*) B#1
|
||||
Self Phi Eliminated (byte) a#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) a#20 (byte) a#19
|
||||
Redundant Phi (byte*) B#11 (byte*) B#0
|
||||
Redundant Phi (byte*) B#10 (byte*) B#11
|
||||
Redundant Phi (byte) a#0 (byte) a#11
|
||||
Redundant Phi (byte) a#16 (byte) a#1
|
||||
Redundant Phi (byte*) B#6 (byte*) B#10
|
||||
Redundant Phi (byte) a#10 (byte) a#12
|
||||
Redundant Phi (byte*) B#4 (byte*) B#6
|
||||
Redundant Phi (byte) a#22 (byte) a#16
|
||||
Redundant Phi (byte*) B#1 (byte*) B#4
|
||||
Redundant Phi (byte) a#13 (byte) a#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mode::$1 [28] if(*((byte*) B#0)!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mode::@4
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,12 @@
|
||||
Resolved forward reference mulf_sqr1 to (byte[$200]) mulf_sqr1
|
||||
Resolved forward reference mulf_sqr2 to (byte[$200]) mulf_sqr2
|
||||
Resolved forward reference PERSP_Z to (signed byte*) PERSP_Z
|
||||
Identified constant variable (signed byte*) xr
|
||||
Identified constant variable (signed byte*) yr
|
||||
Identified constant variable (signed byte*) zr
|
||||
Identified constant variable (word*) psp1
|
||||
Identified constant variable (word*) psp2
|
||||
Identified constant variable (signed byte*) PERSP_Z
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -258,41 +264,23 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(word*) psp2#0 ← ((word*)) (byte/word/signed word/dword/signed dword) $f5
|
||||
to:@26
|
||||
main: scope:[main] from @27
|
||||
(signed byte*) PERSP_Z#12 ← phi( @27/(signed byte*) PERSP_Z#0 )
|
||||
(signed byte*) zr#12 ← phi( @27/(signed byte*) zr#13 )
|
||||
(signed byte*) yr#15 ← phi( @27/(signed byte*) yr#16 )
|
||||
(signed byte*) xr#13 ← phi( @27/(signed byte*) xr#14 )
|
||||
(byte*) print_char_cursor#76 ← phi( @27/(byte*) print_char_cursor#73 )
|
||||
(byte*) print_line_cursor#25 ← phi( @27/(byte*) print_line_cursor#24 )
|
||||
(byte*) print_screen#5 ← phi( @27/(byte*) print_screen#6 )
|
||||
(word*) psp2#3 ← phi( @27/(word*) psp2#5 )
|
||||
(word*) psp1#3 ← phi( @27/(word*) psp1#5 )
|
||||
asm { sei }
|
||||
call mulf_init
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(signed byte*) PERSP_Z#11 ← phi( main/(signed byte*) PERSP_Z#12 )
|
||||
(signed byte*) zr#11 ← phi( main/(signed byte*) zr#12 )
|
||||
(signed byte*) yr#14 ← phi( main/(signed byte*) yr#15 )
|
||||
(signed byte*) xr#12 ← phi( main/(signed byte*) xr#13 )
|
||||
(byte*) print_char_cursor#70 ← phi( main/(byte*) print_char_cursor#76 )
|
||||
(byte*) print_line_cursor#22 ← phi( main/(byte*) print_line_cursor#25 )
|
||||
(byte*) print_screen#4 ← phi( main/(byte*) print_screen#5 )
|
||||
(word*) psp2#1 ← phi( main/(word*) psp2#3 )
|
||||
(word*) psp1#1 ← phi( main/(word*) psp1#3 )
|
||||
(word~) main::$1 ← ((word)) (byte[$200]) mulf_sqr1#0
|
||||
*((word*) psp1#1) ← (word~) main::$1
|
||||
*((word*) psp1#0) ← (word~) main::$1
|
||||
(word~) main::$2 ← ((word)) (byte[$200]) mulf_sqr2#0
|
||||
*((word*) psp2#1) ← (word~) main::$2
|
||||
*((word*) psp2#0) ← (word~) main::$2
|
||||
call print_cls
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(word*) psp2#14 ← phi( main::@1/(word*) psp2#1 )
|
||||
(word*) psp1#14 ← phi( main::@1/(word*) psp1#1 )
|
||||
(signed byte*) PERSP_Z#10 ← phi( main::@1/(signed byte*) PERSP_Z#11 )
|
||||
(signed byte*) zr#10 ← phi( main::@1/(signed byte*) zr#11 )
|
||||
(signed byte*) yr#13 ← phi( main::@1/(signed byte*) yr#14 )
|
||||
(signed byte*) xr#11 ← phi( main::@1/(signed byte*) xr#12 )
|
||||
(byte*) print_char_cursor#47 ← phi( main::@1/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_line_cursor#15 ← phi( main::@1/(byte*) print_line_cursor#4 )
|
||||
(byte*) print_line_cursor#5 ← (byte*) print_line_cursor#15
|
||||
@ -318,12 +306,6 @@ main::@return: scope:[main] from main::@3
|
||||
to:@return
|
||||
do_perspective: scope:[do_perspective] from main::@2
|
||||
(byte*) print_line_cursor#40 ← phi( main::@2/(byte*) print_line_cursor#5 )
|
||||
(word*) psp2#13 ← phi( main::@2/(word*) psp2#14 )
|
||||
(word*) psp1#13 ← phi( main::@2/(word*) psp1#14 )
|
||||
(signed byte*) PERSP_Z#9 ← phi( main::@2/(signed byte*) PERSP_Z#10 )
|
||||
(signed byte*) zr#9 ← phi( main::@2/(signed byte*) zr#10 )
|
||||
(signed byte*) yr#12 ← phi( main::@2/(signed byte*) yr#13 )
|
||||
(signed byte*) xr#10 ← phi( main::@2/(signed byte*) xr#11 )
|
||||
(signed byte) do_perspective::z#8 ← phi( main::@2/(signed byte) do_perspective::z#0 )
|
||||
(signed byte) do_perspective::y#7 ← phi( main::@2/(signed byte) do_perspective::y#0 )
|
||||
(signed byte) do_perspective::x#3 ← phi( main::@2/(signed byte) do_perspective::x#0 )
|
||||
@ -333,12 +315,6 @@ do_perspective: scope:[do_perspective] from main::@2
|
||||
to:do_perspective::@1
|
||||
do_perspective::@1: scope:[do_perspective] from do_perspective
|
||||
(byte*) print_line_cursor#39 ← phi( do_perspective/(byte*) print_line_cursor#40 )
|
||||
(word*) psp2#12 ← phi( do_perspective/(word*) psp2#13 )
|
||||
(word*) psp1#12 ← phi( do_perspective/(word*) psp1#13 )
|
||||
(signed byte*) PERSP_Z#8 ← phi( do_perspective/(signed byte*) PERSP_Z#9 )
|
||||
(signed byte*) zr#8 ← phi( do_perspective/(signed byte*) zr#9 )
|
||||
(signed byte*) yr#11 ← phi( do_perspective/(signed byte*) yr#12 )
|
||||
(signed byte*) xr#9 ← phi( do_perspective/(signed byte*) xr#10 )
|
||||
(signed byte) do_perspective::z#7 ← phi( do_perspective/(signed byte) do_perspective::z#8 )
|
||||
(signed byte) do_perspective::y#5 ← phi( do_perspective/(signed byte) do_perspective::y#7 )
|
||||
(signed byte) do_perspective::x#1 ← phi( do_perspective/(signed byte) do_perspective::x#3 )
|
||||
@ -349,12 +325,6 @@ do_perspective::@1: scope:[do_perspective] from do_perspective
|
||||
to:do_perspective::@2
|
||||
do_perspective::@2: scope:[do_perspective] from do_perspective::@1
|
||||
(byte*) print_line_cursor#38 ← phi( do_perspective::@1/(byte*) print_line_cursor#39 )
|
||||
(word*) psp2#11 ← phi( do_perspective::@1/(word*) psp2#12 )
|
||||
(word*) psp1#11 ← phi( do_perspective::@1/(word*) psp1#12 )
|
||||
(signed byte*) PERSP_Z#7 ← phi( do_perspective::@1/(signed byte*) PERSP_Z#8 )
|
||||
(signed byte*) zr#7 ← phi( do_perspective::@1/(signed byte*) zr#8 )
|
||||
(signed byte*) yr#10 ← phi( do_perspective::@1/(signed byte*) yr#11 )
|
||||
(signed byte*) xr#8 ← phi( do_perspective::@1/(signed byte*) xr#9 )
|
||||
(signed byte) do_perspective::x#8 ← phi( do_perspective::@1/(signed byte) do_perspective::x#1 )
|
||||
(signed byte) do_perspective::z#6 ← phi( do_perspective::@1/(signed byte) do_perspective::z#7 )
|
||||
(signed byte) do_perspective::y#3 ← phi( do_perspective::@1/(signed byte) do_perspective::y#5 )
|
||||
@ -365,12 +335,6 @@ do_perspective::@2: scope:[do_perspective] from do_perspective::@1
|
||||
to:do_perspective::@3
|
||||
do_perspective::@3: scope:[do_perspective] from do_perspective::@2
|
||||
(byte*) print_line_cursor#37 ← phi( do_perspective::@2/(byte*) print_line_cursor#38 )
|
||||
(word*) psp2#10 ← phi( do_perspective::@2/(word*) psp2#11 )
|
||||
(word*) psp1#10 ← phi( do_perspective::@2/(word*) psp1#11 )
|
||||
(signed byte*) PERSP_Z#6 ← phi( do_perspective::@2/(signed byte*) PERSP_Z#7 )
|
||||
(signed byte*) zr#6 ← phi( do_perspective::@2/(signed byte*) zr#7 )
|
||||
(signed byte*) yr#9 ← phi( do_perspective::@2/(signed byte*) yr#10 )
|
||||
(signed byte*) xr#7 ← phi( do_perspective::@2/(signed byte*) xr#8 )
|
||||
(signed byte) do_perspective::x#7 ← phi( do_perspective::@2/(signed byte) do_perspective::x#8 )
|
||||
(signed byte) do_perspective::z#5 ← phi( do_perspective::@2/(signed byte) do_perspective::z#6 )
|
||||
(signed byte) do_perspective::y#1 ← phi( do_perspective::@2/(signed byte) do_perspective::y#3 )
|
||||
@ -381,12 +345,6 @@ do_perspective::@3: scope:[do_perspective] from do_perspective::@2
|
||||
to:do_perspective::@4
|
||||
do_perspective::@4: scope:[do_perspective] from do_perspective::@3
|
||||
(byte*) print_line_cursor#36 ← phi( do_perspective::@3/(byte*) print_line_cursor#37 )
|
||||
(word*) psp2#9 ← phi( do_perspective::@3/(word*) psp2#10 )
|
||||
(word*) psp1#9 ← phi( do_perspective::@3/(word*) psp1#10 )
|
||||
(signed byte*) PERSP_Z#5 ← phi( do_perspective::@3/(signed byte*) PERSP_Z#6 )
|
||||
(signed byte*) zr#5 ← phi( do_perspective::@3/(signed byte*) zr#6 )
|
||||
(signed byte*) yr#8 ← phi( do_perspective::@3/(signed byte*) yr#9 )
|
||||
(signed byte*) xr#6 ← phi( do_perspective::@3/(signed byte*) xr#7 )
|
||||
(signed byte) do_perspective::y#8 ← phi( do_perspective::@3/(signed byte) do_perspective::y#1 )
|
||||
(signed byte) do_perspective::x#6 ← phi( do_perspective::@3/(signed byte) do_perspective::x#7 )
|
||||
(signed byte) do_perspective::z#3 ← phi( do_perspective::@3/(signed byte) do_perspective::z#5 )
|
||||
@ -397,12 +355,6 @@ do_perspective::@4: scope:[do_perspective] from do_perspective::@3
|
||||
to:do_perspective::@5
|
||||
do_perspective::@5: scope:[do_perspective] from do_perspective::@4
|
||||
(byte*) print_line_cursor#35 ← phi( do_perspective::@4/(byte*) print_line_cursor#36 )
|
||||
(word*) psp2#7 ← phi( do_perspective::@4/(word*) psp2#9 )
|
||||
(word*) psp1#7 ← phi( do_perspective::@4/(word*) psp1#9 )
|
||||
(signed byte*) PERSP_Z#4 ← phi( do_perspective::@4/(signed byte*) PERSP_Z#5 )
|
||||
(signed byte*) zr#4 ← phi( do_perspective::@4/(signed byte*) zr#5 )
|
||||
(signed byte*) yr#7 ← phi( do_perspective::@4/(signed byte*) yr#8 )
|
||||
(signed byte*) xr#5 ← phi( do_perspective::@4/(signed byte*) xr#6 )
|
||||
(signed byte) do_perspective::y#6 ← phi( do_perspective::@4/(signed byte) do_perspective::y#8 )
|
||||
(signed byte) do_perspective::x#5 ← phi( do_perspective::@4/(signed byte) do_perspective::x#6 )
|
||||
(signed byte) do_perspective::z#1 ← phi( do_perspective::@4/(signed byte) do_perspective::z#3 )
|
||||
@ -413,12 +365,6 @@ do_perspective::@5: scope:[do_perspective] from do_perspective::@4
|
||||
to:do_perspective::@6
|
||||
do_perspective::@6: scope:[do_perspective] from do_perspective::@5
|
||||
(byte*) print_line_cursor#34 ← phi( do_perspective::@5/(byte*) print_line_cursor#35 )
|
||||
(word*) psp2#6 ← phi( do_perspective::@5/(word*) psp2#7 )
|
||||
(word*) psp1#6 ← phi( do_perspective::@5/(word*) psp1#7 )
|
||||
(signed byte*) PERSP_Z#3 ← phi( do_perspective::@5/(signed byte*) PERSP_Z#4 )
|
||||
(signed byte*) zr#3 ← phi( do_perspective::@5/(signed byte*) zr#4 )
|
||||
(signed byte*) yr#5 ← phi( do_perspective::@5/(signed byte*) yr#7 )
|
||||
(signed byte*) xr#4 ← phi( do_perspective::@5/(signed byte*) xr#5 )
|
||||
(signed byte) do_perspective::z#4 ← phi( do_perspective::@5/(signed byte) do_perspective::z#1 )
|
||||
(signed byte) do_perspective::y#4 ← phi( do_perspective::@5/(signed byte) do_perspective::y#6 )
|
||||
(signed byte) do_perspective::x#4 ← phi( do_perspective::@5/(signed byte) do_perspective::x#5 )
|
||||
@ -429,12 +375,6 @@ do_perspective::@6: scope:[do_perspective] from do_perspective::@5
|
||||
to:do_perspective::@7
|
||||
do_perspective::@7: scope:[do_perspective] from do_perspective::@6
|
||||
(byte*) print_line_cursor#33 ← phi( do_perspective::@6/(byte*) print_line_cursor#34 )
|
||||
(word*) psp2#4 ← phi( do_perspective::@6/(word*) psp2#6 )
|
||||
(word*) psp1#4 ← phi( do_perspective::@6/(word*) psp1#6 )
|
||||
(signed byte*) PERSP_Z#2 ← phi( do_perspective::@6/(signed byte*) PERSP_Z#3 )
|
||||
(signed byte*) zr#2 ← phi( do_perspective::@6/(signed byte*) zr#3 )
|
||||
(signed byte*) yr#4 ← phi( do_perspective::@6/(signed byte*) yr#5 )
|
||||
(signed byte*) xr#3 ← phi( do_perspective::@6/(signed byte*) xr#4 )
|
||||
(signed byte) do_perspective::z#2 ← phi( do_perspective::@6/(signed byte) do_perspective::z#4 )
|
||||
(signed byte) do_perspective::y#2 ← phi( do_perspective::@6/(signed byte) do_perspective::y#4 )
|
||||
(signed byte) do_perspective::x#2 ← phi( do_perspective::@6/(signed byte) do_perspective::x#4 )
|
||||
@ -447,16 +387,13 @@ do_perspective::@7: scope:[do_perspective] from do_perspective::@6
|
||||
to:do_perspective::@8
|
||||
do_perspective::@8: scope:[do_perspective] from do_perspective::@7
|
||||
(byte*) print_line_cursor#32 ← phi( do_perspective::@7/(byte*) print_line_cursor#33 )
|
||||
(signed byte*) yr#6 ← phi( do_perspective::@7/(signed byte*) yr#4 )
|
||||
(byte*) print_char_cursor#72 ← phi( do_perspective::@7/(byte*) print_char_cursor#25 )
|
||||
(signed byte*) xr#1 ← phi( do_perspective::@7/(signed byte*) xr#3 )
|
||||
(byte~) do_perspective::$8 ← ((byte)) *((signed byte*) xr#1)
|
||||
(byte~) do_perspective::$8 ← ((byte)) *((signed byte*) xr#0)
|
||||
(byte) print_byte::b#1 ← (byte~) do_perspective::$8
|
||||
call print_byte
|
||||
to:do_perspective::@9
|
||||
do_perspective::@9: scope:[do_perspective] from do_perspective::@8
|
||||
(byte*) print_line_cursor#31 ← phi( do_perspective::@8/(byte*) print_line_cursor#32 )
|
||||
(signed byte*) yr#3 ← phi( do_perspective::@8/(signed byte*) yr#6 )
|
||||
(byte*) print_char_cursor#57 ← phi( do_perspective::@8/(byte*) print_char_cursor#11 )
|
||||
(byte*) print_char_cursor#26 ← (byte*) print_char_cursor#57
|
||||
(byte*) print_str::str#5 ← (const string) do_perspective::str4
|
||||
@ -464,10 +401,9 @@ do_perspective::@9: scope:[do_perspective] from do_perspective::@8
|
||||
to:do_perspective::@10
|
||||
do_perspective::@10: scope:[do_perspective] from do_perspective::@9
|
||||
(byte*) print_line_cursor#28 ← phi( do_perspective::@9/(byte*) print_line_cursor#31 )
|
||||
(signed byte*) yr#1 ← phi( do_perspective::@9/(signed byte*) yr#3 )
|
||||
(byte*) print_char_cursor#58 ← phi( do_perspective::@9/(byte*) print_char_cursor#2 )
|
||||
(byte*) print_char_cursor#27 ← (byte*) print_char_cursor#58
|
||||
(byte~) do_perspective::$11 ← ((byte)) *((signed byte*) yr#1)
|
||||
(byte~) do_perspective::$11 ← ((byte)) *((signed byte*) yr#0)
|
||||
(byte) print_byte::b#2 ← (byte~) do_perspective::$11
|
||||
call print_byte
|
||||
to:do_perspective::@11
|
||||
@ -498,30 +434,19 @@ do_perspective::@return: scope:[do_perspective] from do_perspective::@13
|
||||
return
|
||||
to:@return
|
||||
perspective: scope:[perspective] from do_perspective::@7
|
||||
(word*) psp2#2 ← phi( do_perspective::@7/(word*) psp2#4 )
|
||||
(word*) psp1#2 ← phi( do_perspective::@7/(word*) psp1#4 )
|
||||
(signed byte*) PERSP_Z#1 ← phi( do_perspective::@7/(signed byte*) PERSP_Z#2 )
|
||||
(signed byte*) zr#1 ← phi( do_perspective::@7/(signed byte*) zr#2 )
|
||||
(signed byte) perspective::z#1 ← phi( do_perspective::@7/(signed byte) perspective::z#0 )
|
||||
(signed byte*) yr#2 ← phi( do_perspective::@7/(signed byte*) yr#4 )
|
||||
(signed byte) perspective::y#1 ← phi( do_perspective::@7/(signed byte) perspective::y#0 )
|
||||
(signed byte*) xr#2 ← phi( do_perspective::@7/(signed byte*) xr#3 )
|
||||
(signed byte) perspective::x#1 ← phi( do_perspective::@7/(signed byte) perspective::x#0 )
|
||||
*((signed byte*) xr#2) ← (signed byte) perspective::x#1
|
||||
*((signed byte*) yr#2) ← (signed byte) perspective::y#1
|
||||
*((signed byte*) zr#1) ← (signed byte) perspective::z#1
|
||||
*((signed byte*) xr#0) ← (signed byte) perspective::x#1
|
||||
*((signed byte*) yr#0) ← (signed byte) perspective::y#1
|
||||
*((signed byte*) zr#0) ← (signed byte) perspective::z#1
|
||||
asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr }
|
||||
to:perspective::@return
|
||||
perspective::@return: scope:[perspective] from perspective
|
||||
return
|
||||
to:@return
|
||||
@26: scope:[] from @23
|
||||
(signed byte*) zr#14 ← phi( @23/(signed byte*) zr#0 )
|
||||
(signed byte*) yr#17 ← phi( @23/(signed byte*) yr#0 )
|
||||
(signed byte*) xr#15 ← phi( @23/(signed byte*) xr#0 )
|
||||
(byte*) print_screen#7 ← phi( @23/(byte*) print_screen#8 )
|
||||
(word*) psp2#8 ← phi( @23/(word*) psp2#0 )
|
||||
(word*) psp1#8 ← phi( @23/(word*) psp1#0 )
|
||||
(byte*) print_char_cursor#77 ← phi( @23/(byte*) print_char_cursor#78 )
|
||||
(byte*) print_line_cursor#27 ← phi( @23/(byte*) print_line_cursor#29 )
|
||||
(byte[$200]) mulf_sqr1#0 ← { fill( $200, 0) }
|
||||
@ -566,12 +491,7 @@ mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
||||
return
|
||||
to:@return
|
||||
@27: scope:[] from @26
|
||||
(signed byte*) zr#13 ← phi( @26/(signed byte*) zr#14 )
|
||||
(signed byte*) yr#16 ← phi( @26/(signed byte*) yr#17 )
|
||||
(signed byte*) xr#14 ← phi( @26/(signed byte*) xr#15 )
|
||||
(byte*) print_screen#6 ← phi( @26/(byte*) print_screen#7 )
|
||||
(word*) psp2#5 ← phi( @26/(word*) psp2#8 )
|
||||
(word*) psp1#5 ← phi( @26/(word*) psp1#8 )
|
||||
(byte*) print_char_cursor#73 ← phi( @26/(byte*) print_char_cursor#77 )
|
||||
(byte*) print_line_cursor#24 ← phi( @26/(byte*) print_line_cursor#27 )
|
||||
(signed byte*) PERSP_Z#0 ← ((signed byte*)) (word/signed word/dword/signed dword) $2400
|
||||
@ -695,18 +615,6 @@ SYMBOL TABLE SSA
|
||||
(byte) ORANGE#0
|
||||
(signed byte*) PERSP_Z
|
||||
(signed byte*) PERSP_Z#0
|
||||
(signed byte*) PERSP_Z#1
|
||||
(signed byte*) PERSP_Z#10
|
||||
(signed byte*) PERSP_Z#11
|
||||
(signed byte*) PERSP_Z#12
|
||||
(signed byte*) PERSP_Z#2
|
||||
(signed byte*) PERSP_Z#3
|
||||
(signed byte*) PERSP_Z#4
|
||||
(signed byte*) PERSP_Z#5
|
||||
(signed byte*) PERSP_Z#6
|
||||
(signed byte*) PERSP_Z#7
|
||||
(signed byte*) PERSP_Z#8
|
||||
(signed byte*) PERSP_Z#9
|
||||
(byte) PINK
|
||||
(byte) PINK#0
|
||||
(byte*) PROCPORT
|
||||
@ -1096,88 +1004,14 @@ SYMBOL TABLE SSA
|
||||
(byte*) print_str::str#9
|
||||
(word*) psp1
|
||||
(word*) psp1#0
|
||||
(word*) psp1#1
|
||||
(word*) psp1#10
|
||||
(word*) psp1#11
|
||||
(word*) psp1#12
|
||||
(word*) psp1#13
|
||||
(word*) psp1#14
|
||||
(word*) psp1#2
|
||||
(word*) psp1#3
|
||||
(word*) psp1#4
|
||||
(word*) psp1#5
|
||||
(word*) psp1#6
|
||||
(word*) psp1#7
|
||||
(word*) psp1#8
|
||||
(word*) psp1#9
|
||||
(word*) psp2
|
||||
(word*) psp2#0
|
||||
(word*) psp2#1
|
||||
(word*) psp2#10
|
||||
(word*) psp2#11
|
||||
(word*) psp2#12
|
||||
(word*) psp2#13
|
||||
(word*) psp2#14
|
||||
(word*) psp2#2
|
||||
(word*) psp2#3
|
||||
(word*) psp2#4
|
||||
(word*) psp2#5
|
||||
(word*) psp2#6
|
||||
(word*) psp2#7
|
||||
(word*) psp2#8
|
||||
(word*) psp2#9
|
||||
(signed byte*) xr
|
||||
(signed byte*) xr#0
|
||||
(signed byte*) xr#1
|
||||
(signed byte*) xr#10
|
||||
(signed byte*) xr#11
|
||||
(signed byte*) xr#12
|
||||
(signed byte*) xr#13
|
||||
(signed byte*) xr#14
|
||||
(signed byte*) xr#15
|
||||
(signed byte*) xr#2
|
||||
(signed byte*) xr#3
|
||||
(signed byte*) xr#4
|
||||
(signed byte*) xr#5
|
||||
(signed byte*) xr#6
|
||||
(signed byte*) xr#7
|
||||
(signed byte*) xr#8
|
||||
(signed byte*) xr#9
|
||||
(signed byte*) yr
|
||||
(signed byte*) yr#0
|
||||
(signed byte*) yr#1
|
||||
(signed byte*) yr#10
|
||||
(signed byte*) yr#11
|
||||
(signed byte*) yr#12
|
||||
(signed byte*) yr#13
|
||||
(signed byte*) yr#14
|
||||
(signed byte*) yr#15
|
||||
(signed byte*) yr#16
|
||||
(signed byte*) yr#17
|
||||
(signed byte*) yr#2
|
||||
(signed byte*) yr#3
|
||||
(signed byte*) yr#4
|
||||
(signed byte*) yr#5
|
||||
(signed byte*) yr#6
|
||||
(signed byte*) yr#7
|
||||
(signed byte*) yr#8
|
||||
(signed byte*) yr#9
|
||||
(signed byte*) zr
|
||||
(signed byte*) zr#0
|
||||
(signed byte*) zr#1
|
||||
(signed byte*) zr#10
|
||||
(signed byte*) zr#11
|
||||
(signed byte*) zr#12
|
||||
(signed byte*) zr#13
|
||||
(signed byte*) zr#14
|
||||
(signed byte*) zr#2
|
||||
(signed byte*) zr#3
|
||||
(signed byte*) zr#4
|
||||
(signed byte*) zr#5
|
||||
(signed byte*) zr#6
|
||||
(signed byte*) zr#7
|
||||
(signed byte*) zr#8
|
||||
(signed byte*) zr#9
|
||||
|
||||
Alias (byte*) print_line_cursor#0 = (byte*) print_screen#0 (byte*) print_char_cursor#0 (byte*) print_line_cursor#30 (byte*) print_char_cursor#79 (byte*) print_screen#9 (byte*) print_line_cursor#29 (byte*) print_char_cursor#78 (byte*) print_screen#8 (byte*) print_line_cursor#27 (byte*) print_char_cursor#77 (byte*) print_screen#7 (byte*) print_line_cursor#24 (byte*) print_char_cursor#73 (byte*) print_screen#6
|
||||
Alias (byte*) print_str::str#7 = (byte*) print_str::str#8
|
||||
@ -1195,15 +1029,9 @@ Alias (byte*) print_char_cursor#41 = (byte*) print_char_cursor#9
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#42 (byte*) print_char_cursor#43 (byte*) print_char_cursor#11
|
||||
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#45 (byte*) print_char_cursor#13
|
||||
Alias (byte*) print_line_cursor#14 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_line_cursor#3 (byte*) print_char_cursor#14 (byte*) print_char_cursor#46 (byte*) print_line_cursor#4 (byte*) print_char_cursor#15
|
||||
Alias (word*) psp1#1 = (word*) psp1#3 (word*) psp1#14
|
||||
Alias (word*) psp2#1 = (word*) psp2#3 (word*) psp2#14
|
||||
Alias (byte*) print_screen#4 = (byte*) print_screen#5
|
||||
Alias (byte*) print_line_cursor#22 = (byte*) print_line_cursor#25
|
||||
Alias (byte*) print_char_cursor#70 = (byte*) print_char_cursor#76
|
||||
Alias (signed byte*) xr#11 = (signed byte*) xr#12 (signed byte*) xr#13
|
||||
Alias (signed byte*) yr#13 = (signed byte*) yr#14 (signed byte*) yr#15
|
||||
Alias (signed byte*) zr#10 = (signed byte*) zr#11 (signed byte*) zr#12
|
||||
Alias (signed byte*) PERSP_Z#10 = (signed byte*) PERSP_Z#11 (signed byte*) PERSP_Z#12
|
||||
Alias (byte*) print_line_cursor#15 = (byte*) print_line_cursor#5
|
||||
Alias (byte*) print_char_cursor#16 = (byte*) print_char_cursor#47
|
||||
Alias (signed byte) do_perspective::y#0 = (signed byte/signed word/signed dword~) main::$4
|
||||
@ -1212,12 +1040,6 @@ Alias (byte*) print_line_cursor#16 = (byte*) print_line_cursor#6 (byte*) print_l
|
||||
Alias (signed byte) do_perspective::x#1 = (signed byte) do_perspective::x#3 (signed byte) do_perspective::x#8 (signed byte) do_perspective::x#7 (signed byte) do_perspective::x#6 (signed byte) do_perspective::x#5 (signed byte) do_perspective::x#4 (signed byte) do_perspective::x#2
|
||||
Alias (signed byte) do_perspective::y#1 = (signed byte) do_perspective::y#5 (signed byte) do_perspective::y#7 (signed byte) do_perspective::y#3 (signed byte) do_perspective::y#8 (signed byte) do_perspective::y#6 (signed byte) do_perspective::y#4 (signed byte) do_perspective::y#2
|
||||
Alias (signed byte) do_perspective::z#1 = (signed byte) do_perspective::z#7 (signed byte) do_perspective::z#8 (signed byte) do_perspective::z#6 (signed byte) do_perspective::z#5 (signed byte) do_perspective::z#3 (signed byte) do_perspective::z#4 (signed byte) do_perspective::z#2
|
||||
Alias (signed byte*) xr#1 = (signed byte*) xr#9 (signed byte*) xr#10 (signed byte*) xr#8 (signed byte*) xr#7 (signed byte*) xr#6 (signed byte*) xr#5 (signed byte*) xr#4 (signed byte*) xr#3
|
||||
Alias (signed byte*) yr#1 = (signed byte*) yr#11 (signed byte*) yr#12 (signed byte*) yr#10 (signed byte*) yr#9 (signed byte*) yr#8 (signed byte*) yr#7 (signed byte*) yr#5 (signed byte*) yr#4 (signed byte*) yr#6 (signed byte*) yr#3
|
||||
Alias (signed byte*) zr#2 = (signed byte*) zr#8 (signed byte*) zr#9 (signed byte*) zr#7 (signed byte*) zr#6 (signed byte*) zr#5 (signed byte*) zr#4 (signed byte*) zr#3
|
||||
Alias (signed byte*) PERSP_Z#2 = (signed byte*) PERSP_Z#8 (signed byte*) PERSP_Z#9 (signed byte*) PERSP_Z#7 (signed byte*) PERSP_Z#6 (signed byte*) PERSP_Z#5 (signed byte*) PERSP_Z#4 (signed byte*) PERSP_Z#3
|
||||
Alias (word*) psp1#10 = (word*) psp1#12 (word*) psp1#13 (word*) psp1#11 (word*) psp1#9 (word*) psp1#7 (word*) psp1#6 (word*) psp1#4
|
||||
Alias (word*) psp2#10 = (word*) psp2#12 (word*) psp2#13 (word*) psp2#11 (word*) psp2#9 (word*) psp2#7 (word*) psp2#6 (word*) psp2#4
|
||||
Alias (byte*) print_line_cursor#23 = (byte*) print_line_cursor#39 (byte*) print_line_cursor#40 (byte*) print_line_cursor#38 (byte*) print_line_cursor#37 (byte*) print_line_cursor#36 (byte*) print_line_cursor#35 (byte*) print_line_cursor#34 (byte*) print_line_cursor#33 (byte*) print_line_cursor#32 (byte*) print_line_cursor#31 (byte*) print_line_cursor#28 (byte*) print_line_cursor#26
|
||||
Alias (byte*) print_char_cursor#19 = (byte*) print_char_cursor#50
|
||||
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#51
|
||||
@ -1234,11 +1056,6 @@ Alias (byte*) print_char_cursor#28 = (byte*) print_char_cursor#59
|
||||
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#60
|
||||
Alias (byte*) print_line_cursor#18 = (byte*) print_line_cursor#8 (byte*) print_line_cursor#19 (byte*) print_line_cursor#9
|
||||
Alias (byte*) print_char_cursor#30 = (byte*) print_char_cursor#61 (byte*) print_char_cursor#62 (byte*) print_char_cursor#31
|
||||
Alias (word*) psp1#0 = (word*) psp1#8 (word*) psp1#5
|
||||
Alias (word*) psp2#0 = (word*) psp2#8 (word*) psp2#5
|
||||
Alias (signed byte*) xr#0 = (signed byte*) xr#15 (signed byte*) xr#14
|
||||
Alias (signed byte*) yr#0 = (signed byte*) yr#17 (signed byte*) yr#16
|
||||
Alias (signed byte*) zr#0 = (signed byte*) zr#14 (signed byte*) zr#13
|
||||
Alias (byte) mulf_init::val#0 = (byte~) mulf_init::$0
|
||||
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#20
|
||||
Alias (byte*) print_char_cursor#32 = (byte*) print_char_cursor#63
|
||||
@ -1256,15 +1073,9 @@ Redundant Phi (byte*) print_char_cursor#41 (byte*) print_char_cursor#12
|
||||
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#12
|
||||
Redundant Phi (byte*) print_screen#1 (byte*) print_screen#4
|
||||
Redundant Phi (byte*) print_line_cursor#14 (byte*) print_screen#1
|
||||
Redundant Phi (word*) psp1#1 (word*) psp1#0
|
||||
Redundant Phi (word*) psp2#1 (word*) psp2#0
|
||||
Redundant Phi (byte*) print_screen#4 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_line_cursor#22 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_char_cursor#70 (byte*) print_line_cursor#0
|
||||
Redundant Phi (signed byte*) xr#11 (signed byte*) xr#0
|
||||
Redundant Phi (signed byte*) yr#13 (signed byte*) yr#0
|
||||
Redundant Phi (signed byte*) zr#10 (signed byte*) zr#0
|
||||
Redundant Phi (signed byte*) PERSP_Z#10 (signed byte*) PERSP_Z#0
|
||||
Redundant Phi (byte*) print_line_cursor#15 (byte*) print_line_cursor#14
|
||||
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_line_cursor#14
|
||||
Redundant Phi (byte*) print_char_cursor#17 (byte*) print_char_cursor#30
|
||||
@ -1273,12 +1084,6 @@ Redundant Phi (byte*) print_char_cursor#71 (byte*) print_char_cursor#16
|
||||
Redundant Phi (signed byte) do_perspective::x#1 (signed byte) do_perspective::x#0
|
||||
Redundant Phi (signed byte) do_perspective::y#1 (signed byte) do_perspective::y#0
|
||||
Redundant Phi (signed byte) do_perspective::z#1 (signed byte) do_perspective::z#0
|
||||
Redundant Phi (signed byte*) xr#1 (signed byte*) xr#11
|
||||
Redundant Phi (signed byte*) yr#1 (signed byte*) yr#13
|
||||
Redundant Phi (signed byte*) zr#2 (signed byte*) zr#10
|
||||
Redundant Phi (signed byte*) PERSP_Z#2 (signed byte*) PERSP_Z#10
|
||||
Redundant Phi (word*) psp1#10 (word*) psp1#1
|
||||
Redundant Phi (word*) psp2#10 (word*) psp2#1
|
||||
Redundant Phi (byte*) print_line_cursor#23 (byte*) print_line_cursor#15
|
||||
Redundant Phi (byte*) print_char_cursor#19 (byte*) print_char_cursor#2
|
||||
Redundant Phi (byte*) print_char_cursor#20 (byte*) print_char_cursor#39
|
||||
@ -1294,14 +1099,8 @@ Redundant Phi (byte*) print_char_cursor#29 (byte*) print_char_cursor#2
|
||||
Redundant Phi (byte*) print_line_cursor#18 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte*) print_char_cursor#30 (byte*) print_line_cursor#1
|
||||
Redundant Phi (signed byte) perspective::x#1 (signed byte) perspective::x#0
|
||||
Redundant Phi (signed byte*) xr#2 (signed byte*) xr#1
|
||||
Redundant Phi (signed byte) perspective::y#1 (signed byte) perspective::y#0
|
||||
Redundant Phi (signed byte*) yr#2 (signed byte*) yr#1
|
||||
Redundant Phi (signed byte) perspective::z#1 (signed byte) perspective::z#0
|
||||
Redundant Phi (signed byte*) zr#1 (signed byte*) zr#2
|
||||
Redundant Phi (signed byte*) PERSP_Z#1 (signed byte*) PERSP_Z#2
|
||||
Redundant Phi (word*) psp1#2 (word*) psp1#10
|
||||
Redundant Phi (word*) psp2#2 (word*) psp2#10
|
||||
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#16
|
||||
Redundant Phi (byte*) print_char_cursor#32 (byte*) print_char_cursor#17
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte) lines_cnt
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -642,7 +643,6 @@ bitmap_line_ydxd::@return: scope:[bitmap_line_ydxd] from bitmap_line_ydxd::@2
|
||||
(byte) lines_cnt#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:@15
|
||||
main: scope:[main] from @15
|
||||
(byte) lines_cnt#9 ← phi( @15/(byte) lines_cnt#10 )
|
||||
*((byte*) BORDERCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
*((byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte~) main::$0 ← (byte) VIC_BMM#0 | (byte) VIC_DEN#0
|
||||
@ -662,33 +662,26 @@ main: scope:[main] from @15
|
||||
call bitmap_init
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main
|
||||
(byte) lines_cnt#8 ← phi( main/(byte) lines_cnt#9 )
|
||||
call bitmap_clear
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3
|
||||
(byte) lines_cnt#7 ← phi( main::@3/(byte) lines_cnt#8 )
|
||||
call init_screen
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
(byte) lines_cnt#5 ← phi( main::@4/(byte) lines_cnt#7 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@5 main::@6
|
||||
(byte) lines_cnt#4 ← phi( main::@5/(byte) lines_cnt#5 main::@6/(byte) lines_cnt#6 )
|
||||
call lines
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@1
|
||||
(byte) lines_cnt#6 ← phi( main::@1/(byte) lines_cnt#4 )
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@6
|
||||
return
|
||||
to:@return
|
||||
lines: scope:[lines] from main::@1
|
||||
(byte) lines_cnt#3 ← phi( main::@1/(byte) lines_cnt#4 )
|
||||
(byte) lines::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:lines::@1
|
||||
lines::@1: scope:[lines] from lines lines::@3
|
||||
(byte) lines_cnt#2 ← phi( lines/(byte) lines_cnt#3 lines::@3/(byte) lines_cnt#1 )
|
||||
(byte) lines::l#2 ← phi( lines/(byte) lines::l#0 lines::@3/(byte) lines::l#1 )
|
||||
(byte/signed word/word/dword/signed dword~) lines::$0 ← (byte) lines::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte/signed word/word/dword/signed dword~) lines::$1 ← (byte) lines::l#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -699,10 +692,9 @@ lines::@1: scope:[lines] from lines lines::@3
|
||||
call bitmap_line
|
||||
to:lines::@3
|
||||
lines::@3: scope:[lines] from lines::@1
|
||||
(byte) lines_cnt#1 ← phi( lines::@1/(byte) lines_cnt#2 )
|
||||
(byte) lines::l#3 ← phi( lines::@1/(byte) lines::l#2 )
|
||||
(byte) lines::l#1 ← ++ (byte) lines::l#3
|
||||
(bool~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#1
|
||||
(bool~) lines::$3 ← (byte) lines::l#1 < (byte) lines_cnt#0
|
||||
if((bool~) lines::$3) goto lines::@1
|
||||
to:lines::@return
|
||||
lines::@return: scope:[lines] from lines::@3
|
||||
@ -723,7 +715,6 @@ init_screen::@return: scope:[init_screen] from init_screen::@1
|
||||
return
|
||||
to:@return
|
||||
@15: scope:[] from @12
|
||||
(byte) lines_cnt#10 ← phi( @12/(byte) lines_cnt#0 )
|
||||
call main
|
||||
to:@16
|
||||
@16: scope:[] from @15
|
||||
@ -1413,16 +1404,6 @@ SYMBOL TABLE SSA
|
||||
(byte) lines::l#3
|
||||
(byte) lines_cnt
|
||||
(byte) lines_cnt#0
|
||||
(byte) lines_cnt#1
|
||||
(byte) lines_cnt#10
|
||||
(byte) lines_cnt#2
|
||||
(byte) lines_cnt#3
|
||||
(byte) lines_cnt#4
|
||||
(byte) lines_cnt#5
|
||||
(byte) lines_cnt#6
|
||||
(byte) lines_cnt#7
|
||||
(byte) lines_cnt#8
|
||||
(byte) lines_cnt#9
|
||||
(byte[]) lines_x
|
||||
(byte[]) lines_x#0
|
||||
(byte[]) lines_y
|
||||
@ -1454,6 +1435,7 @@ Culled Empty Block (label) bitmap_line::@33
|
||||
Culled Empty Block (label) bitmap_line::@34
|
||||
Culled Empty Block (label) bitmap_line::@35
|
||||
Culled Empty Block (label) bitmap_line::@36
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) @16
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [96] (bool~) bitmap_init::$4 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [95] (bool~) bitmap_init::$3 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -1522,11 +1504,7 @@ Alias (byte) bitmap_line_ydxd::x#3 = (byte) bitmap_line_ydxd::x#7 (byte) bitmap_
|
||||
Alias (byte) bitmap_line_ydxd::e#1 = (byte~) bitmap_line_ydxd::$2 (byte) bitmap_line_ydxd::e#4
|
||||
Alias (byte) bitmap_line_ydxd::y#3 = (byte) bitmap_line_ydxd::y#8
|
||||
Alias (byte) bitmap_line_ydxd::e#2 = (byte~) bitmap_line_ydxd::$5
|
||||
Alias (byte) lines_cnt#5 = (byte) lines_cnt#8 (byte) lines_cnt#9 (byte) lines_cnt#7
|
||||
Alias (byte) lines_cnt#4 = (byte) lines_cnt#6
|
||||
Alias (byte) lines::l#2 = (byte) lines::l#3
|
||||
Alias (byte) lines_cnt#1 = (byte) lines_cnt#2
|
||||
Alias (byte) lines_cnt#0 = (byte) lines_cnt#10
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3
|
||||
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3
|
||||
@ -1562,8 +1540,6 @@ Self Phi Eliminated (byte) bitmap_line_ydxi::y1#2
|
||||
Self Phi Eliminated (byte) bitmap_line_ydxd::xd#3
|
||||
Self Phi Eliminated (byte) bitmap_line_ydxd::yd#2
|
||||
Self Phi Eliminated (byte) bitmap_line_ydxd::y1#2
|
||||
Self Phi Eliminated (byte) lines_cnt#4
|
||||
Self Phi Eliminated (byte) lines_cnt#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) bitmap_init::bitmap#2 (byte*) bitmap_init::bitmap#0
|
||||
Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#2
|
||||
@ -1584,10 +1560,6 @@ Redundant Phi (byte) bitmap_line_ydxi::y1#2 (byte) bitmap_line_ydxi::y1#6
|
||||
Redundant Phi (byte) bitmap_line_ydxd::xd#3 (byte) bitmap_line_ydxd::xd#2
|
||||
Redundant Phi (byte) bitmap_line_ydxd::yd#2 (byte) bitmap_line_ydxd::yd#5
|
||||
Redundant Phi (byte) bitmap_line_ydxd::y1#2 (byte) bitmap_line_ydxd::y1#6
|
||||
Redundant Phi (byte) lines_cnt#5 (byte) lines_cnt#0
|
||||
Redundant Phi (byte) lines_cnt#4 (byte) lines_cnt#5
|
||||
Redundant Phi (byte) lines_cnt#3 (byte) lines_cnt#4
|
||||
Redundant Phi (byte) lines_cnt#1 (byte) lines_cnt#3
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) bitmap_init::$4 [97] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@2
|
||||
Simple Condition (bool~) bitmap_init::$5 [101] if((byte) bitmap_init::x#1!=rangelast(0,$ff)) goto bitmap_init::@1
|
||||
@ -1610,8 +1582,8 @@ Simple Condition (bool~) bitmap_line_ydxi::$4 [301] if((byte) bitmap_line_ydxi::
|
||||
Simple Condition (bool~) bitmap_line_ydxi::$7 [305] if((byte) bitmap_line_ydxi::y#2!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxi::$6) goto bitmap_line_ydxi::@1
|
||||
Simple Condition (bool~) bitmap_line_ydxd::$4 [325] if((byte) bitmap_line_ydxd::yd#5>=(byte) bitmap_line_ydxd::e#1) goto bitmap_line_ydxd::@2
|
||||
Simple Condition (bool~) bitmap_line_ydxd::$7 [329] if((byte) bitmap_line_ydxd::y#3!=(byte/signed word/word/dword/signed dword~) bitmap_line_ydxd::$6) goto bitmap_line_ydxd::@1
|
||||
Simple Condition (bool~) lines::$3 [381] if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1
|
||||
Simple Condition (bool~) init_screen::$1 [389] if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Simple Condition (bool~) lines::$3 [374] if((byte) lines::l#1<(byte) lines_cnt#0) goto lines::@1
|
||||
Simple Condition (bool~) init_screen::$1 [382] if((byte*) init_screen::c#1!=(byte*~) init_screen::$0) goto init_screen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
@ -1764,7 +1736,6 @@ Resolved ranged comparison value if(bitmap_clear::y#1!=rangelast(0,$27)) goto bi
|
||||
Culled Empty Block (label) @4
|
||||
Culled Empty Block (label) bitmap_init::@6
|
||||
Culled Empty Block (label) @12
|
||||
Culled Empty Block (label) main::@5
|
||||
Culled Empty Block (label) main::@6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (word) bitmap_plot::plotter_x#0 = (word~) bitmap_plot::$2
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -257,55 +258,47 @@ keyboard_get_keycode::@return: scope:[keyboard_get_keycode] from keyboard_get_k
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@19
|
||||
main: scope:[main] from @19
|
||||
(byte*) SCREEN#1 ← phi( @19/(byte*) SCREEN#8 )
|
||||
(byte*) main::sc#0 ← (byte*) SCREEN#1
|
||||
(byte*) main::sc#0 ← (byte*) SCREEN#0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 main::@1/(byte*) SCREEN#2 )
|
||||
(byte*) main::sc#2 ← phi( main/(byte*) main::sc#0 main::@1/(byte*) main::sc#1 )
|
||||
*((byte*) main::sc#2) ← (byte) ' '
|
||||
(byte*) main::sc#1 ← ++ (byte*) main::sc#2
|
||||
(byte*~) main::$0 ← (byte*) SCREEN#2 + (word/signed word/dword/signed dword) $3e8
|
||||
(byte*~) main::$0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $3e8
|
||||
(bool~) main::$1 ← (byte*) main::sc#1 < (byte*~) main::$0
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main::@1
|
||||
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#2 )
|
||||
(byte*~) main::$2 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$2 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*) print_str_at::str#0 ← (const string) main::str
|
||||
(byte*) print_str_at::at#0 ← (byte*~) main::$2
|
||||
call print_str_at
|
||||
to:main::@25
|
||||
main::@25: scope:[main] from main::@13
|
||||
(byte*) SCREEN#4 ← phi( main::@13/(byte*) SCREEN#3 )
|
||||
(byte*~) main::$4 ← (byte*) SCREEN#4 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$4 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$5 ← (byte*~) main::$4 + (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte*) print_str_at::str#1 ← (const string) main::str1
|
||||
(byte*) print_str_at::at#1 ← (byte*~) main::$5
|
||||
call print_str_at
|
||||
to:main::@26
|
||||
main::@26: scope:[main] from main::@25
|
||||
(byte*) SCREEN#5 ← phi( main::@25/(byte*) SCREEN#4 )
|
||||
(byte*~) main::$7 ← (byte*) SCREEN#5 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$7 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$8 ← (byte*~) main::$7 + (byte/signed byte/word/signed word/dword/signed dword) $14
|
||||
(byte*) print_str_at::str#2 ← (const string) main::str2
|
||||
(byte*) print_str_at::at#2 ← (byte*~) main::$8
|
||||
call print_str_at
|
||||
to:main::@27
|
||||
main::@27: scope:[main] from main::@26
|
||||
(byte*) SCREEN#6 ← phi( main::@26/(byte*) SCREEN#5 )
|
||||
(byte*~) main::$10 ← (byte*) SCREEN#6 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$10 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) main::$11 ← (byte*~) main::$10 + (byte/signed byte/word/signed word/dword/signed dword) $1e
|
||||
(byte*) print_str_at::str#3 ← (const string) main::str3
|
||||
(byte*) print_str_at::at#3 ← (byte*~) main::$11
|
||||
call print_str_at
|
||||
to:main::@28
|
||||
main::@28: scope:[main] from main::@27
|
||||
(byte*) SCREEN#13 ← phi( main::@27/(byte*) SCREEN#6 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@28 main::@29
|
||||
(byte*) SCREEN#11 ← phi( main::@28/(byte*) SCREEN#13 main::@29/(byte*) SCREEN#14 )
|
||||
(byte) main::i#2 ← phi( main::@28/(byte) main::i#0 main::@29/(byte) main::i#1 )
|
||||
(byte) plot_chargen::pos#0 ← (byte) main::i#2
|
||||
(byte) plot_chargen::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
@ -313,26 +306,22 @@ main::@2: scope:[main] from main::@28 main::@29
|
||||
call plot_chargen
|
||||
to:main::@29
|
||||
main::@29: scope:[main] from main::@2
|
||||
(byte*) SCREEN#14 ← phi( main::@2/(byte*) SCREEN#11 )
|
||||
(byte) main::i#3 ← phi( main::@2/(byte) main::i#2 )
|
||||
(byte) main::i#1 ← (byte) main::i#3 + rangenext(0,3)
|
||||
(bool~) main::$14 ← (byte) main::i#1 != rangelast(0,3)
|
||||
if((bool~) main::$14) goto main::@2
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@29
|
||||
(byte*) SCREEN#39 ← phi( main::@29/(byte*) SCREEN#14 )
|
||||
(byte) main::cur_pos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::shift#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@14 main::@23
|
||||
(byte*) SCREEN#38 ← phi( main::@14/(byte*) SCREEN#39 main::@23/(byte*) SCREEN#40 )
|
||||
(byte) main::cur_pos#25 ← phi( main::@14/(byte) main::cur_pos#0 main::@23/(byte) main::cur_pos#26 )
|
||||
(byte) keyboard_key_pressed::key#0 ← (byte) KEY_F1#0
|
||||
call keyboard_key_pressed
|
||||
(byte) keyboard_key_pressed::return#2 ← (byte) keyboard_key_pressed::return#1
|
||||
to:main::@30
|
||||
main::@30: scope:[main] from main::@3
|
||||
(byte*) SCREEN#37 ← phi( main::@3/(byte*) SCREEN#38 )
|
||||
(byte) main::cur_pos#24 ← phi( main::@3/(byte) main::cur_pos#25 )
|
||||
(byte) keyboard_key_pressed::return#9 ← phi( main::@3/(byte) keyboard_key_pressed::return#2 )
|
||||
(byte~) main::$15 ← (byte) keyboard_key_pressed::return#9
|
||||
@ -341,14 +330,12 @@ main::@30: scope:[main] from main::@3
|
||||
if((bool~) main::$17) goto main::@4
|
||||
to:main::@15
|
||||
main::@4: scope:[main] from main::@15 main::@30
|
||||
(byte*) SCREEN#35 ← phi( main::@15/(byte*) SCREEN#36 main::@30/(byte*) SCREEN#37 )
|
||||
(byte) main::cur_pos#23 ← phi( main::@15/(byte) main::cur_pos#1 main::@30/(byte) main::cur_pos#24 )
|
||||
(byte) keyboard_key_pressed::key#1 ← (byte) KEY_F3#0
|
||||
call keyboard_key_pressed
|
||||
(byte) keyboard_key_pressed::return#3 ← (byte) keyboard_key_pressed::return#1
|
||||
to:main::@31
|
||||
main::@31: scope:[main] from main::@4
|
||||
(byte*) SCREEN#34 ← phi( main::@4/(byte*) SCREEN#35 )
|
||||
(byte) main::cur_pos#22 ← phi( main::@4/(byte) main::cur_pos#23 )
|
||||
(byte) keyboard_key_pressed::return#10 ← phi( main::@4/(byte) keyboard_key_pressed::return#3 )
|
||||
(byte~) main::$18 ← (byte) keyboard_key_pressed::return#10
|
||||
@ -357,18 +344,15 @@ main::@31: scope:[main] from main::@4
|
||||
if((bool~) main::$20) goto main::@5
|
||||
to:main::@16
|
||||
main::@15: scope:[main] from main::@30
|
||||
(byte*) SCREEN#36 ← phi( main::@30/(byte*) SCREEN#37 )
|
||||
(byte) main::cur_pos#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@4
|
||||
main::@5: scope:[main] from main::@16 main::@31
|
||||
(byte*) SCREEN#32 ← phi( main::@16/(byte*) SCREEN#33 main::@31/(byte*) SCREEN#34 )
|
||||
(byte) main::cur_pos#21 ← phi( main::@16/(byte) main::cur_pos#2 main::@31/(byte) main::cur_pos#22 )
|
||||
(byte) keyboard_key_pressed::key#2 ← (byte) KEY_F5#0
|
||||
call keyboard_key_pressed
|
||||
(byte) keyboard_key_pressed::return#4 ← (byte) keyboard_key_pressed::return#1
|
||||
to:main::@32
|
||||
main::@32: scope:[main] from main::@5
|
||||
(byte*) SCREEN#31 ← phi( main::@5/(byte*) SCREEN#32 )
|
||||
(byte) main::cur_pos#20 ← phi( main::@5/(byte) main::cur_pos#21 )
|
||||
(byte) keyboard_key_pressed::return#11 ← phi( main::@5/(byte) keyboard_key_pressed::return#4 )
|
||||
(byte~) main::$21 ← (byte) keyboard_key_pressed::return#11
|
||||
@ -377,18 +361,15 @@ main::@32: scope:[main] from main::@5
|
||||
if((bool~) main::$23) goto main::@6
|
||||
to:main::@17
|
||||
main::@16: scope:[main] from main::@31
|
||||
(byte*) SCREEN#33 ← phi( main::@31/(byte*) SCREEN#34 )
|
||||
(byte) main::cur_pos#2 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:main::@5
|
||||
main::@6: scope:[main] from main::@17 main::@32
|
||||
(byte*) SCREEN#29 ← phi( main::@17/(byte*) SCREEN#30 main::@32/(byte*) SCREEN#31 )
|
||||
(byte) main::cur_pos#19 ← phi( main::@17/(byte) main::cur_pos#3 main::@32/(byte) main::cur_pos#20 )
|
||||
(byte) keyboard_key_pressed::key#3 ← (byte) KEY_F7#0
|
||||
call keyboard_key_pressed
|
||||
(byte) keyboard_key_pressed::return#5 ← (byte) keyboard_key_pressed::return#1
|
||||
to:main::@33
|
||||
main::@33: scope:[main] from main::@6
|
||||
(byte*) SCREEN#28 ← phi( main::@6/(byte*) SCREEN#29 )
|
||||
(byte) main::cur_pos#18 ← phi( main::@6/(byte) main::cur_pos#19 )
|
||||
(byte) keyboard_key_pressed::return#12 ← phi( main::@6/(byte) keyboard_key_pressed::return#5 )
|
||||
(byte~) main::$24 ← (byte) keyboard_key_pressed::return#12
|
||||
@ -397,18 +378,15 @@ main::@33: scope:[main] from main::@6
|
||||
if((bool~) main::$26) goto main::@7
|
||||
to:main::@18
|
||||
main::@17: scope:[main] from main::@32
|
||||
(byte*) SCREEN#30 ← phi( main::@32/(byte*) SCREEN#31 )
|
||||
(byte) main::cur_pos#3 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
to:main::@6
|
||||
main::@7: scope:[main] from main::@18 main::@33
|
||||
(byte*) SCREEN#26 ← phi( main::@18/(byte*) SCREEN#27 main::@33/(byte*) SCREEN#28 )
|
||||
(byte) main::cur_pos#17 ← phi( main::@18/(byte) main::cur_pos#4 main::@33/(byte) main::cur_pos#18 )
|
||||
(byte) keyboard_key_pressed::key#4 ← (byte) KEY_LSHIFT#0
|
||||
call keyboard_key_pressed
|
||||
(byte) keyboard_key_pressed::return#6 ← (byte) keyboard_key_pressed::return#1
|
||||
to:main::@34
|
||||
main::@34: scope:[main] from main::@7
|
||||
(byte*) SCREEN#25 ← phi( main::@7/(byte*) SCREEN#26 )
|
||||
(byte) main::cur_pos#16 ← phi( main::@7/(byte) main::cur_pos#17 )
|
||||
(byte) keyboard_key_pressed::return#13 ← phi( main::@7/(byte) keyboard_key_pressed::return#6 )
|
||||
(byte~) main::$27 ← (byte) keyboard_key_pressed::return#13
|
||||
@ -416,27 +394,22 @@ main::@34: scope:[main] from main::@7
|
||||
if((bool~) main::$28) goto main::@8
|
||||
to:main::@19
|
||||
main::@18: scope:[main] from main::@33
|
||||
(byte*) SCREEN#27 ← phi( main::@33/(byte*) SCREEN#28 )
|
||||
(byte) main::cur_pos#4 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
to:main::@7
|
||||
main::@8: scope:[main] from main::@34
|
||||
(byte*) SCREEN#23 ← phi( main::@34/(byte*) SCREEN#25 )
|
||||
(byte) main::cur_pos#14 ← phi( main::@34/(byte) main::cur_pos#16 )
|
||||
(byte) main::shift#1 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:main::@9
|
||||
main::@19: scope:[main] from main::@34
|
||||
(byte*) SCREEN#22 ← phi( main::@34/(byte*) SCREEN#25 )
|
||||
(byte) main::cur_pos#13 ← phi( main::@34/(byte) main::cur_pos#16 )
|
||||
(byte) main::shift#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@19 main::@8
|
||||
(byte*) SCREEN#21 ← phi( main::@19/(byte*) SCREEN#22 main::@8/(byte*) SCREEN#23 )
|
||||
(byte) main::shift#10 ← phi( main::@19/(byte) main::shift#2 main::@8/(byte) main::shift#1 )
|
||||
(byte) main::cur_pos#12 ← phi( main::@19/(byte) main::cur_pos#13 main::@8/(byte) main::cur_pos#14 )
|
||||
(byte) main::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@12 main::@9
|
||||
(byte*) SCREEN#18 ← phi( main::@12/(byte*) SCREEN#20 main::@9/(byte*) SCREEN#21 )
|
||||
(byte) main::shift#7 ← phi( main::@12/(byte) main::shift#9 main::@9/(byte) main::shift#10 )
|
||||
(byte) main::cur_pos#9 ← phi( main::@12/(byte) main::cur_pos#11 main::@9/(byte) main::cur_pos#12 )
|
||||
(byte) main::ch#2 ← phi( main::@12/(byte) main::ch#1 main::@9/(byte) main::ch#0 )
|
||||
@ -446,7 +419,6 @@ main::@10: scope:[main] from main::@12 main::@9
|
||||
(byte) keyboard_get_keycode::return#2 ← (byte) keyboard_get_keycode::return#1
|
||||
to:main::@35
|
||||
main::@35: scope:[main] from main::@10
|
||||
(byte*) SCREEN#16 ← phi( main::@10/(byte*) SCREEN#18 )
|
||||
(byte) main::shift#5 ← phi( main::@10/(byte) main::shift#7 )
|
||||
(byte) main::cur_pos#7 ← phi( main::@10/(byte) main::cur_pos#9 )
|
||||
(byte) main::ch#7 ← phi( main::@10/(byte) main::ch#2 )
|
||||
@ -459,7 +431,6 @@ main::@35: scope:[main] from main::@10
|
||||
if((bool~) main::$31) goto main::@11
|
||||
to:main::@21
|
||||
main::@11: scope:[main] from main::@35 main::@36
|
||||
(byte*) SCREEN#15 ← phi( main::@35/(byte*) SCREEN#16 main::@36/(byte*) SCREEN#17 )
|
||||
(byte) main::shift#4 ← phi( main::@35/(byte) main::shift#5 main::@36/(byte) main::shift#6 )
|
||||
(byte) main::cur_pos#6 ← phi( main::@35/(byte) main::cur_pos#7 main::@36/(byte) main::cur_pos#8 )
|
||||
(byte) main::ch#5 ← phi( main::@35/(byte) main::ch#7 main::@36/(byte) main::ch#8 )
|
||||
@ -469,7 +440,6 @@ main::@11: scope:[main] from main::@35 main::@36
|
||||
if((bool~) main::$34) goto main::@12
|
||||
to:main::@22
|
||||
main::@21: scope:[main] from main::@35
|
||||
(byte*) SCREEN#19 ← phi( main::@35/(byte*) SCREEN#16 )
|
||||
(byte) main::shift#8 ← phi( main::@35/(byte) main::shift#5 )
|
||||
(byte) main::cur_pos#10 ← phi( main::@35/(byte) main::cur_pos#7 )
|
||||
(byte) main::ch#9 ← phi( main::@35/(byte) main::ch#7 )
|
||||
@ -479,7 +449,6 @@ main::@21: scope:[main] from main::@35
|
||||
(byte) keyboard_key_pressed::return#7 ← (byte) keyboard_key_pressed::return#1
|
||||
to:main::@36
|
||||
main::@36: scope:[main] from main::@21
|
||||
(byte*) SCREEN#17 ← phi( main::@21/(byte*) SCREEN#19 )
|
||||
(byte) main::shift#6 ← phi( main::@21/(byte) main::shift#8 )
|
||||
(byte) main::cur_pos#8 ← phi( main::@21/(byte) main::cur_pos#10 )
|
||||
(byte) main::ch#8 ← phi( main::@21/(byte) main::ch#9 )
|
||||
@ -488,7 +457,6 @@ main::@36: scope:[main] from main::@21
|
||||
(byte) main::pressed#1 ← (byte~) main::$32
|
||||
to:main::@11
|
||||
main::@12: scope:[main] from main::@11 main::@37
|
||||
(byte*) SCREEN#20 ← phi( main::@11/(byte*) SCREEN#15 main::@37/(byte*) SCREEN#24 )
|
||||
(byte) main::shift#9 ← phi( main::@11/(byte) main::shift#4 main::@37/(byte) main::shift#11 )
|
||||
(byte) main::cur_pos#11 ← phi( main::@11/(byte) main::cur_pos#6 main::@37/(byte) main::cur_pos#15 )
|
||||
(byte) main::ch#3 ← phi( main::@11/(byte) main::ch#5 main::@37/(byte) main::ch#6 )
|
||||
@ -497,7 +465,6 @@ main::@12: scope:[main] from main::@11 main::@37
|
||||
if((bool~) main::$36) goto main::@10
|
||||
to:main::@23
|
||||
main::@22: scope:[main] from main::@11
|
||||
(byte*) SCREEN#12 ← phi( main::@11/(byte*) SCREEN#15 )
|
||||
(byte) main::shift#3 ← phi( main::@11/(byte) main::shift#4 )
|
||||
(byte) main::ch#4 ← phi( main::@11/(byte) main::ch#5 )
|
||||
(byte) main::cur_pos#5 ← phi( main::@11/(byte) main::cur_pos#6 )
|
||||
@ -507,13 +474,11 @@ main::@22: scope:[main] from main::@11
|
||||
call plot_chargen
|
||||
to:main::@37
|
||||
main::@37: scope:[main] from main::@22
|
||||
(byte*) SCREEN#24 ← phi( main::@22/(byte*) SCREEN#12 )
|
||||
(byte) main::shift#11 ← phi( main::@22/(byte) main::shift#3 )
|
||||
(byte) main::cur_pos#15 ← phi( main::@22/(byte) main::cur_pos#5 )
|
||||
(byte) main::ch#6 ← phi( main::@22/(byte) main::ch#4 )
|
||||
to:main::@12
|
||||
main::@23: scope:[main] from main::@12
|
||||
(byte*) SCREEN#40 ← phi( main::@12/(byte*) SCREEN#20 )
|
||||
(byte) main::cur_pos#26 ← phi( main::@12/(byte) main::cur_pos#11 )
|
||||
if(true) goto main::@3
|
||||
to:main::@return
|
||||
@ -542,7 +507,6 @@ print_str_at::@return: scope:[print_str_at] from print_str_at::@1
|
||||
to:@return
|
||||
plot_chargen: scope:[plot_chargen] from main::@2 main::@22
|
||||
(byte) plot_chargen::pos#3 ← phi( main::@2/(byte) plot_chargen::pos#0 main::@22/(byte) plot_chargen::pos#1 )
|
||||
(byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#11 main::@22/(byte*) SCREEN#12 )
|
||||
(byte) plot_chargen::shift#2 ← phi( main::@2/(byte) plot_chargen::shift#0 main::@22/(byte) plot_chargen::shift#1 )
|
||||
(byte) plot_chargen::ch#2 ← phi( main::@2/(byte) plot_chargen::ch#0 main::@22/(byte) plot_chargen::ch#1 )
|
||||
asm { sei }
|
||||
@ -557,9 +521,8 @@ plot_chargen: scope:[plot_chargen] from main::@2 main::@22
|
||||
plot_chargen::@1: scope:[plot_chargen] from plot_chargen plot_chargen::@5
|
||||
(byte*) plot_chargen::chargen#6 ← phi( plot_chargen/(byte*) plot_chargen::chargen#0 plot_chargen::@5/(byte*) plot_chargen::chargen#1 )
|
||||
(byte) plot_chargen::pos#2 ← phi( plot_chargen/(byte) plot_chargen::pos#3 plot_chargen::@5/(byte) plot_chargen::pos#4 )
|
||||
(byte*) SCREEN#7 ← phi( plot_chargen/(byte*) SCREEN#9 plot_chargen::@5/(byte*) SCREEN#10 )
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*~) plot_chargen::$6 ← (byte*) SCREEN#7 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte*~) plot_chargen::$6 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte*~) plot_chargen::$7 ← (byte*~) plot_chargen::$6 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) mul8u::a#1 ← (byte) plot_chargen::pos#2
|
||||
(byte) mul8u::b#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
@ -576,7 +539,6 @@ plot_chargen::@9: scope:[plot_chargen] from plot_chargen::@1
|
||||
to:plot_chargen::@2
|
||||
plot_chargen::@5: scope:[plot_chargen] from plot_chargen
|
||||
(byte) plot_chargen::pos#4 ← phi( plot_chargen/(byte) plot_chargen::pos#3 )
|
||||
(byte*) SCREEN#10 ← phi( plot_chargen/(byte*) SCREEN#9 )
|
||||
(byte*) plot_chargen::chargen#2 ← phi( plot_chargen/(byte*) plot_chargen::chargen#0 )
|
||||
(byte*~) plot_chargen::$5 ← (byte*) plot_chargen::chargen#2 + (word/signed word/dword/signed dword) $800
|
||||
(byte*) plot_chargen::chargen#1 ← (byte*~) plot_chargen::$5
|
||||
@ -641,7 +603,6 @@ plot_chargen::@return: scope:[plot_chargen] from plot_chargen::@8
|
||||
return
|
||||
to:@return
|
||||
@19: scope:[] from @16
|
||||
(byte*) SCREEN#8 ← phi( @16/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@20
|
||||
@20: scope:[] from @19
|
||||
@ -907,46 +868,6 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#11
|
||||
(byte*) SCREEN#12
|
||||
(byte*) SCREEN#13
|
||||
(byte*) SCREEN#14
|
||||
(byte*) SCREEN#15
|
||||
(byte*) SCREEN#16
|
||||
(byte*) SCREEN#17
|
||||
(byte*) SCREEN#18
|
||||
(byte*) SCREEN#19
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#20
|
||||
(byte*) SCREEN#21
|
||||
(byte*) SCREEN#22
|
||||
(byte*) SCREEN#23
|
||||
(byte*) SCREEN#24
|
||||
(byte*) SCREEN#25
|
||||
(byte*) SCREEN#26
|
||||
(byte*) SCREEN#27
|
||||
(byte*) SCREEN#28
|
||||
(byte*) SCREEN#29
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#30
|
||||
(byte*) SCREEN#31
|
||||
(byte*) SCREEN#32
|
||||
(byte*) SCREEN#33
|
||||
(byte*) SCREEN#34
|
||||
(byte*) SCREEN#35
|
||||
(byte*) SCREEN#36
|
||||
(byte*) SCREEN#37
|
||||
(byte*) SCREEN#38
|
||||
(byte*) SCREEN#39
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#40
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
@ -1370,14 +1291,14 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @20
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [88] (bool~) mul8u::$3 ← (byte~) mul8u::$1 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [87] (bool~) mul8u::$2 ← (byte~) mul8u::$1 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [261] (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [260] (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [270] (bool~) main::$20 ← (byte~) main::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [269] (bool~) main::$19 ← (byte~) main::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [281] (bool~) main::$23 ← (byte~) main::$21 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [280] (bool~) main::$22 ← (byte~) main::$21 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [292] (bool~) main::$26 ← (byte~) main::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [291] (bool~) main::$25 ← (byte~) main::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [321] (bool~) main::$31 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) $3f from [320] (bool~) main::$30 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
Inversing boolean not [325] (bool~) main::$34 ← (byte) main::pressed#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [324] (bool~) main::$33 ← (byte) main::pressed#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [363] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [362] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [388] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [387] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [254] (bool~) main::$17 ← (byte~) main::$15 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [253] (bool~) main::$16 ← (byte~) main::$15 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [263] (bool~) main::$20 ← (byte~) main::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [262] (bool~) main::$19 ← (byte~) main::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [273] (bool~) main::$23 ← (byte~) main::$21 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [272] (bool~) main::$22 ← (byte~) main::$21 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [283] (bool~) main::$26 ← (byte~) main::$24 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [282] (bool~) main::$25 ← (byte~) main::$24 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [310] (bool~) main::$31 ← (byte) main::key#0 == (byte/signed byte/word/signed word/dword/signed dword) $3f from [309] (bool~) main::$30 ← (byte) main::key#0 != (byte/signed byte/word/signed word/dword/signed dword) $3f
|
||||
Inversing boolean not [314] (bool~) main::$34 ← (byte) main::pressed#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [313] (bool~) main::$33 ← (byte) main::pressed#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [352] (bool~) plot_chargen::$4 ← (byte) plot_chargen::shift#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [351] (bool~) plot_chargen::$3 ← (byte) plot_chargen::shift#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [377] (bool~) plot_chargen::$12 ← (byte~) plot_chargen::$10 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [376] (bool~) plot_chargen::$11 ← (byte~) plot_chargen::$10 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) mul8u::a#2 = (byte) mul8u::a#3 (byte) mul8u::a#6
|
||||
Alias (word) mul8u::mb#3 = (word) mul8u::mb#4 (word) mul8u::mb#5
|
||||
@ -1392,50 +1313,39 @@ Alias (byte) keyboard_matrix_read::return#2 = (byte) keyboard_matrix_read::retur
|
||||
Alias (byte) keyboard_key_pressed::return#0 = (byte~) keyboard_key_pressed::$3 (byte) keyboard_key_pressed::return#8 (byte) keyboard_key_pressed::return#1
|
||||
Alias (byte) keyboard_get_keycode::return#0 = (byte) keyboard_get_keycode::return#3 (byte) keyboard_get_keycode::return#1
|
||||
Alias (byte) KEY_MODIFIER_SHIFT#0 = (byte~) $0
|
||||
Alias (byte*) SCREEN#13 = (byte*) SCREEN#3 (byte*) SCREEN#2 (byte*) SCREEN#4 (byte*) SCREEN#5 (byte*) SCREEN#6
|
||||
Alias (byte*) print_str_at::at#0 = (byte*~) main::$2
|
||||
Alias (byte*) print_str_at::at#1 = (byte*~) main::$5
|
||||
Alias (byte*) print_str_at::at#2 = (byte*~) main::$8
|
||||
Alias (byte*) print_str_at::at#3 = (byte*~) main::$11
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias (byte*) SCREEN#11 = (byte*) SCREEN#14 (byte*) SCREEN#39
|
||||
Alias (byte) keyboard_key_pressed::return#2 = (byte) keyboard_key_pressed::return#9
|
||||
Alias (byte) main::cur_pos#24 = (byte) main::cur_pos#25
|
||||
Alias (byte*) SCREEN#36 = (byte*) SCREEN#37 (byte*) SCREEN#38
|
||||
Alias (byte) keyboard_key_pressed::return#10 = (byte) keyboard_key_pressed::return#3
|
||||
Alias (byte) main::cur_pos#22 = (byte) main::cur_pos#23
|
||||
Alias (byte*) SCREEN#33 = (byte*) SCREEN#34 (byte*) SCREEN#35
|
||||
Alias (byte) keyboard_key_pressed::return#11 = (byte) keyboard_key_pressed::return#4
|
||||
Alias (byte) main::cur_pos#20 = (byte) main::cur_pos#21
|
||||
Alias (byte*) SCREEN#30 = (byte*) SCREEN#31 (byte*) SCREEN#32
|
||||
Alias (byte) keyboard_key_pressed::return#12 = (byte) keyboard_key_pressed::return#5
|
||||
Alias (byte) main::cur_pos#18 = (byte) main::cur_pos#19
|
||||
Alias (byte*) SCREEN#27 = (byte*) SCREEN#28 (byte*) SCREEN#29
|
||||
Alias (byte) keyboard_key_pressed::return#13 = (byte) keyboard_key_pressed::return#6
|
||||
Alias (byte) main::cur_pos#13 = (byte) main::cur_pos#16 (byte) main::cur_pos#17 (byte) main::cur_pos#14
|
||||
Alias (byte*) SCREEN#22 = (byte*) SCREEN#25 (byte*) SCREEN#26 (byte*) SCREEN#23
|
||||
Alias (byte) keyboard_get_keycode::return#2 = (byte) keyboard_get_keycode::return#4
|
||||
Alias (byte) main::pressed#0 = (byte) main::pressed#3
|
||||
Alias (byte) main::ch#2 = (byte) main::ch#7 (byte) main::ch#9 (byte) main::ch#8
|
||||
Alias (byte) main::cur_pos#10 = (byte) main::cur_pos#7 (byte) main::cur_pos#9 (byte) main::cur_pos#8
|
||||
Alias (byte) main::shift#5 = (byte) main::shift#7 (byte) main::shift#8 (byte) main::shift#6
|
||||
Alias (byte*) SCREEN#16 = (byte*) SCREEN#18 (byte*) SCREEN#19 (byte*) SCREEN#17
|
||||
Alias (byte) main::key#0 = (byte~) main::$29 (byte) main::key#1
|
||||
Alias (byte) keyboard_key_pressed::return#14 = (byte) keyboard_key_pressed::return#7
|
||||
Alias (byte) main::pressed#1 = (byte~) main::$32
|
||||
Alias (byte) main::cur_pos#15 = (byte) main::cur_pos#5 (byte) main::cur_pos#6
|
||||
Alias (byte) main::ch#4 = (byte) main::ch#5 (byte) main::ch#6
|
||||
Alias (byte) main::shift#11 = (byte) main::shift#3 (byte) main::shift#4
|
||||
Alias (byte*) SCREEN#12 = (byte*) SCREEN#15 (byte*) SCREEN#24
|
||||
Alias (byte) main::cur_pos#11 = (byte) main::cur_pos#26
|
||||
Alias (byte*) SCREEN#20 = (byte*) SCREEN#40
|
||||
Alias (byte*) print_str_at::str#5 = (byte*) print_str_at::str#6
|
||||
Alias (byte*) print_str_at::at#5 = (byte*) print_str_at::at#6
|
||||
Alias (byte*) plot_chargen::chargen#0 = (byte*~) plot_chargen::$2 (byte*) plot_chargen::chargen#2
|
||||
Alias (word) mul8u::return#2 = (word) mul8u::return#4
|
||||
Alias (byte*) plot_chargen::chargen#5 = (byte*) plot_chargen::chargen#6
|
||||
Alias (byte*) plot_chargen::sc#0 = (byte*~) plot_chargen::$9
|
||||
Alias (byte*) SCREEN#10 = (byte*) SCREEN#9
|
||||
Alias (byte) plot_chargen::pos#3 = (byte) plot_chargen::pos#4
|
||||
Alias (byte*) plot_chargen::chargen#1 = (byte*~) plot_chargen::$5
|
||||
Alias (byte) plot_chargen::bits#1 = (byte~) plot_chargen::$13
|
||||
@ -1448,17 +1358,13 @@ Alias (byte*) plot_chargen::sc#1 = (byte*) plot_chargen::sc#4
|
||||
Alias (byte) plot_chargen::y#3 = (byte) plot_chargen::y#4
|
||||
Alias (byte*) plot_chargen::chargen#4 = (byte*) plot_chargen::chargen#7
|
||||
Alias (byte*) plot_chargen::sc#2 = (byte*~) plot_chargen::$15
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#8
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) mul8u::a#2 = (byte) mul8u::a#4
|
||||
Alias (word) mul8u::mb#2 = (word) mul8u::mb#3
|
||||
Alias (byte*) SCREEN#21 = (byte*) SCREEN#33 (byte*) SCREEN#36 (byte*) SCREEN#30 (byte*) SCREEN#27 (byte*) SCREEN#22
|
||||
Alias (byte) main::cur_pos#12 = (byte) main::cur_pos#13
|
||||
Alias (byte) main::ch#2 = (byte) main::ch#4 (byte) main::ch#3
|
||||
Alias (byte) main::cur_pos#10 = (byte) main::cur_pos#15 (byte) main::cur_pos#11
|
||||
Alias (byte) main::shift#11 = (byte) main::shift#5 (byte) main::shift#9
|
||||
Alias (byte*) SCREEN#12 = (byte*) SCREEN#16 (byte*) SCREEN#20
|
||||
Alias (byte*) SCREEN#10 = (byte*) SCREEN#7
|
||||
Alias (byte) plot_chargen::pos#2 = (byte) plot_chargen::pos#3
|
||||
Alias (byte*) plot_chargen::sc#3 = (byte*) plot_chargen::sc#5
|
||||
Alias (byte) plot_chargen::bits#2 = (byte) plot_chargen::bits#3
|
||||
@ -1466,11 +1372,8 @@ Alias (byte) plot_chargen::x#2 = (byte) plot_chargen::x#3
|
||||
Alias (byte) plot_chargen::y#3 = (byte) plot_chargen::y#5
|
||||
Alias (byte*) plot_chargen::chargen#4 = (byte*) plot_chargen::chargen#8
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#13
|
||||
Self Phi Eliminated (byte*) SCREEN#11
|
||||
Self Phi Eliminated (byte) main::cur_pos#10
|
||||
Self Phi Eliminated (byte) main::shift#11
|
||||
Self Phi Eliminated (byte*) SCREEN#12
|
||||
Self Phi Eliminated (byte) plot_chargen::y#3
|
||||
Self Phi Eliminated (byte*) plot_chargen::chargen#4
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
@ -1478,32 +1381,28 @@ Redundant Phi (byte) mul8u::b#1 (byte) mul8u::b#0
|
||||
Redundant Phi (byte) mul8u::a#5 (byte) mul8u::a#1
|
||||
Redundant Phi (byte) keyboard_matrix_read::rowid#1 (byte) keyboard_matrix_read::rowid#0
|
||||
Redundant Phi (byte) keyboard_get_keycode::ch#1 (byte) keyboard_get_keycode::ch#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#13 (byte*) SCREEN#1
|
||||
Redundant Phi (byte*) SCREEN#11 (byte*) SCREEN#13
|
||||
Redundant Phi (byte) main::cur_pos#10 (byte) main::cur_pos#12
|
||||
Redundant Phi (byte) main::shift#11 (byte) main::shift#10
|
||||
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#21
|
||||
Redundant Phi (byte) plot_chargen::y#3 (byte) plot_chargen::y#2
|
||||
Redundant Phi (byte*) plot_chargen::chargen#4 (byte*) plot_chargen::chargen#3
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mul8u::$0 [84] if((byte) mul8u::a#2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
Simple Condition (bool~) mul8u::$3 [89] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
Simple Condition (bool~) main::$1 [216] if((byte*) main::sc#1<(byte*~) main::$0) goto main::@1
|
||||
Simple Condition (bool~) main::$14 [250] if((byte) main::i#1!=rangelast(0,3)) goto main::@2
|
||||
Simple Condition (bool~) main::$17 [262] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@4
|
||||
Simple Condition (bool~) main::$20 [271] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5
|
||||
Simple Condition (bool~) main::$23 [282] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6
|
||||
Simple Condition (bool~) main::$26 [293] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7
|
||||
Simple Condition (bool~) main::$28 [303] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8
|
||||
Simple Condition (bool~) main::$31 [322] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) $3f) goto main::@11
|
||||
Simple Condition (bool~) main::$34 [326] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12
|
||||
Simple Condition (bool~) main::$36 [337] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@10
|
||||
Simple Condition (bool~) print_str_at::$0 [350] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2
|
||||
Simple Condition (bool~) plot_chargen::$4 [364] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1
|
||||
Simple Condition (bool~) plot_chargen::$12 [389] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4
|
||||
Simple Condition (bool~) plot_chargen::$14 [397] if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@3
|
||||
Simple Condition (bool~) plot_chargen::$16 [405] if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@2
|
||||
Simple Condition (bool~) main::$1 [215] if((byte*) main::sc#1<(byte*~) main::$0) goto main::@1
|
||||
Simple Condition (bool~) main::$14 [244] if((byte) main::i#1!=rangelast(0,3)) goto main::@2
|
||||
Simple Condition (bool~) main::$17 [255] if((byte~) main::$15==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@4
|
||||
Simple Condition (bool~) main::$20 [264] if((byte~) main::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@5
|
||||
Simple Condition (bool~) main::$23 [274] if((byte~) main::$21==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@6
|
||||
Simple Condition (bool~) main::$26 [284] if((byte~) main::$24==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@7
|
||||
Simple Condition (bool~) main::$28 [293] if((byte~) main::$27!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@8
|
||||
Simple Condition (bool~) main::$31 [311] if((byte) main::key#0==(byte/signed byte/word/signed word/dword/signed dword) $3f) goto main::@11
|
||||
Simple Condition (bool~) main::$34 [315] if((byte) main::pressed#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@12
|
||||
Simple Condition (bool~) main::$36 [326] if((byte) main::ch#1!=rangelast(0,$3f)) goto main::@10
|
||||
Simple Condition (bool~) print_str_at::$0 [339] if(*((byte*) print_str_at::str#5)!=(byte) '@') goto print_str_at::@2
|
||||
Simple Condition (bool~) plot_chargen::$4 [353] if((byte) plot_chargen::shift#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@1
|
||||
Simple Condition (bool~) plot_chargen::$12 [378] if((byte~) plot_chargen::$10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto plot_chargen::@4
|
||||
Simple Condition (bool~) plot_chargen::$14 [386] if((byte) plot_chargen::x#1!=rangelast(0,7)) goto plot_chargen::@3
|
||||
Simple Condition (bool~) plot_chargen::$16 [394] if((byte) plot_chargen::y#1!=rangelast(0,7)) goto plot_chargen::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
@ -1697,13 +1596,13 @@ Constant (const byte) keyboard_key_pressed::key#1 = KEY_F3#0
|
||||
Constant (const byte) keyboard_key_pressed::key#2 = KEY_F5#0
|
||||
Constant (const byte) keyboard_key_pressed::key#3 = KEY_F7#0
|
||||
Constant (const byte) keyboard_key_pressed::key#4 = KEY_LSHIFT#0
|
||||
Constant (const byte*) plot_chargen::$6 = SCREEN#0+$28
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) print_str_at::at#1 = main::$4+$a
|
||||
Constant (const byte*) print_str_at::at#2 = main::$7+$14
|
||||
Constant (const byte*) print_str_at::at#3 = main::$10+$1e
|
||||
Constant (const byte*) plot_chargen::$7 = plot_chargen::$6+1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated constant in assignment plot_chargen::$7
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
if() condition always true - replacing block destination [80] if(true) goto main::@3
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Successful SSA optimization PassNEliminateUnusedVars
|
||||
@ -1728,18 +1627,10 @@ Culled Empty Block (label) main::@8
|
||||
Culled Empty Block (label) main::@37
|
||||
Culled Empty Block (label) main::@23
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (byte*) SCREEN#21
|
||||
Self Phi Eliminated (byte*) plot_chargen::chargen#3
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#21 (const byte*) SCREEN#0
|
||||
Redundant Phi (byte*) plot_chargen::chargen#3 (byte*) plot_chargen::chargen#5
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#10 (const byte*) SCREEN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) plot_chargen::$6 = SCREEN#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) plot_chargen::$7 = plot_chargen::$6+$28+1
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining constant with var siblings (const word) mul8u::res#0
|
||||
Inlining constant with var siblings (const word) mul8u::mb#0
|
||||
Inlining constant with var siblings (const byte) keyboard_key_pressed::key#0
|
||||
@ -1787,7 +1678,7 @@ Constant inlined main::$10 = (const byte*) SCREEN#0+(byte/signed byte/word/signe
|
||||
Constant inlined main::shift#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined plot_chargen::$7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined plot_chargen::$6 = (const byte*) SCREEN#0
|
||||
Constant inlined plot_chargen::$6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined plot_chargen::shift#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined main::ch#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined keyboard_key_pressed::key#0 = (const byte) KEY_F1#0
|
||||
|
@ -1,5 +1,11 @@
|
||||
Resolved forward reference mulf_sqr1 to (byte*) mulf_sqr1
|
||||
Resolved forward reference mulf_sqr2 to (byte*) mulf_sqr2
|
||||
Identified constant variable (byte) init_screen::WHITE
|
||||
Identified constant variable (signed byte*) ap
|
||||
Identified constant variable (signed byte*) bp
|
||||
Identified constant variable (signed byte*) cp
|
||||
Identified constant variable (byte*) mulf_sqr1
|
||||
Identified constant variable (byte*) mulf_sqr2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -123,22 +129,12 @@ print_cls::@return: scope:[print_cls] from print_cls::@2
|
||||
(signed byte[]) vals#0 ← { (signed byte/signed word/signed dword~) $0, (signed byte/signed word/signed dword~) $1, (signed byte/signed word/signed dword~) $2, (signed byte/signed word/signed dword~) $3, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) $10, (byte/signed byte/word/signed word/dword/signed dword) $20, (byte/signed byte/word/signed word/dword/signed dword) $40, (byte/signed byte/word/signed word/dword/signed dword) $5f }
|
||||
to:@21
|
||||
main: scope:[main] from @22
|
||||
(signed byte*) cp#12 ← phi( @22/(signed byte*) cp#13 )
|
||||
(byte*) mulf_sqr2#12 ← phi( @22/(byte*) mulf_sqr2#0 )
|
||||
(byte*) mulf_sqr1#12 ← phi( @22/(byte*) mulf_sqr1#0 )
|
||||
(signed byte*) bp#12 ← phi( @22/(signed byte*) bp#13 )
|
||||
(signed byte*) ap#12 ← phi( @22/(signed byte*) ap#13 )
|
||||
(byte*) print_screen#5 ← phi( @22/(byte*) print_screen#6 )
|
||||
(byte*) print_char_cursor#14 ← phi( @22/(byte*) print_char_cursor#18 )
|
||||
(byte*) print_line_cursor#14 ← phi( @22/(byte*) print_line_cursor#18 )
|
||||
call init_screen
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
(signed byte*) cp#11 ← phi( main/(signed byte*) cp#12 )
|
||||
(byte*) mulf_sqr2#11 ← phi( main/(byte*) mulf_sqr2#12 )
|
||||
(byte*) mulf_sqr1#11 ← phi( main/(byte*) mulf_sqr1#12 )
|
||||
(signed byte*) bp#11 ← phi( main/(signed byte*) bp#12 )
|
||||
(signed byte*) ap#11 ← phi( main/(signed byte*) ap#12 )
|
||||
(byte*) print_char_cursor#9 ← phi( main/(byte*) print_char_cursor#6 )
|
||||
(byte*) print_line_cursor#9 ← phi( main/(byte*) print_line_cursor#6 )
|
||||
(byte*) print_line_cursor#3 ← (byte*) print_line_cursor#9
|
||||
@ -151,11 +147,6 @@ main::@7: scope:[main] from main
|
||||
main::@1: scope:[main] from main::@7 main::@8
|
||||
(byte*) print_char_cursor#31 ← phi( main::@7/(byte*) print_char_cursor#3 main::@8/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#31 ← phi( main::@7/(byte*) print_line_cursor#3 main::@8/(byte*) print_line_cursor#30 )
|
||||
(signed byte*) cp#10 ← phi( main::@7/(signed byte*) cp#11 main::@8/(signed byte*) cp#9 )
|
||||
(byte*) mulf_sqr2#10 ← phi( main::@7/(byte*) mulf_sqr2#11 main::@8/(byte*) mulf_sqr2#9 )
|
||||
(byte*) mulf_sqr1#10 ← phi( main::@7/(byte*) mulf_sqr1#11 main::@8/(byte*) mulf_sqr1#9 )
|
||||
(signed byte*) bp#10 ← phi( main::@7/(signed byte*) bp#11 main::@8/(signed byte*) bp#9 )
|
||||
(signed byte*) ap#10 ← phi( main::@7/(signed byte*) ap#11 main::@8/(signed byte*) ap#9 )
|
||||
(byte*) main::at_line#7 ← phi( main::@7/(byte*) main::at_line#0 main::@8/(byte*) main::at_line#5 )
|
||||
(byte*) main::at#4 ← phi( main::@7/(byte*) main::at#0 main::@8/(byte*) main::at#1 )
|
||||
(byte) main::k#2 ← phi( main::@7/(byte) main::k#0 main::@8/(byte) main::k#1 )
|
||||
@ -166,11 +157,6 @@ main::@1: scope:[main] from main::@7 main::@8
|
||||
main::@8: scope:[main] from main::@1
|
||||
(byte*) print_char_cursor#30 ← phi( main::@1/(byte*) print_char_cursor#31 )
|
||||
(byte*) print_line_cursor#30 ← phi( main::@1/(byte*) print_line_cursor#31 )
|
||||
(signed byte*) cp#9 ← phi( main::@1/(signed byte*) cp#10 )
|
||||
(byte*) mulf_sqr2#9 ← phi( main::@1/(byte*) mulf_sqr2#10 )
|
||||
(byte*) mulf_sqr1#9 ← phi( main::@1/(byte*) mulf_sqr1#10 )
|
||||
(signed byte*) bp#9 ← phi( main::@1/(signed byte*) bp#10 )
|
||||
(signed byte*) ap#9 ← phi( main::@1/(signed byte*) ap#10 )
|
||||
(byte*) main::at_line#5 ← phi( main::@1/(byte*) main::at_line#7 )
|
||||
(byte) main::k#3 ← phi( main::@1/(byte) main::k#2 )
|
||||
(byte*) main::at#5 ← phi( main::@1/(byte*) main::at#4 )
|
||||
@ -182,22 +168,12 @@ main::@8: scope:[main] from main::@1
|
||||
main::@4: scope:[main] from main::@8
|
||||
(byte*) print_char_cursor#29 ← phi( main::@8/(byte*) print_char_cursor#30 )
|
||||
(byte*) print_line_cursor#29 ← phi( main::@8/(byte*) print_line_cursor#30 )
|
||||
(signed byte*) cp#7 ← phi( main::@8/(signed byte*) cp#9 )
|
||||
(byte*) mulf_sqr2#7 ← phi( main::@8/(byte*) mulf_sqr2#9 )
|
||||
(byte*) mulf_sqr1#7 ← phi( main::@8/(byte*) mulf_sqr1#9 )
|
||||
(signed byte*) bp#7 ← phi( main::@8/(signed byte*) bp#9 )
|
||||
(signed byte*) ap#7 ← phi( main::@8/(signed byte*) ap#9 )
|
||||
(byte*) main::at_line#3 ← phi( main::@8/(byte*) main::at_line#5 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@4 main::@5
|
||||
(byte*) print_char_cursor#28 ← phi( main::@4/(byte*) print_char_cursor#29 main::@5/(byte*) print_char_cursor#15 )
|
||||
(byte*) print_line_cursor#28 ← phi( main::@4/(byte*) print_line_cursor#29 main::@5/(byte*) print_line_cursor#15 )
|
||||
(signed byte*) cp#5 ← phi( main::@4/(signed byte*) cp#7 main::@5/(signed byte*) cp#8 )
|
||||
(byte*) mulf_sqr2#5 ← phi( main::@4/(byte*) mulf_sqr2#7 main::@5/(byte*) mulf_sqr2#8 )
|
||||
(byte*) mulf_sqr1#5 ← phi( main::@4/(byte*) mulf_sqr1#7 main::@5/(byte*) mulf_sqr1#8 )
|
||||
(signed byte*) bp#5 ← phi( main::@4/(signed byte*) bp#7 main::@5/(signed byte*) bp#8 )
|
||||
(signed byte*) ap#5 ← phi( main::@4/(signed byte*) ap#7 main::@5/(signed byte*) ap#8 )
|
||||
(byte) main::i#2 ← phi( main::@4/(byte) main::i#0 main::@5/(byte) main::i#1 )
|
||||
(byte*) main::at_line#2 ← phi( main::@4/(byte*) main::at_line#3 main::@5/(byte*) main::at_line#4 )
|
||||
(byte*) main::at_line#1 ← (byte*) main::at_line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
@ -210,11 +186,6 @@ main::@9: scope:[main] from main::@2
|
||||
(byte*) print_char_cursor#27 ← phi( main::@2/(byte*) print_char_cursor#28 )
|
||||
(byte*) print_line_cursor#27 ← phi( main::@2/(byte*) print_line_cursor#28 )
|
||||
(byte*) main::at_line#10 ← phi( main::@2/(byte*) main::at_line#1 )
|
||||
(signed byte*) cp#4 ← phi( main::@2/(signed byte*) cp#5 )
|
||||
(byte*) mulf_sqr2#4 ← phi( main::@2/(byte*) mulf_sqr2#5 )
|
||||
(byte*) mulf_sqr1#4 ← phi( main::@2/(byte*) mulf_sqr1#5 )
|
||||
(signed byte*) bp#4 ← phi( main::@2/(signed byte*) bp#5 )
|
||||
(signed byte*) ap#4 ← phi( main::@2/(signed byte*) ap#5 )
|
||||
(byte) main::i#6 ← phi( main::@2/(byte) main::i#2 )
|
||||
(byte*) main::at#9 ← phi( main::@2/(byte*) main::at#2 )
|
||||
(byte) main::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -223,11 +194,6 @@ main::@3: scope:[main] from main::@11 main::@9
|
||||
(byte*) print_char_cursor#26 ← phi( main::@11/(byte*) print_char_cursor#19 main::@9/(byte*) print_char_cursor#27 )
|
||||
(byte*) print_line_cursor#26 ← phi( main::@11/(byte*) print_line_cursor#19 main::@9/(byte*) print_line_cursor#27 )
|
||||
(byte*) main::at_line#9 ← phi( main::@11/(byte*) main::at_line#6 main::@9/(byte*) main::at_line#10 )
|
||||
(signed byte*) cp#2 ← phi( main::@11/(signed byte*) cp#3 main::@9/(signed byte*) cp#4 )
|
||||
(byte*) mulf_sqr2#2 ← phi( main::@11/(byte*) mulf_sqr2#3 main::@9/(byte*) mulf_sqr2#4 )
|
||||
(byte*) mulf_sqr1#2 ← phi( main::@11/(byte*) mulf_sqr1#3 main::@9/(byte*) mulf_sqr1#4 )
|
||||
(signed byte*) bp#2 ← phi( main::@11/(signed byte*) bp#3 main::@9/(signed byte*) bp#4 )
|
||||
(signed byte*) ap#2 ← phi( main::@11/(signed byte*) ap#3 main::@9/(signed byte*) ap#4 )
|
||||
(byte) main::j#2 ← phi( main::@11/(byte) main::j#1 main::@9/(byte) main::j#0 )
|
||||
(byte) main::i#3 ← phi( main::@11/(byte) main::i#5 main::@9/(byte) main::i#6 )
|
||||
(byte*) main::at#6 ← phi( main::@11/(byte*) main::at#8 main::@9/(byte*) main::at#9 )
|
||||
@ -241,11 +207,6 @@ main::@10: scope:[main] from main::@3
|
||||
(byte*) print_char_cursor#22 ← phi( main::@3/(byte*) print_char_cursor#26 )
|
||||
(byte*) print_line_cursor#22 ← phi( main::@3/(byte*) print_line_cursor#26 )
|
||||
(byte*) main::at_line#8 ← phi( main::@3/(byte*) main::at_line#9 )
|
||||
(signed byte*) cp#6 ← phi( main::@3/(signed byte*) cp#2 )
|
||||
(byte*) mulf_sqr2#6 ← phi( main::@3/(byte*) mulf_sqr2#2 )
|
||||
(byte*) mulf_sqr1#6 ← phi( main::@3/(byte*) mulf_sqr1#2 )
|
||||
(signed byte*) bp#6 ← phi( main::@3/(signed byte*) bp#2 )
|
||||
(signed byte*) ap#6 ← phi( main::@3/(signed byte*) ap#2 )
|
||||
(byte) main::i#7 ← phi( main::@3/(byte) main::i#3 )
|
||||
(byte) main::j#4 ← phi( main::@3/(byte) main::j#2 )
|
||||
(byte*) main::at#7 ← phi( main::@3/(byte*) main::at#3 )
|
||||
@ -260,11 +221,6 @@ main::@11: scope:[main] from main::@10
|
||||
(byte*) print_char_cursor#19 ← phi( main::@10/(byte*) print_char_cursor#22 )
|
||||
(byte*) print_line_cursor#19 ← phi( main::@10/(byte*) print_line_cursor#22 )
|
||||
(byte*) main::at_line#6 ← phi( main::@10/(byte*) main::at_line#8 )
|
||||
(signed byte*) cp#3 ← phi( main::@10/(signed byte*) cp#6 )
|
||||
(byte*) mulf_sqr2#3 ← phi( main::@10/(byte*) mulf_sqr2#6 )
|
||||
(byte*) mulf_sqr1#3 ← phi( main::@10/(byte*) mulf_sqr1#6 )
|
||||
(signed byte*) bp#3 ← phi( main::@10/(signed byte*) bp#6 )
|
||||
(signed byte*) ap#3 ← phi( main::@10/(signed byte*) ap#6 )
|
||||
(byte) main::i#5 ← phi( main::@10/(byte) main::i#7 )
|
||||
(byte*) main::at#8 ← phi( main::@10/(byte*) main::at#7 )
|
||||
(byte) main::j#3 ← phi( main::@10/(byte) main::j#4 )
|
||||
@ -273,11 +229,6 @@ main::@11: scope:[main] from main::@10
|
||||
if((bool~) main::$7) goto main::@3
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@11
|
||||
(signed byte*) cp#8 ← phi( main::@11/(signed byte*) cp#3 )
|
||||
(byte*) mulf_sqr2#8 ← phi( main::@11/(byte*) mulf_sqr2#3 )
|
||||
(byte*) mulf_sqr1#8 ← phi( main::@11/(byte*) mulf_sqr1#3 )
|
||||
(signed byte*) bp#8 ← phi( main::@11/(signed byte*) bp#3 )
|
||||
(signed byte*) ap#8 ← phi( main::@11/(signed byte*) ap#3 )
|
||||
(byte*) print_char_cursor#15 ← phi( main::@11/(byte*) print_char_cursor#19 )
|
||||
(byte*) print_line_cursor#15 ← phi( main::@11/(byte*) print_line_cursor#19 )
|
||||
(byte*) main::at_line#4 ← phi( main::@11/(byte*) main::at_line#6 )
|
||||
@ -313,8 +264,7 @@ init_screen::@1: scope:[init_screen] from init_screen::@1 init_screen::@5
|
||||
(byte*) print_line_cursor#23 ← phi( init_screen::@1/(byte*) print_line_cursor#23 init_screen::@5/(byte*) print_line_cursor#5 )
|
||||
(byte) init_screen::l#2 ← phi( init_screen::@1/(byte) init_screen::l#1 init_screen::@5/(byte) init_screen::l#0 )
|
||||
(byte*) init_screen::COLS#2 ← phi( init_screen::@1/(byte*) init_screen::COLS#2 init_screen::@5/(byte*) init_screen::COLS#0 )
|
||||
(byte) init_screen::WHITE#1 ← phi( init_screen::@1/(byte) init_screen::WHITE#1 init_screen::@5/(byte) init_screen::WHITE#0 )
|
||||
*((byte*) init_screen::COLS#2 + (byte) init_screen::l#2) ← (byte) init_screen::WHITE#1
|
||||
*((byte*) init_screen::COLS#2 + (byte) init_screen::l#2) ← (byte) init_screen::WHITE#0
|
||||
(byte) init_screen::l#1 ← (byte) init_screen::l#2 + rangenext(0,$27)
|
||||
(bool~) init_screen::$1 ← (byte) init_screen::l#1 != rangelast(0,$27)
|
||||
if((bool~) init_screen::$1) goto init_screen::@1
|
||||
@ -323,7 +273,6 @@ init_screen::@3: scope:[init_screen] from init_screen::@1
|
||||
(byte*) print_char_cursor#20 ← phi( init_screen::@1/(byte*) print_char_cursor#23 )
|
||||
(byte*) print_line_cursor#20 ← phi( init_screen::@1/(byte*) print_line_cursor#23 )
|
||||
(byte*) init_screen::COLS#4 ← phi( init_screen::@1/(byte*) init_screen::COLS#2 )
|
||||
(byte) init_screen::WHITE#3 ← phi( init_screen::@1/(byte) init_screen::WHITE#1 )
|
||||
(byte) init_screen::m#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
@ -331,11 +280,10 @@ init_screen::@2: scope:[init_screen] from init_screen::@2 init_screen::@3
|
||||
(byte*) print_line_cursor#17 ← phi( init_screen::@2/(byte*) print_line_cursor#17 init_screen::@3/(byte*) print_line_cursor#20 )
|
||||
(byte) init_screen::m#2 ← phi( init_screen::@2/(byte) init_screen::m#1 init_screen::@3/(byte) init_screen::m#0 )
|
||||
(byte*) init_screen::COLS#3 ← phi( init_screen::@2/(byte*) init_screen::COLS#1 init_screen::@3/(byte*) init_screen::COLS#4 )
|
||||
(byte) init_screen::WHITE#2 ← phi( init_screen::@2/(byte) init_screen::WHITE#2 init_screen::@3/(byte) init_screen::WHITE#3 )
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) init_screen::WHITE#2
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) init_screen::WHITE#2
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) init_screen::WHITE#2
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) init_screen::WHITE#2
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) init_screen::WHITE#0
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) init_screen::WHITE#0
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) init_screen::WHITE#0
|
||||
*((byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte) init_screen::WHITE#0
|
||||
(byte*) init_screen::COLS#1 ← (byte*) init_screen::COLS#3 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte) init_screen::m#1 ← (byte) init_screen::m#2 + rangenext(0,$18)
|
||||
(bool~) init_screen::$2 ← (byte) init_screen::m#1 != rangelast(0,$18)
|
||||
@ -357,17 +305,12 @@ init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
(signed byte*) cp#0 ← ((signed byte*)) (byte/word/signed word/dword/signed dword) $ff
|
||||
to:@22
|
||||
fmul8: scope:[fmul8] from main::@3
|
||||
(signed byte*) cp#1 ← phi( main::@3/(signed byte*) cp#2 )
|
||||
(byte*) mulf_sqr2#1 ← phi( main::@3/(byte*) mulf_sqr2#2 )
|
||||
(byte*) mulf_sqr1#1 ← phi( main::@3/(byte*) mulf_sqr1#2 )
|
||||
(signed byte*) bp#1 ← phi( main::@3/(signed byte*) bp#2 )
|
||||
(signed byte) fmul8::b#1 ← phi( main::@3/(signed byte) fmul8::b#0 )
|
||||
(signed byte*) ap#1 ← phi( main::@3/(signed byte*) ap#2 )
|
||||
(signed byte) fmul8::a#1 ← phi( main::@3/(signed byte) fmul8::a#0 )
|
||||
*((signed byte*) ap#1) ← (signed byte) fmul8::a#1
|
||||
*((signed byte*) bp#1) ← (signed byte) fmul8::b#1
|
||||
*((signed byte*) ap#0) ← (signed byte) fmul8::a#1
|
||||
*((signed byte*) bp#0) ← (signed byte) fmul8::b#1
|
||||
asm { ldaap staA1+1 eor#$ff staA2+1 ldxbp sec A1: ldamulf_sqr1,x A2: sbcmulf_sqr2,x stacp }
|
||||
(signed byte) fmul8::return#1 ← *((signed byte*) cp#1)
|
||||
(signed byte) fmul8::return#1 ← *((signed byte*) cp#0)
|
||||
to:fmul8::@return
|
||||
fmul8::@return: scope:[fmul8] from fmul8
|
||||
(signed byte) fmul8::return#4 ← phi( fmul8/(signed byte) fmul8::return#1 )
|
||||
@ -375,9 +318,6 @@ fmul8::@return: scope:[fmul8] from fmul8
|
||||
return
|
||||
to:@return
|
||||
@22: scope:[] from @21
|
||||
(signed byte*) cp#13 ← phi( @21/(signed byte*) cp#0 )
|
||||
(signed byte*) bp#13 ← phi( @21/(signed byte*) bp#0 )
|
||||
(signed byte*) ap#13 ← phi( @21/(signed byte*) ap#0 )
|
||||
(byte*) print_screen#6 ← phi( @21/(byte*) print_screen#7 )
|
||||
(byte*) print_char_cursor#18 ← phi( @21/(byte*) print_char_cursor#21 )
|
||||
(byte*) print_line_cursor#18 ← phi( @21/(byte*) print_line_cursor#21 )
|
||||
@ -420,49 +360,10 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(signed byte*) ap
|
||||
(signed byte*) ap#0
|
||||
(signed byte*) ap#1
|
||||
(signed byte*) ap#10
|
||||
(signed byte*) ap#11
|
||||
(signed byte*) ap#12
|
||||
(signed byte*) ap#13
|
||||
(signed byte*) ap#2
|
||||
(signed byte*) ap#3
|
||||
(signed byte*) ap#4
|
||||
(signed byte*) ap#5
|
||||
(signed byte*) ap#6
|
||||
(signed byte*) ap#7
|
||||
(signed byte*) ap#8
|
||||
(signed byte*) ap#9
|
||||
(signed byte*) bp
|
||||
(signed byte*) bp#0
|
||||
(signed byte*) bp#1
|
||||
(signed byte*) bp#10
|
||||
(signed byte*) bp#11
|
||||
(signed byte*) bp#12
|
||||
(signed byte*) bp#13
|
||||
(signed byte*) bp#2
|
||||
(signed byte*) bp#3
|
||||
(signed byte*) bp#4
|
||||
(signed byte*) bp#5
|
||||
(signed byte*) bp#6
|
||||
(signed byte*) bp#7
|
||||
(signed byte*) bp#8
|
||||
(signed byte*) bp#9
|
||||
(signed byte*) cp
|
||||
(signed byte*) cp#0
|
||||
(signed byte*) cp#1
|
||||
(signed byte*) cp#10
|
||||
(signed byte*) cp#11
|
||||
(signed byte*) cp#12
|
||||
(signed byte*) cp#13
|
||||
(signed byte*) cp#2
|
||||
(signed byte*) cp#3
|
||||
(signed byte*) cp#4
|
||||
(signed byte*) cp#5
|
||||
(signed byte*) cp#6
|
||||
(signed byte*) cp#7
|
||||
(signed byte*) cp#8
|
||||
(signed byte*) cp#9
|
||||
(signed byte()) fmul8((signed byte) fmul8::a , (signed byte) fmul8::b)
|
||||
(label) fmul8::@return
|
||||
(signed byte) fmul8::a
|
||||
@ -493,9 +394,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) init_screen::COLS#4
|
||||
(byte) init_screen::WHITE
|
||||
(byte) init_screen::WHITE#0
|
||||
(byte) init_screen::WHITE#1
|
||||
(byte) init_screen::WHITE#2
|
||||
(byte) init_screen::WHITE#3
|
||||
(byte) init_screen::l
|
||||
(byte) init_screen::l#0
|
||||
(byte) init_screen::l#1
|
||||
@ -568,32 +466,8 @@ SYMBOL TABLE SSA
|
||||
(signed byte) main::r#0
|
||||
(byte*) mulf_sqr1
|
||||
(byte*) mulf_sqr1#0
|
||||
(byte*) mulf_sqr1#1
|
||||
(byte*) mulf_sqr1#10
|
||||
(byte*) mulf_sqr1#11
|
||||
(byte*) mulf_sqr1#12
|
||||
(byte*) mulf_sqr1#2
|
||||
(byte*) mulf_sqr1#3
|
||||
(byte*) mulf_sqr1#4
|
||||
(byte*) mulf_sqr1#5
|
||||
(byte*) mulf_sqr1#6
|
||||
(byte*) mulf_sqr1#7
|
||||
(byte*) mulf_sqr1#8
|
||||
(byte*) mulf_sqr1#9
|
||||
(byte*) mulf_sqr2
|
||||
(byte*) mulf_sqr2#0
|
||||
(byte*) mulf_sqr2#1
|
||||
(byte*) mulf_sqr2#10
|
||||
(byte*) mulf_sqr2#11
|
||||
(byte*) mulf_sqr2#12
|
||||
(byte*) mulf_sqr2#2
|
||||
(byte*) mulf_sqr2#3
|
||||
(byte*) mulf_sqr2#4
|
||||
(byte*) mulf_sqr2#5
|
||||
(byte*) mulf_sqr2#6
|
||||
(byte*) mulf_sqr2#7
|
||||
(byte*) mulf_sqr2#8
|
||||
(byte*) mulf_sqr2#9
|
||||
(void()) print_byte_at((byte) print_byte_at::b , (byte*) print_byte_at::at)
|
||||
(byte~) print_byte_at::$0
|
||||
(byte~) print_byte_at::$2
|
||||
@ -761,58 +635,34 @@ Alias (byte) print_byte_at::b#1 = (byte) print_byte_at::b#2
|
||||
Alias (byte*) print_byte_at::at#1 = (byte*) print_byte_at::at#2
|
||||
Alias (byte*) print_char_at::at#3 = (byte*~) print_byte_at::$3
|
||||
Alias (byte*) print_line_cursor#1 = (byte*) print_screen#3 (byte*) print_screen#2 (byte*) print_char_cursor#1 (byte*) print_line_cursor#8 (byte*) print_char_cursor#8 (byte*) print_line_cursor#2 (byte*) print_char_cursor#2
|
||||
Alias (signed byte*) ap#11 = (signed byte*) ap#12
|
||||
Alias (signed byte*) bp#11 = (signed byte*) bp#12
|
||||
Alias (byte*) mulf_sqr1#11 = (byte*) mulf_sqr1#12
|
||||
Alias (byte*) mulf_sqr2#11 = (byte*) mulf_sqr2#12
|
||||
Alias (signed byte*) cp#11 = (signed byte*) cp#12
|
||||
Alias (byte*) print_line_cursor#3 = (byte*) print_line_cursor#9
|
||||
Alias (byte*) print_char_cursor#3 = (byte*) print_char_cursor#9
|
||||
Alias (byte*) main::at#0 = (byte*~) main::$1
|
||||
Alias (byte*) main::at#4 = (byte*) main::at#5
|
||||
Alias (byte) main::k#2 = (byte) main::k#3
|
||||
Alias (byte*) main::at_line#3 = (byte*) main::at_line#5 (byte*) main::at_line#7
|
||||
Alias (signed byte*) ap#10 = (signed byte*) ap#9 (signed byte*) ap#7
|
||||
Alias (signed byte*) bp#10 = (signed byte*) bp#9 (signed byte*) bp#7
|
||||
Alias (byte*) mulf_sqr1#10 = (byte*) mulf_sqr1#9 (byte*) mulf_sqr1#7
|
||||
Alias (byte*) mulf_sqr2#10 = (byte*) mulf_sqr2#9 (byte*) mulf_sqr2#7
|
||||
Alias (signed byte*) cp#10 = (signed byte*) cp#9 (signed byte*) cp#7
|
||||
Alias (byte*) print_line_cursor#29 = (byte*) print_line_cursor#30 (byte*) print_line_cursor#31
|
||||
Alias (byte*) print_char_cursor#29 = (byte*) print_char_cursor#30 (byte*) print_char_cursor#31
|
||||
Alias (byte*) main::at#2 = (byte*) main::at_line#1 (byte*) main::at#9 (byte*) main::at_line#10
|
||||
Alias (byte) main::i#2 = (byte) main::i#6
|
||||
Alias (signed byte*) ap#4 = (signed byte*) ap#5
|
||||
Alias (signed byte*) bp#4 = (signed byte*) bp#5
|
||||
Alias (byte*) mulf_sqr1#4 = (byte*) mulf_sqr1#5
|
||||
Alias (byte*) mulf_sqr2#4 = (byte*) mulf_sqr2#5
|
||||
Alias (signed byte*) cp#4 = (signed byte*) cp#5
|
||||
Alias (byte*) print_line_cursor#27 = (byte*) print_line_cursor#28
|
||||
Alias (byte*) print_char_cursor#27 = (byte*) print_char_cursor#28
|
||||
Alias (signed byte) fmul8::return#0 = (signed byte) fmul8::return#3
|
||||
Alias (byte*) main::at#3 = (byte*) main::at#7 (byte*) main::at#8
|
||||
Alias (byte) main::j#2 = (byte) main::j#4 (byte) main::j#3
|
||||
Alias (byte) main::i#3 = (byte) main::i#7 (byte) main::i#5 (byte) main::i#4
|
||||
Alias (signed byte*) ap#2 = (signed byte*) ap#6 (signed byte*) ap#3 (signed byte*) ap#8
|
||||
Alias (signed byte*) bp#2 = (signed byte*) bp#6 (signed byte*) bp#3 (signed byte*) bp#8
|
||||
Alias (byte*) mulf_sqr1#2 = (byte*) mulf_sqr1#6 (byte*) mulf_sqr1#3 (byte*) mulf_sqr1#8
|
||||
Alias (byte*) mulf_sqr2#2 = (byte*) mulf_sqr2#6 (byte*) mulf_sqr2#3 (byte*) mulf_sqr2#8
|
||||
Alias (signed byte*) cp#2 = (signed byte*) cp#6 (signed byte*) cp#3 (signed byte*) cp#8
|
||||
Alias (byte*) main::at_line#4 = (byte*) main::at_line#8 (byte*) main::at_line#9 (byte*) main::at_line#6
|
||||
Alias (byte*) print_line_cursor#10 = (byte*) print_line_cursor#22 (byte*) print_line_cursor#26 (byte*) print_line_cursor#19 (byte*) print_line_cursor#15 (byte*) print_line_cursor#4
|
||||
Alias (byte*) print_char_cursor#10 = (byte*) print_char_cursor#22 (byte*) print_char_cursor#26 (byte*) print_char_cursor#19 (byte*) print_char_cursor#15 (byte*) print_char_cursor#4
|
||||
Alias (signed byte) main::r#0 = (signed byte~) main::$5
|
||||
Alias (byte*) print_line_cursor#11 = (byte*) print_line_cursor#5
|
||||
Alias (byte*) print_char_cursor#11 = (byte*) print_char_cursor#5
|
||||
Alias (byte) init_screen::WHITE#1 = (byte) init_screen::WHITE#3
|
||||
Alias (byte*) init_screen::COLS#2 = (byte*) init_screen::COLS#4
|
||||
Alias (byte*) print_line_cursor#20 = (byte*) print_line_cursor#23
|
||||
Alias (byte*) print_char_cursor#20 = (byte*) print_char_cursor#23
|
||||
Alias (byte*) print_line_cursor#12 = (byte*) print_line_cursor#17 (byte*) print_line_cursor#6
|
||||
Alias (byte*) print_char_cursor#12 = (byte*) print_char_cursor#17 (byte*) print_char_cursor#6
|
||||
Alias (signed byte) fmul8::return#1 = (signed byte) fmul8::return#4 (signed byte) fmul8::return#2
|
||||
Alias (signed byte*) ap#0 = (signed byte*) ap#13
|
||||
Alias (signed byte*) bp#0 = (signed byte*) bp#13
|
||||
Alias (signed byte*) cp#0 = (signed byte*) cp#13
|
||||
Alias (byte*) print_line_cursor#13 = (byte*) print_line_cursor#7
|
||||
Alias (byte*) print_char_cursor#13 = (byte*) print_char_cursor#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
@ -820,27 +670,15 @@ Alias (byte*) print_sbyte_at::at#3 = (byte*) print_sbyte_at::at#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) print_line_cursor#1
|
||||
Self Phi Eliminated (byte*) main::at_line#3
|
||||
Self Phi Eliminated (signed byte*) ap#10
|
||||
Self Phi Eliminated (signed byte*) bp#10
|
||||
Self Phi Eliminated (byte*) mulf_sqr1#10
|
||||
Self Phi Eliminated (byte*) mulf_sqr2#10
|
||||
Self Phi Eliminated (signed byte*) cp#10
|
||||
Self Phi Eliminated (byte*) print_line_cursor#29
|
||||
Self Phi Eliminated (byte*) print_char_cursor#29
|
||||
Self Phi Eliminated (byte) main::i#3
|
||||
Self Phi Eliminated (signed byte*) ap#2
|
||||
Self Phi Eliminated (signed byte*) bp#2
|
||||
Self Phi Eliminated (byte*) mulf_sqr1#2
|
||||
Self Phi Eliminated (byte*) mulf_sqr2#2
|
||||
Self Phi Eliminated (signed byte*) cp#2
|
||||
Self Phi Eliminated (byte*) main::at_line#4
|
||||
Self Phi Eliminated (byte*) print_line_cursor#10
|
||||
Self Phi Eliminated (byte*) print_char_cursor#10
|
||||
Self Phi Eliminated (byte) init_screen::WHITE#1
|
||||
Self Phi Eliminated (byte*) init_screen::COLS#2
|
||||
Self Phi Eliminated (byte*) print_line_cursor#20
|
||||
Self Phi Eliminated (byte*) print_char_cursor#20
|
||||
Self Phi Eliminated (byte) init_screen::WHITE#2
|
||||
Self Phi Eliminated (byte*) print_line_cursor#12
|
||||
Self Phi Eliminated (byte*) print_char_cursor#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
@ -851,27 +689,12 @@ Redundant Phi (byte*) print_line_cursor#1 (byte*) print_screen#1
|
||||
Redundant Phi (byte*) print_line_cursor#14 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_char_cursor#14 (byte*) print_line_cursor#0
|
||||
Redundant Phi (byte*) print_screen#5 (byte*) print_line_cursor#0
|
||||
Redundant Phi (signed byte*) ap#11 (signed byte*) ap#0
|
||||
Redundant Phi (signed byte*) bp#11 (signed byte*) bp#0
|
||||
Redundant Phi (byte*) mulf_sqr1#11 (byte*) mulf_sqr1#0
|
||||
Redundant Phi (byte*) mulf_sqr2#11 (byte*) mulf_sqr2#0
|
||||
Redundant Phi (signed byte*) cp#11 (signed byte*) cp#0
|
||||
Redundant Phi (byte*) print_line_cursor#3 (byte*) print_line_cursor#12
|
||||
Redundant Phi (byte*) print_char_cursor#3 (byte*) print_char_cursor#12
|
||||
Redundant Phi (byte*) main::at_line#3 (byte*) main::at_line#0
|
||||
Redundant Phi (signed byte*) ap#10 (signed byte*) ap#11
|
||||
Redundant Phi (signed byte*) bp#10 (signed byte*) bp#11
|
||||
Redundant Phi (byte*) mulf_sqr1#10 (byte*) mulf_sqr1#11
|
||||
Redundant Phi (byte*) mulf_sqr2#10 (byte*) mulf_sqr2#11
|
||||
Redundant Phi (signed byte*) cp#10 (signed byte*) cp#11
|
||||
Redundant Phi (byte*) print_line_cursor#29 (byte*) print_line_cursor#3
|
||||
Redundant Phi (byte*) print_char_cursor#29 (byte*) print_char_cursor#3
|
||||
Redundant Phi (byte) main::i#3 (byte) main::i#2
|
||||
Redundant Phi (signed byte*) ap#2 (signed byte*) ap#4
|
||||
Redundant Phi (signed byte*) bp#2 (signed byte*) bp#4
|
||||
Redundant Phi (byte*) mulf_sqr1#2 (byte*) mulf_sqr1#4
|
||||
Redundant Phi (byte*) mulf_sqr2#2 (byte*) mulf_sqr2#4
|
||||
Redundant Phi (signed byte*) cp#2 (signed byte*) cp#4
|
||||
Redundant Phi (byte*) main::at_line#4 (byte*) main::at#2
|
||||
Redundant Phi (byte*) print_line_cursor#10 (byte*) print_line_cursor#27
|
||||
Redundant Phi (byte*) print_char_cursor#10 (byte*) print_char_cursor#27
|
||||
@ -880,20 +703,13 @@ Redundant Phi (byte*) print_line_cursor#16 (byte*) print_line_cursor#14
|
||||
Redundant Phi (byte*) print_char_cursor#16 (byte*) print_char_cursor#14
|
||||
Redundant Phi (byte*) print_line_cursor#11 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte*) print_char_cursor#11 (byte*) print_line_cursor#1
|
||||
Redundant Phi (byte) init_screen::WHITE#1 (byte) init_screen::WHITE#0
|
||||
Redundant Phi (byte*) init_screen::COLS#2 (byte*) init_screen::COLS#0
|
||||
Redundant Phi (byte*) print_line_cursor#20 (byte*) print_line_cursor#11
|
||||
Redundant Phi (byte*) print_char_cursor#20 (byte*) print_char_cursor#11
|
||||
Redundant Phi (byte) init_screen::WHITE#2 (byte) init_screen::WHITE#1
|
||||
Redundant Phi (byte*) print_line_cursor#12 (byte*) print_line_cursor#20
|
||||
Redundant Phi (byte*) print_char_cursor#12 (byte*) print_char_cursor#20
|
||||
Redundant Phi (signed byte) fmul8::a#1 (signed byte) fmul8::a#0
|
||||
Redundant Phi (signed byte*) ap#1 (signed byte*) ap#2
|
||||
Redundant Phi (signed byte) fmul8::b#1 (signed byte) fmul8::b#0
|
||||
Redundant Phi (signed byte*) bp#1 (signed byte*) bp#2
|
||||
Redundant Phi (byte*) mulf_sqr1#1 (byte*) mulf_sqr1#2
|
||||
Redundant Phi (byte*) mulf_sqr2#1 (byte*) mulf_sqr2#2
|
||||
Redundant Phi (signed byte*) cp#1 (signed byte*) cp#2
|
||||
Redundant Phi (byte*) print_line_cursor#13 (byte*) print_line_cursor#10
|
||||
Redundant Phi (byte*) print_char_cursor#13 (byte*) print_char_cursor#10
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
@ -957,18 +773,6 @@ Culled Empty Block (label) init_screen::@3
|
||||
Culled Empty Block (label) @21
|
||||
Culled Empty Block (label) @23
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (signed byte*) ap#4
|
||||
Self Phi Eliminated (signed byte*) bp#4
|
||||
Self Phi Eliminated (byte*) mulf_sqr1#4
|
||||
Self Phi Eliminated (byte*) mulf_sqr2#4
|
||||
Self Phi Eliminated (signed byte*) cp#4
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (signed byte*) ap#4 (const signed byte*) ap#0
|
||||
Redundant Phi (signed byte*) bp#4 (const signed byte*) bp#0
|
||||
Redundant Phi (byte*) mulf_sqr1#4 (const byte*) mulf_sqr1#0
|
||||
Redundant Phi (byte*) mulf_sqr2#4 (const byte*) mulf_sqr2#0
|
||||
Redundant Phi (signed byte*) cp#4 (const signed byte*) cp#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const byte) print_char_at::ch#0
|
||||
Inlining constant with var siblings (const byte) print_char_at::ch#1
|
||||
Inlining constant with var siblings (const byte*) print_cls::sc#0
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) SPRITE
|
||||
Identified constant variable (byte*) YSIN
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call call plexSetScreen (byte*) plexInit::screen
|
||||
Inlined call call plexFreePrepare
|
||||
@ -332,19 +335,15 @@ plexShowSprite::@return: scope:[plexShowSprite] from plexShowSprite::@3 plexSho
|
||||
}}
|
||||
to:@15
|
||||
main: scope:[main] from @15
|
||||
(byte*) YSIN#11 ← phi( @15/(byte*) YSIN#13 )
|
||||
(byte*) SPRITE#4 ← phi( @15/(byte*) SPRITE#5 )
|
||||
(byte) plex_free_next#31 ← phi( @15/(byte) plex_free_next#29 )
|
||||
(byte) plex_sprite_msb#33 ← phi( @15/(byte) plex_sprite_msb#30 )
|
||||
(byte) plex_sprite_idx#34 ← phi( @15/(byte) plex_sprite_idx#32 )
|
||||
(byte) plex_show_idx#34 ← phi( @15/(byte) plex_show_idx#32 )
|
||||
(byte*) SCREEN#2 ← phi( @15/(byte*) SCREEN#3 )
|
||||
(byte*) PLEX_SCREEN_PTR#17 ← phi( @15/(byte*) PLEX_SCREEN_PTR#21 )
|
||||
asm { sei }
|
||||
call init
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) YSIN#9 ← phi( main/(byte*) YSIN#11 )
|
||||
(byte) plex_free_next#24 ← phi( main/(byte) plex_free_next#31 )
|
||||
(byte) plex_sprite_msb#26 ← phi( main/(byte) plex_sprite_msb#33 )
|
||||
(byte) plex_sprite_idx#29 ← phi( main/(byte) plex_sprite_idx#34 )
|
||||
@ -378,17 +377,14 @@ main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
init: scope:[init] from main
|
||||
(byte*) SPRITE#3 ← phi( main/(byte*) SPRITE#4 )
|
||||
(byte*) PLEX_SCREEN_PTR#19 ← phi( main/(byte*) PLEX_SCREEN_PTR#17 )
|
||||
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 )
|
||||
(byte~) init::$0 ← (byte) VIC_DEN#0 | (byte) VIC_RSEL#0
|
||||
(byte/word/dword~) init::$1 ← (byte~) init::$0 | (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
*((byte*) D011#0) ← (byte/word/dword~) init::$1
|
||||
(byte*) plexInit::screen#0 ← (byte*) SCREEN#1
|
||||
(byte*) plexInit::screen#0 ← (byte*) SCREEN#0
|
||||
call plexInit
|
||||
to:init::@5
|
||||
init::@5: scope:[init] from init
|
||||
(byte*) SPRITE#2 ← phi( init/(byte*) SPRITE#3 )
|
||||
(byte*) PLEX_SCREEN_PTR#12 ← phi( init/(byte*) PLEX_SCREEN_PTR#2 )
|
||||
(byte*) PLEX_SCREEN_PTR#5 ← (byte*) PLEX_SCREEN_PTR#12
|
||||
(word) init::xp#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
@ -399,8 +395,7 @@ init::@1: scope:[init] from init::@1 init::@5
|
||||
(byte*) PLEX_SCREEN_PTR#28 ← phi( init::@1/(byte*) PLEX_SCREEN_PTR#28 init::@5/(byte*) PLEX_SCREEN_PTR#5 )
|
||||
(word) init::xp#2 ← phi( init::@1/(word) init::xp#1 init::@5/(word) init::xp#0 )
|
||||
(byte) init::sx#2 ← phi( init::@1/(byte) init::sx#1 init::@5/(byte) init::sx#0 )
|
||||
(byte*) SPRITE#1 ← phi( init::@1/(byte*) SPRITE#1 init::@5/(byte*) SPRITE#2 )
|
||||
(byte*~) init::$4 ← (byte*) SPRITE#1 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte*~) init::$4 ← (byte*) SPRITE#0 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte~) init::$5 ← ((byte)) (byte*~) init::$4
|
||||
*((byte[PLEX_COUNT#0]) PLEX_PTR#0 + (byte) init::sx#2) ← (byte~) init::$5
|
||||
(byte~) init::$6 ← (byte) init::sx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -430,7 +425,6 @@ init::@return: scope:[init] from init::@2
|
||||
to:@return
|
||||
loop: scope:[loop] from main::@1
|
||||
(byte*) PLEX_SCREEN_PTR#47 ← phi( main::@1/(byte*) PLEX_SCREEN_PTR#3 )
|
||||
(byte*) YSIN#7 ← phi( main::@1/(byte*) YSIN#9 )
|
||||
(byte) plex_free_next#32 ← phi( main::@1/(byte) plex_free_next#24 )
|
||||
(byte) plex_sprite_msb#34 ← phi( main::@1/(byte) plex_sprite_msb#26 )
|
||||
(byte) plex_sprite_idx#35 ← phi( main::@1/(byte) plex_sprite_idx#29 )
|
||||
@ -439,7 +433,6 @@ loop: scope:[loop] from main::@1
|
||||
to:loop::@1
|
||||
loop::@1: scope:[loop] from loop loop::@27
|
||||
(byte*) PLEX_SCREEN_PTR#46 ← phi( loop/(byte*) PLEX_SCREEN_PTR#47 loop::@27/(byte*) PLEX_SCREEN_PTR#48 )
|
||||
(byte*) YSIN#6 ← phi( loop/(byte*) YSIN#7 loop::@27/(byte*) YSIN#8 )
|
||||
(byte) loop::sin_idx#8 ← phi( loop/(byte) loop::sin_idx#0 loop::@27/(byte) loop::sin_idx#9 )
|
||||
(byte) plex_free_next#28 ← phi( loop/(byte) plex_free_next#32 loop::@27/(byte) plex_free_next#33 )
|
||||
(byte) plex_sprite_msb#29 ← phi( loop/(byte) plex_sprite_msb#34 loop::@27/(byte) plex_sprite_msb#35 )
|
||||
@ -453,7 +446,6 @@ loop::@2: scope:[loop] from loop::@1
|
||||
(byte) plex_sprite_msb#47 ← phi( loop::@1/(byte) plex_sprite_msb#29 )
|
||||
(byte) plex_sprite_idx#47 ← phi( loop::@1/(byte) plex_sprite_idx#31 )
|
||||
(byte) plex_show_idx#47 ← phi( loop::@1/(byte) plex_show_idx#31 )
|
||||
(byte*) YSIN#4 ← phi( loop::@1/(byte*) YSIN#6 )
|
||||
(byte) loop::sin_idx#6 ← phi( loop::@1/(byte) loop::sin_idx#8 )
|
||||
to:loop::@4
|
||||
loop::@4: scope:[loop] from loop::@2 loop::@5
|
||||
@ -462,7 +454,6 @@ loop::@4: scope:[loop] from loop::@2 loop::@5
|
||||
(byte) plex_sprite_msb#45 ← phi( loop::@2/(byte) plex_sprite_msb#47 loop::@5/(byte) plex_sprite_msb#48 )
|
||||
(byte) plex_sprite_idx#45 ← phi( loop::@2/(byte) plex_sprite_idx#47 loop::@5/(byte) plex_sprite_idx#48 )
|
||||
(byte) plex_show_idx#45 ← phi( loop::@2/(byte) plex_show_idx#47 loop::@5/(byte) plex_show_idx#48 )
|
||||
(byte*) YSIN#3 ← phi( loop::@2/(byte*) YSIN#4 loop::@5/(byte*) YSIN#5 )
|
||||
(byte) loop::sin_idx#4 ← phi( loop::@2/(byte) loop::sin_idx#6 loop::@5/(byte) loop::sin_idx#7 )
|
||||
(bool~) loop::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) loop::$0) goto loop::@5
|
||||
@ -473,7 +464,6 @@ loop::@5: scope:[loop] from loop::@4
|
||||
(byte) plex_sprite_msb#48 ← phi( loop::@4/(byte) plex_sprite_msb#45 )
|
||||
(byte) plex_sprite_idx#48 ← phi( loop::@4/(byte) plex_sprite_idx#45 )
|
||||
(byte) plex_show_idx#48 ← phi( loop::@4/(byte) plex_show_idx#45 )
|
||||
(byte*) YSIN#5 ← phi( loop::@4/(byte*) YSIN#3 )
|
||||
(byte) loop::sin_idx#7 ← phi( loop::@4/(byte) loop::sin_idx#4 )
|
||||
to:loop::@4
|
||||
loop::@6: scope:[loop] from loop::@4
|
||||
@ -482,7 +472,6 @@ loop::@6: scope:[loop] from loop::@4
|
||||
(byte) plex_sprite_msb#42 ← phi( loop::@4/(byte) plex_sprite_msb#45 )
|
||||
(byte) plex_sprite_idx#42 ← phi( loop::@4/(byte) plex_sprite_idx#45 )
|
||||
(byte) plex_show_idx#42 ← phi( loop::@4/(byte) plex_show_idx#45 )
|
||||
(byte*) YSIN#2 ← phi( loop::@4/(byte*) YSIN#3 )
|
||||
(byte) loop::sin_idx#2 ← phi( loop::@4/(byte) loop::sin_idx#4 )
|
||||
*((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
|
||||
(byte) loop::y_idx#0 ← (byte) loop::sin_idx#2
|
||||
@ -498,15 +487,13 @@ loop::@7: scope:[loop] from loop::@6 loop::@7
|
||||
(byte) loop::sin_idx#5 ← phi( loop::@6/(byte) loop::sin_idx#2 loop::@7/(byte) loop::sin_idx#5 )
|
||||
(byte) loop::sy#2 ← phi( loop::@6/(byte) loop::sy#0 loop::@7/(byte) loop::sy#1 )
|
||||
(byte) loop::y_idx#2 ← phi( loop::@6/(byte) loop::y_idx#0 loop::@7/(byte) loop::y_idx#1 )
|
||||
(byte*) YSIN#1 ← phi( loop::@6/(byte*) YSIN#2 loop::@7/(byte*) YSIN#1 )
|
||||
*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((byte*) YSIN#1 + (byte) loop::y_idx#2)
|
||||
*((byte[PLEX_COUNT#0]) PLEX_YPOS#0 + (byte) loop::sy#2) ← *((byte*) YSIN#0 + (byte) loop::y_idx#2)
|
||||
(byte) loop::y_idx#1 ← (byte) loop::y_idx#2 + (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte) loop::sy#1 ← (byte) loop::sy#2 + rangenext(0,loop::$1)
|
||||
(bool~) loop::$2 ← (byte) loop::sy#1 != rangelast(0,loop::$1)
|
||||
if((bool~) loop::$2) goto loop::@7
|
||||
to:loop::@20
|
||||
loop::@20: scope:[loop] from loop::@7
|
||||
(byte*) YSIN#24 ← phi( loop::@7/(byte*) YSIN#1 )
|
||||
(byte*) PLEX_SCREEN_PTR#40 ← phi( loop::@7/(byte*) PLEX_SCREEN_PTR#41 )
|
||||
(byte) plex_free_next#25 ← phi( loop::@7/(byte) plex_free_next#34 )
|
||||
(byte) plex_sprite_msb#27 ← phi( loop::@7/(byte) plex_sprite_msb#36 )
|
||||
@ -518,7 +505,6 @@ loop::@20: scope:[loop] from loop::@7
|
||||
call plexSort
|
||||
to:loop::@30
|
||||
loop::@30: scope:[loop] from loop::@20
|
||||
(byte*) YSIN#22 ← phi( loop::@20/(byte*) YSIN#24 )
|
||||
(byte) loop::sin_idx#20 ← phi( loop::@20/(byte) loop::sin_idx#1 )
|
||||
(byte*) PLEX_SCREEN_PTR#38 ← phi( loop::@20/(byte*) PLEX_SCREEN_PTR#40 )
|
||||
(byte) plex_free_next#16 ← phi( loop::@20/(byte) plex_free_next#1 )
|
||||
@ -532,7 +518,6 @@ loop::@30: scope:[loop] from loop::@20
|
||||
*((byte*) BORDERCOL#0) ← (byte) BLACK#0
|
||||
to:loop::@8
|
||||
loop::@8: scope:[loop] from loop::@30 loop::@9
|
||||
(byte*) YSIN#21 ← phi( loop::@30/(byte*) YSIN#22 loop::@9/(byte*) YSIN#23 )
|
||||
(byte) loop::sin_idx#19 ← phi( loop::@30/(byte) loop::sin_idx#20 loop::@9/(byte) loop::sin_idx#21 )
|
||||
(byte*) PLEX_SCREEN_PTR#37 ← phi( loop::@30/(byte*) PLEX_SCREEN_PTR#38 loop::@9/(byte*) PLEX_SCREEN_PTR#39 )
|
||||
(byte) plex_sprite_msb#52 ← phi( loop::@30/(byte) plex_sprite_msb#8 loop::@9/(byte) plex_sprite_msb#53 )
|
||||
@ -544,7 +529,6 @@ loop::@8: scope:[loop] from loop::@30 loop::@9
|
||||
if((bool~) loop::$5) goto loop::@9
|
||||
to:loop::@10
|
||||
loop::@9: scope:[loop] from loop::@8
|
||||
(byte*) YSIN#23 ← phi( loop::@8/(byte*) YSIN#21 )
|
||||
(byte) loop::sin_idx#21 ← phi( loop::@8/(byte) loop::sin_idx#19 )
|
||||
(byte*) PLEX_SCREEN_PTR#39 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#37 )
|
||||
(byte) plex_sprite_msb#53 ← phi( loop::@8/(byte) plex_sprite_msb#52 )
|
||||
@ -553,7 +537,6 @@ loop::@9: scope:[loop] from loop::@8
|
||||
(byte) plex_free_next#46 ← phi( loop::@8/(byte) plex_free_next#41 )
|
||||
to:loop::@8
|
||||
loop::@10: scope:[loop] from loop::@8
|
||||
(byte*) YSIN#20 ← phi( loop::@8/(byte*) YSIN#21 )
|
||||
(byte) loop::sin_idx#18 ← phi( loop::@8/(byte) loop::sin_idx#19 )
|
||||
(byte*) PLEX_SCREEN_PTR#35 ← phi( loop::@8/(byte*) PLEX_SCREEN_PTR#37 )
|
||||
(byte) plex_sprite_msb#51 ← phi( loop::@8/(byte) plex_sprite_msb#52 )
|
||||
@ -564,7 +547,6 @@ loop::@10: scope:[loop] from loop::@8
|
||||
(byte) loop::ss#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:loop::@11
|
||||
loop::@11: scope:[loop] from loop::@10 loop::@31
|
||||
(byte*) YSIN#19 ← phi( loop::@10/(byte*) YSIN#20 loop::@31/(byte*) YSIN#10 )
|
||||
(byte) loop::sin_idx#17 ← phi( loop::@10/(byte) loop::sin_idx#18 loop::@31/(byte) loop::sin_idx#10 )
|
||||
(byte*) PLEX_SCREEN_PTR#34 ← phi( loop::@10/(byte*) PLEX_SCREEN_PTR#35 loop::@31/(byte*) PLEX_SCREEN_PTR#36 )
|
||||
(byte) loop::ss#9 ← phi( loop::@10/(byte) loop::ss#0 loop::@31/(byte) loop::ss#1 )
|
||||
@ -575,7 +557,6 @@ loop::@11: scope:[loop] from loop::@10 loop::@31
|
||||
*((byte*) BORDERCOL#0) ← (byte) BLACK#0
|
||||
to:loop::plexFreeNextYpos1
|
||||
loop::plexFreeNextYpos1: scope:[loop] from loop::@11
|
||||
(byte*) YSIN#18 ← phi( loop::@11/(byte*) YSIN#19 )
|
||||
(byte) loop::sin_idx#16 ← phi( loop::@11/(byte) loop::sin_idx#17 )
|
||||
(byte*) PLEX_SCREEN_PTR#33 ← phi( loop::@11/(byte*) PLEX_SCREEN_PTR#34 )
|
||||
(byte) loop::ss#8 ← phi( loop::@11/(byte) loop::ss#9 )
|
||||
@ -586,7 +567,6 @@ loop::plexFreeNextYpos1: scope:[loop] from loop::@11
|
||||
(byte) loop::plexFreeNextYpos1_return#0 ← *((byte[8]) PLEX_FREE_YPOS#0 + (byte) plex_free_next#17)
|
||||
to:loop::plexFreeNextYpos1_@return
|
||||
loop::plexFreeNextYpos1_@return: scope:[loop] from loop::plexFreeNextYpos1
|
||||
(byte*) YSIN#17 ← phi( loop::plexFreeNextYpos1/(byte*) YSIN#18 )
|
||||
(byte) loop::sin_idx#15 ← phi( loop::plexFreeNextYpos1/(byte) loop::sin_idx#16 )
|
||||
(byte*) PLEX_SCREEN_PTR#32 ← phi( loop::plexFreeNextYpos1/(byte*) PLEX_SCREEN_PTR#33 )
|
||||
(byte) loop::ss#7 ← phi( loop::plexFreeNextYpos1/(byte) loop::ss#8 )
|
||||
@ -598,7 +578,6 @@ loop::plexFreeNextYpos1_@return: scope:[loop] from loop::plexFreeNextYpos1
|
||||
(byte) loop::plexFreeNextYpos1_return#1 ← (byte) loop::plexFreeNextYpos1_return#2
|
||||
to:loop::@29
|
||||
loop::@29: scope:[loop] from loop::plexFreeNextYpos1_@return
|
||||
(byte*) YSIN#16 ← phi( loop::plexFreeNextYpos1_@return/(byte*) YSIN#17 )
|
||||
(byte) loop::sin_idx#14 ← phi( loop::plexFreeNextYpos1_@return/(byte) loop::sin_idx#15 )
|
||||
(byte*) PLEX_SCREEN_PTR#31 ← phi( loop::plexFreeNextYpos1_@return/(byte*) PLEX_SCREEN_PTR#32 )
|
||||
(byte) loop::ss#6 ← phi( loop::plexFreeNextYpos1_@return/(byte) loop::ss#7 )
|
||||
@ -611,7 +590,6 @@ loop::@29: scope:[loop] from loop::plexFreeNextYpos1_@return
|
||||
(byte) loop::rasterY#0 ← (byte~) loop::$7
|
||||
to:loop::@12
|
||||
loop::@12: scope:[loop] from loop::@13 loop::@29
|
||||
(byte*) YSIN#14 ← phi( loop::@13/(byte*) YSIN#15 loop::@29/(byte*) YSIN#16 )
|
||||
(byte) loop::sin_idx#12 ← phi( loop::@13/(byte) loop::sin_idx#13 loop::@29/(byte) loop::sin_idx#14 )
|
||||
(byte*) PLEX_SCREEN_PTR#29 ← phi( loop::@13/(byte*) PLEX_SCREEN_PTR#30 loop::@29/(byte*) PLEX_SCREEN_PTR#31 )
|
||||
(byte) loop::ss#4 ← phi( loop::@13/(byte) loop::ss#5 loop::@29/(byte) loop::ss#6 )
|
||||
@ -624,7 +602,6 @@ loop::@12: scope:[loop] from loop::@13 loop::@29
|
||||
if((bool~) loop::$8) goto loop::@13
|
||||
to:loop::@14
|
||||
loop::@13: scope:[loop] from loop::@12
|
||||
(byte*) YSIN#15 ← phi( loop::@12/(byte*) YSIN#14 )
|
||||
(byte) loop::sin_idx#13 ← phi( loop::@12/(byte) loop::sin_idx#12 )
|
||||
(byte*) PLEX_SCREEN_PTR#30 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#29 )
|
||||
(byte) loop::ss#5 ← phi( loop::@12/(byte) loop::ss#4 )
|
||||
@ -635,7 +612,6 @@ loop::@13: scope:[loop] from loop::@12
|
||||
(byte) loop::rasterY#2 ← phi( loop::@12/(byte) loop::rasterY#1 )
|
||||
to:loop::@12
|
||||
loop::@14: scope:[loop] from loop::@12
|
||||
(byte*) YSIN#12 ← phi( loop::@12/(byte*) YSIN#14 )
|
||||
(byte) loop::sin_idx#11 ← phi( loop::@12/(byte) loop::sin_idx#12 )
|
||||
(byte*) PLEX_SCREEN_PTR#26 ← phi( loop::@12/(byte*) PLEX_SCREEN_PTR#29 )
|
||||
(byte) loop::ss#3 ← phi( loop::@12/(byte) loop::ss#4 )
|
||||
@ -648,7 +624,6 @@ loop::@14: scope:[loop] from loop::@12
|
||||
to:loop::@31
|
||||
loop::@31: scope:[loop] from loop::@14
|
||||
(byte*) PLEX_SCREEN_PTR#36 ← phi( loop::@14/(byte*) PLEX_SCREEN_PTR#26 )
|
||||
(byte*) YSIN#10 ← phi( loop::@14/(byte*) YSIN#12 )
|
||||
(byte) loop::sin_idx#10 ← phi( loop::@14/(byte) loop::sin_idx#11 )
|
||||
(byte) loop::ss#2 ← phi( loop::@14/(byte) loop::ss#3 )
|
||||
(byte) plex_sprite_msb#20 ← phi( loop::@14/(byte) plex_sprite_msb#5 )
|
||||
@ -665,7 +640,6 @@ loop::@31: scope:[loop] from loop::@14
|
||||
to:loop::@27
|
||||
loop::@27: scope:[loop] from loop::@31
|
||||
(byte*) PLEX_SCREEN_PTR#48 ← phi( loop::@31/(byte*) PLEX_SCREEN_PTR#36 )
|
||||
(byte*) YSIN#8 ← phi( loop::@31/(byte*) YSIN#10 )
|
||||
(byte) loop::sin_idx#9 ← phi( loop::@31/(byte) loop::sin_idx#10 )
|
||||
(byte) plex_free_next#33 ← phi( loop::@31/(byte) plex_free_next#8 )
|
||||
(byte) plex_sprite_msb#35 ← phi( loop::@31/(byte) plex_sprite_msb#9 )
|
||||
@ -685,9 +659,6 @@ loop::@return: scope:[loop] from loop::@1
|
||||
return
|
||||
to:@return
|
||||
@15: scope:[] from @12
|
||||
(byte*) YSIN#13 ← phi( @12/(byte*) YSIN#0 )
|
||||
(byte*) SPRITE#5 ← phi( @12/(byte*) SPRITE#0 )
|
||||
(byte*) SCREEN#3 ← phi( @12/(byte*) SCREEN#0 )
|
||||
(byte) plex_free_next#29 ← phi( @12/(byte) plex_free_next#37 )
|
||||
(byte) plex_sprite_msb#30 ← phi( @12/(byte) plex_sprite_msb#38 )
|
||||
(byte) plex_sprite_idx#32 ← phi( @12/(byte) plex_sprite_idx#39 )
|
||||
@ -892,16 +863,8 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SPRITE
|
||||
(byte*) SPRITE#0
|
||||
(byte*) SPRITE#1
|
||||
(byte*) SPRITE#2
|
||||
(byte*) SPRITE#3
|
||||
(byte*) SPRITE#4
|
||||
(byte*) SPRITE#5
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
@ -952,30 +915,6 @@ SYMBOL TABLE SSA
|
||||
(byte) YELLOW#0
|
||||
(byte*) YSIN
|
||||
(byte*) YSIN#0
|
||||
(byte*) YSIN#1
|
||||
(byte*) YSIN#10
|
||||
(byte*) YSIN#11
|
||||
(byte*) YSIN#12
|
||||
(byte*) YSIN#13
|
||||
(byte*) YSIN#14
|
||||
(byte*) YSIN#15
|
||||
(byte*) YSIN#16
|
||||
(byte*) YSIN#17
|
||||
(byte*) YSIN#18
|
||||
(byte*) YSIN#19
|
||||
(byte*) YSIN#2
|
||||
(byte*) YSIN#20
|
||||
(byte*) YSIN#21
|
||||
(byte*) YSIN#22
|
||||
(byte*) YSIN#23
|
||||
(byte*) YSIN#24
|
||||
(byte*) YSIN#3
|
||||
(byte*) YSIN#4
|
||||
(byte*) YSIN#5
|
||||
(byte*) YSIN#6
|
||||
(byte*) YSIN#7
|
||||
(byte*) YSIN#8
|
||||
(byte*) YSIN#9
|
||||
(void()) init()
|
||||
(byte~) init::$0
|
||||
(byte/word/dword~) init::$1
|
||||
@ -1454,25 +1393,21 @@ Alias (byte) plex_show_idx#29 = (byte) plex_show_idx#34
|
||||
Alias (byte) plex_sprite_idx#29 = (byte) plex_sprite_idx#34
|
||||
Alias (byte) plex_sprite_msb#26 = (byte) plex_sprite_msb#33
|
||||
Alias (byte) plex_free_next#24 = (byte) plex_free_next#31
|
||||
Alias (byte*) YSIN#11 = (byte*) YSIN#9
|
||||
Alias (byte*) PLEX_SCREEN_PTR#10 = (byte*) PLEX_SCREEN_PTR#3 (byte*) PLEX_SCREEN_PTR#18 (byte*) PLEX_SCREEN_PTR#11 (byte*) PLEX_SCREEN_PTR#4
|
||||
Alias (byte) plex_show_idx#16 = (byte) plex_show_idx#5 (byte) plex_show_idx#17 (byte) plex_show_idx#6
|
||||
Alias (byte) plex_sprite_idx#16 = (byte) plex_sprite_idx#5 (byte) plex_sprite_idx#17 (byte) plex_sprite_idx#6
|
||||
Alias (byte) plex_sprite_msb#17 = (byte) plex_sprite_msb#6 (byte) plex_sprite_msb#18 (byte) plex_sprite_msb#7
|
||||
Alias (byte) plex_free_next#14 = (byte) plex_free_next#5 (byte) plex_free_next#15 (byte) plex_free_next#6
|
||||
Alias (byte*) SPRITE#2 = (byte*) SPRITE#3
|
||||
Alias (byte*) PLEX_SCREEN_PTR#12 = (byte*) PLEX_SCREEN_PTR#5
|
||||
Alias (byte*) PLEX_SCREEN_PTR#24 = (byte*) PLEX_SCREEN_PTR#28
|
||||
Alias (byte*) PLEX_SCREEN_PTR#13 = (byte*) PLEX_SCREEN_PTR#20 (byte*) PLEX_SCREEN_PTR#6
|
||||
Alias (byte) loop::sin_idx#6 = (byte) loop::sin_idx#8
|
||||
Alias (byte*) YSIN#4 = (byte*) YSIN#6
|
||||
Alias (byte) plex_show_idx#20 = (byte) plex_show_idx#47 (byte) plex_show_idx#31 (byte) plex_show_idx#9
|
||||
Alias (byte) plex_sprite_idx#20 = (byte) plex_sprite_idx#47 (byte) plex_sprite_idx#31 (byte) plex_sprite_idx#9
|
||||
Alias (byte) plex_sprite_msb#10 = (byte) plex_sprite_msb#47 (byte) plex_sprite_msb#29 (byte) plex_sprite_msb#21
|
||||
Alias (byte) plex_free_next#19 = (byte) plex_free_next#48 (byte) plex_free_next#28 (byte) plex_free_next#9
|
||||
Alias (byte*) PLEX_SCREEN_PTR#44 = (byte*) PLEX_SCREEN_PTR#46
|
||||
Alias (byte) loop::sin_idx#2 = (byte) loop::sin_idx#7 (byte) loop::sin_idx#4 (byte) loop::y_idx#0
|
||||
Alias (byte*) YSIN#2 = (byte*) YSIN#5 (byte*) YSIN#3
|
||||
Alias (byte) plex_show_idx#42 = (byte) plex_show_idx#48 (byte) plex_show_idx#45
|
||||
Alias (byte) plex_sprite_idx#42 = (byte) plex_sprite_idx#48 (byte) plex_sprite_idx#45
|
||||
Alias (byte) plex_sprite_msb#42 = (byte) plex_sprite_msb#48 (byte) plex_sprite_msb#45
|
||||
@ -1484,7 +1419,6 @@ Alias (byte) plex_sprite_idx#30 = (byte) plex_sprite_idx#37
|
||||
Alias (byte) plex_sprite_msb#27 = (byte) plex_sprite_msb#36
|
||||
Alias (byte) plex_free_next#25 = (byte) plex_free_next#34
|
||||
Alias (byte*) PLEX_SCREEN_PTR#38 = (byte*) PLEX_SCREEN_PTR#40 (byte*) PLEX_SCREEN_PTR#41
|
||||
Alias (byte*) YSIN#1 = (byte*) YSIN#24 (byte*) YSIN#22
|
||||
Alias (byte) loop::sin_idx#1 = (byte) loop::sin_idx#20
|
||||
Alias (byte) plex_show_idx#18 = (byte) plex_show_idx#7
|
||||
Alias (byte) plex_sprite_idx#18 = (byte) plex_sprite_idx#7
|
||||
@ -1496,7 +1430,6 @@ Alias (byte) plex_show_idx#51 = (byte) plex_show_idx#53 (byte) plex_show_idx#52
|
||||
Alias (byte) plex_sprite_msb#51 = (byte) plex_sprite_msb#53 (byte) plex_sprite_msb#52
|
||||
Alias (byte*) PLEX_SCREEN_PTR#35 = (byte*) PLEX_SCREEN_PTR#39 (byte*) PLEX_SCREEN_PTR#37
|
||||
Alias (byte) loop::sin_idx#18 = (byte) loop::sin_idx#21 (byte) loop::sin_idx#19
|
||||
Alias (byte*) YSIN#20 = (byte*) YSIN#23 (byte*) YSIN#21
|
||||
Alias (byte) plex_free_next#17 = (byte) plex_free_next#26 (byte) plex_free_next#47 (byte) plex_free_next#43
|
||||
Alias (byte) plex_sprite_idx#44 = (byte) plex_sprite_idx#49 (byte) plex_sprite_idx#50 (byte) plex_sprite_idx#46
|
||||
Alias (byte) plex_show_idx#44 = (byte) plex_show_idx#49 (byte) plex_show_idx#50 (byte) plex_show_idx#46
|
||||
@ -1504,7 +1437,6 @@ Alias (byte) plex_sprite_msb#44 = (byte) plex_sprite_msb#49 (byte) plex_sprite_m
|
||||
Alias (byte) loop::ss#6 = (byte) loop::ss#8 (byte) loop::ss#9 (byte) loop::ss#7
|
||||
Alias (byte*) PLEX_SCREEN_PTR#31 = (byte*) PLEX_SCREEN_PTR#33 (byte*) PLEX_SCREEN_PTR#34 (byte*) PLEX_SCREEN_PTR#32
|
||||
Alias (byte) loop::sin_idx#14 = (byte) loop::sin_idx#16 (byte) loop::sin_idx#17 (byte) loop::sin_idx#15
|
||||
Alias (byte*) YSIN#16 = (byte*) YSIN#18 (byte*) YSIN#19 (byte*) YSIN#17
|
||||
Alias (byte) loop::plexFreeNextYpos1_return#0 = (byte) loop::plexFreeNextYpos1_return#2 (byte) loop::plexFreeNextYpos1_return#1 (byte) loop::plexFreeNextYpos1_return#3 (byte~) loop::$7 (byte) loop::rasterY#0
|
||||
Alias (byte) loop::rasterY#1 = (byte) loop::rasterY#2
|
||||
Alias (byte) plex_sprite_idx#23 = (byte) plex_sprite_idx#43 (byte) plex_sprite_idx#38
|
||||
@ -1514,14 +1446,10 @@ Alias (byte) plex_sprite_msb#28 = (byte) plex_sprite_msb#43 (byte) plex_sprite_m
|
||||
Alias (byte) loop::ss#2 = (byte) loop::ss#5 (byte) loop::ss#4 (byte) loop::ss#3
|
||||
Alias (byte*) PLEX_SCREEN_PTR#26 = (byte*) PLEX_SCREEN_PTR#30 (byte*) PLEX_SCREEN_PTR#29 (byte*) PLEX_SCREEN_PTR#36 (byte*) PLEX_SCREEN_PTR#48
|
||||
Alias (byte) loop::sin_idx#10 = (byte) loop::sin_idx#13 (byte) loop::sin_idx#12 (byte) loop::sin_idx#11 (byte) loop::sin_idx#9
|
||||
Alias (byte*) YSIN#10 = (byte*) YSIN#15 (byte*) YSIN#14 (byte*) YSIN#12 (byte*) YSIN#8
|
||||
Alias (byte) plex_free_next#18 = (byte) plex_free_next#8 (byte) plex_free_next#33
|
||||
Alias (byte) plex_sprite_idx#19 = (byte) plex_sprite_idx#8 (byte) plex_sprite_idx#36
|
||||
Alias (byte) plex_show_idx#19 = (byte) plex_show_idx#8 (byte) plex_show_idx#36
|
||||
Alias (byte) plex_sprite_msb#20 = (byte) plex_sprite_msb#9 (byte) plex_sprite_msb#35
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
|
||||
Alias (byte*) SPRITE#0 = (byte*) SPRITE#5
|
||||
Alias (byte*) YSIN#0 = (byte*) YSIN#13
|
||||
Alias (byte*) PLEX_SCREEN_PTR#14 = (byte*) PLEX_SCREEN_PTR#7
|
||||
Alias (byte) plex_show_idx#10 = (byte) plex_show_idx#21
|
||||
Alias (byte) plex_sprite_idx#10 = (byte) plex_sprite_idx#21
|
||||
@ -1542,17 +1470,14 @@ Self Phi Eliminated (byte) plexSort::m#5
|
||||
Self Phi Eliminated (byte) plex_show_idx#11
|
||||
Self Phi Eliminated (byte) plex_sprite_idx#11
|
||||
Self Phi Eliminated (byte) plex_sprite_msb#12
|
||||
Self Phi Eliminated (byte*) SPRITE#1
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#24
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#13
|
||||
Self Phi Eliminated (byte) loop::sin_idx#2
|
||||
Self Phi Eliminated (byte*) YSIN#2
|
||||
Self Phi Eliminated (byte) plex_show_idx#42
|
||||
Self Phi Eliminated (byte) plex_sprite_idx#42
|
||||
Self Phi Eliminated (byte) plex_sprite_msb#42
|
||||
Self Phi Eliminated (byte) plex_free_next#40
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#42
|
||||
Self Phi Eliminated (byte*) YSIN#1
|
||||
Self Phi Eliminated (byte) loop::sin_idx#3
|
||||
Self Phi Eliminated (byte) plex_show_idx#30
|
||||
Self Phi Eliminated (byte) plex_sprite_idx#30
|
||||
@ -1565,7 +1490,6 @@ Self Phi Eliminated (byte) plex_show_idx#51
|
||||
Self Phi Eliminated (byte) plex_sprite_msb#51
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#35
|
||||
Self Phi Eliminated (byte) loop::sin_idx#18
|
||||
Self Phi Eliminated (byte*) YSIN#20
|
||||
Self Phi Eliminated (byte) loop::rasterY#1
|
||||
Self Phi Eliminated (byte) plex_sprite_idx#23
|
||||
Self Phi Eliminated (byte) plex_show_idx#23
|
||||
@ -1574,7 +1498,6 @@ Self Phi Eliminated (byte) plex_sprite_msb#28
|
||||
Self Phi Eliminated (byte) loop::ss#2
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#26
|
||||
Self Phi Eliminated (byte) loop::sin_idx#10
|
||||
Self Phi Eliminated (byte*) YSIN#10
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) plexInit::plexSetScreen1_screen#0 (byte*) plexInit::screen#0
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#15 (byte*) PLEX_SCREEN_PTR#1
|
||||
@ -1590,39 +1513,30 @@ Redundant Phi (byte) plex_free_next#12 (byte) plex_free_next#27
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#16 (byte*) PLEX_SCREEN_PTR#26
|
||||
Redundant Phi (byte) plex_sprite_msb#13 (byte) plex_sprite_msb#28
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#17 (byte*) PLEX_SCREEN_PTR#0
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
|
||||
Redundant Phi (byte) plex_show_idx#29 (byte) plex_show_idx#0
|
||||
Redundant Phi (byte) plex_sprite_idx#29 (byte) plex_sprite_idx#0
|
||||
Redundant Phi (byte) plex_sprite_msb#26 (byte) plex_sprite_msb#0
|
||||
Redundant Phi (byte) plex_free_next#24 (byte) plex_free_next#29
|
||||
Redundant Phi (byte*) SPRITE#4 (byte*) SPRITE#0
|
||||
Redundant Phi (byte*) YSIN#11 (byte*) YSIN#0
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#10 (byte*) PLEX_SCREEN_PTR#13
|
||||
Redundant Phi (byte) plex_show_idx#16 (byte) plex_show_idx#20
|
||||
Redundant Phi (byte) plex_sprite_idx#16 (byte) plex_sprite_idx#20
|
||||
Redundant Phi (byte) plex_sprite_msb#17 (byte) plex_sprite_msb#10
|
||||
Redundant Phi (byte) plex_free_next#14 (byte) plex_free_next#19
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#19 (byte*) PLEX_SCREEN_PTR#17
|
||||
Redundant Phi (byte*) SPRITE#2 (byte*) SPRITE#4
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#12 (byte*) PLEX_SCREEN_PTR#15
|
||||
Redundant Phi (byte*) SPRITE#1 (byte*) SPRITE#2
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#24 (byte*) PLEX_SCREEN_PTR#12
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#13 (byte*) PLEX_SCREEN_PTR#24
|
||||
Redundant Phi (byte) plex_show_idx#35 (byte) plex_show_idx#29
|
||||
Redundant Phi (byte) plex_sprite_idx#35 (byte) plex_sprite_idx#29
|
||||
Redundant Phi (byte) plex_sprite_msb#34 (byte) plex_sprite_msb#26
|
||||
Redundant Phi (byte) plex_free_next#32 (byte) plex_free_next#24
|
||||
Redundant Phi (byte*) YSIN#7 (byte*) YSIN#11
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#47 (byte*) PLEX_SCREEN_PTR#10
|
||||
Redundant Phi (byte) loop::sin_idx#2 (byte) loop::sin_idx#6
|
||||
Redundant Phi (byte*) YSIN#2 (byte*) YSIN#4
|
||||
Redundant Phi (byte) plex_show_idx#42 (byte) plex_show_idx#20
|
||||
Redundant Phi (byte) plex_sprite_idx#42 (byte) plex_sprite_idx#20
|
||||
Redundant Phi (byte) plex_sprite_msb#42 (byte) plex_sprite_msb#10
|
||||
Redundant Phi (byte) plex_free_next#40 (byte) plex_free_next#19
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#42 (byte*) PLEX_SCREEN_PTR#44
|
||||
Redundant Phi (byte*) YSIN#1 (byte*) YSIN#2
|
||||
Redundant Phi (byte) loop::sin_idx#3 (byte) loop::sin_idx#2
|
||||
Redundant Phi (byte) plex_show_idx#30 (byte) plex_show_idx#42
|
||||
Redundant Phi (byte) plex_sprite_idx#30 (byte) plex_sprite_idx#42
|
||||
@ -1639,7 +1553,6 @@ Redundant Phi (byte) plex_show_idx#51 (byte) plex_show_idx#18
|
||||
Redundant Phi (byte) plex_sprite_msb#51 (byte) plex_sprite_msb#19
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#35 (byte*) PLEX_SCREEN_PTR#38
|
||||
Redundant Phi (byte) loop::sin_idx#18 (byte) loop::sin_idx#1
|
||||
Redundant Phi (byte*) YSIN#20 (byte*) YSIN#1
|
||||
Redundant Phi (byte) loop::rasterY#1 (byte) loop::plexFreeNextYpos1_return#0
|
||||
Redundant Phi (byte) plex_sprite_idx#23 (byte) plex_sprite_idx#44
|
||||
Redundant Phi (byte) plex_show_idx#23 (byte) plex_show_idx#44
|
||||
@ -1648,7 +1561,6 @@ Redundant Phi (byte) plex_sprite_msb#28 (byte) plex_sprite_msb#44
|
||||
Redundant Phi (byte) loop::ss#2 (byte) loop::ss#6
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#26 (byte*) PLEX_SCREEN_PTR#31
|
||||
Redundant Phi (byte) loop::sin_idx#10 (byte) loop::sin_idx#14
|
||||
Redundant Phi (byte*) YSIN#10 (byte*) YSIN#16
|
||||
Redundant Phi (byte) plex_free_next#18 (byte) plex_free_next#13
|
||||
Redundant Phi (byte) plex_sprite_idx#19 (byte) plex_sprite_idx#15
|
||||
Redundant Phi (byte) plex_show_idx#19 (byte) plex_show_idx#15
|
||||
@ -1847,19 +1759,15 @@ Alias (byte) plexSort::s#3 = (byte~) plexSort::$4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#31
|
||||
Self Phi Eliminated (byte) loop::sin_idx#14
|
||||
Self Phi Eliminated (byte*) YSIN#16
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#31 (byte*) PLEX_SCREEN_PTR#44
|
||||
Redundant Phi (byte) loop::sin_idx#14 (byte) loop::sin_idx#1
|
||||
Redundant Phi (byte*) YSIN#16 (byte*) YSIN#4
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) plexSort::$5 [18] if((byte) plexSort::s#1!=(byte/word/signed word/dword/signed dword) $ff) goto plexSort::@8
|
||||
Simple Condition (bool~) plexSort::$6 [94] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Self Phi Eliminated (byte*) YSIN#4
|
||||
Self Phi Eliminated (byte*) PLEX_SCREEN_PTR#44
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) YSIN#4 (const byte*) YSIN#0
|
||||
Redundant Phi (byte*) PLEX_SCREEN_PTR#44 (const byte*) PLEX_SCREEN_PTR#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const byte) plexInit::i#0
|
||||
|
@ -1,4 +1,7 @@
|
||||
Resolved forward reference SPRITE to (byte*) SPRITE
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) COS
|
||||
Identified constant variable (byte*) SPRITE
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call call mulf8s_prepare (signed byte) mulf8s::a
|
||||
Inlined call call mulf8s_prepare (signed byte) anim::cos_a
|
||||
@ -280,15 +283,11 @@ mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
||||
to:@15
|
||||
main: scope:[main] from @16
|
||||
(byte*) SIN#10 ← phi( @16/(byte*) SIN#13 )
|
||||
(byte*) COS#10 ← phi( @16/(byte*) COS#13 )
|
||||
(byte*) SPRITE#4 ← phi( @16/(byte*) SPRITE#0 )
|
||||
(byte*) SCREEN#3 ← phi( @16/(byte*) SCREEN#4 )
|
||||
asm { sei }
|
||||
call init
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) SIN#8 ← phi( main/(byte*) SIN#10 )
|
||||
(byte*) COS#8 ← phi( main/(byte*) COS#10 )
|
||||
call anim
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
@ -297,23 +296,18 @@ main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
init: scope:[init] from main
|
||||
(byte*) SPRITE#3 ← phi( main/(byte*) SPRITE#4 )
|
||||
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 )
|
||||
call mulf_init
|
||||
to:init::@3
|
||||
init::@3: scope:[init] from init
|
||||
(byte*) SPRITE#2 ← phi( init/(byte*) SPRITE#3 )
|
||||
(byte*) SCREEN#1 ← phi( init/(byte*) SCREEN#2 )
|
||||
*((byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) $ff
|
||||
(byte*~) init::$1 ← (byte*) SCREEN#1 + (word/signed word/dword/signed dword) $3f8
|
||||
(byte*~) init::$1 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $3f8
|
||||
(byte*) init::sprites_ptr#0 ← (byte*~) init::$1
|
||||
(byte) init::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:init::@1
|
||||
init::@1: scope:[init] from init::@1 init::@3
|
||||
(byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte) init::i#0 )
|
||||
(byte*) init::sprites_ptr#1 ← phi( init::@1/(byte*) init::sprites_ptr#1 init::@3/(byte*) init::sprites_ptr#0 )
|
||||
(byte*) SPRITE#1 ← phi( init::@1/(byte*) SPRITE#1 init::@3/(byte*) SPRITE#2 )
|
||||
(byte*~) init::$2 ← (byte*) SPRITE#1 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte*~) init::$2 ← (byte*) SPRITE#0 / (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
(byte~) init::$3 ← ((byte)) (byte*~) init::$2
|
||||
*((byte*) init::sprites_ptr#1 + (byte) init::i#2) ← (byte~) init::$3
|
||||
*((byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (byte) GREEN#0
|
||||
@ -326,8 +320,6 @@ init::@return: scope:[init] from init::@1
|
||||
to:@return
|
||||
@15: scope:[] from @13
|
||||
(byte*) SIN#16 ← phi( @13/(byte*) SIN#0 )
|
||||
(byte*) COS#16 ← phi( @13/(byte*) COS#0 )
|
||||
(byte*) SCREEN#5 ← phi( @13/(byte*) SCREEN#0 )
|
||||
(signed byte/signed word/signed dword~) $1 ← - (byte/signed byte/word/signed word/dword/signed dword) $46
|
||||
(signed byte/signed word/signed dword~) $2 ← - (byte/signed byte/word/signed word/dword/signed dword) $46
|
||||
(signed byte/signed word/signed dword~) $3 ← - (byte/signed byte/word/signed word/dword/signed dword) $46
|
||||
@ -339,38 +331,32 @@ init::@return: scope:[init] from init::@1
|
||||
to:@16
|
||||
anim: scope:[anim] from main::@1
|
||||
(byte*) SIN#6 ← phi( main::@1/(byte*) SIN#8 )
|
||||
(byte*) COS#6 ← phi( main::@1/(byte*) COS#8 )
|
||||
(byte) anim::angle#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:anim::@1
|
||||
anim::@1: scope:[anim] from anim anim::@15
|
||||
(byte*) SIN#5 ← phi( anim/(byte*) SIN#6 anim::@15/(byte*) SIN#7 )
|
||||
(byte) anim::angle#10 ← phi( anim/(byte) anim::angle#0 anim::@15/(byte) anim::angle#1 )
|
||||
(byte*) COS#5 ← phi( anim/(byte*) COS#6 anim::@15/(byte*) COS#7 )
|
||||
if(true) goto anim::@2
|
||||
to:anim::@return
|
||||
anim::@2: scope:[anim] from anim::@1
|
||||
(byte*) SIN#3 ← phi( anim::@1/(byte*) SIN#5 )
|
||||
(byte) anim::angle#6 ← phi( anim::@1/(byte) anim::angle#10 )
|
||||
(byte*) COS#3 ← phi( anim::@1/(byte*) COS#5 )
|
||||
to:anim::@4
|
||||
anim::@4: scope:[anim] from anim::@2 anim::@5
|
||||
(byte*) SIN#2 ← phi( anim::@2/(byte*) SIN#3 anim::@5/(byte*) SIN#4 )
|
||||
(byte) anim::angle#4 ← phi( anim::@2/(byte) anim::angle#6 anim::@5/(byte) anim::angle#7 )
|
||||
(byte*) COS#2 ← phi( anim::@2/(byte*) COS#3 anim::@5/(byte*) COS#4 )
|
||||
(bool~) anim::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) anim::$0) goto anim::@5
|
||||
to:anim::@6
|
||||
anim::@5: scope:[anim] from anim::@4
|
||||
(byte*) SIN#4 ← phi( anim::@4/(byte*) SIN#2 )
|
||||
(byte) anim::angle#7 ← phi( anim::@4/(byte) anim::angle#4 )
|
||||
(byte*) COS#4 ← phi( anim::@4/(byte*) COS#2 )
|
||||
to:anim::@4
|
||||
anim::@6: scope:[anim] from anim::@4
|
||||
(byte*) SIN#1 ← phi( anim::@4/(byte*) SIN#2 )
|
||||
(byte) anim::angle#2 ← phi( anim::@4/(byte) anim::angle#4 )
|
||||
(byte*) COS#1 ← phi( anim::@4/(byte*) COS#2 )
|
||||
*((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
|
||||
(signed byte~) anim::$1 ← ((signed byte)) *((byte*) COS#1 + (byte) anim::angle#2)
|
||||
(signed byte~) anim::$1 ← ((signed byte)) *((byte*) COS#0 + (byte) anim::angle#2)
|
||||
(signed byte) anim::cos_a#0 ← (signed byte~) anim::$1
|
||||
(signed byte~) anim::$2 ← ((signed byte)) *((byte*) SIN#1 + (byte) anim::angle#2)
|
||||
(signed byte) anim::sin_a#0 ← (signed byte~) anim::$2
|
||||
@ -379,7 +365,6 @@ anim::@6: scope:[anim] from anim::@4
|
||||
to:anim::@7
|
||||
anim::@7: scope:[anim] from anim::@6 anim::@8
|
||||
(byte*) SIN#24 ← phi( anim::@6/(byte*) SIN#1 anim::@8/(byte*) SIN#9 )
|
||||
(byte*) COS#24 ← phi( anim::@6/(byte*) COS#1 anim::@8/(byte*) COS#9 )
|
||||
(byte) anim::angle#20 ← phi( anim::@6/(byte) anim::angle#2 anim::@8/(byte) anim::angle#5 )
|
||||
(byte) anim::sprite_msb#16 ← phi( anim::@6/(byte) anim::sprite_msb#0 anim::@8/(byte) anim::sprite_msb#7 )
|
||||
(signed byte) anim::sin_a#6 ← phi( anim::@6/(signed byte) anim::sin_a#0 anim::@8/(signed byte) anim::sin_a#7 )
|
||||
@ -391,7 +376,6 @@ anim::@7: scope:[anim] from anim::@6 anim::@8
|
||||
to:anim::mulf8s_prepare1
|
||||
anim::mulf8s_prepare1: scope:[anim] from anim::@7
|
||||
(byte*) SIN#23 ← phi( anim::@7/(byte*) SIN#24 )
|
||||
(byte*) COS#23 ← phi( anim::@7/(byte*) COS#24 )
|
||||
(byte) anim::angle#19 ← phi( anim::@7/(byte) anim::angle#20 )
|
||||
(signed byte) anim::cos_a#13 ← phi( anim::@7/(signed byte) anim::cos_a#1 )
|
||||
(byte) anim::i#14 ← phi( anim::@7/(byte) anim::i#2 )
|
||||
@ -406,7 +390,6 @@ anim::mulf8s_prepare1: scope:[anim] from anim::@7
|
||||
to:anim::@19
|
||||
anim::@19: scope:[anim] from anim::mulf8s_prepare1
|
||||
(byte*) SIN#22 ← phi( anim::mulf8s_prepare1/(byte*) SIN#23 )
|
||||
(byte*) COS#22 ← phi( anim::mulf8s_prepare1/(byte*) COS#23 )
|
||||
(byte) anim::angle#18 ← phi( anim::mulf8s_prepare1/(byte) anim::angle#19 )
|
||||
(signed byte) anim::cos_a#12 ← phi( anim::mulf8s_prepare1/(signed byte) anim::cos_a#13 )
|
||||
(byte) anim::i#13 ← phi( anim::mulf8s_prepare1/(byte) anim::i#14 )
|
||||
@ -417,7 +400,6 @@ anim::@19: scope:[anim] from anim::mulf8s_prepare1
|
||||
to:anim::@17
|
||||
anim::@17: scope:[anim] from anim::@19
|
||||
(byte*) SIN#21 ← phi( anim::@19/(byte*) SIN#22 )
|
||||
(byte*) COS#21 ← phi( anim::@19/(byte*) COS#22 )
|
||||
(byte) anim::angle#17 ← phi( anim::@19/(byte) anim::angle#18 )
|
||||
(signed byte) anim::cos_a#11 ← phi( anim::@19/(signed byte) anim::cos_a#12 )
|
||||
(byte) anim::i#12 ← phi( anim::@19/(byte) anim::i#13 )
|
||||
@ -431,7 +413,6 @@ anim::@17: scope:[anim] from anim::@19
|
||||
to:anim::@20
|
||||
anim::@20: scope:[anim] from anim::@17
|
||||
(byte*) SIN#20 ← phi( anim::@17/(byte*) SIN#21 )
|
||||
(byte*) COS#20 ← phi( anim::@17/(byte*) COS#21 )
|
||||
(byte) anim::angle#16 ← phi( anim::@17/(byte) anim::angle#17 )
|
||||
(signed byte) anim::cos_a#10 ← phi( anim::@17/(signed byte) anim::cos_a#11 )
|
||||
(byte) anim::i#11 ← phi( anim::@17/(byte) anim::i#12 )
|
||||
@ -449,7 +430,6 @@ anim::@20: scope:[anim] from anim::@17
|
||||
to:anim::@21
|
||||
anim::@21: scope:[anim] from anim::@20
|
||||
(byte*) SIN#19 ← phi( anim::@20/(byte*) SIN#20 )
|
||||
(byte*) COS#19 ← phi( anim::@20/(byte*) COS#20 )
|
||||
(byte) anim::angle#15 ← phi( anim::@20/(byte) anim::angle#16 )
|
||||
(signed byte) anim::cos_a#9 ← phi( anim::@20/(signed byte) anim::cos_a#10 )
|
||||
(byte) anim::i#10 ← phi( anim::@20/(byte) anim::i#11 )
|
||||
@ -467,7 +447,6 @@ anim::@21: scope:[anim] from anim::@20
|
||||
anim::mulf8s_prepare2: scope:[anim] from anim::@21
|
||||
(signed byte) anim::sin_a#13 ← phi( anim::@21/(signed byte) anim::sin_a#1 )
|
||||
(byte*) SIN#18 ← phi( anim::@21/(byte*) SIN#19 )
|
||||
(byte*) COS#18 ← phi( anim::@21/(byte*) COS#19 )
|
||||
(byte) anim::angle#14 ← phi( anim::@21/(byte) anim::angle#15 )
|
||||
(signed byte) anim::cos_a#8 ← phi( anim::@21/(signed byte) anim::cos_a#9 )
|
||||
(byte) anim::i#9 ← phi( anim::@21/(byte) anim::i#10 )
|
||||
@ -484,7 +463,6 @@ anim::mulf8s_prepare2: scope:[anim] from anim::@21
|
||||
anim::@22: scope:[anim] from anim::mulf8s_prepare2
|
||||
(signed byte) anim::sin_a#12 ← phi( anim::mulf8s_prepare2/(signed byte) anim::sin_a#13 )
|
||||
(byte*) SIN#17 ← phi( anim::mulf8s_prepare2/(byte*) SIN#18 )
|
||||
(byte*) COS#17 ← phi( anim::mulf8s_prepare2/(byte*) COS#18 )
|
||||
(byte) anim::angle#13 ← phi( anim::mulf8s_prepare2/(byte) anim::angle#14 )
|
||||
(signed byte) anim::cos_a#7 ← phi( anim::mulf8s_prepare2/(signed byte) anim::cos_a#8 )
|
||||
(byte) anim::i#8 ← phi( anim::mulf8s_prepare2/(byte) anim::i#9 )
|
||||
@ -497,7 +475,6 @@ anim::@22: scope:[anim] from anim::mulf8s_prepare2
|
||||
anim::@18: scope:[anim] from anim::@22
|
||||
(signed byte) anim::sin_a#11 ← phi( anim::@22/(signed byte) anim::sin_a#12 )
|
||||
(byte*) SIN#15 ← phi( anim::@22/(byte*) SIN#17 )
|
||||
(byte*) COS#15 ← phi( anim::@22/(byte*) COS#17 )
|
||||
(byte) anim::angle#12 ← phi( anim::@22/(byte) anim::angle#13 )
|
||||
(signed byte) anim::cos_a#6 ← phi( anim::@22/(signed byte) anim::cos_a#7 )
|
||||
(byte) anim::i#7 ← phi( anim::@22/(byte) anim::i#8 )
|
||||
@ -513,7 +490,6 @@ anim::@18: scope:[anim] from anim::@22
|
||||
anim::@23: scope:[anim] from anim::@18
|
||||
(signed byte) anim::sin_a#10 ← phi( anim::@18/(signed byte) anim::sin_a#11 )
|
||||
(byte*) SIN#14 ← phi( anim::@18/(byte*) SIN#15 )
|
||||
(byte*) COS#14 ← phi( anim::@18/(byte*) COS#15 )
|
||||
(byte) anim::angle#11 ← phi( anim::@18/(byte) anim::angle#12 )
|
||||
(signed byte) anim::cos_a#5 ← phi( anim::@18/(signed byte) anim::cos_a#6 )
|
||||
(byte) anim::i#6 ← phi( anim::@18/(byte) anim::i#7 )
|
||||
@ -532,7 +508,6 @@ anim::@23: scope:[anim] from anim::@18
|
||||
anim::@24: scope:[anim] from anim::@23
|
||||
(signed byte) anim::sin_a#9 ← phi( anim::@23/(signed byte) anim::sin_a#10 )
|
||||
(byte*) SIN#12 ← phi( anim::@23/(byte*) SIN#14 )
|
||||
(byte*) COS#12 ← phi( anim::@23/(byte*) COS#14 )
|
||||
(byte) anim::angle#9 ← phi( anim::@23/(byte) anim::angle#11 )
|
||||
(signed byte) anim::cos_a#4 ← phi( anim::@23/(signed byte) anim::cos_a#5 )
|
||||
(byte) anim::i#5 ← phi( anim::@23/(byte) anim::i#6 )
|
||||
@ -558,7 +533,6 @@ anim::@24: scope:[anim] from anim::@23
|
||||
anim::@8: scope:[anim] from anim::@14 anim::@24
|
||||
(signed byte) anim::sin_a#7 ← phi( anim::@14/(signed byte) anim::sin_a#8 anim::@24/(signed byte) anim::sin_a#9 )
|
||||
(byte*) SIN#9 ← phi( anim::@14/(byte*) SIN#11 anim::@24/(byte*) SIN#12 )
|
||||
(byte*) COS#9 ← phi( anim::@14/(byte*) COS#11 anim::@24/(byte*) COS#12 )
|
||||
(byte) anim::angle#5 ← phi( anim::@14/(byte) anim::angle#8 anim::@24/(byte) anim::angle#9 )
|
||||
(byte) anim::sprite_msb#7 ← phi( anim::@14/(byte) anim::sprite_msb#2 anim::@24/(byte) anim::sprite_msb#1 )
|
||||
(signed byte) anim::cos_a#2 ← phi( anim::@14/(signed byte) anim::cos_a#3 anim::@24/(signed byte) anim::cos_a#4 )
|
||||
@ -581,7 +555,6 @@ anim::@8: scope:[anim] from anim::@14 anim::@24
|
||||
anim::@14: scope:[anim] from anim::@24
|
||||
(signed byte) anim::sin_a#8 ← phi( anim::@24/(signed byte) anim::sin_a#9 )
|
||||
(byte*) SIN#11 ← phi( anim::@24/(byte*) SIN#12 )
|
||||
(byte*) COS#11 ← phi( anim::@24/(byte*) COS#12 )
|
||||
(byte) anim::angle#8 ← phi( anim::@24/(byte) anim::angle#9 )
|
||||
(signed byte) anim::cos_a#3 ← phi( anim::@24/(signed byte) anim::cos_a#4 )
|
||||
(signed word) anim::xpos#2 ← phi( anim::@24/(signed word) anim::xpos#0 )
|
||||
@ -592,7 +565,6 @@ anim::@14: scope:[anim] from anim::@24
|
||||
to:anim::@8
|
||||
anim::@15: scope:[anim] from anim::@8
|
||||
(byte*) SIN#7 ← phi( anim::@8/(byte*) SIN#9 )
|
||||
(byte*) COS#7 ← phi( anim::@8/(byte*) COS#9 )
|
||||
(byte) anim::angle#3 ← phi( anim::@8/(byte) anim::angle#5 )
|
||||
(byte) anim::sprite_msb#5 ← phi( anim::@8/(byte) anim::sprite_msb#7 )
|
||||
*((byte*) SPRITES_XMSB#0) ← (byte) anim::sprite_msb#5
|
||||
@ -604,8 +576,6 @@ anim::@return: scope:[anim] from anim::@1
|
||||
to:@return
|
||||
@16: scope:[] from @15
|
||||
(byte*) SIN#13 ← phi( @15/(byte*) SIN#16 )
|
||||
(byte*) COS#13 ← phi( @15/(byte*) COS#16 )
|
||||
(byte*) SCREEN#4 ← phi( @15/(byte*) SCREEN#5 )
|
||||
(byte*) SPRITE#0 ← ((byte*)) (word/signed word/dword/signed dword) $3000
|
||||
kickasm(location (byte*) SPRITE#0) {{ .var pic = LoadPicture("balloon.png", List().add($000000, $ffffff))
|
||||
.for (var y=0; y<21; y++)
|
||||
@ -679,30 +649,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) COLS#0
|
||||
(byte*) COS
|
||||
(byte*) COS#0
|
||||
(byte*) COS#1
|
||||
(byte*) COS#10
|
||||
(byte*) COS#11
|
||||
(byte*) COS#12
|
||||
(byte*) COS#13
|
||||
(byte*) COS#14
|
||||
(byte*) COS#15
|
||||
(byte*) COS#16
|
||||
(byte*) COS#17
|
||||
(byte*) COS#18
|
||||
(byte*) COS#19
|
||||
(byte*) COS#2
|
||||
(byte*) COS#20
|
||||
(byte*) COS#21
|
||||
(byte*) COS#22
|
||||
(byte*) COS#23
|
||||
(byte*) COS#24
|
||||
(byte*) COS#3
|
||||
(byte*) COS#4
|
||||
(byte*) COS#5
|
||||
(byte*) COS#6
|
||||
(byte*) COS#7
|
||||
(byte*) COS#8
|
||||
(byte*) COS#9
|
||||
(byte) CYAN
|
||||
(byte) CYAN#0
|
||||
(byte*) D011
|
||||
@ -771,11 +717,6 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SIN
|
||||
(byte*) SIN#0
|
||||
(byte*) SIN#1
|
||||
@ -804,10 +745,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) SIN#9
|
||||
(byte*) SPRITE
|
||||
(byte*) SPRITE#0
|
||||
(byte*) SPRITE#1
|
||||
(byte*) SPRITE#2
|
||||
(byte*) SPRITE#3
|
||||
(byte*) SPRITE#4
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
@ -1246,7 +1183,7 @@ Inversing boolean not [94] (bool~) mulf_init::$4 ← (byte~) mulf_init::$2 != (b
|
||||
Inversing boolean not [124] (bool~) mulf_init::$14 ← (byte) mulf_init::x_255#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [123] (bool~) mulf_init::$13 ← (byte) mulf_init::x_255#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [164] (bool~) mulf8s_prepared::$3 ← *((signed byte*) mulf8s_prepared::memA#0) >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [163] (bool~) mulf8s_prepared::$2 ← *((signed byte*) mulf8s_prepared::memA#0) < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [168] (bool~) mulf8s_prepared::$9 ← (signed byte) mulf8s_prepared::b#5 >= (byte/signed byte/word/signed word/dword/signed dword) 0 from [167] (bool~) mulf8s_prepared::$8 ← (signed byte) mulf8s_prepared::b#5 < (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [295] (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [294] (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [293] (bool~) anim::$20 ← (byte~) anim::$18 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [292] (bool~) anim::$19 ← (byte~) anim::$18 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) mulf_init::sqr1_hi#0 = (byte*~) mulf_init::$0
|
||||
Alias (byte*) mulf_init::sqr1_lo#0 = (byte*~) mulf_init::$1
|
||||
@ -1270,17 +1207,10 @@ Alias (signed word) mulf8s_prepared::return#0 = (signed word~) mulf8s_prepared::
|
||||
Alias (word) mulf8s_prepared::m#5 = (word) mulf8s_prepared::m#6
|
||||
Alias (byte~) mulf8s_prepared::$16 = (byte~) mulf8s_prepared::$13
|
||||
Alias (byte*) SIN#0 = (byte*~) $0 (byte*) SIN#16 (byte*) SIN#13
|
||||
Alias (byte*) COS#10 = (byte*) COS#8
|
||||
Alias (byte*) SIN#10 = (byte*) SIN#8
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
|
||||
Alias (byte*) SPRITE#2 = (byte*) SPRITE#3
|
||||
Alias (byte*) init::sprites_ptr#0 = (byte*~) init::$1
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#5 (byte*) SCREEN#4
|
||||
Alias (byte*) COS#0 = (byte*) COS#16 (byte*) COS#13
|
||||
Alias (byte*) COS#3 = (byte*) COS#5
|
||||
Alias (byte) anim::angle#10 = (byte) anim::angle#6
|
||||
Alias (byte*) SIN#3 = (byte*) SIN#5
|
||||
Alias (byte*) COS#1 = (byte*) COS#4 (byte*) COS#2
|
||||
Alias (byte) anim::angle#2 = (byte) anim::angle#7 (byte) anim::angle#4
|
||||
Alias (byte*) SIN#1 = (byte*) SIN#4 (byte*) SIN#2
|
||||
Alias (signed byte) anim::cos_a#0 = (signed byte~) anim::$1
|
||||
@ -1292,7 +1222,6 @@ Alias (signed byte) anim::sin_a#1 = (signed byte) anim::sin_a#5 (signed byte) an
|
||||
Alias (byte) anim::sprite_msb#10 = (byte) anim::sprite_msb#15 (byte) anim::sprite_msb#16 (byte) anim::sprite_msb#14 (byte) anim::sprite_msb#13 (byte) anim::sprite_msb#12 (byte) anim::sprite_msb#11 (byte) anim::sprite_msb#9 (byte) anim::sprite_msb#8 (byte) anim::sprite_msb#6 (byte) anim::sprite_msb#3
|
||||
Alias (byte) anim::i#10 = (byte) anim::i#14 (byte) anim::i#2 (byte) anim::i#13 (byte) anim::i#12 (byte) anim::i#11 (byte) anim::i#9 (byte) anim::i#8 (byte) anim::i#7 (byte) anim::i#6 (byte) anim::i#5 (byte) anim::i#4
|
||||
Alias (byte) anim::angle#11 = (byte) anim::angle#19 (byte) anim::angle#20 (byte) anim::angle#18 (byte) anim::angle#17 (byte) anim::angle#16 (byte) anim::angle#15 (byte) anim::angle#14 (byte) anim::angle#13 (byte) anim::angle#12 (byte) anim::angle#9 (byte) anim::angle#8
|
||||
Alias (byte*) COS#11 = (byte*) COS#23 (byte*) COS#24 (byte*) COS#22 (byte*) COS#21 (byte*) COS#20 (byte*) COS#19 (byte*) COS#18 (byte*) COS#17 (byte*) COS#15 (byte*) COS#14 (byte*) COS#12
|
||||
Alias (byte*) SIN#11 = (byte*) SIN#23 (byte*) SIN#24 (byte*) SIN#22 (byte*) SIN#21 (byte*) SIN#20 (byte*) SIN#19 (byte*) SIN#18 (byte*) SIN#17 (byte*) SIN#15 (byte*) SIN#14 (byte*) SIN#12
|
||||
Alias (byte) mulf8u_prepare::a#0 = (byte) anim::mulf8s_prepare1_$0#0
|
||||
Alias (signed word) mulf8s_prepared::return#2 = (signed word) mulf8s_prepared::return#7
|
||||
@ -1310,7 +1239,6 @@ Alias (byte) anim::i2#0 = (byte~) anim::$24
|
||||
Alias (signed word) anim::yr#1 = (signed word) anim::yr#5
|
||||
Alias (byte) anim::sprite_msb#5 = (byte) anim::sprite_msb#7
|
||||
Alias (byte) anim::angle#3 = (byte) anim::angle#5
|
||||
Alias (byte*) COS#7 = (byte*) COS#9
|
||||
Alias (byte*) SIN#7 = (byte*) SIN#9
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) mulf_init::sqr1_lo#2 = (byte*) mulf_init::sqr1_lo#3
|
||||
@ -1325,39 +1253,26 @@ Alias (byte) anim::i#10 = (byte) anim::i#3
|
||||
Alias (signed word) anim::xpos#0 = (signed word) anim::xpos#1
|
||||
Alias (signed byte) anim::cos_a#1 = (signed byte) anim::cos_a#2
|
||||
Alias (byte) anim::angle#11 = (byte) anim::angle#3
|
||||
Alias (byte*) COS#11 = (byte*) COS#7
|
||||
Alias (byte*) SIN#11 = (byte*) SIN#7
|
||||
Alias (signed byte) anim::sin_a#1 = (signed byte) anim::sin_a#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SPRITE#1
|
||||
Self Phi Eliminated (byte*) init::sprites_ptr#1
|
||||
Self Phi Eliminated (byte*) COS#1
|
||||
Self Phi Eliminated (byte) anim::angle#2
|
||||
Self Phi Eliminated (byte*) SIN#1
|
||||
Self Phi Eliminated (signed byte) anim::cos_a#1
|
||||
Self Phi Eliminated (signed byte) anim::sin_a#1
|
||||
Self Phi Eliminated (byte) anim::angle#11
|
||||
Self Phi Eliminated (byte*) COS#11
|
||||
Self Phi Eliminated (byte*) SIN#11
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte) mulf8u_prepared::b#1 (byte) mulf8u_prepared::b#0
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SPRITE#4 (byte*) SPRITE#0
|
||||
Redundant Phi (byte*) COS#10 (byte*) COS#0
|
||||
Redundant Phi (byte*) SIN#10 (byte*) SIN#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#3
|
||||
Redundant Phi (byte*) SPRITE#2 (byte*) SPRITE#4
|
||||
Redundant Phi (byte*) SPRITE#1 (byte*) SPRITE#2
|
||||
Redundant Phi (byte*) init::sprites_ptr#1 (byte*) init::sprites_ptr#0
|
||||
Redundant Phi (byte*) COS#6 (byte*) COS#10
|
||||
Redundant Phi (byte*) SIN#6 (byte*) SIN#10
|
||||
Redundant Phi (byte*) COS#1 (byte*) COS#3
|
||||
Redundant Phi (byte) anim::angle#2 (byte) anim::angle#10
|
||||
Redundant Phi (byte*) SIN#1 (byte*) SIN#3
|
||||
Redundant Phi (signed byte) anim::cos_a#1 (signed byte) anim::cos_a#0
|
||||
Redundant Phi (signed byte) anim::sin_a#1 (signed byte) anim::sin_a#0
|
||||
Redundant Phi (byte) anim::angle#11 (byte) anim::angle#2
|
||||
Redundant Phi (byte*) COS#11 (byte*) COS#1
|
||||
Redundant Phi (byte*) SIN#11 (byte*) SIN#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) mulf_init::$4 [95] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
@ -1366,10 +1281,10 @@ Simple Condition (bool~) mulf_init::$14 [125] if((byte) mulf_init::x_255#1!=(byt
|
||||
Simple Condition (bool~) mulf_init::$16 [130] if((byte*) mulf_init::sqr2_lo#1!=(byte*~) mulf_init::$15) goto mulf_init::@3
|
||||
Simple Condition (bool~) mulf8s_prepared::$3 [165] if(*((signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
Simple Condition (bool~) mulf8s_prepared::$9 [169] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
Simple Condition (bool~) init::$4 [213] if((byte) init::i#1!=rangelast(0,7)) goto init::@1
|
||||
Simple Condition (bool~) anim::$0 [231] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto anim::@5
|
||||
Simple Condition (bool~) anim::$20 [296] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8
|
||||
Simple Condition (bool~) anim::$26 [309] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7
|
||||
Simple Condition (bool~) init::$4 [211] if((byte) init::i#1!=rangelast(0,7)) goto init::@1
|
||||
Simple Condition (bool~) anim::$0 [229] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto anim::@5
|
||||
Simple Condition (bool~) anim::$20 [294] if((byte~) anim::$18==(byte/signed byte/word/signed word/dword/signed dword) 0) goto anim::@8
|
||||
Simple Condition (bool~) anim::$26 [307] if((byte) anim::i#1!=rangelast(0,7)) goto anim::@7
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
@ -1511,7 +1426,7 @@ Eliminating Noop Cast (byte) mulf8u_prepared::b#0 ← ((byte)) (signed byte) mul
|
||||
Eliminating Noop Cast (byte~) mulf8s_prepared::$6 ← ((byte)) (signed byte) mulf8s_prepared::b#4
|
||||
Eliminating Noop Cast (signed word) mulf8s_prepared::return#0 ← ((signed word)) (word) mulf8s_prepared::m#4
|
||||
Eliminating Noop Cast (byte~) mulf8s_prepared::$12 ← ((byte)) *((const signed byte*) mulf8s_prepared::memA#0)
|
||||
Eliminating Noop Cast (signed byte) anim::cos_a#0 ← ((signed byte)) *((byte*) COS#3 + (byte) anim::angle#10)
|
||||
Eliminating Noop Cast (signed byte) anim::cos_a#0 ← ((signed byte)) *((const byte*) COS#0 + (byte) anim::angle#10)
|
||||
Eliminating Noop Cast (signed byte) anim::sin_a#0 ← ((signed byte)) *((byte*) SIN#3 + (byte) anim::angle#10)
|
||||
Eliminating Noop Cast (byte) mulf8u_prepare::a#0 ← ((byte)) (signed byte) anim::cos_a#0
|
||||
Eliminating Noop Cast (byte) mulf8u_prepare::a#1 ← ((byte)) (signed byte) anim::sin_a#0
|
||||
@ -1534,10 +1449,8 @@ Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (word) mulf8u_prepared::return#0 = (word~) mulf8u_prepared::$0
|
||||
Alias (byte~) anim::$22 = (byte~) anim::$21
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) COS#3
|
||||
Self Phi Eliminated (byte*) SIN#3
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) COS#3 (const byte*) COS#0
|
||||
Redundant Phi (byte*) SIN#3 (const byte*) SIN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const word) mulf_init::sqr#0
|
||||
|
@ -1,3 +1,8 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte*) BGCOL
|
||||
Identified constant variable (byte*) SCROLL
|
||||
Identified constant variable (byte*) TEXT
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -8,93 +13,55 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) TEXT#0 ← (const string) $0
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte*) SCROLL#12 ← phi( @2/(byte*) SCROLL#13 )
|
||||
(byte*) BGCOL#11 ← phi( @2/(byte*) BGCOL#13 )
|
||||
(byte*) RASTER#5 ← phi( @2/(byte*) RASTER#7 )
|
||||
(byte*) TEXT#3 ← phi( @2/(byte*) TEXT#5 )
|
||||
(byte*) SCREEN#1 ← phi( @2/(byte*) SCREEN#3 )
|
||||
(byte*) fillscreen::screen#0 ← (byte*) SCREEN#1
|
||||
(byte*) fillscreen::screen#0 ← (byte*) SCREEN#0
|
||||
(byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
call fillscreen
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main
|
||||
(byte*) SCROLL#10 ← phi( main/(byte*) SCROLL#12 )
|
||||
(byte*) BGCOL#9 ← phi( main/(byte*) BGCOL#11 )
|
||||
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#5 )
|
||||
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte*) TEXT#1 ← phi( main/(byte*) TEXT#3 )
|
||||
(byte) main::scroll#0 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*) main::nxt#0 ← (byte*) TEXT#1
|
||||
(byte*~) main::$1 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte*) main::nxt#0 ← (byte*) TEXT#0
|
||||
(byte*~) main::$1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte[]) main::line#0 ← (byte*~) main::$1
|
||||
to:main::@2
|
||||
main::@1: scope:[main] from main::@4
|
||||
(byte*) TEXT#11 ← phi( main::@4/(byte*) TEXT#12 )
|
||||
(byte*) main::nxt#10 ← phi( main::@4/(byte*) main::nxt#11 )
|
||||
(byte*) SCROLL#9 ← phi( main::@4/(byte*) SCROLL#1 )
|
||||
(byte) main::scroll#10 ← phi( main::@4/(byte) main::scroll#4 )
|
||||
(byte*) BGCOL#8 ← phi( main::@4/(byte*) BGCOL#2 )
|
||||
(byte*) RASTER#3 ← phi( main::@4/(byte*) RASTER#6 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@13 main::@2
|
||||
(byte*) TEXT#10 ← phi( main::@1/(byte*) TEXT#11 main::@13/(byte*) TEXT#1 main::@2/(byte*) TEXT#10 )
|
||||
(byte*) main::nxt#9 ← phi( main::@1/(byte*) main::nxt#10 main::@13/(byte*) main::nxt#0 main::@2/(byte*) main::nxt#9 )
|
||||
(byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#9 main::@13/(byte*) SCROLL#10 main::@2/(byte*) SCROLL#7 )
|
||||
(byte) main::scroll#7 ← phi( main::@1/(byte) main::scroll#10 main::@13/(byte) main::scroll#0 main::@2/(byte) main::scroll#7 )
|
||||
(byte*) BGCOL#5 ← phi( main::@1/(byte*) BGCOL#8 main::@13/(byte*) BGCOL#9 main::@2/(byte*) BGCOL#5 )
|
||||
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@13/(byte*) RASTER#4 main::@2/(byte*) RASTER#1 )
|
||||
(bool~) main::$2 ← *((byte*) RASTER#1) != (byte/word/signed word/dword/signed dword) $fe
|
||||
(bool~) main::$2 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $fe
|
||||
if((bool~) main::$2) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@3
|
||||
(byte*) TEXT#9 ← phi( main::@2/(byte*) TEXT#10 main::@3/(byte*) TEXT#9 )
|
||||
(byte*) main::nxt#8 ← phi( main::@2/(byte*) main::nxt#9 main::@3/(byte*) main::nxt#8 )
|
||||
(byte*) SCROLL#4 ← phi( main::@2/(byte*) SCROLL#7 main::@3/(byte*) SCROLL#4 )
|
||||
(byte) main::scroll#5 ← phi( main::@2/(byte) main::scroll#7 main::@3/(byte) main::scroll#5 )
|
||||
(byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#5 main::@3/(byte*) BGCOL#3 )
|
||||
(byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 )
|
||||
(bool~) main::$3 ← *((byte*) RASTER#2) != (byte/word/signed word/dword/signed dword) $ff
|
||||
(bool~) main::$3 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) main::$3) goto main::@3
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@3
|
||||
(byte*) TEXT#8 ← phi( main::@3/(byte*) TEXT#9 )
|
||||
(byte*) main::nxt#7 ← phi( main::@3/(byte*) main::nxt#8 )
|
||||
(byte*) RASTER#9 ← phi( main::@3/(byte*) RASTER#2 )
|
||||
(byte*) SCROLL#3 ← phi( main::@3/(byte*) SCROLL#4 )
|
||||
(byte) main::scroll#3 ← phi( main::@3/(byte) main::scroll#5 )
|
||||
(byte*) BGCOL#1 ← phi( main::@3/(byte*) BGCOL#3 )
|
||||
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
|
||||
*((byte*) BGCOL#0) ← ++ *((byte*) BGCOL#0)
|
||||
(byte) main::scroll#1 ← -- (byte) main::scroll#3
|
||||
(bool~) main::$4 ← (byte) main::scroll#1 == (byte/word/signed word/dword/signed dword) $ff
|
||||
(bool~) main::$5 ← ! (bool~) main::$4
|
||||
if((bool~) main::$5) goto main::@4
|
||||
to:main::@9
|
||||
main::@4: scope:[main] from main::@6 main::@8
|
||||
(byte*) TEXT#12 ← phi( main::@6/(byte*) TEXT#13 main::@8/(byte*) TEXT#8 )
|
||||
(byte*) main::nxt#11 ← phi( main::@6/(byte*) main::nxt#1 main::@8/(byte*) main::nxt#7 )
|
||||
(byte*) RASTER#6 ← phi( main::@6/(byte*) RASTER#8 main::@8/(byte*) RASTER#9 )
|
||||
(byte*) BGCOL#2 ← phi( main::@6/(byte*) BGCOL#4 main::@8/(byte*) BGCOL#1 )
|
||||
(byte*) SCROLL#1 ← phi( main::@6/(byte*) SCROLL#2 main::@8/(byte*) SCROLL#3 )
|
||||
(byte) main::scroll#4 ← phi( main::@6/(byte) main::scroll#6 main::@8/(byte) main::scroll#1 )
|
||||
*((byte*) SCROLL#1) ← (byte) main::scroll#4
|
||||
*((byte*) BGCOL#2) ← -- *((byte*) BGCOL#2)
|
||||
*((byte*) SCROLL#0) ← (byte) main::scroll#4
|
||||
*((byte*) BGCOL#0) ← -- *((byte*) BGCOL#0)
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@9: scope:[main] from main::@8
|
||||
(byte*) RASTER#13 ← phi( main::@8/(byte*) RASTER#9 )
|
||||
(byte*) BGCOL#12 ← phi( main::@8/(byte*) BGCOL#1 )
|
||||
(byte*) SCROLL#11 ← phi( main::@8/(byte*) SCROLL#3 )
|
||||
(byte*) TEXT#7 ← phi( main::@8/(byte*) TEXT#8 )
|
||||
(byte*) main::nxt#6 ← phi( main::@8/(byte*) main::nxt#7 )
|
||||
(byte) main::scroll#2 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@5 main::@9
|
||||
(byte*) RASTER#12 ← phi( main::@5/(byte*) RASTER#12 main::@9/(byte*) RASTER#13 )
|
||||
(byte*) BGCOL#10 ← phi( main::@5/(byte*) BGCOL#10 main::@9/(byte*) BGCOL#12 )
|
||||
(byte*) SCROLL#8 ← phi( main::@5/(byte*) SCROLL#8 main::@9/(byte*) SCROLL#11 )
|
||||
(byte) main::scroll#11 ← phi( main::@5/(byte) main::scroll#11 main::@9/(byte) main::scroll#2 )
|
||||
(byte*) TEXT#6 ← phi( main::@5/(byte*) TEXT#6 main::@9/(byte*) TEXT#7 )
|
||||
(byte*) main::nxt#5 ← phi( main::@5/(byte*) main::nxt#5 main::@9/(byte*) main::nxt#6 )
|
||||
(byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@9/(byte) main::i#0 )
|
||||
(byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -104,11 +71,7 @@ main::@5: scope:[main] from main::@5 main::@9
|
||||
if((bool~) main::$7) goto main::@5
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@5
|
||||
(byte*) RASTER#10 ← phi( main::@5/(byte*) RASTER#12 )
|
||||
(byte*) BGCOL#6 ← phi( main::@5/(byte*) BGCOL#10 )
|
||||
(byte*) SCROLL#5 ← phi( main::@5/(byte*) SCROLL#8 )
|
||||
(byte) main::scroll#8 ← phi( main::@5/(byte) main::scroll#11 )
|
||||
(byte*) TEXT#4 ← phi( main::@5/(byte*) TEXT#6 )
|
||||
(byte*) main::nxt#3 ← phi( main::@5/(byte*) main::nxt#5 )
|
||||
(byte) main::c#0 ← *((byte*) main::nxt#3)
|
||||
(bool~) main::$8 ← (byte) main::c#0 == (byte) '@'
|
||||
@ -116,10 +79,6 @@ main::@10: scope:[main] from main::@5
|
||||
if((bool~) main::$9) goto main::@6
|
||||
to:main::@11
|
||||
main::@6: scope:[main] from main::@10 main::@11
|
||||
(byte*) TEXT#13 ← phi( main::@10/(byte*) TEXT#4 main::@11/(byte*) TEXT#2 )
|
||||
(byte*) RASTER#8 ← phi( main::@10/(byte*) RASTER#10 main::@11/(byte*) RASTER#11 )
|
||||
(byte*) BGCOL#4 ← phi( main::@10/(byte*) BGCOL#6 main::@11/(byte*) BGCOL#7 )
|
||||
(byte*) SCROLL#2 ← phi( main::@10/(byte*) SCROLL#5 main::@11/(byte*) SCROLL#6 )
|
||||
(byte) main::scroll#6 ← phi( main::@10/(byte) main::scroll#8 main::@11/(byte) main::scroll#9 )
|
||||
(byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#3 main::@11/(byte*) main::nxt#2 )
|
||||
(byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 )
|
||||
@ -127,12 +86,8 @@ main::@6: scope:[main] from main::@10 main::@11
|
||||
(byte*) main::nxt#1 ← ++ (byte*) main::nxt#4
|
||||
to:main::@4
|
||||
main::@11: scope:[main] from main::@10
|
||||
(byte*) RASTER#11 ← phi( main::@10/(byte*) RASTER#10 )
|
||||
(byte*) BGCOL#7 ← phi( main::@10/(byte*) BGCOL#6 )
|
||||
(byte*) SCROLL#6 ← phi( main::@10/(byte*) SCROLL#5 )
|
||||
(byte) main::scroll#9 ← phi( main::@10/(byte) main::scroll#8 )
|
||||
(byte*) TEXT#2 ← phi( main::@10/(byte*) TEXT#4 )
|
||||
(byte*) main::nxt#2 ← (byte*) TEXT#2
|
||||
(byte*) main::nxt#2 ← (byte*) TEXT#0
|
||||
(byte) main::c#1 ← *((byte*) main::nxt#2)
|
||||
to:main::@6
|
||||
main::@return: scope:[main] from main::@4
|
||||
@ -157,11 +112,6 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte*) SCROLL#13 ← phi( @begin/(byte*) SCROLL#0 )
|
||||
(byte*) BGCOL#13 ← phi( @begin/(byte*) BGCOL#0 )
|
||||
(byte*) RASTER#7 ← phi( @begin/(byte*) RASTER#0 )
|
||||
(byte*) TEXT#5 ← phi( @begin/(byte*) TEXT#0 )
|
||||
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -176,69 +126,14 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL#1
|
||||
(byte*) BGCOL#10
|
||||
(byte*) BGCOL#11
|
||||
(byte*) BGCOL#12
|
||||
(byte*) BGCOL#13
|
||||
(byte*) BGCOL#2
|
||||
(byte*) BGCOL#3
|
||||
(byte*) BGCOL#4
|
||||
(byte*) BGCOL#5
|
||||
(byte*) BGCOL#6
|
||||
(byte*) BGCOL#7
|
||||
(byte*) BGCOL#8
|
||||
(byte*) BGCOL#9
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte*) RASTER#1
|
||||
(byte*) RASTER#10
|
||||
(byte*) RASTER#11
|
||||
(byte*) RASTER#12
|
||||
(byte*) RASTER#13
|
||||
(byte*) RASTER#2
|
||||
(byte*) RASTER#3
|
||||
(byte*) RASTER#4
|
||||
(byte*) RASTER#5
|
||||
(byte*) RASTER#6
|
||||
(byte*) RASTER#7
|
||||
(byte*) RASTER#8
|
||||
(byte*) RASTER#9
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCROLL
|
||||
(byte*) SCROLL#0
|
||||
(byte*) SCROLL#1
|
||||
(byte*) SCROLL#10
|
||||
(byte*) SCROLL#11
|
||||
(byte*) SCROLL#12
|
||||
(byte*) SCROLL#13
|
||||
(byte*) SCROLL#2
|
||||
(byte*) SCROLL#3
|
||||
(byte*) SCROLL#4
|
||||
(byte*) SCROLL#5
|
||||
(byte*) SCROLL#6
|
||||
(byte*) SCROLL#7
|
||||
(byte*) SCROLL#8
|
||||
(byte*) SCROLL#9
|
||||
(byte*) TEXT
|
||||
(byte*) TEXT#0
|
||||
(byte*) TEXT#1
|
||||
(byte*) TEXT#10
|
||||
(byte*) TEXT#11
|
||||
(byte*) TEXT#12
|
||||
(byte*) TEXT#13
|
||||
(byte*) TEXT#2
|
||||
(byte*) TEXT#3
|
||||
(byte*) TEXT#4
|
||||
(byte*) TEXT#5
|
||||
(byte*) TEXT#6
|
||||
(byte*) TEXT#7
|
||||
(byte*) TEXT#8
|
||||
(byte*) TEXT#9
|
||||
(void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill)
|
||||
(byte*~) fillscreen::$0
|
||||
(bool~) fillscreen::$1
|
||||
@ -317,100 +212,44 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [25] (bool~) main::$5 ← (byte) main::scroll#1 != (byte/word/signed word/dword/signed dword) $ff from [24] (bool~) main::$4 ← (byte) main::scroll#1 == (byte/word/signed word/dword/signed dword) $ff
|
||||
Inversing boolean not [43] (bool~) main::$9 ← (byte) main::c#0 != (byte) '@' from [42] (bool~) main::$8 ← (byte) main::c#0 == (byte) '@'
|
||||
Inversing boolean not [23] (bool~) main::$5 ← (byte) main::scroll#1 != (byte/word/signed word/dword/signed dword) $ff from [22] (bool~) main::$4 ← (byte) main::scroll#1 == (byte/word/signed word/dword/signed dword) $ff
|
||||
Inversing boolean not [41] (bool~) main::$9 ← (byte) main::c#0 != (byte) '@' from [40] (bool~) main::$8 ← (byte) main::c#0 == (byte) '@'
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) TEXT#1 = (byte*) TEXT#3
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
|
||||
Alias (byte*) RASTER#4 = (byte*) RASTER#5
|
||||
Alias (byte*) BGCOL#11 = (byte*) BGCOL#9
|
||||
Alias (byte*) SCROLL#10 = (byte*) SCROLL#12
|
||||
Alias (byte[]) main::line#0 = (byte*~) main::$1
|
||||
Alias (byte*) RASTER#3 = (byte*) RASTER#6
|
||||
Alias (byte*) BGCOL#2 = (byte*) BGCOL#8
|
||||
Alias (byte) main::scroll#10 = (byte) main::scroll#4
|
||||
Alias (byte*) SCROLL#1 = (byte*) SCROLL#9
|
||||
Alias (byte*) main::nxt#10 = (byte*) main::nxt#11
|
||||
Alias (byte*) TEXT#11 = (byte*) TEXT#12
|
||||
Alias (byte*) BGCOL#1 = (byte*) BGCOL#3 (byte*) BGCOL#12
|
||||
Alias (byte) main::scroll#3 = (byte) main::scroll#5
|
||||
Alias (byte*) SCROLL#11 = (byte*) SCROLL#3 (byte*) SCROLL#4
|
||||
Alias (byte*) RASTER#13 = (byte*) RASTER#9 (byte*) RASTER#2
|
||||
Alias (byte*) main::nxt#6 = (byte*) main::nxt#7 (byte*) main::nxt#8
|
||||
Alias (byte*) TEXT#7 = (byte*) TEXT#8 (byte*) TEXT#9
|
||||
Alias (byte*) main::nxt#3 = (byte*) main::nxt#5
|
||||
Alias (byte*) TEXT#2 = (byte*) TEXT#4 (byte*) TEXT#6
|
||||
Alias (byte) main::scroll#11 = (byte) main::scroll#8 (byte) main::scroll#9
|
||||
Alias (byte*) SCROLL#5 = (byte*) SCROLL#8 (byte*) SCROLL#6
|
||||
Alias (byte*) BGCOL#10 = (byte*) BGCOL#6 (byte*) BGCOL#7
|
||||
Alias (byte*) RASTER#10 = (byte*) RASTER#12 (byte*) RASTER#11
|
||||
Alias (byte*) fillscreen::cursor#0 = (byte*) fillscreen::screen#1
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
|
||||
Alias (byte*) TEXT#0 = (byte*) TEXT#5
|
||||
Alias (byte*) RASTER#0 = (byte*) RASTER#7
|
||||
Alias (byte*) BGCOL#0 = (byte*) BGCOL#13
|
||||
Alias (byte*) SCROLL#0 = (byte*) SCROLL#13
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::scroll#11 = (byte) main::scroll#6
|
||||
Alias (byte*) SCROLL#2 = (byte*) SCROLL#5
|
||||
Alias (byte*) BGCOL#10 = (byte*) BGCOL#4
|
||||
Alias (byte*) RASTER#10 = (byte*) RASTER#8
|
||||
Alias (byte*) TEXT#13 = (byte*) TEXT#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) BGCOL#5
|
||||
Self Phi Eliminated (byte) main::scroll#7
|
||||
Self Phi Eliminated (byte*) SCROLL#7
|
||||
Self Phi Eliminated (byte*) main::nxt#9
|
||||
Self Phi Eliminated (byte*) TEXT#10
|
||||
Self Phi Eliminated (byte*) RASTER#13
|
||||
Self Phi Eliminated (byte*) BGCOL#1
|
||||
Self Phi Eliminated (byte) main::scroll#3
|
||||
Self Phi Eliminated (byte*) SCROLL#11
|
||||
Self Phi Eliminated (byte*) main::nxt#6
|
||||
Self Phi Eliminated (byte*) TEXT#7
|
||||
Self Phi Eliminated (byte*) main::nxt#3
|
||||
Self Phi Eliminated (byte*) TEXT#13
|
||||
Self Phi Eliminated (byte) main::scroll#11
|
||||
Self Phi Eliminated (byte*) SCROLL#2
|
||||
Self Phi Eliminated (byte*) BGCOL#10
|
||||
Self Phi Eliminated (byte*) RASTER#10
|
||||
Self Phi Eliminated (byte) fillscreen::fill#1
|
||||
Self Phi Eliminated (byte*) fillscreen::screen#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) TEXT#1 (byte*) TEXT#0
|
||||
Redundant Phi (byte*) RASTER#4 (byte*) RASTER#0
|
||||
Redundant Phi (byte*) BGCOL#11 (byte*) BGCOL#0
|
||||
Redundant Phi (byte*) SCROLL#10 (byte*) SCROLL#0
|
||||
Redundant Phi (byte*) RASTER#13 (byte*) RASTER#1
|
||||
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#5
|
||||
Redundant Phi (byte) main::scroll#3 (byte) main::scroll#7
|
||||
Redundant Phi (byte*) SCROLL#11 (byte*) SCROLL#7
|
||||
Redundant Phi (byte*) main::nxt#6 (byte*) main::nxt#9
|
||||
Redundant Phi (byte*) TEXT#7 (byte*) TEXT#10
|
||||
Redundant Phi (byte*) main::nxt#3 (byte*) main::nxt#6
|
||||
Redundant Phi (byte*) TEXT#13 (byte*) TEXT#7
|
||||
Redundant Phi (byte) main::scroll#11 (byte) main::scroll#2
|
||||
Redundant Phi (byte*) SCROLL#2 (byte*) SCROLL#11
|
||||
Redundant Phi (byte*) BGCOL#10 (byte*) BGCOL#1
|
||||
Redundant Phi (byte*) RASTER#10 (byte*) RASTER#13
|
||||
Redundant Phi (byte*) fillscreen::cursor#0 (byte*) fillscreen::screen#0
|
||||
Redundant Phi (byte) fillscreen::fill#2 (byte) fillscreen::fill#0
|
||||
Redundant Phi (byte) fillscreen::fill#1 (byte) fillscreen::fill#2
|
||||
Redundant Phi (byte*) fillscreen::screen#2 (byte*) fillscreen::cursor#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Redundant Phi (byte*) SCROLL#1 (byte*) SCROLL#7
|
||||
Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#5
|
||||
Redundant Phi (byte*) RASTER#3 (byte*) RASTER#1
|
||||
Redundant Phi (byte*) TEXT#11 (byte*) TEXT#10
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$2 [17] if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) $fe) goto main::@2
|
||||
Simple Condition (bool~) main::$3 [20] if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@3
|
||||
Simple Condition (bool~) main::$5 [26] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) $ff) goto main::@4
|
||||
Simple Condition (bool~) main::$7 [39] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $27) goto main::@5
|
||||
Simple Condition (bool~) main::$9 [44] if((byte) main::c#0!=(byte) '@') goto main::@6
|
||||
Simple Condition (bool~) fillscreen::$1 [59] if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1
|
||||
Simple Condition (bool~) main::$2 [15] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fe) goto main::@2
|
||||
Simple Condition (bool~) main::$3 [18] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@3
|
||||
Simple Condition (bool~) main::$5 [24] if((byte) main::scroll#1!=(byte/word/signed word/dword/signed dword) $ff) goto main::@4
|
||||
Simple Condition (bool~) main::$7 [37] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $27) goto main::@5
|
||||
Simple Condition (bool~) main::$9 [42] if((byte) main::c#0!=(byte) '@') goto main::@6
|
||||
Simple Condition (bool~) fillscreen::$1 [57] if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte*) RASTER#0 = ((byte*))$d012
|
||||
@ -425,6 +264,7 @@ Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) fillscreen::screen#0 = SCREEN#0
|
||||
Constant (const byte*) main::nxt#0 = TEXT#0
|
||||
Constant (const byte[]) main::line#0 = SCREEN#0+$28
|
||||
Constant (const byte*) main::nxt#2 = TEXT#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+$3e8
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
@ -442,18 +282,6 @@ Culled Empty Block (label) main::@9
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::i#2 = (byte~) main::$6
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) BGCOL#5
|
||||
Self Phi Eliminated (byte*) SCROLL#7
|
||||
Self Phi Eliminated (byte*) TEXT#10
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) RASTER#1 (const byte*) RASTER#0
|
||||
Redundant Phi (byte*) BGCOL#5 (const byte*) BGCOL#0
|
||||
Redundant Phi (byte*) SCROLL#7 (const byte*) SCROLL#0
|
||||
Redundant Phi (byte*) TEXT#10 (const byte*) TEXT#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) main::nxt#2 = TEXT#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Inlining constant with var siblings (const byte) main::scroll#0
|
||||
Inlining constant with var siblings (const byte) main::scroll#2
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
|
@ -1,3 +1,10 @@
|
||||
Identified constant variable (byte*) PROCPORT
|
||||
Identified constant variable (byte*) CHARGEN
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte*) BGCOL
|
||||
Identified constant variable (byte*) SCROLL
|
||||
Identified constant variable (byte*) TEXT
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -10,100 +17,51 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) TEXT#0 ← (const string) $0
|
||||
to:@1
|
||||
main: scope:[main] from @6
|
||||
(byte*) TEXT#15 ← phi( @6/(byte*) TEXT#17 )
|
||||
(byte*) CHARGEN#13 ← phi( @6/(byte*) CHARGEN#15 )
|
||||
(byte*) PROCPORT#17 ← phi( @6/(byte*) PROCPORT#19 )
|
||||
(byte*) SCROLL#10 ← phi( @6/(byte*) SCROLL#12 )
|
||||
(byte*) current_chargen#31 ← phi( @6/(byte*) current_chargen#21 )
|
||||
(byte*) nxt#37 ← phi( @6/(byte*) nxt#26 )
|
||||
(byte) current_bit#32 ← phi( @6/(byte) current_bit#23 )
|
||||
(byte) scroll#22 ← phi( @6/(byte) scroll#15 )
|
||||
(byte*) BGCOL#7 ← phi( @6/(byte*) BGCOL#8 )
|
||||
(byte*) RASTER#5 ← phi( @6/(byte*) RASTER#7 )
|
||||
(byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#4 )
|
||||
(byte*) fillscreen::screen#0 ← (byte*) SCREEN#1
|
||||
(byte*) fillscreen::screen#0 ← (byte*) SCREEN#0
|
||||
(byte) fillscreen::fill#0 ← (byte/signed byte/word/signed word/dword/signed dword) $20
|
||||
call fillscreen
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main
|
||||
(byte*) TEXT#14 ← phi( main/(byte*) TEXT#15 )
|
||||
(byte*) CHARGEN#12 ← phi( main/(byte*) CHARGEN#13 )
|
||||
(byte*) SCREEN#19 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte*) PROCPORT#16 ← phi( main/(byte*) PROCPORT#17 )
|
||||
(byte*) SCROLL#9 ← phi( main/(byte*) SCROLL#10 )
|
||||
(byte*) current_chargen#30 ← phi( main/(byte*) current_chargen#31 )
|
||||
(byte*) nxt#35 ← phi( main/(byte*) nxt#37 )
|
||||
(byte) current_bit#31 ← phi( main/(byte) current_bit#32 )
|
||||
(byte) scroll#21 ← phi( main/(byte) scroll#22 )
|
||||
(byte*) BGCOL#6 ← phi( main/(byte*) BGCOL#7 )
|
||||
(byte*) RASTER#4 ← phi( main/(byte*) RASTER#5 )
|
||||
to:main::@2
|
||||
main::@1: scope:[main] from main::@8
|
||||
(byte*) TEXT#13 ← phi( main::@8/(byte*) TEXT#16 )
|
||||
(byte*) CHARGEN#11 ← phi( main::@8/(byte*) CHARGEN#14 )
|
||||
(byte*) SCREEN#18 ← phi( main::@8/(byte*) SCREEN#20 )
|
||||
(byte*) PROCPORT#15 ← phi( main::@8/(byte*) PROCPORT#18 )
|
||||
(byte*) SCROLL#8 ← phi( main::@8/(byte*) SCROLL#11 )
|
||||
(byte*) current_chargen#29 ← phi( main::@8/(byte*) current_chargen#0 )
|
||||
(byte*) nxt#34 ← phi( main::@8/(byte*) nxt#0 )
|
||||
(byte) current_bit#30 ← phi( main::@8/(byte) current_bit#0 )
|
||||
(byte) scroll#20 ← phi( main::@8/(byte) scroll#0 )
|
||||
(byte*) BGCOL#5 ← phi( main::@8/(byte*) BGCOL#2 )
|
||||
(byte*) RASTER#3 ← phi( main::@8/(byte*) RASTER#6 )
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2 main::@7
|
||||
(byte*) TEXT#12 ← phi( main::@1/(byte*) TEXT#13 main::@2/(byte*) TEXT#12 main::@7/(byte*) TEXT#14 )
|
||||
(byte*) CHARGEN#10 ← phi( main::@1/(byte*) CHARGEN#11 main::@2/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#12 )
|
||||
(byte*) SCREEN#17 ← phi( main::@1/(byte*) SCREEN#18 main::@2/(byte*) SCREEN#17 main::@7/(byte*) SCREEN#19 )
|
||||
(byte*) PROCPORT#14 ← phi( main::@1/(byte*) PROCPORT#15 main::@2/(byte*) PROCPORT#14 main::@7/(byte*) PROCPORT#16 )
|
||||
(byte*) SCROLL#7 ← phi( main::@1/(byte*) SCROLL#8 main::@2/(byte*) SCROLL#7 main::@7/(byte*) SCROLL#9 )
|
||||
(byte*) current_chargen#27 ← phi( main::@1/(byte*) current_chargen#29 main::@2/(byte*) current_chargen#27 main::@7/(byte*) current_chargen#30 )
|
||||
(byte*) nxt#31 ← phi( main::@1/(byte*) nxt#34 main::@2/(byte*) nxt#31 main::@7/(byte*) nxt#35 )
|
||||
(byte) current_bit#29 ← phi( main::@1/(byte) current_bit#30 main::@2/(byte) current_bit#29 main::@7/(byte) current_bit#31 )
|
||||
(byte) scroll#18 ← phi( main::@1/(byte) scroll#20 main::@2/(byte) scroll#18 main::@7/(byte) scroll#21 )
|
||||
(byte*) BGCOL#4 ← phi( main::@1/(byte*) BGCOL#5 main::@2/(byte*) BGCOL#4 main::@7/(byte*) BGCOL#6 )
|
||||
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#1 main::@7/(byte*) RASTER#4 )
|
||||
(bool~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word/dword/signed dword) $fe
|
||||
(bool~) main::$1 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $fe
|
||||
if((bool~) main::$1) goto main::@2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@2 main::@3
|
||||
(byte*) TEXT#11 ← phi( main::@2/(byte*) TEXT#12 main::@3/(byte*) TEXT#11 )
|
||||
(byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#10 main::@3/(byte*) CHARGEN#9 )
|
||||
(byte*) SCREEN#16 ← phi( main::@2/(byte*) SCREEN#17 main::@3/(byte*) SCREEN#16 )
|
||||
(byte*) PROCPORT#13 ← phi( main::@2/(byte*) PROCPORT#14 main::@3/(byte*) PROCPORT#13 )
|
||||
(byte*) SCROLL#6 ← phi( main::@2/(byte*) SCROLL#7 main::@3/(byte*) SCROLL#6 )
|
||||
(byte*) current_chargen#22 ← phi( main::@2/(byte*) current_chargen#27 main::@3/(byte*) current_chargen#22 )
|
||||
(byte*) nxt#27 ← phi( main::@2/(byte*) nxt#31 main::@3/(byte*) nxt#27 )
|
||||
(byte) current_bit#24 ← phi( main::@2/(byte) current_bit#29 main::@3/(byte) current_bit#24 )
|
||||
(byte) scroll#16 ← phi( main::@2/(byte) scroll#18 main::@3/(byte) scroll#16 )
|
||||
(byte*) BGCOL#3 ← phi( main::@2/(byte*) BGCOL#4 main::@3/(byte*) BGCOL#3 )
|
||||
(byte*) RASTER#2 ← phi( main::@2/(byte*) RASTER#1 main::@3/(byte*) RASTER#2 )
|
||||
(bool~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word/dword/signed dword) $ff
|
||||
(bool~) main::$2 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) main::$2) goto main::@3
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@3
|
||||
(byte*) TEXT#10 ← phi( main::@3/(byte*) TEXT#11 )
|
||||
(byte*) CHARGEN#8 ← phi( main::@3/(byte*) CHARGEN#9 )
|
||||
(byte*) SCREEN#15 ← phi( main::@3/(byte*) SCREEN#16 )
|
||||
(byte*) PROCPORT#12 ← phi( main::@3/(byte*) PROCPORT#13 )
|
||||
(byte*) RASTER#8 ← phi( main::@3/(byte*) RASTER#2 )
|
||||
(byte*) SCROLL#4 ← phi( main::@3/(byte*) SCROLL#6 )
|
||||
(byte*) current_chargen#15 ← phi( main::@3/(byte*) current_chargen#22 )
|
||||
(byte*) nxt#21 ← phi( main::@3/(byte*) nxt#27 )
|
||||
(byte) current_bit#17 ← phi( main::@3/(byte) current_bit#24 )
|
||||
(byte) scroll#13 ← phi( main::@3/(byte) scroll#16 )
|
||||
(byte*) BGCOL#1 ← phi( main::@3/(byte*) BGCOL#3 )
|
||||
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
|
||||
*((byte*) BGCOL#0) ← ++ *((byte*) BGCOL#0)
|
||||
call scroll_soft
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@5
|
||||
(byte*) TEXT#16 ← phi( main::@5/(byte*) TEXT#10 )
|
||||
(byte*) CHARGEN#14 ← phi( main::@5/(byte*) CHARGEN#8 )
|
||||
(byte*) SCREEN#20 ← phi( main::@5/(byte*) SCREEN#15 )
|
||||
(byte*) PROCPORT#18 ← phi( main::@5/(byte*) PROCPORT#12 )
|
||||
(byte*) SCROLL#11 ← phi( main::@5/(byte*) SCROLL#4 )
|
||||
(byte*) RASTER#6 ← phi( main::@5/(byte*) RASTER#8 )
|
||||
(byte*) BGCOL#2 ← phi( main::@5/(byte*) BGCOL#1 )
|
||||
(byte*) current_chargen#8 ← phi( main::@5/(byte*) current_chargen#3 )
|
||||
(byte*) nxt#11 ← phi( main::@5/(byte*) nxt#3 )
|
||||
(byte) current_bit#9 ← phi( main::@5/(byte) current_bit#3 )
|
||||
@ -112,7 +70,7 @@ main::@8: scope:[main] from main::@5
|
||||
(byte) current_bit#0 ← (byte) current_bit#9
|
||||
(byte*) nxt#0 ← (byte*) nxt#11
|
||||
(byte*) current_chargen#0 ← (byte*) current_chargen#8
|
||||
*((byte*) BGCOL#2) ← -- *((byte*) BGCOL#2)
|
||||
*((byte*) BGCOL#0) ← -- *((byte*) BGCOL#0)
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@8
|
||||
@ -127,24 +85,12 @@ main::@return: scope:[main] from main::@8
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) PROCPORT#22 ← phi( @begin/(byte*) PROCPORT#0 )
|
||||
(byte*) SCROLL#15 ← phi( @begin/(byte*) SCROLL#0 )
|
||||
(byte*) BGCOL#11 ← phi( @begin/(byte*) BGCOL#0 )
|
||||
(byte*) RASTER#11 ← phi( @begin/(byte*) RASTER#0 )
|
||||
(byte*) SCREEN#14 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
(byte*) TEXT#5 ← phi( @begin/(byte*) TEXT#0 )
|
||||
(byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 )
|
||||
(byte) scroll#2 ← (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
to:@2
|
||||
scroll_soft: scope:[scroll_soft] from main::@5
|
||||
(byte*) TEXT#9 ← phi( main::@5/(byte*) TEXT#10 )
|
||||
(byte*) CHARGEN#7 ← phi( main::@5/(byte*) CHARGEN#8 )
|
||||
(byte*) SCREEN#13 ← phi( main::@5/(byte*) SCREEN#15 )
|
||||
(byte*) PROCPORT#11 ← phi( main::@5/(byte*) PROCPORT#12 )
|
||||
(byte*) current_chargen#23 ← phi( main::@5/(byte*) current_chargen#15 )
|
||||
(byte*) nxt#28 ← phi( main::@5/(byte*) nxt#21 )
|
||||
(byte) current_bit#25 ← phi( main::@5/(byte) current_bit#17 )
|
||||
(byte*) SCROLL#2 ← phi( main::@5/(byte*) SCROLL#4 )
|
||||
(byte) scroll#9 ← phi( main::@5/(byte) scroll#13 )
|
||||
(byte) scroll#3 ← -- (byte) scroll#9
|
||||
(bool~) scroll_soft::$0 ← (byte) scroll#3 == (byte/word/signed word/dword/signed dword) $ff
|
||||
@ -155,16 +101,10 @@ scroll_soft::@1: scope:[scroll_soft] from scroll_soft scroll_soft::@3
|
||||
(byte*) current_chargen#17 ← phi( scroll_soft/(byte*) current_chargen#23 scroll_soft::@3/(byte*) current_chargen#2 )
|
||||
(byte*) nxt#23 ← phi( scroll_soft/(byte*) nxt#28 scroll_soft::@3/(byte*) nxt#2 )
|
||||
(byte) current_bit#19 ← phi( scroll_soft/(byte) current_bit#25 scroll_soft::@3/(byte) current_bit#2 )
|
||||
(byte*) SCROLL#1 ← phi( scroll_soft/(byte*) SCROLL#2 scroll_soft::@3/(byte*) SCROLL#3 )
|
||||
(byte) scroll#10 ← phi( scroll_soft/(byte) scroll#3 scroll_soft::@3/(byte) scroll#14 )
|
||||
*((byte*) SCROLL#1) ← (byte) scroll#10
|
||||
*((byte*) SCROLL#0) ← (byte) scroll#10
|
||||
to:scroll_soft::@return
|
||||
scroll_soft::@2: scope:[scroll_soft] from scroll_soft
|
||||
(byte*) TEXT#8 ← phi( scroll_soft/(byte*) TEXT#9 )
|
||||
(byte*) CHARGEN#6 ← phi( scroll_soft/(byte*) CHARGEN#7 )
|
||||
(byte*) SCREEN#10 ← phi( scroll_soft/(byte*) SCREEN#13 )
|
||||
(byte*) PROCPORT#9 ← phi( scroll_soft/(byte*) PROCPORT#11 )
|
||||
(byte*) SCROLL#5 ← phi( scroll_soft/(byte*) SCROLL#2 )
|
||||
(byte*) current_chargen#16 ← phi( scroll_soft/(byte*) current_chargen#23 )
|
||||
(byte*) nxt#22 ← phi( scroll_soft/(byte*) nxt#28 )
|
||||
(byte) current_bit#18 ← phi( scroll_soft/(byte) current_bit#25 )
|
||||
@ -172,7 +112,6 @@ scroll_soft::@2: scope:[scroll_soft] from scroll_soft
|
||||
call scroll_bit
|
||||
to:scroll_soft::@3
|
||||
scroll_soft::@3: scope:[scroll_soft] from scroll_soft::@2
|
||||
(byte*) SCROLL#3 ← phi( scroll_soft::@2/(byte*) SCROLL#5 )
|
||||
(byte) scroll#14 ← phi( scroll_soft::@2/(byte) scroll#4 )
|
||||
(byte*) current_chargen#10 ← phi( scroll_soft::@2/(byte*) current_chargen#6 )
|
||||
(byte*) nxt#13 ← phi( scroll_soft::@2/(byte*) nxt#5 )
|
||||
@ -193,24 +132,13 @@ scroll_soft::@return: scope:[scroll_soft] from scroll_soft::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @1
|
||||
(byte*) PROCPORT#21 ← phi( @1/(byte*) PROCPORT#22 )
|
||||
(byte*) SCROLL#14 ← phi( @1/(byte*) SCROLL#15 )
|
||||
(byte*) BGCOL#10 ← phi( @1/(byte*) BGCOL#11 )
|
||||
(byte*) RASTER#10 ← phi( @1/(byte*) RASTER#11 )
|
||||
(byte) scroll#19 ← phi( @1/(byte) scroll#2 )
|
||||
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#14 )
|
||||
(byte*) TEXT#3 ← phi( @1/(byte*) TEXT#5 )
|
||||
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
|
||||
(byte*) current_chargen#4 ← (byte*) CHARGEN#1
|
||||
(byte*) current_chargen#4 ← (byte*) CHARGEN#0
|
||||
(byte) current_bit#4 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:@3
|
||||
scroll_bit: scope:[scroll_bit] from scroll_soft::@2
|
||||
(byte*) TEXT#7 ← phi( scroll_soft::@2/(byte*) TEXT#8 )
|
||||
(byte*) current_chargen#28 ← phi( scroll_soft::@2/(byte*) current_chargen#16 )
|
||||
(byte*) CHARGEN#5 ← phi( scroll_soft::@2/(byte*) CHARGEN#6 )
|
||||
(byte*) nxt#29 ← phi( scroll_soft::@2/(byte*) nxt#22 )
|
||||
(byte*) SCREEN#7 ← phi( scroll_soft::@2/(byte*) SCREEN#10 )
|
||||
(byte*) PROCPORT#5 ← phi( scroll_soft::@2/(byte*) PROCPORT#9 )
|
||||
(byte) current_bit#13 ← phi( scroll_soft::@2/(byte) current_bit#18 )
|
||||
(byte~) scroll_bit::$0 ← (byte) current_bit#13 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte) current_bit#5 ← (byte~) scroll_bit::$0
|
||||
@ -222,49 +150,37 @@ scroll_bit::@1: scope:[scroll_bit] from scroll_bit scroll_bit::@8
|
||||
(byte*) nxt#38 ← phi( scroll_bit/(byte*) nxt#29 scroll_bit::@8/(byte*) nxt#4 )
|
||||
(byte) current_bit#26 ← phi( scroll_bit/(byte) current_bit#5 scroll_bit::@8/(byte) current_bit#6 )
|
||||
(byte*) current_chargen#24 ← phi( scroll_bit/(byte*) current_chargen#28 scroll_bit::@8/(byte*) current_chargen#5 )
|
||||
(byte*) SCREEN#5 ← phi( scroll_bit/(byte*) SCREEN#7 scroll_bit::@8/(byte*) SCREEN#8 )
|
||||
(byte*) PROCPORT#3 ← phi( scroll_bit/(byte*) PROCPORT#5 scroll_bit::@8/(byte*) PROCPORT#6 )
|
||||
call scroll_hard
|
||||
to:scroll_bit::@7
|
||||
scroll_bit::@7: scope:[scroll_bit] from scroll_bit::@1
|
||||
(byte*) nxt#36 ← phi( scroll_bit::@1/(byte*) nxt#38 )
|
||||
(byte) current_bit#21 ← phi( scroll_bit::@1/(byte) current_bit#26 )
|
||||
(byte*) current_chargen#19 ← phi( scroll_bit::@1/(byte*) current_chargen#24 )
|
||||
(byte*) SCREEN#2 ← phi( scroll_bit::@1/(byte*) SCREEN#5 )
|
||||
(byte*) PROCPORT#1 ← phi( scroll_bit::@1/(byte*) PROCPORT#3 )
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*~) scroll_bit::$7 ← (byte*) SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*~) scroll_bit::$7 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte*~) scroll_bit::$8 ← (byte*~) scroll_bit::$7 + (byte/signed byte/word/signed word/dword/signed dword) $27
|
||||
(byte*) scroll_bit::sc#0 ← (byte*~) scroll_bit::$8
|
||||
(byte) scroll_bit::r#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:scroll_bit::@2
|
||||
scroll_bit::@4: scope:[scroll_bit] from scroll_bit
|
||||
(byte*) SCREEN#11 ← phi( scroll_bit/(byte*) SCREEN#7 )
|
||||
(byte*) PROCPORT#10 ← phi( scroll_bit/(byte*) PROCPORT#5 )
|
||||
(byte*) TEXT#6 ← phi( scroll_bit/(byte*) TEXT#7 )
|
||||
(byte*) CHARGEN#4 ← phi( scroll_bit/(byte*) CHARGEN#5 )
|
||||
(byte*) nxt#24 ← phi( scroll_bit/(byte*) nxt#29 )
|
||||
call next_char
|
||||
(byte) next_char::return#0 ← (byte) next_char::return#2
|
||||
to:scroll_bit::@8
|
||||
scroll_bit::@8: scope:[scroll_bit] from scroll_bit::@4
|
||||
(byte*) SCREEN#8 ← phi( scroll_bit::@4/(byte*) SCREEN#11 )
|
||||
(byte*) PROCPORT#6 ← phi( scroll_bit::@4/(byte*) PROCPORT#10 )
|
||||
(byte*) CHARGEN#2 ← phi( scroll_bit::@4/(byte*) CHARGEN#4 )
|
||||
(byte*) nxt#15 ← phi( scroll_bit::@4/(byte*) nxt#9 )
|
||||
(byte) next_char::return#3 ← phi( scroll_bit::@4/(byte) next_char::return#0 )
|
||||
(byte~) scroll_bit::$3 ← (byte) next_char::return#3
|
||||
(byte*) nxt#4 ← (byte*) nxt#15
|
||||
(word) scroll_bit::c#0 ← ((word)) (byte~) scroll_bit::$3
|
||||
(word~) scroll_bit::$4 ← (word) scroll_bit::c#0 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte*~) scroll_bit::$5 ← (byte*) CHARGEN#2 + (word~) scroll_bit::$4
|
||||
(byte*~) scroll_bit::$5 ← (byte*) CHARGEN#0 + (word~) scroll_bit::$4
|
||||
(byte*) current_chargen#5 ← (byte*~) scroll_bit::$5
|
||||
(byte) current_bit#6 ← (byte/word/signed word/dword/signed dword) $80
|
||||
to:scroll_bit::@1
|
||||
scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7
|
||||
(byte*) nxt#32 ← phi( scroll_bit::@3/(byte*) nxt#30 scroll_bit::@7/(byte*) nxt#36 )
|
||||
(byte*) PROCPORT#7 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 scroll_bit::@7/(byte*) PROCPORT#1 )
|
||||
(byte*) scroll_bit::sc#3 ← phi( scroll_bit::@3/(byte*) scroll_bit::sc#1 scroll_bit::@7/(byte*) scroll_bit::sc#0 )
|
||||
(byte) current_bit#14 ← phi( scroll_bit::@3/(byte) current_bit#20 scroll_bit::@7/(byte) current_bit#21 )
|
||||
(byte) scroll_bit::r#2 ← phi( scroll_bit::@3/(byte) scroll_bit::r#1 scroll_bit::@7/(byte) scroll_bit::r#0 )
|
||||
@ -278,7 +194,6 @@ scroll_bit::@2: scope:[scroll_bit] from scroll_bit::@3 scroll_bit::@7
|
||||
to:scroll_bit::@5
|
||||
scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5
|
||||
(byte*) nxt#30 ← phi( scroll_bit::@2/(byte*) nxt#32 scroll_bit::@5/(byte*) nxt#33 )
|
||||
(byte*) PROCPORT#4 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 scroll_bit::@5/(byte*) PROCPORT#8 )
|
||||
(byte) current_bit#20 ← phi( scroll_bit::@2/(byte) current_bit#14 scroll_bit::@5/(byte) current_bit#27 )
|
||||
(byte*) current_chargen#18 ← phi( scroll_bit::@2/(byte*) current_chargen#12 scroll_bit::@5/(byte*) current_chargen#25 )
|
||||
(byte) scroll_bit::r#3 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 scroll_bit::@5/(byte) scroll_bit::r#4 )
|
||||
@ -293,7 +208,6 @@ scroll_bit::@3: scope:[scroll_bit] from scroll_bit::@2 scroll_bit::@5
|
||||
to:scroll_bit::@6
|
||||
scroll_bit::@5: scope:[scroll_bit] from scroll_bit::@2
|
||||
(byte*) nxt#33 ← phi( scroll_bit::@2/(byte*) nxt#32 )
|
||||
(byte*) PROCPORT#8 ← phi( scroll_bit::@2/(byte*) PROCPORT#7 )
|
||||
(byte) current_bit#27 ← phi( scroll_bit::@2/(byte) current_bit#14 )
|
||||
(byte*) current_chargen#25 ← phi( scroll_bit::@2/(byte*) current_chargen#12 )
|
||||
(byte) scroll_bit::r#4 ← phi( scroll_bit::@2/(byte) scroll_bit::r#2 )
|
||||
@ -305,8 +219,7 @@ scroll_bit::@6: scope:[scroll_bit] from scroll_bit::@3
|
||||
(byte*) current_chargen#20 ← phi( scroll_bit::@3/(byte*) current_chargen#18 )
|
||||
(byte*) nxt#25 ← phi( scroll_bit::@3/(byte*) nxt#30 )
|
||||
(byte) current_bit#22 ← phi( scroll_bit::@3/(byte) current_bit#20 )
|
||||
(byte*) PROCPORT#2 ← phi( scroll_bit::@3/(byte*) PROCPORT#4 )
|
||||
*((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
asm { cli }
|
||||
to:scroll_bit::@return
|
||||
scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
|
||||
@ -319,20 +232,12 @@ scroll_bit::@return: scope:[scroll_bit] from scroll_bit::@6
|
||||
return
|
||||
to:@return
|
||||
@3: scope:[] from @2
|
||||
(byte*) CHARGEN#16 ← phi( @2/(byte*) CHARGEN#1 )
|
||||
(byte*) PROCPORT#20 ← phi( @2/(byte*) PROCPORT#21 )
|
||||
(byte*) SCROLL#13 ← phi( @2/(byte*) SCROLL#14 )
|
||||
(byte*) BGCOL#9 ← phi( @2/(byte*) BGCOL#10 )
|
||||
(byte*) RASTER#9 ← phi( @2/(byte*) RASTER#10 )
|
||||
(byte*) current_chargen#26 ← phi( @2/(byte*) current_chargen#4 )
|
||||
(byte) current_bit#28 ← phi( @2/(byte) current_bit#4 )
|
||||
(byte) scroll#17 ← phi( @2/(byte) scroll#19 )
|
||||
(byte*) SCREEN#9 ← phi( @2/(byte*) SCREEN#12 )
|
||||
(byte*) TEXT#1 ← phi( @2/(byte*) TEXT#3 )
|
||||
(byte*) nxt#6 ← (byte*) TEXT#1
|
||||
(byte*) nxt#6 ← (byte*) TEXT#0
|
||||
to:@6
|
||||
next_char: scope:[next_char] from scroll_bit::@4
|
||||
(byte*) TEXT#4 ← phi( scroll_bit::@4/(byte*) TEXT#6 )
|
||||
(byte*) nxt#17 ← phi( scroll_bit::@4/(byte*) nxt#24 )
|
||||
(byte) next_char::c#0 ← *((byte*) nxt#17)
|
||||
(bool~) next_char::$0 ← (byte) next_char::c#0 == (byte) '@'
|
||||
@ -346,8 +251,7 @@ next_char::@1: scope:[next_char] from next_char next_char::@2
|
||||
(byte) next_char::return#1 ← (byte) next_char::c#2
|
||||
to:next_char::@return
|
||||
next_char::@2: scope:[next_char] from next_char
|
||||
(byte*) TEXT#2 ← phi( next_char/(byte*) TEXT#4 )
|
||||
(byte*) nxt#8 ← (byte*) TEXT#2
|
||||
(byte*) nxt#8 ← (byte*) TEXT#0
|
||||
(byte) next_char::c#1 ← *((byte*) nxt#8)
|
||||
to:next_char::@1
|
||||
next_char::@return: scope:[next_char] from next_char::@1
|
||||
@ -358,58 +262,56 @@ next_char::@return: scope:[next_char] from next_char::@1
|
||||
return
|
||||
to:@return
|
||||
scroll_hard: scope:[scroll_hard] from scroll_bit::@1
|
||||
(byte*) SCREEN#6 ← phi( scroll_bit::@1/(byte*) SCREEN#5 )
|
||||
(byte) scroll_hard::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:scroll_hard::@1
|
||||
scroll_hard::@1: scope:[scroll_hard] from scroll_hard scroll_hard::@1
|
||||
(byte) scroll_hard::i#2 ← phi( scroll_hard/(byte) scroll_hard::i#0 scroll_hard::@1/(byte) scroll_hard::i#1 )
|
||||
(byte*) SCREEN#3 ← phi( scroll_hard/(byte*) SCREEN#6 scroll_hard::@1/(byte*) SCREEN#3 )
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$0 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*~) scroll_hard::$1 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$0
|
||||
(byte*~) scroll_hard::$1 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$0
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$2 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte*~) scroll_hard::$3 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$2
|
||||
(byte*~) scroll_hard::$3 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$2
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$4 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$1 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$3 + (byte/signed word/word/dword/signed dword~) scroll_hard::$4)
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$5 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) scroll_hard::$6 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$5
|
||||
(byte*~) scroll_hard::$6 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$5
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$7 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(byte*~) scroll_hard::$8 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$7
|
||||
(byte*~) scroll_hard::$8 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$7
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$9 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$6 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$8 + (byte/signed word/word/dword/signed dword~) scroll_hard::$9)
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$10 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*~) scroll_hard::$11 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$10
|
||||
(byte*~) scroll_hard::$11 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$10
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$12 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*~) scroll_hard::$13 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$12
|
||||
(byte*~) scroll_hard::$13 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$12
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$14 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$11 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$13 + (byte/signed word/word/dword/signed dword~) scroll_hard::$14)
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$15 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte*~) scroll_hard::$16 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$15
|
||||
(byte*~) scroll_hard::$16 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$15
|
||||
(byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$17 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte*~) scroll_hard::$18 ← (byte*) SCREEN#3 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$17
|
||||
(byte*~) scroll_hard::$18 ← (byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword~) scroll_hard::$17
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$19 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$16 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$18 + (byte/signed word/word/dword/signed dword~) scroll_hard::$19)
|
||||
(byte/word/signed word/dword/signed dword~) scroll_hard::$20 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte*~) scroll_hard::$21 ← (byte*) SCREEN#3 + (byte/word/signed word/dword/signed dword~) scroll_hard::$20
|
||||
(byte*~) scroll_hard::$21 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) scroll_hard::$20
|
||||
(byte/word/signed word/dword/signed dword~) scroll_hard::$22 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte*~) scroll_hard::$23 ← (byte*) SCREEN#3 + (byte/word/signed word/dword/signed dword~) scroll_hard::$22
|
||||
(byte*~) scroll_hard::$23 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) scroll_hard::$22
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$24 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$21 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$23 + (byte/signed word/word/dword/signed dword~) scroll_hard::$24)
|
||||
(byte/word/signed word/dword/signed dword~) scroll_hard::$25 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte*~) scroll_hard::$26 ← (byte*) SCREEN#3 + (byte/word/signed word/dword/signed dword~) scroll_hard::$25
|
||||
(byte*~) scroll_hard::$26 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) scroll_hard::$25
|
||||
(byte/word/signed word/dword/signed dword~) scroll_hard::$27 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 5
|
||||
(byte*~) scroll_hard::$28 ← (byte*) SCREEN#3 + (byte/word/signed word/dword/signed dword~) scroll_hard::$27
|
||||
(byte*~) scroll_hard::$28 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) scroll_hard::$27
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$29 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$26 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$28 + (byte/signed word/word/dword/signed dword~) scroll_hard::$29)
|
||||
(byte/word/signed word/dword/signed dword~) scroll_hard::$30 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*~) scroll_hard::$31 ← (byte*) SCREEN#3 + (byte/word/signed word/dword/signed dword~) scroll_hard::$30
|
||||
(byte*~) scroll_hard::$31 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) scroll_hard::$30
|
||||
(byte/word/signed word/dword/signed dword~) scroll_hard::$32 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(byte*~) scroll_hard::$33 ← (byte*) SCREEN#3 + (byte/word/signed word/dword/signed dword~) scroll_hard::$32
|
||||
(byte*~) scroll_hard::$33 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) scroll_hard::$32
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$34 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$31 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$33 + (byte/signed word/word/dword/signed dword~) scroll_hard::$34)
|
||||
(word/signed word/dword/signed dword~) scroll_hard::$35 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*~) scroll_hard::$36 ← (byte*) SCREEN#3 + (word/signed word/dword/signed dword~) scroll_hard::$35
|
||||
(byte*~) scroll_hard::$36 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword~) scroll_hard::$35
|
||||
(word/signed word/dword/signed dword~) scroll_hard::$37 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
(byte*~) scroll_hard::$38 ← (byte*) SCREEN#3 + (word/signed word/dword/signed dword~) scroll_hard::$37
|
||||
(byte*~) scroll_hard::$38 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword~) scroll_hard::$37
|
||||
(byte/signed word/word/dword/signed dword~) scroll_hard::$39 ← (byte) scroll_hard::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
*((byte*~) scroll_hard::$36 + (byte) scroll_hard::i#2) ← *((byte*~) scroll_hard::$38 + (byte/signed word/word/dword/signed dword~) scroll_hard::$39)
|
||||
(byte) scroll_hard::i#1 ← ++ (byte) scroll_hard::i#2
|
||||
@ -438,17 +340,10 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @3
|
||||
(byte*) TEXT#17 ← phi( @3/(byte*) TEXT#1 )
|
||||
(byte*) CHARGEN#15 ← phi( @3/(byte*) CHARGEN#16 )
|
||||
(byte*) PROCPORT#19 ← phi( @3/(byte*) PROCPORT#20 )
|
||||
(byte*) SCROLL#12 ← phi( @3/(byte*) SCROLL#13 )
|
||||
(byte*) BGCOL#8 ← phi( @3/(byte*) BGCOL#9 )
|
||||
(byte*) RASTER#7 ← phi( @3/(byte*) RASTER#9 )
|
||||
(byte*) current_chargen#21 ← phi( @3/(byte*) current_chargen#26 )
|
||||
(byte*) nxt#26 ← phi( @3/(byte*) nxt#6 )
|
||||
(byte) current_bit#23 ← phi( @3/(byte) current_bit#28 )
|
||||
(byte) scroll#15 ← phi( @3/(byte) scroll#17 )
|
||||
(byte*) SCREEN#4 ← phi( @3/(byte*) SCREEN#9 )
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
@ -474,130 +369,18 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL#1
|
||||
(byte*) BGCOL#10
|
||||
(byte*) BGCOL#11
|
||||
(byte*) BGCOL#2
|
||||
(byte*) BGCOL#3
|
||||
(byte*) BGCOL#4
|
||||
(byte*) BGCOL#5
|
||||
(byte*) BGCOL#6
|
||||
(byte*) BGCOL#7
|
||||
(byte*) BGCOL#8
|
||||
(byte*) BGCOL#9
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CHARGEN#1
|
||||
(byte*) CHARGEN#10
|
||||
(byte*) CHARGEN#11
|
||||
(byte*) CHARGEN#12
|
||||
(byte*) CHARGEN#13
|
||||
(byte*) CHARGEN#14
|
||||
(byte*) CHARGEN#15
|
||||
(byte*) CHARGEN#16
|
||||
(byte*) CHARGEN#2
|
||||
(byte*) CHARGEN#3
|
||||
(byte*) CHARGEN#4
|
||||
(byte*) CHARGEN#5
|
||||
(byte*) CHARGEN#6
|
||||
(byte*) CHARGEN#7
|
||||
(byte*) CHARGEN#8
|
||||
(byte*) CHARGEN#9
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte*) PROCPORT#1
|
||||
(byte*) PROCPORT#10
|
||||
(byte*) PROCPORT#11
|
||||
(byte*) PROCPORT#12
|
||||
(byte*) PROCPORT#13
|
||||
(byte*) PROCPORT#14
|
||||
(byte*) PROCPORT#15
|
||||
(byte*) PROCPORT#16
|
||||
(byte*) PROCPORT#17
|
||||
(byte*) PROCPORT#18
|
||||
(byte*) PROCPORT#19
|
||||
(byte*) PROCPORT#2
|
||||
(byte*) PROCPORT#20
|
||||
(byte*) PROCPORT#21
|
||||
(byte*) PROCPORT#22
|
||||
(byte*) PROCPORT#3
|
||||
(byte*) PROCPORT#4
|
||||
(byte*) PROCPORT#5
|
||||
(byte*) PROCPORT#6
|
||||
(byte*) PROCPORT#7
|
||||
(byte*) PROCPORT#8
|
||||
(byte*) PROCPORT#9
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte*) RASTER#1
|
||||
(byte*) RASTER#10
|
||||
(byte*) RASTER#11
|
||||
(byte*) RASTER#2
|
||||
(byte*) RASTER#3
|
||||
(byte*) RASTER#4
|
||||
(byte*) RASTER#5
|
||||
(byte*) RASTER#6
|
||||
(byte*) RASTER#7
|
||||
(byte*) RASTER#8
|
||||
(byte*) RASTER#9
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#11
|
||||
(byte*) SCREEN#12
|
||||
(byte*) SCREEN#13
|
||||
(byte*) SCREEN#14
|
||||
(byte*) SCREEN#15
|
||||
(byte*) SCREEN#16
|
||||
(byte*) SCREEN#17
|
||||
(byte*) SCREEN#18
|
||||
(byte*) SCREEN#19
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#20
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte*) SCROLL
|
||||
(byte*) SCROLL#0
|
||||
(byte*) SCROLL#1
|
||||
(byte*) SCROLL#10
|
||||
(byte*) SCROLL#11
|
||||
(byte*) SCROLL#12
|
||||
(byte*) SCROLL#13
|
||||
(byte*) SCROLL#14
|
||||
(byte*) SCROLL#15
|
||||
(byte*) SCROLL#2
|
||||
(byte*) SCROLL#3
|
||||
(byte*) SCROLL#4
|
||||
(byte*) SCROLL#5
|
||||
(byte*) SCROLL#6
|
||||
(byte*) SCROLL#7
|
||||
(byte*) SCROLL#8
|
||||
(byte*) SCROLL#9
|
||||
(byte*) TEXT
|
||||
(byte*) TEXT#0
|
||||
(byte*) TEXT#1
|
||||
(byte*) TEXT#10
|
||||
(byte*) TEXT#11
|
||||
(byte*) TEXT#12
|
||||
(byte*) TEXT#13
|
||||
(byte*) TEXT#14
|
||||
(byte*) TEXT#15
|
||||
(byte*) TEXT#16
|
||||
(byte*) TEXT#17
|
||||
(byte*) TEXT#2
|
||||
(byte*) TEXT#3
|
||||
(byte*) TEXT#4
|
||||
(byte*) TEXT#5
|
||||
(byte*) TEXT#6
|
||||
(byte*) TEXT#7
|
||||
(byte*) TEXT#8
|
||||
(byte*) TEXT#9
|
||||
(byte) current_bit
|
||||
(byte) current_bit#0
|
||||
(byte) current_bit#1
|
||||
@ -872,52 +655,26 @@ SYMBOL TABLE SSA
|
||||
(label) scroll_soft::@3
|
||||
(label) scroll_soft::@return
|
||||
|
||||
Inversing boolean not [40] (bool~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word/dword/signed dword) $ff from [39] (bool~) scroll_soft::$0 ← (byte) scroll#3 == (byte/word/signed word/dword/signed dword) $ff
|
||||
Inversing boolean not [64] (bool~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [63] (bool~) scroll_bit::$1 ← (byte) current_bit#5 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [91] (bool~) scroll_bit::$11 ← (byte~) scroll_bit::$9 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [90] (bool~) scroll_bit::$10 ← (byte~) scroll_bit::$9 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [116] (bool~) next_char::$1 ← (byte) next_char::c#0 != (byte) '@' from [115] (bool~) next_char::$0 ← (byte) next_char::c#0 == (byte) '@'
|
||||
Inversing boolean not [39] (bool~) scroll_soft::$1 ← (byte) scroll#3 != (byte/word/signed word/dword/signed dword) $ff from [38] (bool~) scroll_soft::$0 ← (byte) scroll#3 == (byte/word/signed word/dword/signed dword) $ff
|
||||
Inversing boolean not [63] (bool~) scroll_bit::$2 ← (byte) current_bit#5 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [62] (bool~) scroll_bit::$1 ← (byte) current_bit#5 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [90] (bool~) scroll_bit::$11 ← (byte~) scroll_bit::$9 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [89] (bool~) scroll_bit::$10 ← (byte~) scroll_bit::$9 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [115] (bool~) next_char::$1 ← (byte) next_char::c#0 != (byte) '@' from [114] (bool~) next_char::$0 ← (byte) next_char::c#0 == (byte) '@'
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) RASTER#4 = (byte*) RASTER#5
|
||||
Alias (byte*) BGCOL#6 = (byte*) BGCOL#7
|
||||
Alias (byte) scroll#21 = (byte) scroll#22
|
||||
Alias (byte) current_bit#31 = (byte) current_bit#32
|
||||
Alias (byte*) nxt#35 = (byte*) nxt#37
|
||||
Alias (byte*) current_chargen#30 = (byte*) current_chargen#31
|
||||
Alias (byte*) SCROLL#10 = (byte*) SCROLL#9
|
||||
Alias (byte*) PROCPORT#16 = (byte*) PROCPORT#17
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#19
|
||||
Alias (byte*) CHARGEN#12 = (byte*) CHARGEN#13
|
||||
Alias (byte*) TEXT#14 = (byte*) TEXT#15
|
||||
Alias (byte*) RASTER#2 = (byte*) RASTER#3 (byte*) RASTER#6 (byte*) RASTER#8
|
||||
Alias (byte*) BGCOL#1 = (byte*) BGCOL#5 (byte*) BGCOL#2 (byte*) BGCOL#3
|
||||
Alias (byte) scroll#0 = (byte) scroll#20 (byte) scroll#7 (byte) scroll#8 (byte) scroll#1
|
||||
Alias (byte) current_bit#0 = (byte) current_bit#30 (byte) current_bit#9 (byte) current_bit#10 (byte) current_bit#1
|
||||
Alias (byte*) nxt#0 = (byte*) nxt#34 (byte*) nxt#11 (byte*) nxt#12 (byte*) nxt#1
|
||||
Alias (byte*) current_chargen#0 = (byte*) current_chargen#29 (byte*) current_chargen#8 (byte*) current_chargen#9 (byte*) current_chargen#1
|
||||
Alias (byte*) SCROLL#11 = (byte*) SCROLL#8 (byte*) SCROLL#4 (byte*) SCROLL#6
|
||||
Alias (byte*) PROCPORT#12 = (byte*) PROCPORT#15 (byte*) PROCPORT#18 (byte*) PROCPORT#13
|
||||
Alias (byte*) SCREEN#15 = (byte*) SCREEN#18 (byte*) SCREEN#20 (byte*) SCREEN#16
|
||||
Alias (byte*) CHARGEN#11 = (byte*) CHARGEN#14 (byte*) CHARGEN#8 (byte*) CHARGEN#9
|
||||
Alias (byte*) TEXT#10 = (byte*) TEXT#13 (byte*) TEXT#16 (byte*) TEXT#11
|
||||
Alias (byte) scroll#13 = (byte) scroll#16
|
||||
Alias (byte) current_bit#17 = (byte) current_bit#24
|
||||
Alias (byte*) nxt#21 = (byte*) nxt#27
|
||||
Alias (byte*) current_chargen#15 = (byte*) current_chargen#22
|
||||
Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#3 (byte*) CHARGEN#1 (byte*) current_chargen#4 (byte*) current_chargen#26 (byte*) CHARGEN#16 (byte*) current_chargen#21 (byte*) CHARGEN#15
|
||||
Alias (byte*) TEXT#0 = (byte*) TEXT#5 (byte*) TEXT#3 (byte*) TEXT#1 (byte*) nxt#6 (byte*) nxt#26 (byte*) TEXT#17
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#14 (byte*) SCREEN#12 (byte*) SCREEN#9 (byte*) SCREEN#4
|
||||
Alias (byte*) RASTER#0 = (byte*) RASTER#11 (byte*) RASTER#10 (byte*) RASTER#9 (byte*) RASTER#7
|
||||
Alias (byte*) BGCOL#0 = (byte*) BGCOL#11 (byte*) BGCOL#10 (byte*) BGCOL#9 (byte*) BGCOL#8
|
||||
Alias (byte*) SCROLL#0 = (byte*) SCROLL#15 (byte*) SCROLL#14 (byte*) SCROLL#13 (byte*) SCROLL#12
|
||||
Alias (byte*) PROCPORT#0 = (byte*) PROCPORT#22 (byte*) PROCPORT#21 (byte*) PROCPORT#20 (byte*) PROCPORT#19
|
||||
Alias (byte) current_bit#18 = (byte) current_bit#25
|
||||
Alias (byte*) nxt#22 = (byte*) nxt#28
|
||||
Alias (byte*) current_chargen#16 = (byte*) current_chargen#23
|
||||
Alias (byte*) SCROLL#2 = (byte*) SCROLL#5 (byte*) SCROLL#3
|
||||
Alias (byte*) PROCPORT#11 = (byte*) PROCPORT#9
|
||||
Alias (byte*) SCREEN#10 = (byte*) SCREEN#13
|
||||
Alias (byte*) CHARGEN#6 = (byte*) CHARGEN#7
|
||||
Alias (byte*) TEXT#8 = (byte*) TEXT#9
|
||||
Alias (byte) scroll#14 = (byte) scroll#4
|
||||
Alias (byte) current_bit#11 = (byte) current_bit#2
|
||||
Alias (byte*) nxt#13 = (byte*) nxt#2
|
||||
@ -927,18 +684,13 @@ Alias (byte) current_bit#12 = (byte) current_bit#19 (byte) current_bit#3
|
||||
Alias (byte*) nxt#14 = (byte*) nxt#23 (byte*) nxt#3
|
||||
Alias (byte*) current_chargen#11 = (byte*) current_chargen#17 (byte*) current_chargen#3
|
||||
Alias (byte) scroll#15 = (byte) scroll#19 (byte) scroll#2 (byte) scroll#17
|
||||
Alias (byte*) CHARGEN#0 = (byte*) current_chargen#4 (byte*) current_chargen#26 (byte*) current_chargen#21
|
||||
Alias (byte) current_bit#5 = (byte~) scroll_bit::$0
|
||||
Alias (byte*) PROCPORT#1 = (byte*) PROCPORT#3
|
||||
Alias (byte*) SCREEN#2 = (byte*) SCREEN#5
|
||||
Alias (byte*) current_chargen#19 = (byte*) current_chargen#24
|
||||
Alias (byte) current_bit#21 = (byte) current_bit#26
|
||||
Alias (byte*) nxt#36 = (byte*) nxt#38
|
||||
Alias (byte*) scroll_bit::sc#0 = (byte*~) scroll_bit::$8
|
||||
Alias (byte*) nxt#24 = (byte*) nxt#29
|
||||
Alias (byte*) CHARGEN#2 = (byte*) CHARGEN#4 (byte*) CHARGEN#5
|
||||
Alias (byte*) TEXT#6 = (byte*) TEXT#7
|
||||
Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#5 (byte*) PROCPORT#6
|
||||
Alias (byte*) SCREEN#11 = (byte*) SCREEN#7 (byte*) SCREEN#8
|
||||
Alias (byte) next_char::return#0 = (byte) next_char::return#3
|
||||
Alias (byte*) nxt#15 = (byte*) nxt#4
|
||||
Alias (byte*) current_chargen#5 = (byte*~) scroll_bit::$5
|
||||
@ -947,16 +699,14 @@ Alias (byte*) scroll_bit::sc#3 = (byte*) scroll_bit::sc#4
|
||||
Alias (byte) scroll_bit::r#2 = (byte) scroll_bit::r#4
|
||||
Alias (byte*) current_chargen#12 = (byte*) current_chargen#25
|
||||
Alias (byte) current_bit#14 = (byte) current_bit#27
|
||||
Alias (byte*) PROCPORT#7 = (byte*) PROCPORT#8
|
||||
Alias (byte*) nxt#32 = (byte*) nxt#33
|
||||
Alias (byte) scroll_bit::b#1 = (byte/word/signed word/dword/signed dword~) scroll_bit::$12
|
||||
Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#4
|
||||
Alias (byte) current_bit#15 = (byte) current_bit#22 (byte) current_bit#20 (byte) current_bit#7
|
||||
Alias (byte*) nxt#16 = (byte*) nxt#25 (byte*) nxt#30 (byte*) nxt#5
|
||||
Alias (byte*) current_chargen#13 = (byte*) current_chargen#20 (byte*) current_chargen#18 (byte*) current_chargen#6
|
||||
Alias (byte) current_bit#23 = (byte) current_bit#28 (byte) current_bit#4
|
||||
Alias (byte*) TEXT#0 = (byte*) nxt#6 (byte*) nxt#26
|
||||
Alias (byte) next_char::return#1 = (byte) next_char::c#2 (byte) next_char::return#4 (byte) next_char::return#2
|
||||
Alias (byte*) TEXT#2 = (byte*) TEXT#4 (byte*) nxt#8
|
||||
Alias (byte*) nxt#19 = (byte*) nxt#7 (byte*) nxt#9
|
||||
Alias (byte*) fillscreen::cursor#0 = (byte*) fillscreen::screen#1
|
||||
Alias (byte) scroll#12 = (byte) scroll#6
|
||||
@ -964,100 +714,53 @@ Alias (byte) current_bit#16 = (byte) current_bit#8
|
||||
Alias (byte*) nxt#10 = (byte*) nxt#20
|
||||
Alias (byte*) current_chargen#14 = (byte*) current_chargen#7
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) SCROLL#1 = (byte*) SCROLL#2
|
||||
Alias (byte*) PROCPORT#1 = (byte*) PROCPORT#10
|
||||
Alias (byte*) SCREEN#11 = (byte*) SCREEN#2
|
||||
Alias (byte*) scroll_bit::sc#2 = (byte*) scroll_bit::sc#3
|
||||
Alias (byte) scroll_bit::r#2 = (byte) scroll_bit::r#3
|
||||
Alias (byte*) current_chargen#12 = (byte*) current_chargen#13
|
||||
Alias (byte) current_bit#14 = (byte) current_bit#15
|
||||
Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#7
|
||||
Alias (byte*) nxt#16 = (byte*) nxt#32
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) BGCOL#4
|
||||
Self Phi Eliminated (byte) scroll#18
|
||||
Self Phi Eliminated (byte) current_bit#29
|
||||
Self Phi Eliminated (byte*) nxt#31
|
||||
Self Phi Eliminated (byte*) current_chargen#27
|
||||
Self Phi Eliminated (byte*) SCROLL#7
|
||||
Self Phi Eliminated (byte*) PROCPORT#14
|
||||
Self Phi Eliminated (byte*) SCREEN#17
|
||||
Self Phi Eliminated (byte*) CHARGEN#10
|
||||
Self Phi Eliminated (byte*) TEXT#12
|
||||
Self Phi Eliminated (byte*) RASTER#2
|
||||
Self Phi Eliminated (byte*) BGCOL#1
|
||||
Self Phi Eliminated (byte) scroll#13
|
||||
Self Phi Eliminated (byte) current_bit#17
|
||||
Self Phi Eliminated (byte*) nxt#21
|
||||
Self Phi Eliminated (byte*) current_chargen#15
|
||||
Self Phi Eliminated (byte*) SCROLL#11
|
||||
Self Phi Eliminated (byte*) PROCPORT#12
|
||||
Self Phi Eliminated (byte*) SCREEN#15
|
||||
Self Phi Eliminated (byte*) CHARGEN#11
|
||||
Self Phi Eliminated (byte*) TEXT#10
|
||||
Self Phi Eliminated (byte*) current_chargen#12
|
||||
Self Phi Eliminated (byte) current_bit#14
|
||||
Self Phi Eliminated (byte*) PROCPORT#2
|
||||
Self Phi Eliminated (byte*) nxt#16
|
||||
Self Phi Eliminated (byte*) SCREEN#3
|
||||
Self Phi Eliminated (byte) fillscreen::fill#1
|
||||
Self Phi Eliminated (byte*) fillscreen::screen#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) RASTER#4 (byte*) RASTER#0
|
||||
Redundant Phi (byte*) BGCOL#6 (byte*) BGCOL#0
|
||||
Redundant Phi (byte) scroll#21 (byte) scroll#15
|
||||
Redundant Phi (byte) current_bit#31 (byte) current_bit#23
|
||||
Redundant Phi (byte*) nxt#35 (byte*) TEXT#0
|
||||
Redundant Phi (byte*) current_chargen#30 (byte*) CHARGEN#0
|
||||
Redundant Phi (byte*) SCROLL#10 (byte*) SCROLL#0
|
||||
Redundant Phi (byte*) PROCPORT#16 (byte*) PROCPORT#0
|
||||
Redundant Phi (byte*) CHARGEN#12 (byte*) CHARGEN#0
|
||||
Redundant Phi (byte*) TEXT#14 (byte*) TEXT#0
|
||||
Redundant Phi (byte*) RASTER#2 (byte*) RASTER#1
|
||||
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#4
|
||||
Redundant Phi (byte) scroll#13 (byte) scroll#18
|
||||
Redundant Phi (byte) current_bit#17 (byte) current_bit#29
|
||||
Redundant Phi (byte*) nxt#21 (byte*) nxt#31
|
||||
Redundant Phi (byte*) current_chargen#15 (byte*) current_chargen#27
|
||||
Redundant Phi (byte*) SCROLL#11 (byte*) SCROLL#7
|
||||
Redundant Phi (byte*) PROCPORT#12 (byte*) PROCPORT#14
|
||||
Redundant Phi (byte*) SCREEN#15 (byte*) SCREEN#17
|
||||
Redundant Phi (byte*) CHARGEN#11 (byte*) CHARGEN#10
|
||||
Redundant Phi (byte*) TEXT#10 (byte*) TEXT#12
|
||||
Redundant Phi (byte) scroll#0 (byte) scroll#10
|
||||
Redundant Phi (byte) current_bit#0 (byte) current_bit#12
|
||||
Redundant Phi (byte*) nxt#0 (byte*) nxt#14
|
||||
Redundant Phi (byte*) current_chargen#0 (byte*) current_chargen#11
|
||||
Redundant Phi (byte) scroll#9 (byte) scroll#13
|
||||
Redundant Phi (byte*) SCROLL#1 (byte*) SCROLL#11
|
||||
Redundant Phi (byte) current_bit#18 (byte) current_bit#17
|
||||
Redundant Phi (byte*) nxt#22 (byte*) nxt#21
|
||||
Redundant Phi (byte*) current_chargen#16 (byte*) current_chargen#15
|
||||
Redundant Phi (byte*) PROCPORT#11 (byte*) PROCPORT#12
|
||||
Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#15
|
||||
Redundant Phi (byte*) CHARGEN#6 (byte*) CHARGEN#11
|
||||
Redundant Phi (byte*) TEXT#8 (byte*) TEXT#10
|
||||
Redundant Phi (byte) current_bit#11 (byte) current_bit#14
|
||||
Redundant Phi (byte*) nxt#13 (byte*) nxt#16
|
||||
Redundant Phi (byte*) current_chargen#10 (byte*) current_chargen#12
|
||||
Redundant Phi (byte) current_bit#13 (byte) current_bit#18
|
||||
Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#11
|
||||
Redundant Phi (byte*) SCREEN#11 (byte*) SCREEN#10
|
||||
Redundant Phi (byte*) nxt#24 (byte*) nxt#22
|
||||
Redundant Phi (byte*) CHARGEN#2 (byte*) CHARGEN#6
|
||||
Redundant Phi (byte*) current_chargen#28 (byte*) current_chargen#16
|
||||
Redundant Phi (byte*) TEXT#6 (byte*) TEXT#8
|
||||
Redundant Phi (byte*) nxt#15 (byte*) nxt#19
|
||||
Redundant Phi (byte*) current_chargen#12 (byte*) current_chargen#19
|
||||
Redundant Phi (byte) current_bit#14 (byte) current_bit#21
|
||||
Redundant Phi (byte*) PROCPORT#2 (byte*) PROCPORT#1
|
||||
Redundant Phi (byte*) nxt#16 (byte*) nxt#36
|
||||
Redundant Phi (byte*) nxt#17 (byte*) nxt#24
|
||||
Redundant Phi (byte*) TEXT#2 (byte*) TEXT#6
|
||||
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#11
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#6
|
||||
Redundant Phi (byte*) fillscreen::cursor#0 (byte*) fillscreen::screen#0
|
||||
Redundant Phi (byte) fillscreen::fill#2 (byte) fillscreen::fill#0
|
||||
Redundant Phi (byte) fillscreen::fill#1 (byte) fillscreen::fill#2
|
||||
@ -1067,15 +770,15 @@ Redundant Phi (byte) current_bit#16 (byte) current_bit#0
|
||||
Redundant Phi (byte*) nxt#10 (byte*) nxt#0
|
||||
Redundant Phi (byte*) current_chargen#14 (byte*) current_chargen#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [15] if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) $fe) goto main::@2
|
||||
Simple Condition (bool~) main::$2 [18] if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@3
|
||||
Simple Condition (bool~) scroll_soft::$1 [41] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) $ff) goto scroll_soft::@1
|
||||
Simple Condition (bool~) scroll_bit::$2 [65] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1
|
||||
Simple Condition (bool~) scroll_bit::$11 [92] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3
|
||||
Simple Condition (bool~) scroll_bit::$14 [99] if((byte) scroll_bit::r#1!=rangelast(0,7)) goto scroll_bit::@2
|
||||
Simple Condition (bool~) next_char::$1 [117] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1
|
||||
Simple Condition (bool~) scroll_hard::$40 [181] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $27) goto scroll_hard::@1
|
||||
Simple Condition (bool~) fillscreen::$1 [190] if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1
|
||||
Simple Condition (bool~) main::$1 [15] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fe) goto main::@2
|
||||
Simple Condition (bool~) main::$2 [18] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@3
|
||||
Simple Condition (bool~) scroll_soft::$1 [40] if((byte) scroll#3!=(byte/word/signed word/dword/signed dword) $ff) goto scroll_soft::@1
|
||||
Simple Condition (bool~) scroll_bit::$2 [64] if((byte) current_bit#5!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@1
|
||||
Simple Condition (bool~) scroll_bit::$11 [91] if((byte~) scroll_bit::$9==(byte/signed byte/word/signed word/dword/signed dword) 0) goto scroll_bit::@3
|
||||
Simple Condition (bool~) scroll_bit::$14 [98] if((byte) scroll_bit::r#1!=rangelast(0,7)) goto scroll_bit::@2
|
||||
Simple Condition (bool~) next_char::$1 [116] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1
|
||||
Simple Condition (bool~) scroll_hard::$40 [178] if((byte) scroll_hard::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $27) goto scroll_hard::@1
|
||||
Simple Condition (bool~) fillscreen::$1 [187] if((byte*) fillscreen::cursor#1<(byte*~) fillscreen::$0) goto fillscreen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT#0 = ((byte*))1
|
||||
Constant (const byte*) CHARGEN#0 = ((byte*))$d000
|
||||
@ -1111,42 +814,8 @@ Constant (const word/signed word/dword/signed dword) scroll_hard::$35 = $28*7
|
||||
Constant (const word/signed word/dword/signed dword) scroll_hard::$37 = $28*7
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) fillscreen::screen#0 = SCREEN#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+$3e8
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated constant in assignment scroll_bit::sc#0
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
if() condition always true - replacing block destination [7] if(true) goto main::@1
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Resolved ranged next value scroll_bit::r#1 ← ++ scroll_bit::r#2 to ++
|
||||
Resolved ranged comparison value if(scroll_bit::r#1!=rangelast(0,7)) goto scroll_bit::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) scroll_soft::@3
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) BGCOL#4
|
||||
Self Phi Eliminated (byte*) SCROLL#7
|
||||
Self Phi Eliminated (byte*) PROCPORT#14
|
||||
Self Phi Eliminated (byte*) SCREEN#17
|
||||
Self Phi Eliminated (byte*) CHARGEN#10
|
||||
Self Phi Eliminated (byte*) TEXT#12
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) RASTER#1 (const byte*) RASTER#0
|
||||
Redundant Phi (byte*) BGCOL#4 (const byte*) BGCOL#0
|
||||
Redundant Phi (byte*) SCROLL#7 (const byte*) SCROLL#0
|
||||
Redundant Phi (byte*) PROCPORT#14 (const byte*) PROCPORT#0
|
||||
Redundant Phi (byte*) SCREEN#17 (const byte*) SCREEN#0
|
||||
Redundant Phi (byte*) CHARGEN#10 (const byte*) CHARGEN#0
|
||||
Redundant Phi (byte*) TEXT#12 (const byte*) TEXT#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) scroll_bit::$7 = SCREEN#0
|
||||
Constant (const byte*) scroll_bit::$7 = SCREEN#0+$28
|
||||
Constant (const byte*) nxt#8 = TEXT#0
|
||||
Constant (const byte*) scroll_hard::$1 = SCREEN#0+scroll_hard::$0
|
||||
Constant (const byte*) scroll_hard::$3 = SCREEN#0+scroll_hard::$2
|
||||
Constant (const byte*) scroll_hard::$6 = SCREEN#0+scroll_hard::$5
|
||||
@ -1164,7 +833,8 @@ Constant (const byte*) scroll_hard::$33 = SCREEN#0+scroll_hard::$32
|
||||
Constant (const byte*) scroll_hard::$36 = SCREEN#0+scroll_hard::$35
|
||||
Constant (const byte*) scroll_hard::$38 = SCREEN#0+scroll_hard::$37
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+$28+$27
|
||||
Constant (const byte*) scroll_bit::sc#0 = scroll_bit::$7+$27
|
||||
Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+$3e8
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated array index constant in assignment *(scroll_hard::$3+1 + scroll_hard::$4)
|
||||
Consolidated array index constant in assignment *(scroll_hard::$8+1 + scroll_hard::$9)
|
||||
@ -1175,14 +845,28 @@ Consolidated array index constant in assignment *(scroll_hard::$28+1 + scroll_ha
|
||||
Consolidated array index constant in assignment *(scroll_hard::$33+1 + scroll_hard::$34)
|
||||
Consolidated array index constant in assignment *(scroll_hard::$38+1 + scroll_hard::$39)
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
Inferred type updated to byte in [44] (byte/signed word/word/dword/signed dword~) scroll_hard::$4 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [46] (byte/signed word/word/dword/signed dword~) scroll_hard::$9 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [48] (byte/signed word/word/dword/signed dword~) scroll_hard::$14 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [50] (byte/signed word/word/dword/signed dword~) scroll_hard::$19 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [52] (byte/signed word/word/dword/signed dword~) scroll_hard::$24 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [54] (byte/signed word/word/dword/signed dword~) scroll_hard::$29 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [56] (byte/signed word/word/dword/signed dword~) scroll_hard::$34 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [58] (byte/signed word/word/dword/signed dword~) scroll_hard::$39 ← (byte) scroll_hard::i#2
|
||||
if() condition always true - replacing block destination [7] if(true) goto main::@1
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Inferred type updated to byte in [46] (byte/signed word/word/dword/signed dword~) scroll_hard::$4 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [48] (byte/signed word/word/dword/signed dword~) scroll_hard::$9 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [50] (byte/signed word/word/dword/signed dword~) scroll_hard::$14 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [52] (byte/signed word/word/dword/signed dword~) scroll_hard::$19 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [54] (byte/signed word/word/dword/signed dword~) scroll_hard::$24 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [56] (byte/signed word/word/dword/signed dword~) scroll_hard::$29 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [58] (byte/signed word/word/dword/signed dword~) scroll_hard::$34 ← (byte) scroll_hard::i#2
|
||||
Inferred type updated to byte in [60] (byte/signed word/word/dword/signed dword~) scroll_hard::$39 ← (byte) scroll_hard::i#2
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
Resolved ranged next value scroll_bit::r#1 ← ++ scroll_bit::r#2 to ++
|
||||
Resolved ranged comparison value if(scroll_bit::r#1!=rangelast(0,7)) goto scroll_bit::@2 to (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
Culled Empty Block (label) main::@7
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) @1
|
||||
Culled Empty Block (label) scroll_soft::@3
|
||||
Culled Empty Block (label) @2
|
||||
Culled Empty Block (label) @3
|
||||
Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) scroll_hard::i#2 = (byte~) scroll_hard::$4 (byte~) scroll_hard::$9 (byte~) scroll_hard::$14 (byte~) scroll_hard::$19 (byte~) scroll_hard::$24 (byte~) scroll_hard::$29 (byte~) scroll_hard::$34 (byte~) scroll_hard::$39
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Inlining constant with var siblings (const byte) scroll_bit::r#0
|
||||
@ -1194,6 +878,7 @@ Inlining constant with var siblings (const byte) scroll#15
|
||||
Inlining constant with var siblings (const byte) scroll#14
|
||||
Inlining constant with var siblings (const byte) current_bit#23
|
||||
Inlining constant with var siblings (const byte) current_bit#6
|
||||
Inlining constant with var siblings (const byte*) nxt#8
|
||||
Constant inlined scroll_hard::$3 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined scroll_hard::$6 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined scroll_hard::$5 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -1210,6 +895,7 @@ Constant inlined scroll_hard::$28 = (const byte*) SCREEN#0+(byte/signed byte/wor
|
||||
Constant inlined scroll_bit::r#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined current_bit#23 = (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined fillscreen::screen#0 = (const byte*) SCREEN#0
|
||||
Constant inlined nxt#8 = (const byte*) TEXT#0
|
||||
Constant inlined scroll_hard::$8 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined scroll_hard::$7 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Constant inlined scroll_hard::$20 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
@ -1217,7 +903,7 @@ Constant inlined scroll_hard::$21 = (const byte*) SCREEN#0+(byte/signed byte/wor
|
||||
Constant inlined scroll_hard::$22 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
Constant inlined scroll_hard::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined scroll_bit::b#0 = (byte) ' '
|
||||
Constant inlined scroll_bit::$7 = (const byte*) SCREEN#0
|
||||
Constant inlined scroll_bit::$7 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined fillscreen::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) $3e8
|
||||
Constant inlined scroll_bit::b#1 = (byte/word/signed word/dword/signed dword) $80+(byte) ' '
|
||||
Constant inlined scroll_hard::$12 = (byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) LOGO
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call (byte~) main::$0 ← call toD018 (byte*) SCREEN (byte*) LOGO
|
||||
|
||||
@ -598,20 +600,17 @@ fill::@return: scope:[fill] from fill::@1
|
||||
main: scope:[main] from @28
|
||||
(word) xsin_idx#28 ← phi( @28/(word) xsin_idx#16 )
|
||||
(word) rem16u#39 ← phi( @28/(word) rem16u#25 )
|
||||
(byte*) LOGO#1 ← phi( @28/(byte*) LOGO#2 )
|
||||
(byte*) SCREEN#1 ← phi( @28/(byte*) SCREEN#8 )
|
||||
asm { sei }
|
||||
*((byte*) BORDERCOL#0) ← (byte) WHITE#0
|
||||
*((byte*) BGCOL2#0) ← (byte) DARK_GREY#0
|
||||
*((byte*) BGCOL#0) ← *((byte*) BGCOL2#0)
|
||||
*((byte*) BGCOL3#0) ← (byte) BLACK#0
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#1
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) LOGO#1
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#0
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) LOGO#0
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main
|
||||
(word) xsin_idx#27 ← phi( main/(word) xsin_idx#28 )
|
||||
(word) rem16u#38 ← phi( main/(word) rem16u#39 )
|
||||
(byte*) SCREEN#15 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte*) main::toD0181_gfx#1 ← phi( main/(byte*) main::toD0181_gfx#0 )
|
||||
(byte*) main::toD0181_screen#1 ← phi( main/(byte*) main::toD0181_screen#0 )
|
||||
(word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
|
||||
@ -628,19 +627,17 @@ main::toD0181: scope:[main] from main
|
||||
main::toD0181_@return: scope:[main] from main::toD0181
|
||||
(word) xsin_idx#26 ← phi( main::toD0181/(word) xsin_idx#27 )
|
||||
(word) rem16u#37 ← phi( main::toD0181/(word) rem16u#38 )
|
||||
(byte*) SCREEN#9 ← phi( main::toD0181/(byte*) SCREEN#15 )
|
||||
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
||||
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::toD0181_@return
|
||||
(word) xsin_idx#25 ← phi( main::toD0181_@return/(word) xsin_idx#26 )
|
||||
(word) rem16u#35 ← phi( main::toD0181_@return/(word) rem16u#37 )
|
||||
(byte*) SCREEN#2 ← phi( main::toD0181_@return/(byte*) SCREEN#9 )
|
||||
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
||||
(byte~) main::$0 ← (byte) main::toD0181_return#3
|
||||
*((byte*) D018#0) ← (byte~) main::$0
|
||||
*((byte*) D016#0) ← (byte) VIC_MCM#0
|
||||
(byte*) fill::start#0 ← (byte*) SCREEN#2
|
||||
(byte*) fill::start#0 ← (byte*) SCREEN#0
|
||||
(word) fill::size#0 ← (word/signed word/dword/signed dword) $3e8
|
||||
(byte) fill::val#0 ← (byte) BLACK#0
|
||||
call fill
|
||||
@ -648,7 +645,6 @@ main::@3: scope:[main] from main::toD0181_@return
|
||||
main::@4: scope:[main] from main::@3
|
||||
(word) xsin_idx#24 ← phi( main::@3/(word) xsin_idx#25 )
|
||||
(word) rem16u#33 ← phi( main::@3/(word) rem16u#35 )
|
||||
(byte*) SCREEN#16 ← phi( main::@3/(byte*) SCREEN#2 )
|
||||
(byte/word/dword~) main::$2 ← (byte) WHITE#0 | (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) fill::start#1 ← (byte*) COLS#0
|
||||
(word) fill::size#1 ← (word/signed word/dword/signed dword) $3e8
|
||||
@ -658,21 +654,18 @@ main::@4: scope:[main] from main::@3
|
||||
main::@5: scope:[main] from main::@4
|
||||
(word) xsin_idx#23 ← phi( main::@4/(word) xsin_idx#24 )
|
||||
(word) rem16u#30 ← phi( main::@4/(word) rem16u#33 )
|
||||
(byte*) SCREEN#10 ← phi( main::@4/(byte*) SCREEN#16 )
|
||||
(byte) main::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@1 main::@5
|
||||
(word) xsin_idx#22 ← phi( main::@1/(word) xsin_idx#22 main::@5/(word) xsin_idx#23 )
|
||||
(word) rem16u#27 ← phi( main::@1/(word) rem16u#27 main::@5/(word) rem16u#30 )
|
||||
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#3 main::@5/(byte*) SCREEN#10 )
|
||||
(byte) main::ch#2 ← phi( main::@1/(byte) main::ch#1 main::@5/(byte) main::ch#0 )
|
||||
*((byte*) SCREEN#3 + (byte) main::ch#2) ← (byte) main::ch#2
|
||||
*((byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2
|
||||
(byte) main::ch#1 ← (byte) main::ch#2 + rangenext(0,$ef)
|
||||
(bool~) main::$4 ← (byte) main::ch#1 != rangelast(0,$ef)
|
||||
if((bool~) main::$4) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) SCREEN#40 ← phi( main::@1/(byte*) SCREEN#3 )
|
||||
(word) xsin_idx#17 ← phi( main::@1/(word) xsin_idx#22 )
|
||||
(word) rem16u#23 ← phi( main::@1/(word) rem16u#27 )
|
||||
(signed word/signed dword~) main::$5 ← - (word/signed word/dword/signed dword) $140
|
||||
@ -683,7 +676,6 @@ main::@2: scope:[main] from main::@1
|
||||
call sin16s_gen2
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@2
|
||||
(byte*) SCREEN#37 ← phi( main::@2/(byte*) SCREEN#40 )
|
||||
(word) xsin_idx#13 ← phi( main::@2/(word) xsin_idx#17 )
|
||||
(word) rem16u#17 ← phi( main::@2/(word) rem16u#7 )
|
||||
(word) rem16u#8 ← (word) rem16u#17
|
||||
@ -703,35 +695,27 @@ main::@return: scope:[main] from main::@7
|
||||
to:@return
|
||||
@26: scope:[] from @25
|
||||
(word) rem16u#28 ← phi( @25/(word) rem16u#31 )
|
||||
(byte*) LOGO#3 ← phi( @25/(byte*) LOGO#0 )
|
||||
(byte*) SCREEN#21 ← phi( @25/(byte*) SCREEN#0 )
|
||||
(word) xsin_idx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:@28
|
||||
loop: scope:[loop] from main::@6
|
||||
(byte*) SCREEN#35 ← phi( main::@6/(byte*) SCREEN#37 )
|
||||
(word) xsin_idx#18 ← phi( main::@6/(word) xsin_idx#13 )
|
||||
to:loop::@1
|
||||
loop::@1: scope:[loop] from loop loop::@7
|
||||
(byte*) SCREEN#34 ← phi( loop/(byte*) SCREEN#35 loop::@7/(byte*) SCREEN#36 )
|
||||
(word) xsin_idx#15 ← phi( loop/(word) xsin_idx#18 loop::@7/(word) xsin_idx#19 )
|
||||
if(true) goto loop::@2
|
||||
to:loop::@return
|
||||
loop::@2: scope:[loop] from loop::@1
|
||||
(byte*) SCREEN#32 ← phi( loop::@1/(byte*) SCREEN#34 )
|
||||
(word) xsin_idx#20 ← phi( loop::@1/(word) xsin_idx#15 )
|
||||
to:loop::@4
|
||||
loop::@4: scope:[loop] from loop::@2 loop::@5
|
||||
(byte*) SCREEN#31 ← phi( loop::@2/(byte*) SCREEN#32 loop::@5/(byte*) SCREEN#33 )
|
||||
(word) xsin_idx#14 ← phi( loop::@2/(word) xsin_idx#20 loop::@5/(word) xsin_idx#21 )
|
||||
(bool~) loop::$0 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) loop::$0) goto loop::@5
|
||||
to:loop::@6
|
||||
loop::@5: scope:[loop] from loop::@4
|
||||
(byte*) SCREEN#33 ← phi( loop::@4/(byte*) SCREEN#31 )
|
||||
(word) xsin_idx#21 ← phi( loop::@4/(word) xsin_idx#14 )
|
||||
to:loop::@4
|
||||
loop::@6: scope:[loop] from loop::@4
|
||||
(byte*) SCREEN#30 ← phi( loop::@4/(byte*) SCREEN#31 )
|
||||
(word) xsin_idx#9 ← phi( loop::@4/(word) xsin_idx#14 )
|
||||
*((byte*) BORDERCOL#0) ← ++ *((byte*) BORDERCOL#0)
|
||||
(signed word*~) loop::$1 ← (signed word[XSIN_SIZE#0]) xsin#0 + (word) xsin_idx#9
|
||||
@ -740,7 +724,6 @@ loop::@6: scope:[loop] from loop::@4
|
||||
call render_logo
|
||||
to:loop::@15
|
||||
loop::@15: scope:[loop] from loop::@6
|
||||
(byte*) SCREEN#39 ← phi( loop::@6/(byte*) SCREEN#30 )
|
||||
(word) xsin_idx#10 ← phi( loop::@6/(word) xsin_idx#9 )
|
||||
(word) xsin_idx#3 ← (word) xsin_idx#10 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(word/signed dword/dword~) loop::$3 ← (word) XSIN_SIZE#0 * (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
@ -749,12 +732,10 @@ loop::@15: scope:[loop] from loop::@6
|
||||
if((bool~) loop::$5) goto loop::@7
|
||||
to:loop::@13
|
||||
loop::@7: scope:[loop] from loop::@13 loop::@15
|
||||
(byte*) SCREEN#36 ← phi( loop::@13/(byte*) SCREEN#38 loop::@15/(byte*) SCREEN#39 )
|
||||
(word) xsin_idx#19 ← phi( loop::@13/(word) xsin_idx#4 loop::@15/(word) xsin_idx#3 )
|
||||
*((byte*) BORDERCOL#0) ← -- *((byte*) BORDERCOL#0)
|
||||
to:loop::@1
|
||||
loop::@13: scope:[loop] from loop::@15
|
||||
(byte*) SCREEN#38 ← phi( loop::@15/(byte*) SCREEN#39 )
|
||||
(word) xsin_idx#4 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:loop::@7
|
||||
loop::@return: scope:[loop] from loop::@1
|
||||
@ -763,7 +744,6 @@ loop::@return: scope:[loop] from loop::@1
|
||||
return
|
||||
to:@return
|
||||
render_logo: scope:[render_logo] from loop::@6
|
||||
(byte*) SCREEN#29 ← phi( loop::@6/(byte*) SCREEN#30 )
|
||||
(signed word) render_logo::xpos#1 ← phi( loop::@6/(signed word) render_logo::xpos#0 )
|
||||
(byte) render_logo::logo_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) render_logo::screen_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -779,7 +759,6 @@ render_logo: scope:[render_logo] from loop::@6
|
||||
if((bool~) render_logo::$5) goto render_logo::@1
|
||||
to:render_logo::@19
|
||||
render_logo::@1: scope:[render_logo] from render_logo
|
||||
(byte*) SCREEN#26 ← phi( render_logo/(byte*) SCREEN#29 )
|
||||
(signed byte) render_logo::x_char#1 ← phi( render_logo/(signed byte) render_logo::x_char#0 )
|
||||
(signed byte~) render_logo::$17 ← - (signed byte) render_logo::x_char#1
|
||||
(byte~) render_logo::$18 ← ((byte)) (signed byte~) render_logo::$17
|
||||
@ -787,14 +766,12 @@ render_logo::@1: scope:[render_logo] from render_logo
|
||||
(byte) render_logo::screen_idx#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@11
|
||||
render_logo::@19: scope:[render_logo] from render_logo
|
||||
(byte*) SCREEN#22 ← phi( render_logo/(byte*) SCREEN#29 )
|
||||
(signed byte) render_logo::x_char#2 ← phi( render_logo/(signed byte) render_logo::x_char#0 )
|
||||
(byte~) render_logo::$6 ← ((byte)) (signed byte) render_logo::x_char#2
|
||||
(byte) render_logo::logo_start#0 ← (byte~) render_logo::$6
|
||||
(byte) render_logo::screen_idx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@2
|
||||
render_logo::@2: scope:[render_logo] from render_logo::@19 render_logo::@22
|
||||
(byte*) SCREEN#17 ← phi( render_logo::@19/(byte*) SCREEN#22 render_logo::@22/(byte*) SCREEN#23 )
|
||||
(byte) render_logo::logo_start#1 ← phi( render_logo::@19/(byte) render_logo::logo_start#0 render_logo::@22/(byte) render_logo::logo_start#2 )
|
||||
(byte) render_logo::screen_idx#7 ← phi( render_logo::@19/(byte) render_logo::screen_idx#2 render_logo::@22/(byte) render_logo::screen_idx#3 )
|
||||
(bool~) render_logo::$7 ← (byte) render_logo::screen_idx#7 != (byte) render_logo::logo_start#1
|
||||
@ -803,35 +780,30 @@ render_logo::@2: scope:[render_logo] from render_logo::@19 render_logo::@22
|
||||
render_logo::@3: scope:[render_logo] from render_logo::@2
|
||||
(byte) render_logo::logo_start#4 ← phi( render_logo::@2/(byte) render_logo::logo_start#1 )
|
||||
(byte) render_logo::screen_idx#18 ← phi( render_logo::@2/(byte) render_logo::screen_idx#7 )
|
||||
(byte*) SCREEN#11 ← phi( render_logo::@2/(byte*) SCREEN#17 )
|
||||
(byte) render_logo::line#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@5
|
||||
render_logo::@4: scope:[render_logo] from render_logo::@2
|
||||
(byte*) SCREEN#25 ← phi( render_logo::@2/(byte*) SCREEN#17 )
|
||||
(byte) render_logo::screen_idx#19 ← phi( render_logo::@2/(byte) render_logo::screen_idx#7 )
|
||||
(byte) render_logo::logo_idx#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@6
|
||||
render_logo::@5: scope:[render_logo] from render_logo::@3 render_logo::@5
|
||||
(byte) render_logo::logo_start#3 ← phi( render_logo::@3/(byte) render_logo::logo_start#4 render_logo::@5/(byte) render_logo::logo_start#3 )
|
||||
(byte) render_logo::screen_idx#8 ← phi( render_logo::@3/(byte) render_logo::screen_idx#18 render_logo::@5/(byte) render_logo::screen_idx#8 )
|
||||
(byte*) SCREEN#4 ← phi( render_logo::@3/(byte*) SCREEN#11 render_logo::@5/(byte*) SCREEN#4 )
|
||||
(byte) render_logo::line#9 ← phi( render_logo::@3/(byte) render_logo::line#1 render_logo::@5/(byte) render_logo::line#2 )
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$8 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte) render_logo::line#9
|
||||
(byte*~) render_logo::$9 ← (byte*) SCREEN#4 + (byte/signed word/word/dword/signed dword~) render_logo::$8
|
||||
(byte*~) render_logo::$9 ← (byte*) SCREEN#0 + (byte/signed word/word/dword/signed dword~) render_logo::$8
|
||||
*((byte*~) render_logo::$9 + (byte) render_logo::screen_idx#8) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) render_logo::line#2 ← (byte) render_logo::line#9 + rangenext(0,5)
|
||||
(bool~) render_logo::$10 ← (byte) render_logo::line#2 != rangelast(0,5)
|
||||
unroll if((bool~) render_logo::$10) goto render_logo::@5
|
||||
to:render_logo::@22
|
||||
render_logo::@22: scope:[render_logo] from render_logo::@5
|
||||
(byte*) SCREEN#23 ← phi( render_logo::@5/(byte*) SCREEN#4 )
|
||||
(byte) render_logo::logo_start#2 ← phi( render_logo::@5/(byte) render_logo::logo_start#3 )
|
||||
(byte) render_logo::screen_idx#9 ← phi( render_logo::@5/(byte) render_logo::screen_idx#8 )
|
||||
(byte) render_logo::screen_idx#3 ← ++ (byte) render_logo::screen_idx#9
|
||||
to:render_logo::@2
|
||||
render_logo::@6: scope:[render_logo] from render_logo::@26 render_logo::@4
|
||||
(byte) render_logo::logo_idx#12 ← phi( render_logo::@26/(byte) render_logo::logo_idx#3 render_logo::@4/(byte) render_logo::logo_idx#2 )
|
||||
(byte*) SCREEN#18 ← phi( render_logo::@26/(byte*) SCREEN#24 render_logo::@4/(byte*) SCREEN#25 )
|
||||
(byte) render_logo::screen_idx#10 ← phi( render_logo::@26/(byte) render_logo::screen_idx#4 render_logo::@4/(byte) render_logo::screen_idx#19 )
|
||||
(bool~) render_logo::$11 ← (byte) render_logo::screen_idx#10 != (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
if((bool~) render_logo::$11) goto render_logo::@7
|
||||
@ -839,16 +811,14 @@ render_logo::@6: scope:[render_logo] from render_logo::@26 render_logo::@4
|
||||
render_logo::@7: scope:[render_logo] from render_logo::@6
|
||||
(byte) render_logo::screen_idx#20 ← phi( render_logo::@6/(byte) render_logo::screen_idx#10 )
|
||||
(byte) render_logo::logo_idx#10 ← phi( render_logo::@6/(byte) render_logo::logo_idx#12 )
|
||||
(byte*) SCREEN#12 ← phi( render_logo::@6/(byte*) SCREEN#18 )
|
||||
(byte) render_logo::line#3 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@9
|
||||
render_logo::@9: scope:[render_logo] from render_logo::@7 render_logo::@9
|
||||
(byte) render_logo::screen_idx#11 ← phi( render_logo::@7/(byte) render_logo::screen_idx#20 render_logo::@9/(byte) render_logo::screen_idx#11 )
|
||||
(byte) render_logo::logo_idx#5 ← phi( render_logo::@7/(byte) render_logo::logo_idx#10 render_logo::@9/(byte) render_logo::logo_idx#5 )
|
||||
(byte*) SCREEN#5 ← phi( render_logo::@7/(byte*) SCREEN#12 render_logo::@9/(byte*) SCREEN#5 )
|
||||
(byte) render_logo::line#10 ← phi( render_logo::@7/(byte) render_logo::line#3 render_logo::@9/(byte) render_logo::line#4 )
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$12 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte) render_logo::line#10
|
||||
(byte*~) render_logo::$13 ← (byte*) SCREEN#5 + (byte/signed word/word/dword/signed dword~) render_logo::$12
|
||||
(byte*~) render_logo::$13 ← (byte*) SCREEN#0 + (byte/signed word/word/dword/signed dword~) render_logo::$12
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$14 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte) render_logo::line#10
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$15 ← (byte) render_logo::logo_idx#5 + (byte/signed word/word/dword/signed dword~) render_logo::$14
|
||||
*((byte*~) render_logo::$13 + (byte) render_logo::screen_idx#11) ← (byte/signed word/word/dword/signed dword~) render_logo::$15
|
||||
@ -857,14 +827,12 @@ render_logo::@9: scope:[render_logo] from render_logo::@7 render_logo::@9
|
||||
unroll if((bool~) render_logo::$16) goto render_logo::@9
|
||||
to:render_logo::@26
|
||||
render_logo::@26: scope:[render_logo] from render_logo::@9
|
||||
(byte*) SCREEN#24 ← phi( render_logo::@9/(byte*) SCREEN#5 )
|
||||
(byte) render_logo::logo_idx#6 ← phi( render_logo::@9/(byte) render_logo::logo_idx#5 )
|
||||
(byte) render_logo::screen_idx#12 ← phi( render_logo::@9/(byte) render_logo::screen_idx#11 )
|
||||
(byte) render_logo::screen_idx#4 ← ++ (byte) render_logo::screen_idx#12
|
||||
(byte) render_logo::logo_idx#3 ← ++ (byte) render_logo::logo_idx#6
|
||||
to:render_logo::@6
|
||||
render_logo::@11: scope:[render_logo] from render_logo::@1 render_logo::@31
|
||||
(byte*) SCREEN#19 ← phi( render_logo::@1/(byte*) SCREEN#26 render_logo::@31/(byte*) SCREEN#27 )
|
||||
(byte) render_logo::screen_idx#22 ← phi( render_logo::@1/(byte) render_logo::screen_idx#1 render_logo::@31/(byte) render_logo::screen_idx#5 )
|
||||
(byte) render_logo::logo_idx#7 ← phi( render_logo::@1/(byte) render_logo::logo_idx#1 render_logo::@31/(byte) render_logo::logo_idx#4 )
|
||||
(bool~) render_logo::$19 ← (byte) render_logo::logo_idx#7 != (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
@ -873,16 +841,14 @@ render_logo::@11: scope:[render_logo] from render_logo::@1 render_logo::@31
|
||||
render_logo::@12: scope:[render_logo] from render_logo::@11
|
||||
(byte) render_logo::screen_idx#21 ← phi( render_logo::@11/(byte) render_logo::screen_idx#22 )
|
||||
(byte) render_logo::logo_idx#11 ← phi( render_logo::@11/(byte) render_logo::logo_idx#7 )
|
||||
(byte*) SCREEN#13 ← phi( render_logo::@11/(byte*) SCREEN#19 )
|
||||
(byte) render_logo::line#5 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@14
|
||||
render_logo::@14: scope:[render_logo] from render_logo::@12 render_logo::@14
|
||||
(byte) render_logo::screen_idx#13 ← phi( render_logo::@12/(byte) render_logo::screen_idx#21 render_logo::@14/(byte) render_logo::screen_idx#13 )
|
||||
(byte) render_logo::logo_idx#8 ← phi( render_logo::@12/(byte) render_logo::logo_idx#11 render_logo::@14/(byte) render_logo::logo_idx#8 )
|
||||
(byte*) SCREEN#6 ← phi( render_logo::@12/(byte*) SCREEN#13 render_logo::@14/(byte*) SCREEN#6 )
|
||||
(byte) render_logo::line#11 ← phi( render_logo::@12/(byte) render_logo::line#5 render_logo::@14/(byte) render_logo::line#6 )
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$20 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte) render_logo::line#11
|
||||
(byte*~) render_logo::$21 ← (byte*) SCREEN#6 + (byte/signed word/word/dword/signed dword~) render_logo::$20
|
||||
(byte*~) render_logo::$21 ← (byte*) SCREEN#0 + (byte/signed word/word/dword/signed dword~) render_logo::$20
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$22 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte) render_logo::line#11
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$23 ← (byte) render_logo::logo_idx#8 + (byte/signed word/word/dword/signed dword~) render_logo::$22
|
||||
*((byte*~) render_logo::$21 + (byte) render_logo::screen_idx#13) ← (byte/signed word/word/dword/signed dword~) render_logo::$23
|
||||
@ -891,36 +857,31 @@ render_logo::@14: scope:[render_logo] from render_logo::@12 render_logo::@14
|
||||
unroll if((bool~) render_logo::$24) goto render_logo::@14
|
||||
to:render_logo::@31
|
||||
render_logo::@31: scope:[render_logo] from render_logo::@14
|
||||
(byte*) SCREEN#27 ← phi( render_logo::@14/(byte*) SCREEN#6 )
|
||||
(byte) render_logo::logo_idx#9 ← phi( render_logo::@14/(byte) render_logo::logo_idx#8 )
|
||||
(byte) render_logo::screen_idx#14 ← phi( render_logo::@14/(byte) render_logo::screen_idx#13 )
|
||||
(byte) render_logo::screen_idx#5 ← ++ (byte) render_logo::screen_idx#14
|
||||
(byte) render_logo::logo_idx#4 ← ++ (byte) render_logo::logo_idx#9
|
||||
to:render_logo::@11
|
||||
render_logo::@15: scope:[render_logo] from render_logo::@11 render_logo::@35
|
||||
(byte*) SCREEN#20 ← phi( render_logo::@11/(byte*) SCREEN#19 render_logo::@35/(byte*) SCREEN#28 )
|
||||
(byte) render_logo::screen_idx#15 ← phi( render_logo::@11/(byte) render_logo::screen_idx#22 render_logo::@35/(byte) render_logo::screen_idx#6 )
|
||||
(bool~) render_logo::$25 ← (byte) render_logo::screen_idx#15 != (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
if((bool~) render_logo::$25) goto render_logo::@16
|
||||
to:render_logo::@return
|
||||
render_logo::@16: scope:[render_logo] from render_logo::@15
|
||||
(byte) render_logo::screen_idx#23 ← phi( render_logo::@15/(byte) render_logo::screen_idx#15 )
|
||||
(byte*) SCREEN#14 ← phi( render_logo::@15/(byte*) SCREEN#20 )
|
||||
(byte) render_logo::line#7 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_logo::@18
|
||||
render_logo::@18: scope:[render_logo] from render_logo::@16 render_logo::@18
|
||||
(byte) render_logo::screen_idx#16 ← phi( render_logo::@16/(byte) render_logo::screen_idx#23 render_logo::@18/(byte) render_logo::screen_idx#16 )
|
||||
(byte*) SCREEN#7 ← phi( render_logo::@16/(byte*) SCREEN#14 render_logo::@18/(byte*) SCREEN#7 )
|
||||
(byte) render_logo::line#12 ← phi( render_logo::@16/(byte) render_logo::line#7 render_logo::@18/(byte) render_logo::line#8 )
|
||||
(byte/signed word/word/dword/signed dword~) render_logo::$26 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte) render_logo::line#12
|
||||
(byte*~) render_logo::$27 ← (byte*) SCREEN#7 + (byte/signed word/word/dword/signed dword~) render_logo::$26
|
||||
(byte*~) render_logo::$27 ← (byte*) SCREEN#0 + (byte/signed word/word/dword/signed dword~) render_logo::$26
|
||||
*((byte*~) render_logo::$27 + (byte) render_logo::screen_idx#16) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) render_logo::line#8 ← (byte) render_logo::line#12 + rangenext(0,5)
|
||||
(bool~) render_logo::$28 ← (byte) render_logo::line#8 != rangelast(0,5)
|
||||
unroll if((bool~) render_logo::$28) goto render_logo::@18
|
||||
to:render_logo::@35
|
||||
render_logo::@35: scope:[render_logo] from render_logo::@18
|
||||
(byte*) SCREEN#28 ← phi( render_logo::@18/(byte*) SCREEN#7 )
|
||||
(byte) render_logo::screen_idx#17 ← phi( render_logo::@18/(byte) render_logo::screen_idx#16 )
|
||||
(byte) render_logo::screen_idx#6 ← ++ (byte) render_logo::screen_idx#17
|
||||
to:render_logo::@15
|
||||
@ -930,8 +891,6 @@ render_logo::@return: scope:[render_logo] from render_logo::@15 render_logo::@6
|
||||
@28: scope:[] from @26
|
||||
(word) xsin_idx#16 ← phi( @26/(word) xsin_idx#2 )
|
||||
(word) rem16u#25 ← phi( @26/(word) rem16u#28 )
|
||||
(byte*) LOGO#2 ← phi( @26/(byte*) LOGO#3 )
|
||||
(byte*) SCREEN#8 ← phi( @26/(byte*) SCREEN#21 )
|
||||
call main
|
||||
to:@29
|
||||
@29: scope:[] from @28
|
||||
@ -1042,9 +1001,6 @@ SYMBOL TABLE SSA
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte*) LOGO
|
||||
(byte*) LOGO#0
|
||||
(byte*) LOGO#1
|
||||
(byte*) LOGO#2
|
||||
(byte*) LOGO#3
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(word) PI2_u4f12
|
||||
@ -1085,46 +1041,6 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#11
|
||||
(byte*) SCREEN#12
|
||||
(byte*) SCREEN#13
|
||||
(byte*) SCREEN#14
|
||||
(byte*) SCREEN#15
|
||||
(byte*) SCREEN#16
|
||||
(byte*) SCREEN#17
|
||||
(byte*) SCREEN#18
|
||||
(byte*) SCREEN#19
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#20
|
||||
(byte*) SCREEN#21
|
||||
(byte*) SCREEN#22
|
||||
(byte*) SCREEN#23
|
||||
(byte*) SCREEN#24
|
||||
(byte*) SCREEN#25
|
||||
(byte*) SCREEN#26
|
||||
(byte*) SCREEN#27
|
||||
(byte*) SCREEN#28
|
||||
(byte*) SCREEN#29
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#30
|
||||
(byte*) SCREEN#31
|
||||
(byte*) SCREEN#32
|
||||
(byte*) SCREEN#33
|
||||
(byte*) SCREEN#34
|
||||
(byte*) SCREEN#35
|
||||
(byte*) SCREEN#36
|
||||
(byte*) SCREEN#37
|
||||
(byte*) SCREEN#38
|
||||
(byte*) SCREEN#39
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#40
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
@ -1973,49 +1889,34 @@ Alias (byte*) fill::end#0 = (byte*~) fill::$0
|
||||
Alias (byte*) fill::addr#0 = (byte*) fill::start#2
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#15 (byte*) SCREEN#9 (byte*) SCREEN#2 (byte*) SCREEN#16 (byte*) SCREEN#10
|
||||
Alias (word) rem16u#30 = (word) rem16u#38 (word) rem16u#39 (word) rem16u#37 (word) rem16u#35 (word) rem16u#33
|
||||
Alias (word) xsin_idx#23 = (word) xsin_idx#27 (word) xsin_idx#28 (word) xsin_idx#26 (word) xsin_idx#25 (word) xsin_idx#24
|
||||
Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0
|
||||
Alias (byte) fill::val#1 = (byte/word/dword~) main::$2
|
||||
Alias (word) rem16u#23 = (word) rem16u#27
|
||||
Alias (word) xsin_idx#13 = (word) xsin_idx#17 (word) xsin_idx#22
|
||||
Alias (byte*) SCREEN#3 = (byte*) SCREEN#40 (byte*) SCREEN#37
|
||||
Alias (signed word) sin16s_gen2::min#0 = (signed word/signed dword~) main::$5
|
||||
Alias (word) rem16u#17 = (word) rem16u#8 (word) rem16u#24 (word) rem16u#18 (word) rem16u#9
|
||||
Alias (word) xsin_idx#0 = (word) xsin_idx#7 (word) xsin_idx#8 (word) xsin_idx#1
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#21 (byte*) SCREEN#8
|
||||
Alias (byte*) LOGO#0 = (byte*) LOGO#3 (byte*) LOGO#2
|
||||
Alias (word) xsin_idx#11 = (word) xsin_idx#20 (word) xsin_idx#15 (word) xsin_idx#5
|
||||
Alias (byte*) SCREEN#32 = (byte*) SCREEN#34
|
||||
Alias (word) xsin_idx#10 = (word) xsin_idx#21 (word) xsin_idx#14 (word) xsin_idx#9
|
||||
Alias (byte*) SCREEN#30 = (byte*) SCREEN#33 (byte*) SCREEN#31 (byte*) SCREEN#39 (byte*) SCREEN#38
|
||||
Alias (signed byte) render_logo::x_char#0 = (signed byte~) render_logo::$4 (signed byte) render_logo::x_char#1 (signed byte) render_logo::x_char#2
|
||||
Alias (byte*) SCREEN#22 = (byte*) SCREEN#26 (byte*) SCREEN#29
|
||||
Alias (byte) render_logo::logo_idx#1 = (byte~) render_logo::$18
|
||||
Alias (byte) render_logo::logo_start#0 = (byte~) render_logo::$6
|
||||
Alias (byte*) SCREEN#11 = (byte*) SCREEN#17 (byte*) SCREEN#25
|
||||
Alias (byte) render_logo::screen_idx#18 = (byte) render_logo::screen_idx#7 (byte) render_logo::screen_idx#19
|
||||
Alias (byte) render_logo::logo_start#1 = (byte) render_logo::logo_start#4
|
||||
Alias (byte) render_logo::screen_idx#8 = (byte) render_logo::screen_idx#9
|
||||
Alias (byte) render_logo::logo_start#2 = (byte) render_logo::logo_start#3
|
||||
Alias (byte*) SCREEN#23 = (byte*) SCREEN#4
|
||||
Alias (byte*) SCREEN#12 = (byte*) SCREEN#18
|
||||
Alias (byte) render_logo::logo_idx#10 = (byte) render_logo::logo_idx#12
|
||||
Alias (byte) render_logo::screen_idx#10 = (byte) render_logo::screen_idx#20
|
||||
Alias (byte) render_logo::screen_idx#11 = (byte) render_logo::screen_idx#12
|
||||
Alias (byte) render_logo::logo_idx#5 = (byte) render_logo::logo_idx#6
|
||||
Alias (byte*) SCREEN#24 = (byte*) SCREEN#5
|
||||
Alias (byte*) SCREEN#13 = (byte*) SCREEN#19
|
||||
Alias (byte) render_logo::logo_idx#11 = (byte) render_logo::logo_idx#7
|
||||
Alias (byte) render_logo::screen_idx#21 = (byte) render_logo::screen_idx#22
|
||||
Alias (byte) render_logo::screen_idx#13 = (byte) render_logo::screen_idx#14
|
||||
Alias (byte) render_logo::logo_idx#8 = (byte) render_logo::logo_idx#9
|
||||
Alias (byte*) SCREEN#27 = (byte*) SCREEN#6
|
||||
Alias (byte*) SCREEN#14 = (byte*) SCREEN#20
|
||||
Alias (byte) render_logo::screen_idx#15 = (byte) render_logo::screen_idx#23
|
||||
Alias (byte) render_logo::screen_idx#16 = (byte) render_logo::screen_idx#17
|
||||
Alias (byte*) SCREEN#28 = (byte*) SCREEN#7
|
||||
Alias (word) xsin_idx#16 = (word) xsin_idx#2
|
||||
Alias (word) rem16u#10 = (word) rem16u#19
|
||||
Alias (word) xsin_idx#12 = (word) xsin_idx#6
|
||||
@ -2030,7 +1931,6 @@ Alias (dword) mul16u::mb#2 = (dword) mul16u::mb#3
|
||||
Alias (signed word) mul16s::b#1 = (signed word) mul16s::b#2
|
||||
Alias (signed word) mul16s::a#1 = (signed word) mul16s::a#3
|
||||
Alias (byte) sin16s::isUpper#2 = (byte) sin16s::isUpper#8
|
||||
Alias (byte*) SCREEN#30 = (byte*) SCREEN#36
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (word) divr16u::divisor#2
|
||||
Self Phi Eliminated (signed word) sin16s_gen2::ampl#1
|
||||
@ -2040,21 +1940,15 @@ Self Phi Eliminated (word) sin16s_gen2::wavelength#2
|
||||
Self Phi Eliminated (word) rem16u#16
|
||||
Self Phi Eliminated (byte) fill::val#2
|
||||
Self Phi Eliminated (byte*) fill::end#1
|
||||
Self Phi Eliminated (byte*) SCREEN#3
|
||||
Self Phi Eliminated (word) rem16u#23
|
||||
Self Phi Eliminated (word) xsin_idx#13
|
||||
Self Phi Eliminated (word) xsin_idx#10
|
||||
Self Phi Eliminated (byte*) SCREEN#30
|
||||
Self Phi Eliminated (byte*) SCREEN#23
|
||||
Self Phi Eliminated (byte) render_logo::screen_idx#8
|
||||
Self Phi Eliminated (byte) render_logo::logo_start#2
|
||||
Self Phi Eliminated (byte*) SCREEN#24
|
||||
Self Phi Eliminated (byte) render_logo::logo_idx#5
|
||||
Self Phi Eliminated (byte) render_logo::screen_idx#11
|
||||
Self Phi Eliminated (byte*) SCREEN#27
|
||||
Self Phi Eliminated (byte) render_logo::logo_idx#8
|
||||
Self Phi Eliminated (byte) render_logo::screen_idx#13
|
||||
Self Phi Eliminated (byte*) SCREEN#28
|
||||
Self Phi Eliminated (byte) render_logo::screen_idx#16
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6
|
||||
@ -2079,31 +1973,21 @@ Redundant Phi (word) rem16u#16 (word) rem16u#15
|
||||
Redundant Phi (dword) sin16s::x#3 (dword) sin16s::x#0
|
||||
Redundant Phi (byte) fill::val#2 (byte) fill::val#3
|
||||
Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) LOGO#1 (byte*) LOGO#0
|
||||
Redundant Phi (word) rem16u#30 (word) rem16u#0
|
||||
Redundant Phi (word) xsin_idx#23 (word) xsin_idx#16
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#1
|
||||
Redundant Phi (word) rem16u#23 (word) rem16u#30
|
||||
Redundant Phi (word) xsin_idx#13 (word) xsin_idx#23
|
||||
Redundant Phi (word) rem16u#17 (word) rem16u#16
|
||||
Redundant Phi (word) xsin_idx#0 (word) xsin_idx#11
|
||||
Redundant Phi (word) xsin_idx#18 (word) xsin_idx#13
|
||||
Redundant Phi (byte*) SCREEN#35 (byte*) SCREEN#3
|
||||
Redundant Phi (word) xsin_idx#10 (word) xsin_idx#11
|
||||
Redundant Phi (byte*) SCREEN#30 (byte*) SCREEN#32
|
||||
Redundant Phi (signed word) render_logo::xpos#1 (signed word) render_logo::xpos#0
|
||||
Redundant Phi (byte*) SCREEN#22 (byte*) SCREEN#30
|
||||
Redundant Phi (byte*) SCREEN#23 (byte*) SCREEN#11
|
||||
Redundant Phi (byte) render_logo::screen_idx#8 (byte) render_logo::screen_idx#18
|
||||
Redundant Phi (byte) render_logo::logo_start#2 (byte) render_logo::logo_start#1
|
||||
Redundant Phi (byte*) SCREEN#24 (byte*) SCREEN#12
|
||||
Redundant Phi (byte) render_logo::logo_idx#5 (byte) render_logo::logo_idx#10
|
||||
Redundant Phi (byte) render_logo::screen_idx#11 (byte) render_logo::screen_idx#10
|
||||
Redundant Phi (byte*) SCREEN#27 (byte*) SCREEN#13
|
||||
Redundant Phi (byte) render_logo::logo_idx#8 (byte) render_logo::logo_idx#11
|
||||
Redundant Phi (byte) render_logo::screen_idx#13 (byte) render_logo::screen_idx#21
|
||||
Redundant Phi (byte*) SCREEN#28 (byte*) SCREEN#14
|
||||
Redundant Phi (byte) render_logo::screen_idx#16 (byte) render_logo::screen_idx#15
|
||||
Redundant Phi (word) rem16u#10 (word) rem16u#17
|
||||
Redundant Phi (word) xsin_idx#12 (word) xsin_idx#0
|
||||
@ -2123,15 +2007,15 @@ Simple Condition (bool~) fill::$1 [359] if((byte*) fill::addr#1!=(byte*) fill::e
|
||||
Simple Condition (bool~) main::$4 [410] if((byte) main::ch#1!=rangelast(0,$ef)) goto main::@1
|
||||
Simple Condition (bool~) loop::$0 [435] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto loop::@5
|
||||
Simple Condition (bool~) loop::$5 [448] if((word) xsin_idx#3!=(word/signed dword/dword~) loop::$3) goto loop::@7
|
||||
Simple Condition (bool~) render_logo::$5 [468] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1
|
||||
Simple Condition (bool~) render_logo::$7 [480] if((byte) render_logo::screen_idx#18!=(byte) render_logo::logo_start#1) goto render_logo::@3
|
||||
Simple Condition (bool~) render_logo::$10 [491] unroll if((byte) render_logo::line#2!=rangelast(0,5)) goto render_logo::@5
|
||||
Simple Condition (bool~) render_logo::$11 [496] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@7
|
||||
Simple Condition (bool~) render_logo::$16 [507] unroll if((byte) render_logo::line#4!=rangelast(0,5)) goto render_logo::@9
|
||||
Simple Condition (bool~) render_logo::$19 [513] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12
|
||||
Simple Condition (bool~) render_logo::$24 [524] unroll if((byte) render_logo::line#6!=rangelast(0,5)) goto render_logo::@14
|
||||
Simple Condition (bool~) render_logo::$25 [530] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@16
|
||||
Simple Condition (bool~) render_logo::$28 [539] unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@18
|
||||
Simple Condition (bool~) render_logo::$5 [467] if((signed word) render_logo::xpos#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto render_logo::@1
|
||||
Simple Condition (bool~) render_logo::$7 [479] if((byte) render_logo::screen_idx#18!=(byte) render_logo::logo_start#1) goto render_logo::@3
|
||||
Simple Condition (bool~) render_logo::$10 [490] unroll if((byte) render_logo::line#2!=rangelast(0,5)) goto render_logo::@5
|
||||
Simple Condition (bool~) render_logo::$11 [495] if((byte) render_logo::screen_idx#10!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@7
|
||||
Simple Condition (bool~) render_logo::$16 [506] unroll if((byte) render_logo::line#4!=rangelast(0,5)) goto render_logo::@9
|
||||
Simple Condition (bool~) render_logo::$19 [512] if((byte) render_logo::logo_idx#11!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@12
|
||||
Simple Condition (bool~) render_logo::$24 [523] unroll if((byte) render_logo::line#6!=rangelast(0,5)) goto render_logo::@14
|
||||
Simple Condition (bool~) render_logo::$25 [529] if((byte) render_logo::screen_idx#15!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto render_logo::@16
|
||||
Simple Condition (bool~) render_logo::$28 [538] unroll if((byte) render_logo::line#8!=rangelast(0,5)) goto render_logo::@18
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
@ -2352,19 +2236,9 @@ Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (dword) div32u16u::return#0 = (dword~) div32u16u::$4
|
||||
Alias (dword) mul16s::m#4 = (dword) mul16s::m#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#32
|
||||
Self Phi Eliminated (byte) render_logo::logo_start#1
|
||||
Self Phi Eliminated (byte*) SCREEN#11
|
||||
Self Phi Eliminated (byte*) SCREEN#12
|
||||
Self Phi Eliminated (byte*) SCREEN#13
|
||||
Self Phi Eliminated (byte*) SCREEN#14
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#32 (const byte*) SCREEN#0
|
||||
Redundant Phi (byte) render_logo::logo_start#1 (byte)(signed byte) render_logo::x_char#0
|
||||
Redundant Phi (byte*) SCREEN#11 (byte*) SCREEN#32
|
||||
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#11
|
||||
Redundant Phi (byte*) SCREEN#13 (byte*) SCREEN#32
|
||||
Redundant Phi (byte*) SCREEN#14 (byte*) SCREEN#13
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Unrolling loop Loop head: render_logo::@5 tails: render_logo::@5 blocks: render_logo::@5
|
||||
Successful SSA optimization Pass2LoopUnroll
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) LOGO
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call (byte~) main::$0 ← call toD018 (byte*) SCREEN (byte*) LOGO
|
||||
|
||||
@ -96,17 +98,14 @@ CONTROL FLOW GRAPH SSA
|
||||
}}
|
||||
to:@6
|
||||
main: scope:[main] from @6
|
||||
(byte*) LOGO#1 ← phi( @6/(byte*) LOGO#2 )
|
||||
(byte*) SCREEN#1 ← phi( @6/(byte*) SCREEN#5 )
|
||||
*((byte*) BORDERCOL#0) ← (byte) WHITE#0
|
||||
*((byte*) BGCOL2#0) ← (byte) DARK_GREY#0
|
||||
*((byte*) BGCOL#0) ← *((byte*) BGCOL2#0)
|
||||
*((byte*) BGCOL3#0) ← (byte) BLACK#0
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#1
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) LOGO#1
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#0
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) LOGO#0
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main
|
||||
(byte*) SCREEN#9 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte*) main::toD0181_gfx#1 ← phi( main/(byte*) main::toD0181_gfx#0 )
|
||||
(byte*) main::toD0181_screen#1 ← phi( main/(byte*) main::toD0181_screen#0 )
|
||||
(word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
|
||||
@ -121,25 +120,22 @@ main::toD0181: scope:[main] from main
|
||||
(byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0
|
||||
to:main::toD0181_@return
|
||||
main::toD0181_@return: scope:[main] from main::toD0181
|
||||
(byte*) SCREEN#6 ← phi( main::toD0181/(byte*) SCREEN#9 )
|
||||
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
||||
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::toD0181_@return
|
||||
(byte*) SCREEN#2 ← phi( main::toD0181_@return/(byte*) SCREEN#6 )
|
||||
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
||||
(byte~) main::$0 ← (byte) main::toD0181_return#3
|
||||
*((byte*) D018#0) ← (byte~) main::$0
|
||||
(byte~) main::$1 ← (byte) VIC_MCM#0 | (byte) VIC_CSEL#0
|
||||
*((byte*) D016#0) ← (byte~) main::$1
|
||||
(word/signed word/dword/signed dword~) main::$2 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
(byte*) fill::start#0 ← (byte*) SCREEN#2
|
||||
(byte*) fill::start#0 ← (byte*) SCREEN#0
|
||||
(word) fill::size#0 ← (word/signed word/dword/signed dword~) main::$2
|
||||
(byte) fill::val#0 ← (byte) BLACK#0
|
||||
call fill
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
(byte*) SCREEN#10 ← phi( main::@9/(byte*) SCREEN#2 )
|
||||
(word/signed word/dword/signed dword~) main::$4 ← (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
(byte/word/dword~) main::$5 ← (byte) WHITE#0 | (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
(byte*) fill::start#1 ← (byte*) COLS#0
|
||||
@ -148,26 +144,22 @@ main::@10: scope:[main] from main::@9
|
||||
call fill
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
(byte*) SCREEN#7 ← phi( main::@10/(byte*) SCREEN#10 )
|
||||
(byte) main::ch#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@1 main::@11
|
||||
(byte*) SCREEN#3 ← phi( main::@1/(byte*) SCREEN#3 main::@11/(byte*) SCREEN#7 )
|
||||
(byte) main::ch#2 ← phi( main::@1/(byte) main::ch#1 main::@11/(byte) main::ch#0 )
|
||||
*((byte*) SCREEN#3 + (byte) main::ch#2) ← (byte) main::ch#2
|
||||
*((byte*) SCREEN#0 + (byte) main::ch#2) ← (byte) main::ch#2
|
||||
(byte) main::ch#1 ← (byte) main::ch#2 + rangenext(0,$ef)
|
||||
(bool~) main::$7 ← (byte) main::ch#1 != rangelast(0,$ef)
|
||||
if((bool~) main::$7) goto main::@1
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
(byte*) SCREEN#8 ← phi( main::@1/(byte*) SCREEN#3 main::@3/(byte*) SCREEN#4 )
|
||||
if(true) goto main::@3
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main::@2
|
||||
(byte*) SCREEN#4 ← phi( main::@2/(byte*) SCREEN#8 )
|
||||
(byte*~) main::$8 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) $3e7
|
||||
(byte*~) main::$9 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) $3e7
|
||||
(byte*~) main::$10 ← (byte*) SCREEN#4 + (word/signed word/dword/signed dword) $3e7
|
||||
(byte*~) main::$8 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $3e7
|
||||
(byte*~) main::$9 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $3e7
|
||||
(byte*~) main::$10 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $3e7
|
||||
*((byte*~) main::$10) ← ++ *((byte*~) main::$10)
|
||||
kickasm() {{ inc $d020 }}
|
||||
to:main::@2
|
||||
@ -195,8 +187,6 @@ fill::@return: scope:[fill] from fill::@1
|
||||
return
|
||||
to:@return
|
||||
@6: scope:[] from @4
|
||||
(byte*) LOGO#2 ← phi( @4/(byte*) LOGO#0 )
|
||||
(byte*) SCREEN#5 ← phi( @4/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@7
|
||||
@7: scope:[] from @6
|
||||
@ -297,8 +287,6 @@ SYMBOL TABLE SSA
|
||||
(byte) LIGHT_GREY#0
|
||||
(byte*) LOGO
|
||||
(byte*) LOGO#0
|
||||
(byte*) LOGO#1
|
||||
(byte*) LOGO#2
|
||||
(byte) ORANGE
|
||||
(byte) ORANGE#0
|
||||
(byte) PINK
|
||||
@ -327,16 +315,6 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte*) SPRITES_COLS
|
||||
(byte*) SPRITES_COLS#0
|
||||
(byte*) SPRITES_ENABLE
|
||||
@ -467,31 +445,21 @@ Culled Empty Block (label) @7
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#9 (byte*) SCREEN#6 (byte*) SCREEN#2 (byte*) SCREEN#10 (byte*) SCREEN#7
|
||||
Alias (byte) main::toD0181_return#0 = (byte) main::toD0181_$8#0 (byte) main::toD0181_return#2 (byte) main::toD0181_return#1 (byte) main::toD0181_return#3 (byte~) main::$0
|
||||
Alias (word) fill::size#0 = (word/signed word/dword/signed dword~) main::$2
|
||||
Alias (word) fill::size#1 = (word/signed word/dword/signed dword~) main::$4
|
||||
Alias (byte) fill::val#1 = (byte/word/dword~) main::$5
|
||||
Alias (byte*) SCREEN#4 = (byte*) SCREEN#8
|
||||
Alias (byte*) fill::end#0 = (byte*~) fill::$0
|
||||
Alias (byte*) fill::addr#0 = (byte*) fill::start#2
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#5
|
||||
Alias (byte*) LOGO#0 = (byte*) LOGO#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#3
|
||||
Self Phi Eliminated (byte*) SCREEN#4
|
||||
Self Phi Eliminated (byte) fill::val#2
|
||||
Self Phi Eliminated (byte*) fill::end#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) LOGO#1 (byte*) LOGO#0
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#1
|
||||
Redundant Phi (byte*) SCREEN#4 (byte*) SCREEN#3
|
||||
Redundant Phi (byte) fill::val#2 (byte) fill::val#3
|
||||
Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$7 [127] if((byte) main::ch#1!=rangelast(0,$ef)) goto main::@1
|
||||
Simple Condition (bool~) fill::$1 [145] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
Simple Condition (bool~) main::$7 [124] if((byte) main::ch#1!=rangelast(0,$ef)) goto main::@1
|
||||
Simple Condition (bool~) fill::$1 [140] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
|
@ -1,3 +1,6 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) BITMAP
|
||||
Identified constant variable (signed word*) sin2
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
Inlined call call vicSelectGfxBank (byte*) SCREEN
|
||||
Inlined call (byte~) main::$4 ← call toD018 (byte*) SCREEN (byte*) BITMAP
|
||||
@ -707,10 +710,7 @@ bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||
}}
|
||||
to:@32
|
||||
main: scope:[main] from @32
|
||||
(signed word*) sin2#21 ← phi( @32/(signed word*) sin2#22 )
|
||||
(word) rem16u#45 ← phi( @32/(word) rem16u#25 )
|
||||
(byte*) BITMAP#10 ← phi( @32/(byte*) BITMAP#11 )
|
||||
(byte*) SCREEN#1 ← phi( @32/(byte*) SCREEN#4 )
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT_DDR#0) ← (byte) PROCPORT_DDR_MEMORY_MASK#0
|
||||
*((byte*) PROCPORT#0) ← (byte) PROCPORT_RAM_IO#0
|
||||
@ -718,22 +718,16 @@ main: scope:[main] from @32
|
||||
(byte~) main::$1 ← (byte~) main::$0 | (byte) VIC_RSEL#0
|
||||
(byte/word/dword~) main::$2 ← (byte~) main::$1 | (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
*((byte*) D011#0) ← (byte/word/dword~) main::$2
|
||||
(byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#1
|
||||
(byte*) main::vicSelectGfxBank1_gfx#0 ← (byte*) SCREEN#0
|
||||
to:main::vicSelectGfxBank1
|
||||
main::vicSelectGfxBank1: scope:[main] from main
|
||||
(signed word*) sin2#20 ← phi( main/(signed word*) sin2#21 )
|
||||
(word) rem16u#44 ← phi( main/(word) rem16u#45 )
|
||||
(byte*) BITMAP#9 ← phi( main/(byte*) BITMAP#10 )
|
||||
(byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte*) main::vicSelectGfxBank1_gfx#1 ← phi( main/(byte*) main::vicSelectGfxBank1_gfx#0 )
|
||||
*((byte*) CIA2_PORT_A_DDR#0) ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 ← (byte*) main::vicSelectGfxBank1_gfx#1
|
||||
to:main::vicSelectGfxBank1_toDd001
|
||||
main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||
(signed word*) sin2#19 ← phi( main::vicSelectGfxBank1/(signed word*) sin2#20 )
|
||||
(word) rem16u#43 ← phi( main::vicSelectGfxBank1/(word) rem16u#44 )
|
||||
(byte*) BITMAP#7 ← phi( main::vicSelectGfxBank1/(byte*) BITMAP#9 )
|
||||
(byte*) SCREEN#9 ← phi( main::vicSelectGfxBank1/(byte*) SCREEN#10 )
|
||||
(byte*) main::vicSelectGfxBank1_toDd001_gfx#1 ← phi( main::vicSelectGfxBank1/(byte*) main::vicSelectGfxBank1_toDd001_gfx#0 )
|
||||
(word) main::vicSelectGfxBank1_toDd001_$0#0 ← ((word)) (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
||||
(byte) main::vicSelectGfxBank1_toDd001_$1#0 ← > (word) main::vicSelectGfxBank1_toDd001_$0#0
|
||||
@ -742,36 +736,24 @@ main::vicSelectGfxBank1_toDd001: scope:[main] from main::vicSelectGfxBank1
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#0 ← (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0
|
||||
to:main::vicSelectGfxBank1_toDd001_@return
|
||||
main::vicSelectGfxBank1_toDd001_@return: scope:[main] from main::vicSelectGfxBank1_toDd001
|
||||
(signed word*) sin2#18 ← phi( main::vicSelectGfxBank1_toDd001/(signed word*) sin2#19 )
|
||||
(word) rem16u#42 ← phi( main::vicSelectGfxBank1_toDd001/(word) rem16u#43 )
|
||||
(byte*) BITMAP#5 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) BITMAP#7 )
|
||||
(byte*) SCREEN#7 ← phi( main::vicSelectGfxBank1_toDd001/(byte*) SCREEN#9 )
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#2 ← phi( main::vicSelectGfxBank1_toDd001/(byte) main::vicSelectGfxBank1_toDd001_return#0 )
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#1 ← (byte) main::vicSelectGfxBank1_toDd001_return#2
|
||||
to:main::vicSelectGfxBank1_@1
|
||||
main::vicSelectGfxBank1_@1: scope:[main] from main::vicSelectGfxBank1_toDd001_@return
|
||||
(signed word*) sin2#17 ← phi( main::vicSelectGfxBank1_toDd001_@return/(signed word*) sin2#18 )
|
||||
(word) rem16u#41 ← phi( main::vicSelectGfxBank1_toDd001_@return/(word) rem16u#42 )
|
||||
(byte*) BITMAP#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) BITMAP#5 )
|
||||
(byte*) SCREEN#5 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte*) SCREEN#7 )
|
||||
(byte) main::vicSelectGfxBank1_toDd001_return#3 ← phi( main::vicSelectGfxBank1_toDd001_@return/(byte) main::vicSelectGfxBank1_toDd001_return#1 )
|
||||
(byte) main::vicSelectGfxBank1_$0#0 ← (byte) main::vicSelectGfxBank1_toDd001_return#3
|
||||
*((byte*) CIA2_PORT_A#0) ← (byte) main::vicSelectGfxBank1_$0#0
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::vicSelectGfxBank1_@1
|
||||
(signed word*) sin2#16 ← phi( main::vicSelectGfxBank1_@1/(signed word*) sin2#17 )
|
||||
(word) rem16u#40 ← phi( main::vicSelectGfxBank1_@1/(word) rem16u#41 )
|
||||
(byte*) BITMAP#1 ← phi( main::vicSelectGfxBank1_@1/(byte*) BITMAP#3 )
|
||||
(byte*) SCREEN#2 ← phi( main::vicSelectGfxBank1_@1/(byte*) SCREEN#5 )
|
||||
*((byte*) D016#0) ← (byte) VIC_CSEL#0
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#2
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#1
|
||||
(byte*) main::toD0181_screen#0 ← (byte*) SCREEN#0
|
||||
(byte*) main::toD0181_gfx#0 ← (byte*) BITMAP#0
|
||||
to:main::toD0181
|
||||
main::toD0181: scope:[main] from main::@7
|
||||
(signed word*) sin2#15 ← phi( main::@7/(signed word*) sin2#16 )
|
||||
(word) rem16u#39 ← phi( main::@7/(word) rem16u#40 )
|
||||
(byte*) BITMAP#8 ← phi( main::@7/(byte*) BITMAP#1 )
|
||||
(byte*) SCREEN#8 ← phi( main::@7/(byte*) SCREEN#2 )
|
||||
(byte*) main::toD0181_gfx#1 ← phi( main::@7/(byte*) main::toD0181_gfx#0 )
|
||||
(byte*) main::toD0181_screen#1 ← phi( main::@7/(byte*) main::toD0181_screen#0 )
|
||||
(word) main::toD0181_$0#0 ← ((word)) (byte*) main::toD0181_screen#1
|
||||
@ -786,40 +768,30 @@ main::toD0181: scope:[main] from main::@7
|
||||
(byte) main::toD0181_return#0 ← (byte) main::toD0181_$8#0
|
||||
to:main::toD0181_@return
|
||||
main::toD0181_@return: scope:[main] from main::toD0181
|
||||
(signed word*) sin2#14 ← phi( main::toD0181/(signed word*) sin2#15 )
|
||||
(word) rem16u#37 ← phi( main::toD0181/(word) rem16u#39 )
|
||||
(byte*) BITMAP#6 ← phi( main::toD0181/(byte*) BITMAP#8 )
|
||||
(byte*) SCREEN#6 ← phi( main::toD0181/(byte*) SCREEN#8 )
|
||||
(byte) main::toD0181_return#2 ← phi( main::toD0181/(byte) main::toD0181_return#0 )
|
||||
(byte) main::toD0181_return#1 ← (byte) main::toD0181_return#2
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::toD0181_@return
|
||||
(signed word*) sin2#13 ← phi( main::toD0181_@return/(signed word*) sin2#14 )
|
||||
(word) rem16u#35 ← phi( main::toD0181_@return/(word) rem16u#37 )
|
||||
(byte*) BITMAP#4 ← phi( main::toD0181_@return/(byte*) BITMAP#6 )
|
||||
(byte*) SCREEN#3 ← phi( main::toD0181_@return/(byte*) SCREEN#6 )
|
||||
(byte) main::toD0181_return#3 ← phi( main::toD0181_@return/(byte) main::toD0181_return#1 )
|
||||
(byte~) main::$4 ← (byte) main::toD0181_return#3
|
||||
*((byte*) D018#0) ← (byte~) main::$4
|
||||
(byte*) fill::start#0 ← (byte*) SCREEN#3
|
||||
(byte*) fill::start#0 ← (byte*) SCREEN#0
|
||||
(word) fill::size#0 ← (word/signed word/dword/signed dword) $3e8
|
||||
(byte) fill::val#0 ← (byte) WHITE#0
|
||||
call fill
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
(signed word*) sin2#12 ← phi( main::@8/(signed word*) sin2#13 )
|
||||
(word) rem16u#33 ← phi( main::@8/(word) rem16u#35 )
|
||||
(byte*) BITMAP#2 ← phi( main::@8/(byte*) BITMAP#4 )
|
||||
(byte*) bitmap_init::bitmap#0 ← (byte*) BITMAP#2
|
||||
(byte*) bitmap_init::bitmap#0 ← (byte*) BITMAP#0
|
||||
call bitmap_init
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
(signed word*) sin2#11 ← phi( main::@9/(signed word*) sin2#12 )
|
||||
(word) rem16u#27 ← phi( main::@9/(word) rem16u#33 )
|
||||
call bitmap_clear
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
(signed word*) sin2#9 ← phi( main::@10/(signed word*) sin2#11 )
|
||||
(word) rem16u#23 ← phi( main::@10/(word) rem16u#27 )
|
||||
(signed word/signed dword~) main::$8 ← - (word/signed word/dword/signed dword) $140
|
||||
(signed word*) sin16s_gen2::sintab#1 ← (signed word[$200]) sin#0
|
||||
@ -829,7 +801,6 @@ main::@11: scope:[main] from main::@10
|
||||
call sin16s_gen2
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
(signed word*) sin2#6 ← phi( main::@11/(signed word*) sin2#9 )
|
||||
(word) rem16u#17 ← phi( main::@11/(word) rem16u#7 )
|
||||
(word) rem16u#8 ← (word) rem16u#17
|
||||
call render_sine
|
||||
@ -851,12 +822,10 @@ main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
render_sine: scope:[render_sine] from main::@12
|
||||
(signed word*) sin2#4 ← phi( main::@12/(signed word*) sin2#6 )
|
||||
(word) render_sine::xpos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(word) render_sine::sin_idx#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_sine::@1
|
||||
render_sine::@1: scope:[render_sine] from render_sine render_sine::@2
|
||||
(signed word*) sin2#3 ← phi( render_sine/(signed word*) sin2#4 render_sine::@2/(signed word*) sin2#5 )
|
||||
(word) render_sine::xpos#6 ← phi( render_sine/(word) render_sine::xpos#0 render_sine::@2/(word) render_sine::xpos#8 )
|
||||
(word) render_sine::sin_idx#2 ← phi( render_sine/(word) render_sine::sin_idx#0 render_sine::@2/(word) render_sine::sin_idx#1 )
|
||||
(word~) render_sine::$0 ← (word) render_sine::sin_idx#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
@ -867,7 +836,6 @@ render_sine::@1: scope:[render_sine] from render_sine render_sine::@2
|
||||
(byte) wrap_y::return#0 ← (byte) wrap_y::return#3
|
||||
to:render_sine::@5
|
||||
render_sine::@5: scope:[render_sine] from render_sine::@1
|
||||
(signed word*) sin2#2 ← phi( render_sine::@1/(signed word*) sin2#3 )
|
||||
(word) render_sine::sin_idx#5 ← phi( render_sine::@1/(word) render_sine::sin_idx#2 )
|
||||
(word) render_sine::xpos#3 ← phi( render_sine::@1/(word) render_sine::xpos#6 )
|
||||
(byte) wrap_y::return#4 ← phi( render_sine::@1/(byte) wrap_y::return#0 )
|
||||
@ -879,10 +847,9 @@ render_sine::@5: scope:[render_sine] from render_sine::@1
|
||||
to:render_sine::@6
|
||||
render_sine::@6: scope:[render_sine] from render_sine::@5
|
||||
(word) render_sine::xpos#7 ← phi( render_sine::@5/(word) render_sine::xpos#3 )
|
||||
(signed word*) sin2#1 ← phi( render_sine::@5/(signed word*) sin2#2 )
|
||||
(word) render_sine::sin_idx#3 ← phi( render_sine::@5/(word) render_sine::sin_idx#5 )
|
||||
(word~) render_sine::$4 ← (word) render_sine::sin_idx#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
(signed word*~) render_sine::$5 ← (signed word*) sin2#1 + (word~) render_sine::$4
|
||||
(signed word*~) render_sine::$5 ← (signed word*) sin2#0 + (word~) render_sine::$4
|
||||
(signed word) render_sine::sin2_val#0 ← *((signed word*~) render_sine::$5)
|
||||
(signed word/signed dword~) render_sine::$6 ← (signed word) render_sine::sin2_val#0 + (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(signed word) wrap_y::y#1 ← (signed word/signed dword~) render_sine::$6
|
||||
@ -890,7 +857,6 @@ render_sine::@6: scope:[render_sine] from render_sine::@5
|
||||
(byte) wrap_y::return#1 ← (byte) wrap_y::return#3
|
||||
to:render_sine::@7
|
||||
render_sine::@7: scope:[render_sine] from render_sine::@6
|
||||
(signed word*) sin2#10 ← phi( render_sine::@6/(signed word*) sin2#1 )
|
||||
(word) render_sine::sin_idx#8 ← phi( render_sine::@6/(word) render_sine::sin_idx#3 )
|
||||
(word) render_sine::xpos#4 ← phi( render_sine::@6/(word) render_sine::xpos#7 )
|
||||
(byte) wrap_y::return#5 ← phi( render_sine::@6/(byte) wrap_y::return#1 )
|
||||
@ -901,7 +867,6 @@ render_sine::@7: scope:[render_sine] from render_sine::@6
|
||||
call bitmap_plot
|
||||
to:render_sine::@8
|
||||
render_sine::@8: scope:[render_sine] from render_sine::@7
|
||||
(signed word*) sin2#8 ← phi( render_sine::@7/(signed word*) sin2#10 )
|
||||
(word) render_sine::sin_idx#7 ← phi( render_sine::@7/(word) render_sine::sin_idx#8 )
|
||||
(word) render_sine::xpos#5 ← phi( render_sine::@7/(word) render_sine::xpos#4 )
|
||||
(word) render_sine::xpos#1 ← ++ (word) render_sine::xpos#5
|
||||
@ -910,7 +875,6 @@ render_sine::@8: scope:[render_sine] from render_sine::@7
|
||||
if((bool~) render_sine::$10) goto render_sine::@2
|
||||
to:render_sine::@3
|
||||
render_sine::@2: scope:[render_sine] from render_sine::@3 render_sine::@8
|
||||
(signed word*) sin2#5 ← phi( render_sine::@3/(signed word*) sin2#7 render_sine::@8/(signed word*) sin2#8 )
|
||||
(word) render_sine::xpos#8 ← phi( render_sine::@3/(word) render_sine::xpos#2 render_sine::@8/(word) render_sine::xpos#1 )
|
||||
(word) render_sine::sin_idx#4 ← phi( render_sine::@3/(word) render_sine::sin_idx#6 render_sine::@8/(word) render_sine::sin_idx#7 )
|
||||
(word) render_sine::sin_idx#1 ← ++ (word) render_sine::sin_idx#4
|
||||
@ -918,7 +882,6 @@ render_sine::@2: scope:[render_sine] from render_sine::@3 render_sine::@8
|
||||
if((bool~) render_sine::$11) goto render_sine::@1
|
||||
to:render_sine::@return
|
||||
render_sine::@3: scope:[render_sine] from render_sine::@8
|
||||
(signed word*) sin2#7 ← phi( render_sine::@8/(signed word*) sin2#8 )
|
||||
(word) render_sine::sin_idx#6 ← phi( render_sine::@8/(word) render_sine::sin_idx#7 )
|
||||
(word) render_sine::xpos#2 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:render_sine::@2
|
||||
@ -957,10 +920,7 @@ wrap_y::@return: scope:[wrap_y] from wrap_y::@6
|
||||
return
|
||||
to:@return
|
||||
@32: scope:[] from @29
|
||||
(signed word*) sin2#22 ← phi( @29/(signed word*) sin2#0 )
|
||||
(byte*) BITMAP#11 ← phi( @29/(byte*) BITMAP#0 )
|
||||
(word) rem16u#25 ← phi( @29/(word) rem16u#30 )
|
||||
(byte*) SCREEN#4 ← phi( @29/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@33
|
||||
@33: scope:[] from @32
|
||||
@ -993,17 +953,6 @@ SYMBOL TABLE SSA
|
||||
(byte*) BGCOL4#0
|
||||
(byte*) BITMAP
|
||||
(byte*) BITMAP#0
|
||||
(byte*) BITMAP#1
|
||||
(byte*) BITMAP#10
|
||||
(byte*) BITMAP#11
|
||||
(byte*) BITMAP#2
|
||||
(byte*) BITMAP#3
|
||||
(byte*) BITMAP#4
|
||||
(byte*) BITMAP#5
|
||||
(byte*) BITMAP#6
|
||||
(byte*) BITMAP#7
|
||||
(byte*) BITMAP#8
|
||||
(byte*) BITMAP#9
|
||||
(byte) BLACK
|
||||
(byte) BLACK#0
|
||||
(byte) BLUE
|
||||
@ -1118,16 +1067,6 @@ SYMBOL TABLE SSA
|
||||
(byte) RED#0
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(word) SIN_SIZE
|
||||
(word) SIN_SIZE#0
|
||||
(byte*) SPRITES_COLS
|
||||
@ -1882,28 +1821,6 @@ SYMBOL TABLE SSA
|
||||
(dword) sin16s_gen2::x#4
|
||||
(signed word*) sin2
|
||||
(signed word*) sin2#0
|
||||
(signed word*) sin2#1
|
||||
(signed word*) sin2#10
|
||||
(signed word*) sin2#11
|
||||
(signed word*) sin2#12
|
||||
(signed word*) sin2#13
|
||||
(signed word*) sin2#14
|
||||
(signed word*) sin2#15
|
||||
(signed word*) sin2#16
|
||||
(signed word*) sin2#17
|
||||
(signed word*) sin2#18
|
||||
(signed word*) sin2#19
|
||||
(signed word*) sin2#2
|
||||
(signed word*) sin2#20
|
||||
(signed word*) sin2#21
|
||||
(signed word*) sin2#22
|
||||
(signed word*) sin2#3
|
||||
(signed word*) sin2#4
|
||||
(signed word*) sin2#5
|
||||
(signed word*) sin2#6
|
||||
(signed word*) sin2#7
|
||||
(signed word*) sin2#8
|
||||
(signed word*) sin2#9
|
||||
(byte()) wrap_y((signed word) wrap_y::y)
|
||||
(bool~) wrap_y::$0
|
||||
(bool~) wrap_y::$1
|
||||
@ -1944,7 +1861,7 @@ Inversing boolean not [264] (bool~) sin16s::$4 ← (dword) sin16s::x#4 < (dword)
|
||||
Inversing boolean not [324] (bool~) sin16s::$19 ← (byte) sin16s::isUpper#2 == (byte/signed byte/word/signed word/dword/signed dword) 0 from [323] (bool~) sin16s::$18 ← (byte) sin16s::isUpper#2 != (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [372] (bool~) bitmap_init::$1 ← (byte) bitmap_init::bits#1 != (byte/signed byte/word/signed word/dword/signed dword) 0 from [371] (bool~) bitmap_init::$0 ← (byte) bitmap_init::bits#1 == (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Inversing boolean not [392] (bool~) bitmap_init::$9 ← (byte~) bitmap_init::$7 != (byte/signed byte/word/signed word/dword/signed dword) 7 from [391] (bool~) bitmap_init::$8 ← (byte~) bitmap_init::$7 == (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
Inversing boolean not [537] (bool~) render_sine::$10 ← (word) render_sine::xpos#1 != (word/signed word/dword/signed dword) $140 from [536] (bool~) render_sine::$9 ← (word) render_sine::xpos#1 == (word/signed word/dword/signed dword) $140
|
||||
Inversing boolean not [536] (bool~) render_sine::$10 ← (word) render_sine::xpos#1 != (word/signed word/dword/signed dword) $140 from [535] (bool~) render_sine::$9 ← (word) render_sine::xpos#1 == (word/signed word/dword/signed dword) $140
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (word) divr16u::rem#0 = (word~) divr16u::$0 (word) divr16u::rem#7
|
||||
Alias (word) divr16u::dividend#0 = (word~) divr16u::$6 (word) divr16u::dividend#8
|
||||
@ -2050,10 +1967,7 @@ Alias (byte) bitmap_clear::y#2 = (byte) bitmap_clear::y#3
|
||||
Alias (byte*) bitmap_clear::bitmap#1 = (byte*) bitmap_clear::bitmap#4
|
||||
Alias (byte*) bitmap_plot::plotter#0 = (byte*~) bitmap_plot::$0
|
||||
Alias (byte*) main::vicSelectGfxBank1_gfx#0 = (byte*) main::vicSelectGfxBank1_gfx#1 (byte*) main::vicSelectGfxBank1_toDd001_gfx#0 (byte*) main::vicSelectGfxBank1_toDd001_gfx#1
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#10 (byte*) SCREEN#9 (byte*) SCREEN#7 (byte*) SCREEN#5 (byte*) SCREEN#2 (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#3
|
||||
Alias (byte*) BITMAP#1 = (byte*) BITMAP#9 (byte*) BITMAP#10 (byte*) BITMAP#7 (byte*) BITMAP#5 (byte*) BITMAP#3 (byte*) BITMAP#8 (byte*) BITMAP#6 (byte*) BITMAP#4 (byte*) BITMAP#2
|
||||
Alias (word) rem16u#23 = (word) rem16u#44 (word) rem16u#45 (word) rem16u#43 (word) rem16u#42 (word) rem16u#41 (word) rem16u#40 (word) rem16u#39 (word) rem16u#37 (word) rem16u#35 (word) rem16u#33 (word) rem16u#27
|
||||
Alias (signed word*) sin2#11 = (signed word*) sin2#20 (signed word*) sin2#21 (signed word*) sin2#19 (signed word*) sin2#18 (signed word*) sin2#17 (signed word*) sin2#16 (signed word*) sin2#15 (signed word*) sin2#14 (signed word*) sin2#13 (signed word*) sin2#12 (signed word*) sin2#9 (signed word*) sin2#6
|
||||
Alias (byte) main::vicSelectGfxBank1_toDd001_return#0 = (byte/word/dword) main::vicSelectGfxBank1_toDd001_$3#0 (byte) main::vicSelectGfxBank1_toDd001_return#2 (byte) main::vicSelectGfxBank1_toDd001_return#1 (byte) main::vicSelectGfxBank1_toDd001_return#3 (byte) main::vicSelectGfxBank1_$0#0
|
||||
Alias (byte*) main::toD0181_screen#0 = (byte*) main::toD0181_screen#1
|
||||
Alias (byte*) main::toD0181_gfx#0 = (byte*) main::toD0181_gfx#1
|
||||
@ -2064,7 +1978,6 @@ Alias (word) rem16u#18 = (word) rem16u#29 (word) rem16u#24 (word) rem16u#9
|
||||
Alias (byte) wrap_y::return#0 = (byte) wrap_y::return#4
|
||||
Alias (word) render_sine::xpos#3 = (word) render_sine::xpos#6 (word) render_sine::xpos#7 (word) render_sine::xpos#4 (word) render_sine::xpos#5
|
||||
Alias (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#5 (word) render_sine::sin_idx#3 (word) render_sine::sin_idx#8 (word) render_sine::sin_idx#7 (word) render_sine::sin_idx#6
|
||||
Alias (signed word*) sin2#1 = (signed word*) sin2#2 (signed word*) sin2#3 (signed word*) sin2#10 (signed word*) sin2#8 (signed word*) sin2#7
|
||||
Alias (byte) render_sine::ypos#0 = (byte~) render_sine::$2
|
||||
Alias (signed word) wrap_y::y#1 = (signed word/signed dword~) render_sine::$6
|
||||
Alias (byte) wrap_y::return#1 = (byte) wrap_y::return#5
|
||||
@ -2072,9 +1985,6 @@ Alias (byte) render_sine::ypos2#0 = (byte~) render_sine::$7
|
||||
Alias (signed word) wrap_y::y#4 = (signed word) wrap_y::y#5
|
||||
Alias (signed word) wrap_y::y#6 = (signed word) wrap_y::y#7 (signed word) wrap_y::y#8
|
||||
Alias (byte) wrap_y::return#2 = (byte~) wrap_y::$2 (byte) wrap_y::return#6 (byte) wrap_y::return#3
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#4
|
||||
Alias (byte*) BITMAP#0 = (byte*) BITMAP#11
|
||||
Alias (signed word*) sin2#0 = (signed word*) sin2#22
|
||||
Alias (word) rem16u#10 = (word) rem16u#19
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (word) divr16u::dividend#3 = (word) divr16u::dividend#4
|
||||
@ -2091,7 +2001,6 @@ Alias (byte) bitmap_init::x#2 = (byte) bitmap_init::x#3
|
||||
Alias (byte*) bitmap_init::bitmap#1 = (byte*) bitmap_init::bitmap#3
|
||||
Alias (byte) bitmap_init::y#2 = (byte) bitmap_init::y#3
|
||||
Alias (word) render_sine::sin_idx#2 = (word) render_sine::sin_idx#4
|
||||
Alias (signed word*) sin2#1 = (signed word*) sin2#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (word) divr16u::divisor#2
|
||||
Self Phi Eliminated (signed word) sin16s_gen2::ampl#1
|
||||
@ -2104,7 +2013,6 @@ Self Phi Eliminated (byte*) fill::end#1
|
||||
Self Phi Eliminated (byte*) bitmap_init::bitmap#1
|
||||
Self Phi Eliminated (byte) bitmap_clear::y#2
|
||||
Self Phi Eliminated (word) rem16u#18
|
||||
Self Phi Eliminated (signed word*) sin2#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (word) divr16u::divisor#2 (word) divr16u::divisor#6
|
||||
Redundant Phi (dword) div32u16u::dividend#1 (dword) div32u16u::dividend#0
|
||||
@ -2134,14 +2042,9 @@ Redundant Phi (byte*) fill::end#1 (byte*) fill::end#0
|
||||
Redundant Phi (byte*) bitmap_init::bitmap#5 (byte*) bitmap_init::bitmap#0
|
||||
Redundant Phi (byte*) bitmap_init::bitmap#1 (byte*) bitmap_init::bitmap#5
|
||||
Redundant Phi (byte) bitmap_clear::y#2 (byte) bitmap_clear::y#4
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) BITMAP#1 (byte*) BITMAP#0
|
||||
Redundant Phi (word) rem16u#23 (word) rem16u#0
|
||||
Redundant Phi (signed word*) sin2#11 (signed word*) sin2#0
|
||||
Redundant Phi (word) rem16u#17 (word) rem16u#16
|
||||
Redundant Phi (word) rem16u#18 (word) rem16u#17
|
||||
Redundant Phi (signed word*) sin2#4 (signed word*) sin2#11
|
||||
Redundant Phi (signed word*) sin2#1 (signed word*) sin2#4
|
||||
Redundant Phi (word) rem16u#10 (word) rem16u#18
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) divr16u::$4 [91] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
@ -2162,10 +2065,10 @@ Simple Condition (bool~) bitmap_init::$9 [393] if((byte~) bitmap_init::$7!=(byte
|
||||
Simple Condition (bool~) bitmap_init::$12 [397] if((byte) bitmap_init::y#1!=rangelast(0,$ff)) goto bitmap_init::@3
|
||||
Simple Condition (bool~) bitmap_clear::$1 [413] if((byte) bitmap_clear::x#1!=rangelast(0,$c7)) goto bitmap_clear::@2
|
||||
Simple Condition (bool~) bitmap_clear::$2 [417] if((byte) bitmap_clear::y#1!=rangelast(0,$27)) goto bitmap_clear::@1
|
||||
Simple Condition (bool~) render_sine::$10 [538] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) $140) goto render_sine::@2
|
||||
Simple Condition (bool~) render_sine::$11 [542] if((word) render_sine::sin_idx#1<(word) SIN_SIZE#0) goto render_sine::@1
|
||||
Simple Condition (bool~) wrap_y::$0 [549] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) $c8) goto wrap_y::@2
|
||||
Simple Condition (bool~) wrap_y::$1 [554] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5
|
||||
Simple Condition (bool~) render_sine::$10 [537] if((word) render_sine::xpos#1!=(word/signed word/dword/signed dword) $140) goto render_sine::@2
|
||||
Simple Condition (bool~) render_sine::$11 [541] if((word) render_sine::sin_idx#1<(word) SIN_SIZE#0) goto render_sine::@1
|
||||
Simple Condition (bool~) wrap_y::$0 [548] if((signed word) wrap_y::y#4>=(byte/word/signed word/dword/signed dword) $c8) goto wrap_y::@2
|
||||
Simple Condition (bool~) wrap_y::$1 [553] if((signed word) wrap_y::y#6<(byte/signed byte/word/signed word/dword/signed dword) 0) goto wrap_y::@5
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) PROCPORT_DDR#0 = ((byte*))0
|
||||
Constant (const byte) PROCPORT_DDR_MEMORY_MASK#0 = 7
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) gen_sintab::f_2pi
|
||||
Inlined call (byte~) vicSelectGfxBank::$0 ← call toDd00 (byte*) vicSelectGfxBank::gfx
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@ -741,7 +742,6 @@ gen_sintab::@3: scope:[gen_sintab] from gen_sintab
|
||||
(byte) progress_idx#64 ← phi( gen_sintab/(byte) progress_idx#65 )
|
||||
(byte*) gen_sintab::sintab#23 ← phi( gen_sintab/(byte*) gen_sintab::sintab#24 )
|
||||
(byte) gen_sintab::length#23 ← phi( gen_sintab/(byte) gen_sintab::length#24 )
|
||||
(byte*) gen_sintab::f_2pi#22 ← phi( gen_sintab/(byte*) gen_sintab::f_2pi#0 )
|
||||
(byte) gen_sintab::min#3 ← phi( gen_sintab/(byte) gen_sintab::min#4 )
|
||||
call setARGtoFAC
|
||||
to:gen_sintab::@4
|
||||
@ -750,7 +750,6 @@ gen_sintab::@4: scope:[gen_sintab] from gen_sintab::@3
|
||||
(byte) progress_idx#63 ← phi( gen_sintab::@3/(byte) progress_idx#64 )
|
||||
(byte*) gen_sintab::sintab#22 ← phi( gen_sintab::@3/(byte*) gen_sintab::sintab#23 )
|
||||
(byte) gen_sintab::length#22 ← phi( gen_sintab::@3/(byte) gen_sintab::length#23 )
|
||||
(byte*) gen_sintab::f_2pi#21 ← phi( gen_sintab::@3/(byte*) gen_sintab::f_2pi#22 )
|
||||
(byte) gen_sintab::min#2 ← phi( gen_sintab::@3/(byte) gen_sintab::min#3 )
|
||||
(word~) gen_sintab::$3 ← ((word)) (byte) gen_sintab::min#2
|
||||
(word) setFAC::w#1 ← (word~) gen_sintab::$3
|
||||
@ -761,7 +760,6 @@ gen_sintab::@5: scope:[gen_sintab] from gen_sintab::@4
|
||||
(byte) progress_idx#62 ← phi( gen_sintab::@4/(byte) progress_idx#63 )
|
||||
(byte*) gen_sintab::sintab#21 ← phi( gen_sintab::@4/(byte*) gen_sintab::sintab#22 )
|
||||
(byte) gen_sintab::length#21 ← phi( gen_sintab::@4/(byte) gen_sintab::length#22 )
|
||||
(byte*) gen_sintab::f_2pi#19 ← phi( gen_sintab::@4/(byte*) gen_sintab::f_2pi#21 )
|
||||
(byte*) setMEMtoFAC::mem#0 ← (byte[]) gen_sintab::f_min#0
|
||||
call setMEMtoFAC
|
||||
to:gen_sintab::@6
|
||||
@ -770,7 +768,6 @@ gen_sintab::@6: scope:[gen_sintab] from gen_sintab::@5
|
||||
(byte) progress_idx#61 ← phi( gen_sintab::@5/(byte) progress_idx#62 )
|
||||
(byte*) gen_sintab::sintab#20 ← phi( gen_sintab::@5/(byte*) gen_sintab::sintab#21 )
|
||||
(byte) gen_sintab::length#20 ← phi( gen_sintab::@5/(byte) gen_sintab::length#21 )
|
||||
(byte*) gen_sintab::f_2pi#17 ← phi( gen_sintab::@5/(byte*) gen_sintab::f_2pi#19 )
|
||||
call subFACfromARG
|
||||
to:gen_sintab::@7
|
||||
gen_sintab::@7: scope:[gen_sintab] from gen_sintab::@6
|
||||
@ -778,7 +775,6 @@ gen_sintab::@7: scope:[gen_sintab] from gen_sintab::@6
|
||||
(byte) progress_idx#60 ← phi( gen_sintab::@6/(byte) progress_idx#61 )
|
||||
(byte*) gen_sintab::sintab#19 ← phi( gen_sintab::@6/(byte*) gen_sintab::sintab#20 )
|
||||
(byte) gen_sintab::length#19 ← phi( gen_sintab::@6/(byte) gen_sintab::length#20 )
|
||||
(byte*) gen_sintab::f_2pi#15 ← phi( gen_sintab::@6/(byte*) gen_sintab::f_2pi#17 )
|
||||
(byte*) setMEMtoFAC::mem#1 ← (byte[]) gen_sintab::f_amp#0
|
||||
call setMEMtoFAC
|
||||
to:gen_sintab::@8
|
||||
@ -787,7 +783,6 @@ gen_sintab::@8: scope:[gen_sintab] from gen_sintab::@7
|
||||
(byte) progress_idx#59 ← phi( gen_sintab::@7/(byte) progress_idx#60 )
|
||||
(byte*) gen_sintab::sintab#18 ← phi( gen_sintab::@7/(byte*) gen_sintab::sintab#19 )
|
||||
(byte) gen_sintab::length#18 ← phi( gen_sintab::@7/(byte) gen_sintab::length#19 )
|
||||
(byte*) gen_sintab::f_2pi#13 ← phi( gen_sintab::@7/(byte*) gen_sintab::f_2pi#15 )
|
||||
(word) setFAC::w#2 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
call setFAC
|
||||
to:gen_sintab::@9
|
||||
@ -796,7 +791,6 @@ gen_sintab::@9: scope:[gen_sintab] from gen_sintab::@8
|
||||
(byte) progress_idx#58 ← phi( gen_sintab::@8/(byte) progress_idx#59 )
|
||||
(byte*) gen_sintab::sintab#17 ← phi( gen_sintab::@8/(byte*) gen_sintab::sintab#18 )
|
||||
(byte) gen_sintab::length#17 ← phi( gen_sintab::@8/(byte) gen_sintab::length#18 )
|
||||
(byte*) gen_sintab::f_2pi#11 ← phi( gen_sintab::@8/(byte*) gen_sintab::f_2pi#13 )
|
||||
(byte*) divMEMbyFAC::mem#0 ← (byte[]) gen_sintab::f_amp#0
|
||||
call divMEMbyFAC
|
||||
to:gen_sintab::@10
|
||||
@ -805,7 +799,6 @@ gen_sintab::@10: scope:[gen_sintab] from gen_sintab::@9
|
||||
(byte) progress_idx#57 ← phi( gen_sintab::@9/(byte) progress_idx#58 )
|
||||
(byte*) gen_sintab::sintab#16 ← phi( gen_sintab::@9/(byte*) gen_sintab::sintab#17 )
|
||||
(byte) gen_sintab::length#16 ← phi( gen_sintab::@9/(byte) gen_sintab::length#17 )
|
||||
(byte*) gen_sintab::f_2pi#9 ← phi( gen_sintab::@9/(byte*) gen_sintab::f_2pi#11 )
|
||||
(byte*) setMEMtoFAC::mem#2 ← (byte[]) gen_sintab::f_amp#0
|
||||
call setMEMtoFAC
|
||||
to:gen_sintab::@11
|
||||
@ -814,7 +807,6 @@ gen_sintab::@11: scope:[gen_sintab] from gen_sintab::@10
|
||||
(byte) progress_idx#56 ← phi( gen_sintab::@10/(byte) progress_idx#57 )
|
||||
(byte*) gen_sintab::sintab#15 ← phi( gen_sintab::@10/(byte*) gen_sintab::sintab#16 )
|
||||
(byte) gen_sintab::length#14 ← phi( gen_sintab::@10/(byte) gen_sintab::length#16 )
|
||||
(byte*) gen_sintab::f_2pi#7 ← phi( gen_sintab::@10/(byte*) gen_sintab::f_2pi#9 )
|
||||
(byte*) addMEMtoFAC::mem#0 ← (byte[]) gen_sintab::f_min#0
|
||||
call addMEMtoFAC
|
||||
to:gen_sintab::@12
|
||||
@ -823,7 +815,6 @@ gen_sintab::@12: scope:[gen_sintab] from gen_sintab::@11
|
||||
(byte) progress_idx#55 ← phi( gen_sintab::@11/(byte) progress_idx#56 )
|
||||
(byte*) gen_sintab::sintab#14 ← phi( gen_sintab::@11/(byte*) gen_sintab::sintab#15 )
|
||||
(byte) gen_sintab::length#12 ← phi( gen_sintab::@11/(byte) gen_sintab::length#14 )
|
||||
(byte*) gen_sintab::f_2pi#5 ← phi( gen_sintab::@11/(byte*) gen_sintab::f_2pi#7 )
|
||||
(byte*) setMEMtoFAC::mem#3 ← (byte[]) gen_sintab::f_min#0
|
||||
call setMEMtoFAC
|
||||
to:gen_sintab::@13
|
||||
@ -832,7 +823,6 @@ gen_sintab::@13: scope:[gen_sintab] from gen_sintab::@12
|
||||
(byte) progress_idx#54 ← phi( gen_sintab::@12/(byte) progress_idx#55 )
|
||||
(byte*) gen_sintab::sintab#12 ← phi( gen_sintab::@12/(byte*) gen_sintab::sintab#14 )
|
||||
(byte) gen_sintab::length#10 ← phi( gen_sintab::@12/(byte) gen_sintab::length#12 )
|
||||
(byte*) gen_sintab::f_2pi#3 ← phi( gen_sintab::@12/(byte*) gen_sintab::f_2pi#5 )
|
||||
(byte) gen_sintab::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:gen_sintab::@1
|
||||
gen_sintab::@1: scope:[gen_sintab] from gen_sintab::@13 gen_sintab::@23
|
||||
@ -840,7 +830,6 @@ gen_sintab::@1: scope:[gen_sintab] from gen_sintab::@13 gen_sintab::@23
|
||||
(byte) progress_idx#53 ← phi( gen_sintab::@13/(byte) progress_idx#54 gen_sintab::@23/(byte) progress_idx#13 )
|
||||
(byte*) gen_sintab::sintab#11 ← phi( gen_sintab::@13/(byte*) gen_sintab::sintab#12 gen_sintab::@23/(byte*) gen_sintab::sintab#13 )
|
||||
(byte) gen_sintab::length#8 ← phi( gen_sintab::@13/(byte) gen_sintab::length#10 gen_sintab::@23/(byte) gen_sintab::length#3 )
|
||||
(byte*) gen_sintab::f_2pi#2 ← phi( gen_sintab::@13/(byte*) gen_sintab::f_2pi#3 gen_sintab::@23/(byte*) gen_sintab::f_2pi#4 )
|
||||
(byte) gen_sintab::i#2 ← phi( gen_sintab::@13/(byte) gen_sintab::i#0 gen_sintab::@23/(byte) gen_sintab::i#1 )
|
||||
(word~) gen_sintab::$13 ← ((word)) (byte) gen_sintab::i#2
|
||||
(word) setFAC::w#3 ← (word~) gen_sintab::$13
|
||||
@ -852,12 +841,10 @@ gen_sintab::@14: scope:[gen_sintab] from gen_sintab::@1
|
||||
(byte) gen_sintab::i#12 ← phi( gen_sintab::@1/(byte) gen_sintab::i#2 )
|
||||
(byte*) gen_sintab::sintab#10 ← phi( gen_sintab::@1/(byte*) gen_sintab::sintab#11 )
|
||||
(byte) gen_sintab::length#6 ← phi( gen_sintab::@1/(byte) gen_sintab::length#8 )
|
||||
(byte*) gen_sintab::f_2pi#1 ← phi( gen_sintab::@1/(byte*) gen_sintab::f_2pi#2 )
|
||||
(byte*) mulFACbyMEM::mem#0 ← (byte*) gen_sintab::f_2pi#1
|
||||
(byte*) mulFACbyMEM::mem#0 ← (byte*) gen_sintab::f_2pi#0
|
||||
call mulFACbyMEM
|
||||
to:gen_sintab::@15
|
||||
gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14
|
||||
(byte*) gen_sintab::f_2pi#20 ← phi( gen_sintab::@14/(byte*) gen_sintab::f_2pi#1 )
|
||||
(byte*) progress_cursor#51 ← phi( gen_sintab::@14/(byte*) progress_cursor#52 )
|
||||
(byte) progress_idx#51 ← phi( gen_sintab::@14/(byte) progress_idx#52 )
|
||||
(byte) gen_sintab::i#11 ← phi( gen_sintab::@14/(byte) gen_sintab::i#12 )
|
||||
@ -867,7 +854,6 @@ gen_sintab::@15: scope:[gen_sintab] from gen_sintab::@14
|
||||
call setMEMtoFAC
|
||||
to:gen_sintab::@16
|
||||
gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15
|
||||
(byte*) gen_sintab::f_2pi#18 ← phi( gen_sintab::@15/(byte*) gen_sintab::f_2pi#20 )
|
||||
(byte*) progress_cursor#50 ← phi( gen_sintab::@15/(byte*) progress_cursor#51 )
|
||||
(byte) progress_idx#50 ← phi( gen_sintab::@15/(byte) progress_idx#51 )
|
||||
(byte) gen_sintab::i#10 ← phi( gen_sintab::@15/(byte) gen_sintab::i#11 )
|
||||
@ -878,7 +864,6 @@ gen_sintab::@16: scope:[gen_sintab] from gen_sintab::@15
|
||||
call setFAC
|
||||
to:gen_sintab::@17
|
||||
gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16
|
||||
(byte*) gen_sintab::f_2pi#16 ← phi( gen_sintab::@16/(byte*) gen_sintab::f_2pi#18 )
|
||||
(byte) gen_sintab::length#15 ← phi( gen_sintab::@16/(byte) gen_sintab::length#2 )
|
||||
(byte*) progress_cursor#49 ← phi( gen_sintab::@16/(byte*) progress_cursor#50 )
|
||||
(byte) progress_idx#49 ← phi( gen_sintab::@16/(byte) progress_idx#50 )
|
||||
@ -888,7 +873,6 @@ gen_sintab::@17: scope:[gen_sintab] from gen_sintab::@16
|
||||
call divMEMbyFAC
|
||||
to:gen_sintab::@18
|
||||
gen_sintab::@18: scope:[gen_sintab] from gen_sintab::@17
|
||||
(byte*) gen_sintab::f_2pi#14 ← phi( gen_sintab::@17/(byte*) gen_sintab::f_2pi#16 )
|
||||
(byte) gen_sintab::length#13 ← phi( gen_sintab::@17/(byte) gen_sintab::length#15 )
|
||||
(byte*) progress_cursor#47 ← phi( gen_sintab::@17/(byte*) progress_cursor#49 )
|
||||
(byte) progress_idx#47 ← phi( gen_sintab::@17/(byte) progress_idx#49 )
|
||||
@ -897,7 +881,6 @@ gen_sintab::@18: scope:[gen_sintab] from gen_sintab::@17
|
||||
call sinFAC
|
||||
to:gen_sintab::@19
|
||||
gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18
|
||||
(byte*) gen_sintab::f_2pi#12 ← phi( gen_sintab::@18/(byte*) gen_sintab::f_2pi#14 )
|
||||
(byte) gen_sintab::length#11 ← phi( gen_sintab::@18/(byte) gen_sintab::length#13 )
|
||||
(byte*) progress_cursor#45 ← phi( gen_sintab::@18/(byte*) progress_cursor#47 )
|
||||
(byte) progress_idx#45 ← phi( gen_sintab::@18/(byte) progress_idx#47 )
|
||||
@ -907,7 +890,6 @@ gen_sintab::@19: scope:[gen_sintab] from gen_sintab::@18
|
||||
call mulFACbyMEM
|
||||
to:gen_sintab::@20
|
||||
gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19
|
||||
(byte*) gen_sintab::f_2pi#10 ← phi( gen_sintab::@19/(byte*) gen_sintab::f_2pi#12 )
|
||||
(byte) gen_sintab::length#9 ← phi( gen_sintab::@19/(byte) gen_sintab::length#11 )
|
||||
(byte*) progress_cursor#42 ← phi( gen_sintab::@19/(byte*) progress_cursor#45 )
|
||||
(byte) progress_idx#42 ← phi( gen_sintab::@19/(byte) progress_idx#45 )
|
||||
@ -917,7 +899,6 @@ gen_sintab::@20: scope:[gen_sintab] from gen_sintab::@19
|
||||
call addMEMtoFAC
|
||||
to:gen_sintab::@21
|
||||
gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20
|
||||
(byte*) gen_sintab::f_2pi#8 ← phi( gen_sintab::@20/(byte*) gen_sintab::f_2pi#10 )
|
||||
(byte) gen_sintab::length#7 ← phi( gen_sintab::@20/(byte) gen_sintab::length#9 )
|
||||
(byte*) progress_cursor#38 ← phi( gen_sintab::@20/(byte*) progress_cursor#42 )
|
||||
(byte) progress_idx#38 ← phi( gen_sintab::@20/(byte) progress_idx#42 )
|
||||
@ -927,7 +908,6 @@ gen_sintab::@21: scope:[gen_sintab] from gen_sintab::@20
|
||||
(word) getFAC::return#2 ← (word) getFAC::return#1
|
||||
to:gen_sintab::@22
|
||||
gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21
|
||||
(byte*) gen_sintab::f_2pi#6 ← phi( gen_sintab::@21/(byte*) gen_sintab::f_2pi#8 )
|
||||
(byte) gen_sintab::length#5 ← phi( gen_sintab::@21/(byte) gen_sintab::length#7 )
|
||||
(byte*) progress_cursor#34 ← phi( gen_sintab::@21/(byte*) progress_cursor#38 )
|
||||
(byte) progress_idx#34 ← phi( gen_sintab::@21/(byte) progress_idx#38 )
|
||||
@ -941,7 +921,6 @@ gen_sintab::@22: scope:[gen_sintab] from gen_sintab::@21
|
||||
to:gen_sintab::@23
|
||||
gen_sintab::@23: scope:[gen_sintab] from gen_sintab::@22
|
||||
(byte*) gen_sintab::sintab#13 ← phi( gen_sintab::@22/(byte*) gen_sintab::sintab#2 )
|
||||
(byte*) gen_sintab::f_2pi#4 ← phi( gen_sintab::@22/(byte*) gen_sintab::f_2pi#6 )
|
||||
(byte) gen_sintab::length#3 ← phi( gen_sintab::@22/(byte) gen_sintab::length#5 )
|
||||
(byte) gen_sintab::i#4 ← phi( gen_sintab::@22/(byte) gen_sintab::i#3 )
|
||||
(byte*) progress_cursor#26 ← phi( gen_sintab::@22/(byte*) progress_cursor#11 )
|
||||
@ -1404,28 +1383,6 @@ SYMBOL TABLE SSA
|
||||
(label) gen_sintab::@return
|
||||
(byte*) gen_sintab::f_2pi
|
||||
(byte*) gen_sintab::f_2pi#0
|
||||
(byte*) gen_sintab::f_2pi#1
|
||||
(byte*) gen_sintab::f_2pi#10
|
||||
(byte*) gen_sintab::f_2pi#11
|
||||
(byte*) gen_sintab::f_2pi#12
|
||||
(byte*) gen_sintab::f_2pi#13
|
||||
(byte*) gen_sintab::f_2pi#14
|
||||
(byte*) gen_sintab::f_2pi#15
|
||||
(byte*) gen_sintab::f_2pi#16
|
||||
(byte*) gen_sintab::f_2pi#17
|
||||
(byte*) gen_sintab::f_2pi#18
|
||||
(byte*) gen_sintab::f_2pi#19
|
||||
(byte*) gen_sintab::f_2pi#2
|
||||
(byte*) gen_sintab::f_2pi#20
|
||||
(byte*) gen_sintab::f_2pi#21
|
||||
(byte*) gen_sintab::f_2pi#22
|
||||
(byte*) gen_sintab::f_2pi#3
|
||||
(byte*) gen_sintab::f_2pi#4
|
||||
(byte*) gen_sintab::f_2pi#5
|
||||
(byte*) gen_sintab::f_2pi#6
|
||||
(byte*) gen_sintab::f_2pi#7
|
||||
(byte*) gen_sintab::f_2pi#8
|
||||
(byte*) gen_sintab::f_2pi#9
|
||||
(byte[]) gen_sintab::f_amp
|
||||
(byte[]) gen_sintab::f_amp#0
|
||||
(byte[]) gen_sintab::f_i
|
||||
@ -1969,14 +1926,12 @@ Alias (byte) gen_chargen_sprite::bits#1 = (byte~) gen_chargen_sprite::$11
|
||||
Alias (byte*) gen_chargen_sprite::sprite#2 = (byte*~) gen_chargen_sprite::$13
|
||||
Alias (word) setFAC::w#0 = (word~) gen_sintab::$0
|
||||
Alias (byte) gen_sintab::min#2 = (byte) gen_sintab::min#3 (byte) gen_sintab::min#4
|
||||
Alias (byte*) gen_sintab::f_2pi#0 = (byte*) gen_sintab::f_2pi#22 (byte*) gen_sintab::f_2pi#21 (byte*) gen_sintab::f_2pi#19 (byte*) gen_sintab::f_2pi#17 (byte*) gen_sintab::f_2pi#15 (byte*) gen_sintab::f_2pi#13 (byte*) gen_sintab::f_2pi#11 (byte*) gen_sintab::f_2pi#9 (byte*) gen_sintab::f_2pi#7 (byte*) gen_sintab::f_2pi#5 (byte*) gen_sintab::f_2pi#3
|
||||
Alias (byte) gen_sintab::length#10 = (byte) gen_sintab::length#23 (byte) gen_sintab::length#24 (byte) gen_sintab::length#22 (byte) gen_sintab::length#21 (byte) gen_sintab::length#20 (byte) gen_sintab::length#19 (byte) gen_sintab::length#18 (byte) gen_sintab::length#17 (byte) gen_sintab::length#16 (byte) gen_sintab::length#14 (byte) gen_sintab::length#12
|
||||
Alias (byte*) gen_sintab::sintab#12 = (byte*) gen_sintab::sintab#23 (byte*) gen_sintab::sintab#24 (byte*) gen_sintab::sintab#22 (byte*) gen_sintab::sintab#21 (byte*) gen_sintab::sintab#20 (byte*) gen_sintab::sintab#19 (byte*) gen_sintab::sintab#18 (byte*) gen_sintab::sintab#17 (byte*) gen_sintab::sintab#16 (byte*) gen_sintab::sintab#15 (byte*) gen_sintab::sintab#14
|
||||
Alias (byte) progress_idx#54 = (byte) progress_idx#64 (byte) progress_idx#65 (byte) progress_idx#63 (byte) progress_idx#62 (byte) progress_idx#61 (byte) progress_idx#60 (byte) progress_idx#59 (byte) progress_idx#58 (byte) progress_idx#57 (byte) progress_idx#56 (byte) progress_idx#55
|
||||
Alias (byte*) progress_cursor#54 = (byte*) progress_cursor#64 (byte*) progress_cursor#65 (byte*) progress_cursor#63 (byte*) progress_cursor#62 (byte*) progress_cursor#61 (byte*) progress_cursor#60 (byte*) progress_cursor#59 (byte*) progress_cursor#58 (byte*) progress_cursor#57 (byte*) progress_cursor#56 (byte*) progress_cursor#55
|
||||
Alias (word) setFAC::w#1 = (word~) gen_sintab::$3
|
||||
Alias (word) setFAC::w#3 = (word~) gen_sintab::$13
|
||||
Alias (byte*) gen_sintab::f_2pi#1 = (byte*) gen_sintab::f_2pi#2 (byte*) gen_sintab::f_2pi#20 (byte*) gen_sintab::f_2pi#18 (byte*) gen_sintab::f_2pi#16 (byte*) gen_sintab::f_2pi#14 (byte*) gen_sintab::f_2pi#12 (byte*) gen_sintab::f_2pi#10 (byte*) gen_sintab::f_2pi#8 (byte*) gen_sintab::f_2pi#6 (byte*) gen_sintab::f_2pi#4
|
||||
Alias (byte) gen_sintab::length#11 = (byte) gen_sintab::length#6 (byte) gen_sintab::length#8 (byte) gen_sintab::length#4 (byte) gen_sintab::length#2 (byte) gen_sintab::length#15 (byte) gen_sintab::length#13 (byte) gen_sintab::length#9 (byte) gen_sintab::length#7 (byte) gen_sintab::length#5 (byte) gen_sintab::length#3
|
||||
Alias (byte*) gen_sintab::sintab#10 = (byte*) gen_sintab::sintab#11 (byte*) gen_sintab::sintab#9 (byte*) gen_sintab::sintab#8 (byte*) gen_sintab::sintab#7 (byte*) gen_sintab::sintab#6 (byte*) gen_sintab::sintab#5 (byte*) gen_sintab::sintab#4 (byte*) gen_sintab::sintab#3 (byte*) gen_sintab::sintab#2 (byte*) gen_sintab::sintab#13
|
||||
Alias (byte) gen_sintab::i#10 = (byte) gen_sintab::i#12 (byte) gen_sintab::i#2 (byte) gen_sintab::i#11 (byte) gen_sintab::i#9 (byte) gen_sintab::i#8 (byte) gen_sintab::i#7 (byte) gen_sintab::i#6 (byte) gen_sintab::i#5 (byte) gen_sintab::i#3 (byte) gen_sintab::i#4
|
||||
@ -2031,7 +1986,6 @@ Self Phi Eliminated (byte) gen_chargen_sprite::bits#3
|
||||
Self Phi Eliminated (byte) gen_chargen_sprite::x#2
|
||||
Self Phi Eliminated (byte) gen_chargen_sprite::y#3
|
||||
Self Phi Eliminated (byte*) gen_chargen_sprite::chargen#2
|
||||
Self Phi Eliminated (byte*) gen_sintab::f_2pi#1
|
||||
Self Phi Eliminated (byte) gen_sintab::length#11
|
||||
Self Phi Eliminated (byte*) gen_sintab::sintab#10
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
@ -2071,7 +2025,6 @@ Redundant Phi (byte) gen_chargen_sprite::bits#3 (byte) gen_chargen_sprite::bits#
|
||||
Redundant Phi (byte) gen_chargen_sprite::x#2 (byte) gen_chargen_sprite::x#6
|
||||
Redundant Phi (byte) gen_chargen_sprite::y#3 (byte) gen_chargen_sprite::y#10
|
||||
Redundant Phi (byte*) gen_chargen_sprite::chargen#2 (byte*) gen_chargen_sprite::chargen#7
|
||||
Redundant Phi (byte*) gen_sintab::f_2pi#1 (byte*) gen_sintab::f_2pi#0
|
||||
Redundant Phi (byte) gen_sintab::length#11 (byte) gen_sintab::length#10
|
||||
Redundant Phi (byte*) gen_sintab::sintab#10 (byte*) gen_sintab::sintab#12
|
||||
Redundant Phi (byte) progress_idx#13 (byte) progress_idx#12
|
||||
|
@ -1,11 +1,11 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte*) SCREEN#1 ← phi( @2/(byte*) SCREEN#3 )
|
||||
(byte) main::c#0 ← *((byte*) SCREEN#1)
|
||||
(byte) main::c#0 ← *((byte*) SCREEN#0)
|
||||
(byte) fillscreen::c#0 ← (byte) main::c#0
|
||||
call fillscreen
|
||||
to:main::@1
|
||||
@ -16,20 +16,18 @@ main::@return: scope:[main] from main::@1
|
||||
to:@return
|
||||
fillscreen: scope:[fillscreen] from main
|
||||
(byte) fillscreen::c#2 ← phi( main/(byte) fillscreen::c#0 )
|
||||
(byte*) SCREEN#4 ← phi( main/(byte*) SCREEN#1 )
|
||||
(byte) fillscreen::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:fillscreen::@1
|
||||
fillscreen::@1: scope:[fillscreen] from fillscreen fillscreen::@1
|
||||
(byte) fillscreen::j#2 ← phi( fillscreen/(byte) fillscreen::j#0 fillscreen::@1/(byte) fillscreen::j#1 )
|
||||
(byte) fillscreen::c#1 ← phi( fillscreen/(byte) fillscreen::c#2 fillscreen::@1/(byte) fillscreen::c#1 )
|
||||
(byte*) SCREEN#2 ← phi( fillscreen/(byte*) SCREEN#4 fillscreen::@1/(byte*) SCREEN#2 )
|
||||
(byte*~) fillscreen::$0 ← (byte*) SCREEN#2 + (word/signed word/dword/signed dword) $100
|
||||
(byte*~) fillscreen::$0 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $100
|
||||
(byte*) fillscreen::SCREEN2#0 ← (byte*~) fillscreen::$0
|
||||
(byte*~) fillscreen::$1 ← (byte*) SCREEN#2 + (word/signed word/dword/signed dword) $200
|
||||
(byte*~) fillscreen::$1 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $200
|
||||
(byte*) fillscreen::SCREEN3#0 ← (byte*~) fillscreen::$1
|
||||
(byte*~) fillscreen::$2 ← (byte*) SCREEN#2 + (word/signed word/dword/signed dword) $3e8
|
||||
(byte*~) fillscreen::$2 ← (byte*) SCREEN#0 + (word/signed word/dword/signed dword) $3e8
|
||||
(byte*) fillscreen::SCREEN4#0 ← (byte*~) fillscreen::$2
|
||||
*((byte*) SCREEN#2 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#1
|
||||
*((byte*) SCREEN#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#1
|
||||
*((byte*) fillscreen::SCREEN2#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#1
|
||||
*((byte*) fillscreen::SCREEN3#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#1
|
||||
*((byte*) fillscreen::SCREEN4#0 + (byte) fillscreen::j#2) ← (byte) fillscreen::c#1
|
||||
@ -41,7 +39,6 @@ fillscreen::@return: scope:[fillscreen] from fillscreen::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -55,10 +52,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(void()) fillscreen((byte) fillscreen::c)
|
||||
(byte*~) fillscreen::$0
|
||||
(byte*~) fillscreen::$1
|
||||
@ -92,18 +85,13 @@ Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) fillscreen::SCREEN2#0 = (byte*~) fillscreen::$0
|
||||
Alias (byte*) fillscreen::SCREEN3#0 = (byte*~) fillscreen::$1
|
||||
Alias (byte*) fillscreen::SCREEN4#0 = (byte*~) fillscreen::$2
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#2
|
||||
Self Phi Eliminated (byte) fillscreen::c#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#4 (byte*) SCREEN#1
|
||||
Redundant Phi (byte) fillscreen::c#2 (byte) fillscreen::c#0
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#4
|
||||
Redundant Phi (byte) fillscreen::c#1 (byte) fillscreen::c#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) fillscreen::$3 [21] if((byte) fillscreen::j#1!=rangelast(0,$ff)) goto fillscreen::@1
|
||||
Simple Condition (bool~) fillscreen::$3 [20] if((byte) fillscreen::j#1!=rangelast(0,$ff)) goto fillscreen::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) fillscreen::j#0 = 0
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) RASTER
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -9,59 +11,39 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@4
|
||||
main: scope:[main] from @4
|
||||
(byte*) SCREEN#11 ← phi( @4/(byte*) SCREEN#12 )
|
||||
(byte*) RASTER#8 ← phi( @4/(byte*) RASTER#10 )
|
||||
call prepare
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main
|
||||
(byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#11 )
|
||||
(byte*) RASTER#6 ← phi( main/(byte*) RASTER#8 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::@11 main::@9
|
||||
(byte*) SCREEN#7 ← phi( main::@11/(byte*) SCREEN#9 main::@9/(byte*) SCREEN#10 )
|
||||
(byte*) RASTER#3 ← phi( main::@11/(byte*) RASTER#5 main::@9/(byte*) RASTER#6 )
|
||||
(byte) main::c#0 ← (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
to:main::@3
|
||||
main::@2: scope:[main] from main::@6
|
||||
(byte*) SCREEN#8 ← phi( main::@6/(byte*) SCREEN#4 )
|
||||
(byte) main::c#5 ← phi( main::@6/(byte) main::c#1 )
|
||||
(byte*) RASTER#4 ← phi( main::@6/(byte*) RASTER#7 )
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1 main::@2 main::@3
|
||||
(byte*) SCREEN#6 ← phi( main::@1/(byte*) SCREEN#7 main::@2/(byte*) SCREEN#8 main::@3/(byte*) SCREEN#6 )
|
||||
(byte) main::c#4 ← phi( main::@1/(byte) main::c#0 main::@2/(byte) main::c#5 main::@3/(byte) main::c#4 )
|
||||
(byte*) RASTER#1 ← phi( main::@1/(byte*) RASTER#3 main::@2/(byte*) RASTER#4 main::@3/(byte*) RASTER#1 )
|
||||
(bool~) main::$1 ← *((byte*) RASTER#1) != (byte/word/signed word/dword/signed dword) $fe
|
||||
(bool~) main::$1 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $fe
|
||||
if((bool~) main::$1) goto main::@3
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
(byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#6 main::@4/(byte*) SCREEN#5 )
|
||||
(byte) main::c#3 ← phi( main::@3/(byte) main::c#4 main::@4/(byte) main::c#3 )
|
||||
(byte*) RASTER#2 ← phi( main::@3/(byte*) RASTER#1 main::@4/(byte*) RASTER#2 )
|
||||
(bool~) main::$2 ← *((byte*) RASTER#2) != (byte/word/signed word/dword/signed dword) $ff
|
||||
(bool~) main::$2 ← *((byte*) RASTER#0) != (byte/word/signed word/dword/signed dword) $ff
|
||||
if((bool~) main::$2) goto main::@4
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@4
|
||||
(byte*) SCREEN#4 ← phi( main::@4/(byte*) SCREEN#5 )
|
||||
(byte*) RASTER#7 ← phi( main::@4/(byte*) RASTER#2 )
|
||||
(byte) main::c#2 ← phi( main::@4/(byte) main::c#3 )
|
||||
(byte) main::c#1 ← (byte) main::c#2 + rangenext($19,1)
|
||||
(bool~) main::$3 ← (byte) main::c#1 != rangelast($19,1)
|
||||
if((bool~) main::$3) goto main::@2
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
(byte*) RASTER#11 ← phi( main::@6/(byte*) RASTER#7 )
|
||||
(byte*) SCREEN#3 ← phi( main::@6/(byte*) SCREEN#4 )
|
||||
call flip
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@7
|
||||
(byte*) RASTER#9 ← phi( main::@7/(byte*) RASTER#11 )
|
||||
(byte*) SCREEN#2 ← phi( main::@7/(byte*) SCREEN#3 )
|
||||
call plot
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
(byte*) SCREEN#9 ← phi( main::@10/(byte*) SCREEN#2 )
|
||||
(byte*) RASTER#5 ← phi( main::@10/(byte*) RASTER#9 )
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@11
|
||||
@ -127,9 +109,8 @@ flip::@return: scope:[flip] from flip::@3
|
||||
return
|
||||
to:@return
|
||||
plot: scope:[plot] from main::@10
|
||||
(byte*) SCREEN#1 ← phi( main::@10/(byte*) SCREEN#2 )
|
||||
(byte/word/signed word/dword/signed dword~) plot::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 * (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
(byte*~) plot::$1 ← (byte*) SCREEN#1 + (byte/word/signed word/dword/signed dword~) plot::$0
|
||||
(byte*~) plot::$1 ← (byte*) SCREEN#0 + (byte/word/signed word/dword/signed dword~) plot::$0
|
||||
(byte*~) plot::$2 ← (byte*~) plot::$1 + (byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
(byte*) plot::line#0 ← (byte*~) plot::$2
|
||||
(byte) plot::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -166,8 +147,6 @@ plot::@return: scope:[plot] from plot::@3
|
||||
return
|
||||
to:@return
|
||||
@4: scope:[] from @begin
|
||||
(byte*) SCREEN#12 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
(byte*) RASTER#10 ← phi( @begin/(byte*) RASTER#0 )
|
||||
call main
|
||||
to:@5
|
||||
@5: scope:[] from @4
|
||||
@ -183,31 +162,8 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) RASTER
|
||||
(byte*) RASTER#0
|
||||
(byte*) RASTER#1
|
||||
(byte*) RASTER#10
|
||||
(byte*) RASTER#11
|
||||
(byte*) RASTER#2
|
||||
(byte*) RASTER#3
|
||||
(byte*) RASTER#4
|
||||
(byte*) RASTER#5
|
||||
(byte*) RASTER#6
|
||||
(byte*) RASTER#7
|
||||
(byte*) RASTER#8
|
||||
(byte*) RASTER#9
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#11
|
||||
(byte*) SCREEN#12
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte[$0]) buffer1
|
||||
(byte[$0]) buffer1#0
|
||||
(byte[$1]) buffer2
|
||||
@ -313,13 +269,10 @@ SYMBOL TABLE SSA
|
||||
(byte) prepare::i#1
|
||||
(byte) prepare::i#2
|
||||
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) @5
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) RASTER#6 = (byte*) RASTER#8
|
||||
Alias (byte*) SCREEN#10 = (byte*) SCREEN#11
|
||||
Alias (byte*) RASTER#11 = (byte*) RASTER#4 (byte*) RASTER#7 (byte*) RASTER#2 (byte*) RASTER#9 (byte*) RASTER#5
|
||||
Alias (byte) main::c#1 = (byte) main::c#5
|
||||
Alias (byte*) SCREEN#2 = (byte*) SCREEN#8 (byte*) SCREEN#4 (byte*) SCREEN#5 (byte*) SCREEN#3 (byte*) SCREEN#9
|
||||
Alias (byte) main::c#2 = (byte) main::c#3
|
||||
Alias (byte) flip::dstIdx#1 = (byte/signed word/word/dword/signed dword~) flip::$0 (byte) flip::dstIdx#4
|
||||
Alias (byte) flip::r#2 = (byte) flip::r#3
|
||||
@ -329,38 +282,27 @@ Alias (byte*) plot::line#2 = (byte*) plot::line#3
|
||||
Alias (byte) plot::y#2 = (byte) plot::y#3
|
||||
Alias (byte) plot::i#1 = (byte) plot::i#4
|
||||
Alias (byte*) plot::line#1 = (byte*~) plot::$4
|
||||
Alias (byte*) RASTER#0 = (byte*) RASTER#10
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#12
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte) main::c#4
|
||||
Self Phi Eliminated (byte*) SCREEN#6
|
||||
Self Phi Eliminated (byte*) RASTER#11
|
||||
Self Phi Eliminated (byte) main::c#2
|
||||
Self Phi Eliminated (byte*) SCREEN#2
|
||||
Self Phi Eliminated (byte) flip::r#2
|
||||
Self Phi Eliminated (byte*) plot::line#2
|
||||
Self Phi Eliminated (byte) plot::y#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) RASTER#6 (byte*) RASTER#0
|
||||
Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) RASTER#11 (byte*) RASTER#1
|
||||
Redundant Phi (byte) main::c#2 (byte) main::c#4
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#6
|
||||
Redundant Phi (byte) flip::r#2 (byte) flip::r#4
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
|
||||
Redundant Phi (byte*) plot::line#2 (byte*) plot::line#4
|
||||
Redundant Phi (byte) plot::y#2 (byte) plot::y#4
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [14] if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) $fe) goto main::@3
|
||||
Simple Condition (bool~) main::$2 [17] if(*((byte*) RASTER#1)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@4
|
||||
Simple Condition (bool~) main::$3 [21] if((byte) main::c#1!=rangelast($19,1)) goto main::@2
|
||||
Simple Condition (bool~) prepare::$0 [34] if((byte) prepare::i#1!=rangelast(0,$ff)) goto prepare::@1
|
||||
Simple Condition (bool~) flip::$1 [48] if((byte) flip::c#1!=rangelast($10,1)) goto flip::@2
|
||||
Simple Condition (bool~) flip::$2 [53] if((byte) flip::r#1!=rangelast($10,1)) goto flip::@1
|
||||
Simple Condition (bool~) flip::$3 [59] if((byte) flip::i#1!=rangelast(0,$ff)) goto flip::@3
|
||||
Simple Condition (bool~) plot::$3 [75] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) $10) goto plot::@2
|
||||
Simple Condition (bool~) plot::$5 [81] if((byte) plot::y#1!=rangelast($10,1)) goto plot::@1
|
||||
Simple Condition (bool~) main::$1 [11] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $fe) goto main::@3
|
||||
Simple Condition (bool~) main::$2 [14] if(*((byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) $ff) goto main::@4
|
||||
Simple Condition (bool~) main::$3 [18] if((byte) main::c#1!=rangelast($19,1)) goto main::@2
|
||||
Simple Condition (bool~) prepare::$0 [28] if((byte) prepare::i#1!=rangelast(0,$ff)) goto prepare::@1
|
||||
Simple Condition (bool~) flip::$1 [42] if((byte) flip::c#1!=rangelast($10,1)) goto flip::@2
|
||||
Simple Condition (bool~) flip::$2 [47] if((byte) flip::r#1!=rangelast($10,1)) goto flip::@1
|
||||
Simple Condition (bool~) flip::$3 [53] if((byte) flip::i#1!=rangelast(0,$ff)) goto flip::@3
|
||||
Simple Condition (bool~) plot::$3 [68] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) $10) goto plot::@2
|
||||
Simple Condition (bool~) plot::$5 [74] if((byte) plot::y#1!=rangelast($10,1)) goto plot::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const word/signed word/dword/signed dword) $0 = $10*$10
|
||||
Constant (const word/signed word/dword/signed dword) $1 = $10*$10
|
||||
@ -380,10 +322,11 @@ Constant (const byte) plot::x#0 = 0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte[$0]) buffer1#0 = { fill( $0, 0) }
|
||||
Constant (const byte[$1]) buffer2#0 = { fill( $1, 0) }
|
||||
Constant (const byte*) plot::$1 = SCREEN#0+plot::$0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Consolidated constant in assignment plot::line#0
|
||||
Successful SSA optimization Pass2ConstantAdditionElimination
|
||||
if() condition always true - replacing block destination [9] if(true) goto main::@1
|
||||
Constant (const byte*) plot::line#0 = plot::$1+$c
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [8] if(true) goto main::@1
|
||||
Successful SSA optimization Pass2ConstantIfs
|
||||
Removing unused block main::@return
|
||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||
@ -399,29 +342,11 @@ Resolved ranged next value flip::i#1 ← ++ flip::i#2 to ++
|
||||
Resolved ranged comparison value if(flip::i#1!=rangelast(0,$ff)) goto flip::@3 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Resolved ranged next value plot::y#1 ← -- plot::y#4 to --
|
||||
Resolved ranged comparison value if(plot::y#1!=rangelast($10,1)) goto plot::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Culled Empty Block (label) main::@9
|
||||
Culled Empty Block (label) main::@1
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) main::@11
|
||||
Culled Empty Block (label) flip::@5
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (byte*) RASTER#1
|
||||
Self Phi Eliminated (byte*) SCREEN#6
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) RASTER#1 (byte*) RASTER#3
|
||||
Redundant Phi (byte*) SCREEN#6 (byte*) SCREEN#7
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Self Phi Eliminated (byte*) RASTER#3
|
||||
Self Phi Eliminated (byte*) SCREEN#7
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) RASTER#3 (const byte*) RASTER#0
|
||||
Redundant Phi (byte*) SCREEN#7 (const byte*) SCREEN#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) plot::$1 = SCREEN#0
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Constant (const byte*) plot::line#0 = plot::$1+plot::$0+$c
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
Culled Empty Block (label) main::@1
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inlining constant with var siblings (const byte) main::c#0
|
||||
Inlining constant with var siblings (const byte) prepare::i#0
|
||||
Inlining constant with var siblings (const byte) flip::srcIdx#0
|
||||
@ -435,7 +360,7 @@ Inlining constant with var siblings (const byte) plot::x#0
|
||||
Inlining constant with var siblings (const byte*) plot::line#0
|
||||
Constant inlined plot::line#0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28+(byte/signed byte/word/signed word/dword/signed dword) $c
|
||||
Constant inlined plot::$0 = (byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined plot::$1 = (const byte*) SCREEN#0
|
||||
Constant inlined plot::$1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 5*(byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
Constant inlined plot::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined plot::y#0 = (byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
Constant inlined $0 = (byte/signed byte/word/signed word/dword/signed dword) $10*(byte/signed byte/word/signed word/dword/signed dword) $10
|
||||
|
@ -1,16 +1,15 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN#2 ← phi( @1/(byte*) SCREEN#3 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) SCREEN#1 ← phi( main/(byte*) SCREEN#2 main::@1/(byte*) SCREEN#1 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
*((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2
|
||||
*((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2
|
||||
(byte/signed word/word/dword/signed dword~) main::$0 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) main::i#1 ← (byte/signed word/word/dword/signed dword~) main::$0
|
||||
(bool~) main::$1 ← (byte) main::i#1 < (byte/signed byte/word/signed word/dword/signed dword) $28
|
||||
@ -20,7 +19,6 @@ main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#3 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -34,9 +32,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(void()) main()
|
||||
(byte/signed word/word/dword/signed dword~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -50,14 +45,8 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::i#1 = (byte/signed word/word/dword/signed dword~) main::$0
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [8] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@1
|
||||
Simple Condition (bool~) main::$1 [7] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::i#0 = 0
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -7,28 +8,25 @@ main: scope:[main] from @1
|
||||
(word) main::w#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 )
|
||||
(word) main::w#2 ← phi( main/(word) main::w#0 main::@1/(word) main::w#1 )
|
||||
(byte~) main::$0 ← < (word) main::w#2
|
||||
*((byte*) main::SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
(byte~) main::$1 ← > (word) main::w#2
|
||||
*((byte*) main::SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
(word) main::w#1 ← (word) main::w#2 + rangenext(0,$ffff)
|
||||
(bool~) main::$2 ← (word) main::w#1 != rangelast(0,$ffff)
|
||||
if((bool~) main::$2) goto main::@1
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte*) main::SCREEN#3 ← phi( main::@1/(byte*) main::SCREEN#1 )
|
||||
(signed word/signed dword~) main::$3 ← - (word/signed word/dword/signed dword) $7fff
|
||||
(signed word) main::sw#0 ← (signed word/signed dword~) main::$3
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@2 main::@3
|
||||
(byte*) main::SCREEN#2 ← phi( main::@2/(byte*) main::SCREEN#2 main::@3/(byte*) main::SCREEN#3 )
|
||||
(signed word) main::sw#2 ← phi( main::@2/(signed word) main::sw#1 main::@3/(signed word) main::sw#0 )
|
||||
(byte~) main::$4 ← < (signed word) main::sw#2
|
||||
*((byte*) main::SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4
|
||||
(byte~) main::$5 ← > (signed word) main::sw#2
|
||||
*((byte*) main::SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5
|
||||
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5
|
||||
(signed word) main::sw#1 ← (signed word) main::sw#2 + rangenext(main::$3,$7ffe)
|
||||
(bool~) main::$6 ← (signed word) main::sw#1 != rangelast(main::$3,$7ffe)
|
||||
if((bool~) main::$6) goto main::@2
|
||||
@ -62,9 +60,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::SCREEN
|
||||
(byte*) main::SCREEN#0
|
||||
(byte*) main::SCREEN#1
|
||||
(byte*) main::SCREEN#2
|
||||
(byte*) main::SCREEN#3
|
||||
(signed word) main::sw
|
||||
(signed word) main::sw#0
|
||||
(signed word) main::sw#1
|
||||
@ -76,17 +71,10 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::SCREEN#1 = (byte*) main::SCREEN#3
|
||||
Alias (signed word) main::sw#0 = (signed word/signed dword~) main::$3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::SCREEN#1
|
||||
Self Phi Eliminated (byte*) main::SCREEN#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0
|
||||
Redundant Phi (byte*) main::SCREEN#2 (byte*) main::SCREEN#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$2 [9] if((word) main::w#1!=rangelast(0,$ffff)) goto main::@1
|
||||
Simple Condition (bool~) main::$6 [20] if((signed word) main::sw#1!=rangelast(main::sw#0,$7ffe)) goto main::@2
|
||||
Simple Condition (bool~) main::$6 [19] if((signed word) main::sw#1!=rangelast(main::sw#0,$7ffe)) goto main::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) main::SCREEN#0 = ((byte*))$400
|
||||
Constant (const word) main::w#0 = 0
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) SCREEN1
|
||||
Identified constant variable (byte*) SCREEN2
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -5,28 +7,22 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) SCREEN2#0 ← ((byte*)) (word/signed word/dword/signed dword) $500
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN2#4 ← phi( @1/(byte*) SCREEN2#5 )
|
||||
(byte*) SCREEN1#2 ← phi( @1/(byte*) SCREEN1#3 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) SCREEN2#3 ← phi( main/(byte*) SCREEN2#4 main::@1/(byte*) SCREEN2#3 )
|
||||
(byte*) SCREEN1#1 ← phi( main/(byte*) SCREEN1#2 main::@1/(byte*) SCREEN1#1 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@1/(byte) main::i#1 )
|
||||
*((byte*) SCREEN1#1 + (byte) main::i#2) ← (byte) main::i#2
|
||||
*((byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$ff)
|
||||
(bool~) main::$0 ← (byte) main::i#1 != rangelast(0,$ff)
|
||||
if((bool~) main::$0) goto main::@1
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte*) SCREEN2#2 ← phi( main::@1/(byte*) SCREEN2#3 )
|
||||
(byte) main::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::j#1 ← (byte/signed byte/word/signed word/dword/signed dword) $64
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@2 main::@3
|
||||
(byte*) SCREEN2#1 ← phi( main::@2/(byte*) SCREEN2#1 main::@3/(byte*) SCREEN2#2 )
|
||||
(byte) main::j#3 ← phi( main::@2/(byte) main::j#2 main::@3/(byte) main::j#1 )
|
||||
*((byte*) SCREEN2#1 + (byte) main::j#3) ← (byte) main::j#3
|
||||
*((byte*) SCREEN2#0 + (byte) main::j#3) ← (byte) main::j#3
|
||||
(byte) main::j#2 ← (byte) main::j#3 + rangenext($64,0)
|
||||
(bool~) main::$1 ← (byte) main::j#2 != rangelast($64,0)
|
||||
if((bool~) main::$1) goto main::@2
|
||||
@ -35,8 +31,6 @@ main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN2#5 ← phi( @begin/(byte*) SCREEN2#0 )
|
||||
(byte*) SCREEN1#3 ← phi( @begin/(byte*) SCREEN1#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -50,16 +44,8 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN1
|
||||
(byte*) SCREEN1#0
|
||||
(byte*) SCREEN1#1
|
||||
(byte*) SCREEN1#2
|
||||
(byte*) SCREEN1#3
|
||||
(byte*) SCREEN2
|
||||
(byte*) SCREEN2#0
|
||||
(byte*) SCREEN2#1
|
||||
(byte*) SCREEN2#2
|
||||
(byte*) SCREEN2#3
|
||||
(byte*) SCREEN2#4
|
||||
(byte*) SCREEN2#5
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -79,22 +65,8 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) SCREEN2#2 = (byte*) SCREEN2#3
|
||||
Alias (byte*) SCREEN1#0 = (byte*) SCREEN1#3
|
||||
Alias (byte*) SCREEN2#0 = (byte*) SCREEN2#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN1#1
|
||||
Self Phi Eliminated (byte*) SCREEN2#2
|
||||
Self Phi Eliminated (byte*) SCREEN2#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN1#2 (byte*) SCREEN1#0
|
||||
Redundant Phi (byte*) SCREEN2#4 (byte*) SCREEN2#0
|
||||
Redundant Phi (byte*) SCREEN1#1 (byte*) SCREEN1#2
|
||||
Redundant Phi (byte*) SCREEN2#2 (byte*) SCREEN2#4
|
||||
Redundant Phi (byte*) SCREEN2#1 (byte*) SCREEN2#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$0 [8] if((byte) main::i#1!=rangelast(0,$ff)) goto main::@1
|
||||
Simple Condition (bool~) main::$1 [16] if((byte) main::j#2!=rangelast($64,0)) goto main::@2
|
||||
Simple Condition (bool~) main::$0 [7] if((byte) main::i#1!=rangelast(0,$ff)) goto main::@1
|
||||
Simple Condition (bool~) main::$1 [14] if((byte) main::j#2!=rangelast($64,0)) goto main::@2
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN1#0 = ((byte*))$400
|
||||
Constant (const byte*) SCREEN2#0 = ((byte*))$500
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -15,11 +16,10 @@ main: scope:[main] from @2
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::z#2 ← phi( main/(byte*) main::z#0 )
|
||||
(byte*) main::screen#1 ← phi( main/(byte*) main::screen#0 )
|
||||
(byte) fct::return#4 ← phi( main/(byte) fct::return#0 )
|
||||
(byte~) main::$0 ← (byte) fct::return#4
|
||||
(byte) main::a1#0 ← (byte~) main::$0
|
||||
*((byte*) main::screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::a1#0
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::a1#0
|
||||
(byte*) main::z#1 ← ++ (byte*) main::z#2
|
||||
(byte) main::x#1 ← (byte/signed byte/word/signed word/dword/signed dword) $55
|
||||
(byte) fct::x#1 ← (byte) main::x#1
|
||||
@ -28,11 +28,10 @@ main::@1: scope:[main] from main
|
||||
(byte) fct::return#1 ← (byte) fct::return#3
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) main::screen#2 ← phi( main::@1/(byte*) main::screen#1 )
|
||||
(byte) fct::return#5 ← phi( main::@1/(byte) fct::return#1 )
|
||||
(byte~) main::$1 ← (byte) fct::return#5
|
||||
(byte) main::a2#0 ← (byte~) main::$1
|
||||
*((byte*) main::screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0
|
||||
*((byte*) main::screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::a2#0
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
@ -94,8 +93,6 @@ SYMBOL TABLE SSA
|
||||
(byte) main::a2#0
|
||||
(byte*) main::screen
|
||||
(byte*) main::screen#0
|
||||
(byte*) main::screen#1
|
||||
(byte*) main::screen#2
|
||||
(byte) main::x
|
||||
(byte) main::x#0
|
||||
(byte) main::x#1
|
||||
@ -107,7 +104,6 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) fct::return#0 = (byte) fct::return#4
|
||||
Alias (byte*) main::screen#0 = (byte*) main::screen#1 (byte*) main::screen#2
|
||||
Alias (byte*) main::z#0 = (byte*) main::z#2
|
||||
Alias (byte) main::a1#0 = (byte~) main::$0
|
||||
Alias (byte) fct::return#1 = (byte) fct::return#5
|
||||
|
@ -1,3 +1,9 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
Identified constant variable (byte*) CHARSET
|
||||
Identified constant variable (byte*) CHARGEN
|
||||
Identified constant variable (byte*) PROCPORT
|
||||
Identified constant variable (byte*) D018
|
||||
Identified constant variable (byte*) CHARSET4
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
@ -10,21 +16,12 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte[]) bits_count#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4 }
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) D018#13 ← phi( @1/(byte*) D018#14 )
|
||||
(byte*) SCREEN#12 ← phi( @1/(byte*) SCREEN#13 )
|
||||
(byte*) CHARSET4#1 ← phi( @1/(byte*) CHARSET4#2 )
|
||||
(byte*) CHARGEN#1 ← phi( @1/(byte*) CHARGEN#3 )
|
||||
(byte*) PROCPORT#1 ← phi( @1/(byte*) PROCPORT#3 )
|
||||
asm { sei }
|
||||
*((byte*) PROCPORT#1) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*) main::chargen#0 ← (byte*) CHARGEN#1
|
||||
(byte*) main::charset4#0 ← (byte*) CHARSET4#1
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(byte*) main::chargen#0 ← (byte*) CHARGEN#0
|
||||
(byte*) main::charset4#0 ← (byte*) CHARSET4#0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
(byte*) D018#11 ← phi( main/(byte*) D018#13 main::@5/(byte*) D018#4 )
|
||||
(byte*) SCREEN#10 ← phi( main/(byte*) SCREEN#12 main::@5/(byte*) SCREEN#3 )
|
||||
(byte*) PROCPORT#11 ← phi( main/(byte*) PROCPORT#1 main::@5/(byte*) PROCPORT#4 )
|
||||
(byte*) CHARGEN#10 ← phi( main/(byte*) CHARGEN#1 main::@5/(byte*) CHARGEN#2 )
|
||||
(byte*) main::charset4#9 ← phi( main/(byte*) main::charset4#0 main::@5/(byte*) main::charset4#1 )
|
||||
(byte*) main::chargen#2 ← phi( main/(byte*) main::chargen#0 main::@5/(byte*) main::chargen#1 )
|
||||
(byte) main::bits_gen#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -42,10 +39,6 @@ main::@1: scope:[main] from main main::@5
|
||||
if((bool~) main::$8) goto main::@2
|
||||
to:main::@7
|
||||
main::@2: scope:[main] from main::@1 main::@7
|
||||
(byte*) D018#9 ← phi( main::@1/(byte*) D018#11 main::@7/(byte*) D018#12 )
|
||||
(byte*) SCREEN#8 ← phi( main::@1/(byte*) SCREEN#10 main::@7/(byte*) SCREEN#11 )
|
||||
(byte*) PROCPORT#9 ← phi( main::@1/(byte*) PROCPORT#11 main::@7/(byte*) PROCPORT#12 )
|
||||
(byte*) CHARGEN#8 ← phi( main::@1/(byte*) CHARGEN#10 main::@7/(byte*) CHARGEN#11 )
|
||||
(byte*) main::charset4#7 ← phi( main::@1/(byte*) main::charset4#9 main::@7/(byte*) main::charset4#10 )
|
||||
(byte*) main::chargen1#1 ← phi( main::@1/(byte*) main::chargen1#0 main::@7/(byte*) main::chargen1#4 )
|
||||
(byte*) main::chargen#3 ← phi( main::@1/(byte*) main::chargen#2 main::@7/(byte*) main::chargen#7 )
|
||||
@ -63,10 +56,6 @@ main::@2: scope:[main] from main::@1 main::@7
|
||||
if((bool~) main::$17) goto main::@3
|
||||
to:main::@8
|
||||
main::@7: scope:[main] from main::@1
|
||||
(byte*) D018#12 ← phi( main::@1/(byte*) D018#11 )
|
||||
(byte*) SCREEN#11 ← phi( main::@1/(byte*) SCREEN#10 )
|
||||
(byte*) PROCPORT#12 ← phi( main::@1/(byte*) PROCPORT#11 )
|
||||
(byte*) CHARGEN#11 ← phi( main::@1/(byte*) CHARGEN#10 )
|
||||
(byte*) main::charset4#10 ← phi( main::@1/(byte*) main::charset4#9 )
|
||||
(byte*) main::chargen1#4 ← phi( main::@1/(byte*) main::chargen1#0 )
|
||||
(byte*) main::chargen#7 ← phi( main::@1/(byte*) main::chargen#2 )
|
||||
@ -75,10 +64,6 @@ main::@7: scope:[main] from main::@1
|
||||
(byte) main::bits_gen#2 ← (byte/signed word/word/dword/signed dword~) main::$9
|
||||
to:main::@2
|
||||
main::@3: scope:[main] from main::@2 main::@8
|
||||
(byte*) D018#7 ← phi( main::@2/(byte*) D018#9 main::@8/(byte*) D018#10 )
|
||||
(byte*) SCREEN#6 ← phi( main::@2/(byte*) SCREEN#8 main::@8/(byte*) SCREEN#9 )
|
||||
(byte*) PROCPORT#7 ← phi( main::@2/(byte*) PROCPORT#9 main::@8/(byte*) PROCPORT#10 )
|
||||
(byte*) CHARGEN#6 ← phi( main::@2/(byte*) CHARGEN#8 main::@8/(byte*) CHARGEN#9 )
|
||||
(byte*) main::charset4#5 ← phi( main::@2/(byte*) main::charset4#7 main::@8/(byte*) main::charset4#8 )
|
||||
(byte*) main::chargen1#2 ← phi( main::@2/(byte*) main::chargen1#1 main::@8/(byte*) main::chargen1#5 )
|
||||
(byte*) main::chargen#4 ← phi( main::@2/(byte*) main::chargen#3 main::@8/(byte*) main::chargen#8 )
|
||||
@ -96,10 +81,6 @@ main::@3: scope:[main] from main::@2 main::@8
|
||||
if((bool~) main::$26) goto main::@4
|
||||
to:main::@9
|
||||
main::@8: scope:[main] from main::@2
|
||||
(byte*) D018#10 ← phi( main::@2/(byte*) D018#9 )
|
||||
(byte*) SCREEN#9 ← phi( main::@2/(byte*) SCREEN#8 )
|
||||
(byte*) PROCPORT#10 ← phi( main::@2/(byte*) PROCPORT#9 )
|
||||
(byte*) CHARGEN#9 ← phi( main::@2/(byte*) CHARGEN#8 )
|
||||
(byte*) main::charset4#8 ← phi( main::@2/(byte*) main::charset4#7 )
|
||||
(byte*) main::chargen1#5 ← phi( main::@2/(byte*) main::chargen1#1 )
|
||||
(byte*) main::chargen#8 ← phi( main::@2/(byte*) main::chargen#3 )
|
||||
@ -108,10 +89,6 @@ main::@8: scope:[main] from main::@2
|
||||
(byte) main::bits_gen#4 ← (byte/signed word/word/dword/signed dword~) main::$18
|
||||
to:main::@3
|
||||
main::@4: scope:[main] from main::@3 main::@9
|
||||
(byte*) D018#6 ← phi( main::@3/(byte*) D018#7 main::@9/(byte*) D018#8 )
|
||||
(byte*) SCREEN#5 ← phi( main::@3/(byte*) SCREEN#6 main::@9/(byte*) SCREEN#7 )
|
||||
(byte*) PROCPORT#6 ← phi( main::@3/(byte*) PROCPORT#7 main::@9/(byte*) PROCPORT#8 )
|
||||
(byte*) CHARGEN#5 ← phi( main::@3/(byte*) CHARGEN#6 main::@9/(byte*) CHARGEN#7 )
|
||||
(byte*) main::charset4#4 ← phi( main::@3/(byte*) main::charset4#5 main::@9/(byte*) main::charset4#6 )
|
||||
(byte*) main::chargen1#3 ← phi( main::@3/(byte*) main::chargen1#2 main::@9/(byte*) main::chargen1#6 )
|
||||
(byte*) main::chargen#5 ← phi( main::@3/(byte*) main::chargen#4 main::@9/(byte*) main::chargen#9 )
|
||||
@ -128,10 +105,6 @@ main::@4: scope:[main] from main::@3 main::@9
|
||||
if((bool~) main::$34) goto main::@5
|
||||
to:main::@10
|
||||
main::@9: scope:[main] from main::@3
|
||||
(byte*) D018#8 ← phi( main::@3/(byte*) D018#7 )
|
||||
(byte*) SCREEN#7 ← phi( main::@3/(byte*) SCREEN#6 )
|
||||
(byte*) PROCPORT#8 ← phi( main::@3/(byte*) PROCPORT#7 )
|
||||
(byte*) CHARGEN#7 ← phi( main::@3/(byte*) CHARGEN#6 )
|
||||
(byte*) main::charset4#6 ← phi( main::@3/(byte*) main::charset4#5 )
|
||||
(byte*) main::chargen1#6 ← phi( main::@3/(byte*) main::chargen1#2 )
|
||||
(byte*) main::chargen#9 ← phi( main::@3/(byte*) main::chargen#4 )
|
||||
@ -140,10 +113,6 @@ main::@9: scope:[main] from main::@3
|
||||
(byte) main::bits_gen#6 ← (byte/signed word/word/dword/signed dword~) main::$27
|
||||
to:main::@4
|
||||
main::@5: scope:[main] from main::@10 main::@4
|
||||
(byte*) D018#4 ← phi( main::@10/(byte*) D018#5 main::@4/(byte*) D018#6 )
|
||||
(byte*) SCREEN#3 ← phi( main::@10/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#5 )
|
||||
(byte*) PROCPORT#4 ← phi( main::@10/(byte*) PROCPORT#5 main::@4/(byte*) PROCPORT#6 )
|
||||
(byte*) CHARGEN#2 ← phi( main::@10/(byte*) CHARGEN#4 main::@4/(byte*) CHARGEN#5 )
|
||||
(byte*) main::chargen#6 ← phi( main::@10/(byte*) main::chargen#10 main::@4/(byte*) main::chargen#5 )
|
||||
(byte*) main::charset4#2 ← phi( main::@10/(byte*) main::charset4#3 main::@4/(byte*) main::charset4#4 )
|
||||
(byte) main::bits_gen#15 ← phi( main::@10/(byte) main::bits_gen#8 main::@4/(byte) main::bits_gen#5 )
|
||||
@ -153,15 +122,11 @@ main::@5: scope:[main] from main::@10 main::@4
|
||||
(byte*) main::charset4#1 ← ++ (byte*) main::charset4#2
|
||||
(byte*~) main::$37 ← (byte*) main::chargen#6 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte*) main::chargen#1 ← (byte*~) main::$37
|
||||
(byte*~) main::$38 ← (byte*) CHARGEN#2 + (word/signed word/dword/signed dword) $800
|
||||
(byte*~) main::$38 ← (byte*) CHARGEN#0 + (word/signed word/dword/signed dword) $800
|
||||
(bool~) main::$39 ← (byte*) main::chargen#1 < (byte*~) main::$38
|
||||
if((bool~) main::$39) goto main::@1
|
||||
to:main::@11
|
||||
main::@10: scope:[main] from main::@4
|
||||
(byte*) D018#5 ← phi( main::@4/(byte*) D018#6 )
|
||||
(byte*) SCREEN#4 ← phi( main::@4/(byte*) SCREEN#5 )
|
||||
(byte*) PROCPORT#5 ← phi( main::@4/(byte*) PROCPORT#6 )
|
||||
(byte*) CHARGEN#4 ← phi( main::@4/(byte*) CHARGEN#5 )
|
||||
(byte*) main::chargen#10 ← phi( main::@4/(byte*) main::chargen#5 )
|
||||
(byte*) main::charset4#3 ← phi( main::@4/(byte*) main::charset4#4 )
|
||||
(byte) main::bits_gen#16 ← phi( main::@4/(byte) main::bits_gen#5 )
|
||||
@ -169,35 +134,24 @@ main::@10: scope:[main] from main::@4
|
||||
(byte) main::bits_gen#8 ← (byte/signed word/word/dword/signed dword~) main::$35
|
||||
to:main::@5
|
||||
main::@11: scope:[main] from main::@5
|
||||
(byte*) D018#3 ← phi( main::@5/(byte*) D018#4 )
|
||||
(byte*) SCREEN#2 ← phi( main::@5/(byte*) SCREEN#3 )
|
||||
(byte*) PROCPORT#2 ← phi( main::@5/(byte*) PROCPORT#4 )
|
||||
*((byte*) PROCPORT#2) ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
*((byte*) PROCPORT#0) ← (byte/signed byte/word/signed word/dword/signed dword) $37
|
||||
asm { cli }
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@11 main::@6
|
||||
(byte*) D018#2 ← phi( main::@11/(byte*) D018#3 main::@6/(byte*) D018#2 )
|
||||
(byte*) SCREEN#1 ← phi( main::@11/(byte*) SCREEN#2 main::@6/(byte*) SCREEN#1 )
|
||||
(byte) main::i#2 ← phi( main::@11/(byte) main::i#0 main::@6/(byte) main::i#1 )
|
||||
*((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::i#2
|
||||
*((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2
|
||||
(byte) main::i#1 ← (byte) main::i#2 + rangenext(0,$ff)
|
||||
(bool~) main::$40 ← (byte) main::i#1 != rangelast(0,$ff)
|
||||
if((bool~) main::$40) goto main::@6
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@6
|
||||
(byte*) D018#1 ← phi( main::@6/(byte*) D018#2 )
|
||||
*((byte*) D018#1) ← (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
*((byte*) D018#0) ← (byte/signed byte/word/signed word/dword/signed dword) $19
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@12
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) D018#14 ← phi( @begin/(byte*) D018#0 )
|
||||
(byte*) SCREEN#13 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
(byte*) CHARSET4#2 ← phi( @begin/(byte*) CHARSET4#0 )
|
||||
(byte*) CHARGEN#3 ← phi( @begin/(byte*) CHARGEN#0 )
|
||||
(byte*) PROCPORT#3 ← phi( @begin/(byte*) PROCPORT#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -211,68 +165,16 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) CHARGEN
|
||||
(byte*) CHARGEN#0
|
||||
(byte*) CHARGEN#1
|
||||
(byte*) CHARGEN#10
|
||||
(byte*) CHARGEN#11
|
||||
(byte*) CHARGEN#2
|
||||
(byte*) CHARGEN#3
|
||||
(byte*) CHARGEN#4
|
||||
(byte*) CHARGEN#5
|
||||
(byte*) CHARGEN#6
|
||||
(byte*) CHARGEN#7
|
||||
(byte*) CHARGEN#8
|
||||
(byte*) CHARGEN#9
|
||||
(byte*) CHARSET
|
||||
(byte*) CHARSET#0
|
||||
(byte*) CHARSET4
|
||||
(byte*) CHARSET4#0
|
||||
(byte*) CHARSET4#1
|
||||
(byte*) CHARSET4#2
|
||||
(byte*) D018
|
||||
(byte*) D018#0
|
||||
(byte*) D018#1
|
||||
(byte*) D018#10
|
||||
(byte*) D018#11
|
||||
(byte*) D018#12
|
||||
(byte*) D018#13
|
||||
(byte*) D018#14
|
||||
(byte*) D018#2
|
||||
(byte*) D018#3
|
||||
(byte*) D018#4
|
||||
(byte*) D018#5
|
||||
(byte*) D018#6
|
||||
(byte*) D018#7
|
||||
(byte*) D018#8
|
||||
(byte*) D018#9
|
||||
(byte*) PROCPORT
|
||||
(byte*) PROCPORT#0
|
||||
(byte*) PROCPORT#1
|
||||
(byte*) PROCPORT#10
|
||||
(byte*) PROCPORT#11
|
||||
(byte*) PROCPORT#12
|
||||
(byte*) PROCPORT#2
|
||||
(byte*) PROCPORT#3
|
||||
(byte*) PROCPORT#4
|
||||
(byte*) PROCPORT#5
|
||||
(byte*) PROCPORT#6
|
||||
(byte*) PROCPORT#7
|
||||
(byte*) PROCPORT#8
|
||||
(byte*) PROCPORT#9
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#10
|
||||
(byte*) SCREEN#11
|
||||
(byte*) SCREEN#12
|
||||
(byte*) SCREEN#13
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(byte[]) bits_count
|
||||
(byte[]) bits_count#0
|
||||
(void()) main()
|
||||
@ -392,91 +294,43 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [24] (bool~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [23] (bool~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [36] (bool~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [35] (bool~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [51] (bool~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [50] (bool~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [65] (bool~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [64] (bool~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [23] (bool~) main::$8 ← (byte) main::bits#0 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [22] (bool~) main::$7 ← (byte) main::bits#0 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [35] (bool~) main::$17 ← (byte) main::bits#1 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [34] (bool~) main::$16 ← (byte) main::bits#1 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [50] (bool~) main::$26 ← (byte) main::bits#2 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [49] (bool~) main::$25 ← (byte) main::bits#2 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Inversing boolean not [64] (bool~) main::$34 ← (byte) main::bits#3 < (byte/signed byte/word/signed word/dword/signed dword) 2 from [63] (bool~) main::$33 ← (byte) main::bits#3 >= (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte*) main::chargen1#0 = (byte*~) main::$0 (byte*) main::chargen1#4
|
||||
Alias (byte) main::bits_gen#1 = (byte~) main::$10 (byte) main::bits_gen#12
|
||||
Alias (byte) main::bits_gen#0 = (byte) main::bits_gen#10
|
||||
Alias (byte*) main::chargen#2 = (byte*) main::chargen#7
|
||||
Alias (byte*) main::charset4#10 = (byte*) main::charset4#9
|
||||
Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#11
|
||||
Alias (byte*) PROCPORT#11 = (byte*) PROCPORT#12
|
||||
Alias (byte*) SCREEN#10 = (byte*) SCREEN#11
|
||||
Alias (byte*) D018#11 = (byte*) D018#12
|
||||
Alias (byte) main::bits_gen#2 = (byte/signed word/word/dword/signed dword~) main::$9
|
||||
Alias (byte) main::bits_gen#14 = (byte) main::bits_gen#3 (byte~) main::$19
|
||||
Alias (byte*) main::chargen#3 = (byte*) main::chargen#8
|
||||
Alias (byte*) main::chargen1#1 = (byte*) main::chargen1#5
|
||||
Alias (byte*) main::charset4#7 = (byte*) main::charset4#8
|
||||
Alias (byte*) CHARGEN#8 = (byte*) CHARGEN#9
|
||||
Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#9
|
||||
Alias (byte*) SCREEN#8 = (byte*) SCREEN#9
|
||||
Alias (byte*) D018#10 = (byte*) D018#9
|
||||
Alias (byte) main::bits_gen#4 = (byte/signed word/word/dword/signed dword~) main::$18
|
||||
Alias (byte) main::bits_gen#16 = (byte) main::bits_gen#5 (byte~) main::$28
|
||||
Alias (byte*) main::chargen#4 = (byte*) main::chargen#9
|
||||
Alias (byte*) main::chargen1#2 = (byte*) main::chargen1#6
|
||||
Alias (byte*) main::charset4#5 = (byte*) main::charset4#6
|
||||
Alias (byte*) CHARGEN#6 = (byte*) CHARGEN#7
|
||||
Alias (byte*) PROCPORT#7 = (byte*) PROCPORT#8
|
||||
Alias (byte*) SCREEN#6 = (byte*) SCREEN#7
|
||||
Alias (byte*) D018#7 = (byte*) D018#8
|
||||
Alias (byte) main::bits_gen#6 = (byte/signed word/word/dword/signed dword~) main::$27
|
||||
Alias (byte) main::bits_gen#7 = (byte~) main::$36
|
||||
Alias (byte*) main::chargen#1 = (byte*~) main::$37
|
||||
Alias (byte*) main::charset4#3 = (byte*) main::charset4#4
|
||||
Alias (byte*) main::chargen#10 = (byte*) main::chargen#5
|
||||
Alias (byte*) CHARGEN#4 = (byte*) CHARGEN#5
|
||||
Alias (byte*) PROCPORT#5 = (byte*) PROCPORT#6
|
||||
Alias (byte*) SCREEN#4 = (byte*) SCREEN#5
|
||||
Alias (byte*) D018#5 = (byte*) D018#6
|
||||
Alias (byte) main::bits_gen#8 = (byte/signed word/word/dword/signed dword~) main::$35
|
||||
Alias (byte*) PROCPORT#2 = (byte*) PROCPORT#4
|
||||
Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
|
||||
Alias (byte*) D018#3 = (byte*) D018#4
|
||||
Alias (byte*) D018#1 = (byte*) D018#2
|
||||
Alias (byte*) PROCPORT#0 = (byte*) PROCPORT#3
|
||||
Alias (byte*) CHARGEN#0 = (byte*) CHARGEN#3
|
||||
Alias (byte*) CHARSET4#0 = (byte*) CHARSET4#2
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#13
|
||||
Alias (byte*) D018#0 = (byte*) D018#14
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) main::chargen#10 = (byte*) main::chargen#3 (byte*) main::chargen#2 (byte*) main::chargen#4 (byte*) main::chargen#6
|
||||
Alias (byte*) main::chargen1#0 = (byte*) main::chargen1#1 (byte*) main::chargen1#2 (byte*) main::chargen1#3
|
||||
Alias (byte*) main::charset4#10 = (byte*) main::charset4#7 (byte*) main::charset4#5 (byte*) main::charset4#3 (byte*) main::charset4#2
|
||||
Alias (byte*) CHARGEN#10 = (byte*) CHARGEN#8 (byte*) CHARGEN#6 (byte*) CHARGEN#4 (byte*) CHARGEN#2
|
||||
Alias (byte*) PROCPORT#10 = (byte*) PROCPORT#11 (byte*) PROCPORT#7 (byte*) PROCPORT#5 (byte*) PROCPORT#2
|
||||
Alias (byte*) SCREEN#10 = (byte*) SCREEN#8 (byte*) SCREEN#6 (byte*) SCREEN#4 (byte*) SCREEN#2
|
||||
Alias (byte*) D018#10 = (byte*) D018#11 (byte*) D018#7 (byte*) D018#5 (byte*) D018#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) CHARGEN#10
|
||||
Self Phi Eliminated (byte*) PROCPORT#10
|
||||
Self Phi Eliminated (byte*) SCREEN#10
|
||||
Self Phi Eliminated (byte*) D018#10
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Self Phi Eliminated (byte*) D018#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) PROCPORT#1 (byte*) PROCPORT#0
|
||||
Redundant Phi (byte*) CHARGEN#1 (byte*) CHARGEN#0
|
||||
Redundant Phi (byte*) CHARSET4#1 (byte*) CHARSET4#0
|
||||
Redundant Phi (byte*) SCREEN#12 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) D018#13 (byte*) D018#0
|
||||
Redundant Phi (byte*) CHARGEN#10 (byte*) CHARGEN#1
|
||||
Redundant Phi (byte*) PROCPORT#10 (byte*) PROCPORT#1
|
||||
Redundant Phi (byte*) SCREEN#10 (byte*) SCREEN#12
|
||||
Redundant Phi (byte*) D018#10 (byte*) D018#13
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#10
|
||||
Redundant Phi (byte*) D018#1 (byte*) D018#10
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$8 [25] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2
|
||||
Simple Condition (bool~) main::$17 [37] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3
|
||||
Simple Condition (bool~) main::$26 [52] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4
|
||||
Simple Condition (bool~) main::$34 [66] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5
|
||||
Simple Condition (bool~) main::$39 [79] if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1
|
||||
Simple Condition (bool~) main::$40 [91] if((byte) main::i#1!=rangelast(0,$ff)) goto main::@6
|
||||
Simple Condition (bool~) main::$8 [24] if((byte) main::bits#0<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@2
|
||||
Simple Condition (bool~) main::$17 [36] if((byte) main::bits#1<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@3
|
||||
Simple Condition (bool~) main::$26 [51] if((byte) main::bits#2<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@4
|
||||
Simple Condition (bool~) main::$34 [65] if((byte) main::bits#3<(byte/signed byte/word/signed word/dword/signed dword) 2) goto main::@5
|
||||
Simple Condition (bool~) main::$39 [78] if((byte*) main::chargen#1<(byte*~) main::$38) goto main::@1
|
||||
Simple Condition (bool~) main::$40 [89] if((byte) main::i#1!=rangelast(0,$ff)) goto main::@6
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte*) CHARSET#0 = ((byte*))$2000
|
||||
|
@ -7,25 +7,25 @@ main: {
|
||||
ldx #0
|
||||
ldy #0
|
||||
print21_b1:
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
sta screen,x
|
||||
inx
|
||||
inx
|
||||
iny
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print21_b1
|
||||
ldx #0
|
||||
ldy #0
|
||||
print22_b1:
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
sta print22_at,x
|
||||
inx
|
||||
inx
|
||||
iny
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print22_b1
|
||||
rts
|
||||
print21_msg: .text "hello world!@"
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
|
@ -16,10 +16,10 @@ main::print21: scope:[main] from main
|
||||
main::print21_@1: scope:[main] from main::print21 main::print21_@1
|
||||
[6] (byte) main::print21_j#2 ← phi( main::print21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print21_@1/(byte) main::print21_j#1 )
|
||||
[6] (byte) main::print21_i#2 ← phi( main::print21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print21_@1/(byte) main::print21_i#1 )
|
||||
[7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2)
|
||||
[7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2)
|
||||
[8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2
|
||||
[10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1
|
||||
[10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1
|
||||
to:main::print22
|
||||
main::print22: scope:[main] from main::print21_@1
|
||||
[11] phi()
|
||||
@ -27,10 +27,10 @@ main::print22: scope:[main] from main::print21_@1
|
||||
main::print22_@1: scope:[main] from main::print22 main::print22_@1
|
||||
[12] (byte) main::print22_j#2 ← phi( main::print22/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print22_@1/(byte) main::print22_j#1 )
|
||||
[12] (byte) main::print22_i#2 ← phi( main::print22/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print22_@1/(byte) main::print22_i#1 )
|
||||
[13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2)
|
||||
[13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2)
|
||||
[14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2
|
||||
[16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1
|
||||
[16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::print22_@1
|
||||
[17] return
|
||||
|
@ -1,3 +1,5 @@
|
||||
Identified constant variable (byte*) screen
|
||||
Identified constant variable (byte*) main::hello
|
||||
Inlined call call print2 (byte*) screen (byte*) main::hello
|
||||
Inlined call call print2 (byte*~) main::$1 (byte*) main::hello
|
||||
|
||||
@ -6,22 +8,17 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen#1 ← phi( @2/(byte*) screen#3 )
|
||||
(byte*) main::hello#0 ← (const string) main::$3
|
||||
(byte*) main::print21_at#0 ← (byte*) screen#1
|
||||
(byte*) main::print21_at#0 ← (byte*) screen#0
|
||||
(byte*) main::print21_msg#0 ← (byte*) main::hello#0
|
||||
to:main::print21
|
||||
main::print21: scope:[main] from main
|
||||
(byte*) main::hello#3 ← phi( main/(byte*) main::hello#0 )
|
||||
(byte*) screen#5 ← phi( main/(byte*) screen#1 )
|
||||
(byte*) main::print21_at#2 ← phi( main/(byte*) main::print21_at#0 )
|
||||
(byte*) main::print21_msg#2 ← phi( main/(byte*) main::print21_msg#0 )
|
||||
(byte) main::print21_j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::print21_i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::print21_@1
|
||||
main::print21_@1: scope:[main] from main::print21 main::print21_@1
|
||||
(byte*) main::hello#2 ← phi( main::print21/(byte*) main::hello#3 main::print21_@1/(byte*) main::hello#2 )
|
||||
(byte*) screen#4 ← phi( main::print21/(byte*) screen#5 main::print21_@1/(byte*) screen#4 )
|
||||
(byte) main::print21_j#2 ← phi( main::print21/(byte) main::print21_j#0 main::print21_@1/(byte) main::print21_j#1 )
|
||||
(byte*) main::print21_at#1 ← phi( main::print21/(byte*) main::print21_at#2 main::print21_@1/(byte*) main::print21_at#1 )
|
||||
(byte) main::print21_i#2 ← phi( main::print21/(byte) main::print21_i#0 main::print21_@1/(byte) main::print21_i#1 )
|
||||
@ -33,11 +30,9 @@ main::print21_@1: scope:[main] from main::print21 main::print21_@1
|
||||
if((bool) main::print21_$0#0) goto main::print21_@1
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::print21_@1
|
||||
(byte*) main::hello#1 ← phi( main::print21_@1/(byte*) main::hello#2 )
|
||||
(byte*) screen#2 ← phi( main::print21_@1/(byte*) screen#4 )
|
||||
(byte*~) main::$1 ← (byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) $50
|
||||
(byte*~) main::$1 ← (byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) $50
|
||||
(byte*) main::print22_at#0 ← (byte*~) main::$1
|
||||
(byte*) main::print22_msg#0 ← (byte*) main::hello#1
|
||||
(byte*) main::print22_msg#0 ← (byte*) main::hello#0
|
||||
to:main::print22
|
||||
main::print22: scope:[main] from main::@1
|
||||
(byte*) main::print22_at#2 ← phi( main::@1/(byte*) main::print22_at#0 )
|
||||
@ -60,7 +55,6 @@ main::@return: scope:[main] from main::print22_@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte*) screen#3 ← phi( @begin/(byte*) screen#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -79,9 +73,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(byte*) main::hello#0
|
||||
(byte*) main::hello#1
|
||||
(byte*) main::hello#2
|
||||
(byte*) main::hello#3
|
||||
(label) main::print21
|
||||
(bool~) main::print21_$0
|
||||
(bool) main::print21_$0#0
|
||||
@ -124,42 +115,28 @@ SYMBOL TABLE SSA
|
||||
(byte*) main::print22_msg#2
|
||||
(byte*) screen
|
||||
(byte*) screen#0
|
||||
(byte*) screen#1
|
||||
(byte*) screen#2
|
||||
(byte*) screen#3
|
||||
(byte*) screen#4
|
||||
(byte*) screen#5
|
||||
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) main::print21_msg#0 = (byte*) main::hello#0 (byte*) main::print21_msg#2 (byte*) main::hello#3
|
||||
Alias (byte*) main::hello#0 = (byte*) main::print21_msg#0 (byte*) main::print21_msg#2 (byte*) main::print22_msg#0 (byte*) main::print22_msg#2
|
||||
Alias (byte*) main::print21_at#0 = (byte*) main::print21_at#2
|
||||
Alias (byte*) screen#1 = (byte*) screen#5
|
||||
Alias (byte*) screen#2 = (byte*) screen#4
|
||||
Alias (byte*) main::hello#1 = (byte*) main::hello#2 (byte*) main::print22_msg#0 (byte*) main::print22_msg#2
|
||||
Alias (byte*) main::print22_at#0 = (byte*~) main::$1 (byte*) main::print22_at#2
|
||||
Alias (byte*) screen#0 = (byte*) screen#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) main::print21_msg#1
|
||||
Self Phi Eliminated (byte*) main::print21_at#1
|
||||
Self Phi Eliminated (byte*) screen#2
|
||||
Self Phi Eliminated (byte*) main::hello#1
|
||||
Self Phi Eliminated (byte*) main::print22_msg#1
|
||||
Self Phi Eliminated (byte*) main::print22_at#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) screen#1 (byte*) screen#0
|
||||
Redundant Phi (byte*) main::print21_msg#1 (byte*) main::print21_msg#0
|
||||
Redundant Phi (byte*) main::print21_msg#1 (byte*) main::hello#0
|
||||
Redundant Phi (byte*) main::print21_at#1 (byte*) main::print21_at#0
|
||||
Redundant Phi (byte*) screen#2 (byte*) screen#1
|
||||
Redundant Phi (byte*) main::hello#1 (byte*) main::print21_msg#0
|
||||
Redundant Phi (byte*) main::print22_msg#1 (byte*) main::hello#1
|
||||
Redundant Phi (byte*) main::print22_msg#1 (byte*) main::hello#0
|
||||
Redundant Phi (byte*) main::print22_at#1 (byte*) main::print22_at#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool) main::print21_$0#0 [13] if(*((byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1
|
||||
Simple Condition (bool) main::print22_$0#0 [26] if(*((byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1
|
||||
Simple Condition (bool) main::print21_$0#0 [12] if(*((byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1
|
||||
Simple Condition (bool) main::print22_$0#0 [24] if(*((byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) screen#0 = ((byte*))$400
|
||||
Constant (const byte*) main::print21_msg#0 = main::$3
|
||||
Constant (const byte*) main::hello#0 = main::$3
|
||||
Constant (const byte) main::print21_j#0 = 0
|
||||
Constant (const byte) main::print21_i#0 = 0
|
||||
Constant (const byte) main::print22_j#0 = 0
|
||||
@ -175,7 +152,7 @@ Inlining constant with var siblings (const byte) main::print21_i#0
|
||||
Inlining constant with var siblings (const byte) main::print22_j#0
|
||||
Inlining constant with var siblings (const byte) main::print22_i#0
|
||||
Constant inlined main::print22_i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined main::$3 = (const byte*) main::print21_msg#0
|
||||
Constant inlined main::$3 = (const byte*) main::hello#0
|
||||
Constant inlined main::print21_at#0 = (const byte*) screen#0
|
||||
Constant inlined main::print21_i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
Constant inlined main::print22_j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
@ -226,10 +203,10 @@ main::print21: scope:[main] from main
|
||||
main::print21_@1: scope:[main] from main::print21 main::print21_@1
|
||||
[6] (byte) main::print21_j#2 ← phi( main::print21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print21_@1/(byte) main::print21_j#1 )
|
||||
[6] (byte) main::print21_i#2 ← phi( main::print21/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print21_@1/(byte) main::print21_i#1 )
|
||||
[7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2)
|
||||
[7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2)
|
||||
[8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2
|
||||
[10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1
|
||||
[10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1
|
||||
to:main::print22
|
||||
main::print22: scope:[main] from main::print21_@1
|
||||
[11] phi()
|
||||
@ -237,10 +214,10 @@ main::print22: scope:[main] from main::print21_@1
|
||||
main::print22_@1: scope:[main] from main::print22 main::print22_@1
|
||||
[12] (byte) main::print22_j#2 ← phi( main::print22/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print22_@1/(byte) main::print22_j#1 )
|
||||
[12] (byte) main::print22_i#2 ← phi( main::print22/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print22_@1/(byte) main::print22_i#1 )
|
||||
[13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2)
|
||||
[13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2)
|
||||
[14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2
|
||||
[16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1
|
||||
[16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::print22_@1
|
||||
[17] return
|
||||
@ -337,9 +314,9 @@ main: {
|
||||
jmp print21_b1
|
||||
//SEG19 main::print21_@1
|
||||
print21_b1:
|
||||
//SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||
//SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||
ldy print21_i
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
ldy print21_j
|
||||
sta screen,y
|
||||
//SEG21 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
|
||||
@ -349,9 +326,9 @@ main: {
|
||||
sta print21_j
|
||||
//SEG22 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuz1=_inc_vbuz1
|
||||
inc print21_i
|
||||
//SEG23 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
|
||||
//SEG23 [10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
|
||||
ldy print21_i
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print21_b1_from_print21_b1
|
||||
//SEG24 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22]
|
||||
@ -375,9 +352,9 @@ main: {
|
||||
jmp print22_b1
|
||||
//SEG32 main::print22_@1
|
||||
print22_b1:
|
||||
//SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||
//SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2
|
||||
ldy print22_i
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
ldy print22_j
|
||||
sta print22_at,y
|
||||
//SEG34 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuz1=vbuz1_plus_2
|
||||
@ -387,9 +364,9 @@ main: {
|
||||
sta print22_j
|
||||
//SEG35 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuz1=_inc_vbuz1
|
||||
inc print22_i
|
||||
//SEG36 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
|
||||
//SEG36 [16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1
|
||||
ldy print22_i
|
||||
lda print21_msg,y
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print22_b1_from_print22_b1
|
||||
jmp breturn
|
||||
@ -397,22 +374,22 @@ main: {
|
||||
breturn:
|
||||
//SEG38 [17] return
|
||||
rts
|
||||
print21_msg: .text "hello world!@"
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::print21_i#2 main::print21_i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::print21_j#2 main::print21_j#1 ]
|
||||
Statement [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 [ main::print21_i#1 main::print21_j#1 ] ( main:2 [ main::print21_i#1 main::print21_j#1 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a
|
||||
Statement [10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 [ main::print21_i#1 main::print21_j#1 ] ( main:2 [ main::print21_i#1 main::print21_j#1 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::print22_i#2 main::print22_i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::print22_j#2 main::print22_j#1 ]
|
||||
Statement [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 [ main::print22_i#1 main::print22_j#1 ] ( main:2 [ main::print22_i#1 main::print22_j#1 ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a
|
||||
Statement [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 [ main::print21_i#1 main::print21_j#1 ] ( main:2 [ main::print21_i#1 main::print21_j#1 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a
|
||||
Statement [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 [ main::print22_i#1 main::print22_j#1 ] ( main:2 [ main::print22_i#1 main::print22_j#1 ] ) always clobbers reg byte a
|
||||
Statement [16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 [ main::print22_i#1 main::print22_j#1 ] ( main:2 [ main::print22_i#1 main::print22_j#1 ] ) always clobbers reg byte a
|
||||
Statement [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2) [ main::print21_i#2 main::print21_j#2 ] ( main:2 [ main::print21_i#2 main::print21_j#2 ] ) always clobbers reg byte a
|
||||
Statement [10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 [ main::print21_i#1 main::print21_j#1 ] ( main:2 [ main::print21_i#1 main::print21_j#1 ] ) always clobbers reg byte a
|
||||
Statement [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2) [ main::print22_i#2 main::print22_j#2 ] ( main:2 [ main::print22_i#2 main::print22_j#2 ] ) always clobbers reg byte a
|
||||
Statement [16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 [ main::print22_i#1 main::print22_j#1 ] ( main:2 [ main::print22_i#1 main::print22_j#1 ] ) always clobbers reg byte a
|
||||
Potential registers zp ZP_BYTE:2 [ main::print21_i#2 main::print21_i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:3 [ main::print21_j#2 main::print21_j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp ZP_BYTE:4 [ main::print22_i#2 main::print22_i#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
|
||||
@ -471,16 +448,16 @@ main: {
|
||||
jmp print21_b1
|
||||
//SEG19 main::print21_@1
|
||||
print21_b1:
|
||||
//SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda print21_msg,y
|
||||
//SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda hello,y
|
||||
sta screen,x
|
||||
//SEG21 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2
|
||||
inx
|
||||
inx
|
||||
//SEG22 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG23 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda print21_msg,y
|
||||
//SEG23 [10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print21_b1_from_print21_b1
|
||||
//SEG24 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22]
|
||||
@ -502,16 +479,16 @@ main: {
|
||||
jmp print22_b1
|
||||
//SEG32 main::print22_@1
|
||||
print22_b1:
|
||||
//SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda print21_msg,y
|
||||
//SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda hello,y
|
||||
sta print22_at,x
|
||||
//SEG34 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2
|
||||
inx
|
||||
inx
|
||||
//SEG35 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG36 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda print21_msg,y
|
||||
//SEG36 [16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print22_b1_from_print22_b1
|
||||
jmp breturn
|
||||
@ -519,7 +496,7 @@ main: {
|
||||
breturn:
|
||||
//SEG38 [17] return
|
||||
rts
|
||||
print21_msg: .text "hello world!@"
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
|
||||
ASSEMBLER OPTIMIZATIONS
|
||||
@ -565,6 +542,7 @@ FINAL SYMBOL TABLE
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(const byte*) main::hello#0 hello = (string) "hello world!@"
|
||||
(label) main::print21
|
||||
(bool~) main::print21_$0
|
||||
(label) main::print21_@1
|
||||
@ -576,7 +554,6 @@ FINAL SYMBOL TABLE
|
||||
(byte) main::print21_j#1 reg byte x 7.333333333333333
|
||||
(byte) main::print21_j#2 reg byte x 16.5
|
||||
(byte*) main::print21_msg
|
||||
(const byte*) main::print21_msg#0 print21_msg = (string) "hello world!@"
|
||||
(label) main::print22
|
||||
(bool~) main::print22_$0
|
||||
(label) main::print22_@1
|
||||
@ -630,16 +607,16 @@ main: {
|
||||
//SEG18 [6] phi (byte) main::print21_i#2 = (byte) main::print21_i#1 [phi:main::print21_@1->main::print21_@1#1] -- register_copy
|
||||
//SEG19 main::print21_@1
|
||||
print21_b1:
|
||||
//SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda print21_msg,y
|
||||
//SEG20 [7] *((const byte*) screen#0 + (byte) main::print21_j#2) ← *((const byte*) main::hello#0 + (byte) main::print21_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda hello,y
|
||||
sta screen,x
|
||||
//SEG21 [8] (byte) main::print21_j#1 ← (byte) main::print21_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2
|
||||
inx
|
||||
inx
|
||||
//SEG22 [9] (byte) main::print21_i#1 ← ++ (byte) main::print21_i#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG23 [10] if(*((const byte*) main::print21_msg#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda print21_msg,y
|
||||
//SEG23 [10] if(*((const byte*) main::hello#0 + (byte) main::print21_i#1)!=(byte) '@') goto main::print21_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print21_b1
|
||||
//SEG24 [11] phi from main::print21_@1 to main::print22 [phi:main::print21_@1->main::print22]
|
||||
@ -654,21 +631,21 @@ main: {
|
||||
//SEG31 [12] phi (byte) main::print22_i#2 = (byte) main::print22_i#1 [phi:main::print22_@1->main::print22_@1#1] -- register_copy
|
||||
//SEG32 main::print22_@1
|
||||
print22_b1:
|
||||
//SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::print21_msg#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda print21_msg,y
|
||||
//SEG33 [13] *((const byte*) main::print22_at#0 + (byte) main::print22_j#2) ← *((const byte*) main::hello#0 + (byte) main::print22_i#2) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy
|
||||
lda hello,y
|
||||
sta print22_at,x
|
||||
//SEG34 [14] (byte) main::print22_j#1 ← (byte) main::print22_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 -- vbuxx=vbuxx_plus_2
|
||||
inx
|
||||
inx
|
||||
//SEG35 [15] (byte) main::print22_i#1 ← ++ (byte) main::print22_i#2 -- vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//SEG36 [16] if(*((const byte*) main::print21_msg#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda print21_msg,y
|
||||
//SEG36 [16] if(*((const byte*) main::hello#0 + (byte) main::print22_i#1)!=(byte) '@') goto main::print22_@1 -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print22_b1
|
||||
//SEG37 main::@return
|
||||
//SEG38 [17] return
|
||||
rts
|
||||
print21_msg: .text "hello world!@"
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(const byte*) main::hello#0 hello = (string) "hello world!@"
|
||||
(label) main::print21
|
||||
(bool~) main::print21_$0
|
||||
(label) main::print21_@1
|
||||
@ -15,7 +16,6 @@
|
||||
(byte) main::print21_j#1 reg byte x 7.333333333333333
|
||||
(byte) main::print21_j#2 reg byte x 16.5
|
||||
(byte*) main::print21_msg
|
||||
(const byte*) main::print21_msg#0 print21_msg = (string) "hello world!@"
|
||||
(label) main::print22
|
||||
(bool~) main::print22_$0
|
||||
(label) main::print22_@1
|
||||
|
@ -1,21 +1,20 @@
|
||||
Identified constant variable (byte*) screen
|
||||
Identified constant variable (byte*) main::hello
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen#1 ← phi( @2/(byte*) screen#3 )
|
||||
(byte*) main::hello#0 ← (const string) main::$3
|
||||
(byte*) print2::at#0 ← (byte*) screen#1
|
||||
(byte*) print2::at#0 ← (byte*) screen#0
|
||||
(byte*) print2::msg#0 ← (byte*) main::hello#0
|
||||
call print2
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main
|
||||
(byte*) main::hello#1 ← phi( main/(byte*) main::hello#0 )
|
||||
(byte*) screen#2 ← phi( main/(byte*) screen#1 )
|
||||
(byte*~) main::$1 ← (byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) $50
|
||||
(byte*~) main::$1 ← (byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) $50
|
||||
(byte*) print2::at#1 ← (byte*~) main::$1
|
||||
(byte*) print2::msg#1 ← (byte*) main::hello#1
|
||||
(byte*) print2::msg#1 ← (byte*) main::hello#0
|
||||
call print2
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1
|
||||
@ -44,7 +43,6 @@ print2::@return: scope:[print2] from print2::@1
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte*) screen#3 ← phi( @begin/(byte*) screen#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -64,7 +62,6 @@ SYMBOL TABLE SSA
|
||||
(label) main::@return
|
||||
(byte*) main::hello
|
||||
(byte*) main::hello#0
|
||||
(byte*) main::hello#1
|
||||
(void()) print2((byte*) print2::at , (byte*) print2::msg)
|
||||
(bool~) print2::$0
|
||||
(label) print2::@1
|
||||
@ -89,26 +86,19 @@ SYMBOL TABLE SSA
|
||||
(byte*) print2::msg#3
|
||||
(byte*) screen
|
||||
(byte*) screen#0
|
||||
(byte*) screen#1
|
||||
(byte*) screen#2
|
||||
(byte*) screen#3
|
||||
|
||||
Culled Empty Block (label) main::@2
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) screen#1 = (byte*) screen#2
|
||||
Alias (byte*) main::hello#0 = (byte*) main::hello#1
|
||||
Alias (byte*) print2::at#1 = (byte*~) main::$1
|
||||
Alias (byte*) screen#0 = (byte*) screen#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) print2::msg#2
|
||||
Self Phi Eliminated (byte*) print2::at#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) screen#1 (byte*) screen#0
|
||||
Redundant Phi (byte*) print2::msg#2 (byte*) print2::msg#3
|
||||
Redundant Phi (byte*) print2::at#2 (byte*) print2::at#3
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) print2::$0 [20] if(*((byte*) print2::msg#3 + (byte) print2::i#1)!=(byte) '@') goto print2::@1
|
||||
Simple Condition (bool~) print2::$0 [18] if(*((byte*) print2::msg#3 + (byte) print2::i#1)!=(byte) '@') goto print2::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) screen#0 = ((byte*))$400
|
||||
Constant (const byte*) main::hello#0 = main::$3
|
||||
|
@ -1,36 +1,32 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN#3 ← phi( @1/(byte*) SCREEN#5 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@2
|
||||
(byte*) SCREEN#2 ← phi( main/(byte*) SCREEN#3 main::@2/(byte*) SCREEN#4 )
|
||||
(byte) main::i#2 ← phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
|
||||
(bool~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
(bool~) main::$1 ← ! (bool~) main::$0
|
||||
if((bool~) main::$1) goto main::@2
|
||||
to:main::@3
|
||||
main::@2: scope:[main] from main::@1 main::@3
|
||||
(byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#2 main::@3/(byte*) SCREEN#1 )
|
||||
(byte) main::i#3 ← phi( main::@1/(byte) main::i#2 main::@3/(byte) main::i#4 )
|
||||
(byte) main::i#1 ← ++ (byte) main::i#3
|
||||
(bool~) main::$2 ← (byte) main::i#1 < (byte/signed byte/word/signed word/dword/signed dword) $64
|
||||
if((bool~) main::$2) goto main::@1
|
||||
to:main::@return
|
||||
main::@3: scope:[main] from main::@1
|
||||
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#2 )
|
||||
(byte) main::i#4 ← phi( main::@1/(byte) main::i#2 )
|
||||
*((byte*) SCREEN#1) ← (byte) main::i#4
|
||||
*((byte*) SCREEN#0) ← (byte) main::i#4
|
||||
to:main::@2
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#5 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -44,11 +40,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -66,22 +57,14 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [5] (bool~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word/dword/signed dword) $32 from [4] (bool~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
Inversing boolean not [4] (bool~) main::$1 ← (byte) main::i#2 >= (byte/signed byte/word/signed word/dword/signed dword) $32 from [3] (bool~) main::$0 ← (byte) main::i#2 < (byte/signed byte/word/signed word/dword/signed dword) $32
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) main::i#2 = (byte) main::i#4
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#4
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#3 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#3
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [6] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) $32) goto main::@2
|
||||
Simple Condition (bool~) main::$2 [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $64) goto main::@1
|
||||
Simple Condition (bool~) main::$1 [5] if((byte) main::i#2>=(byte/signed byte/word/signed word/dword/signed dword) $32) goto main::@2
|
||||
Simple Condition (bool~) main::$2 [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) $64) goto main::@1
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::i#0 = 0
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) main::screen
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,22 +1,20 @@
|
||||
Identified constant variable (byte*) BGCOL
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) BGCOL#0 ← ((byte*)) (word/dword/signed dword) $d020
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) BGCOL#2 ← phi( @1/(byte*) BGCOL#3 )
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@1
|
||||
(byte*) BGCOL#1 ← phi( main/(byte*) BGCOL#2 main::@1/(byte*) BGCOL#1 )
|
||||
*((byte*) BGCOL#1) ← ++ *((byte*) BGCOL#1)
|
||||
*((byte*) BGCOL#1) ← -- *((byte*) BGCOL#1)
|
||||
*((byte*) BGCOL#0) ← ++ *((byte*) BGCOL#0)
|
||||
*((byte*) BGCOL#0) ← -- *((byte*) BGCOL#0)
|
||||
if(true) goto main::@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) BGCOL#3 ← phi( @begin/(byte*) BGCOL#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -30,22 +28,12 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) BGCOL
|
||||
(byte*) BGCOL#0
|
||||
(byte*) BGCOL#1
|
||||
(byte*) BGCOL#2
|
||||
(byte*) BGCOL#3
|
||||
(void()) main()
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte*) BGCOL#0 = (byte*) BGCOL#3
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) BGCOL#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) BGCOL#2 (byte*) BGCOL#0
|
||||
Redundant Phi (byte*) BGCOL#1 (byte*) BGCOL#2
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) BGCOL#0 = ((byte*))$d020
|
||||
Successful SSA optimization Pass2ConstantIdentification
|
||||
if() condition always true - replacing block destination [2] if(true) goto main::@1
|
||||
|
@ -1,23 +1,21 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN#7 ← phi( @1/(byte*) SCREEN#8 )
|
||||
(byte) main::min#0 ← (byte/word/signed word/dword/signed dword) $ff
|
||||
(byte) main::max#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
(byte) main::pos#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
(byte*) SCREEN#6 ← phi( main/(byte*) SCREEN#7 main::@5/(byte*) SCREEN#1 )
|
||||
(byte) main::max#6 ← phi( main/(byte) main::max#0 main::@5/(byte) main::max#3 )
|
||||
(byte) main::min#4 ← phi( main/(byte) main::min#0 main::@5/(byte) main::min#3 )
|
||||
(byte) main::pos#7 ← phi( main/(byte) main::pos#0 main::@5/(byte) main::pos#5 )
|
||||
if(true) goto main::@2
|
||||
to:main::@return
|
||||
main::@2: scope:[main] from main::@1
|
||||
(byte*) SCREEN#4 ← phi( main::@1/(byte*) SCREEN#6 )
|
||||
(byte) main::max#4 ← phi( main::@1/(byte) main::max#6 )
|
||||
(byte) main::min#2 ← phi( main::@1/(byte) main::min#4 )
|
||||
(byte) main::pos#2 ← phi( main::@1/(byte) main::pos#7 )
|
||||
@ -27,7 +25,6 @@ main::@2: scope:[main] from main::@1
|
||||
if((bool~) main::$1) goto main::@4
|
||||
to:main::@8
|
||||
main::@4: scope:[main] from main::@2 main::@8
|
||||
(byte*) SCREEN#2 ← phi( main::@2/(byte*) SCREEN#4 main::@8/(byte*) SCREEN#5 )
|
||||
(byte) main::min#5 ← phi( main::@2/(byte) main::min#2 main::@8/(byte) main::min#1 )
|
||||
(byte) main::max#2 ← phi( main::@2/(byte) main::max#4 main::@8/(byte) main::max#5 )
|
||||
(byte) main::pos#3 ← phi( main::@2/(byte) main::pos#1 main::@8/(byte) main::pos#4 )
|
||||
@ -36,7 +33,6 @@ main::@4: scope:[main] from main::@2 main::@8
|
||||
if((bool~) main::$3) goto main::@5
|
||||
to:main::@9
|
||||
main::@8: scope:[main] from main::@2
|
||||
(byte*) SCREEN#5 ← phi( main::@2/(byte*) SCREEN#4 )
|
||||
(byte) main::max#5 ← phi( main::@2/(byte) main::max#4 )
|
||||
(byte) main::pos#4 ← phi( main::@2/(byte) main::pos#1 )
|
||||
(byte) main::min#1 ← (byte) main::pos#4
|
||||
@ -44,14 +40,12 @@ main::@8: scope:[main] from main::@2
|
||||
main::@5: scope:[main] from main::@4 main::@9
|
||||
(byte) main::pos#5 ← phi( main::@4/(byte) main::pos#3 main::@9/(byte) main::pos#6 )
|
||||
(byte) main::max#3 ← phi( main::@4/(byte) main::max#2 main::@9/(byte) main::max#1 )
|
||||
(byte*) SCREEN#1 ← phi( main::@4/(byte*) SCREEN#2 main::@9/(byte*) SCREEN#3 )
|
||||
(byte) main::min#3 ← phi( main::@4/(byte) main::min#5 main::@9/(byte) main::min#6 )
|
||||
*((byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::min#3
|
||||
*((byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3
|
||||
*((byte*) SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#5
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) main::min#3
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) main::max#3
|
||||
*((byte*) SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte) main::pos#5
|
||||
to:main::@1
|
||||
main::@9: scope:[main] from main::@4
|
||||
(byte*) SCREEN#3 ← phi( main::@4/(byte*) SCREEN#2 )
|
||||
(byte) main::min#6 ← phi( main::@4/(byte) main::min#5 )
|
||||
(byte) main::pos#6 ← phi( main::@4/(byte) main::pos#3 )
|
||||
(byte) main::max#1 ← (byte) main::pos#6
|
||||
@ -60,7 +54,6 @@ main::@return: scope:[main] from main::@1
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#8 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -74,14 +67,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -122,35 +107,27 @@ SYMBOL TABLE SSA
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Inversing boolean not [10] (bool~) main::$1 ← (byte) main::pos#1 >= (byte) main::min#2 from [9] (bool~) main::$0 ← (byte) main::pos#1 < (byte) main::min#2
|
||||
Inversing boolean not [14] (bool~) main::$3 ← (byte) main::pos#3 <= (byte) main::max#2 from [13] (bool~) main::$2 ← (byte) main::pos#3 > (byte) main::max#2
|
||||
Inversing boolean not [9] (bool~) main::$1 ← (byte) main::pos#1 >= (byte) main::min#2 from [8] (bool~) main::$0 ← (byte) main::pos#1 < (byte) main::min#2
|
||||
Inversing boolean not [13] (bool~) main::$3 ← (byte) main::pos#3 <= (byte) main::max#2 from [12] (bool~) main::$2 ← (byte) main::pos#3 > (byte) main::max#2
|
||||
Successful SSA optimization Pass2UnaryNotSimplification
|
||||
Alias (byte) main::pos#2 = (byte) main::pos#7
|
||||
Alias (byte) main::min#2 = (byte) main::min#4
|
||||
Alias (byte) main::max#4 = (byte) main::max#6 (byte) main::max#5
|
||||
Alias (byte*) SCREEN#4 = (byte*) SCREEN#6 (byte*) SCREEN#5
|
||||
Alias (byte) main::pos#1 = (byte) main::pos#4 (byte) main::min#1
|
||||
Alias (byte) main::pos#3 = (byte) main::pos#6 (byte) main::max#1
|
||||
Alias (byte) main::min#5 = (byte) main::min#6
|
||||
Alias (byte*) SCREEN#2 = (byte*) SCREEN#3
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#8
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias candidate removed (phi-usage) (byte) main::pos#1
|
||||
Alias (byte) main::pos#3 = (byte) main::pos#5
|
||||
Alias (byte) main::max#2 = (byte) main::max#4
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#2 (byte*) SCREEN#4
|
||||
Alias (byte) main::min#3 = (byte) main::min#5
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias candidate removed (phi-usage) (byte) main::pos#1
|
||||
Alias candidate removed (solo) (byte) main::pos#3 =
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#7 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#7
|
||||
Redundant Phi (byte) main::pos#3 (byte) main::pos#1
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$1 [11] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4
|
||||
Simple Condition (bool~) main::$3 [15] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5
|
||||
Simple Condition (bool~) main::$1 [10] if((byte) main::pos#1>=(byte) main::min#2) goto main::@4
|
||||
Simple Condition (bool~) main::$3 [14] if((byte) main::pos#1<=(byte) main::max#2) goto main::@5
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::min#0 = $ff
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,54 +1,47 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
(byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@1
|
||||
main: scope:[main] from @1
|
||||
(byte*) SCREEN#5 ← phi( @1/(byte*) SCREEN#9 )
|
||||
(byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main main::@5
|
||||
(byte) main::i#4 ← phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 )
|
||||
(byte*) SCREEN#3 ← phi( main/(byte*) SCREEN#5 main::@5/(byte*) SCREEN#6 )
|
||||
(byte) main::j#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::@1 main::@2
|
||||
(byte) main::i#2 ← phi( main::@1/(byte) main::i#4 main::@2/(byte) main::i#2 )
|
||||
(byte*) SCREEN#1 ← phi( main::@1/(byte*) SCREEN#3 main::@2/(byte*) SCREEN#1 )
|
||||
(byte) main::j#2 ← phi( main::@1/(byte) main::j#0 main::@2/(byte) main::j#1 )
|
||||
*((byte*) SCREEN#1 + (byte) main::i#2) ← (byte) main::j#2
|
||||
*((byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::j#2
|
||||
(byte) main::j#1 ← (byte) main::j#2 + rangenext(0,$64)
|
||||
(bool~) main::$0 ← (byte) main::j#1 != rangelast(0,$64)
|
||||
if((bool~) main::$0) goto main::@2
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@2
|
||||
(byte*) SCREEN#6 ← phi( main::@2/(byte*) SCREEN#1 )
|
||||
(byte) main::i#3 ← phi( main::@2/(byte) main::i#2 )
|
||||
(byte) main::i#1 ← (byte) main::i#3 + rangenext(0,$64)
|
||||
(bool~) main::$1 ← (byte) main::i#1 != rangelast(0,$64)
|
||||
if((bool~) main::$1) goto main::@1
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
(byte*) SCREEN#7 ← phi( main::@5/(byte*) SCREEN#6 )
|
||||
(byte) main::k#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::@6 main::@7
|
||||
(byte) main::k#4 ← phi( main::@6/(byte) main::k#0 main::@7/(byte) main::k#1 )
|
||||
(byte*) SCREEN#4 ← phi( main::@6/(byte*) SCREEN#7 main::@7/(byte*) SCREEN#8 )
|
||||
(byte) main::l#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@3 main::@4
|
||||
(byte) main::k#2 ← phi( main::@3/(byte) main::k#4 main::@4/(byte) main::k#2 )
|
||||
(byte*) SCREEN#2 ← phi( main::@3/(byte*) SCREEN#4 main::@4/(byte*) SCREEN#2 )
|
||||
(byte) main::l#2 ← phi( main::@3/(byte) main::l#0 main::@4/(byte) main::l#1 )
|
||||
asm { eor#$55 tax }
|
||||
*((byte*) SCREEN#2 + (byte) main::k#2) ← (byte) main::l#2
|
||||
*((byte*) SCREEN#0 + (byte) main::k#2) ← (byte) main::l#2
|
||||
(byte) main::l#1 ← (byte) main::l#2 + rangenext(0,$64)
|
||||
(bool~) main::$2 ← (byte) main::l#1 != rangelast(0,$64)
|
||||
if((bool~) main::$2) goto main::@4
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@4
|
||||
(byte*) SCREEN#8 ← phi( main::@4/(byte*) SCREEN#2 )
|
||||
(byte) main::k#3 ← phi( main::@4/(byte) main::k#2 )
|
||||
(byte) main::k#1 ← (byte) main::k#3 + rangenext(0,$64)
|
||||
(bool~) main::$3 ← (byte) main::k#1 != rangelast(0,$64)
|
||||
@ -58,7 +51,6 @@ main::@return: scope:[main] from main::@7
|
||||
return
|
||||
to:@return
|
||||
@1: scope:[] from @begin
|
||||
(byte*) SCREEN#9 ← phi( @begin/(byte*) SCREEN#0 )
|
||||
call main
|
||||
to:@2
|
||||
@2: scope:[] from @1
|
||||
@ -72,15 +64,6 @@ SYMBOL TABLE SSA
|
||||
(label) @end
|
||||
(byte*) SCREEN
|
||||
(byte*) SCREEN#0
|
||||
(byte*) SCREEN#1
|
||||
(byte*) SCREEN#2
|
||||
(byte*) SCREEN#3
|
||||
(byte*) SCREEN#4
|
||||
(byte*) SCREEN#5
|
||||
(byte*) SCREEN#6
|
||||
(byte*) SCREEN#7
|
||||
(byte*) SCREEN#8
|
||||
(byte*) SCREEN#9
|
||||
(void()) main()
|
||||
(bool~) main::$0
|
||||
(bool~) main::$1
|
||||
@ -118,26 +101,18 @@ SYMBOL TABLE SSA
|
||||
Culled Empty Block (label) @2
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::i#2 = (byte) main::i#3
|
||||
Alias (byte*) SCREEN#1 = (byte*) SCREEN#6 (byte*) SCREEN#7
|
||||
Alias (byte) main::k#2 = (byte) main::k#3
|
||||
Alias (byte*) SCREEN#2 = (byte*) SCREEN#8
|
||||
Alias (byte*) SCREEN#0 = (byte*) SCREEN#9
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Self Phi Eliminated (byte*) SCREEN#1
|
||||
Self Phi Eliminated (byte) main::i#2
|
||||
Self Phi Eliminated (byte*) SCREEN#2
|
||||
Self Phi Eliminated (byte) main::k#2
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#5 (byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#3
|
||||
Redundant Phi (byte) main::i#2 (byte) main::i#4
|
||||
Redundant Phi (byte*) SCREEN#2 (byte*) SCREEN#4
|
||||
Redundant Phi (byte) main::k#2 (byte) main::k#4
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Simple Condition (bool~) main::$0 [9] if((byte) main::j#1!=rangelast(0,$64)) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [13] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [23] if((byte) main::l#1!=rangelast(0,$64)) goto main::@4
|
||||
Simple Condition (bool~) main::$3 [27] if((byte) main::k#1!=rangelast(0,$64)) goto main::@3
|
||||
Simple Condition (bool~) main::$0 [8] if((byte) main::j#1!=rangelast(0,$64)) goto main::@2
|
||||
Simple Condition (bool~) main::$1 [12] if((byte) main::i#1!=rangelast(0,$64)) goto main::@1
|
||||
Simple Condition (bool~) main::$2 [21] if((byte) main::l#1!=rangelast(0,$64)) goto main::@4
|
||||
Simple Condition (bool~) main::$3 [25] if((byte) main::k#1!=rangelast(0,$64)) goto main::@3
|
||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||
Constant (const byte*) SCREEN#0 = ((byte*))$400
|
||||
Constant (const byte) main::i#0 = 0
|
||||
@ -155,12 +130,6 @@ Resolved ranged next value main::k#1 ← ++ main::k#4 to ++
|
||||
Resolved ranged comparison value if(main::k#1!=rangelast(0,$64)) goto main::@3 to (byte/signed byte/word/signed word/dword/signed dword) $65
|
||||
Culled Empty Block (label) main::@6
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Self Phi Eliminated (byte*) SCREEN#3
|
||||
Self Phi Eliminated (byte*) SCREEN#4
|
||||
Successful SSA optimization Pass2SelfPhiElimination
|
||||
Redundant Phi (byte*) SCREEN#3 (const byte*) SCREEN#0
|
||||
Redundant Phi (byte*) SCREEN#4 (byte*) SCREEN#3
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Inlining constant with var siblings (const byte) main::i#0
|
||||
Inlining constant with var siblings (const byte) main::j#0
|
||||
Inlining constant with var siblings (const byte) main::k#0
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) SCREEN
|
||||
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@begin: scope:[] from
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) screen
|
||||
Inlined call (byte~) main::$0 ← call toUpper (byte) 'c' true
|
||||
Inlined call (byte~) main::$1 ← call toUpper (byte) 'm' false
|
||||
|
||||
@ -6,12 +7,10 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen#11 ← phi( @2/(byte*) screen#12 )
|
||||
(byte) main::toUpper1_ch#0 ← (byte) 'c'
|
||||
(bool) main::toUpper1_bo#0 ← true
|
||||
to:main::toUpper1
|
||||
main::toUpper1: scope:[main] from main
|
||||
(byte*) screen#7 ← phi( main/(byte*) screen#11 )
|
||||
(bool) main::toUpper1_bo#1 ← phi( main/(bool) main::toUpper1_bo#0 )
|
||||
(byte) main::toUpper1_ch#1 ← phi( main/(byte) main::toUpper1_ch#0 )
|
||||
(byte) main::toUpper1_res#0 ← (byte) main::toUpper1_ch#1
|
||||
@ -19,30 +18,25 @@ main::toUpper1: scope:[main] from main
|
||||
if((bool) main::toUpper1_$0#0) goto main::toUpper1_@1
|
||||
to:main::toUpper1_@2
|
||||
main::toUpper1_@1: scope:[main] from main::toUpper1 main::toUpper1_@2
|
||||
(byte*) screen#5 ← phi( main::toUpper1/(byte*) screen#7 main::toUpper1_@2/(byte*) screen#8 )
|
||||
(byte) main::toUpper1_res#2 ← phi( main::toUpper1/(byte) main::toUpper1_res#0 main::toUpper1_@2/(byte) main::toUpper1_res#1 )
|
||||
(byte) main::toUpper1_return#0 ← (byte) main::toUpper1_res#2
|
||||
to:main::toUpper1_@return
|
||||
main::toUpper1_@2: scope:[main] from main::toUpper1
|
||||
(byte*) screen#8 ← phi( main::toUpper1/(byte*) screen#7 )
|
||||
(byte) main::toUpper1_res#3 ← phi( main::toUpper1/(byte) main::toUpper1_res#0 )
|
||||
(byte) main::toUpper1_res#1 ← (byte) main::toUpper1_res#3 + (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
to:main::toUpper1_@1
|
||||
main::toUpper1_@return: scope:[main] from main::toUpper1_@1
|
||||
(byte*) screen#3 ← phi( main::toUpper1_@1/(byte*) screen#5 )
|
||||
(byte) main::toUpper1_return#2 ← phi( main::toUpper1_@1/(byte) main::toUpper1_return#0 )
|
||||
(byte) main::toUpper1_return#1 ← (byte) main::toUpper1_return#2
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::toUpper1_@return
|
||||
(byte*) screen#1 ← phi( main::toUpper1_@return/(byte*) screen#3 )
|
||||
(byte) main::toUpper1_return#3 ← phi( main::toUpper1_@return/(byte) main::toUpper1_return#1 )
|
||||
(byte~) main::$0 ← (byte) main::toUpper1_return#3
|
||||
*((byte*) screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
*((byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
(byte) main::toUpper2_ch#0 ← (byte) 'm'
|
||||
(bool) main::toUpper2_bo#0 ← false
|
||||
to:main::toUpper2
|
||||
main::toUpper2: scope:[main] from main::@1
|
||||
(byte*) screen#9 ← phi( main::@1/(byte*) screen#1 )
|
||||
(bool) main::toUpper2_bo#1 ← phi( main::@1/(bool) main::toUpper2_bo#0 )
|
||||
(byte) main::toUpper2_ch#1 ← phi( main::@1/(byte) main::toUpper2_ch#0 )
|
||||
(byte) main::toUpper2_res#0 ← (byte) main::toUpper2_ch#1
|
||||
@ -50,31 +44,26 @@ main::toUpper2: scope:[main] from main::@1
|
||||
if((bool) main::toUpper2_$0#0) goto main::toUpper2_@1
|
||||
to:main::toUpper2_@2
|
||||
main::toUpper2_@1: scope:[main] from main::toUpper2 main::toUpper2_@2
|
||||
(byte*) screen#6 ← phi( main::toUpper2/(byte*) screen#9 main::toUpper2_@2/(byte*) screen#10 )
|
||||
(byte) main::toUpper2_res#2 ← phi( main::toUpper2/(byte) main::toUpper2_res#0 main::toUpper2_@2/(byte) main::toUpper2_res#1 )
|
||||
(byte) main::toUpper2_return#0 ← (byte) main::toUpper2_res#2
|
||||
to:main::toUpper2_@return
|
||||
main::toUpper2_@2: scope:[main] from main::toUpper2
|
||||
(byte*) screen#10 ← phi( main::toUpper2/(byte*) screen#9 )
|
||||
(byte) main::toUpper2_res#3 ← phi( main::toUpper2/(byte) main::toUpper2_res#0 )
|
||||
(byte) main::toUpper2_res#1 ← (byte) main::toUpper2_res#3 + (byte/signed byte/word/signed word/dword/signed dword) $40
|
||||
to:main::toUpper2_@1
|
||||
main::toUpper2_@return: scope:[main] from main::toUpper2_@1
|
||||
(byte*) screen#4 ← phi( main::toUpper2_@1/(byte*) screen#6 )
|
||||
(byte) main::toUpper2_return#2 ← phi( main::toUpper2_@1/(byte) main::toUpper2_return#0 )
|
||||
(byte) main::toUpper2_return#1 ← (byte) main::toUpper2_return#2
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::toUpper2_@return
|
||||
(byte*) screen#2 ← phi( main::toUpper2_@return/(byte*) screen#4 )
|
||||
(byte) main::toUpper2_return#3 ← phi( main::toUpper2_@return/(byte) main::toUpper2_return#1 )
|
||||
(byte~) main::$1 ← (byte) main::toUpper2_return#3
|
||||
*((byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
*((byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@2
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte*) screen#12 ← phi( @begin/(byte*) screen#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -138,39 +127,19 @@ SYMBOL TABLE SSA
|
||||
(byte) main::toUpper2_return#3
|
||||
(byte*) screen
|
||||
(byte*) screen#0
|
||||
(byte*) screen#1
|
||||
(byte*) screen#10
|
||||
(byte*) screen#11
|
||||
(byte*) screen#12
|
||||
(byte*) screen#2
|
||||
(byte*) screen#3
|
||||
(byte*) screen#4
|
||||
(byte*) screen#5
|
||||
(byte*) screen#6
|
||||
(byte*) screen#7
|
||||
(byte*) screen#8
|
||||
(byte*) screen#9
|
||||
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::toUpper1_ch#0 = (byte) main::toUpper1_ch#1 (byte) main::toUpper1_res#0 (byte) main::toUpper1_res#3
|
||||
Alias (bool) main::toUpper1_bo#0 = (bool) main::toUpper1_bo#1
|
||||
Alias (byte*) screen#11 = (byte*) screen#7 (byte*) screen#8
|
||||
Alias (byte) main::toUpper1_return#0 = (byte) main::toUpper1_res#2 (byte) main::toUpper1_return#2 (byte) main::toUpper1_return#1 (byte) main::toUpper1_return#3 (byte~) main::$0
|
||||
Alias (byte*) screen#1 = (byte*) screen#3 (byte*) screen#5 (byte*) screen#9 (byte*) screen#10
|
||||
Alias (byte) main::toUpper2_ch#0 = (byte) main::toUpper2_ch#1 (byte) main::toUpper2_res#0 (byte) main::toUpper2_res#3
|
||||
Alias (bool) main::toUpper2_bo#0 = (bool) main::toUpper2_bo#1
|
||||
Alias (byte) main::toUpper2_return#0 = (byte) main::toUpper2_res#2 (byte) main::toUpper2_return#2 (byte) main::toUpper2_return#1 (byte) main::toUpper2_return#3 (byte~) main::$1
|
||||
Alias (byte*) screen#2 = (byte*) screen#4 (byte*) screen#6
|
||||
Alias (byte*) screen#0 = (byte*) screen#12
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Alias (byte*) screen#1 = (byte*) screen#11 (byte*) screen#2
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte*) screen#1 (byte*) screen#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Rewriting ! if()-condition to reversed if() [6] (bool) main::toUpper1_$0#0 ← ! (bool) main::toUpper1_bo#0
|
||||
Rewriting ! if()-condition to reversed if() [5] (bool) main::toUpper1_$0#0 ← ! (bool) main::toUpper1_bo#0
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Rewriting ! if()-condition to reversed if() [21] (bool) main::toUpper2_$0#0 ← ! (bool) main::toUpper2_bo#0
|
||||
Rewriting ! if()-condition to reversed if() [20] (bool) main::toUpper2_$0#0 ← ! (bool) main::toUpper2_bo#0
|
||||
Successful SSA optimization Pass2ConditionalAndOrRewriting
|
||||
Constant (const byte*) screen#0 = ((byte*))$400
|
||||
Constant (const byte) main::toUpper1_ch#0 = 'c'
|
||||
|
@ -1,3 +1,4 @@
|
||||
Identified constant variable (byte*) screen
|
||||
Inlined call (byte~) main::$0 ← call sum (byte/signed byte/word/signed word/dword/signed dword) 2 (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
Inlined call (byte~) main::$1 ← call sum (byte/signed byte/word/signed word/dword/signed dword) $a (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
Inlined call (byte~) main::$2 ← call sum (byte/signed byte/word/signed word/dword/signed dword) 4 (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
@ -7,73 +8,62 @@ CONTROL FLOW GRAPH SSA
|
||||
(byte*) screen#0 ← ((byte*)) (word/signed word/dword/signed dword) $400
|
||||
to:@2
|
||||
main: scope:[main] from @2
|
||||
(byte*) screen#10 ← phi( @2/(byte*) screen#11 )
|
||||
(byte) main::sum1_a#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
(byte) main::sum1_b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:main::sum1
|
||||
main::sum1: scope:[main] from main
|
||||
(byte*) screen#7 ← phi( main/(byte*) screen#10 )
|
||||
(byte) main::sum1_b#1 ← phi( main/(byte) main::sum1_b#0 )
|
||||
(byte) main::sum1_a#1 ← phi( main/(byte) main::sum1_a#0 )
|
||||
(byte) main::sum1_$0#0 ← (byte) main::sum1_a#1 + (byte) main::sum1_b#1
|
||||
(byte) main::sum1_return#0 ← (byte) main::sum1_$0#0
|
||||
to:main::sum1_@return
|
||||
main::sum1_@return: scope:[main] from main::sum1
|
||||
(byte*) screen#4 ← phi( main::sum1/(byte*) screen#7 )
|
||||
(byte) main::sum1_return#2 ← phi( main::sum1/(byte) main::sum1_return#0 )
|
||||
(byte) main::sum1_return#1 ← (byte) main::sum1_return#2
|
||||
to:main::@1
|
||||
main::@1: scope:[main] from main::sum1_@return
|
||||
(byte*) screen#1 ← phi( main::sum1_@return/(byte*) screen#4 )
|
||||
(byte) main::sum1_return#3 ← phi( main::sum1_@return/(byte) main::sum1_return#1 )
|
||||
(byte~) main::$0 ← (byte) main::sum1_return#3
|
||||
*((byte*) screen#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
*((byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0
|
||||
(byte) main::sum2_a#0 ← (byte/signed byte/word/signed word/dword/signed dword) $a
|
||||
(byte) main::sum2_b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
to:main::sum2
|
||||
main::sum2: scope:[main] from main::@1
|
||||
(byte*) screen#8 ← phi( main::@1/(byte*) screen#1 )
|
||||
(byte) main::sum2_b#1 ← phi( main::@1/(byte) main::sum2_b#0 )
|
||||
(byte) main::sum2_a#1 ← phi( main::@1/(byte) main::sum2_a#0 )
|
||||
(byte) main::sum2_$0#0 ← (byte) main::sum2_a#1 + (byte) main::sum2_b#1
|
||||
(byte) main::sum2_return#0 ← (byte) main::sum2_$0#0
|
||||
to:main::sum2_@return
|
||||
main::sum2_@return: scope:[main] from main::sum2
|
||||
(byte*) screen#5 ← phi( main::sum2/(byte*) screen#8 )
|
||||
(byte) main::sum2_return#2 ← phi( main::sum2/(byte) main::sum2_return#0 )
|
||||
(byte) main::sum2_return#1 ← (byte) main::sum2_return#2
|
||||
to:main::@2
|
||||
main::@2: scope:[main] from main::sum2_@return
|
||||
(byte*) screen#2 ← phi( main::sum2_@return/(byte*) screen#5 )
|
||||
(byte) main::sum2_return#3 ← phi( main::sum2_@return/(byte) main::sum2_return#1 )
|
||||
(byte~) main::$1 ← (byte) main::sum2_return#3
|
||||
*((byte*) screen#2 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
*((byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1
|
||||
(byte) main::sum3_a#0 ← (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
(byte) main::sum3_b#0 ← (byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:main::sum3
|
||||
main::sum3: scope:[main] from main::@2
|
||||
(byte*) screen#9 ← phi( main::@2/(byte*) screen#2 )
|
||||
(byte) main::sum3_b#1 ← phi( main::@2/(byte) main::sum3_b#0 )
|
||||
(byte) main::sum3_a#1 ← phi( main::@2/(byte) main::sum3_a#0 )
|
||||
(byte) main::sum3_$0#0 ← (byte) main::sum3_a#1 + (byte) main::sum3_b#1
|
||||
(byte) main::sum3_return#0 ← (byte) main::sum3_$0#0
|
||||
to:main::sum3_@return
|
||||
main::sum3_@return: scope:[main] from main::sum3
|
||||
(byte*) screen#6 ← phi( main::sum3/(byte*) screen#9 )
|
||||
(byte) main::sum3_return#2 ← phi( main::sum3/(byte) main::sum3_return#0 )
|
||||
(byte) main::sum3_return#1 ← (byte) main::sum3_return#2
|
||||
to:main::@3
|
||||
main::@3: scope:[main] from main::sum3_@return
|
||||
(byte*) screen#3 ← phi( main::sum3_@return/(byte*) screen#6 )
|
||||
(byte) main::sum3_return#3 ← phi( main::sum3_@return/(byte) main::sum3_return#1 )
|
||||
(byte~) main::$2 ← (byte) main::sum3_return#3
|
||||
*((byte*) screen#3 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2
|
||||
*((byte*) screen#0 + (byte/signed byte/word/signed word/dword/signed dword) 2) ← (byte~) main::$2
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@3
|
||||
return
|
||||
to:@return
|
||||
@2: scope:[] from @begin
|
||||
(byte*) screen#11 ← phi( @begin/(byte*) screen#0 )
|
||||
call main
|
||||
to:@3
|
||||
@3: scope:[] from @2
|
||||
@ -140,23 +130,11 @@ SYMBOL TABLE SSA
|
||||
(byte) main::sum3_return#3
|
||||
(byte*) screen
|
||||
(byte*) screen#0
|
||||
(byte*) screen#1
|
||||
(byte*) screen#10
|
||||
(byte*) screen#11
|
||||
(byte*) screen#2
|
||||
(byte*) screen#3
|
||||
(byte*) screen#4
|
||||
(byte*) screen#5
|
||||
(byte*) screen#6
|
||||
(byte*) screen#7
|
||||
(byte*) screen#8
|
||||
(byte*) screen#9
|
||||
|
||||
Culled Empty Block (label) @3
|
||||
Successful SSA optimization Pass2CullEmptyBlocks
|
||||
Alias (byte) main::sum1_a#0 = (byte) main::sum1_a#1
|
||||
Alias (byte) main::sum1_b#0 = (byte) main::sum1_b#1
|
||||
Alias (byte*) screen#1 = (byte*) screen#7 (byte*) screen#10 (byte*) screen#4 (byte*) screen#8 (byte*) screen#5 (byte*) screen#2 (byte*) screen#9 (byte*) screen#6 (byte*) screen#3
|
||||
Alias (byte) main::sum1_return#0 = (byte) main::sum1_$0#0 (byte) main::sum1_return#2 (byte) main::sum1_return#1 (byte) main::sum1_return#3 (byte~) main::$0
|
||||
Alias (byte) main::sum2_a#0 = (byte) main::sum2_a#1
|
||||
Alias (byte) main::sum2_b#0 = (byte) main::sum2_b#1
|
||||
@ -164,10 +142,7 @@ Alias (byte) main::sum2_return#0 = (byte) main::sum2_$0#0 (byte) main::sum2_retu
|
||||
Alias (byte) main::sum3_a#0 = (byte) main::sum3_a#1
|
||||
Alias (byte) main::sum3_b#0 = (byte) main::sum3_b#1
|
||||
Alias (byte) main::sum3_return#0 = (byte) main::sum3_$0#0 (byte) main::sum3_return#2 (byte) main::sum3_return#1 (byte) main::sum3_return#3 (byte~) main::$2
|
||||
Alias (byte*) screen#0 = (byte*) screen#11
|
||||
Successful SSA optimization Pass2AliasElimination
|
||||
Redundant Phi (byte*) screen#1 (byte*) screen#0
|
||||
Successful SSA optimization Pass2RedundantPhiElimination
|
||||
Constant (const byte*) screen#0 = ((byte*))$400
|
||||
Constant (const byte) main::sum1_a#0 = 2
|
||||
Constant (const byte) main::sum1_b#0 = 1
|
||||
|
@ -8,25 +8,25 @@ main: {
|
||||
ldx #0
|
||||
ldy #0
|
||||
print1_b1:
|
||||
lda print1_msg,y
|
||||
lda hello,y
|
||||
sta screen,x
|
||||
inx
|
||||
inx
|
||||
iny
|
||||
lda print1_msg,y
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print1_b1
|
||||
ldx #0
|
||||
ldy #0
|
||||
print2_b1:
|
||||
lda print1_msg,y
|
||||
lda hello,y
|
||||
sta print2_at,x
|
||||
inx
|
||||
inx
|
||||
iny
|
||||
lda print1_msg,y
|
||||
lda hello,y
|
||||
cmp #'@'
|
||||
bne print2_b1
|
||||
rts
|
||||
print1_msg: .text "hello world!@"
|
||||
hello: .text "hello world!@"
|
||||
}
|
||||
|
@ -16,10 +16,10 @@ main::print1: scope:[main] from main
|
||||
main::print1_@1: scope:[main] from main::print1 main::print1_@1
|
||||
[6] (byte) main::print1_j#2 ← phi( main::print1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print1_@1/(byte) main::print1_j#1 )
|
||||
[6] (byte) main::print1_i#2 ← phi( main::print1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print1_@1/(byte) main::print1_i#1 )
|
||||
[7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2)
|
||||
[7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::hello#0 + (byte) main::print1_i#2)
|
||||
[8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2
|
||||
[10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1
|
||||
[10] if(*((const byte*) main::hello#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1
|
||||
to:main::print2
|
||||
main::print2: scope:[main] from main::print1_@1
|
||||
[11] phi()
|
||||
@ -27,10 +27,10 @@ main::print2: scope:[main] from main::print1_@1
|
||||
main::print2_@1: scope:[main] from main::print2 main::print2_@1
|
||||
[12] (byte) main::print2_j#2 ← phi( main::print2/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print2_@1/(byte) main::print2_j#1 )
|
||||
[12] (byte) main::print2_i#2 ← phi( main::print2/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print2_@1/(byte) main::print2_i#1 )
|
||||
[13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2)
|
||||
[13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::hello#0 + (byte) main::print2_i#2)
|
||||
[14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2
|
||||
[16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1
|
||||
[16] if(*((const byte*) main::hello#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::print2_@1
|
||||
[17] return
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user