mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-27 19:50:10 +00:00
Fixed problem, where assigning to low/high value left an unused intermediate variable. Closes #129
This commit is contained in:
parent
de58d9b6dd
commit
ed2d992333
@ -31,6 +31,8 @@ public class Pass1FixLValuesLoHi extends Pass1Base {
|
||||
|
||||
@Override
|
||||
public boolean step() {
|
||||
List<VariableRef> intermediates = new ArrayList<>();
|
||||
|
||||
ProgramScope programScope = getProgram().getScope();
|
||||
for(ControlFlowBlock block : getProgram().getGraph().getAllBlocks()) {
|
||||
List<Statement> statements = block.getStatements();
|
||||
@ -41,6 +43,7 @@ public class Pass1FixLValuesLoHi extends Pass1Base {
|
||||
StatementLValue statementLValue = (StatementLValue) statement;
|
||||
LvalueIntermediate intermediate = (LvalueIntermediate) statementLValue.getlValue();
|
||||
StatementAssignment intermediateAssignment = getProgram().getGraph().getAssignment(intermediate.getVariable());
|
||||
intermediates.add(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);
|
||||
@ -51,6 +54,11 @@ public class Pass1FixLValuesLoHi extends Pass1Base {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Remove intermediates from the code
|
||||
Pass2SsaOptimization.removeAssignments(getGraph(), intermediates);
|
||||
Pass2SsaOptimization.deleteSymbols(programScope, intermediates);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ public class Pass2AliasElimination extends Pass2SsaOptimization {
|
||||
for(AliasSet aliasSet : aliases.getAliasSets()) {
|
||||
getLog().append("Alias " + aliasSet.toString(getProgram()));
|
||||
}
|
||||
deleteSymbols(aliases.getSymbolsToRemove(getScope()));
|
||||
deleteSymbols(getScope(), aliases.getSymbolsToRemove(getScope()));
|
||||
return (aliases.size() > 0);
|
||||
}
|
||||
|
||||
|
@ -28,8 +28,8 @@ public class Pass2ConditionalAndOrRewriting extends Pass2SsaOptimization {
|
||||
if(obsoleteConditionVar!=null) {
|
||||
Collection<VariableRef> obsoleteVars = new ArrayList<>();
|
||||
obsoleteVars.add(obsoleteConditionVar);
|
||||
removeAssignments(obsoleteVars);
|
||||
deleteSymbols(obsoleteVars);
|
||||
removeAssignments(getGraph(), obsoleteVars);
|
||||
deleteSymbols(getScope(), obsoleteVars);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
@ -26,8 +26,8 @@ public class Pass2ConditionalJumpSimplification extends Pass2SsaOptimization {
|
||||
final Map<LValue, StatementAssignment> assignments = getAllAssignments();
|
||||
final Map<RValue, List<Statement>> usages = getAllUsages();
|
||||
final List<VariableRef> simpleConditionVars = getSimpleConditions(assignments, usages);
|
||||
removeAssignments(simpleConditionVars);
|
||||
deleteSymbols(simpleConditionVars);
|
||||
removeAssignments(getGraph(), simpleConditionVars);
|
||||
deleteSymbols(getScope(), simpleConditionVars);
|
||||
return (simpleConditionVars.size() > 0);
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization {
|
||||
getLog().append("Constant " + constantVar.toString(getProgram()) + " = " + constantVar.getValue());
|
||||
}
|
||||
// Remove assignments to constants in the code
|
||||
removeAssignments(constants.keySet());
|
||||
removeAssignments(getGraph(), constants.keySet());
|
||||
// Replace VariableRef's with ConstantRef's
|
||||
replaceVariables(constAliases);
|
||||
return constants.size() > 0;
|
||||
|
@ -51,7 +51,7 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization {
|
||||
// Replace all usages of the constants in the control flow graph or symbol table
|
||||
replaceVariables(inline);
|
||||
// Remove from symbol table
|
||||
deleteSymbols(inline.keySet());
|
||||
deleteSymbols(getScope(), inline.keySet());
|
||||
|
||||
for(ConstantRef constantRef : inline.keySet()) {
|
||||
getLog().append("Constant inlined " + constantRef.toString() + " = " + inline.get(constantRef).toString(getProgram()));
|
||||
|
@ -57,7 +57,7 @@ public class Pass2IdenticalPhiElimination extends Pass2SsaOptimization {
|
||||
RValue alias = phiIdentical.get(var);
|
||||
getLog().append("Identical Phi Values " + var.toString(getProgram()) + " " + alias.toString(getProgram()));
|
||||
}
|
||||
deleteSymbols(phiIdentical.keySet());
|
||||
deleteSymbols(getScope(), phiIdentical.keySet());
|
||||
return phiIdentical.size()>0;
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ public class Pass2NopCastElimination extends Pass2SsaOptimization {
|
||||
}
|
||||
}
|
||||
replaceVariables(castAliasses);
|
||||
deleteSymbols(castAliasses.keySet());
|
||||
deleteSymbols(getScope(), castAliasses.keySet());
|
||||
return (castAliasses.size() > 0);
|
||||
}
|
||||
|
||||
|
@ -22,13 +22,13 @@ public class Pass2RedundantPhiElimination extends Pass2SsaOptimization {
|
||||
@Override
|
||||
public boolean step() {
|
||||
final Map<VariableRef, RValue> aliases = findRedundantPhis();
|
||||
removeAssignments(aliases.keySet());
|
||||
removeAssignments(getGraph(), aliases.keySet());
|
||||
replaceVariables(aliases);
|
||||
for(VariableRef var : aliases.keySet()) {
|
||||
RValue alias = aliases.get(var);
|
||||
getLog().append("Redundant Phi " + var.toString(getProgram()) + " " + alias.toString(getProgram()));
|
||||
}
|
||||
deleteSymbols(aliases.keySet());
|
||||
deleteSymbols(getScope(), aliases.keySet());
|
||||
return aliases.size() > 0;
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.*;
|
||||
import dk.camelot64.kickc.model.iterator.ProgramValueIterator;
|
||||
import dk.camelot64.kickc.model.symbols.ProgramScope;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
import dk.camelot64.kickc.model.statements.*;
|
||||
import dk.camelot64.kickc.model.symbols.Symbol;
|
||||
@ -98,8 +99,8 @@ public abstract class Pass2SsaOptimization extends Pass1Base {
|
||||
*
|
||||
* @param variables The variables to eliminate
|
||||
*/
|
||||
public void removeAssignments(Collection<? extends LValue> variables) {
|
||||
for(ControlFlowBlock block : getGraph().getAllBlocks()) {
|
||||
public static void removeAssignments(ControlFlowGraph graph, Collection<? extends LValue> variables) {
|
||||
for(ControlFlowBlock block : graph.getAllBlocks()) {
|
||||
for(Iterator<Statement> iterator = block.getStatements().iterator(); iterator.hasNext(); ) {
|
||||
Statement statement = iterator.next();
|
||||
if(statement instanceof StatementAssignment) {
|
||||
@ -109,13 +110,7 @@ public abstract class Pass2SsaOptimization extends Pass1Base {
|
||||
}
|
||||
} else if(statement instanceof StatementPhiBlock) {
|
||||
StatementPhiBlock phiBlock = (StatementPhiBlock) statement;
|
||||
Iterator<StatementPhiBlock.PhiVariable> variableIterator = phiBlock.getPhiVariables().iterator();
|
||||
while(variableIterator.hasNext()) {
|
||||
StatementPhiBlock.PhiVariable phiVariable = variableIterator.next();
|
||||
if(variables.contains(phiVariable.getVariable())) {
|
||||
variableIterator.remove();
|
||||
}
|
||||
}
|
||||
phiBlock.getPhiVariables().removeIf(phiVariable -> variables.contains(phiVariable.getVariable()));
|
||||
if(phiBlock.getPhiVariables().size() == 0) {
|
||||
iterator.remove();
|
||||
}
|
||||
@ -124,9 +119,9 @@ public abstract class Pass2SsaOptimization extends Pass1Base {
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteSymbols(Collection<? extends SymbolRef> symbols) {
|
||||
public static void deleteSymbols(ProgramScope programScope, Collection<? extends SymbolRef> symbols) {
|
||||
for(SymbolRef symbolRef : symbols) {
|
||||
Symbol symbol = getScope().getSymbol(symbolRef.getFullName());
|
||||
Symbol symbol = programScope.getSymbol(symbolRef.getFullName());
|
||||
symbol.getScope().remove(symbol);
|
||||
}
|
||||
}
|
||||
|
@ -27,8 +27,8 @@ public class Pass2UnaryNotSimplification extends Pass2SsaOptimization {
|
||||
final VariableReferenceInfos usages = getProgram().getVariableReferenceInfos();
|
||||
final Map<LValue, StatementAssignment> assignments = getAllAssignments();
|
||||
final List<VariableRef> unusedComparisons = optimizeUnaryNots(assignments, usages);
|
||||
removeAssignments(unusedComparisons);
|
||||
deleteSymbols(unusedComparisons);
|
||||
removeAssignments(getGraph(), unusedComparisons);
|
||||
deleteSymbols(getScope(), unusedComparisons);
|
||||
return (unusedComparisons.size() > 0);
|
||||
}
|
||||
|
||||
|
@ -37,9 +37,9 @@ public class Pass3PhiMemCoalesce extends Pass2SsaOptimization {
|
||||
getLog().append("Created " + phiEquivalenceClasses.size() + " initial phi equivalence classes");
|
||||
PhiMemCoalescer phiMemCoalescer = new PhiMemCoalescer(phiEquivalenceClasses);
|
||||
phiMemCoalescer.visitGraph(getGraph());
|
||||
removeAssignments(phiMemCoalescer.getRemove());
|
||||
removeAssignments(getGraph(), phiMemCoalescer.getRemove());
|
||||
replaceVariables(phiMemCoalescer.getReplace());
|
||||
deleteSymbols(phiMemCoalescer.getRemove());
|
||||
deleteSymbols(getScope(), phiMemCoalescer.getRemove());
|
||||
getLog().append("Coalesced down to " + phiEquivalenceClasses.size() + " phi equivalence classes");
|
||||
return false;
|
||||
}
|
||||
|
@ -56,7 +56,6 @@ plot: {
|
||||
sta plotter_x+1
|
||||
lda #<0
|
||||
sta plotter_x
|
||||
// Needs word arrays arranged as two underlying byte arrays to allow byte* plotter_x = plot_x[x]; - and eventually - byte* plotter = plot_x[x] + plot_y[y];
|
||||
lda plot_xlo,y
|
||||
sta plotter_x
|
||||
ldy y
|
||||
|
@ -47,80 +47,78 @@ plots::@return: scope:[plots] from plots::@3
|
||||
plot: scope:[plot] from plots::@1
|
||||
[23] (byte~) plot::$6 ← *((const byte[256]) plot_xhi#0 + (byte) plot::x#0)
|
||||
[24] (byte*) plot::plotter_x#1 ← ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$6
|
||||
[25] (byte~) plot::$1 ← < (byte*) plot::plotter_x#1
|
||||
[26] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0)
|
||||
[27] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
|
||||
[28] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0)
|
||||
[29] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8
|
||||
[30] (byte~) plot::$3 ← < (word) plot::plotter_y#1
|
||||
[31] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0)
|
||||
[32] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
|
||||
[33] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2
|
||||
[34] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0)
|
||||
[35] *((byte*) plot::plotter#0) ← (byte~) plot::$5
|
||||
[25] (byte~) plot::$7 ← *((const byte[256]) plot_xlo#0 + (byte) plot::x#0)
|
||||
[26] (byte*) plot::plotter_x#2 ← (byte*) plot::plotter_x#1 lo= (byte~) plot::$7
|
||||
[27] (byte~) plot::$8 ← *((const byte[256]) plot_yhi#0 + (byte) plot::y#0)
|
||||
[28] (word) plot::plotter_y#1 ← (byte/signed byte/word/signed word/dword/signed dword) 0 hi= (byte~) plot::$8
|
||||
[29] (byte~) plot::$9 ← *((const byte[256]) plot_ylo#0 + (byte) plot::y#0)
|
||||
[30] (word) plot::plotter_y#2 ← (word) plot::plotter_y#1 lo= (byte~) plot::$9
|
||||
[31] (byte*) plot::plotter#0 ← (byte*) plot::plotter_x#2 + (word) plot::plotter_y#2
|
||||
[32] (byte~) plot::$5 ← *((byte*) plot::plotter#0) | *((const byte[256]) plot_bit#0 + (byte) plot::x#0)
|
||||
[33] *((byte*) plot::plotter#0) ← (byte~) plot::$5
|
||||
to:plot::@return
|
||||
plot::@return: scope:[plot] from plot
|
||||
[36] return
|
||||
[34] return
|
||||
to:@return
|
||||
init_plot_tables: scope:[init_plot_tables] from main::@5
|
||||
[37] phi()
|
||||
[35] phi()
|
||||
to:init_plot_tables::@1
|
||||
init_plot_tables::@1: scope:[init_plot_tables] from init_plot_tables init_plot_tables::@2
|
||||
[38] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 )
|
||||
[38] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 )
|
||||
[39] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248
|
||||
[40] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0
|
||||
[41] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0
|
||||
[42] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3
|
||||
[43] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[44] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10
|
||||
[36] (byte) init_plot_tables::bits#3 ← phi( init_plot_tables/(byte/word/signed word/dword/signed dword) 128 init_plot_tables::@2/(byte) init_plot_tables::bits#4 )
|
||||
[36] (byte) init_plot_tables::x#2 ← phi( init_plot_tables/(byte/signed byte/word/signed word/dword/signed dword) 0 init_plot_tables::@2/(byte) init_plot_tables::x#1 )
|
||||
[37] (byte~) init_plot_tables::$0 ← (byte) init_plot_tables::x#2 & (byte/word/signed word/dword/signed dword) 248
|
||||
[38] *((const byte[256]) plot_xlo#0 + (byte) init_plot_tables::x#2) ← (byte~) init_plot_tables::$0
|
||||
[39] *((const byte[256]) plot_xhi#0 + (byte) init_plot_tables::x#2) ← >(const byte*) BITMAP#0
|
||||
[40] *((const byte[256]) plot_bit#0 + (byte) init_plot_tables::x#2) ← (byte) init_plot_tables::bits#3
|
||||
[41] (byte) init_plot_tables::bits#1 ← (byte) init_plot_tables::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[42] if((byte) init_plot_tables::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@10
|
||||
to:init_plot_tables::@2
|
||||
init_plot_tables::@2: scope:[init_plot_tables] from init_plot_tables::@1 init_plot_tables::@10
|
||||
[45] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[46] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2
|
||||
[47] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1
|
||||
[43] (byte) init_plot_tables::bits#4 ← phi( init_plot_tables::@10/(byte) init_plot_tables::bits#1 init_plot_tables::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[44] (byte) init_plot_tables::x#1 ← ++ (byte) init_plot_tables::x#2
|
||||
[45] if((byte) init_plot_tables::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@1
|
||||
to:init_plot_tables::@3
|
||||
init_plot_tables::@3: scope:[init_plot_tables] from init_plot_tables::@2 init_plot_tables::@4
|
||||
[48] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[48] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[49] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[50] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2
|
||||
[51] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
|
||||
[52] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8
|
||||
[53] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2
|
||||
[54] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9
|
||||
[55] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[56] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
|
||||
[46] (byte*) init_plot_tables::yoffs#2 ← phi( init_plot_tables::@4/(byte*) init_plot_tables::yoffs#4 init_plot_tables::@2/((byte*))(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[46] (byte) init_plot_tables::y#2 ← phi( init_plot_tables::@4/(byte) init_plot_tables::y#1 init_plot_tables::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[47] (byte~) init_plot_tables::$6 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[48] (byte~) init_plot_tables::$7 ← < (byte*) init_plot_tables::yoffs#2
|
||||
[49] (byte~) init_plot_tables::$8 ← (byte~) init_plot_tables::$6 | (byte~) init_plot_tables::$7
|
||||
[50] *((const byte[256]) plot_ylo#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$8
|
||||
[51] (byte~) init_plot_tables::$9 ← > (byte*) init_plot_tables::yoffs#2
|
||||
[52] *((const byte[256]) plot_yhi#0 + (byte) init_plot_tables::y#2) ← (byte~) init_plot_tables::$9
|
||||
[53] (byte~) init_plot_tables::$10 ← (byte) init_plot_tables::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[54] if((byte~) init_plot_tables::$10!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto init_plot_tables::@4
|
||||
to:init_plot_tables::@7
|
||||
init_plot_tables::@7: scope:[init_plot_tables] from init_plot_tables::@3
|
||||
[57] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
[55] (byte*) init_plot_tables::yoffs#1 ← (byte*) init_plot_tables::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:init_plot_tables::@4
|
||||
init_plot_tables::@4: scope:[init_plot_tables] from init_plot_tables::@3 init_plot_tables::@7
|
||||
[58] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 )
|
||||
[59] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2
|
||||
[60] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3
|
||||
[56] (byte*) init_plot_tables::yoffs#4 ← phi( init_plot_tables::@3/(byte*) init_plot_tables::yoffs#2 init_plot_tables::@7/(byte*) init_plot_tables::yoffs#1 )
|
||||
[57] (byte) init_plot_tables::y#1 ← ++ (byte) init_plot_tables::y#2
|
||||
[58] if((byte) init_plot_tables::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto init_plot_tables::@3
|
||||
to:init_plot_tables::@return
|
||||
init_plot_tables::@return: scope:[init_plot_tables] from init_plot_tables::@4
|
||||
[61] return
|
||||
[59] return
|
||||
to:@return
|
||||
init_plot_tables::@10: scope:[init_plot_tables] from init_plot_tables::@1
|
||||
[62] phi()
|
||||
[60] phi()
|
||||
to:init_plot_tables::@2
|
||||
init_screen: scope:[init_screen] from main
|
||||
[63] phi()
|
||||
[61] phi()
|
||||
to:init_screen::@1
|
||||
init_screen::@1: scope:[init_screen] from init_screen init_screen::@1
|
||||
[64] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 )
|
||||
[65] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[66] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2
|
||||
[67] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1
|
||||
[62] (byte*) init_screen::b#2 ← phi( init_screen/(const byte*) BITMAP#0 init_screen::@1/(byte*) init_screen::b#1 )
|
||||
[63] *((byte*) init_screen::b#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[64] (byte*) init_screen::b#1 ← ++ (byte*) init_screen::b#2
|
||||
[65] if((byte*) init_screen::b#1!=(const byte*) BITMAP#0+(word/signed word/dword/signed dword) 8192) goto init_screen::@1
|
||||
to:init_screen::@2
|
||||
init_screen::@2: scope:[init_screen] from init_screen::@1 init_screen::@2
|
||||
[68] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 )
|
||||
[69] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20
|
||||
[70] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2
|
||||
[71] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2
|
||||
[66] (byte*) init_screen::c#2 ← phi( init_screen::@2/(byte*) init_screen::c#1 init_screen::@1/(const byte*) SCREEN#0 )
|
||||
[67] *((byte*) init_screen::c#2) ← (byte/signed byte/word/signed word/dword/signed dword) 20
|
||||
[68] (byte*) init_screen::c#1 ← ++ (byte*) init_screen::c#2
|
||||
[69] if((byte*) init_screen::c#1!=(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1024) goto init_screen::@2
|
||||
to:init_screen::@return
|
||||
init_screen::@return: scope:[init_screen] from init_screen::@2
|
||||
[72] return
|
||||
[70] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -71,8 +71,6 @@
|
||||
(label) main::@5
|
||||
(label) main::@7
|
||||
(void()) plot((byte) plot::x , (byte) plot::y)
|
||||
(byte~) plot::$1 reg byte a 20.0
|
||||
(byte~) plot::$3 reg byte a 20.0
|
||||
(byte~) plot::$5 reg byte a 4.0
|
||||
(byte~) plot::$6 reg byte a 4.0
|
||||
(byte~) plot::$7 reg byte a 4.0
|
||||
@ -83,14 +81,14 @@
|
||||
(byte*) plot::plotter#0 plotter zp ZP_WORD:2 3.0
|
||||
(byte*) plot::plotter_x
|
||||
(byte*) plot::plotter_x#1 plotter_x zp ZP_WORD:2 2.0
|
||||
(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.6666666666666666
|
||||
(byte*) plot::plotter_x#2 plotter_x zp ZP_WORD:2 0.8
|
||||
(word) plot::plotter_y
|
||||
(word) plot::plotter_y#1 plotter_y zp ZP_WORD:6 2.0
|
||||
(word) plot::plotter_y#2 plotter_y zp ZP_WORD:6 4.0
|
||||
(byte) plot::x
|
||||
(byte) plot::x#0 x zp ZP_BYTE:4 8.23076923076923
|
||||
(byte) plot::x#0 x zp ZP_BYTE:4 9.727272727272727
|
||||
(byte) plot::y
|
||||
(byte) plot::y#0 y zp ZP_BYTE:5 11.666666666666664
|
||||
(byte) plot::y#0 y zp ZP_BYTE:5 15.000000000000002
|
||||
(byte[256]) plot_bit
|
||||
(const byte[256]) plot_bit#0 plot_bit = { fill( 256, 0) }
|
||||
(byte[256]) plot_xhi
|
||||
@ -123,11 +121,9 @@ zp ZP_WORD:2 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tab
|
||||
zp ZP_BYTE:4 [ plot::x#0 init_plot_tables::$6 ]
|
||||
zp ZP_BYTE:5 [ plot::y#0 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
reg byte a [ plot::$7 ]
|
||||
reg byte a [ plot::$8 ]
|
||||
zp ZP_WORD:6 [ plot::plotter_y#1 plot::plotter_y#2 ]
|
||||
reg byte a [ plot::$3 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
reg byte a [ init_plot_tables::$0 ]
|
||||
|
@ -129,112 +129,110 @@ mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared
|
||||
[66] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
to:mulf8s_prepared::@3
|
||||
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6
|
||||
[67] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0
|
||||
[68] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
|
||||
[69] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4
|
||||
[70] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||
[67] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
|
||||
[68] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#4
|
||||
[69] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||
to:mulf8s_prepared::@1
|
||||
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6
|
||||
[71] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
|
||||
[72] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
[70] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
|
||||
[71] if((signed byte) mulf8s_prepared::b#4>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
to:mulf8s_prepared::@4
|
||||
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
|
||||
[73] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5
|
||||
[74] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
|
||||
[75] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
|
||||
[76] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||
[72] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
|
||||
[73] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
|
||||
[74] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||
to:mulf8s_prepared::@2
|
||||
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
|
||||
[77] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||
[75] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||
to:mulf8s_prepared::@return
|
||||
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
||||
[78] return
|
||||
[76] return
|
||||
to:@return
|
||||
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared
|
||||
[79] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4
|
||||
[77] *((const byte*) mulf8u_prepared::memB#0) ← (byte)(signed byte) mulf8s_prepared::b#4
|
||||
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
||||
[81] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
|
||||
[79] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
|
||||
to:mulf8u_prepared::@return
|
||||
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
|
||||
[82] return
|
||||
[80] return
|
||||
to:@return
|
||||
mulf8u_prepare: scope:[mulf8u_prepare] from anim::mulf8s_prepare1 anim::mulf8s_prepare2
|
||||
[83] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 )
|
||||
[84] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
|
||||
[81] (byte) mulf8u_prepare::a#2 ← phi( anim::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 anim::mulf8s_prepare2/(byte~) mulf8u_prepare::a#4 )
|
||||
[82] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
|
||||
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
|
||||
to:mulf8u_prepare::@return
|
||||
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
|
||||
[86] return
|
||||
[84] return
|
||||
to:@return
|
||||
init: scope:[init] from main
|
||||
[87] phi()
|
||||
[88] call mulf_init
|
||||
[85] phi()
|
||||
[86] call mulf_init
|
||||
to:init::@3
|
||||
init::@3: scope:[init] from init
|
||||
[89] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
|
||||
[87] *((const byte*) SPRITES_ENABLE#0) ← (byte/word/signed word/dword/signed dword) 255
|
||||
to:init::@1
|
||||
init::@1: scope:[init] from init::@1 init::@3
|
||||
[90] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[91] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
[92] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0
|
||||
[93] (byte) init::i#1 ← ++ (byte) init::i#2
|
||||
[94] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1
|
||||
[88] (byte) init::i#2 ← phi( init::@1/(byte) init::i#1 init::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[89] *((const byte*) init::sprites_ptr#0 + (byte) init::i#2) ← ((byte))(const byte*) SPRITE#0/(byte/signed byte/word/signed word/dword/signed dword) 64
|
||||
[90] *((const byte*) SPRITES_COLS#0 + (byte) init::i#2) ← (const byte) GREEN#0
|
||||
[91] (byte) init::i#1 ← ++ (byte) init::i#2
|
||||
[92] if((byte) init::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto init::@1
|
||||
to:init::@return
|
||||
init::@return: scope:[init] from init::@1
|
||||
[95] return
|
||||
[93] return
|
||||
to:@return
|
||||
mulf_init: scope:[mulf_init] from init
|
||||
[96] phi()
|
||||
[94] phi()
|
||||
to:mulf_init::@1
|
||||
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
|
||||
[97] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[97] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[97] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[97] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[97] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[98] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[99] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[100] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
[95] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[95] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[95] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[95] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[95] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[96] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[97] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[98] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
to:mulf_init::@5
|
||||
mulf_init::@5: scope:[mulf_init] from mulf_init::@1
|
||||
[101] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[102] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
[99] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[100] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
to:mulf_init::@2
|
||||
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5
|
||||
[103] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[103] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[104] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[105] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[106] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[107] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[108] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[109] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[110] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[111] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
[101] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[101] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[102] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[103] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[104] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[105] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[106] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[107] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[108] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[109] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
to:mulf_init::@3
|
||||
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||
[112] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[112] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[112] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[112] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[113] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[114] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[115] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[116] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[117] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
[110] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[110] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[110] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[110] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[111] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[112] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[113] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[114] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[115] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
to:mulf_init::@4
|
||||
mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3
|
||||
[118] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[119] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[120] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
[116] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[117] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[118] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
to:mulf_init::@8
|
||||
mulf_init::@8: scope:[mulf_init] from mulf_init::@4
|
||||
[121] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[122] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
[119] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[120] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
to:mulf_init::@return
|
||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@8
|
||||
[123] return
|
||||
[121] return
|
||||
to:@return
|
||||
mulf_init::@12: scope:[mulf_init] from mulf_init::@3
|
||||
[124] phi()
|
||||
[122] phi()
|
||||
to:mulf_init::@4
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -171,11 +171,9 @@
|
||||
(label) main::@1
|
||||
(label) main::@return
|
||||
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||
(byte~) mulf8s_prepared::$10 reg byte a 20.0
|
||||
(byte~) mulf8s_prepared::$11 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$15 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$16 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$4 reg byte a 20.0
|
||||
(byte~) mulf8s_prepared::$5 reg byte a 4.0
|
||||
(label) mulf8s_prepared::@1
|
||||
(label) mulf8s_prepared::@2
|
||||
@ -188,13 +186,13 @@
|
||||
(signed byte) mulf8s_prepared::b#1 reg byte y 202.0
|
||||
(signed byte) mulf8s_prepared::b#2 reg byte y 202.0
|
||||
(signed byte) mulf8s_prepared::b#3 reg byte y 202.0
|
||||
(signed byte) mulf8s_prepared::b#4 reg byte y 29.0
|
||||
(signed byte) mulf8s_prepared::b#4 reg byte y 31.23076923076923
|
||||
(word) mulf8s_prepared::m
|
||||
(word) mulf8s_prepared::m#0 m zp ZP_WORD:5 2.0
|
||||
(word) mulf8s_prepared::m#1 m zp ZP_WORD:5 4.0
|
||||
(word) mulf8s_prepared::m#2 m zp ZP_WORD:5 4.0
|
||||
(word) mulf8s_prepared::m#4 m zp ZP_WORD:5 0.6666666666666666
|
||||
(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.4
|
||||
(word) mulf8s_prepared::m#5 m zp ZP_WORD:5 2.5
|
||||
(signed byte*) mulf8s_prepared::memA
|
||||
(const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253
|
||||
(signed word) mulf8s_prepared::return
|
||||
@ -295,10 +293,8 @@ reg byte a [ anim::$22 ]
|
||||
reg byte y [ anim::ypos#0 ]
|
||||
reg byte x [ anim::i2#0 ]
|
||||
reg byte a [ anim::$25 ]
|
||||
reg byte a [ mulf8s_prepared::$4 ]
|
||||
reg byte a [ mulf8s_prepared::$5 ]
|
||||
reg byte a [ mulf8s_prepared::$15 ]
|
||||
reg byte a [ mulf8s_prepared::$10 ]
|
||||
reg byte a [ mulf8s_prepared::$11 ]
|
||||
reg byte a [ mulf8s_prepared::$16 ]
|
||||
reg byte a [ mulf_init::$2 ]
|
||||
|
@ -332,7 +332,6 @@ sin16s_gen2: {
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zeropage($17) a)
|
||||
mul16s: {
|
||||
.label _5 = 2
|
||||
.label _6 = $e
|
||||
.label _16 = $e
|
||||
.label m = $a
|
||||
@ -350,10 +349,6 @@ mul16s: {
|
||||
lda a+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _5
|
||||
lda m+3
|
||||
sta _5+1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
|
@ -254,200 +254,199 @@ mul16s::@6: scope:[mul16s] from mul16s
|
||||
[122] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@6
|
||||
[123] (word~) mul16s::$5 ← > (dword) mul16s::m#0
|
||||
[124] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[125] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[126] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[123] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[124] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[125] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
|
||||
[127] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
[126] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1
|
||||
[128] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
[127] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[129] return
|
||||
[128] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[130] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[130] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[131] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
[129] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[129] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[130] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[132] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[132] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[132] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[133] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
[131] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[131] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[131] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[132] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[134] return
|
||||
[133] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[135] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[136] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
[134] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[135] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[137] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[136] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[138] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[139] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[140] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[137] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[138] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[139] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul16u::@1
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[141] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
[140] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[142] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
[141] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[143] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[143] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[144] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
[142] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[142] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[143] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[145] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
[144] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[146] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[147] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[148] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[149] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[150] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[151] call mulu16_sel
|
||||
[152] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
[145] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[146] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[147] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[148] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[149] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[150] call mulu16_sel
|
||||
[151] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@2
|
||||
[153] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[154] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[155] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[156] call mulu16_sel
|
||||
[157] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
[152] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[153] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[154] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[155] call mulu16_sel
|
||||
[156] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[158] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[159] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[160] call mulu16_sel
|
||||
[161] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
[157] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[158] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[159] call mulu16_sel
|
||||
[160] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[162] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[163] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[164] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[165] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[166] call mulu16_sel
|
||||
[167] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
[161] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[162] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[163] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[164] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[165] call mulu16_sel
|
||||
[166] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[168] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[169] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[170] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[171] call mulu16_sel
|
||||
[172] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
[167] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[168] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[169] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[170] call mulu16_sel
|
||||
[171] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@12
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[173] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[174] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[175] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[176] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
[172] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[173] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[174] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[175] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@12
|
||||
[177] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
[176] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
|
||||
[178] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
[177] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[179] return
|
||||
[178] return
|
||||
to:@return
|
||||
sin16s::@15: scope:[sin16s] from sin16s::@12
|
||||
[180] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
[179] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9
|
||||
[181] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[181] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[181] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[182] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[183] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[184] call mul16u
|
||||
[185] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[180] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[180] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[180] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[181] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[182] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[183] call mul16u
|
||||
[184] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@2
|
||||
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
|
||||
[186] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[187] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[188] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
[185] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[186] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[187] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
[189] return
|
||||
[188] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[190] phi()
|
||||
[191] call divr16u
|
||||
[192] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[189] phi()
|
||||
[190] call divr16u
|
||||
[191] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u
|
||||
[193] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[194] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[195] call divr16u
|
||||
[196] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[192] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[193] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[194] call divr16u
|
||||
[195] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@3
|
||||
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
|
||||
[197] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[198] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
[196] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[197] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
|
||||
[199] return
|
||||
[198] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
|
||||
[200] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[200] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
[199] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[199] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[201] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[201] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[201] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[201] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[202] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[203] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[204] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[205] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[200] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[200] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[200] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[200] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[201] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[202] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[203] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[204] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[206] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[205] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[207] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[208] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[209] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[210] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
|
||||
[206] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[207] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[208] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[209] if((word) divr16u::rem#6<(const word) XSIN_SIZE#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[211] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[212] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
|
||||
[210] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[211] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) XSIN_SIZE#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[213] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[213] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[214] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[215] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
[212] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[212] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[213] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[214] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[216] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[215] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[217] return
|
||||
[216] return
|
||||
to:@return
|
||||
fill: scope:[fill] from main::@3 main::@4
|
||||
[218] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[218] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 )
|
||||
[219] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000
|
||||
[217] (byte) fill::val#3 ← phi( main::@3/(const byte) BLACK#0 main::@4/(const byte) WHITE#0|(byte/signed byte/word/signed word/dword/signed dword) 8 )
|
||||
[217] (byte*) fill::addr#0 ← phi( main::@3/(const byte*) SCREEN#0 main::@4/(const byte*) COLS#0 )
|
||||
[218] (byte*) fill::end#0 ← (byte*) fill::addr#0 + (word/signed word/dword/signed dword) 1000
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[220] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[221] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[222] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[223] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
[219] (byte*) fill::addr#2 ← phi( fill/(byte*) fill::addr#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[220] *((byte*) fill::addr#2) ← (byte) fill::val#3
|
||||
[221] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[222] if((byte*) fill::addr#1!=(byte*) fill::end#0) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[224] return
|
||||
[223] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -206,7 +206,6 @@
|
||||
(byte*) main::toD0181_screen
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:14 4.0
|
||||
(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:14 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
@ -438,7 +437,7 @@
|
||||
(word) xsin_idx#3 xsin_idx zp ZP_WORD:2 11.0
|
||||
|
||||
reg byte x [ main::ch#2 main::ch#1 ]
|
||||
zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 mul16s::$5 ]
|
||||
zp ZP_WORD:2 [ xsin_idx#11 xsin_idx#19 xsin_idx#3 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
reg byte x [ render_logo::screen_idx#19 render_logo::screen_idx#3 render_logo::screen_idx#17 render_logo::screen_idx#2 ]
|
||||
reg byte y [ render_logo::logo_idx#11 render_logo::logo_idx#2 ]
|
||||
reg byte y [ render_logo::logo_idx#10 render_logo::logo_idx#13 render_logo::logo_idx#3 ]
|
||||
|
@ -327,7 +327,6 @@ sin16s_gen2: {
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zeropage($17) a)
|
||||
mul16s: {
|
||||
.label _5 = 2
|
||||
.label _6 = 6
|
||||
.label _16 = 6
|
||||
.label m = $c
|
||||
@ -345,10 +344,6 @@ mul16s: {
|
||||
lda a+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _5
|
||||
lda m+3
|
||||
sta _5+1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
|
@ -184,262 +184,261 @@ mul16s::@6: scope:[mul16s] from mul16s
|
||||
[94] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@6
|
||||
[95] (word~) mul16s::$5 ← > (dword) mul16s::m#0
|
||||
[96] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[97] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[98] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[95] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[96] (word~) mul16s::$16 ← (word~) mul16s::$6 - ((word))(const signed word) sin16s_gen2::ampl#0
|
||||
[97] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
|
||||
[99] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
[98] (dword) mul16s::m#4 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1
|
||||
[100] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
[99] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[101] return
|
||||
[100] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mulu16_sel
|
||||
[102] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[102] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[103] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
[101] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mulu16_sel/(word) mul16u::a#2 )
|
||||
[101] (word) mul16u::b#2 ← phi( mul16s/((word))(const signed word) sin16s_gen2::ampl#0 mulu16_sel/(word) mul16u::b#1 )
|
||||
[102] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[104] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[104] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[104] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[105] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
[103] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[103] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[103] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[104] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[106] return
|
||||
[105] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[107] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[108] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
[106] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[107] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[109] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[108] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[110] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[111] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[112] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[109] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[110] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[111] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul16u::@1
|
||||
sin16s: scope:[sin16s] from sin16s_gen2::@1
|
||||
[113] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
[112] if((dword) sin16s::x#0<(const dword) PI_u4f28#0) goto sin16s::@1
|
||||
to:sin16s::@4
|
||||
sin16s::@4: scope:[sin16s] from sin16s
|
||||
[114] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
[113] (dword) sin16s::x#1 ← (dword) sin16s::x#0 - (const dword) PI_u4f28#0
|
||||
to:sin16s::@1
|
||||
sin16s::@1: scope:[sin16s] from sin16s sin16s::@4
|
||||
[115] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[115] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[116] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
[114] (byte) sin16s::isUpper#2 ← phi( sin16s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@4/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[114] (dword) sin16s::x#4 ← phi( sin16s/(dword) sin16s::x#0 sin16s::@4/(dword) sin16s::x#1 )
|
||||
[115] if((dword) sin16s::x#4<(const dword) PI_HALF_u4f28#0) goto sin16s::@2
|
||||
to:sin16s::@5
|
||||
sin16s::@5: scope:[sin16s] from sin16s::@1
|
||||
[117] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
[116] (dword) sin16s::x#2 ← (const dword) PI_u4f28#0 - (dword) sin16s::x#4
|
||||
to:sin16s::@2
|
||||
sin16s::@2: scope:[sin16s] from sin16s::@1 sin16s::@5
|
||||
[118] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[119] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[120] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[121] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[122] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[123] call mulu16_sel
|
||||
[124] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
[117] (dword) sin16s::x#6 ← phi( sin16s::@1/(dword) sin16s::x#4 sin16s::@5/(dword) sin16s::x#2 )
|
||||
[118] (dword~) sin16s::$6 ← (dword) sin16s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[119] (word) sin16s::x1#0 ← > (dword~) sin16s::$6
|
||||
[120] (word) mulu16_sel::v1#0 ← (word) sin16s::x1#0
|
||||
[121] (word) mulu16_sel::v2#0 ← (word) sin16s::x1#0
|
||||
[122] call mulu16_sel
|
||||
[123] (word) mulu16_sel::return#0 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@8
|
||||
sin16s::@8: scope:[sin16s] from sin16s::@2
|
||||
[125] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[126] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[127] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[128] call mulu16_sel
|
||||
[129] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
[124] (word) sin16s::x2#0 ← (word) mulu16_sel::return#0
|
||||
[125] (word) mulu16_sel::v1#1 ← (word) sin16s::x2#0
|
||||
[126] (word) mulu16_sel::v2#1 ← (word) sin16s::x1#0
|
||||
[127] call mulu16_sel
|
||||
[128] (word) mulu16_sel::return#1 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@9
|
||||
sin16s::@9: scope:[sin16s] from sin16s::@8
|
||||
[130] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[131] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[132] call mulu16_sel
|
||||
[133] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
[129] (word) sin16s::x3#0 ← (word) mulu16_sel::return#1
|
||||
[130] (word) mulu16_sel::v1#2 ← (word) sin16s::x3#0
|
||||
[131] call mulu16_sel
|
||||
[132] (word) mulu16_sel::return#2 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@10
|
||||
sin16s::@10: scope:[sin16s] from sin16s::@9
|
||||
[134] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[135] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[136] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[137] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[138] call mulu16_sel
|
||||
[139] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
[133] (word) sin16s::x3_6#0 ← (word) mulu16_sel::return#2
|
||||
[134] (word) sin16s::usinx#0 ← (word) sin16s::x1#0 - (word) sin16s::x3_6#0
|
||||
[135] (word) mulu16_sel::v1#3 ← (word) sin16s::x3#0
|
||||
[136] (word) mulu16_sel::v2#3 ← (word) sin16s::x1#0
|
||||
[137] call mulu16_sel
|
||||
[138] (word) mulu16_sel::return#10 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@11
|
||||
sin16s::@11: scope:[sin16s] from sin16s::@10
|
||||
[140] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[141] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[142] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[143] call mulu16_sel
|
||||
[144] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
[139] (word) sin16s::x4#0 ← (word) mulu16_sel::return#10
|
||||
[140] (word) mulu16_sel::v1#4 ← (word) sin16s::x4#0
|
||||
[141] (word) mulu16_sel::v2#4 ← (word) sin16s::x1#0
|
||||
[142] call mulu16_sel
|
||||
[143] (word) mulu16_sel::return#11 ← (word) mulu16_sel::return#12
|
||||
to:sin16s::@12
|
||||
sin16s::@12: scope:[sin16s] from sin16s::@11
|
||||
[145] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[146] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[147] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[148] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
[144] (word) sin16s::x5#0 ← (word) mulu16_sel::return#11
|
||||
[145] (word) sin16s::x5_128#0 ← (word) sin16s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[146] (word) sin16s::usinx#1 ← (word) sin16s::usinx#0 + (word) sin16s::x5_128#0
|
||||
[147] if((byte) sin16s::isUpper#2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin16s::@15
|
||||
to:sin16s::@6
|
||||
sin16s::@6: scope:[sin16s] from sin16s::@12
|
||||
[149] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
[148] (signed word) sin16s::sinx#1 ← - (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
sin16s::@3: scope:[sin16s] from sin16s::@15 sin16s::@6
|
||||
[150] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
[149] (signed word) sin16s::return#1 ← phi( sin16s::@15/(signed word~) sin16s::return#5 sin16s::@6/(signed word) sin16s::sinx#1 )
|
||||
to:sin16s::@return
|
||||
sin16s::@return: scope:[sin16s] from sin16s::@3
|
||||
[151] return
|
||||
[150] return
|
||||
to:@return
|
||||
sin16s::@15: scope:[sin16s] from sin16s::@12
|
||||
[152] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
[151] (signed word~) sin16s::return#5 ← (signed word)(word) sin16s::usinx#1
|
||||
to:sin16s::@3
|
||||
mulu16_sel: scope:[mulu16_sel] from sin16s::@10 sin16s::@11 sin16s::@2 sin16s::@8 sin16s::@9
|
||||
[153] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[153] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[153] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[154] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[155] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[156] call mul16u
|
||||
[157] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[152] (byte) mulu16_sel::select#5 ← phi( sin16s::@10/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@11/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 sin16s::@8/(byte/signed byte/word/signed word/dword/signed dword) 1 sin16s::@9/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[152] (word) mulu16_sel::v2#5 ← phi( sin16s::@10/(word) mulu16_sel::v2#3 sin16s::@11/(word) mulu16_sel::v2#4 sin16s::@2/(word) mulu16_sel::v2#0 sin16s::@8/(word) mulu16_sel::v2#1 sin16s::@9/(dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 )
|
||||
[152] (word) mulu16_sel::v1#5 ← phi( sin16s::@10/(word) mulu16_sel::v1#3 sin16s::@11/(word) mulu16_sel::v1#4 sin16s::@2/(word) mulu16_sel::v1#0 sin16s::@8/(word) mulu16_sel::v1#1 sin16s::@9/(word) mulu16_sel::v1#2 )
|
||||
[153] (word) mul16u::a#2 ← (word) mulu16_sel::v1#5
|
||||
[154] (word) mul16u::b#1 ← (word) mulu16_sel::v2#5
|
||||
[155] call mul16u
|
||||
[156] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mulu16_sel::@2
|
||||
mulu16_sel::@2: scope:[mulu16_sel] from mulu16_sel
|
||||
[158] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[159] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[160] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
[157] (dword~) mulu16_sel::$0 ← (dword) mul16u::return#3
|
||||
[158] (dword~) mulu16_sel::$1 ← (dword~) mulu16_sel::$0 << (byte) mulu16_sel::select#5
|
||||
[159] (word) mulu16_sel::return#12 ← > (dword~) mulu16_sel::$1
|
||||
to:mulu16_sel::@return
|
||||
mulu16_sel::@return: scope:[mulu16_sel] from mulu16_sel::@2
|
||||
[161] return
|
||||
[160] return
|
||||
to:@return
|
||||
div32u16u: scope:[div32u16u] from sin16s_gen2
|
||||
[162] phi()
|
||||
[163] call divr16u
|
||||
[164] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[161] phi()
|
||||
[162] call divr16u
|
||||
[163] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div32u16u::@2
|
||||
div32u16u::@2: scope:[div32u16u] from div32u16u
|
||||
[165] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[166] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[167] call divr16u
|
||||
[168] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
[164] (word) div32u16u::quotient_hi#0 ← (word) divr16u::return#2
|
||||
[165] (word) divr16u::rem#4 ← (word) rem16u#1
|
||||
[166] call divr16u
|
||||
[167] (word) divr16u::return#3 ← (word) divr16u::return#0
|
||||
to:div32u16u::@3
|
||||
div32u16u::@3: scope:[div32u16u] from div32u16u::@2
|
||||
[169] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[170] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
[168] (word) div32u16u::quotient_lo#0 ← (word) divr16u::return#3
|
||||
[169] (dword) div32u16u::return#0 ← (word) div32u16u::quotient_hi#0 dw= (word) div32u16u::quotient_lo#0
|
||||
to:div32u16u::@return
|
||||
div32u16u::@return: scope:[div32u16u] from div32u16u::@3
|
||||
[171] return
|
||||
[170] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div32u16u div32u16u::@2
|
||||
[172] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[172] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
[171] (word) divr16u::dividend#5 ← phi( div32u16u/>(const dword) PI2_u4f28#0 div32u16u::@2/<(const dword) PI2_u4f28#0 )
|
||||
[171] (word) divr16u::rem#10 ← phi( div32u16u/(byte/signed byte/word/signed word/dword/signed dword) 0 div32u16u::@2/(word) divr16u::rem#4 )
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[173] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[173] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[173] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[173] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[174] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[175] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[176] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[177] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[172] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[172] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[172] (word) divr16u::dividend#3 ← phi( divr16u/(word) divr16u::dividend#5 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[172] (word) divr16u::rem#5 ← phi( divr16u/(word) divr16u::rem#10 divr16u::@3/(word) divr16u::rem#11 )
|
||||
[173] (word) divr16u::rem#0 ← (word) divr16u::rem#5 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[174] (byte~) divr16u::$1 ← > (word) divr16u::dividend#3
|
||||
[175] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[176] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[178] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[177] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[179] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[180] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[181] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[182] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3
|
||||
[178] (word) divr16u::rem#6 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[179] (word) divr16u::dividend#0 ← (word) divr16u::dividend#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[180] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[181] if((word) divr16u::rem#6<(const word) SIN_SIZE#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[183] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[184] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0
|
||||
[182] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[183] (word) divr16u::rem#2 ← (word) divr16u::rem#6 - (const word) SIN_SIZE#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[185] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[185] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[186] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[187] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
[184] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[184] (word) divr16u::rem#11 ← phi( divr16u::@2/(word) divr16u::rem#6 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[185] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[186] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[188] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
[187] (word) rem16u#1 ← (word) divr16u::rem#11
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[189] return
|
||||
[188] return
|
||||
to:@return
|
||||
bitmap_clear: scope:[bitmap_clear] from main::@10
|
||||
[190] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
|
||||
[191] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
||||
[189] (word~) bitmap_clear::$3 ← *((const byte[256]) bitmap_plot_yhi#0) w= *((const byte[256]) bitmap_plot_ylo#0)
|
||||
[190] (byte*~) bitmap_clear::bitmap#5 ← (byte*)(word~) bitmap_clear::$3
|
||||
to:bitmap_clear::@1
|
||||
bitmap_clear::@1: scope:[bitmap_clear] from bitmap_clear bitmap_clear::@3
|
||||
[192] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
|
||||
[192] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
|
||||
[191] (byte) bitmap_clear::y#4 ← phi( bitmap_clear/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@3/(byte) bitmap_clear::y#1 )
|
||||
[191] (byte*) bitmap_clear::bitmap#3 ← phi( bitmap_clear/(byte*~) bitmap_clear::bitmap#5 bitmap_clear::@3/(byte*) bitmap_clear::bitmap#1 )
|
||||
to:bitmap_clear::@2
|
||||
bitmap_clear::@2: scope:[bitmap_clear] from bitmap_clear::@1 bitmap_clear::@2
|
||||
[193] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
|
||||
[193] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
||||
[194] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[195] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
|
||||
[196] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
|
||||
[197] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
|
||||
[192] (byte) bitmap_clear::x#2 ← phi( bitmap_clear::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_clear::@2/(byte) bitmap_clear::x#1 )
|
||||
[192] (byte*) bitmap_clear::bitmap#2 ← phi( bitmap_clear::@1/(byte*) bitmap_clear::bitmap#3 bitmap_clear::@2/(byte*) bitmap_clear::bitmap#1 )
|
||||
[193] *((byte*) bitmap_clear::bitmap#2) ← (byte/signed byte/word/signed word/dword/signed dword) 0
|
||||
[194] (byte*) bitmap_clear::bitmap#1 ← ++ (byte*) bitmap_clear::bitmap#2
|
||||
[195] (byte) bitmap_clear::x#1 ← ++ (byte) bitmap_clear::x#2
|
||||
[196] if((byte) bitmap_clear::x#1!=(byte/word/signed word/dword/signed dword) 200) goto bitmap_clear::@2
|
||||
to:bitmap_clear::@3
|
||||
bitmap_clear::@3: scope:[bitmap_clear] from bitmap_clear::@2
|
||||
[198] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
|
||||
[199] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
|
||||
[197] (byte) bitmap_clear::y#1 ← ++ (byte) bitmap_clear::y#4
|
||||
[198] if((byte) bitmap_clear::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 40) goto bitmap_clear::@1
|
||||
to:bitmap_clear::@return
|
||||
bitmap_clear::@return: scope:[bitmap_clear] from bitmap_clear::@3
|
||||
[200] return
|
||||
[199] return
|
||||
to:@return
|
||||
bitmap_init: scope:[bitmap_init] from main::@9
|
||||
[201] phi()
|
||||
[200] phi()
|
||||
to:bitmap_init::@1
|
||||
bitmap_init::@1: scope:[bitmap_init] from bitmap_init bitmap_init::@2
|
||||
[202] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[202] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[203] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[204] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[205] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
|
||||
[201] (byte) bitmap_init::x#2 ← phi( bitmap_init/(byte/signed byte/word/signed word/dword/signed dword) 0 bitmap_init::@2/(byte) bitmap_init::x#1 )
|
||||
[201] (byte) bitmap_init::bits#3 ← phi( bitmap_init/(byte/word/signed word/dword/signed dword) 128 bitmap_init::@2/(byte) bitmap_init::bits#4 )
|
||||
[202] *((const byte[256]) bitmap_plot_bit#0 + (byte) bitmap_init::x#2) ← (byte) bitmap_init::bits#3
|
||||
[203] (byte) bitmap_init::bits#1 ← (byte) bitmap_init::bits#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[204] if((byte) bitmap_init::bits#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@10
|
||||
to:bitmap_init::@2
|
||||
bitmap_init::@2: scope:[bitmap_init] from bitmap_init::@1 bitmap_init::@10
|
||||
[206] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[207] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[208] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
|
||||
[205] (byte) bitmap_init::bits#4 ← phi( bitmap_init::@10/(byte) bitmap_init::bits#1 bitmap_init::@1/(byte/word/signed word/dword/signed dword) 128 )
|
||||
[206] (byte) bitmap_init::x#1 ← ++ (byte) bitmap_init::x#2
|
||||
[207] if((byte) bitmap_init::x#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@1
|
||||
to:bitmap_init::@3
|
||||
bitmap_init::@3: scope:[bitmap_init] from bitmap_init::@2 bitmap_init::@4
|
||||
[209] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
|
||||
[209] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[210] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[211] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[212] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
||||
[213] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[214] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[215] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[216] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[217] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
|
||||
[208] (byte*) bitmap_init::yoffs#2 ← phi( bitmap_init::@4/(byte*) bitmap_init::yoffs#4 bitmap_init::@2/(const byte*) BITMAP#0 )
|
||||
[208] (byte) bitmap_init::y#2 ← phi( bitmap_init::@4/(byte) bitmap_init::y#1 bitmap_init::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[209] (byte~) bitmap_init::$3 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[210] (byte~) bitmap_init::$4 ← < (byte*) bitmap_init::yoffs#2
|
||||
[211] (byte~) bitmap_init::$5 ← (byte~) bitmap_init::$3 | (byte~) bitmap_init::$4
|
||||
[212] *((const byte[256]) bitmap_plot_ylo#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$5
|
||||
[213] (byte~) bitmap_init::$6 ← > (byte*) bitmap_init::yoffs#2
|
||||
[214] *((const byte[256]) bitmap_plot_yhi#0 + (byte) bitmap_init::y#2) ← (byte~) bitmap_init::$6
|
||||
[215] (byte~) bitmap_init::$7 ← (byte) bitmap_init::y#2 & (byte/signed byte/word/signed word/dword/signed dword) 7
|
||||
[216] if((byte~) bitmap_init::$7!=(byte/signed byte/word/signed word/dword/signed dword) 7) goto bitmap_init::@4
|
||||
to:bitmap_init::@7
|
||||
bitmap_init::@7: scope:[bitmap_init] from bitmap_init::@3
|
||||
[218] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
[217] (byte*) bitmap_init::yoffs#1 ← (byte*) bitmap_init::yoffs#2 + (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 8
|
||||
to:bitmap_init::@4
|
||||
bitmap_init::@4: scope:[bitmap_init] from bitmap_init::@3 bitmap_init::@7
|
||||
[219] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
||||
[220] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[221] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
|
||||
[218] (byte*) bitmap_init::yoffs#4 ← phi( bitmap_init::@3/(byte*) bitmap_init::yoffs#2 bitmap_init::@7/(byte*) bitmap_init::yoffs#1 )
|
||||
[219] (byte) bitmap_init::y#1 ← ++ (byte) bitmap_init::y#2
|
||||
[220] if((byte) bitmap_init::y#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto bitmap_init::@3
|
||||
to:bitmap_init::@return
|
||||
bitmap_init::@return: scope:[bitmap_init] from bitmap_init::@4
|
||||
[222] return
|
||||
[221] return
|
||||
to:@return
|
||||
bitmap_init::@10: scope:[bitmap_init] from bitmap_init::@1
|
||||
[223] phi()
|
||||
[222] phi()
|
||||
to:bitmap_init::@2
|
||||
fill: scope:[fill] from main::@8
|
||||
[224] phi()
|
||||
[223] phi()
|
||||
to:fill::@1
|
||||
fill::@1: scope:[fill] from fill fill::@1
|
||||
[225] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[226] *((byte*) fill::addr#2) ← (const byte) WHITE#0
|
||||
[227] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[228] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1
|
||||
[224] (byte*) fill::addr#2 ← phi( fill/(const byte*) SCREEN#0 fill::@1/(byte*) fill::addr#1 )
|
||||
[225] *((byte*) fill::addr#2) ← (const byte) WHITE#0
|
||||
[226] (byte*) fill::addr#1 ← ++ (byte*) fill::addr#2
|
||||
[227] if((byte*) fill::addr#1!=(const byte*) fill::end#0) goto fill::@1
|
||||
to:fill::@return
|
||||
fill::@return: scope:[fill] from fill::@1
|
||||
[229] return
|
||||
[228] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -274,7 +274,6 @@
|
||||
(const byte) main::vicSelectGfxBank1_toDd001_return#0 vicSelectGfxBank1_toDd001_return = (byte/signed byte/word/signed word/dword/signed dword) 3^>((word))(const byte*) SCREEN#0>>(byte/signed byte/word/signed word/dword/signed dword) 6
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:6 4.0
|
||||
(word~) mul16s::$5 $5 zp ZP_WORD:2 20.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:6 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
@ -477,7 +476,7 @@
|
||||
(signed word) wrap_y::y#6 y zp ZP_WORD:6 203.0
|
||||
(signed word) wrap_y::y#9 y zp ZP_WORD:6 24.0
|
||||
|
||||
zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 mul16s::$5 ]
|
||||
zp ZP_WORD:2 [ render_sine::sin_idx#2 render_sine::sin_idx#1 sin16s_gen2::sintab#2 sin16s_gen2::sintab#0 divr16u::rem#5 divr16u::rem#10 divr16u::rem#4 divr16u::rem#11 divr16u::rem#6 divr16u::rem#0 divr16u::rem#1 divr16u::rem#2 rem16u#1 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::$3 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 fill::addr#2 fill::addr#1 ]
|
||||
zp ZP_WORD:4 [ render_sine::xpos#3 render_sine::xpos#8 render_sine::xpos#1 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 sin16s_gen2::i#2 sin16s_gen2::i#1 divr16u::dividend#3 divr16u::dividend#5 divr16u::dividend#0 ]
|
||||
reg byte x [ bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 ]
|
||||
zp ZP_WORD:6 [ wrap_y::y#6 wrap_y::y#4 wrap_y::y#9 wrap_y::y#0 wrap_y::y#1 wrap_y::y#2 wrap_y::y#3 render_sine::sin_val#0 render_sine::sin2_val#0 render_sine::$0 render_sine::$1 render_sine::$4 render_sine::$5 mul16u::b#2 mul16u::b#1 mulu16_sel::v2#5 mulu16_sel::v2#3 mulu16_sel::v2#4 mulu16_sel::v2#0 mulu16_sel::v2#1 divr16u::quotient#3 divr16u::return#0 divr16u::quotient#1 divr16u::quotient#2 divr16u::return#2 divr16u::return#3 div32u16u::quotient_lo#0 bitmap_plot::$3 bitmap_plot::plotter#1 sin16s_gen2::$6 sin16s_gen2::$8 mul16s::$6 mul16s::$16 mulu16_sel::return#0 mulu16_sel::return#12 mulu16_sel::return#2 sin16s::x3_6#0 mulu16_sel::return#11 sin16s::x5#0 sin16s::x5_128#0 ]
|
||||
|
@ -246,194 +246,193 @@ mul8su::@4: scope:[mul8su] from mul8su
|
||||
[121] if((signed byte) mul8su::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8su::@1
|
||||
to:mul8su::@2
|
||||
mul8su::@2: scope:[mul8su] from mul8su::@4
|
||||
[122] (byte~) mul8su::$5 ← > (word) mul8su::m#0
|
||||
[123] (byte~) mul8su::$6 ← > (word) mul8su::m#0
|
||||
[124] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0
|
||||
[125] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10
|
||||
[122] (byte~) mul8su::$6 ← > (word) mul8su::m#0
|
||||
[123] (byte~) mul8su::$10 ← (byte~) mul8su::$6 - ((byte))(const byte) mul8su::b#0
|
||||
[124] (word) mul8su::m#1 ← (word) mul8su::m#0 hi= (byte~) mul8su::$10
|
||||
to:mul8su::@1
|
||||
mul8su::@1: scope:[mul8su] from mul8su::@2 mul8su::@4
|
||||
[126] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 )
|
||||
[125] (word) mul8su::m#2 ← phi( mul8su::@2/(word) mul8su::m#1 mul8su::@4/(word) mul8su::m#0 )
|
||||
to:mul8su::@return
|
||||
mul8su::@return: scope:[mul8su] from mul8su::@1
|
||||
[127] return
|
||||
[126] return
|
||||
to:@return
|
||||
mul8u: scope:[mul8u] from mul8su mulu8_sel
|
||||
[128] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 )
|
||||
[128] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 )
|
||||
[129] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2
|
||||
[127] (byte) mul8u::a#6 ← phi( mul8su/(byte~) mul8u::a#8 mulu8_sel/(byte) mul8u::a#2 )
|
||||
[127] (byte) mul8u::b#2 ← phi( mul8su/((byte))(const byte) mul8su::b#0 mulu8_sel/(byte) mul8u::b#1 )
|
||||
[128] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2
|
||||
to:mul8u::@1
|
||||
mul8u::@1: scope:[mul8u] from mul8u mul8u::@4
|
||||
[130] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
|
||||
[130] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 )
|
||||
[130] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
|
||||
[131] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
[129] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
|
||||
[129] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 )
|
||||
[129] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
|
||||
[130] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
to:mul8u::@return
|
||||
mul8u::@return: scope:[mul8u] from mul8u::@1
|
||||
[132] return
|
||||
[131] return
|
||||
to:@return
|
||||
mul8u::@2: scope:[mul8u] from mul8u::@1
|
||||
[133] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[134] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
[132] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[133] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
to:mul8u::@7
|
||||
mul8u::@7: scope:[mul8u] from mul8u::@2
|
||||
[135] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
[134] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
to:mul8u::@4
|
||||
mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7
|
||||
[136] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 )
|
||||
[137] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[138] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[135] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 )
|
||||
[136] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[137] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul8u::@1
|
||||
sin8s: scope:[sin8s] from sin8u_table::@1
|
||||
[139] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1
|
||||
[138] if((word) sin8s::x#2<(const word) PI_u4f12#0) goto sin8s::@1
|
||||
to:sin8s::@5
|
||||
sin8s::@5: scope:[sin8s] from sin8s
|
||||
[140] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0
|
||||
[139] (word) sin8s::x#0 ← (word) sin8s::x#2 - (const word) PI_u4f12#0
|
||||
to:sin8s::@1
|
||||
sin8s::@1: scope:[sin8s] from sin8s sin8s::@5
|
||||
[141] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[141] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 )
|
||||
[142] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2
|
||||
[140] (byte) sin8s::isUpper#10 ← phi( sin8s/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@5/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[140] (word) sin8s::x#4 ← phi( sin8s/(word) sin8s::x#2 sin8s::@5/(word) sin8s::x#0 )
|
||||
[141] if((word) sin8s::x#4<(const word) PI_HALF_u4f12#0) goto sin8s::@2
|
||||
to:sin8s::@6
|
||||
sin8s::@6: scope:[sin8s] from sin8s::@1
|
||||
[143] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4
|
||||
[142] (word) sin8s::x#1 ← (const word) PI_u4f12#0 - (word) sin8s::x#4
|
||||
to:sin8s::@2
|
||||
sin8s::@2: scope:[sin8s] from sin8s::@1 sin8s::@6
|
||||
[144] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 )
|
||||
[145] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[146] (byte) sin8s::x1#0 ← > (word~) sin8s::$6
|
||||
[147] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0
|
||||
[148] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0
|
||||
[149] call mulu8_sel
|
||||
[150] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12
|
||||
[143] (word) sin8s::x#6 ← phi( sin8s::@1/(word) sin8s::x#4 sin8s::@6/(word) sin8s::x#1 )
|
||||
[144] (word~) sin8s::$6 ← (word) sin8s::x#6 << (byte/signed byte/word/signed word/dword/signed dword) 3
|
||||
[145] (byte) sin8s::x1#0 ← > (word~) sin8s::$6
|
||||
[146] (byte) mulu8_sel::v1#0 ← (byte) sin8s::x1#0
|
||||
[147] (byte) mulu8_sel::v2#0 ← (byte) sin8s::x1#0
|
||||
[148] call mulu8_sel
|
||||
[149] (byte) mulu8_sel::return#0 ← (byte) mulu8_sel::return#12
|
||||
to:sin8s::@10
|
||||
sin8s::@10: scope:[sin8s] from sin8s::@2
|
||||
[151] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0
|
||||
[152] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0
|
||||
[153] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0
|
||||
[154] call mulu8_sel
|
||||
[155] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12
|
||||
[150] (byte) sin8s::x2#0 ← (byte) mulu8_sel::return#0
|
||||
[151] (byte) mulu8_sel::v1#1 ← (byte) sin8s::x2#0
|
||||
[152] (byte) mulu8_sel::v2#1 ← (byte) sin8s::x1#0
|
||||
[153] call mulu8_sel
|
||||
[154] (byte) mulu8_sel::return#1 ← (byte) mulu8_sel::return#12
|
||||
to:sin8s::@11
|
||||
sin8s::@11: scope:[sin8s] from sin8s::@10
|
||||
[156] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1
|
||||
[157] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0
|
||||
[158] call mulu8_sel
|
||||
[159] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12
|
||||
[155] (byte) sin8s::x3#0 ← (byte) mulu8_sel::return#1
|
||||
[156] (byte) mulu8_sel::v1#2 ← (byte) sin8s::x3#0
|
||||
[157] call mulu8_sel
|
||||
[158] (byte) mulu8_sel::return#2 ← (byte) mulu8_sel::return#12
|
||||
to:sin8s::@12
|
||||
sin8s::@12: scope:[sin8s] from sin8s::@11
|
||||
[160] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2
|
||||
[161] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0
|
||||
[162] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0
|
||||
[163] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0
|
||||
[164] call mulu8_sel
|
||||
[165] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12
|
||||
[159] (byte) sin8s::x3_6#0 ← (byte) mulu8_sel::return#2
|
||||
[160] (byte) sin8s::usinx#0 ← (byte) sin8s::x1#0 - (byte) sin8s::x3_6#0
|
||||
[161] (byte) mulu8_sel::v1#3 ← (byte) sin8s::x3#0
|
||||
[162] (byte) mulu8_sel::v2#3 ← (byte) sin8s::x1#0
|
||||
[163] call mulu8_sel
|
||||
[164] (byte) mulu8_sel::return#10 ← (byte) mulu8_sel::return#12
|
||||
to:sin8s::@13
|
||||
sin8s::@13: scope:[sin8s] from sin8s::@12
|
||||
[166] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10
|
||||
[167] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0
|
||||
[168] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0
|
||||
[169] call mulu8_sel
|
||||
[170] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12
|
||||
[165] (byte) sin8s::x4#0 ← (byte) mulu8_sel::return#10
|
||||
[166] (byte) mulu8_sel::v1#4 ← (byte) sin8s::x4#0
|
||||
[167] (byte) mulu8_sel::v2#4 ← (byte) sin8s::x1#0
|
||||
[168] call mulu8_sel
|
||||
[169] (byte) mulu8_sel::return#11 ← (byte) mulu8_sel::return#12
|
||||
to:sin8s::@14
|
||||
sin8s::@14: scope:[sin8s] from sin8s::@13
|
||||
[171] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11
|
||||
[172] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[173] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0
|
||||
[174] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3
|
||||
[170] (byte) sin8s::x5#0 ← (byte) mulu8_sel::return#11
|
||||
[171] (byte) sin8s::x5_128#0 ← (byte) sin8s::x5#0 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[172] (byte) sin8s::usinx#1 ← (byte) sin8s::usinx#0 + (byte) sin8s::x5_128#0
|
||||
[173] if((byte) sin8s::usinx#1<(byte/word/signed word/dword/signed dword) 128) goto sin8s::@3
|
||||
to:sin8s::@7
|
||||
sin8s::@7: scope:[sin8s] from sin8s::@14
|
||||
[175] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1
|
||||
[174] (byte) sin8s::usinx#2 ← -- (byte) sin8s::usinx#1
|
||||
to:sin8s::@3
|
||||
sin8s::@3: scope:[sin8s] from sin8s::@14 sin8s::@7
|
||||
[176] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 )
|
||||
[177] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18
|
||||
[175] (byte) sin8s::usinx#4 ← phi( sin8s::@14/(byte) sin8s::usinx#1 sin8s::@7/(byte) sin8s::usinx#2 )
|
||||
[176] if((byte) sin8s::isUpper#10==(byte/signed byte/word/signed word/dword/signed dword) 0) goto sin8s::@18
|
||||
to:sin8s::@8
|
||||
sin8s::@8: scope:[sin8s] from sin8s::@3
|
||||
[178] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4
|
||||
[177] (signed byte) sin8s::sinx#1 ← - (signed byte)(byte) sin8s::usinx#4
|
||||
to:sin8s::@4
|
||||
sin8s::@4: scope:[sin8s] from sin8s::@18 sin8s::@8
|
||||
[179] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 )
|
||||
[178] (signed byte) sin8s::return#0 ← phi( sin8s::@18/(signed byte~) sin8s::return#5 sin8s::@8/(signed byte) sin8s::sinx#1 )
|
||||
to:sin8s::@return
|
||||
sin8s::@return: scope:[sin8s] from sin8s::@4
|
||||
[180] return
|
||||
[179] return
|
||||
to:@return
|
||||
sin8s::@18: scope:[sin8s] from sin8s::@3
|
||||
[181] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4
|
||||
[180] (signed byte~) sin8s::return#5 ← (signed byte)(byte) sin8s::usinx#4
|
||||
to:sin8s::@4
|
||||
mulu8_sel: scope:[mulu8_sel] from sin8s::@10 sin8s::@11 sin8s::@12 sin8s::@13 sin8s::@2
|
||||
[182] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[182] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 )
|
||||
[182] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 )
|
||||
[183] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5
|
||||
[184] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5
|
||||
[185] call mul8u
|
||||
[186] (word) mul8u::return#3 ← (word) mul8u::res#2
|
||||
[181] (byte) mulu8_sel::select#5 ← phi( sin8s::@10/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@11/(byte/signed byte/word/signed word/dword/signed dword) 1 sin8s::@12/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@13/(byte/signed byte/word/signed word/dword/signed dword) 0 sin8s::@2/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[181] (byte) mulu8_sel::v2#5 ← phi( sin8s::@10/(byte) mulu8_sel::v2#1 sin8s::@11/(const byte) sin8s::DIV_6#0 sin8s::@12/(byte) mulu8_sel::v2#3 sin8s::@13/(byte) mulu8_sel::v2#4 sin8s::@2/(byte) mulu8_sel::v2#0 )
|
||||
[181] (byte) mulu8_sel::v1#5 ← phi( sin8s::@10/(byte) mulu8_sel::v1#1 sin8s::@11/(byte) mulu8_sel::v1#2 sin8s::@12/(byte) mulu8_sel::v1#3 sin8s::@13/(byte) mulu8_sel::v1#4 sin8s::@2/(byte) mulu8_sel::v1#0 )
|
||||
[182] (byte) mul8u::a#2 ← (byte) mulu8_sel::v1#5
|
||||
[183] (byte) mul8u::b#1 ← (byte) mulu8_sel::v2#5
|
||||
[184] call mul8u
|
||||
[185] (word) mul8u::return#3 ← (word) mul8u::res#2
|
||||
to:mulu8_sel::@2
|
||||
mulu8_sel::@2: scope:[mulu8_sel] from mulu8_sel
|
||||
[187] (word~) mulu8_sel::$0 ← (word) mul8u::return#3
|
||||
[188] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5
|
||||
[189] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1
|
||||
[186] (word~) mulu8_sel::$0 ← (word) mul8u::return#3
|
||||
[187] (word~) mulu8_sel::$1 ← (word~) mulu8_sel::$0 << (byte) mulu8_sel::select#5
|
||||
[188] (byte) mulu8_sel::return#12 ← > (word~) mulu8_sel::$1
|
||||
to:mulu8_sel::@return
|
||||
mulu8_sel::@return: scope:[mulu8_sel] from mulu8_sel::@2
|
||||
[190] return
|
||||
[189] return
|
||||
to:@return
|
||||
div16u: scope:[div16u] from sin8u_table
|
||||
[191] phi()
|
||||
[192] call divr16u
|
||||
[193] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
[190] phi()
|
||||
[191] call divr16u
|
||||
[192] (word) divr16u::return#2 ← (word) divr16u::return#0
|
||||
to:div16u::@2
|
||||
div16u::@2: scope:[div16u] from div16u
|
||||
[194] (word) div16u::return#0 ← (word) divr16u::return#2
|
||||
[193] (word) div16u::return#0 ← (word) divr16u::return#2
|
||||
to:div16u::@return
|
||||
div16u::@return: scope:[div16u] from div16u::@2
|
||||
[195] return
|
||||
[194] return
|
||||
to:@return
|
||||
divr16u: scope:[divr16u] from div16u
|
||||
[196] phi()
|
||||
[195] phi()
|
||||
to:divr16u::@1
|
||||
divr16u::@1: scope:[divr16u] from divr16u divr16u::@3
|
||||
[197] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[197] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[197] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[197] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 )
|
||||
[198] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[199] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
|
||||
[200] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[201] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
[196] (byte) divr16u::i#2 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(byte) divr16u::i#1 )
|
||||
[196] (word) divr16u::quotient#3 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::return#0 )
|
||||
[196] (word) divr16u::dividend#2 ← phi( divr16u/(const word) PI2_u4f12#0 divr16u::@3/(word) divr16u::dividend#0 )
|
||||
[196] (word) divr16u::rem#4 ← phi( divr16u/(byte/signed byte/word/signed word/dword/signed dword) 0 divr16u::@3/(word) divr16u::rem#10 )
|
||||
[197] (word) divr16u::rem#0 ← (word) divr16u::rem#4 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[198] (byte~) divr16u::$1 ← > (word) divr16u::dividend#2
|
||||
[199] (byte~) divr16u::$2 ← (byte~) divr16u::$1 & (byte/word/signed word/dword/signed dword) 128
|
||||
[200] if((byte~) divr16u::$2==(byte/signed byte/word/signed word/dword/signed dword) 0) goto divr16u::@2
|
||||
to:divr16u::@4
|
||||
divr16u::@4: scope:[divr16u] from divr16u::@1
|
||||
[202] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[201] (word) divr16u::rem#1 ← (word) divr16u::rem#0 | (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:divr16u::@2
|
||||
divr16u::@2: scope:[divr16u] from divr16u::@1 divr16u::@4
|
||||
[203] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[204] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[205] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[206] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3
|
||||
[202] (word) divr16u::rem#5 ← phi( divr16u::@1/(word) divr16u::rem#0 divr16u::@4/(word) divr16u::rem#1 )
|
||||
[203] (word) divr16u::dividend#0 ← (word) divr16u::dividend#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[204] (word) divr16u::quotient#1 ← (word) divr16u::quotient#3 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[205] if((word) divr16u::rem#5<(const word) main::tabsize#0) goto divr16u::@3
|
||||
to:divr16u::@5
|
||||
divr16u::@5: scope:[divr16u] from divr16u::@2
|
||||
[207] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[208] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0
|
||||
[206] (word) divr16u::quotient#2 ← ++ (word) divr16u::quotient#1
|
||||
[207] (word) divr16u::rem#2 ← (word) divr16u::rem#5 - (const word) main::tabsize#0
|
||||
to:divr16u::@3
|
||||
divr16u::@3: scope:[divr16u] from divr16u::@2 divr16u::@5
|
||||
[209] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[209] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[210] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[211] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
[208] (word) divr16u::return#0 ← phi( divr16u::@2/(word) divr16u::quotient#1 divr16u::@5/(word) divr16u::quotient#2 )
|
||||
[208] (word) divr16u::rem#10 ← phi( divr16u::@2/(word) divr16u::rem#5 divr16u::@5/(word) divr16u::rem#2 )
|
||||
[209] (byte) divr16u::i#1 ← ++ (byte) divr16u::i#2
|
||||
[210] if((byte) divr16u::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto divr16u::@1
|
||||
to:divr16u::@6
|
||||
divr16u::@6: scope:[divr16u] from divr16u::@3
|
||||
[212] (word) rem16u#1 ← (word) divr16u::rem#10
|
||||
[211] (word) rem16u#1 ← (word) divr16u::rem#10
|
||||
to:divr16u::@return
|
||||
divr16u::@return: scope:[divr16u] from divr16u::@6
|
||||
[213] return
|
||||
[212] return
|
||||
to:@return
|
||||
print_cls: scope:[print_cls] from main
|
||||
[214] phi()
|
||||
[213] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[215] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[216] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[217] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[218] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[214] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[215] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[216] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[217] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[219] return
|
||||
[218] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -58,7 +58,6 @@
|
||||
(const word) main::tabsize#0 tabsize = (byte/signed byte/word/signed word/dword/signed dword) 20
|
||||
(signed word()) mul8su((signed byte) mul8su::a , (byte) mul8su::b)
|
||||
(byte~) mul8su::$10 reg byte a 4.0
|
||||
(byte~) mul8su::$5 reg byte a 20.0
|
||||
(byte~) mul8su::$6 reg byte a 4.0
|
||||
(label) mul8su::@1
|
||||
(label) mul8su::@2
|
||||
@ -351,7 +350,6 @@ reg byte a [ sin8u_table::$21 ]
|
||||
reg byte x [ sin8u_table::sinx_tr#0 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
reg byte a [ mul8su::$5 ]
|
||||
reg byte a [ mul8su::$6 ]
|
||||
reg byte a [ mul8su::$10 ]
|
||||
reg byte a [ mul8u::$1 ]
|
||||
|
@ -4,9 +4,7 @@
|
||||
.label print_line_cursor = 6
|
||||
.label print_char_cursor = 8
|
||||
main: {
|
||||
.label _1 = 6
|
||||
.label _2 = $a
|
||||
.label _4 = 6
|
||||
.label _5 = $a
|
||||
.label _15 = $a
|
||||
.label _19 = $a
|
||||
@ -34,10 +32,6 @@ main: {
|
||||
lda #>$12345678>>$10
|
||||
sta dw+3
|
||||
b1:
|
||||
lda dw+2
|
||||
sta _1
|
||||
lda dw+3
|
||||
sta _1+1
|
||||
lda dw+2
|
||||
sta _2
|
||||
lda dw+3
|
||||
@ -57,11 +51,6 @@ main: {
|
||||
sta dw2+2
|
||||
lda _32+1
|
||||
sta dw2+3
|
||||
// Test set/get high word of dword
|
||||
lda dw2
|
||||
sta _4
|
||||
lda dw2+1
|
||||
sta _4+1
|
||||
lda dw
|
||||
sta _5
|
||||
lda dw+1
|
||||
|
@ -15,151 +15,149 @@ main::@1: scope:[main] from main main::@18
|
||||
[6] (byte*) print_line_cursor#19 ← phi( main::@18/(byte*) print_line_cursor#1 main/((byte*))(word/signed word/dword/signed dword) 1024 )
|
||||
[6] (byte*) print_char_cursor#69 ← phi( main::@18/(byte*~) print_char_cursor#72 main/((byte*))(word/signed word/dword/signed dword) 1024 )
|
||||
[6] (dword) main::dw#10 ← phi( main::@18/(dword) main::dw#1 main/(dword/signed dword) 305419896 )
|
||||
[7] (word~) main::$1 ← > (dword) main::dw#10
|
||||
[8] (word~) main::$2 ← > (dword) main::dw#10
|
||||
[9] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369
|
||||
[10] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32
|
||||
[11] (word~) main::$4 ← < (dword) main::dw2#1
|
||||
[12] (word~) main::$5 ← < (dword) main::dw#10
|
||||
[13] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369
|
||||
[14] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33
|
||||
[15] (dword) print_dword::dw#0 ← (dword) main::dw2#10
|
||||
[16] call print_dword
|
||||
[7] (word~) main::$2 ← > (dword) main::dw#10
|
||||
[8] (word/signed dword/dword~) main::$32 ← (word~) main::$2 + (word/signed word/dword/signed dword) 4369
|
||||
[9] (dword) main::dw2#1 ← (dword) main::dw#10 hi= (word/signed dword/dword~) main::$32
|
||||
[10] (word~) main::$5 ← < (dword) main::dw#10
|
||||
[11] (word/signed dword/dword~) main::$33 ← (word~) main::$5 + (word/signed word/dword/signed dword) 4369
|
||||
[12] (dword) main::dw2#10 ← (dword) main::dw2#1 lo= (word/signed dword/dword~) main::$33
|
||||
[13] (dword) print_dword::dw#0 ← (dword) main::dw2#10
|
||||
[14] call print_dword
|
||||
to:main::@4
|
||||
main::@4: scope:[main] from main::@1
|
||||
[17] phi()
|
||||
[18] call print_char
|
||||
[15] phi()
|
||||
[16] call print_char
|
||||
to:main::@5
|
||||
main::@5: scope:[main] from main::@4
|
||||
[19] (word) print_word::w#2 ← > (dword) main::dw2#10
|
||||
[20] call print_word
|
||||
[17] (word) print_word::w#2 ← > (dword) main::dw2#10
|
||||
[18] call print_word
|
||||
to:main::@6
|
||||
main::@6: scope:[main] from main::@5
|
||||
[21] phi()
|
||||
[22] call print_char
|
||||
[19] phi()
|
||||
[20] call print_char
|
||||
to:main::@7
|
||||
main::@7: scope:[main] from main::@6
|
||||
[23] (word) print_word::w#3 ← < (dword) main::dw2#10
|
||||
[24] call print_word
|
||||
[21] (word) print_word::w#3 ← < (dword) main::dw2#10
|
||||
[22] call print_word
|
||||
to:main::@8
|
||||
main::@8: scope:[main] from main::@7
|
||||
[25] phi()
|
||||
[26] call print_char
|
||||
[23] phi()
|
||||
[24] call print_char
|
||||
to:main::@9
|
||||
main::@9: scope:[main] from main::@8
|
||||
[27] (word~) main::$15 ← > (dword) main::dw2#10
|
||||
[28] (byte) print_byte::b#2 ← > (word~) main::$15
|
||||
[29] call print_byte
|
||||
[25] (word~) main::$15 ← > (dword) main::dw2#10
|
||||
[26] (byte) print_byte::b#2 ← > (word~) main::$15
|
||||
[27] call print_byte
|
||||
to:main::@10
|
||||
main::@10: scope:[main] from main::@9
|
||||
[30] phi()
|
||||
[31] call print_char
|
||||
[28] phi()
|
||||
[29] call print_char
|
||||
to:main::@11
|
||||
main::@11: scope:[main] from main::@10
|
||||
[32] (word~) main::$19 ← > (dword) main::dw2#10
|
||||
[33] (byte) print_byte::b#3 ← < (word~) main::$19
|
||||
[34] call print_byte
|
||||
[30] (word~) main::$19 ← > (dword) main::dw2#10
|
||||
[31] (byte) print_byte::b#3 ← < (word~) main::$19
|
||||
[32] call print_byte
|
||||
to:main::@12
|
||||
main::@12: scope:[main] from main::@11
|
||||
[35] phi()
|
||||
[36] call print_char
|
||||
[33] phi()
|
||||
[34] call print_char
|
||||
to:main::@13
|
||||
main::@13: scope:[main] from main::@12
|
||||
[37] (word~) main::$23 ← < (dword) main::dw2#10
|
||||
[38] (byte) print_byte::b#4 ← > (word~) main::$23
|
||||
[39] call print_byte
|
||||
[35] (word~) main::$23 ← < (dword) main::dw2#10
|
||||
[36] (byte) print_byte::b#4 ← > (word~) main::$23
|
||||
[37] call print_byte
|
||||
to:main::@14
|
||||
main::@14: scope:[main] from main::@13
|
||||
[40] phi()
|
||||
[41] call print_char
|
||||
[38] phi()
|
||||
[39] call print_char
|
||||
to:main::@15
|
||||
main::@15: scope:[main] from main::@14
|
||||
[42] (word~) main::$27 ← < (dword) main::dw2#10
|
||||
[43] (byte) print_byte::b#5 ← < (word~) main::$27
|
||||
[44] call print_byte
|
||||
[40] (word~) main::$27 ← < (dword) main::dw2#10
|
||||
[41] (byte) print_byte::b#5 ← < (word~) main::$27
|
||||
[42] call print_byte
|
||||
to:main::@16
|
||||
main::@16: scope:[main] from main::@15
|
||||
[45] phi()
|
||||
[46] call print_ln
|
||||
[43] phi()
|
||||
[44] call print_ln
|
||||
to:main::@17
|
||||
main::@17: scope:[main] from main::@16
|
||||
[47] (dword) main::dw#1 ← ++ (dword) main::dw#10
|
||||
[48] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18
|
||||
[45] (dword) main::dw#1 ← ++ (dword) main::dw#10
|
||||
[46] if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@18
|
||||
to:main::@return
|
||||
main::@return: scope:[main] from main::@17
|
||||
[49] return
|
||||
[47] return
|
||||
to:@return
|
||||
main::@18: scope:[main] from main::@17
|
||||
[50] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1
|
||||
[48] (byte*~) print_char_cursor#72 ← (byte*) print_line_cursor#1
|
||||
to:main::@1
|
||||
print_ln: scope:[print_ln] from main::@16
|
||||
[51] phi()
|
||||
[49] phi()
|
||||
to:print_ln::@1
|
||||
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
||||
[52] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 )
|
||||
[53] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
[54] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1
|
||||
[50] (byte*) print_line_cursor#9 ← phi( print_ln/(byte*) print_line_cursor#19 print_ln::@1/(byte*) print_line_cursor#1 )
|
||||
[51] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40
|
||||
[52] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1
|
||||
to:print_ln::@return
|
||||
print_ln::@return: scope:[print_ln] from print_ln::@1
|
||||
[55] return
|
||||
[53] return
|
||||
to:@return
|
||||
print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 print_word print_word::@1
|
||||
[56] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 )
|
||||
[56] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
|
||||
[57] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[58] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
|
||||
[59] call print_char
|
||||
[54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 )
|
||||
[54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 )
|
||||
[55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4
|
||||
[56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0)
|
||||
[57] call print_char
|
||||
to:print_byte::@1
|
||||
print_byte::@1: scope:[print_byte] from print_byte
|
||||
[60] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
[61] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
|
||||
[62] call print_char
|
||||
[58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15
|
||||
[59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2)
|
||||
[60] call print_char
|
||||
to:print_byte::@return
|
||||
print_byte::@return: scope:[print_byte] from print_byte::@1
|
||||
[63] return
|
||||
[61] return
|
||||
to:@return
|
||||
print_char: scope:[print_char] from main::@10 main::@12 main::@14 main::@4 main::@6 main::@8 print_byte print_byte::@1
|
||||
[64] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 )
|
||||
[64] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
|
||||
[65] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8
|
||||
[66] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44
|
||||
[62] (byte*) print_char_cursor#44 ← phi( main::@10/(byte*) print_char_cursor#12 main::@12/(byte*) print_char_cursor#12 main::@14/(byte*) print_char_cursor#12 main::@4/(byte*) print_char_cursor#12 main::@6/(byte*) print_char_cursor#12 main::@8/(byte*) print_char_cursor#12 print_byte/(byte*) print_char_cursor#67 print_byte::@1/(byte*) print_char_cursor#12 )
|
||||
[62] (byte) print_char::ch#8 ← phi( main::@10/(byte) ' ' main::@12/(byte) ' ' main::@14/(byte) ' ' main::@4/(byte) ' ' main::@6/(byte) ' ' main::@8/(byte) ' ' print_byte/(byte) print_char::ch#0 print_byte::@1/(byte) print_char::ch#1 )
|
||||
[63] *((byte*) print_char_cursor#44) ← (byte) print_char::ch#8
|
||||
[64] (byte*) print_char_cursor#12 ← ++ (byte*) print_char_cursor#44
|
||||
to:print_char::@return
|
||||
print_char::@return: scope:[print_char] from print_char
|
||||
[67] return
|
||||
[65] return
|
||||
to:@return
|
||||
print_word: scope:[print_word] from main::@5 main::@7 print_dword print_dword::@1
|
||||
[68] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 )
|
||||
[68] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 )
|
||||
[69] (byte) print_byte::b#0 ← > (word) print_word::w#4
|
||||
[70] call print_byte
|
||||
[66] (byte*) print_char_cursor#65 ← phi( main::@5/(byte*) print_char_cursor#12 main::@7/(byte*) print_char_cursor#12 print_dword/(byte*) print_char_cursor#69 print_dword::@1/(byte*) print_char_cursor#12 )
|
||||
[66] (word) print_word::w#4 ← phi( main::@5/(word) print_word::w#2 main::@7/(word) print_word::w#3 print_dword/(word) print_word::w#0 print_dword::@1/(word) print_word::w#1 )
|
||||
[67] (byte) print_byte::b#0 ← > (word) print_word::w#4
|
||||
[68] call print_byte
|
||||
to:print_word::@1
|
||||
print_word::@1: scope:[print_word] from print_word
|
||||
[71] (byte) print_byte::b#1 ← < (word) print_word::w#4
|
||||
[72] call print_byte
|
||||
[69] (byte) print_byte::b#1 ← < (word) print_word::w#4
|
||||
[70] call print_byte
|
||||
to:print_word::@return
|
||||
print_word::@return: scope:[print_word] from print_word::@1
|
||||
[73] return
|
||||
[71] return
|
||||
to:@return
|
||||
print_dword: scope:[print_dword] from main::@1
|
||||
[74] (word) print_word::w#0 ← > (dword) print_dword::dw#0
|
||||
[75] call print_word
|
||||
[72] (word) print_word::w#0 ← > (dword) print_dword::dw#0
|
||||
[73] call print_word
|
||||
to:print_dword::@1
|
||||
print_dword::@1: scope:[print_dword] from print_dword
|
||||
[76] (word) print_word::w#1 ← < (dword) print_dword::dw#0
|
||||
[77] call print_word
|
||||
[74] (word) print_word::w#1 ← < (dword) print_dword::dw#0
|
||||
[75] call print_word
|
||||
to:print_dword::@return
|
||||
print_dword::@return: scope:[print_dword] from print_dword::@1
|
||||
[78] return
|
||||
[76] return
|
||||
to:@return
|
||||
print_cls: scope:[print_cls] from main
|
||||
[79] phi()
|
||||
[77] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[80] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[81] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[82] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[83] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[78] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[79] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[80] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[81] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[84] return
|
||||
[82] return
|
||||
to:@return
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,6 @@
|
||||
(label) @begin
|
||||
(label) @end
|
||||
(void()) main()
|
||||
(word~) main::$1 $1 zp ZP_WORD:6 110.0
|
||||
(word~) main::$15 $15 zp ZP_WORD:10 22.0
|
||||
(word~) main::$19 $19 zp ZP_WORD:10 22.0
|
||||
(word~) main::$2 $2 zp ZP_WORD:10 22.0
|
||||
@ -10,7 +9,6 @@
|
||||
(word~) main::$27 $27 zp ZP_WORD:10 22.0
|
||||
(word/signed dword/dword~) main::$32 $32 zp ZP_WORD:10 22.0
|
||||
(word/signed dword/dword~) main::$33 $33 zp ZP_WORD:10 22.0
|
||||
(word~) main::$4 $4 zp ZP_WORD:6 110.0
|
||||
(word~) main::$5 $5 zp ZP_WORD:10 22.0
|
||||
(label) main::@1
|
||||
(label) main::@10
|
||||
@ -31,9 +29,9 @@
|
||||
(label) main::@return
|
||||
(dword) main::dw
|
||||
(dword) main::dw#1 dw zp ZP_DWORD:2 11.0
|
||||
(dword) main::dw#10 dw zp ZP_DWORD:2 1.6097560975609757
|
||||
(dword) main::dw#10 dw zp ZP_DWORD:2 1.4102564102564101
|
||||
(dword) main::dw2
|
||||
(dword) main::dw2#1 dw2 zp ZP_DWORD:12 8.25
|
||||
(dword) main::dw2#1 dw2 zp ZP_DWORD:12 7.333333333333333
|
||||
(dword) main::dw2#10 dw2 zp ZP_DWORD:12 3.142857142857143
|
||||
(void()) print_byte((byte) print_byte::b)
|
||||
(byte~) print_byte::$0 reg byte a 4.0
|
||||
@ -59,7 +57,7 @@
|
||||
(byte*) print_char_cursor#44 print_char_cursor zp ZP_WORD:8 37.0
|
||||
(byte*) print_char_cursor#65 print_char_cursor zp ZP_WORD:8 14.0
|
||||
(byte*) print_char_cursor#67 print_char_cursor zp ZP_WORD:8 16.666666666666664
|
||||
(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.1818181818181819
|
||||
(byte*) print_char_cursor#69 print_char_cursor zp ZP_WORD:8 1.4444444444444446
|
||||
(byte*~) print_char_cursor#72 print_char_cursor zp ZP_WORD:8 22.0
|
||||
(void()) print_cls()
|
||||
(label) print_cls::@1
|
||||
@ -76,7 +74,7 @@
|
||||
(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef"
|
||||
(byte*) print_line_cursor
|
||||
(byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143
|
||||
(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3170731707317073
|
||||
(byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333
|
||||
(byte*) print_line_cursor#9 print_line_cursor zp ZP_WORD:6 204.0
|
||||
(void()) print_ln()
|
||||
(label) print_ln::@1
|
||||
@ -93,7 +91,7 @@
|
||||
(word) print_word::w#4 w zp ZP_WORD:10 9.999999999999998
|
||||
|
||||
zp ZP_DWORD:2 [ main::dw#10 main::dw#1 ]
|
||||
zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 main::$1 main::$4 ]
|
||||
zp ZP_WORD:6 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
reg byte x [ print_byte::b#6 print_byte::b#3 print_byte::b#4 print_byte::b#5 print_byte::b#2 print_byte::b#0 print_byte::b#1 ]
|
||||
reg byte a [ print_char::ch#8 print_char::ch#0 print_char::ch#1 ]
|
||||
zp ZP_WORD:8 [ print_char_cursor#44 print_char_cursor#67 print_char_cursor#12 print_char_cursor#65 print_char_cursor#69 print_char_cursor#72 ]
|
||||
|
@ -341,9 +341,7 @@ print_sword: {
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mulf16s(signed word zeropage(3) a, signed word zeropage(5) b)
|
||||
mulf16s: {
|
||||
.label _5 = 3
|
||||
.label _6 = 9
|
||||
.label _11 = 3
|
||||
.label _12 = 9
|
||||
.label _16 = 9
|
||||
.label _17 = 9
|
||||
@ -363,10 +361,6 @@ mulf16s: {
|
||||
lda a+1
|
||||
bpl b1
|
||||
lda m+2
|
||||
sta _5
|
||||
lda m+3
|
||||
sta _5+1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
@ -385,10 +379,6 @@ mulf16s: {
|
||||
lda b+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _11
|
||||
lda m+3
|
||||
sta _11+1
|
||||
lda m+2
|
||||
sta _12
|
||||
lda m+3
|
||||
sta _12+1
|
||||
@ -530,9 +520,7 @@ mulf16u: {
|
||||
// Fixes offsets introduced by using unsigned multiplication
|
||||
// mul16s(signed word zeropage(3) a, signed word zeropage(5) b)
|
||||
mul16s: {
|
||||
.label _5 = 3
|
||||
.label _6 = 9
|
||||
.label _11 = 3
|
||||
.label _12 = 9
|
||||
.label _16 = 9
|
||||
.label _17 = 9
|
||||
@ -552,10 +540,6 @@ mul16s: {
|
||||
lda a+1
|
||||
bpl b1
|
||||
lda m+2
|
||||
sta _5
|
||||
lda m+3
|
||||
sta _5+1
|
||||
lda m+2
|
||||
sta _6
|
||||
lda m+3
|
||||
sta _6+1
|
||||
@ -574,10 +558,6 @@ mul16s: {
|
||||
lda b+1
|
||||
bpl b2
|
||||
lda m+2
|
||||
sta _11
|
||||
lda m+3
|
||||
sta _11+1
|
||||
lda m+2
|
||||
sta _12
|
||||
lda m+3
|
||||
sta _12+1
|
||||
|
@ -288,336 +288,332 @@ mulf16s::@6: scope:[mulf16s] from mulf16s
|
||||
[141] if((signed word) mulf16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@1
|
||||
to:mulf16s::@3
|
||||
mulf16s::@3: scope:[mulf16s] from mulf16s::@6
|
||||
[142] (word~) mulf16s::$5 ← > (dword) mulf16s::m#0
|
||||
[143] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0
|
||||
[144] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0
|
||||
[145] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16
|
||||
[142] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0
|
||||
[143] (word~) mulf16s::$16 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#0
|
||||
[144] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$16
|
||||
to:mulf16s::@1
|
||||
mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@6
|
||||
[146] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 )
|
||||
[147] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2
|
||||
[145] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@6/(dword) mulf16s::m#0 )
|
||||
[146] if((signed word) mulf16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf16s::@2
|
||||
to:mulf16s::@4
|
||||
mulf16s::@4: scope:[mulf16s] from mulf16s::@1
|
||||
[148] (word~) mulf16s::$11 ← > (dword) mulf16s::m#5
|
||||
[149] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5
|
||||
[150] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0
|
||||
[151] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17
|
||||
[147] (word~) mulf16s::$12 ← > (dword) mulf16s::m#5
|
||||
[148] (word~) mulf16s::$17 ← (word~) mulf16s::$12 - (word)(signed word) mulf16s::a#0
|
||||
[149] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$17
|
||||
to:mulf16s::@2
|
||||
mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4
|
||||
[152] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
|
||||
[153] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4
|
||||
[150] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
|
||||
[151] (signed dword) mulf16s::return#0 ← ((signed dword)) (dword) mulf16s::m#4
|
||||
to:mulf16s::@return
|
||||
mulf16s::@return: scope:[mulf16s] from mulf16s::@2
|
||||
[154] return
|
||||
[152] return
|
||||
to:@return
|
||||
mulf16u: scope:[mulf16u] from mul16u_compare::@14 mulf16s
|
||||
[155] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 )
|
||||
[155] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 )
|
||||
[156] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2
|
||||
[157] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2
|
||||
[153] (word) mulf16u::b#2 ← phi( mul16u_compare::@14/(word) mulf16u::b#1 mulf16s/(word~) mulf16u::b#4 )
|
||||
[153] (word) mulf16u::a#2 ← phi( mul16u_compare::@14/(word) mulf16u::a#1 mulf16s/(word~) mulf16u::a#4 )
|
||||
[154] *((const word*) mulf16u::memA#0) ← (word) mulf16u::a#2
|
||||
[155] *((const word*) mulf16u::memB#0) ← (word) mulf16u::b#2
|
||||
asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: }
|
||||
[159] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0)
|
||||
[157] (dword) mulf16u::return#0 ← *((const dword*) mulf16u::memR#0)
|
||||
to:mulf16u::@return
|
||||
mulf16u::@return: scope:[mulf16u] from mulf16u
|
||||
[160] return
|
||||
[158] return
|
||||
to:@return
|
||||
mul16s: scope:[mul16s] from mul16s_compare::@13
|
||||
[161] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0
|
||||
[162] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0
|
||||
[163] call mul16u
|
||||
[164] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
[159] (word~) mul16u::b#3 ← (word)(signed word) mul16s::b#0
|
||||
[160] (word~) mul16u::a#8 ← (word)(signed word) mul16s::a#0
|
||||
[161] call mul16u
|
||||
[162] (dword) mul16u::return#2 ← (dword) mul16u::res#2
|
||||
to:mul16s::@6
|
||||
mul16s::@6: scope:[mul16s] from mul16s
|
||||
[165] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[166] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
[163] (dword) mul16s::m#0 ← (dword) mul16u::return#2
|
||||
[164] if((signed word) mul16s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@1
|
||||
to:mul16s::@3
|
||||
mul16s::@3: scope:[mul16s] from mul16s::@6
|
||||
[167] (word~) mul16s::$5 ← > (dword) mul16s::m#0
|
||||
[168] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[169] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0
|
||||
[170] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
[165] (word~) mul16s::$6 ← > (dword) mul16s::m#0
|
||||
[166] (word~) mul16s::$16 ← (word~) mul16s::$6 - (word)(signed word) mul16s::b#0
|
||||
[167] (dword) mul16s::m#1 ← (dword) mul16s::m#0 hi= (word~) mul16s::$16
|
||||
to:mul16s::@1
|
||||
mul16s::@1: scope:[mul16s] from mul16s::@3 mul16s::@6
|
||||
[171] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
[172] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2
|
||||
[168] (dword) mul16s::m#5 ← phi( mul16s::@3/(dword) mul16s::m#1 mul16s::@6/(dword) mul16s::m#0 )
|
||||
[169] if((signed word) mul16s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16s::@2
|
||||
to:mul16s::@4
|
||||
mul16s::@4: scope:[mul16s] from mul16s::@1
|
||||
[173] (word~) mul16s::$11 ← > (dword) mul16s::m#5
|
||||
[174] (word~) mul16s::$12 ← > (dword) mul16s::m#5
|
||||
[175] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0
|
||||
[176] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
|
||||
[170] (word~) mul16s::$12 ← > (dword) mul16s::m#5
|
||||
[171] (word~) mul16s::$17 ← (word~) mul16s::$12 - (word)(signed word) mul16s::a#0
|
||||
[172] (dword) mul16s::m#2 ← (dword) mul16s::m#5 hi= (word~) mul16s::$17
|
||||
to:mul16s::@2
|
||||
mul16s::@2: scope:[mul16s] from mul16s::@1 mul16s::@4
|
||||
[177] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
|
||||
[178] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
[173] (dword) mul16s::m#4 ← phi( mul16s::@1/(dword) mul16s::m#5 mul16s::@4/(dword) mul16s::m#2 )
|
||||
[174] (signed dword) mul16s::return#0 ← ((signed dword)) (dword) mul16s::m#4
|
||||
to:mul16s::@return
|
||||
mul16s::@return: scope:[mul16s] from mul16s::@2
|
||||
[179] return
|
||||
[175] return
|
||||
to:@return
|
||||
mul16u: scope:[mul16u] from mul16s mul16u_compare::@13
|
||||
[180] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 )
|
||||
[180] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 )
|
||||
[181] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
[176] (word) mul16u::a#6 ← phi( mul16s/(word~) mul16u::a#8 mul16u_compare::@13/(word) mul16u::a#2 )
|
||||
[176] (word) mul16u::b#2 ← phi( mul16s/(word~) mul16u::b#3 mul16u_compare::@13/(word) mul16u::b#1 )
|
||||
[177] (dword) mul16u::mb#0 ← ((dword)) (word) mul16u::b#2
|
||||
to:mul16u::@1
|
||||
mul16u::@1: scope:[mul16u] from mul16u mul16u::@4
|
||||
[182] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[182] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[182] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[183] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
[178] (dword) mul16u::mb#2 ← phi( mul16u/(dword) mul16u::mb#0 mul16u::@4/(dword) mul16u::mb#1 )
|
||||
[178] (dword) mul16u::res#2 ← phi( mul16u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u::@4/(dword) mul16u::res#6 )
|
||||
[178] (word) mul16u::a#3 ← phi( mul16u/(word) mul16u::a#6 mul16u::@4/(word) mul16u::a#0 )
|
||||
[179] if((word) mul16u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@2
|
||||
to:mul16u::@return
|
||||
mul16u::@return: scope:[mul16u] from mul16u::@1
|
||||
[184] return
|
||||
[180] return
|
||||
to:@return
|
||||
mul16u::@2: scope:[mul16u] from mul16u::@1
|
||||
[185] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[186] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
[181] (byte/word~) mul16u::$1 ← (word) mul16u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[182] if((byte/word~) mul16u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u::@4
|
||||
to:mul16u::@7
|
||||
mul16u::@7: scope:[mul16u] from mul16u::@2
|
||||
[187] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
[183] (dword) mul16u::res#1 ← (dword) mul16u::res#2 + (dword) mul16u::mb#2
|
||||
to:mul16u::@4
|
||||
mul16u::@4: scope:[mul16u] from mul16u::@2 mul16u::@7
|
||||
[188] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[189] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[190] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[184] (dword) mul16u::res#6 ← phi( mul16u::@2/(dword) mul16u::res#2 mul16u::@7/(dword) mul16u::res#1 )
|
||||
[185] (word) mul16u::a#0 ← (word) mul16u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[186] (dword) mul16u::mb#1 ← (dword) mul16u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul16u::@1
|
||||
muls16s: scope:[muls16s] from mul16s_compare::@2
|
||||
[191] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5
|
||||
[187] if((signed word) muls16s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@5
|
||||
to:muls16s::@6
|
||||
muls16s::@6: scope:[muls16s] from muls16s
|
||||
[192] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4
|
||||
[188] if((signed word) muls16s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16s::@4
|
||||
to:muls16s::@3
|
||||
muls16s::@3: scope:[muls16s] from muls16s::@3 muls16s::@6
|
||||
[193] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[193] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[194] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0
|
||||
[195] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2
|
||||
[196] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3
|
||||
[189] (signed word) muls16s::j#2 ← phi( muls16s::@3/(signed word) muls16s::j#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[189] (signed dword) muls16s::m#3 ← phi( muls16s::@3/(signed dword) muls16s::m#1 muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[190] (signed dword) muls16s::m#1 ← (signed dword) muls16s::m#3 + (signed word) muls16s::b#0
|
||||
[191] (signed word) muls16s::j#1 ← ++ (signed word) muls16s::j#2
|
||||
[192] if((signed word) muls16s::j#1!=(signed word) muls16s::a#0) goto muls16s::@3
|
||||
to:muls16s::@4
|
||||
muls16s::@4: scope:[muls16s] from muls16s::@3 muls16s::@5 muls16s::@6
|
||||
[197] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 )
|
||||
[193] (signed dword) muls16s::return#0 ← phi( muls16s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@3/(signed dword) muls16s::m#1 muls16s::@5/(signed dword) muls16s::m#2 )
|
||||
to:muls16s::@return
|
||||
muls16s::@return: scope:[muls16s] from muls16s::@4
|
||||
[198] return
|
||||
[194] return
|
||||
to:@return
|
||||
muls16s::@5: scope:[muls16s] from muls16s muls16s::@5
|
||||
[199] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 )
|
||||
[199] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 )
|
||||
[200] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0
|
||||
[201] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2
|
||||
[202] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5
|
||||
[195] (signed word) muls16s::i#2 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed word) muls16s::i#1 )
|
||||
[195] (signed dword) muls16s::m#5 ← phi( muls16s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16s::@5/(signed dword) muls16s::m#2 )
|
||||
[196] (signed dword) muls16s::m#2 ← (signed dword) muls16s::m#5 - (signed word) muls16s::b#0
|
||||
[197] (signed word) muls16s::i#1 ← -- (signed word) muls16s::i#2
|
||||
[198] if((signed word) muls16s::i#1!=(signed word) muls16s::a#0) goto muls16s::@5
|
||||
to:muls16s::@4
|
||||
mul16u_compare: scope:[mul16u_compare] from main::@2
|
||||
[203] phi()
|
||||
[199] phi()
|
||||
to:mul16u_compare::@1
|
||||
mul16u_compare::@1: scope:[mul16u_compare] from mul16u_compare mul16u_compare::@10
|
||||
[204] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 )
|
||||
[204] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 )
|
||||
[204] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 )
|
||||
[204] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 )
|
||||
[205] call print_str
|
||||
[200] (byte) mul16u_compare::i#12 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(byte) mul16u_compare::i#1 )
|
||||
[200] (word) mul16u_compare::b#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::b#1 )
|
||||
[200] (word) mul16u_compare::a#6 ← phi( mul16u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@10/(word) mul16u_compare::a#1 )
|
||||
[200] (byte*) print_char_cursor#139 ← phi( mul16u_compare/((byte*))(word/signed word/dword/signed dword) 1024 mul16u_compare::@10/(byte*) print_char_cursor#128 )
|
||||
[201] call print_str
|
||||
to:mul16u_compare::@2
|
||||
mul16u_compare::@2: scope:[mul16u_compare] from mul16u_compare::@1 mul16u_compare::@5
|
||||
[206] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 )
|
||||
[206] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 )
|
||||
[206] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 )
|
||||
[207] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371
|
||||
[208] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093
|
||||
[209] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
|
||||
[210] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
|
||||
[211] call muls16u
|
||||
[212] (dword) muls16u::return#2 ← (dword) muls16u::return#0
|
||||
[202] (byte) mul16u_compare::j#10 ← phi( mul16u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul16u_compare::@5/(byte) mul16u_compare::j#1 )
|
||||
[202] (word) mul16u_compare::b#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::b#6 mul16u_compare::@5/(word) mul16u_compare::b#1 )
|
||||
[202] (word) mul16u_compare::a#2 ← phi( mul16u_compare::@1/(word) mul16u_compare::a#6 mul16u_compare::@5/(word) mul16u_compare::a#1 )
|
||||
[203] (word) mul16u_compare::a#1 ← (word) mul16u_compare::a#2 + (word/signed word/dword/signed dword) 3371
|
||||
[204] (word) mul16u_compare::b#1 ← (word) mul16u_compare::b#2 + (word/signed word/dword/signed dword) 4093
|
||||
[205] (word) muls16u::a#0 ← (word) mul16u_compare::a#1
|
||||
[206] (word) muls16u::b#0 ← (word) mul16u_compare::b#1
|
||||
[207] call muls16u
|
||||
[208] (dword) muls16u::return#2 ← (dword) muls16u::return#0
|
||||
to:mul16u_compare::@13
|
||||
mul16u_compare::@13: scope:[mul16u_compare] from mul16u_compare::@2
|
||||
[213] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
|
||||
[214] (word) mul16u::a#2 ← (word) mul16u_compare::a#1
|
||||
[215] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
|
||||
[216] call mul16u
|
||||
[217] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
[209] (dword) mul16u_compare::ms#0 ← (dword) muls16u::return#2
|
||||
[210] (word) mul16u::a#2 ← (word) mul16u_compare::a#1
|
||||
[211] (word) mul16u::b#1 ← (word) mul16u_compare::b#1
|
||||
[212] call mul16u
|
||||
[213] (dword) mul16u::return#3 ← (dword) mul16u::res#2
|
||||
to:mul16u_compare::@14
|
||||
mul16u_compare::@14: scope:[mul16u_compare] from mul16u_compare::@13
|
||||
[218] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
|
||||
[219] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
|
||||
[220] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
|
||||
[221] call mulf16u
|
||||
[222] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
|
||||
[214] (dword) mul16u_compare::mn#0 ← (dword) mul16u::return#3
|
||||
[215] (word) mulf16u::a#1 ← (word) mul16u_compare::a#1
|
||||
[216] (word) mulf16u::b#1 ← (word) mul16u_compare::b#1
|
||||
[217] call mulf16u
|
||||
[218] (dword) mulf16u::return#3 ← (dword) mulf16u::return#0
|
||||
to:mul16u_compare::@15
|
||||
mul16u_compare::@15: scope:[mul16u_compare] from mul16u_compare::@14
|
||||
[223] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
|
||||
[224] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3
|
||||
[219] (dword) mul16u_compare::mf#0 ← (dword) mulf16u::return#3
|
||||
[220] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mf#0) goto mul16u_compare::@3
|
||||
to:mul16u_compare::@6
|
||||
mul16u_compare::@6: scope:[mul16u_compare] from mul16u_compare::@15
|
||||
[225] phi()
|
||||
[221] phi()
|
||||
to:mul16u_compare::@3
|
||||
mul16u_compare::@3: scope:[mul16u_compare] from mul16u_compare::@15 mul16u_compare::@6
|
||||
[226] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[227] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22
|
||||
[222] (byte) mul16u_compare::ok#4 ← phi( mul16u_compare::@15/(byte/signed byte/word/signed word/dword/signed dword) 1 mul16u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[223] if((dword) mul16u_compare::ms#0==(dword) mul16u_compare::mn#0) goto mul16u_compare::@22
|
||||
to:mul16u_compare::@4
|
||||
mul16u_compare::@4: scope:[mul16u_compare] from mul16u_compare::@22 mul16u_compare::@3
|
||||
[228] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[229] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5
|
||||
[224] (byte) mul16u_compare::ok#3 ← phi( mul16u_compare::@22/(byte) mul16u_compare::ok#4 mul16u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[225] if((byte) mul16u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul16u_compare::@5
|
||||
to:mul16u_compare::@8
|
||||
mul16u_compare::@8: scope:[mul16u_compare] from mul16u_compare::@4
|
||||
[230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[231] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1
|
||||
[232] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
|
||||
[233] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
|
||||
[234] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
|
||||
[235] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
|
||||
[236] call mul16u_error
|
||||
[226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[227] (word) mul16u_error::a#0 ← (word) mul16u_compare::a#1
|
||||
[228] (word) mul16u_error::b#0 ← (word) mul16u_compare::b#1
|
||||
[229] (dword) mul16u_error::ms#0 ← (dword) mul16u_compare::ms#0
|
||||
[230] (dword) mul16u_error::mn#0 ← (dword) mul16u_compare::mn#0
|
||||
[231] (dword) mul16u_error::mf#0 ← (dword) mul16u_compare::mf#0
|
||||
[232] call mul16u_error
|
||||
to:mul16u_compare::@return
|
||||
mul16u_compare::@return: scope:[mul16u_compare] from mul16u_compare::@18 mul16u_compare::@8
|
||||
[237] return
|
||||
[233] return
|
||||
to:@return
|
||||
mul16u_compare::@5: scope:[mul16u_compare] from mul16u_compare::@4
|
||||
[238] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10
|
||||
[239] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2
|
||||
[234] (byte) mul16u_compare::j#1 ← ++ (byte) mul16u_compare::j#10
|
||||
[235] if((byte) mul16u_compare::j#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@2
|
||||
to:mul16u_compare::@10
|
||||
mul16u_compare::@10: scope:[mul16u_compare] from mul16u_compare::@5
|
||||
[240] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12
|
||||
[241] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1
|
||||
[236] (byte) mul16u_compare::i#1 ← ++ (byte) mul16u_compare::i#12
|
||||
[237] if((byte) mul16u_compare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 16) goto mul16u_compare::@1
|
||||
to:mul16u_compare::@11
|
||||
mul16u_compare::@11: scope:[mul16u_compare] from mul16u_compare::@10
|
||||
[242] phi()
|
||||
[243] call print_ln
|
||||
[238] phi()
|
||||
[239] call print_ln
|
||||
to:mul16u_compare::@17
|
||||
mul16u_compare::@17: scope:[mul16u_compare] from mul16u_compare::@11
|
||||
[244] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1
|
||||
[245] call print_str
|
||||
[240] (byte*~) print_char_cursor#192 ← (byte*) print_line_cursor#1
|
||||
[241] call print_str
|
||||
to:mul16u_compare::@18
|
||||
mul16u_compare::@18: scope:[mul16u_compare] from mul16u_compare::@17
|
||||
[246] phi()
|
||||
[247] call print_ln
|
||||
[242] phi()
|
||||
[243] call print_ln
|
||||
to:mul16u_compare::@return
|
||||
mul16u_compare::@22: scope:[mul16u_compare] from mul16u_compare::@3
|
||||
[248] phi()
|
||||
[244] phi()
|
||||
to:mul16u_compare::@4
|
||||
mul16u_error: scope:[mul16u_error] from mul16u_compare::@8
|
||||
[249] phi()
|
||||
[250] call print_str
|
||||
[245] phi()
|
||||
[246] call print_str
|
||||
to:mul16u_error::@1
|
||||
mul16u_error::@1: scope:[mul16u_error] from mul16u_error
|
||||
[251] (word) print_word::w#3 ← (word) mul16u_error::a#0
|
||||
[252] call print_word
|
||||
[247] (word) print_word::w#3 ← (word) mul16u_error::a#0
|
||||
[248] call print_word
|
||||
to:mul16u_error::@2
|
||||
mul16u_error::@2: scope:[mul16u_error] from mul16u_error::@1
|
||||
[253] phi()
|
||||
[254] call print_str
|
||||
[249] phi()
|
||||
[250] call print_str
|
||||
to:mul16u_error::@3
|
||||
mul16u_error::@3: scope:[mul16u_error] from mul16u_error::@2
|
||||
[255] (word) print_word::w#4 ← (word) mul16u_error::b#0
|
||||
[256] call print_word
|
||||
[251] (word) print_word::w#4 ← (word) mul16u_error::b#0
|
||||
[252] call print_word
|
||||
to:mul16u_error::@4
|
||||
mul16u_error::@4: scope:[mul16u_error] from mul16u_error::@3
|
||||
[257] phi()
|
||||
[258] call print_str
|
||||
[253] phi()
|
||||
[254] call print_str
|
||||
to:mul16u_error::@5
|
||||
mul16u_error::@5: scope:[mul16u_error] from mul16u_error::@4
|
||||
[259] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
|
||||
[260] call print_dword
|
||||
[255] (dword) print_dword::dw#1 ← (dword) mul16u_error::ms#0
|
||||
[256] call print_dword
|
||||
to:mul16u_error::@6
|
||||
mul16u_error::@6: scope:[mul16u_error] from mul16u_error::@5
|
||||
[261] phi()
|
||||
[262] call print_str
|
||||
[257] phi()
|
||||
[258] call print_str
|
||||
to:mul16u_error::@7
|
||||
mul16u_error::@7: scope:[mul16u_error] from mul16u_error::@6
|
||||
[263] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0
|
||||
[264] call print_dword
|
||||
[259] (dword) print_dword::dw#2 ← (dword) mul16u_error::mn#0
|
||||
[260] call print_dword
|
||||
to:mul16u_error::@8
|
||||
mul16u_error::@8: scope:[mul16u_error] from mul16u_error::@7
|
||||
[265] phi()
|
||||
[266] call print_str
|
||||
[261] phi()
|
||||
[262] call print_str
|
||||
to:mul16u_error::@9
|
||||
mul16u_error::@9: scope:[mul16u_error] from mul16u_error::@8
|
||||
[267] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0
|
||||
[268] call print_dword
|
||||
[263] (dword) print_dword::dw#3 ← (dword) mul16u_error::mf#0
|
||||
[264] call print_dword
|
||||
to:mul16u_error::@10
|
||||
mul16u_error::@10: scope:[mul16u_error] from mul16u_error::@9
|
||||
[269] phi()
|
||||
[270] call print_ln
|
||||
[265] phi()
|
||||
[266] call print_ln
|
||||
to:mul16u_error::@return
|
||||
mul16u_error::@return: scope:[mul16u_error] from mul16u_error::@10
|
||||
[271] return
|
||||
[267] return
|
||||
to:@return
|
||||
muls16u: scope:[muls16u] from mul16u_compare::@2
|
||||
[272] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1
|
||||
[268] if((word) muls16u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls16u::@1
|
||||
to:muls16u::@2
|
||||
muls16u::@2: scope:[muls16u] from muls16u muls16u::@2
|
||||
[273] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[273] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[274] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0
|
||||
[275] (word) muls16u::i#1 ← ++ (word) muls16u::i#2
|
||||
[276] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2
|
||||
[269] (word) muls16u::i#2 ← phi( muls16u::@2/(word) muls16u::i#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[269] (dword) muls16u::m#3 ← phi( muls16u::@2/(dword) muls16u::m#1 muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[270] (dword) muls16u::m#1 ← (dword) muls16u::m#3 + (word) muls16u::b#0
|
||||
[271] (word) muls16u::i#1 ← ++ (word) muls16u::i#2
|
||||
[272] if((word) muls16u::i#1!=(word) muls16u::a#0) goto muls16u::@2
|
||||
to:muls16u::@1
|
||||
muls16u::@1: scope:[muls16u] from muls16u muls16u::@2
|
||||
[277] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 )
|
||||
[273] (dword) muls16u::return#0 ← phi( muls16u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls16u::@2/(dword) muls16u::m#1 )
|
||||
to:muls16u::@return
|
||||
muls16u::@return: scope:[muls16u] from muls16u::@1
|
||||
[278] return
|
||||
[274] return
|
||||
to:@return
|
||||
mulf_init: scope:[mulf_init] from main::@1
|
||||
[279] phi()
|
||||
[275] phi()
|
||||
to:mulf_init::@1
|
||||
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
|
||||
[280] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[280] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[280] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[280] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[280] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[281] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[282] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[283] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
[276] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[276] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[276] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[276] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[276] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[277] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[278] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[279] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
to:mulf_init::@5
|
||||
mulf_init::@5: scope:[mulf_init] from mulf_init::@1
|
||||
[284] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[285] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
[280] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[281] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
to:mulf_init::@2
|
||||
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5
|
||||
[286] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[286] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[287] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[288] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[289] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[290] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[291] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[292] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[293] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[294] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
[282] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[282] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[283] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[284] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[285] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[286] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[287] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[288] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[289] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[290] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
to:mulf_init::@3
|
||||
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||
[295] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[295] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[295] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[295] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[296] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[297] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[298] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[299] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[300] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
[291] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[291] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[291] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[291] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[292] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[293] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[294] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[295] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[296] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
to:mulf_init::@4
|
||||
mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3
|
||||
[301] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[302] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[303] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
[297] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[298] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[299] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
to:mulf_init::@8
|
||||
mulf_init::@8: scope:[mulf_init] from mulf_init::@4
|
||||
[304] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[305] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
[300] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[301] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
to:mulf_init::@return
|
||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@8
|
||||
[306] return
|
||||
[302] return
|
||||
to:@return
|
||||
mulf_init::@12: scope:[mulf_init] from mulf_init::@3
|
||||
[307] phi()
|
||||
[303] phi()
|
||||
to:mulf_init::@4
|
||||
print_cls: scope:[print_cls] from main
|
||||
[308] phi()
|
||||
[304] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[309] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[310] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[311] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[312] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[305] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[306] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[307] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[308] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[313] return
|
||||
[309] return
|
||||
to:@return
|
||||
|
File diff suppressed because one or more lines are too long
@ -9,11 +9,9 @@
|
||||
(label) main::@3
|
||||
(label) main::@return
|
||||
(signed dword()) mul16s((signed word) mul16s::a , (signed word) mul16s::b)
|
||||
(word~) mul16s::$11 $11 zp ZP_WORD:3 20.0
|
||||
(word~) mul16s::$12 $12 zp ZP_WORD:9 4.0
|
||||
(word~) mul16s::$16 $16 zp ZP_WORD:9 4.0
|
||||
(word~) mul16s::$17 $17 zp ZP_WORD:9 4.0
|
||||
(word~) mul16s::$5 $5 zp ZP_WORD:3 20.0
|
||||
(word~) mul16s::$6 $6 zp ZP_WORD:9 4.0
|
||||
(label) mul16s::@1
|
||||
(label) mul16s::@2
|
||||
@ -22,15 +20,15 @@
|
||||
(label) mul16s::@6
|
||||
(label) mul16s::@return
|
||||
(signed word) mul16s::a
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:3 6.4375
|
||||
(signed word) mul16s::a#0 a zp ZP_WORD:3 7.357142857142858
|
||||
(signed word) mul16s::b
|
||||
(signed word) mul16s::b#0 b zp ZP_WORD:5 8.583333333333332
|
||||
(signed word) mul16s::b#0 b zp ZP_WORD:5 9.363636363636363
|
||||
(dword) mul16s::m
|
||||
(dword) mul16s::m#0 m zp ZP_DWORD:25 2.0
|
||||
(dword) mul16s::m#1 m zp ZP_DWORD:25 4.0
|
||||
(dword) mul16s::m#2 m zp ZP_DWORD:25 4.0
|
||||
(dword) mul16s::m#4 m zp ZP_DWORD:25 6.0
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:25 2.4
|
||||
(dword) mul16s::m#5 m zp ZP_DWORD:25 2.5
|
||||
(signed dword) mul16s::return
|
||||
(signed dword) mul16s::return#0 return zp ZP_DWORD:25 34.33333333333333
|
||||
(signed dword) mul16s::return#2 return zp ZP_DWORD:25 202.0
|
||||
@ -191,11 +189,9 @@
|
||||
(dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
|
||||
(const string) mul16u_error::str str = (string) "multiply mismatch @"
|
||||
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
|
||||
(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0
|
||||
(word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0
|
||||
(word~) mulf16s::$16 $16 zp ZP_WORD:9 4.0
|
||||
(word~) mulf16s::$17 $17 zp ZP_WORD:9 4.0
|
||||
(word~) mulf16s::$5 $5 zp ZP_WORD:3 20.0
|
||||
(word~) mulf16s::$6 $6 zp ZP_WORD:9 4.0
|
||||
(label) mulf16s::@1
|
||||
(label) mulf16s::@2
|
||||
@ -204,15 +200,15 @@
|
||||
(label) mulf16s::@6
|
||||
(label) mulf16s::@return
|
||||
(signed word) mulf16s::a
|
||||
(signed word) mulf16s::a#0 a zp ZP_WORD:3 6.4375
|
||||
(signed word) mulf16s::a#0 a zp ZP_WORD:3 7.357142857142858
|
||||
(signed word) mulf16s::b
|
||||
(signed word) mulf16s::b#0 b zp ZP_WORD:5 8.583333333333332
|
||||
(signed word) mulf16s::b#0 b zp ZP_WORD:5 9.363636363636363
|
||||
(dword) mulf16s::m
|
||||
(dword) mulf16s::m#0 m zp ZP_DWORD:17 2.0
|
||||
(dword) mulf16s::m#1 m zp ZP_DWORD:17 4.0
|
||||
(dword) mulf16s::m#2 m zp ZP_DWORD:17 4.0
|
||||
(dword) mulf16s::m#4 m zp ZP_DWORD:17 6.0
|
||||
(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.4
|
||||
(dword) mulf16s::m#5 m zp ZP_DWORD:17 2.5
|
||||
(signed dword) mulf16s::return
|
||||
(signed dword) mulf16s::return#0 return zp ZP_DWORD:17 34.33333333333333
|
||||
(signed dword) mulf16s::return#2 return zp ZP_DWORD:17 202.0
|
||||
@ -432,7 +428,7 @@
|
||||
(const string) str4 str4 = (string) " / fast:@"
|
||||
|
||||
zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
|
||||
zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ]
|
||||
zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 ]
|
||||
zp ZP_WORD:5 [ mul16s_compare::b#2 mul16s_compare::b#6 mul16s_compare::b#1 muls16s::b#0 mul16s::b#0 mulf16s::b#0 mul16s_error::b#0 mulf_init::sqr1_hi#2 mulf_init::sqr1_hi#1 mulf_init::sqr2_hi#2 mulf_init::sqr2_hi#1 ]
|
||||
reg byte y [ mul16s_compare::j#10 mul16s_compare::j#1 ]
|
||||
reg byte x [ mul16s_compare::ok#3 mul16s_compare::ok#4 ]
|
||||
|
@ -274,413 +274,409 @@ mul8s::@6: scope:[mul8s] from mul8s
|
||||
[136] if((signed byte) mul8s::a#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@1
|
||||
to:mul8s::@3
|
||||
mul8s::@3: scope:[mul8s] from mul8s::@6
|
||||
[137] (byte~) mul8s::$5 ← > (word) mul8s::m#0
|
||||
[138] (byte~) mul8s::$6 ← > (word) mul8s::m#0
|
||||
[139] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0
|
||||
[140] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16
|
||||
[137] (byte~) mul8s::$6 ← > (word) mul8s::m#0
|
||||
[138] (byte~) mul8s::$16 ← (byte~) mul8s::$6 - (byte)(signed byte) mul8s::b#0
|
||||
[139] (word) mul8s::m#1 ← (word) mul8s::m#0 hi= (byte~) mul8s::$16
|
||||
to:mul8s::@1
|
||||
mul8s::@1: scope:[mul8s] from mul8s::@3 mul8s::@6
|
||||
[141] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 )
|
||||
[142] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2
|
||||
[140] (word) mul8s::m#5 ← phi( mul8s::@3/(word) mul8s::m#1 mul8s::@6/(word) mul8s::m#0 )
|
||||
[141] if((signed byte) mul8s::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8s::@2
|
||||
to:mul8s::@4
|
||||
mul8s::@4: scope:[mul8s] from mul8s::@1
|
||||
[143] (byte~) mul8s::$11 ← > (word) mul8s::m#5
|
||||
[144] (byte~) mul8s::$12 ← > (word) mul8s::m#5
|
||||
[145] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0
|
||||
[146] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
|
||||
[142] (byte~) mul8s::$12 ← > (word) mul8s::m#5
|
||||
[143] (byte~) mul8s::$17 ← (byte~) mul8s::$12 - (byte)(signed byte) mul8s::a#0
|
||||
[144] (word) mul8s::m#2 ← (word) mul8s::m#5 hi= (byte~) mul8s::$17
|
||||
to:mul8s::@2
|
||||
mul8s::@2: scope:[mul8s] from mul8s::@1 mul8s::@4
|
||||
[147] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 )
|
||||
[145] (word) mul8s::m#4 ← phi( mul8s::@1/(word) mul8s::m#5 mul8s::@4/(word) mul8s::m#2 )
|
||||
to:mul8s::@return
|
||||
mul8s::@return: scope:[mul8s] from mul8s::@2
|
||||
[148] return
|
||||
[146] return
|
||||
to:@return
|
||||
mul8u: scope:[mul8u] from mul8s mul8u_compare::@13
|
||||
[149] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 )
|
||||
[149] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 )
|
||||
[150] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2
|
||||
[147] (byte) mul8u::a#6 ← phi( mul8s/(byte~) mul8u::a#8 mul8u_compare::@13/(byte) mul8u::a#2 )
|
||||
[147] (byte) mul8u::b#2 ← phi( mul8s/(byte~) mul8u::b#3 mul8u_compare::@13/(byte) mul8u::b#1 )
|
||||
[148] (word) mul8u::mb#0 ← ((word)) (byte) mul8u::b#2
|
||||
to:mul8u::@1
|
||||
mul8u::@1: scope:[mul8u] from mul8u mul8u::@4
|
||||
[151] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
|
||||
[151] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 )
|
||||
[151] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
|
||||
[152] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
[149] (word) mul8u::mb#2 ← phi( mul8u/(word) mul8u::mb#0 mul8u::@4/(word) mul8u::mb#1 )
|
||||
[149] (word) mul8u::res#2 ← phi( mul8u/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u::@4/(word) mul8u::res#6 )
|
||||
[149] (byte) mul8u::a#3 ← phi( mul8u/(byte) mul8u::a#6 mul8u::@4/(byte) mul8u::a#0 )
|
||||
[150] if((byte) mul8u::a#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@2
|
||||
to:mul8u::@return
|
||||
mul8u::@return: scope:[mul8u] from mul8u::@1
|
||||
[153] return
|
||||
[151] return
|
||||
to:@return
|
||||
mul8u::@2: scope:[mul8u] from mul8u::@1
|
||||
[154] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[155] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
[152] (byte~) mul8u::$1 ← (byte) mul8u::a#3 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[153] if((byte~) mul8u::$1==(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u::@4
|
||||
to:mul8u::@7
|
||||
mul8u::@7: scope:[mul8u] from mul8u::@2
|
||||
[156] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
[154] (word) mul8u::res#1 ← (word) mul8u::res#2 + (word) mul8u::mb#2
|
||||
to:mul8u::@4
|
||||
mul8u::@4: scope:[mul8u] from mul8u::@2 mul8u::@7
|
||||
[157] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 )
|
||||
[158] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[159] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[155] (word) mul8u::res#6 ← phi( mul8u::@2/(word) mul8u::res#2 mul8u::@7/(word) mul8u::res#1 )
|
||||
[156] (byte) mul8u::a#0 ← (byte) mul8u::a#3 >> (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[157] (word) mul8u::mb#1 ← (word) mul8u::mb#2 << (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
to:mul8u::@1
|
||||
mulf8s: scope:[mulf8s] from mul8s_compare::@12
|
||||
[160] phi()
|
||||
[158] phi()
|
||||
to:mulf8s::mulf8s_prepare1
|
||||
mulf8s::mulf8s_prepare1: scope:[mulf8s] from mulf8s
|
||||
[161] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0
|
||||
[162] call mulf8u_prepare
|
||||
[159] (byte~) mulf8u_prepare::a#3 ← (byte)(signed byte) mulf8s::a#0
|
||||
[160] call mulf8u_prepare
|
||||
to:mulf8s::@2
|
||||
mulf8s::@2: scope:[mulf8s] from mulf8s::mulf8s_prepare1
|
||||
[163] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0
|
||||
[164] call mulf8s_prepared
|
||||
[165] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4
|
||||
[161] (signed byte) mulf8s_prepared::b#0 ← (signed byte) mulf8s::b#0
|
||||
[162] call mulf8s_prepared
|
||||
[163] (signed word) mulf8s_prepared::return#2 ← (signed word)(word) mulf8s_prepared::m#4
|
||||
to:mulf8s::@4
|
||||
mulf8s::@4: scope:[mulf8s] from mulf8s::@2
|
||||
[166] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2
|
||||
[164] (signed word) mulf8s::return#0 ← (signed word) mulf8s_prepared::return#2
|
||||
to:mulf8s::@return
|
||||
mulf8s::@return: scope:[mulf8s] from mulf8s::@4
|
||||
[167] return
|
||||
[165] return
|
||||
to:@return
|
||||
mulf8s_prepared: scope:[mulf8s_prepared] from mulf8s::@2
|
||||
[168] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0
|
||||
[169] call mulf8u_prepared
|
||||
[170] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
|
||||
[166] (byte~) mulf8u_prepared::b#3 ← (byte)(signed byte) mulf8s_prepared::b#0
|
||||
[167] call mulf8u_prepared
|
||||
[168] (word) mulf8u_prepared::return#3 ← (word) mulf8u_prepared::return#0
|
||||
to:mulf8s_prepared::@6
|
||||
mulf8s_prepared::@6: scope:[mulf8s_prepared] from mulf8s_prepared
|
||||
[171] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
|
||||
[172] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
[169] (word) mulf8s_prepared::m#0 ← (word) mulf8u_prepared::return#3
|
||||
[170] if(*((const signed byte*) mulf8s_prepared::memA#0)>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@1
|
||||
to:mulf8s_prepared::@3
|
||||
mulf8s_prepared::@3: scope:[mulf8s_prepared] from mulf8s_prepared::@6
|
||||
[173] (byte~) mulf8s_prepared::$4 ← > (word) mulf8s_prepared::m#0
|
||||
[174] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
|
||||
[175] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0
|
||||
[176] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||
[171] (byte~) mulf8s_prepared::$5 ← > (word) mulf8s_prepared::m#0
|
||||
[172] (byte~) mulf8s_prepared::$15 ← (byte~) mulf8s_prepared::$5 - (byte)(signed byte) mulf8s_prepared::b#0
|
||||
[173] (word) mulf8s_prepared::m#1 ← (word) mulf8s_prepared::m#0 hi= (byte~) mulf8s_prepared::$15
|
||||
to:mulf8s_prepared::@1
|
||||
mulf8s_prepared::@1: scope:[mulf8s_prepared] from mulf8s_prepared::@3 mulf8s_prepared::@6
|
||||
[177] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
|
||||
[178] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
[174] (word) mulf8s_prepared::m#5 ← phi( mulf8s_prepared::@3/(word) mulf8s_prepared::m#1 mulf8s_prepared::@6/(word) mulf8s_prepared::m#0 )
|
||||
[175] if((signed byte) mulf8s_prepared::b#0>=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf8s_prepared::@2
|
||||
to:mulf8s_prepared::@4
|
||||
mulf8s_prepared::@4: scope:[mulf8s_prepared] from mulf8s_prepared::@1
|
||||
[179] (byte~) mulf8s_prepared::$10 ← > (word) mulf8s_prepared::m#5
|
||||
[180] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
|
||||
[181] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
|
||||
[182] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||
[176] (byte~) mulf8s_prepared::$11 ← > (word) mulf8s_prepared::m#5
|
||||
[177] (byte~) mulf8s_prepared::$16 ← (byte~) mulf8s_prepared::$11 - (byte)*((const signed byte*) mulf8s_prepared::memA#0)
|
||||
[178] (word) mulf8s_prepared::m#2 ← (word) mulf8s_prepared::m#5 hi= (byte~) mulf8s_prepared::$16
|
||||
to:mulf8s_prepared::@2
|
||||
mulf8s_prepared::@2: scope:[mulf8s_prepared] from mulf8s_prepared::@1 mulf8s_prepared::@4
|
||||
[183] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||
[179] (word) mulf8s_prepared::m#4 ← phi( mulf8s_prepared::@1/(word) mulf8s_prepared::m#5 mulf8s_prepared::@4/(word) mulf8s_prepared::m#2 )
|
||||
to:mulf8s_prepared::@return
|
||||
mulf8s_prepared::@return: scope:[mulf8s_prepared] from mulf8s_prepared::@2
|
||||
[184] return
|
||||
[180] return
|
||||
to:@return
|
||||
mulf8u_prepared: scope:[mulf8u_prepared] from mulf8s_prepared mulf8u::@2
|
||||
[185] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 )
|
||||
[186] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2
|
||||
[181] (byte) mulf8u_prepared::b#2 ← phi( mulf8s_prepared/(byte~) mulf8u_prepared::b#3 mulf8u::@2/(byte) mulf8u_prepared::b#0 )
|
||||
[182] *((const byte*) mulf8u_prepared::memB#0) ← (byte) mulf8u_prepared::b#2
|
||||
asm { ldxmemB sec sm1: ldamulf_sqr1_lo,x sm2: sbcmulf_sqr2_lo,x staresL sm3: ldamulf_sqr1_hi,x sm4: sbcmulf_sqr2_hi,x stamemB }
|
||||
[188] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
|
||||
[184] (word) mulf8u_prepared::return#0 ← *((const byte*) mulf8u_prepared::memB#0) w= *((const byte*) mulf8u_prepared::resL#0)
|
||||
to:mulf8u_prepared::@return
|
||||
mulf8u_prepared::@return: scope:[mulf8u_prepared] from mulf8u_prepared
|
||||
[189] return
|
||||
[185] return
|
||||
to:@return
|
||||
mulf8u_prepare: scope:[mulf8u_prepare] from mulf8s::mulf8s_prepare1 mulf8u
|
||||
[190] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 )
|
||||
[191] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
|
||||
[186] (byte) mulf8u_prepare::a#2 ← phi( mulf8s::mulf8s_prepare1/(byte~) mulf8u_prepare::a#3 mulf8u/(byte) mulf8u_prepare::a#0 )
|
||||
[187] *((const byte*) mulf8u_prepare::memA#0) ← (byte) mulf8u_prepare::a#2
|
||||
asm { ldamemA stamulf8u_prepared.sm1+1 stamulf8u_prepared.sm3+1 eor#$ff stamulf8u_prepared.sm2+1 stamulf8u_prepared.sm4+1 }
|
||||
to:mulf8u_prepare::@return
|
||||
mulf8u_prepare::@return: scope:[mulf8u_prepare] from mulf8u_prepare
|
||||
[193] return
|
||||
[189] return
|
||||
to:@return
|
||||
muls8s: scope:[muls8s] from mul8s_compare::@2
|
||||
[194] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5
|
||||
[190] if((signed byte) muls8s::a#0<(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@5
|
||||
to:muls8s::@6
|
||||
muls8s::@6: scope:[muls8s] from muls8s
|
||||
[195] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4
|
||||
[191] if((signed byte) muls8s::a#0<=(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8s::@4
|
||||
to:muls8s::@3
|
||||
muls8s::@3: scope:[muls8s] from muls8s::@3 muls8s::@6
|
||||
[196] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[196] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[197] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0
|
||||
[198] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
|
||||
[199] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3
|
||||
[192] (signed byte) muls8s::j#2 ← phi( muls8s::@3/(signed byte) muls8s::j#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[192] (signed word) muls8s::m#3 ← phi( muls8s::@3/(signed word) muls8s::m#1 muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[193] (signed word) muls8s::m#1 ← (signed word) muls8s::m#3 + (signed byte) muls8s::b#0
|
||||
[194] (signed byte) muls8s::j#1 ← ++ (signed byte) muls8s::j#2
|
||||
[195] if((signed byte) muls8s::j#1!=(signed byte) muls8s::a#0) goto muls8s::@3
|
||||
to:muls8s::@4
|
||||
muls8s::@4: scope:[muls8s] from muls8s::@3 muls8s::@5 muls8s::@6
|
||||
[200] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 )
|
||||
[196] (signed word) muls8s::return#0 ← phi( muls8s::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@3/(signed word) muls8s::m#1 muls8s::@5/(signed word) muls8s::m#2 )
|
||||
to:muls8s::@return
|
||||
muls8s::@return: scope:[muls8s] from muls8s::@4
|
||||
[201] return
|
||||
[197] return
|
||||
to:@return
|
||||
muls8s::@5: scope:[muls8s] from muls8s muls8s::@5
|
||||
[202] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 )
|
||||
[202] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 )
|
||||
[203] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0
|
||||
[204] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
|
||||
[205] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5
|
||||
[198] (signed byte) muls8s::i#2 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed byte) muls8s::i#1 )
|
||||
[198] (signed word) muls8s::m#5 ← phi( muls8s/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8s::@5/(signed word) muls8s::m#2 )
|
||||
[199] (signed word) muls8s::m#2 ← (signed word) muls8s::m#5 - (signed byte) muls8s::b#0
|
||||
[200] (signed byte) muls8s::i#1 ← -- (signed byte) muls8s::i#2
|
||||
[201] if((signed byte) muls8s::i#1!=(signed byte) muls8s::a#0) goto muls8s::@5
|
||||
to:muls8s::@4
|
||||
mul8u_compare: scope:[mul8u_compare] from main::@4
|
||||
[206] phi()
|
||||
[202] phi()
|
||||
to:mul8u_compare::@1
|
||||
mul8u_compare::@1: scope:[mul8u_compare] from mul8u_compare mul8u_compare::@10
|
||||
[207] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 )
|
||||
[203] (byte) mul8u_compare::a#7 ← phi( mul8u_compare/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@10/(byte) mul8u_compare::a#1 )
|
||||
to:mul8u_compare::@2
|
||||
mul8u_compare::@2: scope:[mul8u_compare] from mul8u_compare::@1 mul8u_compare::@5
|
||||
[208] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
|
||||
[209] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
|
||||
[210] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
|
||||
[211] call muls8u
|
||||
[212] (word) muls8u::return#2 ← (word) muls8u::return#0
|
||||
[204] (byte) mul8u_compare::b#10 ← phi( mul8u_compare::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 mul8u_compare::@5/(byte) mul8u_compare::b#1 )
|
||||
[205] (byte) muls8u::a#0 ← (byte) mul8u_compare::a#7
|
||||
[206] (byte) muls8u::b#0 ← (byte) mul8u_compare::b#10
|
||||
[207] call muls8u
|
||||
[208] (word) muls8u::return#2 ← (word) muls8u::return#0
|
||||
to:mul8u_compare::@12
|
||||
mul8u_compare::@12: scope:[mul8u_compare] from mul8u_compare::@2
|
||||
[213] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
|
||||
[214] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
|
||||
[215] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
|
||||
[216] call mulf8u
|
||||
[217] (word) mulf8u::return#2 ← (word) mulf8u::return#0
|
||||
[209] (word) mul8u_compare::ms#0 ← (word) muls8u::return#2
|
||||
[210] (byte) mulf8u::a#0 ← (byte) mul8u_compare::a#7
|
||||
[211] (byte) mulf8u::b#0 ← (byte) mul8u_compare::b#10
|
||||
[212] call mulf8u
|
||||
[213] (word) mulf8u::return#2 ← (word) mulf8u::return#0
|
||||
to:mul8u_compare::@13
|
||||
mul8u_compare::@13: scope:[mul8u_compare] from mul8u_compare::@12
|
||||
[218] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
|
||||
[219] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
|
||||
[220] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
|
||||
[221] call mul8u
|
||||
[222] (word) mul8u::return#3 ← (word) mul8u::res#2
|
||||
[214] (word) mul8u_compare::mf#0 ← (word) mulf8u::return#2
|
||||
[215] (byte) mul8u::a#2 ← (byte) mul8u_compare::a#7
|
||||
[216] (byte) mul8u::b#1 ← (byte) mul8u_compare::b#10
|
||||
[217] call mul8u
|
||||
[218] (word) mul8u::return#3 ← (word) mul8u::res#2
|
||||
to:mul8u_compare::@14
|
||||
mul8u_compare::@14: scope:[mul8u_compare] from mul8u_compare::@13
|
||||
[223] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
|
||||
[224] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
|
||||
[219] (word) mul8u_compare::mn#0 ← (word) mul8u::return#3
|
||||
[220] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mf#0) goto mul8u_compare::@3
|
||||
to:mul8u_compare::@6
|
||||
mul8u_compare::@6: scope:[mul8u_compare] from mul8u_compare::@14
|
||||
[225] phi()
|
||||
[221] phi()
|
||||
to:mul8u_compare::@3
|
||||
mul8u_compare::@3: scope:[mul8u_compare] from mul8u_compare::@14 mul8u_compare::@6
|
||||
[226] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[227] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20
|
||||
[222] (byte) mul8u_compare::ok#4 ← phi( mul8u_compare::@14/(byte/signed byte/word/signed word/dword/signed dword) 1 mul8u_compare::@6/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[223] if((word) mul8u_compare::ms#0==(word) mul8u_compare::mn#0) goto mul8u_compare::@20
|
||||
to:mul8u_compare::@4
|
||||
mul8u_compare::@4: scope:[mul8u_compare] from mul8u_compare::@20 mul8u_compare::@3
|
||||
[228] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[229] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5
|
||||
[224] (byte) mul8u_compare::ok#3 ← phi( mul8u_compare::@20/(byte) mul8u_compare::ok#4 mul8u_compare::@3/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[225] if((byte) mul8u_compare::ok#3!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@5
|
||||
to:mul8u_compare::@8
|
||||
mul8u_compare::@8: scope:[mul8u_compare] from mul8u_compare::@4
|
||||
[230] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[231] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
|
||||
[232] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
|
||||
[233] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
|
||||
[234] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
|
||||
[235] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
|
||||
[236] call mul8u_error
|
||||
[226] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[227] (byte) mul8u_error::a#0 ← (byte) mul8u_compare::a#7
|
||||
[228] (byte) mul8u_error::b#0 ← (byte) mul8u_compare::b#10
|
||||
[229] (word) mul8u_error::ms#0 ← (word) mul8u_compare::ms#0
|
||||
[230] (word) mul8u_error::mn#0 ← (word) mul8u_compare::mn#0
|
||||
[231] (word) mul8u_error::mf#0 ← (word) mul8u_compare::mf#0
|
||||
[232] call mul8u_error
|
||||
to:mul8u_compare::@return
|
||||
mul8u_compare::@return: scope:[mul8u_compare] from mul8u_compare::@16 mul8u_compare::@8
|
||||
[237] return
|
||||
[233] return
|
||||
to:@return
|
||||
mul8u_compare::@5: scope:[mul8u_compare] from mul8u_compare::@4
|
||||
[238] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
|
||||
[239] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2
|
||||
[234] (byte) mul8u_compare::b#1 ← ++ (byte) mul8u_compare::b#10
|
||||
[235] if((byte) mul8u_compare::b#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@2
|
||||
to:mul8u_compare::@10
|
||||
mul8u_compare::@10: scope:[mul8u_compare] from mul8u_compare::@5
|
||||
[240] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
|
||||
[241] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1
|
||||
[236] (byte) mul8u_compare::a#1 ← ++ (byte) mul8u_compare::a#7
|
||||
[237] if((byte) mul8u_compare::a#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mul8u_compare::@1
|
||||
to:mul8u_compare::@11
|
||||
mul8u_compare::@11: scope:[mul8u_compare] from mul8u_compare::@10
|
||||
[242] phi()
|
||||
[243] call print_str
|
||||
[238] phi()
|
||||
[239] call print_str
|
||||
to:mul8u_compare::@16
|
||||
mul8u_compare::@16: scope:[mul8u_compare] from mul8u_compare::@11
|
||||
[244] phi()
|
||||
[245] call print_ln
|
||||
[240] phi()
|
||||
[241] call print_ln
|
||||
to:mul8u_compare::@return
|
||||
mul8u_compare::@20: scope:[mul8u_compare] from mul8u_compare::@3
|
||||
[246] phi()
|
||||
[242] phi()
|
||||
to:mul8u_compare::@4
|
||||
mul8u_error: scope:[mul8u_error] from mul8u_compare::@8
|
||||
[247] phi()
|
||||
[248] call print_str
|
||||
[243] phi()
|
||||
[244] call print_str
|
||||
to:mul8u_error::@1
|
||||
mul8u_error::@1: scope:[mul8u_error] from mul8u_error
|
||||
[249] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
|
||||
[250] call print_byte
|
||||
[245] (byte) print_byte::b#3 ← (byte) mul8u_error::a#0
|
||||
[246] call print_byte
|
||||
to:mul8u_error::@2
|
||||
mul8u_error::@2: scope:[mul8u_error] from mul8u_error::@1
|
||||
[251] phi()
|
||||
[252] call print_str
|
||||
[247] phi()
|
||||
[248] call print_str
|
||||
to:mul8u_error::@3
|
||||
mul8u_error::@3: scope:[mul8u_error] from mul8u_error::@2
|
||||
[253] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
|
||||
[254] call print_byte
|
||||
[249] (byte) print_byte::b#4 ← (byte) mul8u_error::b#0
|
||||
[250] call print_byte
|
||||
to:mul8u_error::@4
|
||||
mul8u_error::@4: scope:[mul8u_error] from mul8u_error::@3
|
||||
[255] phi()
|
||||
[256] call print_str
|
||||
[251] phi()
|
||||
[252] call print_str
|
||||
to:mul8u_error::@5
|
||||
mul8u_error::@5: scope:[mul8u_error] from mul8u_error::@4
|
||||
[257] (word) print_word::w#3 ← (word) mul8u_error::ms#0
|
||||
[258] call print_word
|
||||
[253] (word) print_word::w#3 ← (word) mul8u_error::ms#0
|
||||
[254] call print_word
|
||||
to:mul8u_error::@6
|
||||
mul8u_error::@6: scope:[mul8u_error] from mul8u_error::@5
|
||||
[259] phi()
|
||||
[260] call print_str
|
||||
[255] phi()
|
||||
[256] call print_str
|
||||
to:mul8u_error::@7
|
||||
mul8u_error::@7: scope:[mul8u_error] from mul8u_error::@6
|
||||
[261] (word) print_word::w#4 ← (word) mul8u_error::mn#0
|
||||
[262] call print_word
|
||||
[257] (word) print_word::w#4 ← (word) mul8u_error::mn#0
|
||||
[258] call print_word
|
||||
to:mul8u_error::@8
|
||||
mul8u_error::@8: scope:[mul8u_error] from mul8u_error::@7
|
||||
[263] phi()
|
||||
[264] call print_str
|
||||
[259] phi()
|
||||
[260] call print_str
|
||||
to:mul8u_error::@9
|
||||
mul8u_error::@9: scope:[mul8u_error] from mul8u_error::@8
|
||||
[265] (word) print_word::w#5 ← (word) mul8u_error::mf#0
|
||||
[266] call print_word
|
||||
[261] (word) print_word::w#5 ← (word) mul8u_error::mf#0
|
||||
[262] call print_word
|
||||
to:mul8u_error::@10
|
||||
mul8u_error::@10: scope:[mul8u_error] from mul8u_error::@9
|
||||
[267] phi()
|
||||
[268] call print_ln
|
||||
[263] phi()
|
||||
[264] call print_ln
|
||||
to:mul8u_error::@return
|
||||
mul8u_error::@return: scope:[mul8u_error] from mul8u_error::@10
|
||||
[269] return
|
||||
[265] return
|
||||
to:@return
|
||||
mulf8u: scope:[mulf8u] from mul8u_compare::@12
|
||||
[270] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
|
||||
[271] call mulf8u_prepare
|
||||
[266] (byte) mulf8u_prepare::a#0 ← (byte) mulf8u::a#0
|
||||
[267] call mulf8u_prepare
|
||||
to:mulf8u::@2
|
||||
mulf8u::@2: scope:[mulf8u] from mulf8u
|
||||
[272] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
|
||||
[273] call mulf8u_prepared
|
||||
[274] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
|
||||
[268] (byte) mulf8u_prepared::b#0 ← (byte) mulf8u::b#0
|
||||
[269] call mulf8u_prepared
|
||||
[270] (word) mulf8u_prepared::return#2 ← (word) mulf8u_prepared::return#0
|
||||
to:mulf8u::@3
|
||||
mulf8u::@3: scope:[mulf8u] from mulf8u::@2
|
||||
[275] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
|
||||
[271] (word) mulf8u::return#0 ← (word) mulf8u_prepared::return#2
|
||||
to:mulf8u::@return
|
||||
mulf8u::@return: scope:[mulf8u] from mulf8u::@3
|
||||
[276] return
|
||||
[272] return
|
||||
to:@return
|
||||
muls8u: scope:[muls8u] from mul8u_compare::@2
|
||||
[277] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1
|
||||
[273] if((byte) muls8u::a#0==(byte/signed byte/word/signed word/dword/signed dword) 0) goto muls8u::@1
|
||||
to:muls8u::@2
|
||||
muls8u::@2: scope:[muls8u] from muls8u muls8u::@2
|
||||
[278] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[278] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[279] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
|
||||
[280] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
|
||||
[281] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2
|
||||
[274] (byte) muls8u::i#2 ← phi( muls8u::@2/(byte) muls8u::i#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[274] (word) muls8u::m#3 ← phi( muls8u::@2/(word) muls8u::m#1 muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 )
|
||||
[275] (word) muls8u::m#1 ← (word) muls8u::m#3 + (byte) muls8u::b#0
|
||||
[276] (byte) muls8u::i#1 ← ++ (byte) muls8u::i#2
|
||||
[277] if((byte) muls8u::i#1!=(byte) muls8u::a#0) goto muls8u::@2
|
||||
to:muls8u::@1
|
||||
muls8u::@1: scope:[muls8u] from muls8u muls8u::@2
|
||||
[282] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 )
|
||||
[278] (word) muls8u::return#0 ← phi( muls8u/(byte/signed byte/word/signed word/dword/signed dword) 0 muls8u::@2/(word) muls8u::m#1 )
|
||||
to:muls8u::@return
|
||||
muls8u::@return: scope:[muls8u] from muls8u::@1
|
||||
[283] return
|
||||
[279] return
|
||||
to:@return
|
||||
mulf_tables_cmp: scope:[mulf_tables_cmp] from main::@3
|
||||
[284] phi()
|
||||
[280] phi()
|
||||
to:mulf_tables_cmp::@1
|
||||
mulf_tables_cmp::@1: scope:[mulf_tables_cmp] from mulf_tables_cmp mulf_tables_cmp::@2
|
||||
[285] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 )
|
||||
[285] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 )
|
||||
[286] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2
|
||||
[281] (byte*) mulf_tables_cmp::asm_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mula_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::asm_sqr#1 )
|
||||
[281] (byte*) mulf_tables_cmp::kc_sqr#2 ← phi( mulf_tables_cmp/(const byte[512]) mulf_sqr1_lo#0 mulf_tables_cmp::@2/(byte*) mulf_tables_cmp::kc_sqr#1 )
|
||||
[282] if(*((byte*) mulf_tables_cmp::kc_sqr#2)==*((byte*) mulf_tables_cmp::asm_sqr#2)) goto mulf_tables_cmp::@2
|
||||
to:mulf_tables_cmp::@3
|
||||
mulf_tables_cmp::@3: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1
|
||||
[287] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[288] call print_str
|
||||
[283] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 2
|
||||
[284] call print_str
|
||||
to:mulf_tables_cmp::@6
|
||||
mulf_tables_cmp::@6: scope:[mulf_tables_cmp] from mulf_tables_cmp::@3
|
||||
[289] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
|
||||
[290] call print_word
|
||||
[285] (word~) print_word::w#11 ← (word)(byte*) mulf_tables_cmp::asm_sqr#2
|
||||
[286] call print_word
|
||||
to:mulf_tables_cmp::@7
|
||||
mulf_tables_cmp::@7: scope:[mulf_tables_cmp] from mulf_tables_cmp::@6
|
||||
[291] phi()
|
||||
[292] call print_str
|
||||
[287] phi()
|
||||
[288] call print_str
|
||||
to:mulf_tables_cmp::@8
|
||||
mulf_tables_cmp::@8: scope:[mulf_tables_cmp] from mulf_tables_cmp::@7
|
||||
[293] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
|
||||
[294] call print_word
|
||||
[289] (word~) print_word::w#12 ← (word)(byte*) mulf_tables_cmp::kc_sqr#2
|
||||
[290] call print_word
|
||||
to:mulf_tables_cmp::@return
|
||||
mulf_tables_cmp::@return: scope:[mulf_tables_cmp] from mulf_tables_cmp::@10 mulf_tables_cmp::@8
|
||||
[295] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 )
|
||||
[295] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 )
|
||||
[296] return
|
||||
[291] (byte*) print_line_cursor#10 ← phi( mulf_tables_cmp::@10/(byte*) print_line_cursor#1 mulf_tables_cmp::@8/((byte*))(word/signed word/dword/signed dword) 1024 )
|
||||
[291] (byte*) print_char_cursor#31 ← phi( mulf_tables_cmp::@10/(byte*~) print_char_cursor#225 mulf_tables_cmp::@8/(byte*) print_char_cursor#18 )
|
||||
[292] return
|
||||
to:@return
|
||||
mulf_tables_cmp::@2: scope:[mulf_tables_cmp] from mulf_tables_cmp::@1
|
||||
[297] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
|
||||
[298] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
|
||||
[299] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1
|
||||
[293] (byte*) mulf_tables_cmp::asm_sqr#1 ← ++ (byte*) mulf_tables_cmp::asm_sqr#2
|
||||
[294] (byte*) mulf_tables_cmp::kc_sqr#1 ← ++ (byte*) mulf_tables_cmp::kc_sqr#2
|
||||
[295] if((byte*) mulf_tables_cmp::kc_sqr#1<(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4) goto mulf_tables_cmp::@1
|
||||
to:mulf_tables_cmp::@5
|
||||
mulf_tables_cmp::@5: scope:[mulf_tables_cmp] from mulf_tables_cmp::@2
|
||||
[300] phi()
|
||||
[301] call print_str
|
||||
[296] phi()
|
||||
[297] call print_str
|
||||
to:mulf_tables_cmp::@10
|
||||
mulf_tables_cmp::@10: scope:[mulf_tables_cmp] from mulf_tables_cmp::@5
|
||||
[302] phi()
|
||||
[303] call print_ln
|
||||
[304] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1
|
||||
[298] phi()
|
||||
[299] call print_ln
|
||||
[300] (byte*~) print_char_cursor#225 ← (byte*) print_line_cursor#1
|
||||
to:mulf_tables_cmp::@return
|
||||
mulf_init_asm: scope:[mulf_init_asm] from main::@2
|
||||
asm { ldx#$00 txa .byte$c9 lb1: tya adc#$00 ml1: stamula_sqr1_hi,x tay cmp#$40 txa ror ml9: adc#$00 staml9+1 inx ml0: stamula_sqr1_lo,x bnelb1 incml0+2 incml1+2 clc iny bnelb1 ldx#$00 ldy#$ff !: ldamula_sqr1_hi+1,x stamula_sqr2_hi+$100,x ldamula_sqr1_hi,x stamula_sqr2_hi,y ldamula_sqr1_lo+1,x stamula_sqr2_lo+$100,x ldamula_sqr1_lo,x stamula_sqr2_lo,y dey inx bne!- }
|
||||
[306] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0)
|
||||
[307] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0)
|
||||
[308] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0)
|
||||
[309] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0)
|
||||
[302] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_lo#0)
|
||||
[303] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr1_hi#0)
|
||||
[304] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_lo#0)
|
||||
[305] *((const byte*) mulf_init_asm::mem#0) ← *((const byte[512]) mula_sqr2_hi#0)
|
||||
to:mulf_init_asm::@return
|
||||
mulf_init_asm::@return: scope:[mulf_init_asm] from mulf_init_asm
|
||||
[310] return
|
||||
[306] return
|
||||
to:@return
|
||||
mulf_init: scope:[mulf_init] from main::@1
|
||||
[311] phi()
|
||||
[307] phi()
|
||||
to:mulf_init::@1
|
||||
mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@2
|
||||
[312] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[312] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[312] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[312] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[312] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[313] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[314] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[315] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
[308] (byte) mulf_init::x_2#3 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::x_2#2 )
|
||||
[308] (byte*) mulf_init::sqr1_hi#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_hi#1 )
|
||||
[308] (byte*) mulf_init::sqr1_lo#2 ← phi( mulf_init/(const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 mulf_init::@2/(byte*) mulf_init::sqr1_lo#1 )
|
||||
[308] (word) mulf_init::sqr#4 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(word) mulf_init::sqr#1 )
|
||||
[308] (byte) mulf_init::c#2 ← phi( mulf_init/(byte/signed byte/word/signed word/dword/signed dword) 0 mulf_init::@2/(byte) mulf_init::c#1 )
|
||||
[309] (byte) mulf_init::c#1 ← ++ (byte) mulf_init::c#2
|
||||
[310] (byte~) mulf_init::$2 ← (byte) mulf_init::c#1 & (byte/signed byte/word/signed word/dword/signed dword) 1
|
||||
[311] if((byte~) mulf_init::$2!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@2
|
||||
to:mulf_init::@5
|
||||
mulf_init::@5: scope:[mulf_init] from mulf_init::@1
|
||||
[316] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[317] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
[312] (byte) mulf_init::x_2#1 ← ++ (byte) mulf_init::x_2#3
|
||||
[313] (word) mulf_init::sqr#2 ← ++ (word) mulf_init::sqr#4
|
||||
to:mulf_init::@2
|
||||
mulf_init::@2: scope:[mulf_init] from mulf_init::@1 mulf_init::@5
|
||||
[318] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[318] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[319] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[320] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[321] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[322] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[323] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[324] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[325] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[326] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
[314] (byte) mulf_init::x_2#2 ← phi( mulf_init::@1/(byte) mulf_init::x_2#3 mulf_init::@5/(byte) mulf_init::x_2#1 )
|
||||
[314] (word) mulf_init::sqr#3 ← phi( mulf_init::@1/(word) mulf_init::sqr#4 mulf_init::@5/(word) mulf_init::sqr#2 )
|
||||
[315] (byte~) mulf_init::$5 ← < (word) mulf_init::sqr#3
|
||||
[316] *((byte*) mulf_init::sqr1_lo#2) ← (byte~) mulf_init::$5
|
||||
[317] (byte~) mulf_init::$6 ← > (word) mulf_init::sqr#3
|
||||
[318] *((byte*) mulf_init::sqr1_hi#2) ← (byte~) mulf_init::$6
|
||||
[319] (byte*) mulf_init::sqr1_hi#1 ← ++ (byte*) mulf_init::sqr1_hi#2
|
||||
[320] (word) mulf_init::sqr#1 ← (word) mulf_init::sqr#3 + (byte) mulf_init::x_2#2
|
||||
[321] (byte*) mulf_init::sqr1_lo#1 ← ++ (byte*) mulf_init::sqr1_lo#2
|
||||
[322] if((byte*) mulf_init::sqr1_lo#1!=(const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512) goto mulf_init::@1
|
||||
to:mulf_init::@3
|
||||
mulf_init::@3: scope:[mulf_init] from mulf_init::@2 mulf_init::@4
|
||||
[327] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[327] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[327] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[327] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[328] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[329] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[330] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[331] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[332] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
[323] (byte) mulf_init::dir#2 ← phi( mulf_init::@4/(byte) mulf_init::dir#3 mulf_init::@2/(byte/word/signed word/dword/signed dword) 255 )
|
||||
[323] (byte*) mulf_init::sqr2_hi#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_hi#1 mulf_init::@2/(const byte[512]) mulf_sqr2_hi#0 )
|
||||
[323] (byte*) mulf_init::sqr2_lo#2 ← phi( mulf_init::@4/(byte*) mulf_init::sqr2_lo#1 mulf_init::@2/(const byte[512]) mulf_sqr2_lo#0 )
|
||||
[323] (byte) mulf_init::x_255#2 ← phi( mulf_init::@4/(byte) mulf_init::x_255#1 mulf_init::@2/((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[324] *((byte*) mulf_init::sqr2_lo#2) ← *((const byte[512]) mulf_sqr1_lo#0 + (byte) mulf_init::x_255#2)
|
||||
[325] *((byte*) mulf_init::sqr2_hi#2) ← *((const byte[512]) mulf_sqr1_hi#0 + (byte) mulf_init::x_255#2)
|
||||
[326] (byte*) mulf_init::sqr2_hi#1 ← ++ (byte*) mulf_init::sqr2_hi#2
|
||||
[327] (byte) mulf_init::x_255#1 ← (byte) mulf_init::x_255#2 + (byte) mulf_init::dir#2
|
||||
[328] if((byte) mulf_init::x_255#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto mulf_init::@12
|
||||
to:mulf_init::@4
|
||||
mulf_init::@4: scope:[mulf_init] from mulf_init::@12 mulf_init::@3
|
||||
[333] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[334] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[335] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
[329] (byte) mulf_init::dir#3 ← phi( mulf_init::@12/(byte) mulf_init::dir#2 mulf_init::@3/(byte/signed byte/word/signed word/dword/signed dword) 1 )
|
||||
[330] (byte*) mulf_init::sqr2_lo#1 ← ++ (byte*) mulf_init::sqr2_lo#2
|
||||
[331] if((byte*) mulf_init::sqr2_lo#1!=(const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) goto mulf_init::@3
|
||||
to:mulf_init::@8
|
||||
mulf_init::@8: scope:[mulf_init] from mulf_init::@4
|
||||
[336] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[337] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
[332] *((const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256)
|
||||
[333] *((const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511) ← *((const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256)
|
||||
to:mulf_init::@return
|
||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@8
|
||||
[338] return
|
||||
[334] return
|
||||
to:@return
|
||||
mulf_init::@12: scope:[mulf_init] from mulf_init::@3
|
||||
[339] phi()
|
||||
[335] phi()
|
||||
to:mulf_init::@4
|
||||
print_cls: scope:[print_cls] from main
|
||||
[340] phi()
|
||||
[336] phi()
|
||||
to:print_cls::@1
|
||||
print_cls::@1: scope:[print_cls] from print_cls print_cls::@1
|
||||
[341] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[342] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[343] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[344] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
[337] (byte*) print_cls::sc#2 ← phi( print_cls/((byte*))(word/signed word/dword/signed dword) 1024 print_cls::@1/(byte*) print_cls::sc#1 )
|
||||
[338] *((byte*) print_cls::sc#2) ← (byte) ' '
|
||||
[339] (byte*) print_cls::sc#1 ← ++ (byte*) print_cls::sc#2
|
||||
[340] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1
|
||||
to:print_cls::@return
|
||||
print_cls::@return: scope:[print_cls] from print_cls::@1
|
||||
[345] return
|
||||
[341] return
|
||||
to:@return
|
||||
|
File diff suppressed because one or more lines are too long
@ -11,11 +11,9 @@
|
||||
(label) main::@5
|
||||
(label) main::@return
|
||||
(signed word()) mul8s((signed byte) mul8s::a , (signed byte) mul8s::b)
|
||||
(byte~) mul8s::$11 reg byte a 20.0
|
||||
(byte~) mul8s::$12 reg byte a 4.0
|
||||
(byte~) mul8s::$16 reg byte a 4.0
|
||||
(byte~) mul8s::$17 reg byte a 4.0
|
||||
(byte~) mul8s::$5 reg byte a 20.0
|
||||
(byte~) mul8s::$6 reg byte a 4.0
|
||||
(label) mul8s::@1
|
||||
(label) mul8s::@2
|
||||
@ -24,15 +22,15 @@
|
||||
(label) mul8s::@6
|
||||
(label) mul8s::@return
|
||||
(signed byte) mul8s::a
|
||||
(signed byte) mul8s::a#0 a zp ZP_BYTE:2 6.4375
|
||||
(signed byte) mul8s::a#0 a zp ZP_BYTE:2 7.357142857142858
|
||||
(signed byte) mul8s::b
|
||||
(signed byte) mul8s::b#0 reg byte y 8.583333333333332
|
||||
(signed byte) mul8s::b#0 reg byte y 9.363636363636363
|
||||
(word) mul8s::m
|
||||
(word) mul8s::m#0 m zp ZP_WORD:12 2.0
|
||||
(word) mul8s::m#1 m zp ZP_WORD:12 4.0
|
||||
(word) mul8s::m#2 m zp ZP_WORD:12 4.0
|
||||
(word) mul8s::m#4 m zp ZP_WORD:12 1.3333333333333333
|
||||
(word) mul8s::m#5 m zp ZP_WORD:12 2.4
|
||||
(word) mul8s::m#5 m zp ZP_WORD:12 2.5
|
||||
(signed word) mul8s::return
|
||||
(signed word) mul8s::return#2 return zp ZP_WORD:12 202.0
|
||||
(void()) mul8s_compare()
|
||||
@ -196,11 +194,9 @@
|
||||
(signed word) mulf8s::return#0 return zp ZP_WORD:14 34.33333333333333
|
||||
(signed word) mulf8s::return#2 return zp ZP_WORD:14 202.0
|
||||
(signed word()) mulf8s_prepared((signed byte) mulf8s_prepared::b)
|
||||
(byte~) mulf8s_prepared::$10 reg byte a 20.0
|
||||
(byte~) mulf8s_prepared::$11 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$15 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$16 reg byte a 4.0
|
||||
(byte~) mulf8s_prepared::$4 reg byte a 20.0
|
||||
(byte~) mulf8s_prepared::$5 reg byte a 4.0
|
||||
(label) mulf8s_prepared::@1
|
||||
(label) mulf8s_prepared::@2
|
||||
@ -209,13 +205,13 @@
|
||||
(label) mulf8s_prepared::@6
|
||||
(label) mulf8s_prepared::@return
|
||||
(signed byte) mulf8s_prepared::b
|
||||
(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.36363636363636365
|
||||
(signed byte) mulf8s_prepared::b#0 b zp ZP_BYTE:3 0.4
|
||||
(word) mulf8s_prepared::m
|
||||
(word) mulf8s_prepared::m#0 m zp ZP_WORD:14 2.0
|
||||
(word) mulf8s_prepared::m#1 m zp ZP_WORD:14 4.0
|
||||
(word) mulf8s_prepared::m#2 m zp ZP_WORD:14 4.0
|
||||
(word) mulf8s_prepared::m#4 m zp ZP_WORD:14 1.3333333333333333
|
||||
(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.4
|
||||
(word) mulf8s_prepared::m#5 m zp ZP_WORD:14 2.5
|
||||
(signed byte*) mulf8s_prepared::memA
|
||||
(const signed byte*) mulf8s_prepared::memA#0 memA = ((signed byte*))(byte/word/signed word/dword/signed dword) 253
|
||||
(signed word) mulf8s_prepared::return
|
||||
@ -493,17 +489,13 @@ reg byte y [ mul8s::b#0 ]
|
||||
reg byte x [ mul8s_error::a#0 ]
|
||||
reg byte a [ print_byte::$0 ]
|
||||
reg byte a [ print_byte::$2 ]
|
||||
reg byte a [ mul8s::$5 ]
|
||||
reg byte a [ mul8s::$6 ]
|
||||
reg byte a [ mul8s::$16 ]
|
||||
reg byte a [ mul8s::$11 ]
|
||||
reg byte a [ mul8s::$12 ]
|
||||
reg byte a [ mul8s::$17 ]
|
||||
reg byte a [ mul8u::$1 ]
|
||||
reg byte a [ mulf8s_prepared::$4 ]
|
||||
reg byte a [ mulf8s_prepared::$5 ]
|
||||
reg byte a [ mulf8s_prepared::$15 ]
|
||||
reg byte a [ mulf8s_prepared::$10 ]
|
||||
reg byte a [ mulf8s_prepared::$11 ]
|
||||
reg byte a [ mulf8s_prepared::$16 ]
|
||||
reg byte x [ muls8u::b#0 ]
|
||||
|
Loading…
Reference in New Issue
Block a user